[etoys-dev] Etoys: TrueType-Richo.3.mcz

commits at source.squeak.org commits at source.squeak.org
Sun May 30 18:46:05 EDT 2010


Ricardo Moran uploaded a new version of TrueType to project Etoys:
http://source.squeak.org/etoys/TrueType-Richo.3.mcz

==================== Summary ====================

Name: TrueType-Richo.3
Author: Richo
Time: 30 May 2010, 5:11:08 pm
UUID: 87c0ca6c-4fa5-5e45-85e5-aaf9937d2a07
Ancestors: TrueType-Richo.2

* Integrating true type font support by Andreas Raab.

=============== Diff against TrueType-Richo.2 ===============

Item was changed:
  ----- Method: TTFileDescription>>on:offset: (in category 'initialize') -----
  on: aFileName offset: fontOffset
  	"Initialize the receiver from a file name"
  	fileName := aFileName.
  	fileOffset := fontOffset.
  	self withFileDo:[:fontFile|
+ 		"Some bitmap fonts are called .ttf; skip anything that doesn't have a header"
+ 		(self findTable: 'head' in: fontFile) ifFalse:[^nil].
- 		(self findTable: 'head' in: fontFile) 
- 			ifFalse:[^self error: 'File does not have a header table'].
  		self processFontHeaderTable: fontFile.
  		(self findTable: 'maxp' in: fontFile) 
  			ifFalse:[^self error: 'File does not have a profile table'].
  		self processMaximumProfileTable: fontFile.
  		(self findTable: 'name' in: fontFile) 
  			ifFalse:[^self error: 'File does not have a naming table'].
  		self processNamingTable: fontFile.
  		(self findTable: 'hhea' in: fontFile) 
  			ifFalse:[^self error: 'File does not have a horizontal header table'].
  		self processHorizontalHeaderTable: fontFile.
  		(self findTable: 'hmtx' in: fontFile) 
  			ifFalse:[^self error: 'File does not have a horizontal header table'].
  		hmtxTableOffset := fontFile position.
  		(self findTable: 'loca' in: fontFile) 
  			ifFalse:[^self error: 'File does not have a naming table'].
  		indexToLocOffset := fontFile position.
  		(self findTable: 'glyf' in: fontFile) 
  			ifFalse:[^self error: 'File does not have a naming table'].
  		glyphTableOffset := fontFile position.
  		(self findTable: 'cmap' in: fontFile) 
  			ifFalse:[^self error: 'File does not have a header table'].
  		self processCharacterMappingTable: fontFile.
  	].!

Item was changed:
  ----- Method: TTFileDescription class>>fontOffsetsInFile: (in category 'instance creation') -----
  fontOffsetsInFile: file
  	"Answer a collection of font offsets in the given file"
  	| tag version nFonts |
  	file position: 0.
  	tag := file next: 4.
  	tag caseOf:{
+ 		['true' asByteArray] -> ["Version 1.0 TTF file"
+ 			"http://developer.apple.com/textfonts/TTRefMan/RM06/Chap6.html
+ 			The values 'true' (0x74727565) and 0x00010000 are recognized by the Mac OS 
+ 			as referring to TrueType fonts."
+ 			^Array with: 0 "only one font"
+ 		].
  		[#(0 1 0 0) asByteArray] -> ["Version 1.0 TTF file"
  			^Array with: 0 "only one font"
  		].
  		['ttcf' asByteArray]	-> ["TTC file"
  			version := file next: 4.
  			version = #(0 1 0 0) asByteArray ifFalse:[^self error: 'Unsupported TTC version'].
  			nFonts := file nextNumber: 4.
  			^(1 to: nFonts) collect:[:i| file nextNumber: 4].
  		].
  	} otherwise:[
  		self error: 'This is not a valid Truetype file'.
  	].!

Item was changed:
  ----- Method: TTFileDescription class>>readFontsFrom: (in category 'instance creation') -----
  readFontsFrom: aFilename
  	"Reads and returns all the fonts in the given file"
  	"
  		TTFileDescription readFontsFrom: 'batang.ttc'.
  	"
  	^self openFontFile: aFilename do:[:file|
  		(self fontOffsetsInFile: file)
+ 			collect:[:offset| self new on: aFilename offset: offset]
+ 			thenSelect:[:font| font notNil]].
- 			collect:[:offset| self new on: aFilename offset: offset]].
  	!



More information about the etoys-dev mailing list