[squeak-dev] The Trunk: TrueType-topa.40.mcz

karl ramberg karlramberg at gmail.com
Tue Sep 1 17:18:12 UTC 2015


Hi,
Here I think it would be clearer to remove the out commented "]" !

Karl

On Tue, Sep 1, 2015 at 2:57 PM, <commits at source.squeak.org> wrote:

> Tobias Pape uploaded a new version of TrueType to project The Trunk:
> http://source.squeak.org/trunk/TrueType-topa.40.mcz
>
> ==================== Summary ====================
>
> Name: TrueType-topa.40
> Author: topa
> Time: 1 September 2015, 2:57:19.158 pm
> UUID: 9abe9053-6bf7-4a8a-b769-caf1d6bbbc97
> Ancestors: TrueType-topa.39
>
> Use all glyphs in a Font, not just 256 (fix by Vasya Chajko)
>
> =============== Diff against TrueType-topa.39 ===============
>
> Item was changed:
>   ----- Method: TTCFontReader>>processCharMap: (in category 'as yet
> unclassified') -----
>   processCharMap: assoc
>         "Process the given character map"
>
>         | glyph cmap encode0 encode1 char value null |
>         cmap := assoc value.
>         null := (glyphs at: (cmap at: Character space asUnicode + 1) + 1)
> copy.
>         null contours: #().
>
>         encode0 := Array new: 256 withAll: glyphs first.
>         encode1 := Array new: 65536 withAll: glyphs first.
>
>         0 to: 255 do: [:i |
>                 char := Character value: i.
>                 glyph := glyphs at: (cmap at: char asUnicode + 1) + 1.
>                 encode0 at: i+1 put: glyph.
>         ].
>         Character separators do: [:c |
>                 encode0 at: (c asciiValue + 1) put: null.
>         ].
>         0 to: 65536 - 1 do: [:i |
>                 value := cmap at: i+1.
>                 value = 65535 ifFalse: [ "???"
>                         | g |
> +                       g := glyphs at: value+1 ifAbsent: [ null. ].
> -                       g := glyphs at: value+1.
>                         (g isKindOf: TTCompositeGlyph) ifFalse: [
>                                 encode1 at: i+1 put: g.
>                         ] ifTrue: [
>                                 g basicGlyphs: (((glyphs at: value+1)
> basicGlyphs) collect: [:t | t key->(glyphs at: (t value glyphIndex+1))]).
>                                 encode1 at: i+1 put: g
>                         ].
>                 ]
>         ].
>
>         ^ {encode0. encode1}.
>   !
>
> Item was changed:
>   ----- Method: TTFontReader>>decodeCmapFmtTable: (in category 'private')
> -----
>   decodeCmapFmtTable: entry
>         | cmapFmt length entryCount segCount segments offset cmap
> firstCode |
>         cmapFmt := entry nextUShort.
>         length := entry nextUShort.
>         entry skip: 2. "skip version"
>
>         cmapFmt = 0 ifTrue: "byte encoded table"
>                 [length := length - 6.          "should be always 256"
>                 length <= 0 ifTrue: [^ nil].    "but sometimes, this table
> is empty"
>                 cmap := Array new: length.
>                 entry nextBytes: length into: cmap startingAt: entry
> offset.
>                 ^ cmap].
>
>         cmapFmt = 4 ifTrue: "segment mapping to deltavalues"
>                 [segCount := entry nextUShort // 2.
>                 entry skip: 6. "skip searchRange, entrySelector,
> rangeShift"
>                 segments := Array new: segCount.
>                 segments := (1 to: segCount) collect: [:e | Array new: 4].
>                 1 to: segCount do: [:i | (segments at: i) at: 2 put: entry
> nextUShort]. "endCount"
>                 entry skip: 2. "skip reservedPad"
>                 1 to: segCount do: [:i | (segments at: i) at: 1 put: entry
> nextUShort]. "startCount"
>                 1 to: segCount do: [:i | (segments at: i) at: 3 put: entry
> nextShort]. "idDelta"
>                 offset := entry offset.
>                 1 to: segCount do: [:i | (segments at: i) at: 4 put: entry
> nextUShort]. "idRangeOffset"
>                 entryCount := segments inject: 0 into: [:max :seg | max
> max: seg second].
>                 cmap := Array new: entryCount+1 withAll: 0..
>                 segments withIndexDo:
>                         [:seg :si | | code |
>                         seg first to: seg second do:
>                                 [:i |
> +                                       seg last > 0 ifTrue:
> -                               i < 256 ifTrue:
> -                                       [seg last > 0 ifTrue:
>                                                 ["offset to glypthIdArray
> - this is really C-magic!!"
>                                                 entry offset: i - seg
> first - 1 * 2 + seg last + si + si + offset.
>                                                 code := entry nextUShort.
>                                                 code > 0 ifTrue: [code :=
> code + seg third]]
>                                         ifFalse:
>                                                 ["simple offset"
>                                                 code := i + seg third].
> +                                       cmap at: i + 1 put: code"]"]].
> -                                       cmap at: i + 1 put: code]]].
>                 ^ cmap].
>
>         cmapFmt = 6 ifTrue: "trimmed table"
>                 [firstCode := entry nextUShort.
>                 entryCount := entry nextUShort.
>                 cmap := Array new: entryCount + firstCode withAll: 0.
>                 entryCount timesRepeat:
>                         [cmap at: (firstCode := firstCode + 1) put: entry
> nextUShort].
>                 ^ cmap].
>         ^ nil!
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20150901/88a129c7/attachment.htm


More information about the Squeak-dev mailing list