@@ -82,23 +82,24 @@ function write($file, $encoding = null) {
82
82
83
83
$ glyf = $ font ->getData ("glyf " );
84
84
$ glyphIndexArray = $ font ->getUnicodeCharMap ();
85
+ $ hasGlyphs = $ glyf instanceof glyf && is_array ($ glyphIndexArray );
85
86
86
87
// capHeight is based on capital H
87
- if (\array_key_exists (72 , $ glyphIndexArray )) {
88
+ if ($ hasGlyphs && \array_key_exists (72 , $ glyphIndexArray )) {
88
89
$ upperH = $ glyf [$ glyphIndexArray [72 ]];
89
90
$ upperH ->parseData ();
90
91
$ this ->addPair ("CapHeight " , $ font ->normalizeFUnit ($ upperH ->yMax ));
91
92
}
92
93
93
94
// xHeight is based on lowercase x
94
- if (\array_key_exists (120 , $ glyphIndexArray )) {
95
+ if ($ hasGlyphs && \array_key_exists (120 , $ glyphIndexArray )) {
95
96
$ lowerX = $ glyf [$ glyphIndexArray [120 ]];
96
97
$ lowerX ->parseData ();
97
98
$ this ->addPair ("XHeight " , $ font ->normalizeFUnit ($ lowerX ->yMax ));
98
99
}
99
100
100
101
// ascender is based on lowercase d
101
- if (\array_key_exists (100 , $ glyphIndexArray )) {
102
+ if ($ hasGlyphs && \array_key_exists (100 , $ glyphIndexArray )) {
102
103
$ lowerD = $ glyf [$ glyphIndexArray [100 ]];
103
104
$ lowerD ->parseData ();
104
105
$ this ->addPair ("Ascender " , $ font ->normalizeFUnit ($ lowerD ->yMax ));
@@ -110,11 +111,11 @@ function write($file, $encoding = null) {
110
111
}
111
112
112
113
// descender is based on lowercase p
113
- if (\array_key_exists (112 , $ glyphIndexArray )) {
114
+ if ($ hasGlyphs && \array_key_exists (112 , $ glyphIndexArray )) {
114
115
$ lowerP = $ glyf [$ glyphIndexArray [112 ]];
115
116
$ lowerP ->parseData ();
116
117
$ this ->addPair ("Descender " , $ font ->normalizeFUnit ($ lowerP ->yMin ));
117
- } elseif (isset ($ hhea ["ascent " ])) {
118
+ } elseif (isset ($ hhea ["descent " ])) {
118
119
$ this ->addPair ("Descender " , $ font ->normalizeFUnit ($ hhea ["descent " ]));
119
120
}
120
121
else {
0 commit comments