[squeak-dev] fonts, characterscanners and dead primitive 103

Casey Ransberger casey.obrien.r at gmail.com
Mon Sep 2 10:49:09 UTC 2013


Usually, it's because open-source is a ghetto.


On Sun, Sep 1, 2013 at 10:24 PM, tim Rowledge <tim at rowledge.org> wrote:

> I've been trying to sort out mantis-1650 and siblings; oh boy what fun.
>
> Basically at some point the shape of CharacterScanner was changed so that
> primitive 103 could no longer work; nowadays we waste time in starting up
> the primitive and never doing anything but failing it. The fallback code is
> pretty ugly too, though I have a few small improvements for it. We can't
> reasonably 'fix' the primitive since it is required to support older
> images, in particular Scratch on the Pi. Anyone doing something that
> compromises *that* will get a quiet visit from The Boys. We *could* add a
> new primitive, of course. It's also possible that for a lot of modern
> machines running Cog it might not be worth it - but not all machines are
> cogged nor fast.
>
> Part of the complication is that we have rather lot of font related
> classes these days and not all of them are even subclasses of AbstractFont.
> So far as I can tell the major change was due to an attempt to handle fonts
> that can have character pair kerning, which looks like only FreeTypeFont.
> All the others are wasting time both through losing the primitive support
> and pointlessly finding out that pair-kerning does nothing new. Oh and
> FT2Face seems to be off on its own for some reason I haven't discerned as
> yet.
> Obvious question - who is most up to speed with what the hell Fonts are up
> to these days? I have some Questioning Instruments warming up for you…
>
> MultiCharacterScanner brings in a whole new level of insanity, not least
> because it uses identical code including the pointless call of the
> primitive - and the two senders of these two methods are also (effectively)
> identical. And do, just for grins, take a look at the only reference to
> MultiCharacterScanner - FreeTypeFontProvider class>initialize. Oh my. And
> let's consider references and uses to other classes in that hierarchy - in
> NewParagraph>characterBlock* MultiCharacterBlockScanner is used for
> WideStrings but in Paragraph>composeAll it is used for both byte strings
> and wider strings. And then there is GrafPort>displayScannerForMulti:….
>
> How have we got into such a mixed and messy state? Did some experiment get
> partially worked on and forgotten? Surely nobody has deliberately made it
> so convoluted?
>
> tim
> --
> tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
> Strange OpCodes: CLOUT: Call Long-distance On Unused Telephone
>
>
>
>


-- 
Casey Ransberger
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20130902/6d28745f/attachment.htm


More information about the Squeak-dev mailing list