Marcel Taeumel uploaded a new version of Graphics to project The Trunk: http://source.squeak.org/trunk/Graphics-mt.468.mcz
==================== Summary ====================
Name: Graphics-mt.468 Author: mt Time: 30 January 2022, 8:17:05.704695 pm UUID: 1f47d2db-9a76-f747-9613-9df0594a4d76 Ancestors: Graphics-mt.467
Fixes an issue in regarding #widthOf: for pre-renderend fonts that have holes in their supported code-point range. See commentary in #asGlyphForCode:.
Since Squeak's internal encoding is based on Unicode code points, make it explicit by renaming #minAscii and #maxAscii to #minCodePoint and #maxCodePoint. The comments already explained that.
=============== Diff against Graphics-mt.467 ===============
Item was added: + ----- Method: AbstractFont>>asNewTextStyle (in category 'converting') ----- + asNewTextStyle + "Answer a new text style where the receiver is the default font. Try to lookup the an existing #textStyle so that TextFontChange can be used in views." + + | newTextStyle | + newTextStyle := self textStyleOrNil + ifNil: [TextStyle fontArray: {self}] + ifNotNil: [:style | style copy]. + newTextStyle defaultFontIndex: (newTextStyle fontIndexOfPointSize: self pointSize). + ^ newTextStyle!
Item was added: + ----- Method: AbstractFont>>maxCodePoint (in category 'accessing') ----- + maxCodePoint + "Answer the largest code point that the receiver can translate into glyphs. Use the range from #minCodePoint to #maxCodePoint to configure a list of #fallbackFont's. Note that subclasses may insert 'holes' via #hasGlyphOf: test such as StrikeFont's internal xTable." + + ^ 16r10FFFF "Unicode uses 21-bit but 16r110000 to 16r1FFFFF are not valid code points. See https://www.unicode.org/versions/stats/.%22!
Item was added: + ----- Method: AbstractFont>>minCodePoint (in category 'accessing') ----- + minCodePoint + "Answer the smallest code point that the receiver can translate into glyphs. Use the range from #minCodePoint to #maxCodePoint to configure a list of #fallbackFont's. Note that subclasses may insert 'holes' via #hasGlyphOf: test such as StrikeFont's internal xTable." + + ^ 0!
Item was changed: ----- Method: FixedFaceFont>>maxAscii (in category 'accessing') ----- maxAscii + + self flag: #deprecated. + ^ self maxCodePoint! - ^ SmallInteger maxVal!
Item was added: + ----- Method: FixedFaceFont>>maxCodePoint (in category 'accessing') ----- + maxCodePoint + "Overwritten for robustness. The receiver MUST BE a reliable source of glyphs if all else fails. Font rendering must never stop." + + ^ SmallInteger maxVal!
Item was changed: ----- Method: StrikeFont>>hasGlyphForCode: (in category 'multibyte character methods') ----- hasGlyphForCode: aCharacterCode + "Note that missing glyphs are encoded as -1 in the xTable but to speed up the #widthOf: check, the next offset must be adjacent and thus be duplicated. For example: #(-1 -1 0 24 -1 -1 -1 24 48 -1 ...). Since aCharacterCode is 0-based, that codes offset is at +1 while its width needs to consult +2, too. See #widthOf:."
(aCharacterCode between: self minAscii and: self maxAscii) ifFalse: [^ false]. + (xTable at: aCharacterCode + 2) >= 0 - (xTable at: aCharacterCode + 1) positive ifFalse: [^ false]. + ^ true! - ^ true. - !
Item was changed: ----- Method: StrikeFont>>maxAscii (in category 'accessing') ----- maxAscii - "Answer the integer that is the last Ascii character value of the receiver."
+ self flag: #deprecated. + ^ self maxCodePoint! - ^maxAscii!
Item was added: + ----- Method: StrikeFont>>maxCodePoint (in category 'accessing') ----- + maxCodePoint + "Overwritten to configure ranges of glyphs per pre-rendered font." + + ^maxAscii!
Item was changed: ----- Method: StrikeFont>>minAscii (in category 'accessing') ----- minAscii - "Answer the integer that is the first Ascii character value of the receiver."
+ self flag: #deprecated. + ^ self minCodePoint! - ^minAscii!
Item was added: + ----- Method: StrikeFont>>minCodePoint (in category 'accessing') ----- + minCodePoint + "Overwritten to configure ranges of glyphs per pre-rendered font." + + ^minAscii!
packages@lists.squeakfoundation.org