Marcel Taeumel uploaded a new version of TrueType to project The Trunk: http://source.squeak.org/trunk/TrueType-mt.91.mcz
==================== Summary ====================
Name: TrueType-mt.91 Author: mt Time: 16 March 2022, 3:12:34.388608 pm UUID: 474d522a-122b-3c4f-a650-d4f8d00b2b69 Ancestors: TrueType-mt.90
Activate the speed-up as promised via TrueType-mt.90.
=============== Diff against TrueType-mt.90 ===============
Item was changed: ----- Method: TTCFont>>displayString:on:from:to:at:kern:baselineY: (in category 'displaying') ----- displayString: aString on: aBitBlt from: startIndex to: stopIndex at: aPoint kern: kernDelta baselineY: baselineY
+ ^ aString isByteString + ifTrue: [self displayByteString: aString on: aBitBlt from: startIndex to: stopIndex at: aPoint kern: kernDelta baselineY: baselineY] + ifFalse: [self displayMultiString: aString on: aBitBlt from: startIndex to: stopIndex at: aPoint kern: kernDelta baselineY: baselineY]! - | form glyphInfo destX destY hereX nextX actualFont | - destX := aPoint x. - glyphInfo := Array new: 5. - startIndex to: stopIndex do: [:charIndex | - self glyphInfoOf: (aString at: charIndex) into: glyphInfo. - form := glyphInfo at: 1. - hereX := glyphInfo at: 2. - nextX := glyphInfo at: 3. - (actualFont := glyphInfo at: 5) == aBitBlt lastFont - ifFalse: [actualFont installOn: aBitBlt]. - destY := baselineY - (glyphInfo at: 4). - aBitBlt sourceForm: form. - aBitBlt destX: destX + form offset x. - aBitBlt destY: destY + form offset y. "Compensate overdraw. See #extraScale:." - aBitBlt sourceX: hereX; sourceY: 0. - aBitBlt width: form width. - aBitBlt height: form height. - aBitBlt copyBits. - destX := destX + (nextX - hereX) + kernDelta. - ]. - ^ destX @ destY - !
Item was changed: ----- Method: TTCFont>>formOf: (in category 'character shapes') ----- + formOf: aCharacter - formOf: char
+ (self hasGlyphOf: aCharacter) + ifFalse: [^ self fallbackFont formOf: aCharacter]. - | code form | - cache ifNil: [self foregroundColor: Color black]. "make sure we have a cache"
+ ^ self characterFormAt: aCharacter! - code := char charCode. - form := cache at: (code + 1). - - form ifNil: [ - form := self computeForm: code. - form ifNil:[^nil]. - cache at: code+1 put: form. - GlyphCacheData at: (GlyphCacheIndex := GlyphCacheIndex \ GlyphCacheSize + 1) put: form. - ]. - ^form - !
Item was changed: ----- Method: TTCFont>>glyphInfoOf:into: (in category 'displaying') ----- glyphInfoOf: aCharacter into: glyphInfoArray + "return the glyph info for aCharacter; if I don't have such a character, + try my fallback font" - "return the glyph info for aCharacter; if I don't have such a character, try my fallback font"
| form | + (self hasGlyphOf: aCharacter) + ifTrue: [ + form := self characterFormAt: aCharacter] + ifFalse: [ | fallback | + (fallback := self fallbackFont) isTTCFont + ifFalse: [ + "We MUST NOT use StrikeFont here bc. of their different + display loop and way to access glyphs." + form := self characterFormAt: Character null] + ifTrue: [ + ^ fallback + foregroundColor: self foregroundColor; + glyphInfoOf: aCharacter into: glyphInfoArray]]. - (self hasGlyphOf: aCharacter) ifFalse: [ - ^ self fallbackFont - foregroundColor: self foregroundColor; - glyphInfoOf: aCharacter into: glyphInfoArray]. - form := self formOf: aCharacter. glyphInfoArray at: 1 put: form; at: 2 put: 0; "hereX -- relative, unlike StrikeFont" at: 3 put: form advanceWidth; "nextX -- relative, unlike StrikeFont" at: 4 put: self ascent "(self ascentOf: aCharacter)"; at: 5 put: self. + ^ glyphInfoArray.! - ^ glyphInfoArray. - !
Item was changed: ----- Method: TTCFont>>widthOf: (in category 'measuring') ----- widthOf: aCharacter "Overwritten to use the #advanceWidth and not the #width of the form. See TTGlyphForm"
(self hasGlyphOf: aCharacter) ifFalse: [^ self fallbackFont widthOf: aCharacter]. + ^(self characterFormAt: aCharacter) advanceWidth! - ^(self formOf: aCharacter) advanceWidth!
packages@lists.squeakfoundation.org