FontDescription.st
author Claus Gittinger <cg@exept.de>
Sat, 11 Nov 1995 16:54:10 +0100
changeset 219 9ff0660f447f
parent 153 c56277fa4865
child 229 099543e5d779
permissions -rw-r--r--
uff - version methods changed to return stings
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
52
edf02eb2939c Initial revision
claus
parents:
diff changeset
     1
"
edf02eb2939c Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1994 by Claus Gittinger
89
ea2bf46eb669 *** empty log message ***
claus
parents: 52
diff changeset
     3
	      All Rights Reserved
52
edf02eb2939c Initial revision
claus
parents:
diff changeset
     4
edf02eb2939c Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
edf02eb2939c Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
edf02eb2939c Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
edf02eb2939c Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
edf02eb2939c Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
edf02eb2939c Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
edf02eb2939c Initial revision
claus
parents:
diff changeset
    11
"
edf02eb2939c Initial revision
claus
parents:
diff changeset
    12
edf02eb2939c Initial revision
claus
parents:
diff changeset
    13
Object subclass:#FontDescription
edf02eb2939c Initial revision
claus
parents:
diff changeset
    14
       instanceVariableNames:'family face style size encoding'
edf02eb2939c Initial revision
claus
parents:
diff changeset
    15
       classVariableNames:''
edf02eb2939c Initial revision
claus
parents:
diff changeset
    16
       poolDictionaries:''
edf02eb2939c Initial revision
claus
parents:
diff changeset
    17
       category:'Graphics-Support'
edf02eb2939c Initial revision
claus
parents:
diff changeset
    18
!
edf02eb2939c Initial revision
claus
parents:
diff changeset
    19
edf02eb2939c Initial revision
claus
parents:
diff changeset
    20
!FontDescription class methodsFor:'documentation'!
edf02eb2939c Initial revision
claus
parents:
diff changeset
    21
edf02eb2939c Initial revision
claus
parents:
diff changeset
    22
copyright
edf02eb2939c Initial revision
claus
parents:
diff changeset
    23
"
edf02eb2939c Initial revision
claus
parents:
diff changeset
    24
 COPYRIGHT (c) 1994 by Claus Gittinger
89
ea2bf46eb669 *** empty log message ***
claus
parents: 52
diff changeset
    25
	      All Rights Reserved
52
edf02eb2939c Initial revision
claus
parents:
diff changeset
    26
edf02eb2939c Initial revision
claus
parents:
diff changeset
    27
 This software is furnished under a license and may be used
edf02eb2939c Initial revision
claus
parents:
diff changeset
    28
 only in accordance with the terms of that license and with the
edf02eb2939c Initial revision
claus
parents:
diff changeset
    29
 inclusion of the above copyright notice.   This software may not
edf02eb2939c Initial revision
claus
parents:
diff changeset
    30
 be provided or otherwise made available to, or used by, any
edf02eb2939c Initial revision
claus
parents:
diff changeset
    31
 other person.  No title to or ownership of the software is
edf02eb2939c Initial revision
claus
parents:
diff changeset
    32
 hereby transferred.
edf02eb2939c Initial revision
claus
parents:
diff changeset
    33
"
edf02eb2939c Initial revision
claus
parents:
diff changeset
    34
!
edf02eb2939c Initial revision
claus
parents:
diff changeset
    35
edf02eb2939c Initial revision
claus
parents:
diff changeset
    36
version
219
9ff0660f447f uff - version methods changed to return stings
Claus Gittinger <cg@exept.de>
parents: 153
diff changeset
    37
    ^ '$Header: /cvs/stx/stx/libview/FontDescription.st,v 1.5 1995-11-11 15:50:20 cg Exp $'
52
edf02eb2939c Initial revision
claus
parents:
diff changeset
    38
!
edf02eb2939c Initial revision
claus
parents:
diff changeset
    39
edf02eb2939c Initial revision
claus
parents:
diff changeset
    40
documentation
edf02eb2939c Initial revision
claus
parents:
diff changeset
    41
"
edf02eb2939c Initial revision
claus
parents:
diff changeset
    42
    FontDescription is just a place-holder for scanned font names.
edf02eb2939c Initial revision
claus
parents:
diff changeset
    43
edf02eb2939c Initial revision
claus
parents:
diff changeset
    44
    Instance variables:
edf02eb2939c Initial revision
claus
parents:
diff changeset
    45
edf02eb2939c Initial revision
claus
parents:
diff changeset
    46
    family          <String>        the fonts family ('courier', 'helvetica' etc)
edf02eb2939c Initial revision
claus
parents:
diff changeset
    47
    face            <String>        the fonts face ('bold', 'medium' etc)
edf02eb2939c Initial revision
claus
parents:
diff changeset
    48
    style           <String>        the fonts style ('roman', 'italic', 'oblique')
edf02eb2939c Initial revision
claus
parents:
diff changeset
    49
    size            <String>        the fonts size (not in pixels) 
edf02eb2939c Initial revision
claus
parents:
diff changeset
    50
    encoding        <Symbol>        the fonts encoding (usually #iso8859)
edf02eb2939c Initial revision
claus
parents:
diff changeset
    51
"
edf02eb2939c Initial revision
claus
parents:
diff changeset
    52
! !
edf02eb2939c Initial revision
claus
parents:
diff changeset
    53
edf02eb2939c Initial revision
claus
parents:
diff changeset
    54
!FontDescription class methodsFor:'instance creation'!
edf02eb2939c Initial revision
claus
parents:
diff changeset
    55
153
claus
parents: 109
diff changeset
    56
name:aFontName
claus
parents: 109
diff changeset
    57
    "returns a font with the given explicit name.
claus
parents: 109
diff changeset
    58
     You shuld not use explicit naming, since font names vary
claus
parents: 109
diff changeset
    59
     with operatingSystems, devices and architecture.
claus
parents: 109
diff changeset
    60
     This interface is provided for special purposes only.
claus
parents: 109
diff changeset
    61
     On X, the name given should be according the X fontname conventions;
claus
parents: 109
diff changeset
    62
     i.e. something like: '-*-times-bold-r-normal-*-*-240-*-*-*-*-iso8859-1'."
claus
parents: 109
diff changeset
    63
claus
parents: 109
diff changeset
    64
    ^ self family:aFontName 
claus
parents: 109
diff changeset
    65
	   face:nil
claus
parents: 109
diff changeset
    66
	   style:nil
claus
parents: 109
diff changeset
    67
	   size:nil 
claus
parents: 109
diff changeset
    68
	   encoding:nil
claus
parents: 109
diff changeset
    69
claus
parents: 109
diff changeset
    70
    "
claus
parents: 109
diff changeset
    71
     Font name:'-*-times-bold-r-normal-*-*-240-*-*-*-*-iso8859-1'
claus
parents: 109
diff changeset
    72
    "
claus
parents: 109
diff changeset
    73
!
claus
parents: 109
diff changeset
    74
claus
parents: 109
diff changeset
    75
family:familyString
claus
parents: 109
diff changeset
    76
    "returns a font for given family and default (12pt) size 
claus
parents: 109
diff changeset
    77
     with unspecified encoding.
claus
parents: 109
diff changeset
    78
     Face is taken as medium, style as roman.
claus
parents: 109
diff changeset
    79
     The returned font is not associated to a specific device"
claus
parents: 109
diff changeset
    80
claus
parents: 109
diff changeset
    81
    ^ self family:familyString
claus
parents: 109
diff changeset
    82
	   face:'medium' 
claus
parents: 109
diff changeset
    83
	   style:'roman' 
claus
parents: 109
diff changeset
    84
	   size:12 
claus
parents: 109
diff changeset
    85
	   encoding:nil
claus
parents: 109
diff changeset
    86
claus
parents: 109
diff changeset
    87
    "
claus
parents: 109
diff changeset
    88
     Font family:'helvetica'
claus
parents: 109
diff changeset
    89
     Font family:'courier'
claus
parents: 109
diff changeset
    90
    "
claus
parents: 109
diff changeset
    91
!
claus
parents: 109
diff changeset
    92
109
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
    93
family:familyString size:sizeNum
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
    94
    "returns a font for given family and size with unspecified encoding.
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
    95
     Face is taken as medium, style as roman.
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
    96
     The returned font is not associated to a specific device"
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
    97
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
    98
    ^ self family:familyString
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
    99
	   face:'medium' 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   100
	   style:'roman' 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   101
	   size:sizeNum
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   102
	   encoding:nil
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   103
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   104
    "
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   105
     Font family:'helvetica' size:10
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   106
     Font family:'courier' size:10
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   107
    "
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   108
!
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   109
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   110
family:familyString face:faceString size:sizeNum
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   111
    "returns a font for given family and size with unspecified encoding.
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   112
     Style is taken as roman.
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   113
     The returned font is not associated to a specific device"
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   114
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   115
    ^ self family:familyString
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   116
	   face:faceString 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   117
	   style:'roman' 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   118
	   size:sizeNum
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   119
	   encoding:nil
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   120
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   121
    "
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   122
     Font family:'helvetica' face:'medium' size:10
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   123
     Font family:'helvetica' face:'bold' size:10
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   124
     Font family:'courier'   face:'bold' size:10
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   125
    "
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   126
!
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   127
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   128
family:familyString face:faceString style:styleString size:sizeNum
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   129
    "returns a font for given family, face, style and size with
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   130
     unspecified encoding. 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   131
     The returned font is not associated to a specific device"
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   132
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   133
    ^ self family:familyString
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   134
	   face:faceString
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   135
	   style:styleString
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   136
	   size:sizeNum
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   137
	   encoding:nil
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   138
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   139
    "
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   140
     Font family:'helvetica' face:'medium' style:'roman'  size:10
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   141
     Font family:'helvetica' face:'medium' style:'italic' size:10
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   142
     Font family:'helvetica' face:'bold'   style:'roman'  size:10
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   143
     Font family:'courier'   face:'bold'   style:'italic' size:10
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   144
    "
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   145
!
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   146
52
edf02eb2939c Initial revision
claus
parents:
diff changeset
   147
family:familyString face:faceString style:styleString size:sizeNum encoding:encodingSym
edf02eb2939c Initial revision
claus
parents:
diff changeset
   148
    ^ self new
109
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   149
	  family:familyString 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   150
	  face:faceString 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   151
	  style:styleString 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   152
	  size:sizeNum 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   153
	  encoding:encodingSym
52
edf02eb2939c Initial revision
claus
parents:
diff changeset
   154
! !
edf02eb2939c Initial revision
claus
parents:
diff changeset
   155
edf02eb2939c Initial revision
claus
parents:
diff changeset
   156
!FontDescription methodsFor:'accessing'!
edf02eb2939c Initial revision
claus
parents:
diff changeset
   157
89
ea2bf46eb669 *** empty log message ***
claus
parents: 52
diff changeset
   158
family:familyString face:faceString style:styleString size:sizeNum encoding:encodingString
ea2bf46eb669 *** empty log message ***
claus
parents: 52
diff changeset
   159
    family := familyString asSymbol.
ea2bf46eb669 *** empty log message ***
claus
parents: 52
diff changeset
   160
    faceString notNil ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 52
diff changeset
   161
	face := faceString asSymbol.
ea2bf46eb669 *** empty log message ***
claus
parents: 52
diff changeset
   162
    ].
ea2bf46eb669 *** empty log message ***
claus
parents: 52
diff changeset
   163
    styleString notNil ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 52
diff changeset
   164
	style := styleString asSymbol.
ea2bf46eb669 *** empty log message ***
claus
parents: 52
diff changeset
   165
    ].
52
edf02eb2939c Initial revision
claus
parents:
diff changeset
   166
    size := sizeNum.
89
ea2bf46eb669 *** empty log message ***
claus
parents: 52
diff changeset
   167
    encodingString notNil ifTrue:[
ea2bf46eb669 *** empty log message ***
claus
parents: 52
diff changeset
   168
	encoding := encodingString asSymbol.
ea2bf46eb669 *** empty log message ***
claus
parents: 52
diff changeset
   169
    ]
52
edf02eb2939c Initial revision
claus
parents:
diff changeset
   170
!
edf02eb2939c Initial revision
claus
parents:
diff changeset
   171
edf02eb2939c Initial revision
claus
parents:
diff changeset
   172
family
edf02eb2939c Initial revision
claus
parents:
diff changeset
   173
    "return the family, a string"
edf02eb2939c Initial revision
claus
parents:
diff changeset
   174
edf02eb2939c Initial revision
claus
parents:
diff changeset
   175
    ^ family
edf02eb2939c Initial revision
claus
parents:
diff changeset
   176
!
edf02eb2939c Initial revision
claus
parents:
diff changeset
   177
edf02eb2939c Initial revision
claus
parents:
diff changeset
   178
face
edf02eb2939c Initial revision
claus
parents:
diff changeset
   179
    "return the face, a string"
edf02eb2939c Initial revision
claus
parents:
diff changeset
   180
edf02eb2939c Initial revision
claus
parents:
diff changeset
   181
    ^ face
edf02eb2939c Initial revision
claus
parents:
diff changeset
   182
!
edf02eb2939c Initial revision
claus
parents:
diff changeset
   183
edf02eb2939c Initial revision
claus
parents:
diff changeset
   184
style
edf02eb2939c Initial revision
claus
parents:
diff changeset
   185
    "return the style, a string"
edf02eb2939c Initial revision
claus
parents:
diff changeset
   186
edf02eb2939c Initial revision
claus
parents:
diff changeset
   187
    ^ style
edf02eb2939c Initial revision
claus
parents:
diff changeset
   188
!
edf02eb2939c Initial revision
claus
parents:
diff changeset
   189
edf02eb2939c Initial revision
claus
parents:
diff changeset
   190
size
edf02eb2939c Initial revision
claus
parents:
diff changeset
   191
    "return the size, a number"
edf02eb2939c Initial revision
claus
parents:
diff changeset
   192
edf02eb2939c Initial revision
claus
parents:
diff changeset
   193
    ^ size
edf02eb2939c Initial revision
claus
parents:
diff changeset
   194
!
edf02eb2939c Initial revision
claus
parents:
diff changeset
   195
edf02eb2939c Initial revision
claus
parents:
diff changeset
   196
encoding
edf02eb2939c Initial revision
claus
parents:
diff changeset
   197
    "return the encoding, a symbol such as #iso8859"
edf02eb2939c Initial revision
claus
parents:
diff changeset
   198
edf02eb2939c Initial revision
claus
parents:
diff changeset
   199
    ^ encoding
edf02eb2939c Initial revision
claus
parents:
diff changeset
   200
! !
109
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   201
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   202
!FontDescription methodsFor:'queries'!
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   203
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   204
species
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   205
    ^ Font
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   206
!
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   207
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   208
serif
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   209
    "return true, if this font has serifs"
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   210
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   211
    "this should be done in a better way ..."
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   212
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   213
    family = 'Times' ifTrue:[^ true].
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   214
    family = 'times' ifTrue:[^ true].
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   215
    ^ false.
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   216
!
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   217
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   218
italic
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   219
    "return true if this is an italic font -
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   220
     for st-80 compatibility"
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   221
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   222
    face = 'italic' ifTrue:[^ true].
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   223
    face = 'obligue' ifTrue:[^ true].
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   224
    ^ false
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   225
!
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   226
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   227
bold
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   228
    "return true, if the receiver is a bold font -
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   229
     for st-80 compatibility"
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   230
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   231
    ^ face = 'bold' 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   232
!
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   233
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   234
boldness
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   235
    "return the boldness of the characters in this font 0 .. 1 -
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   236
     for st-80 compatibility"
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   237
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   238
    style = 'roman' ifTrue:[^ 0.5].
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   239
    style = 'normal' ifTrue:[^ 0.5].
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   240
    style = 'bold' ifTrue:[^ 0.75].
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   241
    style = 'light' ifTrue:[^ 0.25].
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   242
    ^ 0.5
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   243
! !
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   244
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   245
!FontDescription methodsFor:'errors'!
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   246
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   247
errorNoDevice
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   248
    "a query was made for device-specific info"
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   249
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   250
    "
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   251
     this happens, when you ask a font for its height or width,
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   252
     ascent or any other dimension which depends on the device on
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   253
     which the font is rendered, AND the receiver font is not (yet)
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   254
     associated to a device.
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   255
     You should always use 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   256
	font := font on:someDevice
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   257
     to get a device font, before asking for device specifics.
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   258
    "
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   259
    self error:'query device independent font for for device specific info'
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   260
! !
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   261
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   262
!FontDescription methodsFor:'comparing'!
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   263
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   264
= aFont
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   265
    "two fonts are considered equal, if the font-name components are;
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   266
     independent of the device, the font is on"
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   267
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   268
    (aFont species == self species) ifTrue:[
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   269
	(size == aFont size) ifTrue:[
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   270
	    (family = aFont family) ifTrue:[
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   271
		(face = aFont face) ifTrue:[
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   272
		    (style = aFont style) ifTrue:[
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   273
			(encoding == aFont encoding) ifTrue:[
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   274
			    ^ true
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   275
			]
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   276
		    ]
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   277
		]
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   278
	    ]
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   279
	]
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   280
    ].
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   281
    ^ false
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   282
! !
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   283
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   284
!FontDescription methodsFor:'converting'!
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   285
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   286
on:aDevice
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   287
    "given the receiver, return a device Font"
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   288
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   289
    ^ (Font
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   290
	family:family 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   291
	face:'bold' 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   292
	style:style 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   293
	size:size 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   294
	encoding:encoding) on:aDevice
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   295
! 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   296
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   297
asBold
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   298
    "return the bold font corresponding to the receiver"
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   299
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   300
    ^ self class 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   301
	family:family 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   302
	face:'bold' 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   303
	style:style 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   304
	size:size 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   305
	encoding:encoding
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   306
!
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   307
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   308
asItalic
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   309
    "return the italic font corresponding to the receiver"
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   310
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   311
    ^ self class 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   312
	family:family 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   313
	face:face 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   314
	style:'oblique' 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   315
	size:size 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   316
	encoding:encoding
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   317
!
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   318
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   319
size:newSize 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   320
    "return a font corresponding to the receiver, but with different size."
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   321
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   322
    ^ self class 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   323
	family:family 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   324
	face:face 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   325
	style:style 
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   326
	size:newSize
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   327
	encoding:encoding
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   328
! !
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   329
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   330
ba47d9d6bda8 *** empty log message ***
claus
parents: 89
diff changeset
   331