Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
fontsimport [2016/09/24 15:33]
christian created
fontsimport [2023/01/05 20:29] (current)
christian
Line 3: Line 3:
 How can you use your own font? How can you use your own font?
  
-The PDFtalk library keeps a list of loaded fonts. These are Graphics.Fonts.Font objects readily read from its source file and interpreted as object(s). Since the process takes time, the loaded fonts are cached in the LoadedObjects class variable.+The PDFtalk library keeps a list of loaded fonts. These are Graphics.Fonts.Font objects readily read from its source file and interpreted as object(s). Since the process takes time, the loaded fonts are cached in the Graphics.Fonts.Font.LoadedFonts shared (classvariable. 
 + 
 +Useful methods are: 
 + 
 +<code smalltalk> 
 +Graphics.Fonts.Font loadedFonts.             "returns a <Dictionary key: Symbol value: Font>" 
 +Graphics.Fonts.Font fontAt: #Helvetica.      "returns a Graphics.Fonts.StandardFont" 
 +Graphics.Fonts.Font fontAt: #'Times-Roman'   "returns another StandardFont" 
 +Graphics.Fonts.Font resetLoadedFonts.        "clears the shared variable #LoadedFonts" 
 +</code> 
 + 
 +The method #loadedFonts loads the fonts on demand. When the shared variable LoadedFonts is nil, all class methods are evaluated which are tagged by the #font: pragma. 
 + 
 +Package [Fonts Development] adds some import helpers for OpenTalk and Type-1 (CustomFont) Fonts: 
 + 
 +<code smalltalk> 
 +Graphics.Fonts.OpenTalk.Font importFile: aFilename in: aPackagenameSymbol. 
 +Graphics.Fonts.OpenTalk.Font importAllIn: aDirectoryName into: aPackagenameSymbol. 
 +Graphics.Fonts.OpenTalk.Font importInstalledWindowsFont: aFontBaseFilename in: aPackagenameSymbol. 
 +"and" 
 +Graphics.Fonts.CustomFont import: filenameTrunk as: selectorSymbol. 
 +</code> 
 + 
 +For example when you add the 'MICRDemoCheckPrixa.otf' OpenType(PS) font file (a demo font for MICR) with: 
 + 
 +<code smalltalk> 
 +Graphics.Fonts.OpenType.Font importFile: 'MICRDemoCheckPrixa.otf' asFilename in: #'Fonts Development'
 +</code> 
 + 
 +This creates a class method for Graphics.Fonts.OpenType.Font: 
 + 
 +<code smalltalk> 
 +mICRDemoCheckPrixa 
 + <font: #MICRDemoCheckPrixa> 
 + ^self file: 'MICRDemoCheckPrixa.otf' contents: (ByteArray fromASCII85String:  
 + ':K1:h!"/dW!!<3T6UjNf[(sM&!!!IY!!!e,7o2u[lPKXT!!!@R!!!*(:K&o%;0,kH!!!$B!!!",@r5X..."
 +</code> 
 + 
 +The newly imported Font can be accessed by 
 + 
 +<code smalltalk> 
 +Graphics.Fonts.Font fontAt: #MICRDemoCheckPrixa. 
 +</code> 
 + 
 +and used in PDF for text as usual by its name: 
  
 <code smalltalk> <code smalltalk>
-Graphics.Fonts.OpenType.Font importFile: 'MICRDemoCheckPrixa.otfasFilename in#'Fonts Development'+| page | 
 +page := Page newInBounds: (0 @ 0 corner: 165 @ 30) colorspace: DeviceCMYK new render: [:renderer | 
 + renderer textObjectDo:
 + renderer setFont: #MICRDemoCheckPrixa size: 14. 
 + renderer add: (NextLineRelative operands: #(10 10)). 
 + renderer showString: '01234567890 / ; : -']]. 
 +page saveAndShowAs: 'demo04b_MICRDemo.pdf'
 </code> </code>
  • fontsimport.1474723982.txt.gz
  • Last modified: 2016/09/24 15:33
  • by christian