[squeak-dev] The Trunk: Multilingual-nice.81.mcz
commits at source.squeak.org
commits at source.squeak.org
Sun Jan 10 14:27:16 UTC 2010
Nicolas Cellier uploaded a new version of Multilingual to project The Trunk:
http://source.squeak.org/trunk/Multilingual-nice.81.mcz
==================== Summary ====================
Name: Multilingual-nice.81
Author: nice
Time: 10 January 2010, 3:26:53.142 pm
UUID: 72b8c1aa-fe9e-4e84-a9c9-dab63fd2ef1d
Ancestors: Multilingual-ar.80
Correct a bug in StrikeFont (ascii assigned with a Character rather than its code).
change pattern dest:=dest+(x at 0) into dest:=dest x+x at dest y
=============== Diff against Multilingual-ar.80 ===============
Item was changed:
+ ----- Method: TTCFontSet>>pointSize (in category 'accessing') -----
- ----- Method: TTCFontSet>>pointSize (in category 'as yet unclassified') -----
pointSize
^ fontArray first pixelSize * 72 // 96.
!
Item was changed:
+ ----- Method: TTCFontSet>>isTTCFont (in category 'testing') -----
- ----- Method: TTCFontSet>>isTTCFont (in category 'as yet unclassified') -----
isTTCFont
^true!
Item was changed:
+ ----- Method: TTCFontSet>>familySizeFace (in category 'accessing') -----
- ----- Method: TTCFontSet>>familySizeFace (in category 'as yet unclassified') -----
familySizeFace
^ Array
with: fontArray first name
with: self height
with: 0.
!
Item was changed:
----- Method: StrikeFontSet>>displayMultiString:on:from:to:at:kern:baselineY: (in category 'displaying') -----
displayMultiString: aString on: aBitBlt from: startIndex to: stopIndex at: aPoint kern: kernDelta baselineY: baselineY
| destPoint leftX rightX glyphInfo g destY |
destPoint := aPoint.
glyphInfo := Array new: 5.
startIndex to: stopIndex do: [:charIndex |
self glyphInfoOf: (aString at: charIndex) into: glyphInfo.
g := glyphInfo at:1.
leftX := glyphInfo at:2.
rightX := glyphInfo at:3.
((glyphInfo at:5) ~= aBitBlt lastFont) ifTrue: [
(glyphInfo at:5) installOn: aBitBlt.
].
aBitBlt sourceForm: g.
destY := baselineY - (glyphInfo at:4).
aBitBlt destX: (destPoint x) destY: destY width: (rightX - leftX) height: (self height).
aBitBlt sourceOrigin: leftX @ 0.
aBitBlt copyBits.
+ destPoint := destPoint x + (rightX - leftX + kernDelta) @ destPoint y.
- destPoint := destPoint + (rightX - leftX + kernDelta @ 0).
].
^ destPoint.!
Item was changed:
+ ----- Method: TTCFontDescription>>deepCopy (in category 'copying') -----
- ----- Method: TTCFontDescription>>deepCopy (in category 'as yet unclassified') -----
deepCopy
^ self.
!
Item was changed:
+ ----- Method: TTCFontSet>>familyName (in category 'accessing') -----
- ----- Method: TTCFontSet>>familyName (in category 'as yet unclassified') -----
familyName
^ 'Multi', (fontArray at: 1) familyName.
!
Item was changed:
+ ----- Method: TTCFontSet>>descentKern (in category 'accessing') -----
- ----- Method: TTCFontSet>>descentKern (in category 'as yet unclassified') -----
descentKern
^ 0.
!
Item was changed:
----- Method: StrikeFontSet>>characters:in:displayAt:clippedBy:rule:fillColor:kernDelta:on: (in category 'displaying') -----
characters: anInterval in: sourceString displayAt: aPoint clippedBy: clippingRectangle rule: ruleInteger fillColor: aForm kernDelta: kernDelta on: aBitBlt
"Simple, slow, primitive method for displaying a line of characters.
No wrap-around is provided."
+ ^anInterval inject: aPoint into:
+ [:destPoint :i |
+ | f xTable leftX noFont sourceRect encoding ascii rightX |
- | destPoint |
- destPoint := aPoint.
- anInterval do:
- [:i | | f xTable leftX noFont sourceRect encoding ascii rightX |
encoding := (sourceString at: i) leadingChar + 1.
noFont := false.
+ f := [fontArray at: encoding]
+ on: Exception do: [:ex | nil].
- [f := fontArray at: encoding]
- on: Exception do: [:ex | noFont := true. f := fontArray at: 1].
f ifNil: [noFont := true. f := fontArray at: 1].
+ ascii := (noFont ifTrue: [$?] ifFalse: [sourceString at: i]) charCode.
- ascii := noFont ifTrue: [$?] ifFalse: [(sourceString at: i) charCode].
(ascii < f minAscii
or: [ascii > f maxAscii])
ifTrue: [ascii := f maxAscii].
xTable := f xTable.
leftX := xTable at: ascii + 1.
rightX := xTable at: ascii + 2.
+ sourceRect := leftX @ 0 extent: (rightX - leftX) @ self height.
- sourceRect := leftX at 0 extent: (rightX-leftX) @ self height.
aBitBlt copyFrom: sourceRect in: f glyphs to: destPoint.
+ destPoint x + (rightX - leftX + kernDelta) @ destPoint y.
- destPoint := destPoint + ((rightX-leftX+kernDelta)@0).
- "destPoint printString displayAt: 0@(i*20)."
].
- ^ destPoint.
!
Item was changed:
+ ----- Method: TTCFontSet>>depth (in category 'accessing') -----
- ----- Method: TTCFontSet>>depth (in category 'as yet unclassified') -----
depth
^ (fontArray at: 1) depth.
!
Item was changed:
+ ----- Method: TTCFontSet>>emphasis (in category 'accessing') -----
- ----- Method: TTCFontSet>>emphasis (in category 'as yet unclassified') -----
emphasis
^ fontArray first emphasis!
Item was changed:
+ ----- Method: SparseXTable>>tableFor: (in category 'accessing') -----
- ----- Method: SparseXTable>>tableFor: (in category 'as yet unclassified') -----
tableFor: code
+ | div |
- | div t |
div := code // 65536.
+ ^xTables at: div ifAbsent: [
- t := xTables at: div ifAbsent: [
| table |
table := Array new: 65536 withAll: 0.
xTables at: div put: table.
table].
- ^ t.
!
Item was changed:
+ ----- Method: TTCFontDescription>>objectForDataStream: (in category 'objects from disk') -----
- ----- Method: TTCFontDescription>>objectForDataStream: (in category 'as yet unclassified') -----
objectForDataStream: refStrm
| dp |
"I am about to be written on an object file. Write a reference to a known Font in the other system instead. "
"A path to me"
(TextConstants at: #forceFontWriting ifAbsent: [false]) ifTrue: [^ self].
"special case for saving the default fonts on the disk. See collectionFromFileNamed:"
dp := DiskProxy global: #TTCFontDescription selector: #descriptionNamed:at:
args: {self name. ((TTCFontDescription descriptionNamed: self name) indexOf: self)}.
refStrm replace: self with: dp.
^ dp.
!
Item was changed:
+ ----- Method: TTCFontSet>>pointSizes (in category 'accessing') -----
- ----- Method: TTCFontSet>>pointSizes (in category 'as yet unclassified') -----
pointSizes
^ self class pointSizes.
!
Item was changed:
+ ----- Method: TTCFontSet>>textStyle (in category 'accessing') -----
- ----- Method: TTCFontSet>>textStyle (in category 'as yet unclassified') -----
textStyle
^ TextStyle actualTextStyles
detect: [:aStyle | (aStyle fontArray collect: [:s | s name]) includes: self name]
ifNone: [].
!
Item was changed:
+ ----- Method: TTCFontSet>>widthOf: (in category 'measuring') -----
- ----- Method: TTCFontSet>>widthOf: (in category 'as yet unclassified') -----
widthOf: aCharacter
| encoding |
encoding := aCharacter leadingChar.
^ (fontArray at: encoding + 1) widthOf: aCharacter.
!
Item was changed:
+ ----- Method: TTCFontSet>>glyphInfoOf:into: (in category 'private') -----
- ----- Method: TTCFontSet>>glyphInfoOf:into: (in category 'as yet unclassified') -----
glyphInfoOf: aCharacter into: glyphInfoArray
| index f code |
index := aCharacter leadingChar + 1.
fontArray size < index ifTrue: [^ self questionGlyphInfoInto: glyphInfoArray].
(f := fontArray at: index) ifNil: [^ self questionGlyphInfoInto: glyphInfoArray].
code := aCharacter charCode.
((code between: f minAscii and: f maxAscii) not) ifTrue: [
^ self questionGlyphInfoInto: glyphInfoArray.
].
f glyphInfoOf: aCharacter into: glyphInfoArray.
glyphInfoArray at: 5 put: self.
^ glyphInfoArray.
!
Item was changed:
+ ----- Method: TTCFontDescription>>at: (in category 'accessing') -----
- ----- Method: TTCFontDescription>>at: (in category 'as yet unclassified') -----
at: aCharOrInteger
| char |
char := aCharOrInteger asCharacter.
^ glyphs at: (char charCode) + 1.
!
Item was changed:
+ ----- Method: TTCFontSet>>isFontSet (in category 'testing') -----
- ----- Method: TTCFontSet>>isFontSet (in category 'as yet unclassified') -----
isFontSet
^ true.
!
Item was changed:
+ ----- Method: TTCFontSet>>height (in category 'accessing') -----
- ----- Method: TTCFontSet>>height (in category 'as yet unclassified') -----
height
^fontArray first pixelSize.
!
Item was changed:
+ ----- Method: TTCFontSet>>lineGrid (in category 'accessing') -----
- ----- Method: TTCFontSet>>lineGrid (in category 'as yet unclassified') -----
lineGrid
^ fontArray first lineGrid.
!
Item was changed:
+ ----- Method: TTCFontSet>>displayString:on:from:to:at:kern:baselineY: (in category 'displaying') -----
- ----- Method: TTCFontSet>>displayString:on:from:to:at:kern:baselineY: (in category 'as yet unclassified') -----
displayString: aString on: aBitBlt from: startIndex to: stopIndex at: aPoint kern: kernDelta baselineY: baselineY
| destPoint font form encoding glyphInfo char charCode destY |
destPoint := aPoint.
glyphInfo := Array new: 5.
startIndex to: stopIndex do: [:charIndex |
char := aString at: charIndex.
encoding := char leadingChar + 1.
charCode := char charCode.
font := fontArray at: encoding.
((charCode between: font minAscii and: font maxAscii) not) ifTrue: [
charCode := font maxAscii].
self glyphInfoOf: char into: glyphInfo.
form := glyphInfo first.
(glyphInfo fifth ~= aBitBlt lastFont) ifTrue: [
glyphInfo fifth installOn: aBitBlt.
].
destY := baselineY - glyphInfo fourth.
+ aBitBlt
+ sourceForm: form;
+ destX: destPoint x;
+ destY: destY;
+ sourceOrigin: 0 @ 0;
+ width: form width;
+ height: form height;
+ copyBits.
+ destPoint := destPoint x + (form width + kernDelta) @ destPoint y.
- aBitBlt sourceForm: form.
- aBitBlt destX: destPoint x.
- aBitBlt destY: destY.
- aBitBlt sourceOrigin: 0 @ 0.
- aBitBlt width: form width.
- aBitBlt height: form height.
- aBitBlt copyBits.
- destPoint := destPoint + (form width + kernDelta @ 0).
].
^ destPoint.
!
Item was changed:
+ ----- Method: TTCFontSet>>questionGlyphInfoInto: (in category 'private') -----
- ----- Method: TTCFontSet>>questionGlyphInfoInto: (in category 'as yet unclassified') -----
questionGlyphInfoInto: glyphInfoArray
| f form |
f := fontArray at: 1.
form := f formOf: $?.
glyphInfoArray at: 1 put: form;
at: 2 put: 0;
at: 3 put: form width;
at: 4 put: self.
^ glyphInfoArray.
!
Item was changed:
+ ----- Method: TTCFontDescription>>name (in category 'accessing') -----
- ----- Method: TTCFontDescription>>name (in category 'as yet unclassified') -----
name
^ self familyName copyWithout: Character space.
!
Item was changed:
+ ----- Method: TTCFontSet>>ascent (in category 'accessing') -----
- ----- Method: TTCFontSet>>ascent (in category 'as yet unclassified') -----
ascent
^ (fontArray at: 1) ascent.
!
Item was changed:
+ ----- Method: TTCFontDescription>>size (in category 'accessing') -----
- ----- Method: TTCFontDescription>>size (in category 'as yet unclassified') -----
size
^ glyphs size.
!
Item was changed:
+ ----- Method: TTCFontSet>>descent (in category 'accessing') -----
- ----- Method: TTCFontSet>>descent (in category 'as yet unclassified') -----
descent
^ (fontArray at: 1) descent.
!
Item was changed:
+ ----- Method: TTCFontSet>>baseKern (in category 'accessing') -----
- ----- Method: TTCFontSet>>baseKern (in category 'as yet unclassified') -----
baseKern
^ 0.
!
Item was changed:
+ ----- Method: TTCFontSet>>fontArray (in category 'accessing') -----
- ----- Method: TTCFontSet>>fontArray (in category 'as yet unclassified') -----
fontArray
^ fontArray
!
Item was changed:
+ ----- Method: TTCFontSet>>emphasized: (in category 'accessing') -----
- ----- Method: TTCFontSet>>emphasized: (in category 'as yet unclassified') -----
emphasized: code
!
Item was changed:
+ ----- Method: TTCFontSet>>descentOf: (in category 'accessing') -----
- ----- Method: TTCFontSet>>descentOf: (in category 'as yet unclassified') -----
descentOf: aChar
^ fontArray first descentOf: aChar
!
Item was changed:
+ ----- Method: TTCFontSet>>ascentOf: (in category 'accessing') -----
- ----- Method: TTCFontSet>>ascentOf: (in category 'as yet unclassified') -----
ascentOf: aCharacter
^ fontArray first ascentOf: aCharacter.
!
Item was changed:
----- Method: StrikeFontSet>>displayString:on:from:to:at:kern:from:baselineY: (in category 'displaying') -----
displayString: aString on: aBitBlt from: startIndex to: stopIndex at: aPoint kern: kernDelta from: fromFont baselineY: baselineY
| destPoint leftX rightX glyphInfo g tag char destY |
destPoint := aPoint.
rIndex := startIndex.
tag := (aString at: rIndex) leadingChar.
glyphInfo := Array new: 5.
[rIndex <= stopIndex] whileTrue: [
char := aString at: rIndex.
((fromFont hasGlyphOf: char) or: [char leadingChar ~= tag]) ifTrue: [^destPoint].
self glyphInfoOf: char into: glyphInfo.
g := glyphInfo first.
leftX := glyphInfo second.
rightX := glyphInfo third.
(glyphInfo fifth ~= aBitBlt lastFont) ifTrue: [
glyphInfo fifth installOn: aBitBlt.
].
- aBitBlt sourceForm: g.
destY := baselineY - glyphInfo fourth.
+ aBitBlt
+ sourceForm: g;
+ destX: destPoint x;
+ destY: destY;
+ sourceOrigin: leftX @ 0;
+ width: rightX - leftX;
+ height: self height;
+ copyBits.
+ destPoint := destPoint x + (rightX - leftX + kernDelta) @ destPoint y.
- aBitBlt destX: destPoint x.
- aBitBlt destY: destY.
- aBitBlt sourceOrigin: leftX @ 0.
- aBitBlt width: rightX - leftX.
- aBitBlt height: self height.
- aBitBlt copyBits.
- destPoint := destPoint + (rightX - leftX + kernDelta @ 0).
rIndex := rIndex + 1.
].
^destPoint.
!
Item was changed:
+ ----- Method: TTCFontSet>>displayString:on:from:to:at:kern: (in category 'displaying') -----
- ----- Method: TTCFontSet>>displayString:on:from:to:at:kern: (in category 'as yet unclassified') -----
displayString: aString on: aBitBlt from: startIndex to: stopIndex at: aPoint kern: kernDelta
^ self displayString: aString on: aBitBlt from: startIndex to: stopIndex at: aPoint kern: kernDelta baselineY: aPoint y + self ascent.
!
Item was changed:
----- Method: StrikeFontSet>>displayStringR2L:on:from:to:at:kern: (in category 'displaying') -----
displayStringR2L: aString on: aBitBlt from: startIndex to: stopIndex at: aPoint kern: kernDelta
| destPoint font |
destPoint := aPoint.
startIndex to: stopIndex do: [:charIndex |
| encoding ascii xTable leftX rightX |
encoding := (aString at: charIndex) leadingChar + 1.
ascii := (aString at: charIndex) charCode.
font := fontArray at: encoding.
((ascii between: font minAscii and: font maxAscii) not) ifTrue: [
ascii := font maxAscii].
xTable := font xTable.
leftX := xTable at: ascii + 1.
rightX := xTable at: ascii + 2.
+ aBitBlt
+ sourceForm: font glyphs;
+ destX: destPoint x - (rightX - leftX);
+ destY: destPoint y;
+ sourceOrigin: leftX @ 0;
+ width: rightX - leftX;
+ height: self height;
+ copyBits.
+ destPoint := destPoint x - (rightX - leftX + kernDelta) @ destPoint y.
- aBitBlt sourceForm: font glyphs.
- aBitBlt destX: destPoint x - (rightX - leftX).
- aBitBlt destY: destPoint y.
- aBitBlt sourceOrigin: leftX @ 0.
- aBitBlt width: rightX - leftX.
- aBitBlt height: self height.
- aBitBlt copyBits.
- destPoint := destPoint - (rightX - leftX + kernDelta @ 0).
].
!
Item was changed:
+ ----- Method: TTCFontDescription>>veryDeepCopyWith: (in category 'copying') -----
- ----- Method: TTCFontDescription>>veryDeepCopyWith: (in category 'as yet unclassified') -----
veryDeepCopyWith: deepCopier
"Return self. I am shared. Do not record me."
!
Item was changed:
+ ----- Method: TTCFontSet>>displayStringR2L:on:from:to:at:kern: (in category 'displaying') -----
- ----- Method: TTCFontSet>>displayStringR2L:on:from:to:at:kern: (in category 'as yet unclassified') -----
displayStringR2L: aString on: aBitBlt from: startIndex to: stopIndex at: aPoint kern: kernDelta
| destPoint font form encoding char charCode glyphInfo |
destPoint := aPoint.
glyphInfo := Array new: 5.
startIndex to: stopIndex do: [:charIndex |
char := aString at: charIndex.
encoding := char leadingChar + 1.
charCode := char charCode.
font := fontArray at: encoding.
((charCode between: font minAscii and: font maxAscii) not) ifTrue: [
charCode := font maxAscii].
self glyphInfoOf: char into: glyphInfo.
form := glyphInfo first.
(glyphInfo size > 4 and: [glyphInfo fifth notNil and: [glyphInfo fifth ~= aBitBlt lastFont]]) ifTrue: [
glyphInfo fifth installOn: aBitBlt.
].
+ aBitBlt
+ sourceForm: form;
+ destX: destPoint x - form width;
+ destY: destPoint y;
+ sourceOrigin: 0 @ 0;
+ width: form width;
+ height: form height;
+ copyBits.
+ destPoint := destPoint x - (form width + kernDelta) @ destPoint y.
- aBitBlt sourceForm: form.
- aBitBlt destX: destPoint x - form width.
- aBitBlt destY: destPoint y.
- aBitBlt sourceOrigin: 0 @ 0.
- aBitBlt width: form width.
- aBitBlt height: form height.
- aBitBlt copyBits.
- destPoint := destPoint - (form width + kernDelta @ 0).
].
!
Item was changed:
+ ----- Method: TTCFont>>setupDefaultFallbackFont (in category 'emphasis') -----
- ----- Method: TTCFont>>setupDefaultFallbackFont (in category 'as yet unclassified') -----
setupDefaultFallbackFont
| fonts f |
fonts := TextStyle default fontArray.
f := fonts first.
1 to: fonts size do: [:i |
self height > (fonts at: i) height ifTrue: [f := fonts at: i].
].
(f == self)
ifFalse:[ self fallbackFont: f ].
self reset.
!
Item was changed:
+ ----- Method: TTCFontSet>>maxAsciiFor: (in category 'accessing') -----
- ----- Method: TTCFontSet>>maxAsciiFor: (in category 'as yet unclassified') -----
maxAsciiFor: encoding
| f |
f := (fontArray at: encoding+1).
f ifNotNil: [^ f maxAscii].
^ 0.
!
More information about the Squeak-dev
mailing list
|