Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Public Member Functions | Protected Attributes
Zend_Pdf_Resource_Font_Simple_Standard_Symbol Class Reference
Inheritance diagram for Zend_Pdf_Resource_Font_Simple_Standard_Symbol:
Zend_Pdf_Resource_Font_Simple_Standard Zend_Pdf_Resource_Font_Simple Zend_Pdf_Resource_Font Zend_Pdf_Resource

Public Member Functions

 __construct ()
 
 encodeString ($string, $charEncoding)
 
 decodeString ($string, $charEncoding)
 
 toUnicode ($string, $charEncoding='')
 
- Public Member Functions inherited from Zend_Pdf_Resource_Font_Simple_Standard
 __construct ()
 
- Public Member Functions inherited from Zend_Pdf_Resource_Font_Simple
 __construct ()
 
 glyphNumbersForCharacters ($characterCodes)
 
 glyphNumberForCharacter ($characterCode)
 
 getCoveredPercentage ($string, $charEncoding='')
 
 widthsForGlyphs ($glyphNumbers)
 
 widthForGlyph ($glyphNumber)
 
 encodeString ($string, $charEncoding)
 
 decodeString ($string, $charEncoding)
 
- Public Member Functions inherited from Zend_Pdf_Resource_Font
 __construct ()
 
 __toString ()
 
 getFontType ()
 
 getFontName ($nameType, $language, $characterSet=null)
 
 getFontNames ()
 
 isBold ()
 
 isItalic ()
 
 isMonospace ()
 
 getUnderlinePosition ()
 
 getUnderlineThickness ()
 
 getStrikePosition ()
 
 getStrikeThickness ()
 
 getUnitsPerEm ()
 
 getAscent ()
 
 getDescent ()
 
 getLineGap ()
 
 getLineHeight ()
 
 glyphNumbersForCharacters ($characterCodes)
 
 glyphNumberForCharacter ($characterCode)
 
 getCoveredPercentage ($string, $charEncoding='')
 
 widthsForGlyphs ($glyphNumbers)
 
 widthForGlyph ($glyphNumber)
 
 encodeString ($string, $charEncoding)
 
 decodeString ($string, $charEncoding)
 
 toEmSpace ($value)
 
- Public Member Functions inherited from Zend_Pdf_Resource
 __construct ($resource)
 
 __clone ()
 
 cloneResource ($factory, &$processed)
 
 getResource ()
 
 getFactory ()
 

Protected Attributes

 $_toFontEncoding
 
 $_fromFontEncoding
 
- Protected Attributes inherited from Zend_Pdf_Resource_Font_Simple
 $_cmap = null
 
 $_glyphWidths = null
 
 $_missingGlyphWidth = 0
 
- Protected Attributes inherited from Zend_Pdf_Resource_Font
 $_fontType = Zend_Pdf_Font::TYPE_UNKNOWN
 
 $_fontNames = array()
 
 $_isBold = false
 
 $_isItalic = false
 
 $_isMonospace = false
 
 $_underlinePosition = 0
 
 $_underlineThickness = 0
 
 $_strikePosition = 0
 
 $_strikeThickness = 0
 
 $_unitsPerEm = 0
 
 $_ascent = 0
 
 $_descent = 0
 
 $_lineGap = 0
 
- Protected Attributes inherited from Zend_Pdf_Resource
 $_objectFactory
 
 $_resource
 

Detailed Description

Definition at line 49 of file Symbol.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( )

Object constructor

Definition at line 190 of file Symbol.php.

191  {
192  parent::__construct();
193 
194 
195  /* Object properties */
196 
197  /* The font names are stored internally as Unicode UTF-16BE-encoded
198  * strings. Since this information is static, save unnecessary trips
199  * through iconv() and just use pre-encoded hexidecimal strings.
200  */
201  $this->_fontNames[Zend_Pdf_Font::NAME_COPYRIGHT]['en'] =
202  "\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\x69\x00\x67\x00\x68\x00"
203  . "\x74\x00\x20\x00\x28\x00\x63\x00\x29\x00\x20\x00\x31\x00\x39\x00"
204  . "\x38\x00\x35\x00\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x37\x00"
205  . "\x2c\x00\x20\x00\x31\x00\x39\x00\x38\x00\x39\x00\x2c\x00\x20\x00"
206  . "\x31\x00\x39\x00\x39\x00\x30\x00\x2c\x00\x20\x00\x31\x00\x39\x00"
207  . "\x39\x00\x37\x00\x20\x00\x41\x00\x64\x00\x6f\x00\x62\x00\x65\x00"
208  . "\x20\x00\x53\x00\x79\x00\x73\x00\x74\x00\x65\x00\x6d\x00\x73\x00"
209  . "\x20\x00\x49\x00\x6e\x00\x63\x00\x6f\x00\x72\x00\x70\x00\x6f\x00"
210  . "\x72\x00\x61\x00\x74\x00\x65\x00\x64\x00\x2e\x00\x20\x00\x41\x00"
211  . "\x6c\x00\x6c\x00\x20\x00\x72\x00\x69\x00\x67\x00\x68\x00\x74\x00"
212  . "\x73\x00\x20\x00\x72\x00\x65\x00\x73\x00\x65\x00\x72\x00\x76\x00"
213  . "\x65\x00\x64\x00\x2e";
214  $this->_fontNames[Zend_Pdf_Font::NAME_FAMILY]['en'] =
215  "\x00\x53\x00\x79\x00\x6d\x00\x62\x00\x6f\x00\x6c";
216  $this->_fontNames[Zend_Pdf_Font::NAME_STYLE]['en'] =
217  "\x00\x4d\x00\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
218  $this->_fontNames[Zend_Pdf_Font::NAME_ID]['en'] =
219  "\x00\x34\x00\x33\x00\x30\x00\x36\x00\x34";
220  $this->_fontNames[Zend_Pdf_Font::NAME_FULL]['en'] =
221  "\x00\x53\x00\x79\x00\x6d\x00\x62\x00\x6f\x00\x6c\x00\x20\x00\x4d\x00"
222  . "\x65\x00\x64\x00\x69\x00\x75\x00\x6d";
223  $this->_fontNames[Zend_Pdf_Font::NAME_VERSION]['en'] =
224  "\x00\x30\x00\x30\x00\x31\x00\x2e\x00\x30\x00\x30\x00\x38";
225  $this->_fontNames[Zend_Pdf_Font::NAME_POSTSCRIPT]['en'] =
226  "\x00\x53\x00\x79\x00\x6d\x00\x62\x00\x6f\x00\x6c";
227 
228  $this->_isBold = false;
229  $this->_isItalic = false;
230  $this->_isMonospaced = false;
231 
232  $this->_underlinePosition = -100;
233  $this->_underlineThickness = 50;
234  $this->_strikePosition = 225;
235  $this->_strikeThickness = 50;
236 
237  $this->_unitsPerEm = 1000;
238 
239  $this->_ascent = 1000;
240  $this->_descent = 0;
241  $this->_lineGap = 200;
242 
243  /* The glyph numbers assigned here are synthetic; they do not match the
244  * actual glyph numbers used by the font. This is not a big deal though
245  * since this data never makes it to the PDF file. It is only used
246  * internally for layout calculations.
247  */
248  $this->_glyphWidths = array(
249  0x00 => 0x01f4, 0x01 => 0xfa, 0x02 => 0x014d, 0x03 => 0x02c9,
250  0x04 => 0x01f4, 0x05 => 0x0225, 0x06 => 0x0341, 0x07 => 0x030a,
251  0x08 => 0x01b7, 0x09 => 0x014d, 0x0a => 0x014d, 0x0b => 0x01f4,
252  0x0c => 0x0225, 0x0d => 0xfa, 0x0e => 0x0225, 0x0f => 0xfa,
253  0x10 => 0x0116, 0x11 => 0x01f4, 0x12 => 0x01f4, 0x13 => 0x01f4,
254  0x14 => 0x01f4, 0x15 => 0x01f4, 0x16 => 0x01f4, 0x17 => 0x01f4,
255  0x18 => 0x01f4, 0x19 => 0x01f4, 0x1a => 0x01f4, 0x1b => 0x0116,
256  0x1c => 0x0116, 0x1d => 0x0225, 0x1e => 0x0225, 0x1f => 0x0225,
257  0x20 => 0x01bc, 0x21 => 0x0225, 0x22 => 0x02d2, 0x23 => 0x029b,
258  0x24 => 0x02d2, 0x25 => 0x0264, 0x26 => 0x0263, 0x27 => 0x02fb,
259  0x28 => 0x025b, 0x29 => 0x02d2, 0x2a => 0x014d, 0x2b => 0x0277,
260  0x2c => 0x02d2, 0x2d => 0x02ae, 0x2e => 0x0379, 0x2f => 0x02d2,
261  0x30 => 0x02d2, 0x31 => 0x0300, 0x32 => 0x02e5, 0x33 => 0x022c,
262  0x34 => 0x0250, 0x35 => 0x0263, 0x36 => 0x02b2, 0x37 => 0x01b7,
263  0x38 => 0x0300, 0x39 => 0x0285, 0x3a => 0x031b, 0x3b => 0x0263,
264  0x3c => 0x014d, 0x3d => 0x035f, 0x3e => 0x014d, 0x3f => 0x0292,
265  0x40 => 0x01f4, 0x41 => 0x01f4, 0x42 => 0x0277, 0x43 => 0x0225,
266  0x44 => 0x0225, 0x45 => 0x01ee, 0x46 => 0x01b7, 0x47 => 0x0209,
267  0x48 => 0x019b, 0x49 => 0x025b, 0x4a => 0x0149, 0x4b => 0x025b,
268  0x4c => 0x0225, 0x4d => 0x0225, 0x4e => 0x0240, 0x4f => 0x0209,
269  0x50 => 0x0225, 0x51 => 0x0225, 0x52 => 0x0209, 0x53 => 0x0225,
270  0x54 => 0x025b, 0x55 => 0x01b7, 0x56 => 0x0240, 0x57 => 0x02c9,
271  0x58 => 0x02ae, 0x59 => 0x01ed, 0x5a => 0x02ae, 0x5b => 0x01ee,
272  0x5c => 0x01e0, 0x5d => 0xc8, 0x5e => 0x01e0, 0x5f => 0x0225,
273  0x60 => 0x02ee, 0x61 => 0x026c, 0x62 => 0xf7, 0x63 => 0x0225,
274  0x64 => 0xa7, 0x65 => 0x02c9, 0x66 => 0x01f4, 0x67 => 0x02f1,
275  0x68 => 0x02f1, 0x69 => 0x02f1, 0x6a => 0x02f1, 0x6b => 0x0412,
276  0x6c => 0x03db, 0x6d => 0x025b, 0x6e => 0x03db, 0x6f => 0x025b,
277  0x70 => 0x0190, 0x71 => 0x0225, 0x72 => 0x019b, 0x73 => 0x0225,
278  0x74 => 0x0225, 0x75 => 0x02c9, 0x76 => 0x01ee, 0x77 => 0x01cc,
279  0x78 => 0x0225, 0x79 => 0x0225, 0x7a => 0x0225, 0x7b => 0x0225,
280  0x7c => 0x03e8, 0x7d => 0x025b, 0x7e => 0x03e8, 0x7f => 0x0292,
281  0x80 => 0x0337, 0x81 => 0x02ae, 0x82 => 0x031b, 0x83 => 0x03db,
282  0x84 => 0x0300, 0x85 => 0x0300, 0x86 => 0x0337, 0x87 => 0x0300,
283  0x88 => 0x0300, 0x89 => 0x02c9, 0x8a => 0x02c9, 0x8b => 0x02c9,
284  0x8c => 0x02c9, 0x8d => 0x02c9, 0x8e => 0x02c9, 0x8f => 0x02c9,
285  0x90 => 0x0300, 0x91 => 0x02c9, 0x92 => 0x0316, 0x93 => 0x0316,
286  0x94 => 0x037a, 0x95 => 0x0337, 0x96 => 0x0225, 0x97 => 0xfa,
287  0x98 => 0x02c9, 0x99 => 0x025b, 0x9a => 0x025b, 0x9b => 0x0412,
288  0x9c => 0x03db, 0x9d => 0x025b, 0x9e => 0x03db, 0x9f => 0x025b,
289  0xa0 => 0x01ee, 0xa1 => 0x0149, 0xa2 => 0x0316, 0xa3 => 0x0316,
290  0xa4 => 0x0312, 0xa5 => 0x02c9, 0xa6 => 0x0180, 0xa7 => 0x0180,
291  0xa8 => 0x0180, 0xa9 => 0x0180, 0xaa => 0x0180, 0xab => 0x0180,
292  0xac => 0x01ee, 0xad => 0x01ee, 0xae => 0x01ee, 0xaf => 0x01ee,
293  0xb0 => 0x0149, 0xb1 => 0x0112, 0xb2 => 0x02ae, 0xb3 => 0x02ae,
294  0xb4 => 0x02ae, 0xb5 => 0x0180, 0xb6 => 0x0180, 0xb7 => 0x0180,
295  0xb8 => 0x0180, 0xb9 => 0x0180, 0xba => 0x0180, 0xbb => 0x01ee,
296  0xbc => 0x01ee, 0xbd => 0x01ee, 0xbe => 0x0316);
297 
298  /* The cmap table is similarly synthesized.
299  */
300  $cmapData = array(
301  0x20 => 0x01, 0x21 => 0x02, 0x2200 => 0x03, 0x23 => 0x04,
302  0x2203 => 0x05, 0x25 => 0x06, 0x26 => 0x07, 0x220b => 0x08,
303  0x28 => 0x09, 0x29 => 0x0a, 0x2217 => 0x0b, 0x2b => 0x0c,
304  0x2c => 0x0d, 0x2212 => 0x0e, 0x2e => 0x0f, 0x2f => 0x10,
305  0x30 => 0x11, 0x31 => 0x12, 0x32 => 0x13, 0x33 => 0x14,
306  0x34 => 0x15, 0x35 => 0x16, 0x36 => 0x17, 0x37 => 0x18,
307  0x38 => 0x19, 0x39 => 0x1a, 0x3a => 0x1b, 0x3b => 0x1c,
308  0x3c => 0x1d, 0x3d => 0x1e, 0x3e => 0x1f, 0x3f => 0x20,
309  0x2245 => 0x21, 0x0391 => 0x22, 0x0392 => 0x23, 0x03a7 => 0x24,
310  0x2206 => 0x25, 0x0395 => 0x26, 0x03a6 => 0x27, 0x0393 => 0x28,
311  0x0397 => 0x29, 0x0399 => 0x2a, 0x03d1 => 0x2b, 0x039a => 0x2c,
312  0x039b => 0x2d, 0x039c => 0x2e, 0x039d => 0x2f, 0x039f => 0x30,
313  0x03a0 => 0x31, 0x0398 => 0x32, 0x03a1 => 0x33, 0x03a3 => 0x34,
314  0x03a4 => 0x35, 0x03a5 => 0x36, 0x03c2 => 0x37, 0x2126 => 0x38,
315  0x039e => 0x39, 0x03a8 => 0x3a, 0x0396 => 0x3b, 0x5b => 0x3c,
316  0x2234 => 0x3d, 0x5d => 0x3e, 0x22a5 => 0x3f, 0x5f => 0x40,
317  0xf8e5 => 0x41, 0x03b1 => 0x42, 0x03b2 => 0x43, 0x03c7 => 0x44,
318  0x03b4 => 0x45, 0x03b5 => 0x46, 0x03c6 => 0x47, 0x03b3 => 0x48,
319  0x03b7 => 0x49, 0x03b9 => 0x4a, 0x03d5 => 0x4b, 0x03ba => 0x4c,
320  0x03bb => 0x4d, 0xb5 => 0x4e, 0x03bd => 0x4f, 0x03bf => 0x50,
321  0x03c0 => 0x51, 0x03b8 => 0x52, 0x03c1 => 0x53, 0x03c3 => 0x54,
322  0x03c4 => 0x55, 0x03c5 => 0x56, 0x03d6 => 0x57, 0x03c9 => 0x58,
323  0x03be => 0x59, 0x03c8 => 0x5a, 0x03b6 => 0x5b, 0x7b => 0x5c,
324  0x7c => 0x5d, 0x7d => 0x5e, 0x223c => 0x5f, 0x20ac => 0x60,
325  0x03d2 => 0x61, 0x2032 => 0x62, 0x2264 => 0x63, 0x2044 => 0x64,
326  0x221e => 0x65, 0x0192 => 0x66, 0x2663 => 0x67, 0x2666 => 0x68,
327  0x2665 => 0x69, 0x2660 => 0x6a, 0x2194 => 0x6b, 0x2190 => 0x6c,
328  0x2191 => 0x6d, 0x2192 => 0x6e, 0x2193 => 0x6f, 0xb0 => 0x70,
329  0xb1 => 0x71, 0x2033 => 0x72, 0x2265 => 0x73, 0xd7 => 0x74,
330  0x221d => 0x75, 0x2202 => 0x76, 0x2022 => 0x77, 0xf7 => 0x78,
331  0x2260 => 0x79, 0x2261 => 0x7a, 0x2248 => 0x7b, 0x2026 => 0x7c,
332  0xf8e6 => 0x7d, 0xf8e7 => 0x7e, 0x21b5 => 0x7f, 0x2135 => 0x80,
333  0x2111 => 0x81, 0x211c => 0x82, 0x2118 => 0x83, 0x2297 => 0x84,
334  0x2295 => 0x85, 0x2205 => 0x86, 0x2229 => 0x87, 0x222a => 0x88,
335  0x2283 => 0x89, 0x2287 => 0x8a, 0x2284 => 0x8b, 0x2282 => 0x8c,
336  0x2286 => 0x8d, 0x2208 => 0x8e, 0x2209 => 0x8f, 0x2220 => 0x90,
337  0x2207 => 0x91, 0xf6da => 0x92, 0xf6d9 => 0x93, 0xf6db => 0x94,
338  0x220f => 0x95, 0x221a => 0x96, 0x22c5 => 0x97, 0xac => 0x98,
339  0x2227 => 0x99, 0x2228 => 0x9a, 0x21d4 => 0x9b, 0x21d0 => 0x9c,
340  0x21d1 => 0x9d, 0x21d2 => 0x9e, 0x21d3 => 0x9f, 0x25ca => 0xa0,
341  0x2329 => 0xa1, 0xf8e8 => 0xa2, 0xf8e9 => 0xa3, 0xf8ea => 0xa4,
342  0x2211 => 0xa5, 0xf8eb => 0xa6, 0xf8ec => 0xa7, 0xf8ed => 0xa8,
343  0xf8ee => 0xa9, 0xf8ef => 0xaa, 0xf8f0 => 0xab, 0xf8f1 => 0xac,
344  0xf8f2 => 0xad, 0xf8f3 => 0xae, 0xf8f4 => 0xaf, 0x232a => 0xb0,
345  0x222b => 0xb1, 0x2320 => 0xb2, 0xf8f5 => 0xb3, 0x2321 => 0xb4,
346  0xf8f6 => 0xb5, 0xf8f7 => 0xb6, 0xf8f8 => 0xb7, 0xf8f9 => 0xb8,
347  0xf8fa => 0xb9, 0xf8fb => 0xba, 0xf8fc => 0xbb, 0xf8fd => 0xbc,
348  0xf8fe => 0xbd, 0xf8ff => 0xbe);
349  #require_once 'Zend/Pdf/Cmap.php';
350  $this->_cmap = Zend_Pdf_Cmap::cmapWithTypeData(
352 
353 
354  /* Resource dictionary */
355 
356  /* The resource dictionary for the standard fonts is sparse because PDF
357  * viewers already have all of the metrics data. We only need to provide
358  * the font name and encoding method.
359  */
360  $this->_resource->BaseFont = new Zend_Pdf_Element_Name('Symbol');
361 
362  /* This font has a built-in custom character encoding method. Don't
363  * override with WinAnsi like the other built-in fonts or else it will
364  * not work as expected.
365  */
366  $this->_resource->Encoding = null;
367  }
const NAME_FULL
Definition: Font.php:213
const NAME_VERSION
Definition: Font.php:218
const TYPE_BYTE_ENCODING_STATIC
Definition: Cmap.php:99
const NAME_COPYRIGHT
Definition: Font.php:192
const NAME_STYLE
Definition: Font.php:202
static cmapWithTypeData($cmapType, $cmapData)
Definition: Cmap.php:145
const NAME_POSTSCRIPT
Definition: Font.php:224
const NAME_ID
Definition: Font.php:207
const NAME_FAMILY
Definition: Font.php:197

Member Function Documentation

◆ decodeString()

decodeString (   $string,
  $charEncoding 
)

Convert string encoding from font encoding to local encoding. Overridden to defeat the conversion behavior for this ornamental font.

Parameters
string$string
string$charEncodingCharacter encoding of resulting text.
Returns
string

Definition at line 417 of file Symbol.php.

418  {
419  $decodedString = '';
420  for ($i = 0; $i < strlen($string); $i++) {
421  $characterCode = ord($string[$i]);
422  if (isset($this->_fromFontEncoding[$characterCode])) {
423  $decodedString .= $this->_fromFontEncoding[$characterCode];
424  } else {
425  /* For now, mimic the behavior in Zend_Pdf_Font::encodeString()
426  * where unknown characters are removed completely. This is not
427  * perfect, but we should be consistent. In a future revision,
428  * we will use the Unicode substitution character (U+FFFD).
429  */
430  }
431  }
432  if ($charEncoding != 'UTF-16BE') {
433  $decodedString = iconv('UTF-16BE', $charEncoding, $decodedString);
434  }
435  return $decodedString;
436  }
$i
Definition: gallery.phtml:31

◆ encodeString()

encodeString (   $string,
  $charEncoding 
)

Convert string encoding from local encoding to font encoding. Overridden to defeat the conversion behavior for this ornamental font.

Parameters
string$string
string$charEncodingCharacter encoding of source text.
Returns
string
Todo:
Properly handle characters encoded as surrogate pairs.

Definition at line 380 of file Symbol.php.

381  {
382  /* This isn't the optimal time to perform this conversion, but it must
383  * live here until the remainder of the layout code is completed. This,
384  * and the $charEncoding parameter, will go away soon...
385  */
386  if ($charEncoding != 'UTF-16BE') {
387  $string = iconv($charEncoding, 'UTF-16BE', $string);
388  }
392  $encodedString = '';
393  for ($i = 0; $i < strlen($string); $i++) {
394  $characterCode = (ord($string[$i++]) << 8) | ord($string[$i]);
395  if (isset($this->_toFontEncoding[$characterCode])) {
396  $encodedString .= $this->_toFontEncoding[$characterCode];
397  } else {
398  /* For now, mimic the behavior in Zend_Pdf_Font::encodeString()
399  * where unknown characters are removed completely. This is not
400  * perfect, but we should be consistent. In a future revision,
401  * we will use the well-known substitution character 0x1a
402  * (Control-Z).
403  */
404  }
405  }
406  return $encodedString;
407  }
$i
Definition: gallery.phtml:31

◆ toUnicode()

toUnicode (   $string,
  $charEncoding = '' 
)

Converts a Latin-encoded string that fakes the font's internal encoding to the proper Unicode characters, in UTF-16BE encoding.

Used to maintain backwards compatibility with the 20 year-old legacy method of using this font, which is still employed by recent versions of some popular word processors.

Note that using this method adds overhead due to the additional character conversion. Don't use this for new code; it is more efficient to use the appropriate Unicode characters directly.

Parameters
string$string
string$charEncoding(optional) Character encoding of source string. Defaults to current locale.
Returns
string

Definition at line 455 of file Symbol.php.

456  {
457  /* When using these faked strings, the closest match to the font's
458  * internal encoding is ISO-8859-1.
459  */
460  if ($charEncoding != 'ISO-8859-1') {
461  $string = iconv($charEncoding, 'ISO-8859-1', $string);
462  }
463  return $this->decodeString($string, 'UTF-16BE');
464  }
decodeString($string, $charEncoding)
Definition: Symbol.php:417

Field Documentation

◆ $_fromFontEncoding

$_fromFontEncoding
protected

Definition at line 114 of file Symbol.php.

◆ $_toFontEncoding

$_toFontEncoding
protected

Definition at line 59 of file Symbol.php.


The documentation for this class was generated from the following file: