FreeType

FT2BitmapSize
Do not rearrange these fields!
This structure models the size of a bitmap strike (i.e., a bitmap
instance of the font for a given resolution) in a fixed-size font
face. It is used for the `availableSizes' field of the
FT2Face structure.
<Fields>
height :: The (vertical) baseline-to-baseline distance in pixels.
It makes most sense to define the height of a bitmap
font in this way.
width :: The average width of the font (in pixels). Since the
algorithms to compute this value are different for the
various bitmap formats, it can only give an additional
hint if the `height' value isn't sufficient to select
the proper font. For monospaced fonts the average width
is the same as the maximum width.
size :: The point size in 26.6 fractional format this font shall
represent (for a given vertical resolution).
x_ppem :: The horizontal ppem value (in 26.6 fractional format).
y_ppem :: The vertical ppem value (in 26.6 fractional format).
Usually, this is the `nominal' pixel height of the font.
<Note>
The values in this structure are taken from the bitmap font. If
the font doesn't provide a parameter it is set to zero to indicate
that the information is not available.
The following formula converts from dpi to ppem:
ppem = size * dpi / 72
where `size' is in points.
Windows FNT:
The `size' parameter is not reliable: There exist fonts (e.g.,
app850.fon) which have a wrong size for some subfonts; x_ppem
and y_ppem are thus set equal to pixel width and height given in
in the Windows FNT header.
TrueType embedded bitmaps:
`size', `width', and `height' values are not contained in the
bitmap strike itself. They are computed from the global font
parameters.
FT2Constants
The various flags from the Freetype/2 header.
The LoadXXXX flags can be used with primitiveLoadGlyph:flags: or with the Cairo primCairoFtFontCreateForFtFace:flags:scale: primitives.
FT_LOAD_DEFAULT ::
Corresponding to 0, this value is used a default glyph load. In this
case, the following will happen:

1. FreeType looks for a bitmap for the glyph corresponding to the
face's current size. If one is found, the function returns. The
bitmap data can be accessed from the glyph slot (see note below).

2. If no embedded bitmap is searched or found, FreeType looks for a
scalable outline. If one is found, it is loaded from the font
file, scaled to device pixels, then "hinted" to the pixel grid in
order to optimize it. The outline data can be accessed from the
glyph slot (see note below).

Note that by default, the glyph loader doesn't render outlines into
bitmaps. The following flags are used to modify this default
behaviour to more specific and useful cases.

FT_LOAD_NO_SCALE ::
Don't scale the vector outline being loaded to 26.6 fractional
pixels, but kept in font units. Note that this also disables
hinting and the loading of embedded bitmaps. You should only use it
when you want to retrieve the original glyph outlines in font units.

FT_LOAD_NO_HINTING ::
Don't hint glyph outlines after their scaling to device pixels.
This generally generates "blurrier" glyphs in anti-aliased modes.

This flag is ignored if @FT_LOAD_NO_SCALE is set.

FT_LOAD_RENDER ::
Render the glyph outline immediately into a bitmap before the glyph
loader returns. By default, the glyph is rendered for the
@FT_RENDER_MODE_NORMAL mode, which corresponds to 8-bit anti-aliased
bitmaps using 256 opacity levels. You can use either
@FT_LOAD_TARGET_MONO or @FT_LOAD_MONOCHROME to render 1-bit
monochrome bitmaps.

This flag is ignored if @FT_LOAD_NO_SCALE is set.

FT_LOAD_NO_BITMAP ::
Don't look for bitmaps when loading the glyph. Only scalable
outlines will be loaded when available, and scaled, hinted, or
rendered depending on other bit flags.

This does not prevent you from rendering outlines to bitmaps
with @FT_LOAD_RENDER, however.

FT_LOAD_VERTICAL_LAYOUT ::
Prepare the glyph image for vertical text layout. This basically
means that `face.glyph.advance' will correspond to the vertical
advance height (instead of the default horizontal advance width),
and that the glyph image will be translated to match the vertical
bearings positions.

FT_LOAD_FORCE_AUTOHINT ::
Force the use of the FreeType auto-hinter when a glyph outline is
loaded. You shouldn't need this in a typical application, since it
is mostly used to experiment with its algorithm.

FT_LOAD_CROP_BITMAP ::
Indicates that the glyph loader should try to crop the bitmap (i.e.,
remove all space around its black bits) when loading it. This is
only useful when loading embedded bitmaps in certain fonts, since
bitmaps rendered with @FT_LOAD_RENDER are always cropped by default.

FT_LOAD_PEDANTIC ::
Indicates that the glyph loader should perform pedantic
verifications during glyph loading, rejecting invalid fonts. This
is mostly used to detect broken glyphs in fonts. By default,
FreeType tries to handle broken fonts also.

FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ::
Indicates that the glyph loader should ignore the global advance
width defined in the font. As far as we know, this is only used by
the X-TrueType font server, in order to deal correctly with the
incorrect metrics contained in DynaLab's TrueType CJK fonts.

FT_LOAD_NO_RECURSE ::
This flag is only used internally. It merely indicates that the
glyph loader should not load composite glyphs recursively. Instead,
it should set the `num_subglyph' and `subglyphs' values of the glyph
slot accordingly, and set "glyph->format" to
@FT_GLYPH_FORMAT_COMPOSITE.

The description of sub-glyphs is not available to client
applications for now.

FT_LOAD_IGNORE_TRANSFORM ::
Indicates that the glyph loader should not try to transform the
loaded glyph image. This doesn't prevent scaling, hinting, or
rendering.

FT_LOAD_MONOCHROME ::
This flag is used with @FT_LOAD_RENDER to indicate that you want
to render a 1-bit monochrome glyph bitmap from a vectorial outline.

Note that this has no effect on the hinting algorithm used by the
glyph loader. You should better use @FT_LOAD_TARGET_MONO if you
want to render monochrome-optimized glyph images instead.

FT_LOAD_LINEAR_DESIGN ::
Return the linearly scaled metrics expressed in original font units
instead of the default 16.16 pixel values.

FT_LOAD_NO_AUTOHINT ::
Indicates that the auto-hinter should never be used to hint glyph
outlines. This doesn't prevent native format-specific hinters from
being used. This can be important for certain fonts where unhinted
output is better than auto-hinted one.
One of following flags (as LoadTargetXXX) can be used to further specify the result.
FT_RENDER_MODE_NORMAL ::
This is the default render mode; it corresponds to 8-bit
anti-aliased bitmaps, using 256 levels of opacity.

FT_RENDER_MODE_LIGHT ::
This is similar to @FT_RENDER_MODE_NORMAL, except that this
changes the hinting to prevent stem width quantization. This
results in glyph shapes that are more similar to the original,
while being a bit more fuzzy ("better shapes", instead of
"better contrast" if you want :-).

FT_RENDER_MODE_MONO ::
This mode corresponds to 1-bit bitmaps.

FT_RENDER_MODE_LCD ::
This mode corresponds to horizontal RGB/BGR sub-pixel displays,
like LCD-screens. It produces 8-bit bitmaps that are 3 times
the width of the original glyph outline in pixels, and which use
the @FT_PIXEL_MODE_LCD mode.

FT_RENDER_MODE_LCD_V ::
This mode corresponds to vertical RGB/BGR sub-pixel displays
(like PDA screens, rotated LCD displays, etc.). It produces
8-bit bitmaps that are 3 times the height of the original
glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode.

<Note>
The LCD-optimized glyph bitmaps produced by FT_Render_Glyph are
_not filtered_ to reduce color-fringes. It is up to the caller to
perform this pass.
initialize
Subclasses should redefine this method to perform initializations on instance creation
FT2Error
This is an Error that knows how to get the Freetype2 error code and string.
errorCode
errorString
messageText
Return an exception's message text.
FT2Face
Do not rearrange these fields!
New fields should go at the end, because the plugin has to know about these indexes.
ByteArray representing a pointer to the malloc'd FT_Face struct:
handle
Copied from the FT_Face struct on creation:
numFaces faceIndex faceFlags styleFlags numGlyphs familyName styleName numFixedSizes availableSizes numCharmaps charmaps
Copied on creation, but only relevant to scalable outlines:
bbox unitsPerEm ascender descender height maxAdvanceWidth maxAdvanceHeight underlinePosition underlineThickness
Working memory:
glyph -- FT2GlyphSlot, set by loadGlyph or loadChar
size -- the active size, set by activateSize, used by loadGlyph, getKerning, etc.
charmap -- set by setCharmap
angle:scale:offset:
angle:scale:offset:slant:
angle:scalePoint:offset:
angle:scalePoint:offset:slant:
ascender
availableSizes
bbox
charmaps
Answer an Array of Strings naming the different character maps available for setCharMap:
descender
emboldenOutline:
encoding
faceFlags
faceIndex
familyName
getCharMap
getCharMapsInto:
glyph
glyphOfCharacter:
load a glyph with outline, glyph is not scaled
handle
height
isBold
isFixedWidth
isItalic
isRegular
kerningLeft:right:
loadCharacter:flags:
loadCharacterOutline:flags:
loadFields
loadGlyph:flags:
maxAdvanceHeight
maxAdvanceWidth
memoryFaceData
newFaceFromExternalMemory:index:
newFaceFromFile:index:
numCharmaps
numFaces
numFixedSizes
numGlyphs
postscriptName
primDestroyHandle
primEmboldenGlyphSlotOutline:
primGetCharIndex:
Return the glyph index of a given character code
primGetCharMap
primGetCharMapsInto:
primGetKerningLeft:right:
self primGetKerningLeft: $V asInteger right: $a asInteger
primGetPostscriptName
primGetTrackKerningPointSize:degree:
primHasKerning
primLoadBbox:
primLoadCharacter:flags:
primLoadFields
primLoadGlyph:flags:
primNewFaceFromFile:index:
primNewMemoryFaceByteSize:index:
primRenderGlyphIntoForm:
primRenderGlyphIntoForm:pixelMode:
primSetBitmapLeft:top:
primSetCharMap:
primSetPixelWidth:height:
primSetTransform:delta:
matrix is 16.16 fixed point
x' = x*m[0] + y*m[1]
y' = x*m[2] + y*yy[3]
delta is 26.6 fixed point
x' = x + d[0]
y' = y + d[1]
primTransformGlyphSlotOutline:
primTranslateGlyphSlotOutline:
printOn:
Append to the argument, aStream, a sequence of characters that
identifies the receiver.
renderGlyphIntoForm:
render the current glyph (selected by loadChar/loadGlyph into the given form (1 or 8 bpp)
renderGlyphIntoForm:pixelMode:
render the current glyph (selected by loadChar/loadGlyph into the given form (1 or 8 bpp)
with pixel mode anInteger
setCharMap:
setPixelWidth:height:
size
Primitive. Answer the number of indexable variables in the receiver.
This value is the same as the largest legal subscript. Essential. See Object
documentation whatIsAPrimitive.
styleFlags
styleName
transformOutlineAngle:scalePoint:slant:
translateOutlineBy:
underlinePosition
underlineThickness
unitsPerEm
FT2GlyphSlot
Do not rearrange these fields!
face -- the FT2Face that owns this FT2GlyphSlot.
Note that even when the glyph image is transformed, the metrics are not.
linearHoriAdvance -- For scalable formats only, this field holds the
linearly scaled horizontal advance width for the glyph (i.e. the scaled
and unhinted value of the hori advance). This can be important to
perform correct WYSIWYG layout.
Note that this value is expressed by default in 16.16 pixels. However,
when the glyph is loaded with the FT_LOAD_LINEAR_DESIGN flag, this field
contains simply the value of the advance in original font units.
linearVertAdvance -- For scalable formats only, this field holds the
linearly scaled vertical advance height for the glyph. See
linearHoriAdvance for comments.
advance -- This is the transformed advance width for the glyph.
format -- This field indicates the format of the image contained in the
glyph slot. Typically FT_GLYPH_FORMAT_BITMAP, FT_GLYPH_FORMAT_OUTLINE,
and FT_GLYPH_FORMAT_COMPOSITE, but others are possible.
bitmap -- This field is used as a bitmap descriptor when the slot format
is FT_GLYPH_FORMAT_BITMAP. Note that the address and content of the
bitmap buffer can change between calls of @FT_Load_Glyph and a few other
functions.
bitmap_left -- This is the bitmap's left bearing expressed in integer
pixels. Of course, this is only valid if the format is
FT_GLYPH_FORMAT_BITMAP.
bitmap_top -- This is the bitmap's top bearing expressed in integer
pixels. Remember that this is the distance from the baseline to the
top-most glyph scanline, upwards y-coordinates being *positive*.
outline -- The outline descriptor for the current glyph image if its
format is FT_GLYPH_FORMAT_OUTLINE.
num_subglyphs -- The number of subglyphs in a composite glyph. This
field is only valid for the composite glyph format that should normally
only be loaded with the @FT_LOAD_NO_RECURSE flag. For now this is
internal to FreeType.
subglyphs -- An array of subglyph descriptors for composite glyphs.
There are `num_subglyphs' elements in there. Currently internal to
FreeType.
control_data -- Certain font drivers can also return the control data
for a given glyph image (e.g. TrueType bytecode, Type 1 charstrings,
etc.). This field is a pointer to such data.
control_len -- This is the length in bytes of the control data.
other -- Really wicked formats can use this pointer to present their own
glyph image to client apps. Note that the app will need to know about
the image format.
width, height, hBearingX, hBearingY, hAdvance, vBearingX, vBearingY, vAdvance
-- The metrics of the last loaded glyph in the slot. The
returned values depend on the last load flags (see the @FT_Load_Glyph
API function) and can be expressed either in 26.6 fractional pixels or
font units.
advance
advanceX
advanceY
bitmapLeft
bitmapTop
extent
format
fromFace:
hBearing
hBearingX
hBearingY
height
linearAdvance
(
linearHorizontalAdvance
linearVerticalAdvance
loadFrom:
primLoadFrom:
roundedPixelLinearAdvance
Answer the scaled linearAdvance, rounded to whole pixels
width
FT2Handle
handle holds a (typically 32-bit) pointer to an externally managed object.
beNull
clearRegistry
deregister:
destroyHandle
errorCode
errorString
finalize
Finalize the resource associated with the receiver. This message should only be sent during the finalization process. There is NO garantuee that the resource associated with the receiver hasn't been free'd before so take care that you don't run into trouble - this all may happen with interrupt priority.
handle
initialize
Subclasses should redefine this method to perform initializations on instance creation
isValid
moduleErrorCode
primDestroyHandle
primitiveFailed
Announce that a primitive has failed and there is no appropriate
Smalltalk code to run.
primitiveFailed:
printOn:
Append to the argument, aStream, a sequence of characters that
identifies the receiver.
pvtDestroyHandle
This should only be sent from the finalizer.
register:
registry
shutDown:
unload
FT2HandleRegistry
A FT2HandleRegistry is xxxxxxxxx.
Instance Variables
add:
Add anObject to the receiver. Store the object as well as the associated executor.
FT2Library
This is a wrapper for the global 'library' in the plugin.
It is provided for the use of Cairo APIs that take an FT_Library argument.
current
destroyHandle
This is not a managed handle, but a global. Do nothing.
primCurrentLibrary
FT2MemoryFaceData
A FT2MemoryFaceData is xxxxxxxxx.
Instance Variables
bytes: <Object>
bytes
- xxxxx
bytes
bytes:
free
primDestroyHandle
primMalloc:
copy aByteArray into newly allocated, external memory, and store the
address of that memory in the receiver's handle
validate
FT2Outline
@instVar: contoursSize - The number of contours in the outline.
@instVar: pointsSize - The number of points in the outline.
@instVar: points - an array of 26.6 fixed point integer pairs giving the outline's point coordinates.
@instVar: tags - an array of pointsSize bytes, giving each outline point's type.
(counting from 0)
If bit 0 is unset, the point is 'off' the curve, i.e., a Bézier control point, while it is 'on' when set.
Bit 1 is meaningful for 'off' points only. If set, it indicates a third-order Bézier arc control point; and a second-order control point if unset.
@instVar: contours - an array of contoursSize shorts, giving the end point of each contour within the outline. For example, the first contour is defined by the points '0' to 'contours[0]', the second one is defined by the points 'contours[0]+1' to 'contours[1]', etc.
@instVar: flags - a set of bit flags used to characterize the outline and give hints to the scan-converter and hinter on how to convert/grid-fit it.
allocateArrays
allocate the arrays for the primLoadArraysFrom:
contoursCollection
returns a list of contours with tag => points list pairs
pointCollection
primLoadArraysFrom:
primLoadSizesFrom:
FT2Version
Do not rearrange these fields!
This is used to report FT2 version information. Its fields must remain unchanged, or you must change FT2Plugin>>primitiveVersion.
current
libraryVersion
major
minor
patch
printOn:
Append to the argument, aStream, a sequence of characters that
identifies the receiver.
FontChooser
A FontChooser is xxxxxxxxx.
Instance Variables
fontList: <Object>
fontListStrings: <Object>
fontStyleList: <Object>
getSelector: <Object>
pointSize: <Object>
pointSizeList: <Object>
selectedFontIndex: <Object>
selectedFontStyleIndex: <Object>
setSelector: <Object>
slantValue: <Object>
stretchValue: <Object>
target: <Object>
title: <Object>
weightValue: <Object>
fontList
- xxxxx
fontListStrings
- xxxxx
fontStyleList
- xxxxx
getSelector
- xxxxx
pointSize
- xxxxx
pointSizeList
- xxxxx
selectedFontIndex
- xxxxx
selectedFontStyleIndex
- xxxxx
setSelector
- xxxxx
slantValue
- xxxxx
stretchValue
- xxxxx
target
- xxxxx
title
- xxxxx
weightValue
- xxxxx
apply
categoryList
fontList
fontListStrings
fontStyleList
fontStyleListStrings
names of simulated styles are enclosed in parenthesis
getSelector
Answer the value of getSelector
getSelector:
Set the value of getSelector
initialize
Subclasses should redefine this method to perform initializations on instance creation
openWithWindowTitle:for:setSelector:getSelector:
pointSize
pointSize:
pointSizeList
refreshFontList
selectedFont
selectedFontFamily
selectedFontIndex
selectedFontIndex:
selectedFontStyleIndex
selectedFontStyleIndex:
selectedPointSize
selectedPointSizeIndex
selectedPointSizeIndex:
setPointSizeListFrom:
setSelector:
Set the value of setSelector
setStyleValuesFrom:
target
Answer the value of target
target:
Set the value of target
title:
Set the value of title
unemphasizedSelectedFont
updateFontList
windowTitle
windowTitle:for:setSelector:getSelector:
FontChooserMorph
A FontChooserMorph is xxxxxxxxx.
Instance Variables
applyButton: <Object>
cancelButton: <Object>
fontListStylePanel: <Object>
fontPreviewPanel: <Object>
mainPanel: <Object>
okButton: <Object>
pointSizeList: <Object>
pointSizeMorph: <Object>
pointSizeSlider: <Object>
result: <Object>
styleList: <Object>
updateButton: <Object>
applyButton
- xxxxx
cancelButton
- xxxxx
fontListStylePanel
- xxxxx
fontPreviewPanel
- xxxxx
mainPanel
- xxxxx
okButton
- xxxxx
pointSizeList
- xxxxx
pointSizeMorph
- xxxxx
pointSizeSlider
- xxxxx
result
- xxxxx
styleList
- xxxxx
updateButton
- xxxxx
apply
applyButton
applyButtonClicked
basicButton
cancelButton
cancelButtonClicked
createWindow
Create the package loader window.
delete
Should activate window before asking model if okToChange
since likely that a confirmation dialog will be requested.
Don't if not owned by the world though.
fontPreviewPanel
initializeLabelArea
Initialize the label area (titlebar) for the window.
initializeWithModel:
newFontList
newFontPointSizeField
newFontPointSizeLabel
newFontPreviewInnerPanel
newFontSizePanel
newFontStyleList
newPointSizeList
newSeparator
okButton
okButtonClicked
openAsMorph
Open a morph, as best one can, on the receiver
paneColor
Answer the window's pane color or our color otherwise.
pointSizeSlider:
pointSizeString
pointSizeString:
replaceBoxes
Rebuild the various boxes.
result
update:
Receive a change notice from an object of whom the receiver is a
dependent. The default behavior is to do nothing; a subclass might want
to change itself in some way.
updateButton
updateButtonClicked
updateFontList
updatePreview
withModel:
FontFamilyAbstract
A FontFamilyAbstract is xxxxxxxxx.
Instance Variables
familyName: <Object>
members: <Object>
familyName
- xxxxx
members
- xxxxx
closestMemberWithStretchValue:weightValue:slantValue:
answer the member that has weight, slant and stretch values that most closely
match those given by stretchValue, weightValue, and slantValue
familyName
Answer the value of familyName
familyName:
Set the value of familyName
members
Answer the value of members
printOn:
Append to the argument, aStream, a sequence of characters that
identifies the receiver.
FontFamilyMemberAbstract
A FontFamilyMemberAbstract is xxxxxxxxx.
Instance Variables
family: <Object>
styleName: <Object>
family
- xxxxx
styleName
- xxxxx
asLogicalFontOfPointSize:
closenessVector
closenessVectorForStretch:slant:weight:
family
family:
isCloserMatchThan:toStretch:weight:slant:
slantValue
stretchValue
styleName
Answer the value of styleName
styleName:
Set the value of styleName
weightValue
FontProviderAbstract
Abstract superClass for fontProviders
examples of possible fontProviders are
StrikeFontProvider
FreeTypeFontProvider
Win32NativeFontProvider
families
fontFor:
FreeTypeCache
A FreeTypeCache is xxxxxxxxx.
Instance Variables
fifo: <Object>
fontTable: <Object>
maximumSize: <Object>
used: <Object>
fifo
- xxxxx
fontTable
- xxxxx
maximumSize
- xxxxx
used
- xxxxx
atFont:charCode:type:
atFont:charCode:type:ifAbsentPut:
atFont:charCode:type:put:
clearCacheOnShutdown
clearCurrent
current
defaultMaximumSize
dictionaryClass
fifoClass
fifoEntryClass
initialize
Subclasses should redefine this method to perform initializations on instance creation
maximumSize:
removeAll
removeAllForFont:
removeAllForType:
report
answer a description of the current state of the cache
shrinkTo:
if the used size is greater than newSize, then remove all the receiver's entries
shutDown:
sizeOf:
FreeTypeCacheConstants
A FreeTypeCacheConstants is xxxxxxxxx.
Instance Variables
initialize
Subclasses should redefine this method to perform initializations on instance creation
FreeTypeCacheEntry
A FreeTypeCacheEntry is xxxxxxxxx.
Instance Variables
charCode: <Object>
font: <Object>
object: <Object>
previousLink: <Object>
type: <Object>
charCode
- xxxxx
font
- xxxxx
object
- xxxxx
previousLink
- xxxxx
type
- xxxxx
=
equailty based on font,charcode, type, object, but not nextLink
charCode
Answer the value of charCode
charCode:
Set the value of charCode
font
Answer the value of font
font:
Set the value of font
hash
Answer a SmallInteger whose value is related to the receiver's identity.
May be overridden, and should be overridden in any classes that define =
object
Answer the value of object
object:
Set the value of object
previousLink
Answer the value of previousLink
previousLink:
Set the value of previousLink
type
Answer the value of type
type:
Set the value of type
FreeTypeCacheLinkedList
A FreeTypeCacheLinkedList is xxxxxxxxx.
Instance Variables
add:after:
Add otherLink after link in the list. Answer aLink.
add:before:
addFirst:
Add aLink to the beginning of the receiver's list. Answer aLink.
addLast:
Add aLink to the end of the receiver's list. Answer aLink.
moveDown:
remove:ifAbsent:
Remove aLink from the receiver. If it is not there, answer the result of
evaluating aBlock.
removeFirst
Remove the first element and answer it. If the receiver is empty, create
an error notification.
removeLast
Remove the first element and answer it. If the receiver is empty, create
an error notification.
FreeTypeEmbeddedFileInfo
A FreeTypeEmbeddedFileInfo is xxxxxxxxx.
Instance Variables
baseName: <Object>
fileContents: <Object>
baseName
- xxxxx
fileContents
- xxxxx
baseName
Answer the value of baseName
baseName:
Set the value of baseName
familyGroupName
Answer the value of familyGroupName
fileContents
Answer the value of fileContents
fileContents:
Set the value of fileContents
fileSize
isEmbedded
locationType
Answer the value of locationType
printOn:
super printOn: aStream.
FreeTypeExternalMemory
A FreeTypeExternalMemory is xxxxxxxxx.
Instance Variables
bytes: <Object>
bytes
- xxxxx
bytes
bytes:
primCopyToExternalMemory:
copy aByteArray into newly allocated, external memory, and store the
address of that memory in the receiver's handle
primDestroyHandle
validate
FreeTypeFace
A FreeTypeFace is xxxxxxxxx.
Instance Variables
fileContentsExternalMemory: <Object>
filename: <Object>
hasKerning: <Object>
index: <Object>
valid: <Object>
fileContentsExternalMemory
- xxxxx
filename
- xxxxx
hasKerning
- xxxxx
index
- xxxxx
valid
- xxxxx
actAsExecutor
Prepare the receiver to act as executor for any resources associated with it
beNull
create
create me in the FT2Plugin. This gets my handle, and loads the fields
familyName
fileContentsExternalMemory:
fileContentsExternalMemoryBytes
filename
filename:
fontPathFor:
fromBytes:index:
fromFile:index:
hasFamilyName
hasKerning
hasStyleName
index
index:
isValid
newFaceFromExternalMemory:index:
newFaceFromFile:index:
primNewFaceFromExternalMemory:size:index:
releaseCachedState
rememberFontDir:
styleName
validate
If the receiver is not valid (has a nil handle), then create the
receiver to obtain a handle and load the receiver's fields
FreeTypeFileInfo
A FreeTypeFileInfo is xxxxxxxxx.
Instance Variables
absoluteOrRelativePath: <Object>
absolutePath: <Object>
fileSize: <Object>
locationType: <Object>
modificationTime: <Object>
absoluteOrRelativePath
- xxxxx
absolutePath
- xxxxx
fileSize
- xxxxx
locationType
- xxxxx
modificationTime
- xxxxx
absoluteOrRelativePath
Answer the value of absoluteOrRelativePath
absoluteOrRelativePath:
Set the value of absoluteOrRelativePath
absolutePath
Answer the value of absolutePath
absolutePath:
Set the value of absolutePath
baseName
familyGroupName
Answer the value of familyGroupName
fileSize
Answer the value of fileSize
fileSize:
Set the value of fileSize
locationType
Answer the value of locationType
locationType:
Set the value of locationType
modificationTime
Answer the value of modificationTime
modificationTime:
Set the value of modificationTime
printOn:
super printOn: aStream.
FreeTypeFileInfoAbstract
A FreeTypeFileInfoAbstract is xxxxxxxxx.
Instance Variables
bold: <Object>
familyGroupName: <Object>
familyName: <Object>
fixedWidth: <Object>
index: <Object>
italic: <Object>
numFaces: <Object>
postscriptName: <Object>
slant: <Object>
slantValue: <Object>
stretch: <Object>
stretchValue: <Object>
styleName: <Object>
styleNameExtracted: <Object>
upright: <Object>
weight: <Object>
weightValue: <Object>
bold
- xxxxx
familyGroupName
- xxxxx
familyName
- xxxxx
fixedWidth
- xxxxx
index
- xxxxx
italic
- xxxxx
numFaces
- xxxxx
postscriptName
- xxxxx
slant
- xxxxx
slantValue
- xxxxx
stretch
- xxxxx
stretchValue
- xxxxx
styleName
- xxxxx
styleNameExtracted
- xxxxx
upright
- xxxxx
weight
- xxxxx
weightValue
- xxxxx
bold
Answer the value of bold
bold:
Set the value of bold
extractAttributesFromNames
derive values for the receiver's style(italic), weight, and stretch inst vars.
Also set the familyGroupName and styleNameExtracted
familyGroupName
Answer the value of familyGroupName
familyName
Answer the value of familyName
familyName:
Set the value of familyName
fixedWidth
Answer the value of fixedWidth
fixedWidth:
Set the value of fixedWidth
index
Answer the value of index
index:
Set the value of index
isBolderThan:
isEmbedded
isItalicOrOblique
italic
Answer the value of italic
italic:
Set the value of italic
numFaces
Answer the value of numFaces
numFaces:
Set the value of numFaces
postscriptName
Answer the value of postscriptName
postscriptName:
Set the value of postscriptName
slant
Answer the value of slant
slantValue
stretch
Answer the value of stretch
stretchValue
Answer the value of stretchValue
stretchValue:
Set the value of stretchValue
style
Answer the value of slant
styleName
Answer the value of styleName
styleName:
Set the value of styleName
styleNameExtracted
styleNameWithItalicForcedToBe:
styleNameWithWeightForcedToBe:
styleNameWithWeightForcedToBe:italicForcedToBe:
validFamilyName
answer the receiver's familyName, or an alternative
name to use if the familyName is invalid for some reason
validStyleName
answer the receiver's styleName, or an alternative
name to use if the styleName is invalid for some reason
weight
Answer the value of weight
weightValue
Answer the value of weightValue
weightValue:
Set the value of weightValue
FreeTypeFont
A FreeTypeFont is xxxxxxxxx.
Instance Variables
cachedAscent: <Object>
cachedDescent: <Object>
cachedHeight: <Object>
face: <Object>
pixelSize: <Object>
pointSize: <Object>
simulatedEmphasis: <Object>
subPixelPositioned: <Object>
symbolFont: <Object>
widthAndKernedWidthCache: <Object>
cachedAscent
- xxxxx
cachedDescent
- xxxxx
cachedHeight
- xxxxx
face
- xxxxx
pixelSize
- xxxxx
pointSize
- xxxxx
simulatedEmphasis
- xxxxx
subPixelPositioned
- xxxxx
symbolFont
- xxxxx
widthAndKernedWidthCache
- xxxxx
ascent
basicAscent
characterFormAt:
clearCachedMetrics
defaultSimulatedItalicSlant
depth
descent
descentKern
should have default in AbstractFont
displayLineGlyphOn:from:to:
displayStrikeoutOn:from:to:
the strikeout size/position for TrueType fonts should really come from the TT:=OS2 table.
This needs to be read by the plugin when the face is created.
For now, we use the underlineThickness, and 1/4 of the ascender from the baseline
displayString:on:from:to:at:kern:
Draw the given string from startIndex to stopIndex
at aPoint on the (already prepared) display context.
displayString:on:from:to:at:kern:baselineY:
Draw the given string from startIndex to stopIndex
at aPoint on the (already prepared) display context.
displayUnderlineOn:from:to:
display the underline if appropriate for the receiver
face
Validate, and answer, the receiver's face
face:
forLogicalFont:fileInfo:
fromBytes:pointSize:index:
fromFile:pointSize:index:
getLinearWidthOf:
getWidthOf:
Glyphs are either 1 or 8 bit deep. For 32 bpp we use 8 bits, otherwise 1
glyphOf:colorValue:mono:subpixelPosition:
glyphOf:destDepth:colorValue:subpixelPosition:
sub can be between 0 and 63 and denotes the sub-pixel position of the glyph
hasDistinctGlyphsForAll:
Answer true if the receiver has glyphs for all the characters
in asciiString and no single glyph is shared by more than one character, false otherwise.
The default behaviour is to answer true, but subclasses may reimplement
hasGlyphsForAll:
Answer true if the receiver has glyphs for all the characters
in asciiString, false otherwise.
The default behaviour is to answer true, but subclasses may reimplement
hash
Answer a SmallInteger whose value is related to the receiver's identity.
May be overridden, and should be overridden in any classes that define =
height
Answer the height of the receiver, total of maximum extents of
characters above and below the baseline.
hintedKerningLeft:right:
hintedWidthOf:
retrieve advance width for character. try to use cached glyph if possible
initialize:
installOn:foregroundColor:backgroundColor:
fcolor := foreColor pixelValueForDepth: 32.
isBold
isFixedWidth
isItalic
isRegular
isSimulated
isSimulatedBold
isSimulatedItalic
isSimulatedRegular
isSubPixelPositioned
Answer true if the receiver is currently using subpixel positioned
glyphs, false otherwise. This affects how padded space sizes are calculated
when composing text.
Currently, only FreeTypeFonts are subPixelPositioned, and only when not
Hinted
isSymbolFont
Answer true if the receiver is a Symbol font, false otherwise.
The default is to answer false, subclasses can reimplement
isTTCFont
not really - look for senders of this
kerningLeft:right:
lineGrid
Answer the relative space between lines
linearKerningLeft:right:
linearWidthOf:
retrieve linear advance width for character. try to use cached glyph if possible.
This is the scaled, unrounded advance width.
maxAscii
should have default in AbstractFont
minAscii
should have default in AbstractFont
mode41GlyphOf:colorValue:mono:subpixelPosition:
new
pixelSize
Make sure that we don't return a Fraction
pixelsPerInchChanged
the TextStyle pixels per inch setting has changed
pointSize
pointSize:
postscriptName
printOn:
Append to the argument, aStream, a sequence of characters that
identifies the receiver.
profileHintedComposition
profileHintedDisplayCached
profileHintedDisplayCachedUsingMode34
profileHintedWidthOfString
profileHintedWidthOfStringCached
profileHintedWidthOfStringCachedMulti
profileHintedWidthOfStringMulti
profileUnhinted
profileUnhintedComposition
profileUnhintedCompositionMulti
profileUnhintedDisplay
profileUnhintedDisplayCached
profileUnhintedDisplayCachedMulti
profileUnhintedDisplayMulti
profileUnhintedWidthOfString
profileUnhintedWidthOfStringCached
profileUnhintedWidthOfStringCachedMulti
profileUnhintedWidthOfStringMulti
releaseCachedState
setFace:pointSize:
simulatedBoldStrength
Answer the amount by which glyphs need to be emboldened/lightened
according to the receiver's simulated emphasis and the face's real emphasis
simulatedEmphasis
Answer the simulatedEmphasis.
This is
0 - normal (no simulatedEmphasis, or simulated regular).
1 - bold
2 - italic
3 - bold & italic
simulatedEmphasis:
Set the simulatedEmphasis.
This is
nil - no simulated emphasis
0 - normal (simulated regular).
1 - bold
2 - italic
3 - bold & italic
simulatedItalicSlant
Answer the slant that needs to be added to italicize/un-italicize
glyphs according to the receiver's simulated emphasis and the face's
real emphasis
subGlyphOf:colorValue:mono:subpixelPosition:
subPixelPositioned
Answer true if the receiver is currently using subpixel positioned
glyphs, false otherwise. This affects how padded space sizes are calculated
when composing text.
widthAndKernedWidthCache
widthAndKernedWidthOfLeft:right:into:
Set the first element of aTwoElementArray to the width of leftCharacter and
the second element to the width of left character when kerned with
rightCharacterOrNil. Answer the receiver

We use a widthAndKernedWidthCache to store these values for speed
widthOf:
retrieve advance width for character. try to use cached glyph if possible
widthOfString:from:to:
Measure the length of the given string between start and stop index.
Currently this allows for the right side bearing of the last char, but does not allow for the left side bearing of the first char. We really need a new method - boundingBoxOfString that allows for both. Senders of this will also need to know the LSB of the first char, and position their text accordingly
FreeTypeFontFamily
A FreeTypeFontFamily is xxxxxxxxx.
Instance Variables
addMember:
addMembersFromFileInfos:
addSimulatedMembers
initialize
Subclasses should redefine this method to perform initializations on instance creation
memberWithStyleName:
rebuildSimulatedMembers
FOR TESTING ONLY
FreeTypeFontFamilyMember
A FreeTypeFontFamilyMember is xxxxxxxxx.
Instance Variables
fileInfo: <Object>
simulated: <Object>
slantName: <Object>
slantValue: <Object>
stretchName: <Object>
stretchValue: <Object>
weightName: <Object>
weightValue: <Object>
fileInfo
- xxxxx
simulated
- xxxxx
slantName
- xxxxx
slantValue
- xxxxx
stretchName
- xxxxx
stretchValue
- xxxxx
weightName
- xxxxx
weightValue
- xxxxx
<=
asSimulatedBold
asSimulatedBoldOblique
asSimulatedOblique
fileInfo
Answer the value of fileInfo
fileInfo:
Set the value of fileInfo
fromFileInfo:
simulated
Answer the value of simulated
simulated:
Set the value of simulated
slantName
Answer the value of slantName
slantName:
Set the value of slantName
slantValue
Answer the value of slantValue
slantValue:
Set the value of slantValue
sortValue
stretchName
Answer the value of stretchName
stretchName:
Set the value of stretchName
stretchValue
Answer the value of stretchValue
stretchValue:
Set the value of stretchValue
weightName
Answer the value of weightName
weightName:
Set the value of weightName
weightValue
Answer the value of weightValue
weightValue:
Set the value of weightValue
FreeTypeFontProvider
A FreeTypeFontProvider is xxxxxxxxx.
Instance Variables
fontInfoCache: <Object>
fontInfos: <Object>
fontInfoCache
- xxxxx
fontInfos
- set of FreeTypeFontInfo. Info about all the fonts that are available
absoluteOrRelativePathFor:locationType:
answer a relative path from an absolute path according to the location type aSymbol
absolutePathFor:locationType:
answer an absolute path from an absolute or relative path according to the location type aSymbol
addFileInfo:index:
addFirstFileInfo:index:
addFromFileContents:baseName:
buildFamilies
buildFamilyNamed:
cacheEmbeddedFileInfo:index:
cacheFileInfo:index:
current
embedFilesInDirectory:
embed all the files in aFileDirectory

FreeTypeFontProvider current embedFilesInDirectory: (FileDirectory default directoryNamed: 'Fonts')
failedToOpen:from:index:
failedToOpen:index:
families
fileInfosByFamilyAndGroup
Answer a Dictionary of Dictionaries of Sets.
familyName->familyGroupName->Set(FreeTypeFileInfo)

self current fileInfosByFamilyAndGroup
fontFor:familyName:
fontInfoFor:familyName:
use tempFileInfos if not nil, i.e. during an update
getMacOSXFontFolderPaths
Answer the Mac OS X font folder paths.
This needs some FFI code, but for the time being, we guess these and omit the user fonts folder
getUnixFontFolderPaths
Answer the unix/linux font folder paths
getWindowsFontFolderPath
Answer the windows font folder path.
This is obtained through the Windows API if FFI is present,
otherwise it is a guess !
guessWindowsFontFolderPath
Guess the location of the Windows font folder
initialize
Subclasses should redefine this method to perform initializations on instance creation
loadFromSystem
platformAbsoluteDirectories
platformImageRelativeDirectories
platformVMRelativeDirectories
startUp:
updateFromDirectory:locationType:done:
get info from fonts in aDirectory
updateFromFileEntry:directory:locationType:
(path findString: '\\') > 0 ifTrue:[self halt].
updateFromSystem
validCachedInfoFor:directory:index:
answer info from cache if the file on the disk has the same size/timestamp as the cached info, otherwise answer nil
validEmbeddedCachedInfoFor:index:
answer info from cache if the bytes are the same as the cached info, otherwise answer nil
FreeTypeGlyphRenderer
This class produces glyphs for a FreeTypeFont.
It can be subclassed to provide, for example, sub-pixel anti-aliased glyphs.
convert8To32:
convert aGlyphForm from the 8 bit deep form produced by FreeType, where each byte represents the intensity of a single pixel, to a 32 bit deep form
convert8to32:colorValue:
convert from the 8 bit deep form produced by FreeType, where each byte represents the intensity of a single pixel, to a 32 bit deep form with pixels of color foreColorValue
current
current:
fixBytesForMono:
On Windows, the bits in each byte are in reverse order, and inverted.
i.e. 2r10100000 should be 2r11111010 to display correctly.
This needs further investigation
glyphOf:colorValue:mono:subpixelPosition:font:
mode41GlyphOf:colorValue:mono:subpixelPosition:font:
renderGlyph:depth:subpixelPosition:font:
Glyphs are either 1 or 8 bit deep. For 32 bpp we use 8 bits, otherwise 1
subGlyphOf:colorValue:mono:subpixelPosition:font:
the default renderer does not support sub-pixel anti-aliasing,
so answer an ordinary glyph
FreeTypeNameParser
A FreeTypeNameParser is xxxxxxxxx.
Instance Variables
boldFlag: <Object>
combinedName: <Object>
delimiters: <Object>
extractedSlant: <Object>
extractedSlantValue: <Object>
extractedStretch: <Object>
extractedStretchValue: <Object>
extractedUpright: <Object>
extractedWeight: <Object>
extractedWeightValue: <Object>
familyNameIn: <Object>
italicFlag: <Object>
styleNameIn: <Object>
tokens: <Object>
boldFlag
- xxxxx
combinedName
- xxxxx
delimiters
- xxxxx
extractedSlant
- xxxxx
extractedSlantValue
- xxxxx
extractedStretch
- xxxxx
extractedStretchValue
- xxxxx
extractedUpright
- xxxxx
extractedWeight
- xxxxx
extractedWeightValue
- xxxxx
familyNameIn
- xxxxx
italicFlag
- xxxxx
styleNameIn
- xxxxx
tokens
- xxxxx
addStyleNameToCombinedName:
boldFlag:
extractSlant
match and remove last italic/oblique token
extractStretch
match and remove last stretch tokens
extractUpright
extract from current combined name.
answer new combinedName
extractWeight
match and remove last weight tokens
extractedSlant
extractedSlantValue
extractedStretch
extractedStretchValue
extractedUpright
extractedWeight
extractedWeightValue
familyName
familyName:
familyNameIn:
initialize
Subclasses should redefine this method to perform initializations on instance creation
italicAndObliqueNames
italicFlag:
italicNames
lastMatchValueSequence:
answer the last contiguous tokens that match pattern tokens,
or nil if not found.
matching is case insensitive
normalNames
obliqueNames
parse
splitBadTokensIn:
split tokens such as BoldOblique, that should be two words
stretchNames
styleName:
styleNameIn:
tokenize:
answer an OrderedCollection of {string. start. end} tuples.
tokens are separated by $- $:= $, $. and whitespace
weightNames
FreeTypeSettings
A FreeTypeSettings is xxxxxxxxx.
Instance Variables
bitBltSubPixelAvailable: <Object>
forceAutoHinting: <Object>
forceNonSubPixelCount: <Object>
gamma: <Object>
gammaInverseTable: <Object>
gammaTable: <Object>
hinting: <Object>
lcdHinting: <Object>
lcdvHinting: <Object>
lightHinting: <Object>
monoHinting: <Object>
subPixelAntiAliasing: <Object>
subPixelFilters: <Object>
bitBltSubPixelAvailable
- xxxxx
forceAutoHinting
- xxxxx
forceNonSubPixelCount
- xxxxx
gamma
- xxxxx
gammaInverseTable
- xxxxx
gammaTable
- xxxxx
hinting
- xxxxx
lcdHinting
- xxxxx
lcdvHinting
- xxxxx
lightHinting
- xxxxx
monoHinting
- xxxxx
subPixelAntiAliasing
- xxxxx
subPixelFilters
- xxxxx
FreeTypeCacheSizePreferenceChanged
GlyphContrastPreferenceChanged
HintingFullPreferenceChanged
HintingLightPreferenceChanged
HintingNonePreferenceChanged
HintingNormalPreferenceChanged
MonitorTypeCRTPreferenceChanged
MonitorTypeLCDPreferenceChanged
bitBltSubPixelAvailable
Answer true if the the subPixel combination rule is available, false otherwise.
to test :-

bitBltSubPixelAvailable := false.
FreeTypeCache current removeAll.
Smalltalk isMorphic
ifTrue:[World restoreMorphicDisplay]

clearBitBltSubPixelAvailable
clearForceNonSubPixelCount
current
defaultSubPixelFilterRatios
forceAutoHinting
forceNonSubPixelCount
forceNonSubPixelDuring:
gamma
gammaInverseTable
gammaTable
glyphContrastPreferenceChanged
value between 1 and 100.
100 is highest contrast and maps to gamma 0.25
1 is lowest contrast and maps to gamma 2.22
hinting
hintingFlags
hintingFullPreferenceChanged
hintingLightPreferenceChanged
hintingNonePreferenceChanged
hintingNormalPreferenceChanged
initialize
Subclasses should redefine this method to perform initializations on instance creation
initializePreferences
lcdHinting
lcdvHinting
lightHinting
monitorTypeCRTPreferenceChanged
monitorTypeLCDPreferenceChanged
monoHinting
pretendBitBltSubPixelUnavailableDuring:
For testing/profiling only.

Answer true if the the subPixel combination rule is available, false otherwise.
to test :-

bitBltSubPixelAvailable := false.
FreeTypeCache current removeAll.
Smalltalk isMorphic
ifTrue:[World restoreMorphicDisplay]

setGamma:
setSubPixelFilter:
Set the subPixelFilters from ratiosArray.
the ratiosArray can specify the red, green, and blue filter ratios separately.
e.g. #((1 3 5 3 1) (1 4 7 4 1) (1 2 3 2 1))
or, as single set of ratios e.g. #(1 3 5 3 1)
shutDown:
startUp:
subPixelAntiAliasing
subPixelFilters
subPixelFiltersFromRatios:
Convert the ratios in anArray to a similar array containing the filter proportions as floats.
Example:
if <array3ofArrays5> = #((1 3 5 3 1) (1 3 5 3 1) (1 3 5 3 1))
Then the answer is #(#(0.0769230769230769 0.2307692307692308 0.3846153846153846 0.2307692307692308 0.0769230769230769) #(0.0769230769230769 0.2307692307692308 0.3846153846153846 0.2307692307692308 0.0769230769230769) #(0.0769230769230769 0.2307692307692308 0.3846153846153846 0.2307692307692308 0.0769230769230769))
GlyphForm
A GlyphForm is xxxxxxxxx.
Instance Variables
advance: <Object>
linearAdvance: <Object>
advance
- xxxxx
linearAdvance
- xxxxx
advance
advance:
asFormOfDepth:
linearAdvance
linearAdvance:
LogicalFont
A LogicalFont is xxxxxxxxx.
Instance Variables
boldDerivative: <Object>
boldItalicDerivative: <Object>
derivatives: <Object>
emphasis: <Object>
fallbackFamilyNames: <Object>
familyName: <Object>
italicDerivative: <Object>
pointSize: <Object>
realFont: <Object>
slantValue: <Object>
stretchValue: <Object>
weightValue: <Object>
boldDerivative
- xxxxx
boldItalicDerivative
- xxxxx
derivatives
- xxxxx
emphasis
- xxxxx
fallbackFamilyNames
- xxxxx
familyName
- xxxxx
italicDerivative
- xxxxx
pointSize
- xxxxx
realFont
- xxxxx
slantValue
- xxxxx
stretchValue
- xxxxx
weightValue
- xxxxx
all
ascent
baseKern
characterFormAt:
clearRealFont
derivativeFont:
add aFont as derivative, answer new basefont
derivativeFont:mainFont:
derivativeFonts
derivativeFontsAt:put:
descent
descentKern
displayStrikeoutOn:from:to:
display the strikeout if appropriate for the receiver
displayString:on:from:to:at:kern:
Draw the given string from startIndex to stopIndex
at aPoint on the (already prepared) display context.
displayString:on:from:to:at:kern:baselineY:
Draw the given string from startIndex to stopIndex
at aPoint on the (already prepared) display context.
displayUnderlineOn:from:to:
display the underline if appropriate for the receiver
emphasis
Answer the squeak emphasis code for the receiver.
1=bold, 2=italic, 3=bold-italic etc
emphasis:
emphasisString
Answer a translated string that represents the receiver's emphasis.
emphasized:
we only handle bold and italic here since underline/strikeout are drawn separately
fallbackFamilyNames
fallbackFamilyNames:
familyName
Answer the name to be used as a key in the TextConstants dictionary.
familyName:
familyName:fallbackFamilyNames:pointSize:
familyName:fallbackFamilyNames:pointSize:stretchValue:weightValue:slantValue:
familyName:pointSize:
familyName:pointSize:stretchValue:weightValue:slantValue:
familyNames
Answer an array containing the receiver's familyName
followed by any fallbackFamilyNames
familySizeFace
should have default in AbstractFont
findRealFont
for now just get a strike
fontArray
forceBold
forceItalicOrOblique
forceNotBold
anything other than bold (700) is not changed.
we only remove boldness that can be put back with
a TextAttribute bold.
forceNotItalic
leave oblique style in place
hasDistinctGlyphsForAll:
Answer true if the receiver has glyphs for all the characters
in asciiString and no single glyph is shared by more than one character, false otherwise.
The default behaviour is to answer true, but subclasses may reimplement
hasGlyphsForAll:
Answer true if the receiver has glyphs for all the characters
in asciiString, false otherwise.
The default behaviour is to answer true, but subclasses may reimplement
height
Answer the height of the receiver, total of maximum extents of
characters above and below the baseline.
initialize
Subclasses should redefine this method to perform initializations on instance creation
initialize:
installOn:foregroundColor:backgroundColor:
Install the receiver on the given DisplayContext (either BitBlt or Canvas) for further drawing operations.
isBold
isBoldOrBolder
isItalic
isItalicOrOblique
isRegular
isSubPixelPositioned
Answer true if the receiver is currently using subpixel positioned
glyphs, false otherwise. This affects how padded space sizes are calculated
when composing text.
Currently, only FreeTypeFonts are subPixelPositioned, and only when not
Hinted
isSymbolFont
Answer true if the receiver is a Symbol font, false otherwise.
The default is to answer false, subclasses can reimplement
isTTCFont
kerningLeft:right:
linearWidthOf:
This is the scaled, unrounded advance width.
maxAscii
???
what to do if realFont happens to be a StrikeFontSet?
new
objectForDataStream:
I am about to be written on an object file. Write a reference to a known LogicalFont in the other system instead.
pointSize
pointSize:
printOn:
Append to the argument, aStream, a sequence of characters that
identifies the receiver.
realFont
setEmphasis:
shutDown:
slantBackslanted
slantBook
slantCursive
slantInclined
slantItalic
slantKursiv
slantNormal
slantOblique
slantRegular
slantRoman
slantSlanted
slantUpright
slantValue
Answer the value of slantValue
slantValue:
Set the value of slantValue
squeakSlantItalic
squeakStretchCondensed
squeakWeightBold
stretchCompact
stretchCompressed
stretchCondensed
stretchExpanded
stretchExtended
stretchExtraCompressed
stretchExtraCondensed
stretchExtraExpanded
stretchExtraExtended
stretchNarrow
stretchRegular
stretchSemiCondensed
stretchSemiExpanded
stretchSemiExtended
stretchUltraCompressed
stretchUltraCondensed
stretchUltraExpanded
stretchUltraExtended
stretchValue
Answer the value of stretchValue
stretchValue:
Set the value of stretchValue
stretchWide
weightBlack
weightBold
weightDemi
weightDemiBold
weightExtraBlack
weightExtraBold
weightExtraLight
weightExtraThin
weightHeavy
weightLight
weightMedium
weightNord
weightRegular
weightSemiBold
weightThin
weightUltra
weightUltraBlack
weightUltraBold
weightUltraLight
weightUltraThin
weightValue
Answer the value of weightValue
weightValue:
Set the value of weightValue
widthAndKernedWidthOfLeft:right:into:
Set the first element of aTwoElementArray to the width of leftCharacter and
the second element to the width of left character when kerned with
rightCharacterOrNil. Answer aTwoElementArray
widthOf:
Return the width of the given character
widthOfString:
widthOfString:from:to:
Measure the length of the given string between start and stop index
xTable
Return the xTable for the font. The xTable defines the left x-value for each individual glyph in the receiver. If such a table is not provided, the character scanner will ask the font directly for the appropriate width of each individual character.
LogicalFontManager
A LogicalFontManager is xxxxxxxxx.
Instance Variables
fontProviders: <Object>
fontProviders
- xxxxx
addFontProvider:
allFamilies
answer an Array containing all the font families from the receiver's fontProviders,
together with any TextStyle font families, sorted by family name
bestFontFor:
look up best font from the receivers fontProviders
bestFontFor:whenFindingAlternativeIgnoreAll:
look up best real font from the receivers fontProviders.
If we can't find a font, then answer an alternative real font.

ignoreSet contains the LogicalFonts that we have already attempted to
get an alternative real font from. We ignore those on each iteration so that we don't
recurse forever
current
defaultCurrent
initialize
Subclasses should redefine this method to perform initializations on instance creation
TextStyleAsFontFamily
A TextStyleAsFontFamily is xxxxxxxxx.
Instance Variables
textStyle: <Object>
textStyle
- xxxxx
members
Answer the value of members
textStyle
Answer the value of textStyle
textStyle:
Set the value of textStyle
TextStyleAsFontFamilyMember
A TextStyleAsFontFamilyMember is xxxxxxxxx.
Instance Variables
<=
emphasisCode
Answer the squeak emphasis code (1=bold, 2=italic, 3=boldItalic etc
simulated
slantValue
stretchValue
weightValue