mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-28 16:31:01 +00:00
9c249dafab
The ROM now round-trips with QuickDraw mostly built from source. (~30% of the ROM is now built from source.)
489 lines
18 KiB
Plaintext
489 lines
18 KiB
Plaintext
;
|
|
; File: fontPrivate.a
|
|
;
|
|
; Contains: All particular spline definitions needed for the spline package.
|
|
;
|
|
; Written by: Charlton E. Lui
|
|
;
|
|
; Copyright: © 1989-1992 by Apple Computer, Inc., all rights reserved.
|
|
;
|
|
; Change History (most recent first):
|
|
;
|
|
; <29> 9/2/92 DTY Convert those damned incremental labels into records.
|
|
; <28> 7/9/92 DTY This file got corrupted somehow. Fix it back up from version
|
|
; <26> and redo last change.
|
|
; <27> 7/9/92 DTY #1035445: Increased partial zone size to 10K.
|
|
; <26> 7/4/92 DTY #1034875 <csd>: Define 5K size of base systemÕs partial font
|
|
; zone here.
|
|
; <25> 5/4/92 DTY There really was a good reason for me to stick fondCache in the
|
|
; middle of SplineKey, honest! But since I donÕt remember what it
|
|
; is, IÕm moving it to the end of the structure to keep existing
|
|
; offsets the same.
|
|
; <24> 3/9/92 DTY Add macros for new selectors for InitializePartialFonts and
|
|
; InitializeDiskCache.
|
|
; <23> 1/22/92 DTY Take the synFOND field out of the synthetic strike table
|
|
; structure. WeÕre gauranteeing unique font IDs, so this extra
|
|
; differentiation wonÕt be necessary.
|
|
; <22> 11/15/91 DTY Remember which resource map a font was loaded from. Added the
|
|
; synFOND field to the synEntry record. (If it turns out the
|
|
; developers are looking at these records, this information will
|
|
; probably have to be moved.)
|
|
; <21> 10/11/91 DTY Building the candidate FOND list takes too long. Cache two lists
|
|
; in SplineKey.
|
|
; <20> 9/25/91 jlf Added fSplineDirectory to widthTable definition. Replaced
|
|
; glyphCount and glyphLimit with fEncodingTablePointer,
|
|
; fScriptNumber, and fLongPad in the sb_CacheHead definition.
|
|
; Added spline key globals for partial font, disk caching,
|
|
; and doublebyte support. Added KeepSplineOnDisk field to
|
|
; width table structure.
|
|
; <19> 8/22/91 JSM Clean up header.
|
|
; <18> 1/30/91 gbm sab, #38: Change the Ôalready including this fileÕ variable to
|
|
; all uppercase (for security reasons)
|
|
; <17> 1/9/91 RB (CEL/PKE/GM/DA) Added in safeCount variable to splineKey globals
|
|
; to fix the long string bug caused in stdtxmeas overflow.
|
|
; <16> 12/18/90 MR [ph] Add IsSpline macro for BassPatches.a
|
|
; <15> 10/30/90 CL (MR)Adding fs_LowestPPEM macro.
|
|
; <14> 10/22/90 CL (BKR)Adding support for minimum memory mode to band and run in
|
|
; low memory cache conditions.
|
|
; <12> 10/10/90 CL Adding sb_PreFlightFontMem selector.
|
|
; <11> 10/8/90 CL Adding loadSpline flag to the widthTable.
|
|
; <10> 10/8/90 CL Fixing up the splinekey vGrowZone variable. This accidently got
|
|
; placed over the tempWidthHand.
|
|
; <9> 10/1/90 CL Adding in memoryPatch vector for memory manager fix on the
|
|
; growzone.
|
|
; <8> 9/24/90 CL Adding the fmAscent, fmDescent, fmWidmax, fmLeading fields to
|
|
; the cache.
|
|
; <7> 9/13/90 CL Taking out unused variables in the caching records.
|
|
; Cleaned up splinekeyRecÉ Added in heap defines into splineKey.
|
|
; <6> 8/29/90 CL Added the cache zone to splinekey. Added mfExists flag.
|
|
; <5> 8/28/90 MR Add bitmapzone to splinekey
|
|
; <4> 8/20/90 MR Add fsWorkZone to record which zone the work handle is allocated
|
|
; in.
|
|
; <3> 7/20/90 gbm Stopped redefining all of the width table, so the assembler
|
|
; won't complain
|
|
; <2> 7/16/90 CL Adding glyph data structure. Added clean up vector in splinekey.
|
|
; <1> 6/22/90 CL first checked in
|
|
; <6+> 6/20/90 CL Used to be SplineDefines.a.
|
|
; <6> 5/29/90 CL Took out width table references to the cache handles.
|
|
; <5> 5/3/90 CL Got rid of old comments. may have added support for extra memory
|
|
; area.
|
|
; <4> 4/10/90 CL Added support for double byte codes. Worked on disk caching.
|
|
; <3> 3/20/90 CL support for tag format
|
|
; <2> 2/27/90 CL suppport for DrTextÕs optimizations
|
|
; <1.9> 11/14/89 CEL Adding Device left side bearing.
|
|
; <1.8> 9/15/89 CEL Added flag to turn on debugging from macsbug.
|
|
; <1.7> 8/28/89 CEL Updated splinekey to match c defines.
|
|
; <1.6> 8/14/89 CEL Added memory macros. Added in encrytion var in width table.
|
|
; Added splineKeyRec.
|
|
; <1.5> 8/1/89 CEL Conditionalized the Debug Macro. Used assembly records for
|
|
; structures that are passed between Drtext and buffer code. Added
|
|
; NewTempHandle, NewTempBuffer, NewDisposeHandle macros.
|
|
; <1.4> 6/10/89 CEL Moved Private.a QuickDraw Equates into proper QuickDraw private
|
|
; file (colorequ.a), got rid of QuickDraw nFiles dependencies and
|
|
; fixed up necessary filesÉ
|
|
; <1.3> 6/2/89 CEL Changed translate24To32 trap address so we can worked with
|
|
; 32-bit QD once more
|
|
; <1.2> 5/26/89 CEL Integrated the new Font Scaler 1.0 into Spline Fonts
|
|
; <¥1.1> 5/3/89 CEL All kinks worked out, Blasting in bass filesÉ
|
|
; <1.0> 5/2/89 CEL Rolling in bass for the first timeÉ
|
|
;
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
BLANKS ON
|
|
STRING PASCAL
|
|
|
|
|
|
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; Spline Data Structures
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
splinePreferred EQU 5
|
|
preserveGlyph EQU 4
|
|
|
|
kMinimalPartialFontZoneSize equ 10 * 1024 ; <26> A minimal partial font zone for the base system
|
|
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; SplineKey Struct
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; IF CHANGE in c-def
|
|
; Update this definition
|
|
;
|
|
;
|
|
splineKeyRec RECORD 0
|
|
callDebug DS.L 1 ; Set if debugging is on
|
|
vFontCache DS.L 1 ; Dispatch table for QuickDraw caching
|
|
vFontScaler DS.L 1 ; Dispatch table for QuickDraw caching
|
|
bitmapHand DS.L 1 ; Bitmap Handle - Number 5 in Font Scaler
|
|
bitmapZone DS.L 1 ; Zone the bitmapHand is allocated in <5>
|
|
cacheListHandle DS.L 1 ; List of Cache Handles
|
|
cacheHand DS.L 1 ; Handle to cache hand
|
|
cacheZone DS.L 1 ; zone the cache lives in
|
|
cachePlace DS.W 1 ; zone the cache lives in
|
|
fontCount DS.W 1 ; Set to Zero on increment each time a new cache exists
|
|
curAppZone DS.L 1 ; current application zone
|
|
sysFull DS.B 1 ; system is full
|
|
appFull DS.B 1 ; app is full
|
|
useHeap DS.B 1 ; which heap to use
|
|
mfExists DS.B 1 ; flags whether multiFinder exists
|
|
glyphID DS.W 1 ; last glyph id
|
|
is32Bit DS.B 1 ; does 32bit QD exist
|
|
squashed DS.B 1 ; are we squashing the cache
|
|
strikeID DS.W 1 ; check if still same sfnt
|
|
ptSize DS.W 1 ; Check Point Size the same
|
|
device DS.W 1 ; check Device resolution the same
|
|
face DS.W 1 ; check Face the same
|
|
trans00 DS.L 1 ; x trans
|
|
trans11 DS.L 1 ; y trans
|
|
trans10 DS.L 1 ; skew
|
|
tempWidthHand DS.L 1 ; Used temporarily to get printer widths
|
|
vGrowZone DS.L 1 ; vector for growzone patch
|
|
safeCount DS.W 1 ; safe count in case of length overflow
|
|
EXTRAWORD DS.W 1
|
|
; *******FONT SCALER MEMORY*******
|
|
fsWorkHand DS.L 1 ; work area for spline data
|
|
fsWorkZone DS.L 1 ; zone for the work handle <4>
|
|
inPtr DS.L 1 ; pointer to input struct
|
|
outPtr DS.L 1 ; pointer to info struct
|
|
inputOffset DS.L 1 ; Constant memory
|
|
infoOffset DS.L 1 ; Constant memory
|
|
globalOffset0 DS.L 1 ; Constant memory
|
|
globalOffset1 DS.L 1 ; Constant memory
|
|
globalOffset2 DS.L 1 ; Constant memory
|
|
sfntDataOffset3 DS.L 1 ; Variable size memory
|
|
sfntDataOffset4 DS.L 1 ; Variable size memory
|
|
rowArrayOffset6 DS.L 1 ; Variable size memory
|
|
columnArrayOffset7 DS.L 1 ; Variable size memory
|
|
fPartialFontzone DS.L 1 ; zone for partial font fragments
|
|
fFragmentTableCache DS.L 1 ; list of fragment tables
|
|
fLastSwapFontFamilyID DS.W 1 ; FMInput family id passed in at last SwapFont call
|
|
fDiskCacheMap DS.L 1 ; Handle to the disk cache
|
|
fResourceManagerPurgeProcedure DS.L 1 ; address of resource manager purge procedure
|
|
fInPurgeProcedure DS.B 1 ; true if currently in our purge procedure
|
|
fFontCacheExists DS.B 1 ; true if font cache exists.
|
|
lastFontMap ds.w 1 ; Resource map last font was loaded from
|
|
fondCache ds.l 2 ; Cache for candidate FOND list
|
|
splineKeySize equ * ; size for this version
|
|
ENDR
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
|
|
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; GlyphData Struct
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; IF CHANGE in c-def
|
|
; Update this definition
|
|
;
|
|
glyph RECORD 0
|
|
yMin DS.W 1 ; Y min off baseline
|
|
yMax DS.W 1 ; Y max off baseline
|
|
lsb DS.L 1 ; Left side bearing Fixed
|
|
devLSB DS.W 1 ; Device Left side bearing
|
|
adjustTop DS.W 1 ; Adjust this char from ascent
|
|
rError DS.W 1 ; set if Render error occurs
|
|
bitWidth DS.W 1 ; glyph bit width
|
|
byteWidth DS.L 1 ; row bytes of character
|
|
xMin DS.W 1 ; Save xMin and also use to calc xMax
|
|
scan DS.W 1 ; # of scan lines
|
|
wasteBytes DS.W 1 ; not needed for bitmap but needed for scan converter
|
|
glyphID DS.W 1 ; id of glyph
|
|
cacheData DS.L 1 ; Start of destination bits buffer
|
|
ENDR
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; sb_CacheHead
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; IF CHANGE in c-def
|
|
; Update this definition
|
|
;
|
|
cache RECORD 0
|
|
StrikeID DS.W 1 ; id of sfnt
|
|
ptSize DS.W 1 ; point size
|
|
face DS.W 1 ; style of request
|
|
newEntries DS.W 1 ; Number of new entries added
|
|
trans00 DS.L 1 ; x trans
|
|
trans11 DS.L 1 ; y trans
|
|
trans10 DS.L 1 ; skew
|
|
ascent DS.L 1 ;(fixed) Ascent of Font
|
|
descent DS.L 1 ;(fixed) Descent of Font
|
|
widMax DS.L 1 ;(fixed) Maximum Width
|
|
leading DS.L 1 ;(fixed) Leading of Font
|
|
lOverHMax DS.L 1 ;(fixed) Left Over Hang Max
|
|
rOverHMax DS.L 1 ;(fixed) Right Over Hang Max
|
|
yMax DS.L 1 ;(fixed) YMax
|
|
yMin DS.L 1 ;(fixed) YMin
|
|
height DS.W 1 ;(word) Height
|
|
filler DS.W 1 ;(word) Height
|
|
rightItalic DS.L 1 ;(fixed width italic slope)
|
|
leftItalic DS.L 1 ;(fixed width italic slope)
|
|
|
|
fmAscent DS.B 1 ; FMOutput ascent
|
|
fmDescent DS.B 1 ; FMOutput descent
|
|
fmWidmax DS.B 1 ; FMOutput widmax
|
|
fmLeading DS.B 1 ; FMOutput leading
|
|
|
|
addEntryOffset DS.L 1 ; Offset to next spot to add
|
|
bitsCached DS.B 1 ; Set if bitmaps are cached
|
|
squashed DS.B 1 ; set if the cache is squashed
|
|
familyID DS.W 1 ; Family id for international checks
|
|
fEncodingTablePointer DS.L 1 ; pointer to double byte encoding table or nil for single byte scripts
|
|
fScriptNumber DS.W 1 ; script associated with this cache
|
|
fLongPad DS.W 1 ; long align fields
|
|
glyphArray DS.L 1 ; Array of offsets starts here
|
|
ENDR
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; ERROR CODES
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
BITFONT_ERR EQU $8099
|
|
NO_CACHE_ERROR EQU $00C0
|
|
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; SELECTOR MACROS
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; TRAP chummings
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
_SplineMgr OPWORD $A854
|
|
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; Selectors
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
sbIsOutline EQU $0000
|
|
sbKillSomeCaches EQU $0002
|
|
sbRetrieveGlyph EQU $0004
|
|
sbFillWidthTab EQU $0005
|
|
sbSearchForCache EQU $0006
|
|
sbPreFlightFontMem EQU $0007
|
|
sbFlushFonts EQU $000C
|
|
fsLowestPPEM EQU $000e
|
|
selectInitializePartialFonts equ $000F ; <24>
|
|
selectInitializediskCache equ $0010 ; <24>
|
|
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; Macros
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
MACRO
|
|
_sbIsOutline
|
|
IMPORT SplineMgr
|
|
LCLC &OLDOPT
|
|
&OLDOPT SETC &Setting('OPT')
|
|
OPT NONE
|
|
MOVE #sbIsOutline,D0
|
|
OPT &OLDOPT
|
|
_SplineMgr
|
|
ENDM
|
|
|
|
MACRO
|
|
_sbRetrieveGlyph
|
|
IMPORT SplineMgr
|
|
LCLC &OLDOPT
|
|
&OLDOPT SETC &Setting('OPT')
|
|
OPT NONE
|
|
MOVE #sbRetrieveGlyph,D0
|
|
OPT &OLDOPT
|
|
_SplineMgr
|
|
ENDM
|
|
|
|
MACRO
|
|
_sbKillSomeCaches
|
|
IMPORT SplineMgr
|
|
LCLC &OLDOPT
|
|
&OLDOPT SETC &Setting('OPT')
|
|
OPT NONE
|
|
MOVE #sbKillSomeCaches,D0
|
|
OPT &OLDOPT
|
|
_SplineMgr
|
|
ENDM
|
|
|
|
MACRO
|
|
_sbFillWidthTab
|
|
IMPORT SplineMgr
|
|
LCLC &OLDOPT
|
|
&OLDOPT SETC &Setting('OPT')
|
|
OPT NONE
|
|
MOVE #sbFillWidthTab,D0
|
|
OPT &OLDOPT
|
|
_SplineMgr
|
|
ENDM
|
|
|
|
MACRO
|
|
_sbResetWorkSpace
|
|
IMPORT SplineMgr
|
|
LCLC &OLDOPT
|
|
&OLDOPT SETC &Setting('OPT')
|
|
OPT NONE
|
|
MOVE #sbResetWorkSpace,D0
|
|
OPT &OLDOPT
|
|
_SplineMgr
|
|
ENDM
|
|
|
|
MACRO
|
|
_sbInitMemory
|
|
IMPORT SplineMgr
|
|
LCLC &OLDOPT
|
|
&OLDOPT SETC &Setting('OPT')
|
|
OPT NONE
|
|
MOVE #sbInitMemory,D0
|
|
OPT &OLDOPT
|
|
_SplineMgr
|
|
ENDM
|
|
|
|
MACRO
|
|
_sbSetFontState
|
|
IMPORT SplineMgr
|
|
LCLC &OLDOPT
|
|
&OLDOPT SETC &Setting('OPT')
|
|
OPT NONE
|
|
MOVE #sbSetFontState,D0
|
|
OPT &OLDOPT
|
|
_SplineMgr
|
|
ENDM
|
|
|
|
MACRO
|
|
_sbSearchForCache
|
|
IMPORT SplineMgr
|
|
LCLC &OLDOPT
|
|
&OLDOPT SETC &Setting('OPT')
|
|
OPT NONE
|
|
MOVE #sbSearchForCache,D0
|
|
OPT &OLDOPT
|
|
_SplineMgr
|
|
ENDM
|
|
|
|
MACRO
|
|
_sbPreFlightFontMem
|
|
IMPORT SplineMgr
|
|
LCLC &OLDOPT
|
|
&OLDOPT SETC &Setting('OPT')
|
|
OPT NONE
|
|
MOVE #sbPreFlightFontMem,D0
|
|
OPT &OLDOPT
|
|
_SplineMgr
|
|
ENDM
|
|
|
|
MACRO
|
|
_fsLowestPPEM
|
|
IMPORT SplineMgr
|
|
LCLC &OLDOPT
|
|
&OLDOPT SETC &Setting('OPT')
|
|
OPT NONE
|
|
MOVE #fsLowestPPEM,D0
|
|
OPT &OLDOPT
|
|
_SplineMgr
|
|
ENDM
|
|
|
|
MACRO
|
|
_GetStyleBufHand
|
|
IMPORT GetStyleBufHand
|
|
JSR GetStyleBufHand
|
|
ENDM
|
|
|
|
MACRO
|
|
_sbFlushFonts
|
|
IMPORT SplineMgr
|
|
LCLC &OLDOPT
|
|
&OLDOPT SETC &Setting('OPT')
|
|
OPT NONE
|
|
MOVE #sbFlushFonts,D0
|
|
OPT &OLDOPT
|
|
_SplineMgr
|
|
ENDM
|
|
|
|
Macro ; <24>
|
|
_InitializePartialFonts ; <24>
|
|
LCLC &OLDOPT
|
|
&OLDOPT SETC &Setting('OPT')
|
|
OPT NONE
|
|
MOVE #selectInitializePartialFonts,d0 ; <24>
|
|
OPT &OLDOPT
|
|
_SplineMgr ; <24>
|
|
EndM ; <24>
|
|
|
|
Macro ; <24>
|
|
_InitializeDiskCache ; <24>
|
|
LCLC &OLDOPT
|
|
&OLDOPT SETC &Setting('OPT')
|
|
OPT NONE
|
|
MOVE #selectInitializeDiskCache,d0 ; <24>
|
|
OPT &OLDOPT
|
|
_SplineMgr ; <24>
|
|
EndM ; <24>
|
|
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
; SPLINE WIDTH TABLE
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
;WidTabData EQU 0 ;256 fixed point widths
|
|
;WidTabFont EQU 1024 ;(long) font handle used to generate this width table
|
|
;WidthSExtra EQU WidTabFont+4 ;(long) fixed point space extra used for this table
|
|
;WidthStyle EQU WidthSExtra+4 ;(long) fixed point extra due to style, used for this table
|
|
;WidthFID EQU WidthStyle+4 ;(word) font family ID for this table
|
|
;WidthFSize EQU WidthFID+2 ;(word) font size request that generated this table
|
|
;WidthFace EQU WidthFSize+2 ;(word) face request that generated this table
|
|
;WidthDevice EQU WidthFace+2 ;(word) device requested
|
|
WidthScales EQU 1044 ; WidthDevice+2 ;(8 bytes) scale factors requested on input
|
|
;WidthAFID EQU WidthScales+8 ;(word) actual font family ID for this table
|
|
;WidthFHand EQU WidthAFID+2 ;(long) font family handle for this table
|
|
;WidthUsedFam EQU WidthFHand+4 ;(boolean) whether we used fixed point family widths
|
|
;WidthAFace EQU WidthUsedFam+1 ;(byte) actual face produced (may differ for styled fonts)
|
|
;WidthVOutput EQU WidthAFace+1 ;(word) vertical scale output value
|
|
;WidthHOutput EQU WidthVOutput+2 ;(word) horizontal scale output value
|
|
;WidthVFactor EQU WidthHOutput+2 ;(word) vertical scale output value
|
|
;WidthHFactor EQU WidthVFactor+2 ;(word) horizontal scale output value
|
|
;WidthASize EQU WidthHFactor+2 ;(word) actual size of font strike used
|
|
WidthNFNT EQU 1070 ; WidthASize+2 ;(word) high bit set if strike used is NFNT
|
|
WidthStrikeID EQU WidthNFNT+2 ;(word) FONT, NFNT or SFNT resource ID
|
|
WidthHint EQU WidthStrikeID+2 ;(word) index to last used entry in color strike table (unimplemented)
|
|
WidthDevRes EQU WidthHint+2 ;(word) Output Device Resolution
|
|
WidthIsSpline EQU WidthDevRes+2 ;(Boolean) non zero means spline exists
|
|
WidthNotFast EQU WidthIsSpline+1 ;(Boolean) set for the not fast case
|
|
WidthBadFont EQU WidthNotFast+1 ;(Boolean) Corrupted font flag
|
|
WidthLoadSpline EQU WidthBadFont+1 ;(Boolean) load a spline?
|
|
WidthFREEBYTE EQU WidthLoadSpline+1 ;(Boolean)
|
|
WidthTrans00 EQU WidthFREEBYTE+2 ; x trans
|
|
WidthTrans11 EQU WidthTrans00+4 ; y trans
|
|
WidthTrans10 EQU WidthTrans11+4 ; skew
|
|
KeepSplineOnDisk EQU WidthTrans10+4 ; (word) non-zero means don't load the spline into memory.
|
|
WidTabSize EQU KeepSplineOnDisk+2 ;total size of a width table.
|
|
fSplineDirectory EQU WidTabSize ;copy of sfnt directory is appended to end of widthtable
|
|
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
;ÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑÑ
|
|
|
|
FoutCurStyle EQU $9A9 ;post the current style used here.
|
|
NumTables EQU 12
|
|
FMSwapTrap EQU $101 ;the FMSwapFont trap number for _GetTrapAddr
|
|
|
|
WidListSize EQU NumTables*4
|
|
|
|
; FOND format definition
|
|
|
|
FontFamilyRecord Record 0
|
|
FONDFlags ds.w 1 ; Flags word for family
|
|
FONDFamID ds.w 1 ; Family ID number
|
|
FONDFirst ds.w 1 ; First character in font
|
|
FONDLast ds.w 1 ; Last character in font
|
|
FONDAscent ds.w 1 ; Maximum ascent expressed for 1 pt.
|
|
FONDDescent ds.w 1 ; Maximum descent expressed for 1 pt.
|
|
FONDLeading ds.w 1 ; Maximum leading expressed for 1 pt.
|
|
FONDWidMax ds.w 1 ; Maximum width expressed for 1 pt.
|
|
FONDWTabOff ds.l 1 ; Offset to width table
|
|
FONDKernOff ds.l 1 ; Offset to kerning table
|
|
FONDStylOff ds.l 1 ; Offset to style mapping table
|
|
FONDProperty ds.w 12 ; Style property information
|
|
FONDAssoc equ * ; Start of font association table
|
|
EndR
|
|
|
|
FAssocSiz EQU 6 ;size of a font association table entry.
|
|
|
|
; Synthetic strike table structure
|
|
; for each entry:
|
|
|
|
SyntheticStrikeTable Record 0
|
|
synStrike ds.l 1 ; Handle to sythesized strike
|
|
synNFNT ds.w 1 ; High bit set if strike is 'NFNT'
|
|
synID ds.w 1 ; Resource ID of base 'NFNT' or 'FONT'
|
|
synFGColor ds.b 6 ; User requested foreground color
|
|
synBKColor ds.b 6 ; User requested background color
|
|
synEntry equ * ; Size of synthetic strike table entry
|
|
EndR
|
|
|