Feature #1656 - The mPDF library has been upgraded from version 4.2 to version 4.6.

skala
Ivan Tcholakov 16 years ago
parent f7f6ee6c51
commit 0d4ca1a65d
  1. 447
      main/inc/lib/mpdf/CHANGELOG.txt
  2. 389
      main/inc/lib/mpdf/README_4_2.txt
  3. 2019
      main/inc/lib/mpdf/classes/svg.php
  4. 170
      main/inc/lib/mpdf/classes/t1asm.php
  5. 14
      main/inc/lib/mpdf/compress.php
  6. 78
      main/inc/lib/mpdf/config.php
  7. 6
      main/inc/lib/mpdf/iccprofiles/index.html
  8. BIN
      main/inc/lib/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc
  9. 49
      main/inc/lib/mpdf/includes/functions.php
  10. 258
      main/inc/lib/mpdf/makefonts/makefonts.php
  11. 4422
      main/inc/lib/mpdf/mpdf.php
  12. 98
      main/inc/lib/mpdf/mpdfi/filters/FilterASCII85.php
  13. 154
      main/inc/lib/mpdf/mpdfi/filters/FilterLZW.php
  14. 6
      main/inc/lib/mpdf/mpdfi/filters/index.html
  15. 93
      main/inc/lib/mpdf/mpdfi/fpdi_pdf_parser.php
  16. 723
      main/inc/lib/mpdf/mpdfi/mpdfi.php
  17. 22
      main/inc/lib/mpdf/progress/out.php
  18. BIN
      main/inc/lib/mpdf/unifont/garuda.ctg.z
  19. 36
      main/inc/lib/mpdf/unifont/garuda.php
  20. 354
      main/inc/lib/mpdf/unifont/garuda.uni2gn.php
  21. BIN
      main/inc/lib/mpdf/unifont/garuda.z
  22. BIN
      main/inc/lib/mpdf/unifont/garudab.ctg.z
  23. 20
      main/inc/lib/mpdf/unifont/garudab.php
  24. 354
      main/inc/lib/mpdf/unifont/garudab.uni2gn.php
  25. BIN
      main/inc/lib/mpdf/unifont/garudab.z
  26. BIN
      main/inc/lib/mpdf/unifont/garudabi.ctg.z
  27. 20
      main/inc/lib/mpdf/unifont/garudabi.php
  28. 354
      main/inc/lib/mpdf/unifont/garudabi.uni2gn.php
  29. BIN
      main/inc/lib/mpdf/unifont/garudabi.z
  30. BIN
      main/inc/lib/mpdf/unifont/garudai.ctg.z
  31. 36
      main/inc/lib/mpdf/unifont/garudai.php
  32. 354
      main/inc/lib/mpdf/unifont/garudai.uni2gn.php
  33. BIN
      main/inc/lib/mpdf/unifont/garudai.z
  34. BIN
      main/inc/lib/mpdf/unifont/norasi.ctg.z
  35. 22
      main/inc/lib/mpdf/unifont/norasi.php
  36. 399
      main/inc/lib/mpdf/unifont/norasi.uni2gn.php
  37. BIN
      main/inc/lib/mpdf/unifont/norasi.z
  38. BIN
      main/inc/lib/mpdf/unifont/norasib.ctg.z
  39. 28
      main/inc/lib/mpdf/unifont/norasib.php
  40. 400
      main/inc/lib/mpdf/unifont/norasib.uni2gn.php
  41. BIN
      main/inc/lib/mpdf/unifont/norasib.z
  42. BIN
      main/inc/lib/mpdf/unifont/norasibi.ctg.z
  43. 58
      main/inc/lib/mpdf/unifont/norasibi.php
  44. 399
      main/inc/lib/mpdf/unifont/norasibi.uni2gn.php
  45. BIN
      main/inc/lib/mpdf/unifont/norasibi.z
  46. BIN
      main/inc/lib/mpdf/unifont/norasii.ctg.z
  47. 58
      main/inc/lib/mpdf/unifont/norasii.php
  48. 400
      main/inc/lib/mpdf/unifont/norasii.uni2gn.php
  49. BIN
      main/inc/lib/mpdf/unifont/norasii.z

@ -1,3 +1,412 @@
===========================
mPDF v4.6 (07/06/2010)
===========================
Improvements
------------
Added Windows BMP image support [4.5.011]
Improved support and bug fixes for SVG images [4.5.010]
- improved recognition of lineargradients/radialgradients referenced by xlink:href
- does not die if empty text string
- support for many text properties as style="" as well as currently as attributes (bold, fill etc)
- if using MB font, was respecting "Times" and "Courier" from the SVG file but using as ANSI not utf-8
JPG image files with "Exif" header now recognised and supported [4.5.001]
Configuration variable added (config.php):
----------------------------
$this->tableMinSizePriority [4.5.006]
Default value false
Use: When page-break-inside:avoid set on table but cannot fit on full page without
exceeding autosize; setting this value to true will force respsect for the autosize,
and disable the page-break-inside:avoid
Bug fixes
---------
- Apache crashing when writing complex heading with multiple ToC entries + index entry [4.5.015]
- Error message appeared after printing in Adobe Reader [4.5.014]
- Error in Text wrapping in table cells [4.5.012]
- Incorrect error message(!) using embedded font subsets if .dat fontfile not found (".char.dat") [4.5.008]
- Errors when using page-break-inside:avoid, with text elements and images incorrectly moved [4.5.007]
- Triggering unnecessary page break, or entering endless loop when using table with page-break-inside:avoid [4.5.004, 4.5.005]
- Utility "makefonts" moving newly created files to wrong directory [4.5.003]
- Error using embedded font subsets when magic_quotes_runtime set On [4.5.002]
Files changed
-------------
mpdf.php
config.php
makefonts/makefonts.php
class/t1asm.php
class/svg.php
===========================
mPDF v4.5 (21/04/2010)
===========================
New Features
------------
The main change in 4.5 is the improved class for importing SVG images. (See details below)
Font files
----------
Some bugs in the "makefonts" utility caused some errors in the files produced for embedding font subsets.
Surprisingly these are not easily detectable (I have yet to find one!).
All the font files used for embedding font subsets (the .dat and .dat.php files in /unifont/ folder)
have been re-generated. Download them if you are having problems with any fonts - otherwise, you probably
don't need to bother.
Minor Enhancements
------------------
If keepColumns = true (i.e. disable readjustment of column length), mPDF will now reproduce
table header/footer rows in each column [4.4.015]
A number of changes to improve processing time [4.4.012]
[Thanks to carlholmberg http://mpdf.bpm1.com/forum/comments.php?DiscussionID=274&page=1#Item_3]
JPG files with header marked as "progressive DCT-based JPEG" are now supported [4.4.004]
Configurable variable (config.php) $dpi can be set to vary size interpreted from "px" values in HTML/CSS
NB Recommended that $dpi should always be set the same as $img_dpi
Support added for "ex" as a size value (approximates "ex" as half of font height)
Configurable variable (config.php) $watermarkImgAlphaBlend will determine how watermark images
will blend with underlying objects.
Bug fixes
---------
- Make-fonts utility : makefonts/makefonts.php [4.4.016]
(All font files have been updated)
- Table header of only one column width - not printing right border [4.4.014]
- WMF and SVG images not rotating correctly to 90 or -90 degrees [4.4.013]
- Using templates, error if imported doc contains templates itself [4.4.001]
Updated Files
-------------
mpdf.php
config.php
classes/svg.php
makefonts/makefonts.php
ALL subset font files (/unifont/ .dat and .dat.php files), and all garuda and norasi files
New files
---------
None
New config variables
--------------------
$this->watermarkImgAlphaBlend
$this->dpi
BACKWARD COMPATIBILITY
----------------------
All but one changes in mPDF 4.5 are fully backwards compatible.
The configurable variable $this->watermarkImgBehind was introduced in v4.4 and was unintentionally set to TRUE
In v4.5 this is set to FALSE in the config.php file.
SVG Images
----------
[svg.php CHANGED]
- Text stroke-width default changed to 1 [4.4.011]
- Text stroke - line-join type changed [4.4.010]
- Default value for fill changed to "black" [4.4.008]
- Bug fixes:
* to correct calculation of text-length (and therefore alignment R and C) [4.4.009]
* Corrected errors in path implementation esp. quadratic Bezier curves
* rounded corners to rectangles - error corrected
* Recognition of font-family improved
* remove \n (and other non-printable chars) from text
* zero length shapes are not output e.g. zero-width rectangle, zero-length line, zero-radius circle
- Support added for:
* gradient stop offsets and gradientUnits="userSpaceOnUse" [4.4.007]
In mpdf.php enabled define inner radius for radial gradients - only used internally by SVG at present
* user defined <ENTITY /> cf. 'render-elems-03-t.svg' in SVG Test Suite [4.4.006]
* "color" attribute and "currentColor" value for fill and stroke [4.4.005]
* fill:url(#...) in a style as well as attribute
* xlink:href for gradients
* 1.3002e-005 in svg path
* text-style changes (e.g. text-anchor) set on <g> element - not just on <text>
* fill-rule=evenodd|nozero
* dashed lines / stroke-dasharray & stroke-dashoffset
* gradientUnits=userSpaceOnUse;
* units e.g. 3mm or 14pt in Rectangle, Circle, Ellipse, Line and Text position
* transform on <text> element
* stroke as well as fill on text
NB The following are still NOT supported for SVG
- filters
- <marker>
- images
- DOM
- <pattern>
- textlength; lengthadjust; tspan, tref, toap, textPath;
- <use ../>
- gradient on stroke/text;
- <clipPath>
- text-underline and strikethrough
- text opacity
- colors as rgb(87%, 56%, 25%)
- rect using units for dimensions
- Only uses default spreadMethod = "pad" for gradients
===========================
mPDF v4.4 (24/03/2010)
===========================
New Features
------------
- Support SVG image files (partial)
- Rotate images or graphs (by multiples of 90 degrees)
- Set opacity (transparency) for background images
- Control resizing of background images
- Set whether to print watermark images behind or in front of page contents
- Reduced memory usage when printing tables (partly configurable)
- Option to set path to folder for temporary files
- Improved compliance for CSS text-align justify
- Increased support for CSS "media"
- Improved performance when accessing local image files
Minor Enhancements
------------------
- Allows space in output file name e.g. $mpdf->Output('t est.pdf','D'); [4.3.007B]
- Header changed in Output to improve compatability with IE6 (affects 'D' and 'I') [4.3.012B]
- background-images do not show noimage.jpg if missing [4.3.012D]
- simpleTables (which improves performance) now also allows: background-color, -gradient and -image, padding
and rotated text to be set for each cell. Only borders are not supported cell-by-cell. [4.3.006]
Bug fixes
---------
- Page width not correctly reset when defining default page margins (L/R) by @page [4.3.007C]
- Table row <TR> with a background-color, paints the whole row, including the spaces between cells [4.3.005]
NB This should have been fixed in [4.2.028] but got left out!
- UseSubstitutionsMB causes errors inside <textarea> and <select> so now disabled in these 2 situations [4.3.004]
- CSS background: 'none' did not cancel background-image/background-color if it comes later [4.3.002, 4.3.011]
- Warning message 'depracated' (as of PHP 5.3) when using Templates [4.3.007]
- AutoFont incorrectly altering multibyte characters ending in \xa0 [4.3.012C]
- "Initial" default value for border-width changed from 1px to 'medium' e.g. border-top: solid #000000; [4.3.010]
- WMF image sometimes inverted [4.3.016]
Updated Files
-------------
mpdf.php
config.php
changelog.txt
New files
---------
classes/svg.php
New config variables
--------------------
$this->justifyB4br=false;
$this->CSSselectMedia='print';
$this->watermarkImgBehind = false;
BACKWARD COMPATIBILITY
----------------------
All changes are backwards compatible except the handling of some background-images - please see notes below.
Watermark Image z-order
-----------------------
By default mPDF prints watermarks on top of the page contents to ensure that they are not hidden by backgrounds
(especially table cells).
You can specify watermark images to be printed behind page contents by setting a configurable variable:
$this->watermarkImgBehind = true; // default=false
[4.3.018]
Rotating Images and Graphs
--------------------------
Images or graphs can be rotated (by multiples of 90 degrees) using a custom HTML attribute e.g.
<img rotate="90|-90|180" ... />
<jpgraph rotate="90" ... />
Valid options are: 90|-90|180.
Positive values are clockwise.
If width is specified e.g. width="3cm" this is applied to the rotated image i.e. will be width 3cm after rotating
[4.3.016]
Background Image Opacity
------------------------
A custom CSS property "background-image-opacity": is now supported on BODY, DIV+ (block elements) and TD
Takes values between 0 and 1.0
Resizing Background Images
--------------------------
A custom CSS property "background-image-resize": is now supported on BODY, DIV+ (block elements) and TD
0 - No resizing (default)
1 - Shrink-to-fit w (keep aspect ratio)
2 - Shrink-to-fit h (keep aspect ratio)
3 - Shrink-to-fit w and/or h (keep aspect ratio)
4 - Resize-to-fit w (keep aspect ratio)
5 - Resize-to-fit h (keep aspect ratio)
6 - Resize-to-fit w and h
N.B. Prior to v4.4 background-images were incorrectly constrained to maximum width of the containing block.
The default is now to do NO resizing on background-images. Setting "background-image-resize:3" should be used
for backwards compatibility.
[4.3.015, 4.3.012D]
SVG Image files
---------------
SVG image files are now partially supported (but as for WMF - not as background-images).
viewBox (preserveAspectRatio is not supported) viewBox="0 0 400 200" width="400" height="200"
Takes viewBox in preference to width/height if present on <svg>
If neither present, will size to width of page (square) as the containing box.
Units are interpreted as pixels if undefined.
Doesn't recognise internal CSS <style> elements
Gradients only take 2 colours which are taken as stop-offset 0% and 100%
[4.3.013 & 4.3.017]
Reduced Memory Usage printing Tables
------------------------------------
mPDF uses a lot of memory when processing large tables. Parts of the script have been rewritten to
reduce memory consumption when writing tables which use collapsed borders (10-25% saving).
Memory usage can be reduced further by setting a configurable variable:
$this->packTableData = true; // default=false
but note that this causes a significant increase in processing time.
[4.3.008, 4.3.019, 4.3.014]
User-defined path to Temporary folder
-------------------------------------
mPDF uses a folder to write and store temporary files when processing images. By default this is the
[your_path_to_mpdf]/tmp/
This is now user-definable by defining the constant _MPDF_TEMP_PATH before including mpdf.php script.
Text Justification
------------------
In a justified text block, an inline image, textarea, input, or select causing a new line will now force
the previous line to be justified. HR and BR do NOT force justification (as in browsers).
For optional compliance of MS Word behaviour, there is a new configurable variable:
$this->justifyB4br = false; // Change to true to force justification before a <BR> (as in MS Word)
[4.3.003]
CSS support for @media
----------------------
Now supports media-dependent CSS styles e.g.
@media print {
p { color: red; }
}
as well as
<style media="...">...</style> and
<link rel="stylesheet" media="print" href="..." />
Proper matching of CSS media to select using configurable variable:
$this->CSSselectMedia='print'; // default="print" set in config.php : screen, print, or any other CSS @media type (not "all")
N.B. $this->disablePrintCSS in now depracated
[4.3.001]
===========================
mPDF v4.3 (28/02/2010)
===========================
NEW FEATURES
------------
- Page (sheet) size can be reset within document (http://mpdf1.com/manual/index.php?tid=436) [4.2.024, 4.2.025]
- PDF/A1-b compliant files (http://mpdf1.com/manual/index.php?tid=420)
- Improve performance using simpleTables (http://mpdf1.com/manual/index.php?tid=430)
- mPDFI incorporated into main mPDF class (http://mpdf1.com/manual/index.php?tid=432)
- <dottab> added as custom HTML tag: inserts dots to the following text, which is right-aligned [4.2.031]
See Example files 38 and 39 for PDFA compliant file and <dottab>
BACKWARD COMPATIBILITY
----------------------
All changes are backwards compatible except the use of mPDFI. You will need to make minor changes to your scripts.
See the manual http://mpdf1.com/manual/index.php?tid=432 for details.
BUG FIXES
---------
- When using Table of Contents and not resetting page numbers: HTML headers/footers showed incorrect page number [4.2.020]
- Table of Contents: last page not printing page background-color [4.2.023]
- Image file with space " " in the file name failing [4.2.016]
- Image file path unnecessarily resolved to full URI - changed to use relative path if possible [4.2.029] ***
- Table - not calculating height of cell correctly [4.2.015, 4.2.012, 4.2.011, 4.2.009]
- Table row breaking after/during cell when image in cell taller than font-height [4.2.008]
- When Table row(cell) greater height than the page-height but requiring resizing greater than allowed by autosize - not resizing [4.2.005]
- Table cell border not resized correctly [4.2.002]
- Table row <TR> with a background-color, paints the whole row, including the spaces between cells [4.2.028] ****
- Background-image in HTMLFooter not correctly setting 0,0 origin [4.2.014]
- Background-image set as an in-line style not working [4.2.013]
- Background-image set in CSS @page or <body> was being constrained to less than page size [4.2.032]
- Imported Templates overwriting Headers (with images or gradients) [4.2.004]
- When using imports/templates, HTML header with background-image causing page to disappear [4.2.001]
- block-style element breaking over more than 2 pages incorrectly adjusting L/R margins [4.2.022]
- CSS @page property "size" set on :left :right or :first pseudo-selectors - disabled [4.2.022]
- Annotations default colour incorrectly set in PDF as [100 100 0] corrected to [1 1 0] (seemed to work ok?) [4.2.026]
- Overwrite() now parses input file more tolerantly recognising more source files [4.2.030]
**** Bug fix 4.2.028 never got into the release of v4.3 Included in next release [4.3.005]
**** Bug fix 4.2.029 never not fully implmented in v4.3 Included in next release [4.3.012]
Changed files
-------------
mpdf.php
compress.php
config.php
classes/t1asm.php
includes/functions.php
mpdfi/fpdi_pdf_parser.php
Added files/folder: /mpdfi/filters/*.*
Added file/folder: /iccprofiles/sRGB_IEC61966-2-1.icc
mpdfi/mpdfi.php (no longer required)
New Configuration variables
---------------------------
[config.php]
$this->enableImports
$this->simpleTables
$this->PDFA
$this->ICCProfile
$this->PDFAauto
Minor changes
-------------
Increased PDF file compatibility with spec 1.4
- PDF version changed to 1.4
- A binary file marker (a comment line with 4 characters > 127 ASCII) is added just after the first line
- %%EOF no longer has line break after it [4.2.010]
- /ID object is added to trailer object when not encrypted [4.2.010]
When using progress bars, one of the JS scripts is now referenced as an external file
to allow it to be cached by user's browser and improve performance for end-user [4.2.007]
Importing external PDF files: LZW encoded PDF files are now supported
When adding an annotation, the popup window can be set be either open or closed when the document is opened [4.2.027]
- size and position of the popup can also be specified
===========================
mPDF v4.2 (27/01/2010)
===========================
@ -28,7 +437,6 @@ Bug fixes
- CJK in tables when not using CJK (utf-8-s) autosized very small as characters did not word-wrap
- parsing stylesheets: background image not recognised if containbed uppercase characters in file name
- "double" border on table used white between the lines instead of current background colour
- mPDFI: template documents overwriting HTML headers
- $this->shrink_tables_to_fit = 0 or false caused fatal errors
- background color or images not printing correctly when breaking across pages
- background not printed for List inside a block element
@ -38,9 +446,10 @@ Bug fixes
- margin-collapse at top of page not working if bookmark/annotation/indexentry/toc
- column break triggered by HR triggering a second column break
- an empty 'position:fixed' element with no/auto width or height caused fatal error
- mPDFI: template documents were overwriting HTML headers
- mPDFI: function Overwrite (to change text in existing PDF) - fatal error if using with encrypted file
Bug - not fixed - see below
Bug - not fixed
- WriteHTML('',2) with '2' parameter not recognising 'margin-collapse:collapse' for DIVs or 'line-height' set in default CSS 'BODY'
@ -48,14 +457,14 @@ Bug - not fixed - see below
New or Updated Files
--------------------
mpdf.php
classes/gif.php
classes/indic.php
compress.php
config.php
config_cp.php
config_fonts.php
mpdf.css
includes/sub_core.php
classes/gif.php
classes/indic.php
includes/subs_core.php
mpdfi/mpdfi.php
unifont/ar_k_001.uni2gn.php
All files in new folder: /progress/*.*
@ -174,7 +583,7 @@ Bug fixes
- Graceful support for block elements inside list items e.g. <li><p>... (not supported, but tolerated)
- Index: Created dividing letters separately for Uppercase and lowercase
- Incorrectly changing input character set when encountering e.g. charset=iso-8859-1 in the text of the document
- Changed so only detects it if within <head>...</head>
- Changed so only detects it if within <head>...</head>
- If Keep-with-table (i.e. H1-6 before table and use_kwt true), if pagebreak forced anyway, borders did not print on previous page
- Background-image used in HTML footer not appearing (correctly)
- RTL tables: nested tables will not automatically transpose L->R
@ -205,7 +614,7 @@ CSS style height now partially supported on block elements DIV, P, H1 etc. --IF-
- will not force a pagebreak (max. at bottom of page)
- % is interpreted as % of printable page height (inside margins)
<TFOOT> now supported (placed at start as in HTML spec) displays at end of table, and repeats as a footer
Background-image and background-gradient now supported in TD and TH (works in all cases except: background-image is not rotated or
Background-image and background-gradient now supported in TD and TH (works in all cases except: background-image is not rotated or
positioned correctly if table is rotated)
NB Background images and background-gradients do not work if Columns are being used, or if $use_kwt is TRUE (keep-with-table),
or if page-break-inside:avoid is active.
@ -269,7 +678,7 @@ $arr = array();
if ($arr['index'] == 5 ) {...}
To prevent this, lines were added at the start of the mpdf.php script to turn error notices OFF.
In a move towards making mPDF able to run with full error_reporting on, a large amount of the script has been altered
In a move towards making mPDF able to run with full error_reporting on, a large amount of the script has been altered
e.g. the line above would be changed to:
if (isset($arr['index'] && $arr['index'] == 5 ) {...}
@ -356,7 +765,7 @@ htmltoolkit.php
Developers only
---------------
- Background-color handling in CSS changed so only inherited/cascaded when Columns active or Keep-block-together
- Background-color handling in CSS changed so only inherited/cascaded when Columns active or Keep-block-together
- otherwise would overwrite background image with inherited color
- all %.2f used in sprintf() changed to %.3f in htmltoolkit.php and mpdf.php to increase accuracy of div border lines in columns etc.
- variable $use_embeddedfonts_1252 renamed to $useOnlyCoreFonts as more precise: depracated but still supported.
@ -596,7 +1005,7 @@ CSS changes
Numbered Lists
--------------
Variables set at the top of mpdf.php can be set to change:
- text alignment of numbers in numbered lists (default Right)
- text alignment of numbers in numbered lists (default Right)
var $list_align_style = 'R';
- content to follow a numbered list marker e.g. '.' gives 1. or IV. whereas ')' gives 1) or a)
var $list_number_suffix = '.';
@ -627,12 +1036,12 @@ This has been changed so that it only overrides when the rotate angle is between
=========
Bug fixes
=========
- List - list starting after "<div>Then some text not in a block element<ol>" incorrectly output
- List - list starting after "<div>Then some text not in a block element<ol>" incorrectly output
- Tables - if cell font-size set smaller than default for the table, does not shrink the cell height
- Columns (tables) - columns breaking across rows e.g. in the middle of a table cell
- Tables - if table width set to e.g. 100% but cols are less, was not making up to set width
- Watermark - was not printing if using HTMLFooter
- Lists - not aligning numbering correctly if different font sizes used for bullet & text etc.
- Lists - not aligning numbering correctly if different font sizes used for bullet & text etc.
- Lists - indent of text did not correctly allow for Maximum number in <ol> list
- Table does not always move correctly to a new page
- Table cell incorrectly calculated height causing text to overflow cell when printed
@ -733,7 +1142,7 @@ DL did not close block correctly
Transparent not recognised as color/background-color
(Attempted a fix by setting to ignore it! - fn. convertcolor in htmltoolkit.php)
Zero (0) not displaying if only thing in table cell or tags e.g. <td>0</td> <p>0</p>
Zero (0) not displaying if only thing in table cell or tags e.g. <td>0</td> <p>0</p>
(Fixed - fn.WriteHTML)
Page Headers/Footers - Simple Headers or Footers defined as e.g. '|{PAGENO}|' were not split into 3 components, but output |6| in the outer margin.
@ -765,10 +1174,10 @@ See the web page example - this stops the CSS stylesheets specifically marked fo
Table borders (in collapsed model) incorrectly calculated which border had dominance (mPDF <=1.3 determined the overriding border by its color)
(Fixed to follow CSS 2.1 specifications: width >> CSS dominance (cell>table) >> T & L > B & R)
In the border-collapse=collapse mode, the following rules determine which border style "wins" in case of a conflict:
1. Borders with the 'border-style' of 'hidden' take precedence over all other conflicting borders.
1. Borders with the 'border-style' of 'hidden' take precedence over all other conflicting borders.
2. narrow borders are discarded in favor of wider ones.
3. styles are preferred in this order: 'double', 'solid', 'dashed', 'dotted', 'ridge', 'outset', 'groove', and the lowest: 'inset'.
4. If border styles differ only in color, then a style set on a cell wins over one on a table.
4. If border styles differ only in color, then a style set on a cell wins over one on a table.
5. When two elements of the same type conflict, then the one further to the left or top wins out.
Parsing CSS, a missed level would not be picked up i.e. CSS = div.refstr1 p {...} would not pick up:
@ -856,7 +1265,7 @@ $mpdf->WriteHTML($stylesheet,1);
$mpdf->WriteHTML($html); // this one cleared the array $this->cascadeCSS; conatining cascaded CSS information from stylesheets
You were meant to call:
$mpdf->WriteHTML($html,2); // which doesn't re-parse the CSS information
v2.0 changed so that
v2.0 changed so that
$mpdf->WriteHTML($html); no longers clears the array $this->cascadeCSS and so can be used repeatedly;
@ -931,7 +1340,7 @@ EAN barcode
An EAN barcode can be generated
function writeBarcode($code, $showisbn=1, $x='', $y='', $size=1, $border=0, $paddingL=1, $paddingR=1, $paddingT=2, $paddingB=2) {
It accepts 12 or 13 digits with or without - hyphens as $code e.g.
$mpdf->writeBarcode('978-1234-567-890', 1, $mpdf->x, $mpdf->y);
$mpdf->writeBarcode('978-1234-567-890', 1, $mpdf->x, $mpdf->y);
NB - IMPORTANT***
A new font - OCR-B font/unifont is required, and needs to be added to the config.php file
cf. http://www.gs1uk.org/downloads/bar_code/Bar coding getting it right.pdf
@ -995,7 +1404,7 @@ function AddExtGState() edited to check if graphics state already exists before
ASCII-proof code
================
"»¤¬" used as a special identifier in the program changed to "\xbb\xa4\xac" to make the mpdf.php script file immune from someone saving it as a utf-8 encoded file
"<EFBFBD><EFBFBD><EFBFBD>" used as a special identifier in the program changed to "\xbb\xa4\xac" to make the mpdf.php script file immune from someone saving it as a utf-8 encoded file
Images
======
@ -1147,7 +1556,7 @@ fn. OpenTag() [LI] $this->blockjustfinished=false to prevents newline after firs
Uses of mb_ereg_replace removed, and mb_split changed - requires regex_encoding (regex_encoding only used as UTF-8)
fn. WriteHTML: attributes are trimmed with trim() to allow correct handling of e.g. class="bpmBook "
fn. WriteHTML: attributes are trimmed with trim() to allow correct handling of e.g. class="bpmBook "
fn. printbuffer() and fn. openTag() to ensure
<div><div><p> outputs top margins/padding for both 1st and 2nd div

@ -1,389 +0,0 @@
===========================
mPDF v4.2 (27/01/2010)
===========================
Bug fixes
---------
- empty variable (undefined var, false, null, array() etc.) sent to WriteHTML produced error message "Invalid UTF-8"
- CJK in tables when not using CJK (utf-8-s) autosized very small as characters did not word-wrap
- parsing stylesheets: background image not recognised if containbed uppercase characters in file name
- "double" border on table used white between the lines instead of current background colour
- mPDFI: template documents overwriting HTML headers
- $this->shrink_tables_to_fit = 0 or false caused fatal errors
- background color or images not printing correctly when breaking across pages
- background not printed for List inside a block element
- columns starting near end of page with no room for a line triggering column change (resulting in text misplaced) not page break
- table cell not calculating cell height correctly when "orphan" characters (;:,.?! etc.) at end of line
- table breaking page in column 2 when col 1 is rowspan'ned
- margin-collapse at top of page not working if bookmark/annotation/indexentry/toc
- column break triggered by HR triggering a second column break
- an empty 'position:fixed' element with no/auto width or height caused fatal error
- mPDFI: function Overwrite (to change text in existing PDF) - fatal error if using with encrypted file
Bug - not fixed - see below
- WriteHTML('',2) with '2' parameter not recognising 'margin-collapse:collapse' for DIVs or 'line-height' set in default CSS 'BODY'
New or Updated Files
--------------------
mpdf.php
classes/gif.php
classes/indic.php
compress.php
config.php
config_cp.php
config_fonts.php
mpdf.css
includes/sub_core.php
mpdfi/mpdfi.php
unifont/ar_k_001.uni2gn.php
All files in new folder: /progress/*.*
NEW FOLDER /tmp/ required with read/write permissions - used for temporary image files or progress bars
New fonts: zn_hannom_a and unBatang_0613 available as CJK font pack
zn_hannom_a - contains all characters in SJIS, BIG-5, GBK, and HKCSS codepages (Japanes & Chinese)
(except greek and cyrillic characters, and HKCS > U+x20000;)
unbatang_0613 - all characters in UHC codepage (Korean)
Changes to configuration files
==============================
config_cp.php
-------------
Mainly just tidied up, and:
default: $cp = "UTF-8"; $spacing = ""; break; // Don't need to set unifonts - will make all available if omitted/left blank
Default spacing set to '' (i.e. mixed character/word)
spacing=C removed for Vietnamese (?why there) to allow spacing as for any european text
spacing=C added to Thai (should have been there all along)
config.php
----------
$defaultCSS changed to make appearance closer to that of browsers:
img { margin: 0; vertical-align: baseline; }
table { margin: 0; }
textarea { vertical-align: text-bottom; }
(See also notes on line-height)
New Configuration variables in 4.2:
$this->useSubstitutionsMB = false; // Substitute missing characters in UTF-8(multibyte) documents - from core fonts
$this->falseBoldWeight = 5; // Weight for bold text when using an artificial (outline) bold; value 0 (off) - 10 (rec. max)
$this->collapseBlockMargins = true; // Allows top and bottom margins to collapse between block elements
$this->progressBar = false; // Shows progress-bars whilst generating file
$this->normalLineheight = 1.33; // Value used for line-height when CSS specified as 'normal' (default)
// When writing a block element with position:fixed and overflow:auto, mPDF scales it down to fit in the space
// by repeatedly rewriting it and making adjustments. These values give the adjustments used, depending how far out
// the previous guess was. The higher the number, the quicker it will finish, but the less accurate the fit may be.
// FPR1 is for coarse adjustments, and FPR4 for fine adjustments when it is getting closer.
$this->incrementFPR1 = 10;
$this->incrementFPR2 = 20;
$this->incrementFPR3 = 30;
$this->incrementFPR4 = 50;
mpdf.css
--------
Now contains (commented out) lines to return behaviour to pre-4.2 behaviour:
img { margin: 0.83em 0; vertical-align: bottom; }
table { margin: 0.5em; }
textarea { vertical-align: top; }
Font updates:
=============
Indic Tamil numeral for Zero missing - converted to standard zero 0 (in classes/indic.php)
ar_k_001.uni2gn.php - reference to small 'z' missing - now added (works with subsets but not with full font)
WriteHTML($html,2)
==================
WriteHTML($html,2) i.e. with the ,2 did not set BODY CSS - this was unintentional, and has been changed in 4.2
Line-height and margin-collapse were therefore not cascaded through the document; the line-height defaulted to 1.2,
and margin-collapse (which collapses top and bottom margins at the top of pages) was not enabled.
If you used ",2" and want to keep layout:
- Change $this->normalLineheight = 1.2; in config.php
- Change defaultCSS: 'MARGIN-COLLAPSE' => 'none', in config.php
NB also $this->collapseBlockMargins = false; NB This does between block elements
NB You cannot now reset default font during document by redefining vars e.g. $mpdf->default_font = 'xxx'
Now WriteHTML(,2) - does NOT read metatags, <style> or stylesheets from HTML, <html> or <body> inline CSS
- DOES use defaultCSS, and stored CSS and stored cascading CSS
- DOES use the above to overwrite defaultfont, defaultfontsize
- DOES use the above to set (cascading) margin-collapse (pagetops) and line-height from BODY
- therefore problem trying to set default_font, default_lineheight_correction etc programmatically
- use SetDefaultFont(), SetDefaultFontSize() - (now altered to update $defaultCSS and $CSS['BODY'][''])
- new SetDefaultBodyCSS($property, $value) - use to update [BODY] line-height etc. during program e.g. columns example
NEW FEATURES
============
PROGRESS BAR
------------
You can now show a progress bar whilst mPDF generates the file.
It is not recommended for regular use - it loads a separate HTML page to the browser, and may slow things down.
May be useful if the end-user is waiting a long time, or for development purposes.
1) You need to define _MPDF_URI as a relative path or URI (NOT a relative file system path)
- call this in your script before instantiating the class: new mPDF()
2) Call $mpdf->StartProgressBarOutput(0|1|2); in your script before using WriteHTML(), OR
- or set $this->progressBar = 0|1|2; in config.php file (0 off, 1 simple, 2 advanced)
StartProgressBarOutput(2) shows a more advanced/complex set of progress bars (default = 1)
Note on defined Paths:
_MPDF_PATH must be a relative or absolute file system path
_MPDF_URI must be a relative or absolute URI (seen from the browser's point of view)
mPDF will usually be able to automatically set _MPDF_PATH if you do not define it, but it cannot set _MPDF_URI
Example:
Your script is at: http://subdomain.mydomain.com/script.php = /homepages/123456/htdocs/public/subdomain/script.php
Your MPDF file is: http://www.mydomain.com/mpdf41/mpdf.php = /homepages/123456/htdocs/public/mpdf41/mpdf.php
_MPDF_PATH (from script.php to mpdf folder) - can be:
../mpdf41/ or
/homepages/123456/htdocs/public/mpdf41/
It cannot be http://www.mydomain.com/mpdf41/
_MPDF_URI must be:
http://www.mydomain.com/mpdf41/
It cannot be a relative path - because you can't have ../ from the subdomain URI
IF _MPDF_URI is not defined - mPDF silently ignores and leaves out the progress bar (or if debug gives warning)
LINE-HEIGHT
-----------
The handling of line-height has been generally overhauled. Also some anomalies have been unearthed, so the layout of
your documents may change with v4.2.
The most significant change is that prior to v4.2, line-height was inherited as a factor of the fontsize i.e.
<div id="1" style="font-size: 14pt; line-height: 28pt;"><div id="2" style="font-size: 28pt;">
When the line-height was applied to div 1, it was calculated to be 2 x the fontsize - this was the value inerited by div 2
which therefore set a line-height of 2 x 28 = 56pt.
Inheritance now follows the CSS2 recommendation:
* normal is inherited as "normal"
* 1.2 is inherited as a factor
* 120% is converted to an actual value and then inherited as the computed value
* em is converted to an actual value and then inherited as the computed value
* px pt mm are inherited as fixed values
The value used for 'normal' is now defined in config.php by $normalLineheight (default 1.33) rather than $default_lineheight_correction (1.2)
The defaultCSS BODY>>LINE-HEIGHT is now set as 'normal' rather than 1.33
Block-level elements and lists use $normalLineheight as default now (unless overridden by CSS style)
Lists inherit from containing block-level element, and lists inherit from containing lists.
Tables do not inherit from containing block (as per browsers).
Table default line-height is set by $defaultCSS in config.php
So the $defaultCSS 'BODY' line-height sets for all except tables.
Line-height can be set on UL,OL at every level, but not on LI items
Line-height can only be set on top-level table (not nested tables, nor table cells TD/TH).
Textarea - does not support CSS line-height - can change for whole document using $this->textarea_lineheight in config.php
Algorithm used for line-height:
If line-height set on a block-level element is an ABSOLUTE value (including %, em) it is fixed for the line unless:
A font size on the line (e.g. in a span) is greater than the computed line-height for that line
An image has a height greater than the computed line-height for that line
e.g. <div style="font-size: 12pt; line-height: 2em;">Hallo <span style="font-size: 26pt">World...
- line-height will increase from 24pt (2em x 12pt) to 26pt
The vertical positioning of the text baseline will remain equally spaced unless:
images exceed the initial line-height.
large fontsize >= 0.8 x the initial line-height.
e.g. <div style="font-size: 10pt; line-height: 2em;">Hallo <span style="font-size: 18pt">World...
If line-height is set to be less than the fontsize, this will be respected UNLESS a larger fontsize (eg in span) or an image is included
on the line, in which case the line-height is expanded to fit -
LISTS - will always expand to the largest fontsize (including the bullet or number).
If line-height is a number/factor:
Line height will be based on the largest fontsize (x factor) or image height (NOT x factor) on the line.
The vertical positioning of the text baseline will be adjusted so the centre-line runs through the
middle of the largest font-size on the line.
This gives results which roughly match browsers, but note that not even IE8 and FF3 are exactly the same in detail.
A line-height cannot be defined as a number (factor) less than 1.0 - it will be set as 1.0
Absolute values that are less than 1 (including e.g. 80%) are respected - unless a larger fontsize or an image on the line.
Line-height - Backwards compatability?
--------------------------------------
The default settings should generally give the same results as pre-4.2 version, unless you specified absolute line-heights in your CSS.
If you did, the only way is to go back and edit your CSS stylesheets.
If you use WriteHTML($html,2) with the '2' parameter - see notes above.
If you set $mpdf->default_lineheight_correction programmatically -
The old example file for columns used WriteHTML('',2) - see below - and
$mpdf->default_lineheight_correction = 1.1;
This no longer works because the defaultCSS value for line-height overrides this.
You can use:
$mpdf->SetDefaultBodyCSS('line-height', 1.1); // A new function
MARGIN-COLLAPSE BETWEEN BLOCK ELEMENTS
--------------------------------------
mPDF has always allowed margins to be collapsed at the top and bottom of pages (although see notes on WruiteHTML('',2) )
This is specified by the custom CSS property "margin-collapse: collapse"
mPDF 4.2 also allows margins to collapse between block elements on the page. This is the default behaviour in browsers,
and has been enabled in mPDF by default.
NB IMPORTANT - THIS MAY CHANGE THE APPEARANCE OF YOUR DOCUMENTS *****
A configuration variable in config.php enables/disables this (default=true):
$this->collapseBlockMargins = true; // mPDF 4.2 Allows top and bottom margins to collapse between block elements
Change this to false if you wish to retain the layout of your previous files.
Margin collapse works between lists, tables and all standard block-level elements (DIV, P, H1-6 etc.)
NB Firefox does not collapse table margins, but IE8 does.
TABLE RESIZING
--------------
mPDF attempts to layout tables according to HTML and CSS specifications. However, because of
the difference between screen and paged media, mPDF resizes tables when necessary to make
them fit the page. This will happen if the minimum table-width is greater than the page-width.
Minimum table-width is defined as the minimum width to accomodate the longest word in each
column i.e. words will never be split.
This resizing (minimum-width) can be disabled using a custom CSS property "overflow" on the
TABLE tag. There are 4 options:
<table style="overflow: auto"> (this is the default, using resizing)
<table style="overflow: visible"> (disables resizing, but allows overflow to show)
<table style="overflow: hidden"> (disables resizing, and hides/clips any overflow)
<table style="overflow: wrap"> (forces words to break as necessary)
NB You cannot disable automatic resizing if a row-height is greater than the page-height.
This only works on the top-level table (i.e. ignored on "nested" tables).
overflow: visible will not extend the containing block element.
Ignored on rotated tables.
Ignored if columns are being used.
ARTIFICIAL BOLD & ITALIC
------------------------
mPDF will create "artificial" bold & italic font styles if they are not available as separate
font files.
A configuration variable in config.php can vary how bold is bold:
$this->falseBoldWeight = 5; // Weight for bold text when using an artificial (outline) bold; value 0 (off) - 10 (rec. max)
CSS "DOUBLE" BORDER-STYLE
-------------------------
CSS support for "double" border on block elements. NB Tables support the full range of CSS values for
border-style; block elements now support just solid and double.
CHARACTER SUBSTITUTION IN UTF-8
-------------------------------
Character substitution is used in codepaged PDF files (e.g. win-1252) to enable characters which exist in the core Adobe fonts
(including symbols and zapfdingbats) to be displayed when they do not exist in the font currently being used.
Character substitution in UTF-8 files was possible but erratic prior to v4.0 - then disabled in v4.0
v4.2 introduces a new implementation of character substitution. When enabled, any characters which do not exist in the current
font - but which do exist in the document's default font - will be substituted.
There will be a time penalty for using this, as each character is inspected to check if it exists in the current font.
This may be useful for some of the specialist fonts such as arabic, indic and CJK.
A configuration variable in config.php enables/disables this (default=false):
$this->useSubstitutionsMB = false; // Substitute missing characters in UTF-8(multibyte) documents - from core font
IMAGES
------
Image handling has been completely overhauled (again!) in 4.2
(See the discussion: http://mpdf.bpm1.com/forum/comments.php?DiscussionID=180&page=1#Item_6)
IMPORTANT - a new folder is required [your_mpdf_folder]/tmp/ with read/write permissions.
PNG files (unless with alpha channel or interlaced), JPG and WMF images are read directly and are most efficient on resources.
GIF files use the GD library - if available - this is quick, but can use enormous amount of memory for large files.
GIF files without the GD library are very, very slow - it is recommended to change the image type if at all possible.
PNG files with alpha channel or interlaced require the GD library, and can use large amoutns of memory.
Images generated by a script e.g. myimage.php should be handled exactly the same as a native image file type.
NB The 'compress' utility no longer does anything other than IMAGES or IMAGES-WMF
BACKGROUND-IMAGES
-----------------
Background-gradient and background-image can now co-exist (layers = bgcolor < gradient < image)
This works for BODY and also for block elements or tables.
IMAGE DATA FROM PHP
-------------------
A PHP variable containing image data can be passed directly to mPDF. You need to allocate the data to a class variable
(you can make any name up) e.g.
$mpdf->myvariable = file_get_contents('alpha.png');
The image can then be referred to by use of "var:varname" instead of a file name,
either in src="" or direct to Image() function e.g.
$html = '<img src="var:myvariable" />';
$mpdf->WriteHTML($html);
- OR -
$mpdf->Image('var: myvariable',0,0);
IMAGE - VERTICAL-ALIGN & MARGIN
-------------------------------
Vertical-alignment of images has been rewritten. All of the CSS properties are now supported:
top, bottom, middle, baseline, text-top, and text-bottom.
'baseline' is now set as the default value for images in defaultCSS (config.php)
and 'text-bottom' as the default for textarea.
In-line images can now be individually aligned (vertically) i.e. different alignments can co-exist on one line.
The defaultCSS value for margin on images has been changed to 0. Prior to 4.2, the default values of margin (0.3-0.5em)
and vertical-align (bottom) could be used to approximately align the image with the text baseline.
The new default values should therefore not significantly change appearances in most cases.
These new values are consistent with most browsers.
IMAGE - PADDING
---------------
CSS property padding is now supported for images <IMG>. Default is set in defaultCSS to 0
CSS @PAGE SELECTOR
------------------
The functions AddPage() and TOCpagebreak() have an extra last parameter = $pagesel i.e. named @page selector
The @page can also be specified in:
<pagebreak page-selector="pagename"
<formfeed page-selector="pagename"
<tocpagebreak toc-page-selector="pagename" page-selector="pagename"
Different headers/footers can be specified on :first :left and :right pages.
"odd-header-name" etc is still recognised on @page or @page name (and takes priority over newer method "footer"/"header")
but new custom properties "header" and "footer" are recognised on ALL, i.e. @page :left
Other values are now recognised on :first, :left and :right selectors
i.e. as well as header/footer, you can specify margins, backgrounds etc
One exception is margin-right and margin-left:
Left/right-margins must be the same for every page (of that @page name), or mirrored using $mpdf->mirrorMargins;
margin-right and margin-left are ignored when set on :left or :right selectors
See the example given in discussion forum: http://mpdf.bpm1.com/forum/comments.php?DiscussionID=177&page=1#Comment_658
LISTS IN TABLES
---------------
If using a UTF-8 document, and the current font contains the necessary characters, it will use disc, circle and square
as bullets instead of a hyphen (-)

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
<?php
$excl = array( 'TABLES', 'LISTS', 'IMAGES-CORE',
'IMAGES-WMF', 'TABLES-ADVANCED-BORDERS', 'UNICODE-FONTS', 'HTMLHEADERS-FOOTERS', 'COLUMNS', 'TOC', 'INDEX', 'BOOKMARKS', 'BARCODES', 'FORMS', 'WATERMARK', 'RTL', 'INDIC', 'CJK', 'ANNOTATIONS', 'GRADIENTS', 'BACKGROUND-IMAGES', 'CSS-FLOAT', 'CSS-IMAGE-FLOAT', 'CSS-POSITION', 'CSS-PAGE', 'BORDER-RADIUS', 'HYPHENATION', 'ENCRYPTION', 'DIRECTW', 'PROGRESS-BAR');
$excl = array( 'TABLES', 'LISTS', 'IMAGES-CORE',
'IMAGES-WMF', 'TABLES-ADVANCED-BORDERS', 'UNICODE-FONTS', 'HTMLHEADERS-FOOTERS', 'COLUMNS', 'TOC', 'INDEX', 'BOOKMARKS', 'BARCODES', 'FORMS', 'WATERMARK', 'RTL', 'INDIC', 'CJK', 'ANNOTATIONS', 'GRADIENTS', 'BACKGROUND-IMAGES', 'CSS-FLOAT', 'CSS-IMAGE-FLOAT', 'CSS-POSITION', 'CSS-PAGE', 'BORDER-RADIUS', 'HYPHENATION', 'ENCRYPTION', 'DIRECTW', 'PROGRESS-BAR', 'IMPORTS');
// *DIRECTW* = Write, WriteText, WriteCell, Text, Shaded_box, AutosizeText
@ -18,7 +18,7 @@ if (!isset($_POST['generate']) || $_POST['generate']!='generate') {
if (!file_exists('mpdf_source.php')) {
die("ERROR - Could not find mpdf_source.php file in current directory. Please rename mpdf.php as mpdf_source.php");
die("ERROR - Could not find mpdf_source.php file in current directory. Please rename mpdf.php as mpdf_source.php");
}
@ -38,7 +38,7 @@ function checkedAll (frm1) {
{
checked = false
}
for (var i =0; i < aa.elements.length; i++)
for (var i =0; i < aa.elements.length; i++)
{
aa.elements[i].checked = checked;
}
@ -77,7 +77,7 @@ exit;
}
$inc = $_POST['inc'];
if (is_array($inc) && count($inc)>0 ) {
if (is_array($inc) && count($inc)>0 ) {
foreach($inc AS $i=>$v) {
$key = array_search($i, $excl);
unset($excl[$key]);
@ -116,8 +116,8 @@ foreach($l AS $k=>$ln) {
}
$exclude = true;
}
if (count($exclflags)==0 && !$exclude) {
$x .= $ln;
if (count($exclflags)==0 && !$exclude) {
$x .= $ln;
}
}

@ -34,9 +34,13 @@ $this->falseBoldWeight = 5; // mPDF 4.2 Weight for bold text when using an art
$this->useOnlyCoreFonts = false; // alias = $use_embeddedfonts_1252
$this->allow_output_buffering = false;
$this->enableImports = false; // mPDF 4.2.006 Adding mPDFI
$this->collapseBlockMargins = true; // mPDF 4.2 Allows top and bottom margins to collapse between block elements
$this->progressBar = 0; // mPDF 4.2 Shows progress-bars whilst generating file 0 off, 1 simple, 2 advanced
$this->dpi = 96; // mPDF 4.4.003 To interpret "px" pixel values in HTML/CSS (see img_dpi below)
// Automatically correct for tags where HTML specifies optional end tags e.g. P,LI,DD,TD
// If you are confident input html is valid XHTML, turning this off may make it more reliable(?)
$this->allow_html_optional_endtags = true;
@ -44,21 +48,28 @@ $this->ignore_invalid_utf8 = false;
$this->text_input_as_HTML = false; // Converts all entities in Text inputs to UTF-8 before encoding
$this->useGraphs = false;
// PDFA1-b Compliant files
$this->PDFA = false; // mPDF 4.2.018 true=Forces compliance with PDFA-1b spec
$this->PDFAauto = false; // mPDF 4.2.018 Overrides warnings making changes when possible to force PDFA1-b compliance
$this->ICCProfile = ''; // mPDF 4.2.018 Colour profile OutputIntent for defaultRGB colorSpace
// sRGB_IEC61966-2-1 (=default if blank and PDFA), or other added .icc profile
// mPDF 4.2 - When writing a block element with position:fixed and overflow:auto, mPDF scales it down to fit in the space
// by repeatedly rewriting it and making adjustments. These values give the adjustments used, depending how far out
// the previous guess was. The higher the number, the quicker it will finish, but the less accurate the fit may be.
// the previous guess was. The lower the number, the quicker it will finish, but the less accurate the fit may be.
// FPR1 is for coarse adjustments, and FPR4 for fine adjustments when it is getting closer.
$this->incrementFPR1 = 10;
$this->incrementFPR1 = 10; // i.e. will alter by 1/[10]th of width and try again until within closer limits
$this->incrementFPR2 = 20;
$this->incrementFPR3 = 30;
$this->incrementFPR4 = 50;
$this->incrementFPR4 = 50; // i.e. will alter by 1/[50]th of width and try again when it nearly fits
// DEBUGGING & DEVELOPERS
$this->showStats = false;
$this->debug = false;
$this->showImageErrors = false; // false/true;
$this->showImageErrors = false; // false/true;
$this->table_error_report = false; // Die and report error if table is too wide to contain whole words
$this->table_error_report_param = ''; // Parameter which can be passed to show in error report i.e. chapter number being processed//
@ -73,7 +84,8 @@ $this->annotOpacity = 0.5; // default opacity for Annotations
$this->anchor2Bookmark = 0; // makes <a name=""> into a bookmark as well as internal link target; 1 = just name; 2 = name (p.34)
// CSS & STYLES
$this->disablePrintCSS; // prevents CSS stylesheets marked as media="print" to be ignored
$this->CSSselectMedia='print'; // mPDF 4.3.001 screen, print, or any other CSS @media type (not "all")
// $this->disablePrintCSS depracated // mPDF 4.3.001
$this->rtlCSS = 2; // RTL: 0 overrides defaultCSS; 1 overrides stylesheets; 2 overrides inline styles - TEXT-ALIGN left => right etc.
// when directionality is set to rtl
@ -91,33 +103,45 @@ $this->header_line_spacing = 0.25; // spacing between bottom of header and line
$this->footer_line_spacing = 0.25; // spacing between bottom of header and line (if present) - function of fontsize
// If 'pad' margin-top sets fixed distance in mm (padding) between bottom of header and top of text.
// If 'stretch' margin-top sets a minimum distance in mm between top of page and top of text, which expands if header is too large to fit.
$this->setAutoTopMargin = false;
$this->setAutoBottomMargin = false;
$this->setAutoTopMargin = false;
$this->setAutoBottomMargin = false;
$this->autoMarginPadding = 2; // distance in mm used as padding if 'stretch' mode is used
// TABLES
$this->simpleTables = false; // mPDF 4.2.017 Forces all cells to have same border, background etc. Improves performance
$this->packTableData = false; // mPDF 4.3.009 Reduce memory usage processing tables (but with increased processing time)
$this->ignore_table_percents = false;
$this->ignore_table_widths = false;
$this->keep_table_proportions = false; // If table width set > page width, force resizing but keep relative sizes
// Also forces respect of cell widths set by %
$this->shrink_tables_to_fit = 1.4; // automatically reduce fontsize in table if words would have to split ( not in CJK)
// 0 or false to disable; value (if set) gives maximum factor to reduce fontsize
$this->tableMinSizePriority = false; // mPDF 4.5.006 If page-break-inside:avoid but cannot fit on full page without
// exceeding autosize; setting this value to true will force respsect for
// autosize, and disable the page-break-inside:avoid
$this->use_kwt = false;
// IMAGES
$this->img_dpi = 96; // Default dpi to output images if size not defined
// See also above "dpi"
// TEXT SPACING & JUSTIFICATION
$this->justifyB4br = false; // mPDF 4.3.003 In justified text, <BR> does not cause the preceding text to be justified in browsers
// Change to true to force justification (as in MS Word)
$this->tabSpaces = 8; // Number of spaces to replace for a TAB in <pre> sections
// Notepad uses 6, HTML specification recommends 8
$this->jSWord = 0.4; // Proportion (/1) of space (when justifying margins) to allocate to Word vs. Character
$this->jSmaxChar = 2; // Maximum spacing to allocate to character spacing. (0 = no maximum)
$this->jSmaxCharLast = 1; // Maximum character spacing allowed (carried over) when finishing a last line
$this->jSmaxWordLast = 2; // Maximum word spacing allowed (carried over) when finishing a last line
$this->orphansAllowed = 5; // No of SUP or SUB characters to include on line to avoid leaving e.g. end of line//<sup>32</sup>
$this->orphansAllowed = 5; // No of SUP or SUB characters to include on line to avoid leaving e.g. end of line//<sup>32</sup>
$this->normalLineheight = 1.33; // mPDF 4.2 - Value used for line-height when CSS specified as 'normal' (default)
@ -143,6 +167,7 @@ $this->list_number_suffix = '.'; // Content to follow a numbered list marker e.g
// WATERMARKS
$this->watermarkImgBehind = false; // mPDF 4.3.018
$this->showWatermarkText = 0; // alias = $TopicIsUnvalidated
$this->showWatermarkImage = 0;
$this->watermarkText = ''; // alias = $UnvalidatedText
@ -150,7 +175,10 @@ $this->watermarkImage = '';
$this->watermark_font = '';
$this->watermarkTextAlpha = 0.2;
$this->watermarkImageAlpha = 0.2;
$this->watermarkImgAlphaBlend = 'Normal'; // mPDF 4.4.002
// Accepts any PDF spec. value: Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn,
// HardLight, SoftLight, Difference, Exclusion
// "Multiply" works well for watermark image on top
// BORDERS
$this->autoPadding = false; // Automatically increases padding in block elements with border-radius set - if required
@ -373,23 +401,23 @@ $this->defaultCSS = array(
//////////////////////////////////////////////////
// VALUES ONLY LIKELY TO BE CHANGED BY DEVELOPERS
//////////////////////////////////////////////////
$this->pdf_version = '1.5';
$this->pdf_version = '1.4'; // mPDF 4.2.018 Previously set as 1.5
// Hyphenation
$this->SHYlanguages = array('en','de','es','fi','fr','it','nl','pl','ru','sv'); // existing defined patterns
$this->default_lineheight_correction=1.2; // Value 1 sets lineheight=fontsize height;
$this->default_lineheight_correction=1.2; // Value 1 sets lineheight=fontsize height;
// Value used if line-height not set by CSS (usuallly is)
$this->fontsizes = array('XX-SMALL'=>0.7, 'X-SMALL'=>0.77, 'SMALL'=>0.86, 'MEDIUM'=>1, 'LARGE'=>1.2, 'X-LARGE'=>1.5, 'XX-LARGE'=>2);
// CHARACTER PATTERN MATCHES TO DETECT LANGUAGES
// pattern used to detect RTL characters -> force RTL
$this->pregRTLchars = "\x{0590}-\x{06FF}\x{0750}-\x{077F}\x{FB00}-\x{FDFD}\x{FE70}-\x{FEFF}";
$this->pregRTLchars = "\x{0590}-\x{06FF}\x{0750}-\x{077F}\x{FB00}-\x{FDFD}\x{FE70}-\x{FEFF}";
// CJK Chars which require changing and are distinctive of specific charset
$this->pregUHCchars = "\x{3130}-\x{318F}\x{AC00}-\x{D7AF}";
$this->pregSJISchars = "\x{3040}-\x{309F}\x{30A0}-\x{30FF}\x{3190}-\x{319F}\x{31F0}-\x{31FF}";
$this->pregUHCchars = "\x{3130}-\x{318F}\x{AC00}-\x{D7AF}";
$this->pregSJISchars = "\x{3040}-\x{309F}\x{30A0}-\x{30FF}\x{3190}-\x{319F}\x{31F0}-\x{31FF}";
// Chars which distinguish CJK but not between different // mPDF 3.0 widen Plane 3
$this->pregCJKchars = "\x{2E80}-\x{A4CF}\x{A800}-\x{D7AF}\x{F900}-\x{FAFF}\x{FF00}-\x{FFEF}\x{20000}-\x{2FA1F}";
// ASCII Chars which shouldn't break string
@ -400,10 +428,10 @@ $this->pregRTLchars = "\x{0590}-\x{06FF}\x{0750}-\x{077F}\x{FB00}-\x{FDFD}\x{FE7
// Use for chunks > words
$this->pregASCIIchars3 = "\x{0000}-\x{002E}\x{0030}-\x{003B}\x{003F}-\x{007E}"; // all except <>
// Vietnamese - specific
$this->pregVIETchars = "\x{01A0}\x{01A1}\x{01AF}\x{01B0}\x{1EA0}-\x{1EF1}";
// Vietnamese - Chars which shouldn't break string
$this->pregVIETchars = "\x{01A0}\x{01A1}\x{01AF}\x{01B0}\x{1EA0}-\x{1EF1}";
// Vietnamese - Chars which shouldn't break string
$this->pregVIETPluschars = "\x{0000}-\x{003B}\x{003F}-\x{00FF}\x{0300}-\x{036F}\x{0102}\x{0103}\x{0110}\x{0111}\x{0128}\x{0129}\x{0168}\x{0169}\x{1EF1}-\x{1EF9}"; // omits < >
$this->pregHEBchars = "\x{0590}-\x{05FF}\x{FB00}-\x{FB49}"; // Hebrew
// Arabic
$this->pregARABICchars = "\x{0600}-\x{06FF}\x{0750}-\x{077F}\x{FB50}-\x{FDFD}\x{FE70}-\x{FEFF}";
// Characters of Urdu, Pashto, Sindhi (but NOT arabic or persian/farsi) [not covered by DejavuSans font]
@ -413,15 +441,15 @@ $this->pregRTLchars = "\x{0590}-\x{06FF}\x{0750}-\x{077F}\x{FB00}-\x{FDFD}\x{FE7
// INDIC
$this->pregHIchars = "\x{0900}-\x{0963}\x{0966}-\x{097F}"; // Devanagari (Hindi) minus the common indic punctuation 0964,0965
$this->pregBNchars = "\x{0980}-\x{09FF}"; // Bengali
$this->pregBNchars = "\x{0980}-\x{09FF}"; // Bengali
$this->pregPAchars = "\x{0A00}-\x{0A7F}"; // Gurmukhi (Punjabi)
$this->pregGUchars = "\x{0A80}-\x{0AFF}"; // Gujarati
$this->pregORchars = "\x{0B00}-\x{0B7F}"; // Oriya
$this->pregTAchars = "\x{0B80}-\x{0BFF}"; // Tamil
$this->pregTEchars = "\x{0C00}-\x{0C7F}"; // Telugu
$this->pregKNchars = "\x{0C80}-\x{0CFF}"; // Kannada
$this->pregMLchars = "\x{0D00}-\x{0D7F}"; // Malayalam
$this->pregSHchars = "\x{0D80}-\x{0DFF}"; // Sinhala
$this->pregORchars = "\x{0B00}-\x{0B7F}"; // Oriya
$this->pregTAchars = "\x{0B80}-\x{0BFF}"; // Tamil
$this->pregTEchars = "\x{0C00}-\x{0C7F}"; // Telugu
$this->pregKNchars = "\x{0C80}-\x{0CFF}"; // Kannada
$this->pregMLchars = "\x{0D00}-\x{0D7F}"; // Malayalam
$this->pregSHchars = "\x{0D80}-\x{0DFF}"; // Sinhala
$this->pregINDextra = "\x{200B}-\x{200D}\x{0964}\x{0965}\x{0020}-\x{0022}\x{0024}-\x{002E}\x{003A}-\x{003F}\x{005B}-\x{0060}\x{007B}-\x{007E}-\x{00A0}";
// 200B-D=Zero-width joiners; 0964,0965=Generic Indic punctuation; NBSP & general punctuation (excludes # and / so can use in autoFont() )

@ -0,0 +1,6 @@
<html>
<head>
</head>
<body>
</body>
</html>

@ -1,11 +1,52 @@
<?php
// mPDF 4.2.006 - from mPDFI
function _strspn($str1, $str2, $start=null, $length=null) {
$numargs = func_num_args();
if ($numargs == 2) {
return strspn($str1, $str2);
}
else if ($numargs == 3) {
return strspn($str1, $str2, $start);
}
else {
return strspn($str1, $str2, $start, $length);
}
}
// mPDF 4.2.006 - from mPDFI
function _strcspn($str1, $str2, $start=null, $length=null) {
$numargs = func_num_args();
if ($numargs == 2) {
return strcspn($str1, $str2);
}
else if ($numargs == 3) {
return strcspn($str1, $str2, $start);
}
else {
return strcspn($str1, $str2, $start, $length);
}
}
// mPDF 4.2.006 - from mPDFI
function _fgets (&$h, $force=false) {
$startpos = ftell($h);
$s = fgets($h, 1024);
if ($force && preg_match("/^([^\r\n]*[\r\n]{1,2})(.)/",trim($s), $ns)) {
$s = $ns[1];
fseek($h,$startpos+strlen($s));
}
return $s;
}
// For PHP4 compatability
if(!function_exists('str_ireplace')) {
function str_ireplace($search,$replace,$subject) {
$search = preg_quote($search, "/");
return preg_replace("/".$search."/i", $replace, $subject);
return preg_replace("/".$search."/i", $replace, $subject);
}
}
@ -16,7 +57,7 @@ function PreparePreText($text,$ff='//FF//') {
return ('<pre>'.$text.'</pre>');
}
if(!function_exists('strcode2utf')){
if(!function_exists('strcode2utf')){
function strcode2utf($str,$lo=true) {
//converts all the &#nnn; and &#xhhh; in a string to Unicode
if ($lo) { $lo = 1; } else { $lo = 0; }
@ -26,7 +67,7 @@ if(!function_exists('strcode2utf')){
}
}
if(!function_exists('code2utf')){
if(!function_exists('code2utf')){
function code2utf($num,$lo=true){
//Returns the utf string corresponding to the unicode value
//added notes - http://uk.php.net/utf8_encode
@ -43,7 +84,7 @@ if(!function_exists('code2utf')){
}
}
if(!function_exists('codeHex2utf')){
if(!function_exists('codeHex2utf')){
function codeHex2utf($hex,$lo=true){
$num = hexdec($hex);
if (($num<128) && !$lo) return '&#x'.$hex.';'; // i.e. no change

@ -1,16 +1,18 @@
<?php
############################
set_time_limit(600);
set_time_limit(1200);
ini_set("memory_limit","128M");
############################
$cpages = array('win-1252','win-1251','iso-8859-2','iso-8859-4','iso-8859-7','iso-8859-9');
$map_path = '../maps/';
$step = $_REQUEST['step'];
if (isset($_REQUEST['step'])) { $step = $_REQUEST['step']; }
else $step = '';
echo '<html><body>';
if ($_REQUEST['movefonts']==1) { movefonts(); }
if ($_REQUEST['moveunifonts']==1) { moveunifonts(); }
if (isset($_REQUEST['movefonts']) && $_REQUEST['movefonts']==1) { movefonts(); }
if (isset($_REQUEST['moveunifonts']) && $_REQUEST['moveunifonts']==1) { moveunifonts(); }
// INITIAL INSTRUCTIONS
@ -30,14 +32,14 @@ if (!$step) {
}
// STEP 1 -
// STEP 1 -
else if ($step==1) {
echo '<h3>Step 1 - Unibyte (codepage) font files - A</h3>';
echo '<p>The next step will create and execute a file "makefonts.bat" in the current directory</p>';
echo '<p><a href="makefonts.php?step=2">Execute</a> and go to Step 2</p>';
}
// STEP 2 -
// STEP 2 -
else if ($step==2) {
makebatlist('C');
exec('makefonts.bat');
@ -66,7 +68,7 @@ else if ($step==2) {
echo '<p>Execute <a href="makefonts.php?step=3">Step 3</a></p>';
}
// STEP 3 -
// STEP 3 -
else if ($step==3) {
$ff = scandir('./');
foreach($ff AS $f) {
@ -106,11 +108,11 @@ else if ($step==3) {
}
// STEP 4 -
// STEP 4 -
else if ($step==4) {
echo '<h3>Step 4 - Unibyte (codepage) font files - D</h3>';
echo '<p>Copy all of the .php and .z files to the folder [path to mpdf]/mpdf/fonts/</p>';
echo '<p>(This <a href="makefonts.php?step=4&movefonts=1">link</a> may do the job for you)</p>';
echo '<p>(This <a href="makefonts.php?step=4&movefonts=1">link</a> may do the job for you. <b>Note:</b> This will not overwrite files, so you may need to delete files first from the [path to mpdf]/mpdf/fonts/ folder)</p>';
echo '<p>Add the font names to config_fonts.php (and if appropriate to config_cp.php)</p>';
echo '<p>You have now completed font file generation for the codepage Type 1 font files.</p>';
@ -125,7 +127,7 @@ else if ($step==4) {
}
// STEP 5 -
// STEP 5 -
else if ($step==5) {
// First get rid of any .php and .z files left
@ -135,7 +137,7 @@ else if ($step==5) {
$file = substr($f,0,(strlen($f)-4));
foreach($cpages AS $cpage) {
if ($cpage =='win-1252') {
@unlink($file .'.z'); @unlink($file .'.php');
@unlink($file .'.z'); @unlink($file .'.php');
}
else {
@unlink($file .'-'.$cpage.'.z'); @unlink($file .'-'.$cpage.'.php');
@ -146,7 +148,7 @@ else if ($step==5) {
makebatlist('U');
exec('makefonts.bat');
echo '<h3>Step 5 - Unicode TrueType font files - A</h3>';
echo '<p>Check that the following files have been created in the surrent directory (for each of your original .ttf files):</p>';
echo '<p>Check that the following files have been created in the current directory (for each of your original .ttf files):</p>';
echo '<ul><li>fontname.t1a</li>';
echo '<li>fontname.ufm</li>';
echo '<li>fontname.afm</li></ul>';
@ -168,7 +170,7 @@ else if ($step==5) {
// STEP 6 -
// STEP 6 -
else if ($step==6) {
$ff = scandir('./');
foreach($ff AS $f) {
@ -187,7 +189,7 @@ else if ($step==6) {
echo '<p>NB The .afm files have been deleted (but .t1a and .ufm should remain).</p>';
echo '<p>The next step will generate the additional files for embedded subsets</p>';
echo '<p><a href="makefonts.php?step=7">Execute</a> Step 7</p>';
echo '<p><a href="makefonts.php?step=7">Execute</a> Step 7 (NB This may take several minutes for large font files; you may need to increase the time-limit or memory-limits - see the top of the /makefont/makefonts.php file)</p>';
}
@ -302,74 +304,138 @@ else if ($step==7) {
$pdf_diffstr = ''; // String of /Diffs for PDF file
$of_encodingstr = '';
$useChars = array();
//echo "Processing font: ".$file."... <br />\n";
$file_ip = $file.'.t1a';
$fi = file_get_contents($file_ip);
$fi = preg_replace("/\r\n/","\n",$fi);
$subrs='';
$CharStrings='';
$Encoding='';
$file_ip = $file.'.t1a';
$ifh = fopen($file_ip, "rb");
$target = false;
$rem = '';
// Header
list($if_header,$rem) = preg_split('/\/Encoding /s', $fi, 2);
$fi = '/Encoding '.$rem; // restore
$if_header = '';
while(!$target && !feof($ifh)) {
$x = fread($ifh, 2048);
$x = preg_replace("/\r/","",$x);
$if_header .= $x;
if (preg_match('/(.*?)\/Encoding (.*)/s', $if_header , $m)) {
$if_header = $m[1];
$rem = '/Encoding '.$m[2];
$target = true;
}
}
if (feof($ifh)) { die("Error parsing ".$file_ip ); }
// Discard
$target = false;
if (preg_match('/(.*?)currentfile eexec(.*)/s', $rem, $m)) {
$rem = $m[2];
$target = true;
}
$discard = '';
while(!$target && !feof($ifh)) {
$x = fread($ifh, 2048);
$x = preg_replace("/\r/","",$x);
$discard .= $x;
if (preg_match('/(.*?)currentfile eexec(.*)/s', $discard , $m)) {
//$discard = $m[1];
$rem = $m[2];
$target = true;
}
}
if (feof($ifh)) { die("Error parsing ".$file_ip ); }
// Encodings
list($Encoding,$rem) = preg_split('/currentfile eexec/s', $fi, 2);
$fi = $rem; // restore
unset($Encoding); // Not needed
// eexec_start
list($if_eexec_start,$rem) = preg_split('/\/Subrs /s', $fi, 2);
$fi = '/Subrs '.$rem; // restore
if (preg_match('/\/lenIV\s+(\d+)/',$if_eexec_start,$t)) {
$lenIV = $t[1];
}
/* locate the name of the charstring start command - probably /RD */
if (preg_match('/\/([a-zA-Z]*)\s*\{string currentfile.*?readstring/',$if_eexec_start,$t)) {
$cs_start = $t[1];
$target = false;
if (preg_match('/(.*?)\/Subrs (.*)/s', $rem, $m)) {
$if_eexec_start = $m[1];
$rem = $m[2];
$target = true;
}
// Subroutines
$sr = '';
list($subrs,$rem) = preg_split('/\/CharStrings /s', $fi, 2);
$fi = '/CharStrings '.$rem; // restore
preg_match_all('/dup\s+(\d+)\s+\{(.*?)\}\s+NP/s',$subrs, $m);
for($i=0;$i<count($m[0]);$i++) {
if ($i < 5) {
$sr .= "dup ".$m[1][$i]." ";
$sr .= parse_charstring($m[2][$i]);
$sr .= " NP\n";
}
// Save the rest without the return
else {
$if_Subrs[$m[1][$i]] = preg_replace('/\s+return/', '', $m[2][$i]);
else { $if_eexec_start = $rem; }
while(!$target && !feof($ifh)) {
$x = fread($ifh, 2048);
$x = preg_replace("/\r/","",$x);
$if_eexec_start .= $x;
if (preg_match('/(.*?)\/Subrs (.*)/s', $if_eexec_start , $m)) {
$if_eexec_start = $m[1];
$rem = $m[2];
$target = true;
}
}
$offset = 0;
if (feof($ifh)) { die("Error parsing ".$file_ip ); }
// WRITE if_header to .dat
$fh = fopen($file.'.dat', "w");
$offset = 0;
$fh = fopen($file.'.dat', "wb");
_fwriteint($fh, strlen($if_header));
fwrite($fh, $if_header);
$offset += strlen($if_header) + 4;
// WRITE if_eexec_start to .dat
_fwriteint($fh, strlen($if_eexec_start));
fwrite($fh, $if_eexec_start);
$offset += strlen($if_eexec_start) + 4;
unset($if_header );
unset($if_eexec_start );
unset($subrs);
// CharStrings
list($CharStrings,$rem) = preg_split('/mark currentfile closefile/s', $fi, 2);
$fi = 'mark currentfile closefile'.$rem; // restore
preg_match_all('/\/([a-zA-Z0-9._]+)\s+\{(.*?endchar\s+)\}\s+ND/s',$CharStrings, $m);
// SUBROUTINES
$if_Subrs = array();
$target = false;
if (preg_match('/(.*?)\/CharStrings (.*)/s', $rem, $m)) {
$subrs = $m[1];
$rem = $m[2];
$target = true;
}
else { $subrs = $rem; }
preg_match_all('/dup\s+(\d+)\s+\{(.*?)\}\s+NP/s',$subrs, $mm);
for($i=0;$i<count($mm[0]);$i++) {
if ($mm[1][$i] > 4) { $if_Subrs[$mm[1][$i]] = preg_replace('/\s+return/', '', $mm[2][$i]); } // mPDF 4.4.016
}
preg_match('/(.*}\s+NP)(.*)/s', $subrs, $mm);
if(isset($mm[2])) { $subrs = $mm[2]; } // mPDF 4.4.016
while(!$target && !feof($ifh)) {
$x = fread($ifh, 8192);
$x = preg_replace("/\r/","",$x);
$subrs .= $x;
if (preg_match('/(.*?)\/CharStrings (.*)/s', $subrs , $m)) {
$subrs = $m[1];
$rem = $m[2];
$target = true;
}
$subrs = preg_replace("/\r\n/","\n",$subrs);
preg_match_all('/dup\s+(\d+)\s+\{(.*?)\}\s+NP/s',$subrs, $mm);
for($i=0;$i<count($mm[0]);$i++) {
if ($mm[1][$i] > 4) { $if_Subrs[$mm[1][$i]] = preg_replace('/\s+return/', '', $mm[2][$i]); } // mPDF 4.4.016
}
preg_match('/(.*}\s+NP)(.*)/s', $subrs, $mm);
if(isset($mm[2])) { $subrs = $mm[2]; } // mPDF 4.5.003
}
if (feof($ifh)) { die("Error parsing ".$file_ip ); }
// CHARSTRINGS
$offs = array();
$target = false;
if (preg_match('/(.*?)mark currentfile closefile/s', $rem, $m)) {
$CharStrings = $m[1];
$target = true;
}
else { $CharStrings = $rem; }
preg_match_all('/\/([a-zA-Z0-9._]+)\s+\{(.*?endchar\s+)\}\s+ND/s',$CharStrings, $m);
for($i=0;$i<count($m[0]);$i++) {
$cp = $m[1][$i];
$cs = $m[2][$i];
@ -382,11 +448,40 @@ else if ($step==7) {
fwrite($fh, $cb);
$offset += strlen($cb) + 4;
}
preg_match('/(.*}\s+ND)(.*)/s', $CharStrings, $mm);
if(isset($mm[2])) { $CharStrings = $mm[2]; } // mPDF 4.4.016
while(!$target && !feof($ifh)) {
$x = fread($ifh, 8192);
$x = preg_replace("/\r/","",$x);
$CharStrings .= $x;
if (preg_match('/(.*?)mark currentfile closefile(.*)/s', $CharStrings , $m)) {
$CharStrings = $m[1];
$target = true;
}
preg_match_all('/\/([a-zA-Z0-9._]+)\s+\{(.*?endchar\s+)\}\s+ND/s',$CharStrings, $m);
for($i=0;$i<count($m[0]);$i++) {
$cp = $m[1][$i];
$cs = $m[2][$i];
$cs = preg_replace('/(\d+) 4 (callgsubr|callothersubr|callsubr)/e', '" ".$if_Subrs[\\1]." "', $cs);
$cs = preg_replace('/\s+/',' ',$cs);
$cb = parse_charstring($cs);
$offs[$cp] = $offset;
// WRITE $cb to .dat AND save position in file
_fwriteint($fh, strlen($cb));
fwrite($fh, $cb);
$offset += strlen($cb) + 4;
}
preg_match('/(.*}\s+ND)(.*)/s', $CharStrings, $mm);
if(isset($mm[2])) { $CharStrings = $mm[2]; } // mPDF 4.4.016
}
fclose($ifh);
fclose($fh);
unset($if_Subrs);
unset($CharStrings);
unset($fi);
// WRITE if_eexec_start to .dat
// WRITE offsets to .dat.php
$fh = fopen($file.'.dat.php', "w");
$s = '<?php $offs = '.var_export($offs, true).'; ?>';
fwrite($fh, $s);
@ -412,11 +507,11 @@ else if ($step==7) {
// STEP 8 -
// STEP 8 -
else if ($step==8) {
echo '<p>Copy all of the following files to the folder [path to mpdf]/mpdf/unifont/</p>';
echo '<p>(6 for each font/style)</p>';
echo '<p>(This <a href="makefonts.php?step=8&moveunifonts=1">link</a> should do the job for you)</p>';
echo '<p>(This <a href="makefonts.php?step=8&moveunifonts=1">link</a> should do the job for you. <b>Note:</b> This will not overwrite files, so you may need to delete files first from the [path to mpdf]/mpdf/unifont/ folder).</p>';
echo '<ul><li>fontname.z</li>';
echo '<li>fontname.ctg.z</li>';
@ -433,7 +528,7 @@ else if ($step==8) {
}
// STEP 9 -
// STEP 9 -
else if ($step==9) {
$ff = scandir('./');
foreach($ff AS $f) {
@ -451,7 +546,7 @@ else if ($step==9) {
@unlink('makefonts.bat');
foreach($cpages AS $cpage) {
if ($cpage =='win-1252') {
@unlink($file .'.z'); @unlink($file .'.php');
@unlink($file .'.z'); @unlink($file .'.php');
}
else {
@unlink($file .'-'.$cpage.'.z'); @unlink($file .'-'.$cpage.'.php');
@ -585,12 +680,12 @@ function movefonts() {
$file = substr($f,0,(strlen($f)-4));
foreach($cpages AS $cpage) {
if ($cpage =='win-1252') {
@rename($file .'.php', '../font/'.$file .'.php');
@rename($file .'.z', '../font/'.$file .'.z');
rename($file .'.php', '../font/'.$file .'.php');
rename($file .'.z', '../font/'.$file .'.z');
}
else {
@rename($file .'-'.$cpage.'.php', '../font/'.$file .'-'.$cpage.'.php');
@rename($file .'-'.$cpage.'.z', '../font/'.$file .'-'.$cpage.'.z');
rename($file .'-'.$cpage.'.php', '../font/'.$file .'-'.$cpage.'.php');
rename($file .'-'.$cpage.'.z', '../font/'.$file .'-'.$cpage.'.z');
}
}
}
@ -603,12 +698,12 @@ function moveunifonts() {
foreach($ff AS $f) {
if (substr($f,-4,4)=='.ttf') {
$file = substr($f,0,(strlen($f)-4));
@rename($file .'.dat', '../unifont/'.$file .'.dat');
@rename($file .'.dat.php', '../unifont/'.$file .'.dat.php');
@rename($file .'.php', '../unifont/'.$file .'.php');
@rename($file .'.z', '../unifont/'.$file .'.z');
@rename($file .'.ctg.z', '../unifont/'.$file .'.ctg.z');
@rename($file .'.uni2gn.php', '../unifont/'.$file .'.uni2gn.php');
rename($file .'.dat', '../unifont/'.$file .'.dat');
rename($file .'.dat.php', '../unifont/'.$file .'.dat.php');
rename($file .'.php', '../unifont/'.$file .'.php');
rename($file .'.z', '../unifont/'.$file .'.z');
rename($file .'.ctg.z', '../unifont/'.$file .'.ctg.z');
rename($file .'.uni2gn.php', '../unifont/'.$file .'.uni2gn.php');
}
}
}
@ -746,7 +841,7 @@ function ReadAFM($file,&$map)
//Read a font metric file
$a=file($file);
if(empty($a))
die('File not found');
die('File not found (ReadAFM) - '.$file);
$widths=array();
$fm=array();
$fix=array('Edot'=>'Edotaccent','edot'=>'edotaccent','Idot'=>'Idotaccent','Zdot'=>'Zdotaccent','zdot'=>'zdotaccent',
@ -1062,11 +1157,11 @@ function ReadUFM($file, &$cidtogidmap)
{
//Prepare empty CIDToGIDMap
$cidtogidmap = str_pad('', 256*256*2, "\x00");
//Read a font metric file
$a=file($file);
if(empty($a))
die('File not found');
die('File not found (ReadUFM) - '.$file);
$widths=array();
$fm=array();
foreach($a as $l)
@ -1086,17 +1181,18 @@ function ReadUFM($file, &$cidtogidmap)
$w = $e[4];
$glyph = $e[10];
$widths[$cc] = $w;
if($cc == ord('X'))
$fm['CapXHeight'] = $e[13];
// if($cc == ord('X')) // mPDF 4.4.01
// $fm['CapXHeight'] = $e[13]; // Height is not set in ttf2ufm
// Set GID
if ($cc >= 0 && $cc < 0xFFFF && $glyph) {
$cidtogidmap{$cc*2} = chr($glyph >> 8);
$cidtogidmap{$cc*2 + 1} = chr($glyph & 0xFF);
}
}
// mPDF 4.5.003
if($gn=='.notdef' && !isset($fm['MissingWidth']))
$fm['MissingWidth']=$w;
}
if($gn=='.notdef' && !isset($fm['MissingWidth']))
$fm['MissingWidth']=$w;
}
elseif($code=='FontName')
$fm['FontName']=$param;
@ -1128,7 +1224,7 @@ function ReadUFM($file, &$cidtogidmap)
die('FontName not found');
$fm['Widths']=$widths;
return $fm;
}
@ -1260,14 +1356,14 @@ function MakeFontTTF($fontfile,$ufmfile)
$cmp=$basename.'.ctg.z';
SaveToFile($cmp,gzcompress($cidtogidmap),'b');
//echo 'CIDToGIDMap created and compressed ('.$cmp.')<BR>';
//echo 'CIDToGIDMap created and compressed ('.$cmp.')<BR>';
$s.='$ctg=\''.$cmp."';\n";
}
else
{
$s.='$file=\''.basename($fontfile)."';\n";
echo '<B>Notice:</B> font file could not be compressed (gzcompress not available)<BR>';
$cmp=$basename.'.ctg';
$f = fopen($cmp, 'wb');
fwrite($f, $cidtogidmap);

File diff suppressed because it is too large Load Diff

@ -0,0 +1,98 @@
<?php
//
// FPDI - Version 1.3.1
//
// Copyright 2004-2009 Setasign - Jan Slabon
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
if (!defined('ORD_z'))
define('ORD_z',ord('z'));
if (!defined('ORD_exclmark'))
define('ORD_exclmark', ord('!'));
if (!defined('ORD_u'))
define('ORD_u', ord('u'));
if (!defined('ORD_tilde'))
define('ORD_tilde', ord('~'));
class FilterASCII85 {
function error($msg) {
die($msg);
}
function decode($in) {
$out = '';
$state = 0;
$chn = null;
$l = strlen($in);
for ($k = 0; $k < $l; ++$k) {
$ch = ord($in[$k]) & 0xff;
if ($ch == ORD_tilde) {
break;
}
if (preg_match('/^\s$/',chr($ch))) {
continue;
}
if ($ch == ORD_z && $state == 0) {
$out .= chr(0).chr(0).chr(0).chr(0);
continue;
}
if ($ch < ORD_exclmark || $ch > ORD_u) {
$this->error('Illegal character in ASCII85Decode.');
}
$chn[$state++] = $ch - ORD_exclmark;
if ($state == 5) {
$state = 0;
$r = 0;
for ($j = 0; $j < 5; ++$j)
$r = $r * 85 + $chn[$j];
$out .= chr($r >> 24);
$out .= chr($r >> 16);
$out .= chr($r >> 8);
$out .= chr($r);
}
}
$r = 0;
if ($state == 1)
$this->error('Illegal length in ASCII85Decode.');
if ($state == 2) {
$r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85;
$out .= chr($r >> 24);
}
else if ($state == 3) {
$r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + ($chn[2]+1) * 85 * 85;
$out .= chr($r >> 24);
$out .= chr($r >> 16);
}
else if ($state == 4) {
$r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85 + $chn[2] * 85 * 85 + ($chn[3]+1) * 85 ;
$out .= chr($r >> 24);
$out .= chr($r >> 16);
$out .= chr($r >> 8);
}
return $out;
}
function encode($in) {
$this->error("ASCII85 encoding not implemented.");
}
}

@ -0,0 +1,154 @@
<?php
//
// FPDI - Version 1.3.1
//
// Copyright 2004-2009 Setasign - Jan Slabon
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
class FilterLZW {
var $sTable = array();
var $data = null;
var $dataLength = 0;
var $tIdx;
var $bitsToGet = 9;
var $bytePointer;
var $bitPointer;
var $nextData = 0;
var $nextBits = 0;
var $andTable = array(511, 1023, 2047, 4095);
function error($msg) {
die($msg);
}
/**
* Method to decode LZW compressed data.
*
* @param string data The compressed data.
*/
function decode($data) {
if($data[0] == 0x00 && $data[1] == 0x01) {
$this->error('LZW flavour not supported.');
}
$this->initsTable();
$this->data = $data;
$this->dataLength = strlen($data);
// Initialize pointers
$this->bytePointer = 0;
$this->bitPointer = 0;
$this->nextData = 0;
$this->nextBits = 0;
$oldCode = 0;
$string = '';
$uncompData = '';
while (($code = $this->getNextCode()) != 257) {
if ($code == 256) {
$this->initsTable();
$code = $this->getNextCode();
if ($code == 257) {
break;
}
$uncompData .= $this->sTable[$code];
$oldCode = $code;
} else {
if ($code < $this->tIdx) {
$string = $this->sTable[$code];
$uncompData .= $string;
$this->addStringToTable($this->sTable[$oldCode], $string[0]);
$oldCode = $code;
} else {
$string = $this->sTable[$oldCode];
$string = $string.$string[0];
$uncompData .= $string;
$this->addStringToTable($string);
$oldCode = $code;
}
}
}
return $uncompData;
}
/**
* Initialize the string table.
*/
function initsTable() {
$this->sTable = array();
for ($i = 0; $i < 256; $i++)
$this->sTable[$i] = chr($i);
$this->tIdx = 258;
$this->bitsToGet = 9;
}
/**
* Add a new string to the string table.
*/
function addStringToTable ($oldString, $newString='') {
$string = $oldString.$newString;
// Add this new String to the table
$this->sTable[$this->tIdx++] = $string;
if ($this->tIdx == 511) {
$this->bitsToGet = 10;
} else if ($this->tIdx == 1023) {
$this->bitsToGet = 11;
} else if ($this->tIdx == 2047) {
$this->bitsToGet = 12;
}
}
// Returns the next 9, 10, 11 or 12 bits
function getNextCode() {
if ($this->bytePointer == $this->dataLength) {
return 257;
}
$this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff);
$this->nextBits += 8;
if ($this->nextBits < $this->bitsToGet) {
$this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff);
$this->nextBits += 8;
}
$code = ($this->nextData >> ($this->nextBits - $this->bitsToGet)) & $this->andTable[$this->bitsToGet-9];
$this->nextBits -= $this->bitsToGet;
return $code;
}
function encode($in) {
$this->error("LZW encoding not implemented.");
}
}

@ -0,0 +1,6 @@
<html>
<head>
</head>
<body>
</body>
</html>

@ -27,33 +27,33 @@ class fpdi_pdf_parser extends pdf_parser {
* @var array
*/
var $pages;
/**
* Page count
* @var integer
*/
var $page_count;
/**
* actual page number
* @var integer
*/
var $pageno;
/**
* FPDI Reference
* @var object
*/
var $fpdi;
/**
* Available BoxTypes
*
* @var array
*/
var $availableBoxes = array("/MediaBox","/CropBox","/BleedBox","/TrimBox","/ArtBox");
/**
* Constructor
*
@ -78,8 +78,8 @@ class fpdi_pdf_parser extends pdf_parser {
// count pages;
$this->page_count = count($this->pages);
}
/**
* Get pagecount from sourcefile
*
@ -104,7 +104,7 @@ class fpdi_pdf_parser extends pdf_parser {
$this->pageno = $pageno;
}
/**
* Get page-resources from current page
*
@ -113,7 +113,7 @@ class fpdi_pdf_parser extends pdf_parser {
function getPageResources() {
return $this->_getPageResources($this->pages[$this->pageno]);
}
/**
* Get page-resources from /Page
*
@ -153,18 +153,18 @@ class fpdi_pdf_parser extends pdf_parser {
*/
function getContent() {
$buffer = "";
if (isset($this->pages[$this->pageno][1][1]['/Contents'])) {
$contents = $this->_getPageContent($this->pages[$this->pageno][1][1]['/Contents']);
foreach($contents AS $tmp_content) {
$buffer .= $this->_rebuildContentStream($tmp_content).' ';
}
}
return $buffer;
}
/**
* Resolve all content-objects
*
@ -173,7 +173,7 @@ class fpdi_pdf_parser extends pdf_parser {
*/
function _getPageContent($content_ref) {
$contents = array();
if ($content_ref[0] == PDF_TYPE_OBJREF) {
$content = $this->pdf_resolve_object($this->c, $content_ref);
if ($content[1][0] == PDF_TYPE_ARRAY) {
@ -199,7 +199,7 @@ class fpdi_pdf_parser extends pdf_parser {
*/
function _rebuildContentStream($obj) {
$filters = array();
if (isset($obj[1][1]['/Filter'])) {
$_filter = $obj[1][1]['/Filter'];
@ -215,37 +215,38 @@ class fpdi_pdf_parser extends pdf_parser {
foreach ($filters AS $_filter) {
switch ($_filter[1]) {
case "/FlateDecode":
if (function_exists('gzuncompress')) {
$stream = (strlen($stream) > 0) ? @gzuncompress($stream) : '';
} else {
if (function_exists('gzuncompress')) {
$stream = (strlen($stream) > 0) ? @gzuncompress($stream) : '';
} else {
$this->fpdi->error(sprintf("To handle %s filter, please compile php with zlib support.",$_filter[1]));
}
if ($stream === false) {
}
if ($stream === false) {
$this->fpdi->error("Error while decompressing stream.");
}
}
break;
// mPDF 4.2.003
case '/LZWDecode':
include_once(_MPDF_PATH.'mpdfi/filters/FilterLZW.php');
$decoder =& new FilterLZW();
$stream = $decoder->decode($stream);
break;
case '/ASCII85Decode':
include_once(_MPDF_PATH.'mpdfi/filters/FilterASCII85.php');
$decoder =& new FilterASCII85();
$stream = $decoder->decode($stream);
break;
case null:
$stream = $stream;
break;
$stream = $stream;
break;
default:
if (preg_match("/^\/[a-z85]*$/i", $_filter[1], $filterName) && @include_once('decoders'.$_filter[1].'.php')) {
$filterName = substr($_filter[1],1);
if (class_exists($filterName)) {
$decoder =& new $filterName($this->fpdi);
$stream = $decoder->decode(trim($stream));
} else {
$this->fpdi->error(sprintf("Unsupported Filter: %s",$_filter[1]));
}
} else {
$this->fpdi->error(sprintf("Unsupported Filter: %s",$_filter[1]));
}
$this->fpdi->error(sprintf("Unsupported Filter: %s",$_filter[1]));
}
}
return $stream;
}
/**
* Get a Box from a page
* Arrayformat is same as used by fpdf_tpl
@ -259,12 +260,12 @@ class fpdi_pdf_parser extends pdf_parser {
$box = null;
if (isset($page[1][1][$box_index]))
$box =& $page[1][1][$box_index];
if (!is_null($box) && $box[0] == PDF_TYPE_OBJREF) {
$tmp_box = $this->pdf_resolve_object($this->c,$box);
$box = $tmp_box[1];
}
if (!is_null($box) && $box[0] == PDF_TYPE_ARRAY) {
$b =& $box[1];
return array("x" => $b[0][1]/$this->fpdi->k,
@ -281,7 +282,7 @@ class fpdi_pdf_parser extends pdf_parser {
function getPageBoxes($pageno) {
return $this->_getPageBoxes($this->pages[$pageno-1]);
}
/**
* Get all Boxes from /Page
*
@ -303,7 +304,7 @@ class fpdi_pdf_parser extends pdf_parser {
function getPageRotation($pageno) {
return $this->_getPageRotation($this->pages[$pageno-1]);
}
function _getPageRotation ($obj) { // $obj = /Page
$obj = $this->pdf_resolve_object($this->c, $obj);
if (isset ($obj[1][1]['/Rotate'])) {
@ -322,7 +323,7 @@ class fpdi_pdf_parser extends pdf_parser {
}
}
}
/**
* Read all /Page(es)
*
@ -352,9 +353,9 @@ class fpdi_pdf_parser extends pdf_parser {
}
}
}
?>

@ -1,723 +0,0 @@
<?php
// mPDF v2.4 Extension for PDF templates & overwriting placeholders
// This was adapted from FPDI - Licence reproduced below as for original
//
// FPDI - Version 1.2
//
// Copyright 2004-2007 Setasign - Jan Slabon
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
ini_set('auto_detect_line_endings',1); // Strongly required!
require_once(_MPDF_PATH."mpdfi/pdf_context.php");
require_once(_MPDF_PATH."mpdfi/pdf_parser.php");
require_once(_MPDF_PATH."mpdfi/fpdi_pdf_parser.php");
class mPDFI extends mPDF {
var $current_filename;
var $parsers;
var $current_parser;
var $_obj_stack;
var $_don_obj_stack;
var $_current_obj_id;
// from FPDF_TPL
var $tpls = array();
var $tpl = 0;
var $tplprefix = "/TPL";
var $_res = array();
function mPDFI($codepage='win-1252',$format='A4',$default_font_size=0,$default_font='',$mgl=15,$mgr=15,$mgt=16,$mgb=16,$mgh=9,$mgf=9, $orientation='P') {
parent::mPDF($codepage,$format,$default_font_size,$default_font,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf, $orientation);
}
// from FPDF_TPL
function GetTemplateSize($tplidx, $_w=0, $_h=0) {
if (!$this->tpls[$tplidx])
return false;
$w = $this->tpls[$tplidx]['box']['w'];
$h = $this->tpls[$tplidx]['box']['h'];
if ($_w == 0 and $_h == 0) {
$_w = $w;
$_h = $h;
}
if($_w==0)
$_w=$_h*$w/$h;
if($_h==0)
$_h=$_w*$h/$w;
return array("w" => $_w, "h" => $_h);
}
// Thumbnails
// mPDF 2.3 Templates
function Thumbnail($file, $npr=3, $spacing=10) { //$npr = number per row
$w = (($this->pgwidth + $spacing)/$npr) - $spacing;
$oldlinewidth = $this->LineWidth;
$this->SetLineWidth(0.02); $this->SetDrawColor(0);
$h = 0;
$maxh = 0;
$x = $_x = $this->lMargin;
$_y = $this->tMargin;
if ($this->y==0) { $y = $_y; } else { $y = $this->y; }
$pagecount = $this->SetSourceFile($file);
for ($n = 1; $n <= $pagecount; $n++) {
$tplidx = $this->ImportPage($n);
$size = $this->useTemplate($tplidx, $x, $y, $w);
$this->Rect($x, $y, $size['w'], $size['h']);
$h = max($h, $size['h']);
$maxh = max($h, $maxh);
if ($n % $npr == 0) {
if (($y + $h + $spacing + $maxh)>$this->PageBreakTrigger && $n != $pagecount) {
$this->AddPage();
$x = $_x;
$y = $_y;
}
else {
$y += $h+$spacing ;
$x = $_x;
$h = 0;
}
}
else {
$x += $w+$spacing ;
}
}
$this->SetLineWidth($oldlinewidth);
}
function SetSourceFile($filename) {
$this->current_filename = $filename;
$fn =& $this->current_filename;
if (!isset($this->parsers[$fn]))
$this->parsers[$fn] =& new fpdi_pdf_parser($fn,$this);
if (!$this->parsers[$fn]->success) {
$this->Error($this->parsers[$fn]->errormsg); // Delete this line to return false on fail
return false;
}
$this->current_parser =& $this->parsers[$fn];
return $this->parsers[$fn]->getPageCount();
}
function ImportPage($pageno=1, $crop_x=null, $crop_y=null, $crop_w=0, $crop_h=0, $boxName='/CropBox') {
$fn =& $this->current_filename;
$parser =& $this->parsers[$fn];
$parser->setPageno($pageno);
$this->tpl++;
$this->tpls[$this->tpl] = array();
$tpl =& $this->tpls[$this->tpl];
$tpl['parser'] =& $parser;
$tpl['resources'] = $parser->getPageResources();
$tpl['buffer'] = $parser->getContent();
if (!in_array($boxName, $parser->availableBoxes))
return $this->Error(sprintf("Unknown box: %s", $boxName));
$pageboxes = $parser->getPageBoxes($pageno);
/**
* MediaBox
* CropBox: Default -> MediaBox
* BleedBox: Default -> CropBox
* TrimBox: Default -> CropBox
* ArtBox: Default -> CropBox
*/
if (!isset($pageboxes[$boxName]) && ($boxName == "/BleedBox" || $boxName == "/TrimBox" || $boxName == "/ArtBox"))
$boxName = "/CropBox";
if (!isset($pageboxes[$boxName]) && $boxName == "/CropBox")
$boxName = "/MediaBox";
if (!isset($pageboxes[$boxName]))
return false;
$box = $pageboxes[$boxName];
$tpl['box'] = $box;
// To build an array that can be used by useTemplate()
$this->tpls[$this->tpl] = array_merge($this->tpls[$this->tpl],$box);
// An imported page will start at 0,0 everytime. Translation will be set in _putformxobjects()
$tpl['x'] = 0;
$tpl['y'] = 0;
$tpl['w'] = $tpl['box']['w'] ;
$tpl['h'] = $tpl['box']['h'] ;
if ($crop_w) { $tpl['box']['w'] = $crop_w; }
if ($crop_h) { $tpl['box']['h'] = $crop_h; }
if (isset($crop_x)) { $tpl['box']['x'] = $crop_x; }
if (isset($crop_y)) {$tpl['box']['y'] = $tpl['h'] - $crop_y - $crop_h ; }
$page =& $parser->pages[$parser->pageno];
// fix for rotated pages
$rotation = $parser->getPageRotation($pageno);
if (isset($rotation[1]) && ($angle = $rotation[1] % 360) != 0 && $tpl['box']['w'] == $tpl['w']) {
$steps = $angle / 90;
$_w = $tpl['w'];
$_h = $tpl['h'];
$tpl['w'] = $steps % 2 == 0 ? $_w : $_h;
$tpl['h'] = $steps % 2 == 0 ? $_h : $_w;
if ($steps % 2 != 0) {
$x = $y = ($steps == 1 || $steps == -3) ? $tpl['h'] : $tpl['w'];
} else {
$x = $tpl['w'];
$y = $tpl['h'];
}
$cx=($x/2+$tpl['box']['x'])*$this->k;
$cy=($y/2+$tpl['box']['y'])*$this->k;
$angle*=-1;
$angle*=M_PI/180;
$c=cos($angle);
$s=sin($angle);
$tpl['box']['w'] = $tpl['w'] ;
$tpl['box']['h'] = $tpl['h'] ;
$tpl['buffer'] = sprintf('q %.5f %.5f %.5f %.5f %.2f %.2f cm 1 0 0 1 %.2f %.2f cm %s Q',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy, $tpl['buffer']);
}
return $this->tpl;
}
function UseTemplate($tplidx, $_x=null, $_y=null, $_w=0, $_h=0) {
if (!isset($this->tpls[$tplidx]))
$this->Error("Template does not exist!");
if($this->state==0) { $this->AddPage(); }
$this->_out('q 0 J 1 w 0 j 0 G'); // reset standard values
$x = $this->tpls[$tplidx]['x'];
$y = $this->tpls[$tplidx]['y'];
$w = $this->tpls[$tplidx]['w'];
$h = $this->tpls[$tplidx]['h'];
if ($_x == null) { $_x = $x; }
if ($_y == null) { $_y = $y; }
if ($_x === -1) { $_x = $this->x; }
if ($_y === -1) { $_y = $this->y; }
$wh = $this->getTemplateSize($tplidx,$_w,$_h);
$_w = $wh['w'];
$_h = $wh['h'];
$this->_out(sprintf("q %.4f 0 0 %.4f %.2f %.2f cm", ($_w/$this->tpls[$tplidx]['box']['w']), ($_h/$this->tpls[$tplidx]['box']['h']), $_x*$this->k, ($this->h-($_y+$_h))*$this->k));
$this->_out($this->tplprefix.$tplidx." Do Q");
$s = array("w" => $_w, "h" => $_h);
$this->_out('Q');
return $s;
}
function SetPageTemplate($tplidx='') {
if (!isset($this->tpls[$tplidx])) {
$this->pageTemplate = '';
return false;
}
$this->pageTemplate = $tplidx;
}
function SetDocTemplate($file='', $continue=0) {
$this->docTemplate = $file;
$this->docTemplateContinue = $continue;
}
//=========================================================================
// Overwrite mPDF functions
function _putresources() {
$this->_putextgstates();
$this->_putfonts();
$this->_putimages();
// mPDF 2.2 for WMF
$this->_putformobjects();
// from FPDF_TPL
$this->_putformxobjects();
$this->_putimportedobjects();
//Resource dictionary
$this->offsets[2]=strlen($this->buffer);
$this->_out('2 0 obj');
$this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
$this->_out('/Font <<');
foreach($this->fonts as $font)
$this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
$this->_out('>>');
// mPDF 1.2
if (count($this->extgstates)) {
$this->_out('/ExtGState <<');
foreach($this->extgstates as $k=>$extgstate)
$this->_out('/GS'.$k.' '.$extgstate['n'].' 0 R');
$this->_out('>>');
}
// mPDF 2.2. for WMF
// Edited
if(count($this->images) or count($this->formobjects) || count($this->tpls)) {
$this->_out('/XObject <<');
foreach($this->images as $image)
$this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
foreach($this->formobjects as $formobject)
$this->_out('/FO'.$formobject['i'].' '.$formobject['n'].' 0 R');
// from FPDF_TPL function _putxobjectdict()
if (count($this->tpls)) {
foreach($this->tpls as $tplidx => $tpl) {
$this->_out($this->tplprefix.$tplidx.' '.$tpl['n'].' 0 R');
}
}
$this->_out('>>');
}
$this->_out('>>');
$this->_out('endobj'); // end resource dictionary
$this->_putbookmarks(); //EDITEI
if ($this->encrypted) {
$this->_newobj();
$this->enc_obj_id = $this->n;
$this->_out('<<');
$this->_putencryption();
$this->_out('>>');
$this->_out('endobj');
}
}
// Overwrite mPDF functions
function _enddoc() {
parent::_enddoc();
if ($this->state > 2 && count($this->parsers) > 0) {
foreach ($this->parsers as $k => $_){
$this->parsers[$k]->closeFile();
$this->parsers[$k] = null;
unset($this->parsers[$k]);
}
}
}
// Overwrite mPDF functions
function _newobj($obj_id=false,$onlynewobj=false) {
if (!$obj_id) {
$obj_id = ++$this->n;
}
//Begin a new object
if (!$onlynewobj) {
$this->offsets[$obj_id] = strlen($this->buffer);
$this->_out($obj_id.' 0 obj');
$this->_current_obj_id = $obj_id; // for later use with encryption
}
}
// These all use $this->_current_obj_id instead of $this->n (cf. _newobj above)
function _UTF16BEtextstring($s) {
$s = $this->UTF8ToUTF16BE($s, true);
if ($this->encrypted) {
$s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
}
return '('. $this->_escape($s).')';
}
function _textstring($s) {
if ($this->encrypted) {
$s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
}
return '('. $this->_escape($s).')';
}
function _putstream($s) {
if ($this->encrypted) {
$s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
}
$this->_out('stream');
$this->_out($s);
$this->_out('endstream');
}
//=========================================================================
// New functions
function _putimportedobjects() {
if (is_array($this->parsers) && count($this->parsers) > 0) {
foreach($this->parsers AS $filename => $p) {
$this->current_parser =& $this->parsers[$filename];
if (is_array($this->_obj_stack[$filename])) {
while($n = key($this->_obj_stack[$filename])) {
$nObj = $this->current_parser->pdf_resolve_object($this->current_parser->c,$this->_obj_stack[$filename][$n][1]);
$this->_newobj($this->_obj_stack[$filename][$n][0]);
if ($nObj[0] == PDF_TYPE_STREAM) {
$this->pdf_write_value($nObj);
}
else {
$this->pdf_write_value($nObj[1]);
}
$this->_out('endobj');
$this->_obj_stack[$filename][$n] = null; // free memory
unset($this->_obj_stack[$filename][$n]);
reset($this->_obj_stack[$filename]);
}
}
}
}
}
function _putformxobjects() {
$filter=($this->compress) ? '/Filter /FlateDecode ' : '';
reset($this->tpls);
foreach($this->tpls AS $tplidx => $tpl) {
$p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer'];
$this->_newobj();
$this->tpls[$tplidx]['n'] = $this->n;
$this->_out('<<'.$filter.'/Type /XObject');
$this->_out('/Subtype /Form');
$this->_out('/FormType 1');
// Left/Bottom/Right/Top
$this->_out(sprintf('/BBox [%.2f %.2f %.2f %.2f]',
$tpl['box']['x']*$this->k,
$tpl['box']['y']*$this->k,
($tpl['box']['x'] + $tpl['box']['w'])*$this->k,
($tpl['box']['y'] + $tpl['box']['h'])*$this->k )
);
if (isset($tpl['box']))
$this->_out(sprintf('/Matrix [1 0 0 1 %.5f %.5f]',-$tpl['box']['x']*$this->k, -$tpl['box']['y']*$this->k));
$this->_out('/Resources ');
if (isset($tpl['resources'])) {
$this->current_parser =& $tpl['parser'];
$this->pdf_write_value($tpl['resources']);
} else {
$this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
if (isset($this->_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) {
$this->_out('/Font <<');
foreach($this->_res['tpl'][$tplidx]['fonts'] as $font)
$this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
$this->_out('>>');
}
if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) ||
isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls']))
{
$this->_out('/XObject <<');
if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) {
foreach($this->_res['tpl'][$tplidx]['images'] as $image)
$this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
}
if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) {
foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $tpl)
$this->_out($this->tplprefix.$i.' '.$tpl['n'].' 0 R');
}
$this->_out('>>');
}
$this->_out('>>');
}
$this->_out('/Length '.strlen($p).' >>');
$this->_putstream($p);
$this->_out('endobj');
}
}
//=========================================================================
function hex2str($hex) {
return pack("H*", str_replace(array("\r","\n"," "),"", $hex));
}
function str2hex($str) {
return current(unpack("H*",$str));
}
function pdf_write_value(&$value) {
switch ($value[0]) {
case PDF_TYPE_NUMERIC :
case PDF_TYPE_TOKEN :
// A numeric value or a token.
// Simply output them
$this->_out($value[1]." ", false);
break;
case PDF_TYPE_ARRAY :
// An array. Output the proper
// structure and move on.
$this->_out("[",false);
for ($i = 0; $i < count($value[1]); $i++) {
$this->pdf_write_value($value[1][$i]);
}
$this->_out("]");
break;
case PDF_TYPE_DICTIONARY :
// A dictionary.
$this->_out("<<",false);
reset ($value[1]);
while (list($k, $v) = each($value[1])) {
$this->_out($k . " ",false);
$this->pdf_write_value($v);
}
$this->_out(">>");
break;
case PDF_TYPE_OBJREF :
// An indirect object reference
// Fill the object stack if needed
$cpfn =& $this->current_parser->filename;
if (!isset($this->_don_obj_stack[$cpfn][$value[1]])) {
$this->_newobj(false,true);
$this->_obj_stack[$cpfn][$value[1]] = array($this->n, $value);
$this->_don_obj_stack[$cpfn][$value[1]] = array($this->n, $value);
}
$objid = $this->_don_obj_stack[$cpfn][$value[1]][0];
$this->_out("{$objid} 0 R"); //{$value[2]}
break;
case PDF_TYPE_STRING :
if ($this->encrypted) {
$value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
$value[1] = $this->_escape($value[1]);
}
// A string.
$this->_out('('.$value[1].')');
break;
case PDF_TYPE_STREAM :
// A stream. First, output the
// stream dictionary, then the
// stream data itself.
$this->pdf_write_value($value[1]);
if ($this->encrypted) {
$value[2][1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[2][1]);
}
$this->_out("stream");
$this->_out($value[2][1]);
$this->_out("endstream");
break;
case PDF_TYPE_HEX :
if ($this->encrypted) {
$value[1] = $this->hex2str($value[1]);
$value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
// remake hexstring of encrypted string
$value[1] = $this->str2hex($value[1]);
}
$this->_out("<".$value[1].">");
break;
case PDF_TYPE_NULL :
// The null object.
$this->_out("null");
break;
}
}
// ========== OVERWRITE SEARCH STRING IN A PDF FILE ================
function OverWrite($file_in, $search, $replacement, $dest="D", $file_out="mpdf" ) {
$pdf = file_get_contents($file_in);
if (!is_array($search)) {
$x = $search;
$search = array($x);
}
if (!is_array($replacement)) {
$x = $replacement;
$search = array($x);
}
if ($this->isunicode && !$this->isCJK) {
foreach($search AS $k=>$val) {
$search[$k] = $this->UTF8ToUTF16BE($search[$k] , false);
$search[$k] = $this->_escape($search[$k]);
$replacement[$k] = $this->UTF8ToUTF16BE($replacement[$k], false);
$replacement[$k] = $this->_escape($replacement[$k]);
}
}
else {
foreach($replacement AS $k=>$val) {
// Modified by Ivan Tcholakov, 28-JAN-2010.
//$replacement[$k] = mb_convert_encoding($replacement[$k],$this->mb_encoding,'utf-8');
$replacement[$k] = api_convert_encoding($replacement[$k],$this->mb_encoding,'utf-8');
//
$replacement[$k] = $this->_escape($replacement[$k]);
}
}
// Get xref into array
$xref = array();
preg_match("/xref\n0 (\d+)\n(.*?)\ntrailer/s",$pdf,$m);
$xref_objid = $m[1];
preg_match_all('/(\d{10}) (\d{5}) (f|n)/',$m[2],$x);
for($i=0; $i<count($x[0]); $i++) {
$xref[] = array(intval($x[1][$i]), $x[2][$i], $x[3][$i]);
}
$changes = array();
preg_match("/<<\/Type \/Pages\n\/Kids \[(.*?)\]\n\/Count/s",$pdf,$m);
preg_match_all("/(\d+) 0 R /s",$m[1],$o);
$objlist = $o[1];
foreach($objlist AS $obj) {
if ($this->compress) {
preg_match("/".($obj+1)." 0 obj\n<<\/Filter \/FlateDecode \/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m);
}
else {
preg_match("/".($obj+1)." 0 obj\n<<\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m);
}
$s = $m[2];
$oldlen = $m[1];
if ($this->encrypted) {
$s = $this->_RC4($this->_objectkey($obj+1), $s);
}
if ($this->compress) {
$s = gzuncompress($s);
}
foreach($search AS $k=>$val) {
$s = str_replace($search[$k],$replacement[$k],$s);
}
if ($this->compress) {
$s = gzcompress($s);
}
if ($this->encrypted) {
$s = $this->_RC4($this->_objectkey($obj+1), $s);
}
$newlen = strlen($s);
$changes[($xref[$obj+1][0])] = ($newlen - $oldlen) + (strlen($newlen) - strlen($oldlen ));
if ($this->compress) {
$newstr = ($obj+1) . " 0 obj\n<</Filter /FlateDecode /Length ".$newlen.">>\nstream\n".$s."\nendstream\n";
}
else {
$newstr = ($obj+1) . " 0 obj\n<</Length ".$newlen.">>\nstream\n".$s."\nendstream\n";
}
$pdf = str_replace($m[0],$newstr,$pdf);
}
// Update xref in PDF
krsort($changes);
$newxref = "xref\n0 ".$xref_objid."\n";
foreach($xref AS $v) {
foreach($changes AS $ck => $cv) {
if ($v[0] > $ck) { $v[0] += $cv; }
}
$newxref .= sprintf('%010d',$v[0]) . ' ' . $v[1] . ' ' .$v[2] . " \n";
}
$newxref .= "trailer";
$pdf = preg_replace("/xref\n0 \d+\n.*?\ntrailer/s",$newxref,$pdf);
// Update startxref in PDF
preg_match("/startxref\n(\d+)\n%%EOF/s", $pdf, $m);
$startxref = $m[1];
$startxref += array_sum($changes);
$pdf = preg_replace("/startxref\n(\d+)\n%%EOF/s","startxref\n".$startxref."\n%%EOF",$pdf);
// OUTPUT
switch($dest) {
case 'I':
//Send to standard output
if(isset($_SERVER['SERVER_NAME']))
{
//We send to a browser
Header('Content-Type: application/pdf');
Header('Content-Length: '.strlen($pdf));
Header('Content-disposition: inline; filename='.$file_out);
}
echo $pdf;
break;
case 'F':
//Save to local file
if (!$file_out) { $file_out = 'mpdf.pdf'; }
$f=fopen($file_out,'wb');
if(!$f) die('Unable to create output file: '.$file_out);
fwrite($f,$pdf,strlen($pdf));
fclose($f);
break;
case 'S':
//Return as a string
return $pdf;
case 'D':
default:
//Download file
if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
Header('Content-Type: application/force-download');
else
Header('Content-Type: application/octet-stream');
Header('Content-Length: '.strlen($pdf));
Header('Content-disposition: attachment; filename='.$file_out);
echo $pdf;
break;
}
}
//==========================================================================
}
// END OF CLASS
function _strspn($str1, $str2, $start=null, $length=null) {
$numargs = func_num_args();
if ($numargs == 2) {
return strspn($str1, $str2);
}
else if ($numargs == 3) {
return strspn($str1, $str2, $start);
}
else {
return strspn($str1, $str2, $start, $length);
}
}
function _strcspn($str1, $str2, $start=null, $length=null) {
$numargs = func_num_args();
if ($numargs == 2) {
return strcspn($str1, $str2);
}
else if ($numargs == 3) {
return strcspn($str1, $str2, $start);
}
else {
return strcspn($str1, $str2, $start, $length);
}
}
function _fgets (&$h, $force=false) {
$startpos = ftell($h);
$s = fgets($h, 1024);
if ($force && preg_match("/^([^\r\n]*[\r\n]{1,2})(.)/",trim($s), $ns)) {
$s = $ns[1];
fseek($h,$startpos+strlen($s));
}
return $s;
}
?>

@ -3,9 +3,9 @@
$tempfilename = $_REQUEST['filename'].'.pdf';
$opname = $_REQUEST['opname'];
$dest = $_REQUEST['dest'];
// Modified by Ivan Tcholakov, 28-JAN-2010.
// Modified by Ivan Tcholakov, 28-JUN-2010.
//if ($tempfilename && file_exists('../tmp/'.$tempfilename)) {
if ($tempfilename && file_exists(_MPDF_TMP_PATH.$tempfilename)) {
if ($tempfilename && file_exists(_MPDF_TEMP_PATH.$tempfilename)) {
//
header("Pragma: ");
header("Cache-Control: private");
@ -34,20 +34,20 @@ $dest = $_REQUEST['dest'];
}
header('Content-disposition: attachment; filename='.$opname);
}
// Modified by Ivan Tcholakov, 28-JAN-2010.
// Modified by Ivan Tcholakov, 28-JUN-2010.
//$filesize = filesize('../tmp/'.$tempfilename);
$filesize = filesize(_MPDF_TMP_PATH.$tempfilename);
$filesize = filesize(_MPDF_TEMP_PATH.$tempfilename);
//
header("Content-length:".$filesize);
// Modified by Ivan Tcholakov, 28-JAN-2010.
// Modified by Ivan Tcholakov, 28-JUN-2010.
//$fd=fopen('../tmp/'.$tempfilename,'r');
$fd=fopen(_MPDF_TMP_PATH.$tempfilename,'r');
$fd=fopen(_MPDF_TEMP_PATH.$tempfilename,'r');
//
fpassthru($fd);
fclose($fd);
// Modified by Ivan Tcholakov, 28-JAN-2010.
// Modified by Ivan Tcholakov, 28-JUN-2010.
//unlink('../tmp/'.$tempfilename);
unlink(_MPDF_TMP_PATH.$tempfilename);
unlink(_MPDF_TEMP_PATH.$tempfilename);
//
// ====================== DELETE OLD FILES FIRST - Housekeeping =========================================
// Clear any files in directory that are >24 hrs old
@ -61,10 +61,10 @@ $dest = $_REQUEST['dest'];
// }
// closedir($handle);
//}
if ($handle = opendir(_MPDF_TMP_PATH)) {
if ($handle = opendir(_MPDF_TEMP_PATH)) {
while (false !== ($file = readdir($handle))) {
if (((filemtime(_MPDF_TMP_PATH.$file)+$interval) < time()) && ($file != "..") && ($file != ".")) {
unlink(_MPDF_TMP_PATH.$file);
if (((filemtime(_MPDF_TEMP_PATH.$file)+$interval) < time()) && ($file != "..") && ($file != ".")) {
unlink(_MPDF_TEMP_PATH.$file);
}
}
closedir($handle);

@ -1,8 +1,8 @@
<?php
$type='TrueTypeUnicode';
$name='Garuda';
$desc=array('Ascent'=>1288,'Descent'=>-605,'CapHeight'=>1288,'Flags'=>32,'FontBBox'=>'[-659 -605 1090 1288]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600);
$up=-27;
$desc=array('Ascent'=>1284,'Descent'=>-591,'CapHeight'=>1284,'Flags'=>32,'FontBBox'=>'[-659 -589 1090 1288]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600);
$up=-32;
$ut=10;
$cw=array(
32=>340, 33=>277, 34=>354, 35=>556, 36=>556, 37=>889, 38=>666, 39=>190, 40=>332, 41=>332, 42=>387, 43=>583, 44=>277, 45=>332, 46=>277, 47=>277,
@ -10,26 +10,26 @@ $cw=array(
64=>1014, 65=>666, 66=>666, 67=>721, 68=>721, 69=>666, 70=>610, 71=>777, 72=>721, 73=>277, 74=>499, 75=>666, 76=>556, 77=>832, 78=>721, 79=>777,
80=>666, 81=>777, 82=>721, 83=>666, 84=>610, 85=>721, 86=>666, 87=>944, 88=>666, 89=>666, 90=>610, 91=>277, 92=>277, 93=>277, 94=>469, 95=>556,
96=>332, 97=>556, 98=>556, 99=>499, 100=>556, 101=>556, 102=>277, 103=>556, 104=>556, 105=>222, 106=>222, 107=>499, 108=>222, 109=>832, 110=>556, 111=>556,
112=>556, 113=>556, 114=>332, 115=>499, 116=>277, 117=>556, 118=>499, 119=>721, 120=>499, 121=>499, 122=>499, 123=>334, 124=>259, 125=>334, 126=>583, 127=>1532,
8218=>222, 402=>554, 8222=>332, 8230=>570, 8224=>554, 8225=>554, 710=>332, 8240=>999, 352=>666, 8249=>332, 338=>999, 8216=>268, 8217=>278, 8220=>484, 8221=>531, 8226=>528,
8211=>548, 8212=>709, 732=>332, 8482=>999, 353=>499, 8250=>332, 339=>944, 376=>666, 160=>157, 161=>332, 162=>554, 163=>554, 164=>554, 165=>554, 166=>259, 167=>554,
168=>332, 169=>735, 170=>369, 171=>554, 172=>583, 173=>332, 174=>735, 175=>551, 176=>400, 177=>548, 178=>332, 179=>332, 180=>332, 181=>574, 182=>536, 183=>277,
184=>332, 185=>332, 186=>364, 187=>554, 188=>833, 189=>833, 190=>833, 191=>610, 192=>666, 193=>666, 194=>666, 195=>666, 196=>666, 197=>666, 198=>999, 199=>721,
200=>666, 201=>666, 202=>666, 203=>666, 204=>277, 205=>277, 206=>277, 207=>277, 208=>721, 209=>721, 210=>777, 211=>777, 212=>777, 213=>777, 214=>777, 215=>583,
216=>777, 217=>721, 218=>721, 219=>721, 220=>721, 221=>666, 222=>666, 223=>610, 224=>556, 225=>556, 226=>556, 227=>556, 228=>556, 229=>556, 230=>889, 231=>499,
232=>556, 233=>556, 234=>556, 235=>556, 236=>277, 237=>277, 238=>277, 239=>277, 240=>554, 241=>556, 242=>556, 243=>556, 244=>556, 245=>556, 246=>556, 247=>548,
248=>610, 249=>556, 250=>556, 251=>556, 252=>556, 253=>499, 254=>554, 255=>499, 63232=>530, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0,
63240=>0, 63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>800, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0,
3585=>626, 3586=>648, 3587=>677, 3588=>613, 3589=>591, 3590=>770, 3591=>496, 3592=>551, 3593=>596, 3594=>602, 3595=>648, 3596=>792, 3597=>833, 3598=>668, 3599=>663, 3600=>528,
3601=>815, 3602=>820, 3603=>818, 3604=>614, 3605=>645, 3606=>628, 3607=>691, 3608=>548, 3609=>668, 3610=>643, 3611=>636, 3612=>639, 3613=>639, 3614=>698, 3615=>698, 3616=>712,
3617=>665, 3618=>622, 3619=>501, 3620=>610, 3621=>593, 3622=>666, 3623=>545, 3624=>610, 3625=>666, 3626=>579, 3627=>651, 3628=>706, 3629=>567, 3630=>547, 3631=>518, 3632=>510,
3633=>0, 3634=>438, 3635=>438, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>643, 3647=>629, 3648=>340, 3649=>600,
112=>556, 113=>556, 114=>332, 115=>499, 116=>277, 117=>556, 118=>499, 119=>721, 120=>499, 121=>499, 122=>499, 123=>334, 124=>259, 125=>334, 126=>583, 8218=>222,
402=>554, 8222=>332, 8230=>570, 8224=>554, 8225=>554, 710=>332, 8240=>999, 352=>666, 8249=>332, 338=>999, 8216=>268, 8217=>278, 8220=>484, 8221=>531, 8226=>528, 8211=>548,
8212=>709, 732=>332, 8482=>999, 353=>499, 8250=>332, 339=>944, 376=>666, 160=>157, 161=>332, 162=>554, 163=>554, 164=>554, 165=>554, 166=>259, 167=>554, 168=>332,
169=>735, 170=>369, 171=>554, 172=>583, 173=>332, 174=>735, 175=>551, 176=>400, 177=>548, 178=>332, 179=>332, 180=>332, 181=>574, 182=>536, 183=>277, 184=>332,
185=>332, 186=>364, 187=>554, 188=>833, 189=>833, 190=>833, 191=>610, 192=>666, 193=>666, 194=>666, 195=>666, 196=>666, 197=>666, 198=>999, 199=>721, 200=>666,
201=>666, 202=>666, 203=>666, 204=>277, 205=>277, 206=>277, 207=>277, 208=>721, 209=>721, 210=>777, 211=>777, 212=>777, 213=>777, 214=>777, 215=>583, 216=>777,
217=>721, 218=>721, 219=>721, 220=>721, 221=>666, 222=>666, 223=>610, 224=>556, 225=>556, 226=>556, 227=>556, 228=>556, 229=>556, 230=>889, 231=>499, 232=>556,
233=>556, 234=>556, 235=>556, 236=>277, 237=>277, 238=>277, 239=>277, 240=>554, 241=>556, 242=>556, 243=>556, 244=>556, 245=>556, 246=>556, 247=>548, 248=>610,
249=>556, 250=>556, 251=>556, 252=>556, 253=>499, 254=>554, 255=>499, 63232=>530, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0, 63240=>0,
63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>800, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 3585=>626,
3586=>648, 3587=>677, 3588=>613, 3589=>591, 3590=>770, 3591=>496, 3592=>551, 3593=>596, 3594=>602, 3595=>648, 3596=>792, 3597=>800, 3598=>668, 3599=>663, 3600=>530, 3601=>815,
3602=>820, 3603=>818, 3604=>614, 3605=>645, 3606=>628, 3607=>691, 3608=>548, 3609=>668, 3610=>636, 3611=>636, 3612=>639, 3613=>639, 3614=>698, 3615=>698, 3616=>712, 3617=>665,
3618=>622, 3619=>501, 3620=>610, 3621=>593, 3622=>666, 3623=>545, 3624=>610, 3625=>666, 3626=>579, 3627=>651, 3628=>706, 3629=>567, 3630=>547, 3631=>518, 3632=>510, 3633=>0,
3634=>438, 3635=>438, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>643, 63263=>0, 3647=>629, 3648=>340, 3649=>600,
3650=>413, 3651=>400, 3652=>449, 3653=>220, 3654=>565, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>599, 3664=>611, 3665=>611,
3666=>611, 3667=>611, 3668=>611, 3669=>611, 3670=>611, 3671=>611, 3672=>611, 3673=>611, 3674=>625, 3675=>1105, 63256=>0, 63257=>0, 63258=>0, 63259=>0, 305=>277, 711=>332,
730=>332, 63260=>340, 63261=>340, 8194=>500, 8195=>1000);
730=>332, 63260=>340, 63261=>340, 8194=>500, 8195=>1000, 64256=>554, 64257=>499, 64258=>499, 64259=>776, 64260=>776, 8204=>0, 8205=>0, 8206=>0, 8207=>0);
$enc='';
$diff='';
$file='garuda.z';
$ctg='garuda.ctg.z';
$originalsize=40340;
$originalsize=73732;
?>

@ -0,0 +1,354 @@
<?php
$this->uni2gn = array (
32 => 'space',
33 => 'exclam',
34 => 'quotedbl',
35 => 'numbersign',
36 => 'dollar',
37 => 'percent',
38 => 'ampersand',
39 => 'quotesingle',
40 => 'parenleft',
41 => 'parenright',
42 => 'asterisk',
43 => 'plus',
44 => 'comma',
45 => 'hyphen',
46 => 'period',
47 => 'slash',
48 => 'zero',
49 => 'one',
50 => 'two',
51 => 'three',
52 => 'four',
53 => 'five',
54 => 'six',
55 => 'seven',
56 => 'eight',
57 => 'nine',
58 => 'colon',
59 => 'semicolon',
60 => 'less',
61 => 'equal',
62 => 'greater',
63 => 'question',
64 => 'at',
65 => 'A',
66 => 'B',
67 => 'C',
68 => 'D',
69 => 'E',
70 => 'F',
71 => 'G',
72 => 'H',
73 => 'I',
74 => 'J',
75 => 'K',
76 => 'L',
77 => 'M',
78 => 'N',
79 => 'O',
80 => 'P',
81 => 'Q',
82 => 'R',
83 => 'S',
84 => 'T',
85 => 'U',
86 => 'V',
87 => 'W',
88 => 'X',
89 => 'Y',
90 => 'Z',
91 => 'bracketleft',
92 => 'backslash',
93 => 'bracketright',
94 => 'asciicircum',
95 => 'underscore',
96 => 'grave',
97 => 'a',
98 => 'b',
99 => 'c',
100 => 'd',
101 => 'e',
102 => 'f',
103 => 'g',
104 => 'h',
105 => 'i',
106 => 'j',
107 => 'k',
108 => 'l',
109 => 'm',
110 => 'n',
111 => 'o',
112 => 'p',
113 => 'q',
114 => 'r',
115 => 's',
116 => 't',
117 => 'u',
118 => 'v',
119 => 'w',
120 => 'x',
121 => 'y',
122 => 'z',
123 => 'braceleft',
124 => 'bar',
125 => 'braceright',
126 => 'asciitilde',
8218 => 'quotesinglbase',
402 => 'florin',
8222 => 'quotedblbase',
8230 => 'ellipsis',
8224 => 'dagger',
8225 => 'daggerdbl',
710 => 'circumflex',
8240 => 'perthousand',
352 => 'Scaron',
8249 => 'guilsinglleft',
338 => 'OE',
8216 => 'quoteleft',
8217 => 'quoteright',
8220 => 'quotedblleft',
8221 => 'quotedblright',
8226 => 'bullet',
8211 => 'endash',
8212 => 'emdash',
732 => 'tilde',
8482 => 'trademark',
353 => 'scaron',
8250 => 'guilsinglright',
339 => 'oe',
376 => 'Ydieresis',
160 => 'nbspace',
161 => 'exclamdown',
162 => 'cent',
163 => 'sterling',
164 => 'currency',
165 => 'yen',
166 => 'brokenbar',
167 => 'section',
168 => 'dieresis',
169 => 'copyright',
170 => 'ordfeminine',
171 => 'guillemotleft',
172 => 'logicalnot',
173 => 'minus',
174 => 'registered',
175 => 'macron',
176 => 'degree',
177 => 'plusminus',
178 => 'twosuperior',
179 => 'threesuperior',
180 => 'acute',
181 => 'mu',
182 => 'paragraph',
183 => 'periodcentered',
184 => 'cedilla',
185 => 'onesuperior',
186 => 'ordmasculine',
187 => 'guillemotright',
188 => 'onequarter',
189 => 'onehalf',
190 => 'threequarters',
191 => 'questiondown',
192 => 'Agrave',
193 => 'Aacute',
194 => 'Acircumflex',
195 => 'Atilde',
196 => 'Adieresis',
197 => 'Aring',
198 => 'AE',
199 => 'Ccedilla',
200 => 'Egrave',
201 => 'Eacute',
202 => 'Ecircumflex',
203 => 'Edieresis',
204 => 'Igrave',
205 => 'Iacute',
206 => 'Icircumflex',
207 => 'Idieresis',
208 => 'Eth',
209 => 'Ntilde',
210 => 'Ograve',
211 => 'Oacute',
212 => 'Ocircumflex',
213 => 'Otilde',
214 => 'Odieresis',
215 => 'multiply',
216 => 'Oslash',
217 => 'Ugrave',
218 => 'Uacute',
219 => 'Ucircumflex',
220 => 'Udieresis',
221 => 'Yacute',
222 => 'Thorn',
223 => 'germandbls',
224 => 'agrave',
225 => 'aacute',
226 => 'acircumflex',
227 => 'atilde',
228 => 'adieresis',
229 => 'aring',
230 => 'ae',
231 => 'ccedilla',
232 => 'egrave',
233 => 'eacute',
234 => 'ecircumflex',
235 => 'edieresis',
236 => 'igrave',
237 => 'iacute',
238 => 'icircumflex',
239 => 'idieresis',
240 => 'eth',
241 => 'ntilde',
242 => 'ograve',
243 => 'oacute',
244 => 'ocircumflex',
245 => 'otilde',
246 => 'odieresis',
247 => 'divide',
248 => 'oslash',
249 => 'ugrave',
250 => 'uacute',
251 => 'ucircumflex',
252 => 'udieresis',
253 => 'yacute',
254 => 'thorn',
255 => 'ydieresis',
63232 => 'uni0E10.descless',
63233 => 'uni0E34.left',
63234 => 'uni0E35.left',
63235 => 'uni0E36.left',
63236 => 'uni0E37.left',
63237 => 'uni0E48.low_left',
63238 => 'uni0E49.low_left',
63239 => 'uni0E4A.low_left',
63240 => 'uni0E4B.low_left',
63241 => 'uni0E4C.low_left',
63242 => 'uni0E48.low',
63243 => 'uni0E49.low',
63244 => 'uni0E4A.low',
63245 => 'uni0E4B.low',
63246 => 'uni0E4C.low',
63247 => 'uni0E0D.descless',
63248 => 'uni0E31.left',
63249 => 'uni0E4D.left',
63250 => 'uni0E47.left',
63251 => 'uni0E48.left',
63252 => 'uni0E49.left',
63253 => 'uni0E4A.left',
63254 => 'uni0E4B.left',
63255 => 'uni0E4C.left',
3585 => 'uni0E01',
3586 => 'uni0E02',
3587 => 'uni0E03',
3588 => 'uni0E04',
3589 => 'uni0E05',
3590 => 'uni0E06',
3591 => 'uni0E07',
3592 => 'uni0E08',
3593 => 'uni0E09',
3594 => 'uni0E0A',
3595 => 'uni0E0B',
3596 => 'uni0E0C',
3597 => 'uni0E0D',
3598 => 'uni0E0E',
3599 => 'uni0E0F',
3600 => 'uni0E10',
3601 => 'uni0E11',
3602 => 'uni0E12',
3603 => 'uni0E13',
3604 => 'uni0E14',
3605 => 'uni0E15',
3606 => 'uni0E16',
3607 => 'uni0E17',
3608 => 'uni0E18',
3609 => 'uni0E19',
3610 => 'uni0E1A',
3611 => 'uni0E1B',
3612 => 'uni0E1C',
3613 => 'uni0E1D',
3614 => 'uni0E1E',
3615 => 'uni0E1F',
3616 => 'uni0E20',
3617 => 'uni0E21',
3618 => 'uni0E22',
3619 => 'uni0E23',
3620 => 'uni0E24',
3621 => 'uni0E25',
3622 => 'uni0E26',
3623 => 'uni0E27',
3624 => 'uni0E28',
3625 => 'uni0E29',
3626 => 'uni0E2A',
3627 => 'uni0E2B',
3628 => 'uni0E2C',
3629 => 'uni0E2D',
3630 => 'uni0E2E',
3631 => 'uni0E2F',
3632 => 'uni0E30',
3633 => 'uni0E31',
3634 => 'uni0E32',
3635 => 'uni0E33',
3636 => 'uni0E34',
3637 => 'uni0E35',
3638 => 'uni0E36',
3639 => 'uni0E37',
3640 => 'uni0E38',
3641 => 'uni0E39',
3642 => 'uni0E3A',
63262 => 'uni0E4D.high',
8203 => 'zerowidthspace',
9676 => 'dottedcircle',
63263 => 'uni0E47.high',
3647 => 'uni0E3F',
3648 => 'uni0E40',
3649 => 'uni0E41',
3650 => 'uni0E42',
3651 => 'uni0E43',
3652 => 'uni0E44',
3653 => 'uni0E45',
3654 => 'uni0E46',
3655 => 'uni0E47',
3656 => 'uni0E48',
3657 => 'uni0E49',
3658 => 'uni0E4A',
3659 => 'uni0E4B',
3660 => 'uni0E4C',
3661 => 'uni0E4D',
3662 => 'uni0E4E',
3663 => 'uni0E4F',
3664 => 'uni0E50',
3665 => 'uni0E51',
3666 => 'uni0E52',
3667 => 'uni0E53',
3668 => 'uni0E54',
3669 => 'uni0E55',
3670 => 'uni0E56',
3671 => 'uni0E57',
3672 => 'uni0E58',
3673 => 'uni0E59',
3674 => 'uni0E5A',
3675 => 'uni0E5B',
63256 => 'uni0E38.low',
63257 => 'uni0E39.low',
63258 => 'uni0E3A.low',
63259 => 'DEL',
305 => 'dotlessi',
711 => 'caron',
730 => 'ring',
63260 => 'uniF71C',
63261 => 'uniF71D',
8194 => 'enspace',
8195 => 'emspace',
64256 => 'ff',
64257 => 'fi',
64258 => 'fl',
64259 => 'ffi',
64260 => 'ffl',
8204 => 'zerowidthnonjoiner',
8205 => 'zerowidthjoiner',
8206 => 'afii299',
8207 => 'afii300',
);
?>

@ -1,8 +1,8 @@
<?php
$type='TrueTypeUnicode';
$name='Garuda-Bold';
$desc=array('Ascent'=>1337,'Descent'=>-598,'CapHeight'=>1337,'Flags'=>32,'FontBBox'=>'[-757 -598 1099 1337]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>600);
$up=-27;
$desc=array('Ascent'=>1284,'Descent'=>-591,'CapHeight'=>1284,'Flags'=>32,'FontBBox'=>'[-750 -591 1099 1337]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>600);
$up=-37;
$ut=20;
$cw=array(
32=>344, 33=>308, 34=>458, 35=>597, 36=>574, 37=>697, 38=>717, 39=>298, 40=>378, 41=>378, 42=>597, 43=>565, 44=>252, 45=>455, 46=>217, 47=>597,
@ -19,17 +19,17 @@ $cw=array(
217=>721, 218=>721, 219=>721, 220=>721, 221=>666, 222=>666, 223=>610, 224=>556, 225=>556, 226=>556, 227=>556, 228=>556, 229=>556, 230=>889, 231=>556, 232=>556,
233=>556, 234=>556, 235=>556, 236=>277, 237=>277, 238=>277, 239=>277, 240=>610, 241=>610, 242=>610, 243=>610, 244=>610, 245=>610, 246=>610, 247=>548, 248=>610,
249=>610, 250=>610, 251=>610, 252=>610, 253=>556, 254=>610, 255=>556, 63232=>613, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0, 63240=>0,
63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>875, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 3585=>674,
3586=>659, 3587=>669, 3588=>702, 3589=>698, 3590=>767, 3591=>510, 3592=>606, 3593=>711, 3594=>656, 3595=>694, 3596=>882, 3597=>882, 3598=>680, 3599=>689, 3600=>608, 3601=>832,
3602=>924, 3603=>958, 3604=>702, 3605=>717, 3606=>663, 3607=>721, 3608=>646, 3609=>741, 3610=>718, 3611=>718, 3612=>674, 3613=>674, 3614=>746, 3615=>752, 3616=>680, 3617=>718,
63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>882, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 3585=>674,
3586=>659, 3587=>669, 3588=>702, 3589=>698, 3590=>767, 3591=>510, 3592=>606, 3593=>711, 3594=>656, 3595=>694, 3596=>882, 3597=>882, 3598=>680, 3599=>689, 3600=>613, 3601=>832,
3602=>924, 3603=>958, 3604=>702, 3605=>717, 3606=>663, 3607=>721, 3608=>646, 3609=>741, 3610=>718, 3611=>718, 3612=>674, 3613=>674, 3614=>752, 3615=>752, 3616=>680, 3617=>718,
3618=>657, 3619=>551, 3620=>677, 3621=>660, 3622=>689, 3623=>593, 3624=>700, 3625=>748, 3626=>657, 3627=>715, 3628=>754, 3629=>669, 3630=>656, 3631=>623, 3632=>531, 3633=>0,
3634=>493, 3635=>493, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>718, 3647=>646, 3648=>360, 3649=>649, 3650=>389,
3651=>452, 3652=>458, 3653=>308, 3654=>675, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>596, 3664=>697, 3665=>697, 3666=>697,
3667=>697, 3668=>697, 3669=>697, 3670=>697, 3671=>697, 3672=>697, 3673=>697, 3674=>797, 3675=>1109, 63256=>0, 63257=>0, 63258=>0, 63259=>0, 305=>277, 711=>332, 730=>332,
63260=>338, 63261=>338, 8194=>500, 8195=>1000);
3634=>493, 3635=>493, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>718, 63263=>0, 3647=>646, 3648=>360, 3649=>649,
3650=>389, 3651=>452, 3652=>458, 3653=>308, 3654=>675, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>596, 3664=>697, 3665=>697,
3666=>697, 3667=>697, 3668=>697, 3669=>697, 3670=>697, 3671=>697, 3672=>697, 3673=>697, 3674=>797, 3675=>1109, 63256=>0, 63257=>0, 63258=>0, 63259=>0, 305=>277, 711=>332,
730=>332, 63260=>338, 63261=>338, 8194=>500, 8195=>1000, 64256=>588, 64257=>548, 64258=>548, 64259=>842, 64260=>842, 8204=>0, 8205=>0, 8206=>0, 8207=>0);
$enc='';
$diff='';
$file='garudab.z';
$ctg='garudab.ctg.z';
$originalsize=42928;
$originalsize=75364;
?>

@ -0,0 +1,354 @@
<?php
$this->uni2gn = array (
32 => 'space',
33 => 'exclam',
34 => 'quotedbl',
35 => 'numbersign',
36 => 'dollar',
37 => 'percent',
38 => 'ampersand',
39 => 'quotesingle',
40 => 'parenleft',
41 => 'parenright',
42 => 'asterisk',
43 => 'plus',
44 => 'comma',
45 => 'hyphen',
46 => 'period',
47 => 'slash',
48 => 'zero',
49 => 'one',
50 => 'two',
51 => 'three',
52 => 'four',
53 => 'five',
54 => 'six',
55 => 'seven',
56 => 'eight',
57 => 'nine',
58 => 'colon',
59 => 'semicolon',
60 => 'less',
61 => 'equal',
62 => 'greater',
63 => 'question',
64 => 'at',
65 => 'A',
66 => 'B',
67 => 'C',
68 => 'D',
69 => 'E',
70 => 'F',
71 => 'G',
72 => 'H',
73 => 'I',
74 => 'J',
75 => 'K',
76 => 'L',
77 => 'M',
78 => 'N',
79 => 'O',
80 => 'P',
81 => 'Q',
82 => 'R',
83 => 'S',
84 => 'T',
85 => 'U',
86 => 'V',
87 => 'W',
88 => 'X',
89 => 'Y',
90 => 'Z',
91 => 'bracketleft',
92 => 'backslash',
93 => 'bracketright',
94 => 'asciicircum',
95 => 'underscore',
96 => 'grave',
97 => 'a',
98 => 'b',
99 => 'c',
100 => 'd',
101 => 'e',
102 => 'f',
103 => 'g',
104 => 'h',
105 => 'i',
106 => 'j',
107 => 'k',
108 => 'l',
109 => 'm',
110 => 'n',
111 => 'o',
112 => 'p',
113 => 'q',
114 => 'r',
115 => 's',
116 => 't',
117 => 'u',
118 => 'v',
119 => 'w',
120 => 'x',
121 => 'y',
122 => 'z',
123 => 'braceleft',
124 => 'bar',
125 => 'braceright',
126 => 'asciitilde',
8218 => 'quotesinglbase',
402 => 'florin',
8222 => 'quotedblbase',
8230 => 'ellipsis',
8224 => 'dagger',
8225 => 'daggerdbl',
710 => 'circumflex',
8240 => 'perthousand',
352 => 'Scaron',
8249 => 'guilsinglleft',
338 => 'OE',
8216 => 'quoteleft',
8217 => 'quoteright',
8220 => 'quotedblleft',
8221 => 'quotedblright',
8226 => 'bullet',
8211 => 'endash',
8212 => 'emdash',
732 => 'tilde',
8482 => 'trademark',
353 => 'scaron',
8250 => 'guilsinglright',
339 => 'oe',
376 => 'Ydieresis',
160 => 'nbspace',
161 => 'exclamdown',
162 => 'cent',
163 => 'sterling',
164 => 'currency',
165 => 'yen',
166 => 'brokenbar',
167 => 'section',
168 => 'dieresis',
169 => 'copyright',
170 => 'ordfeminine',
171 => 'guillemotleft',
172 => 'logicalnot',
173 => 'minus',
174 => 'registered',
175 => 'macron',
176 => 'degree',
177 => 'plusminus',
178 => 'twosuperior',
179 => 'threesuperior',
180 => 'acute',
181 => 'mu',
182 => 'paragraph',
183 => 'periodcentered',
184 => 'cedilla',
185 => 'onesuperior',
186 => 'ordmasculine',
187 => 'guillemotright',
188 => 'onequarter',
189 => 'onehalf',
190 => 'threequarters',
191 => 'questiondown',
192 => 'Agrave',
193 => 'Aacute',
194 => 'Acircumflex',
195 => 'Atilde',
196 => 'Adieresis',
197 => 'Aring',
198 => 'AE',
199 => 'Ccedilla',
200 => 'Egrave',
201 => 'Eacute',
202 => 'Ecircumflex',
203 => 'Edieresis',
204 => 'Igrave',
205 => 'Iacute',
206 => 'Icircumflex',
207 => 'Idieresis',
208 => 'Eth',
209 => 'Ntilde',
210 => 'Ograve',
211 => 'Oacute',
212 => 'Ocircumflex',
213 => 'Otilde',
214 => 'Odieresis',
215 => 'multiply',
216 => 'Oslash',
217 => 'Ugrave',
218 => 'Uacute',
219 => 'Ucircumflex',
220 => 'Udieresis',
221 => 'Yacute',
222 => 'Thorn',
223 => 'germandbls',
224 => 'agrave',
225 => 'aacute',
226 => 'acircumflex',
227 => 'atilde',
228 => 'adieresis',
229 => 'aring',
230 => 'ae',
231 => 'ccedilla',
232 => 'egrave',
233 => 'eacute',
234 => 'ecircumflex',
235 => 'edieresis',
236 => 'igrave',
237 => 'iacute',
238 => 'icircumflex',
239 => 'idieresis',
240 => 'eth',
241 => 'ntilde',
242 => 'ograve',
243 => 'oacute',
244 => 'ocircumflex',
245 => 'otilde',
246 => 'odieresis',
247 => 'divide',
248 => 'oslash',
249 => 'ugrave',
250 => 'uacute',
251 => 'ucircumflex',
252 => 'udieresis',
253 => 'yacute',
254 => 'thorn',
255 => 'ydieresis',
63232 => 'uni0E10.descless',
63233 => 'uni0E34.left',
63234 => 'uni0E35.left',
63235 => 'uni0E36.left',
63236 => 'uni0E37.left',
63237 => 'uni0E48.low_left',
63238 => 'uni0E49.low_left',
63239 => 'uni0E4A.low_left',
63240 => 'uni0E4B.low_left',
63241 => 'uni0E4C.low_left',
63242 => 'uni0E48.low',
63243 => 'uni0E49.low',
63244 => 'uni0E4A.low',
63245 => 'uni0E4B.low',
63246 => 'uni0E4C.low',
63247 => 'uni0E0D.descless',
63248 => 'uni0E31.left',
63249 => 'uni0E4D.left',
63250 => 'uni0E47.left',
63251 => 'uni0E48.left',
63252 => 'uni0E49.left',
63253 => 'uni0E4A.left',
63254 => 'uni0E4B.left',
63255 => 'uni0E4C.left',
3585 => 'uni0E01',
3586 => 'uni0E02',
3587 => 'uni0E03',
3588 => 'uni0E04',
3589 => 'uni0E05',
3590 => 'uni0E06',
3591 => 'uni0E07',
3592 => 'uni0E08',
3593 => 'uni0E09',
3594 => 'uni0E0A',
3595 => 'uni0E0B',
3596 => 'uni0E0C',
3597 => 'uni0E0D',
3598 => 'uni0E0E',
3599 => 'uni0E0F',
3600 => 'uni0E10',
3601 => 'uni0E11',
3602 => 'uni0E12',
3603 => 'uni0E13',
3604 => 'uni0E14',
3605 => 'uni0E15',
3606 => 'uni0E16',
3607 => 'uni0E17',
3608 => 'uni0E18',
3609 => 'uni0E19',
3610 => 'uni0E1A',
3611 => 'uni0E1B',
3612 => 'uni0E1C',
3613 => 'uni0E1D',
3614 => 'uni0E1E',
3615 => 'uni0E1F',
3616 => 'uni0E20',
3617 => 'uni0E21',
3618 => 'uni0E22',
3619 => 'uni0E23',
3620 => 'uni0E24',
3621 => 'uni0E25',
3622 => 'uni0E26',
3623 => 'uni0E27',
3624 => 'uni0E28',
3625 => 'uni0E29',
3626 => 'uni0E2A',
3627 => 'uni0E2B',
3628 => 'uni0E2C',
3629 => 'uni0E2D',
3630 => 'uni0E2E',
3631 => 'uni0E2F',
3632 => 'uni0E30',
3633 => 'uni0E31',
3634 => 'uni0E32',
3635 => 'uni0E33',
3636 => 'uni0E34',
3637 => 'uni0E35',
3638 => 'uni0E36',
3639 => 'uni0E37',
3640 => 'uni0E38',
3641 => 'uni0E39',
3642 => 'uni0E3A',
63262 => 'uni0E4D.high',
8203 => 'zerowidthspace',
9676 => 'dottedcircle',
63263 => 'uni0E47.high',
3647 => 'uni0E3F',
3648 => 'uni0E40',
3649 => 'uni0E41',
3650 => 'uni0E42',
3651 => 'uni0E43',
3652 => 'uni0E44',
3653 => 'uni0E45',
3654 => 'uni0E46',
3655 => 'uni0E47',
3656 => 'uni0E48',
3657 => 'uni0E49',
3658 => 'uni0E4A',
3659 => 'uni0E4B',
3660 => 'uni0E4C',
3661 => 'uni0E4D',
3662 => 'uni0E4E',
3663 => 'uni0E4F',
3664 => 'uni0E50',
3665 => 'uni0E51',
3666 => 'uni0E52',
3667 => 'uni0E53',
3668 => 'uni0E54',
3669 => 'uni0E55',
3670 => 'uni0E56',
3671 => 'uni0E57',
3672 => 'uni0E58',
3673 => 'uni0E59',
3674 => 'uni0E5A',
3675 => 'uni0E5B',
63256 => 'uni0E38.low',
63257 => 'uni0E39.low',
63258 => 'uni0E3A.low',
63259 => 'DEL',
305 => 'dotlessi',
711 => 'caron',
730 => 'ring',
63260 => 'uniF71C',
63261 => 'uniF71D',
8194 => 'enspace',
8195 => 'emspace',
64256 => 'ff',
64257 => 'fi',
64258 => 'fl',
64259 => 'ffi',
64260 => 'ffl',
8204 => 'zerowidthnonjoiner',
8205 => 'zerowidthjoiner',
8206 => 'afii299',
8207 => 'afii300',
);
?>

@ -1,8 +1,8 @@
<?php
$type='TrueTypeUnicode';
$name='Garuda-BoldOblique';
$desc=array('Ascent'=>1337,'Descent'=>-598,'CapHeight'=>1337,'Flags'=>96,'FontBBox'=>'[-615 -598 1162 1337]','ItalicAngle'=>-12,'StemV'=>120,'MissingWidth'=>600);
$up=-27;
$desc=array('Ascent'=>1284,'Descent'=>-591,'CapHeight'=>1284,'Flags'=>96,'FontBBox'=>'[-606 -591 1161 1337]','ItalicAngle'=>-12,'StemV'=>120,'MissingWidth'=>600);
$up=-37;
$ut=20;
$cw=array(
32=>344, 33=>308, 34=>458, 35=>597, 36=>574, 37=>697, 38=>717, 39=>298, 40=>378, 41=>378, 42=>597, 43=>565, 44=>252, 45=>455, 46=>217, 47=>597,
@ -19,17 +19,17 @@ $cw=array(
217=>721, 218=>721, 219=>721, 220=>721, 221=>666, 222=>666, 223=>610, 224=>556, 225=>556, 226=>556, 227=>556, 228=>556, 229=>556, 230=>889, 231=>556, 232=>556,
233=>556, 234=>556, 235=>556, 236=>277, 237=>277, 238=>277, 239=>277, 240=>610, 241=>610, 242=>610, 243=>610, 244=>610, 245=>610, 246=>610, 247=>548, 248=>610,
249=>610, 250=>610, 251=>610, 252=>610, 253=>556, 254=>610, 255=>556, 63232=>613, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0, 63240=>0,
63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>875, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 3585=>674,
3586=>659, 3587=>669, 3588=>702, 3589=>698, 3590=>767, 3591=>510, 3592=>606, 3593=>711, 3594=>656, 3595=>694, 3596=>882, 3597=>882, 3598=>680, 3599=>689, 3600=>608, 3601=>832,
3602=>924, 3603=>958, 3604=>702, 3605=>717, 3606=>663, 3607=>721, 3608=>646, 3609=>741, 3610=>718, 3611=>718, 3612=>674, 3613=>674, 3614=>746, 3615=>752, 3616=>680, 3617=>718,
63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>882, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 3585=>674,
3586=>659, 3587=>669, 3588=>702, 3589=>698, 3590=>767, 3591=>510, 3592=>606, 3593=>711, 3594=>656, 3595=>694, 3596=>882, 3597=>882, 3598=>680, 3599=>689, 3600=>613, 3601=>832,
3602=>924, 3603=>958, 3604=>702, 3605=>717, 3606=>663, 3607=>721, 3608=>646, 3609=>741, 3610=>718, 3611=>718, 3612=>674, 3613=>674, 3614=>752, 3615=>752, 3616=>680, 3617=>718,
3618=>657, 3619=>551, 3620=>677, 3621=>660, 3622=>689, 3623=>593, 3624=>700, 3625=>748, 3626=>657, 3627=>715, 3628=>754, 3629=>669, 3630=>656, 3631=>623, 3632=>531, 3633=>0,
3634=>493, 3635=>493, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>718, 3647=>646, 3648=>360, 3649=>649, 3650=>389,
3651=>452, 3652=>458, 3653=>308, 3654=>675, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>596, 3664=>697, 3665=>697, 3666=>697,
3667=>697, 3668=>697, 3669=>697, 3670=>697, 3671=>697, 3672=>697, 3673=>697, 3674=>797, 3675=>1109, 63256=>0, 63257=>0, 63258=>0, 63259=>0, 305=>277, 711=>332, 730=>332,
63260=>338, 63261=>338, 8194=>500, 8195=>1000);
3634=>493, 3635=>493, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>718, 63263=>0, 3647=>646, 3648=>360, 3649=>649,
3650=>389, 3651=>452, 3652=>458, 3653=>308, 3654=>675, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>596, 3664=>697, 3665=>697,
3666=>697, 3667=>697, 3668=>697, 3669=>697, 3670=>697, 3671=>697, 3672=>697, 3673=>697, 3674=>797, 3675=>1109, 63256=>0, 63257=>0, 63258=>0, 63259=>0, 305=>277, 711=>332,
730=>332, 63260=>338, 63261=>338, 8194=>500, 8195=>1000, 64256=>588, 64257=>548, 64258=>548, 64259=>842, 64260=>842, 8204=>0, 8205=>0, 8206=>0, 8207=>0);
$enc='';
$diff='';
$file='garudabi.z';
$ctg='garudabi.ctg.z';
$originalsize=46860;
$originalsize=84872;
?>

@ -0,0 +1,354 @@
<?php
$this->uni2gn = array (
32 => 'space',
33 => 'exclam',
34 => 'quotedbl',
35 => 'numbersign',
36 => 'dollar',
37 => 'percent',
38 => 'ampersand',
39 => 'quotesingle',
40 => 'parenleft',
41 => 'parenright',
42 => 'asterisk',
43 => 'plus',
44 => 'comma',
45 => 'hyphen',
46 => 'period',
47 => 'slash',
48 => 'zero',
49 => 'one',
50 => 'two',
51 => 'three',
52 => 'four',
53 => 'five',
54 => 'six',
55 => 'seven',
56 => 'eight',
57 => 'nine',
58 => 'colon',
59 => 'semicolon',
60 => 'less',
61 => 'equal',
62 => 'greater',
63 => 'question',
64 => 'at',
65 => 'A',
66 => 'B',
67 => 'C',
68 => 'D',
69 => 'E',
70 => 'F',
71 => 'G',
72 => 'H',
73 => 'I',
74 => 'J',
75 => 'K',
76 => 'L',
77 => 'M',
78 => 'N',
79 => 'O',
80 => 'P',
81 => 'Q',
82 => 'R',
83 => 'S',
84 => 'T',
85 => 'U',
86 => 'V',
87 => 'W',
88 => 'X',
89 => 'Y',
90 => 'Z',
91 => 'bracketleft',
92 => 'backslash',
93 => 'bracketright',
94 => 'asciicircum',
95 => 'underscore',
96 => 'grave',
97 => 'a',
98 => 'b',
99 => 'c',
100 => 'd',
101 => 'e',
102 => 'f',
103 => 'g',
104 => 'h',
105 => 'i',
106 => 'j',
107 => 'k',
108 => 'l',
109 => 'm',
110 => 'n',
111 => 'o',
112 => 'p',
113 => 'q',
114 => 'r',
115 => 's',
116 => 't',
117 => 'u',
118 => 'v',
119 => 'w',
120 => 'x',
121 => 'y',
122 => 'z',
123 => 'braceleft',
124 => 'bar',
125 => 'braceright',
126 => 'asciitilde',
8218 => 'quotesinglbase',
402 => 'florin',
8222 => 'quotedblbase',
8230 => 'ellipsis',
8224 => 'dagger',
8225 => 'daggerdbl',
710 => 'circumflex',
8240 => 'perthousand',
352 => 'Scaron',
8249 => 'guilsinglleft',
338 => 'OE',
8216 => 'quoteleft',
8217 => 'quoteright',
8220 => 'quotedblleft',
8221 => 'quotedblright',
8226 => 'bullet',
8211 => 'endash',
8212 => 'emdash',
732 => 'tilde',
8482 => 'trademark',
353 => 'scaron',
8250 => 'guilsinglright',
339 => 'oe',
376 => 'Ydieresis',
160 => 'nbspace',
161 => 'exclamdown',
162 => 'cent',
163 => 'sterling',
164 => 'currency',
165 => 'yen',
166 => 'brokenbar',
167 => 'section',
168 => 'dieresis',
169 => 'copyright',
170 => 'ordfeminine',
171 => 'guillemotleft',
172 => 'logicalnot',
173 => 'minus',
174 => 'registered',
175 => 'macron',
176 => 'degree',
177 => 'plusminus',
178 => 'twosuperior',
179 => 'threesuperior',
180 => 'acute',
181 => 'mu',
182 => 'paragraph',
183 => 'periodcentered',
184 => 'cedilla',
185 => 'onesuperior',
186 => 'ordmasculine',
187 => 'guillemotright',
188 => 'onequarter',
189 => 'onehalf',
190 => 'threequarters',
191 => 'questiondown',
192 => 'Agrave',
193 => 'Aacute',
194 => 'Acircumflex',
195 => 'Atilde',
196 => 'Adieresis',
197 => 'Aring',
198 => 'AE',
199 => 'Ccedilla',
200 => 'Egrave',
201 => 'Eacute',
202 => 'Ecircumflex',
203 => 'Edieresis',
204 => 'Igrave',
205 => 'Iacute',
206 => 'Icircumflex',
207 => 'Idieresis',
208 => 'Eth',
209 => 'Ntilde',
210 => 'Ograve',
211 => 'Oacute',
212 => 'Ocircumflex',
213 => 'Otilde',
214 => 'Odieresis',
215 => 'multiply',
216 => 'Oslash',
217 => 'Ugrave',
218 => 'Uacute',
219 => 'Ucircumflex',
220 => 'Udieresis',
221 => 'Yacute',
222 => 'Thorn',
223 => 'germandbls',
224 => 'agrave',
225 => 'aacute',
226 => 'acircumflex',
227 => 'atilde',
228 => 'adieresis',
229 => 'aring',
230 => 'ae',
231 => 'ccedilla',
232 => 'egrave',
233 => 'eacute',
234 => 'ecircumflex',
235 => 'edieresis',
236 => 'igrave',
237 => 'iacute',
238 => 'icircumflex',
239 => 'idieresis',
240 => 'eth',
241 => 'ntilde',
242 => 'ograve',
243 => 'oacute',
244 => 'ocircumflex',
245 => 'otilde',
246 => 'odieresis',
247 => 'divide',
248 => 'oslash',
249 => 'ugrave',
250 => 'uacute',
251 => 'ucircumflex',
252 => 'udieresis',
253 => 'yacute',
254 => 'thorn',
255 => 'ydieresis',
63232 => 'uni0E10.descless',
63233 => 'uni0E34.left',
63234 => 'uni0E35.left',
63235 => 'uni0E36.left',
63236 => 'uni0E37.left',
63237 => 'uni0E48.low_left',
63238 => 'uni0E49.low_left',
63239 => 'uni0E4A.low_left',
63240 => 'uni0E4B.low_left',
63241 => 'uni0E4C.low_left',
63242 => 'uni0E48.low',
63243 => 'uni0E49.low',
63244 => 'uni0E4A.low',
63245 => 'uni0E4B.low',
63246 => 'uni0E4C.low',
63247 => 'uni0E0D.descless',
63248 => 'uni0E31.left',
63249 => 'uni0E4D.left',
63250 => 'uni0E47.left',
63251 => 'uni0E48.left',
63252 => 'uni0E49.left',
63253 => 'uni0E4A.left',
63254 => 'uni0E4B.left',
63255 => 'uni0E4C.left',
3585 => 'uni0E01',
3586 => 'uni0E02',
3587 => 'uni0E03',
3588 => 'uni0E04',
3589 => 'uni0E05',
3590 => 'uni0E06',
3591 => 'uni0E07',
3592 => 'uni0E08',
3593 => 'uni0E09',
3594 => 'uni0E0A',
3595 => 'uni0E0B',
3596 => 'uni0E0C',
3597 => 'uni0E0D',
3598 => 'uni0E0E',
3599 => 'uni0E0F',
3600 => 'uni0E10',
3601 => 'uni0E11',
3602 => 'uni0E12',
3603 => 'uni0E13',
3604 => 'uni0E14',
3605 => 'uni0E15',
3606 => 'uni0E16',
3607 => 'uni0E17',
3608 => 'uni0E18',
3609 => 'uni0E19',
3610 => 'uni0E1A',
3611 => 'uni0E1B',
3612 => 'uni0E1C',
3613 => 'uni0E1D',
3614 => 'uni0E1E',
3615 => 'uni0E1F',
3616 => 'uni0E20',
3617 => 'uni0E21',
3618 => 'uni0E22',
3619 => 'uni0E23',
3620 => 'uni0E24',
3621 => 'uni0E25',
3622 => 'uni0E26',
3623 => 'uni0E27',
3624 => 'uni0E28',
3625 => 'uni0E29',
3626 => 'uni0E2A',
3627 => 'uni0E2B',
3628 => 'uni0E2C',
3629 => 'uni0E2D',
3630 => 'uni0E2E',
3631 => 'uni0E2F',
3632 => 'uni0E30',
3633 => 'uni0E31',
3634 => 'uni0E32',
3635 => 'uni0E33',
3636 => 'uni0E34',
3637 => 'uni0E35',
3638 => 'uni0E36',
3639 => 'uni0E37',
3640 => 'uni0E38',
3641 => 'uni0E39',
3642 => 'uni0E3A',
63262 => 'uni0E4D.high',
8203 => 'zerowidthspace',
9676 => 'dottedcircle',
63263 => 'uni0E47.high',
3647 => 'uni0E3F',
3648 => 'uni0E40',
3649 => 'uni0E41',
3650 => 'uni0E42',
3651 => 'uni0E43',
3652 => 'uni0E44',
3653 => 'uni0E45',
3654 => 'uni0E46',
3655 => 'uni0E47',
3656 => 'uni0E48',
3657 => 'uni0E49',
3658 => 'uni0E4A',
3659 => 'uni0E4B',
3660 => 'uni0E4C',
3661 => 'uni0E4D',
3662 => 'uni0E4E',
3663 => 'uni0E4F',
3664 => 'uni0E50',
3665 => 'uni0E51',
3666 => 'uni0E52',
3667 => 'uni0E53',
3668 => 'uni0E54',
3669 => 'uni0E55',
3670 => 'uni0E56',
3671 => 'uni0E57',
3672 => 'uni0E58',
3673 => 'uni0E59',
3674 => 'uni0E5A',
3675 => 'uni0E5B',
63256 => 'uni0E38.low',
63257 => 'uni0E39.low',
63258 => 'uni0E3A.low',
63259 => 'DEL',
305 => 'dotlessi',
711 => 'caron',
730 => 'ring',
63260 => 'uniF71C',
63261 => 'uniF71D',
8194 => 'enspace',
8195 => 'emspace',
64256 => 'ff',
64257 => 'fi',
64258 => 'fl',
64259 => 'ffi',
64260 => 'ffl',
8204 => 'zerowidthnonjoiner',
8205 => 'zerowidthjoiner',
8206 => 'afii299',
8207 => 'afii300',
);
?>

@ -1,8 +1,8 @@
<?php
$type='TrueTypeUnicode';
$name='Garuda-Oblique';
$desc=array('Ascent'=>1288,'Descent'=>-605,'CapHeight'=>1288,'Flags'=>96,'FontBBox'=>'[-521 -605 1151 1288]','ItalicAngle'=>-12,'StemV'=>70,'MissingWidth'=>600);
$up=-27;
$desc=array('Ascent'=>1284,'Descent'=>-591,'CapHeight'=>1284,'Flags'=>96,'FontBBox'=>'[-522 -589 1151 1288]','ItalicAngle'=>-12,'StemV'=>70,'MissingWidth'=>600);
$up=-32;
$ut=10;
$cw=array(
32=>340, 33=>277, 34=>354, 35=>556, 36=>556, 37=>889, 38=>666, 39=>190, 40=>332, 41=>332, 42=>387, 43=>583, 44=>277, 45=>332, 46=>277, 47=>277,
@ -10,26 +10,26 @@ $cw=array(
64=>1014, 65=>666, 66=>666, 67=>721, 68=>721, 69=>666, 70=>610, 71=>777, 72=>721, 73=>277, 74=>499, 75=>666, 76=>556, 77=>832, 78=>721, 79=>777,
80=>666, 81=>777, 82=>721, 83=>666, 84=>610, 85=>721, 86=>666, 87=>944, 88=>666, 89=>666, 90=>610, 91=>277, 92=>277, 93=>277, 94=>469, 95=>556,
96=>332, 97=>556, 98=>556, 99=>499, 100=>556, 101=>556, 102=>277, 103=>556, 104=>556, 105=>222, 106=>222, 107=>499, 108=>222, 109=>832, 110=>556, 111=>556,
112=>556, 113=>556, 114=>332, 115=>499, 116=>277, 117=>556, 118=>499, 119=>721, 120=>499, 121=>499, 122=>499, 123=>334, 124=>259, 125=>334, 126=>583, 127=>1532,
8218=>222, 402=>554, 8222=>332, 8230=>570, 8224=>554, 8225=>554, 710=>332, 8240=>999, 352=>666, 8249=>332, 338=>999, 8216=>268, 8217=>278, 8220=>484, 8221=>531, 8226=>528,
8211=>548, 8212=>709, 732=>332, 8482=>999, 353=>499, 8250=>332, 339=>944, 376=>666, 160=>157, 161=>332, 162=>554, 163=>554, 164=>554, 165=>554, 166=>259, 167=>554,
168=>332, 169=>735, 170=>369, 171=>554, 172=>583, 173=>332, 174=>735, 175=>551, 176=>400, 177=>548, 178=>332, 179=>332, 180=>332, 181=>574, 182=>536, 183=>277,
184=>332, 185=>332, 186=>364, 187=>554, 188=>833, 189=>833, 190=>833, 191=>610, 192=>666, 193=>666, 194=>666, 195=>666, 196=>666, 197=>666, 198=>999, 199=>721,
200=>666, 201=>666, 202=>666, 203=>666, 204=>277, 205=>277, 206=>277, 207=>277, 208=>721, 209=>721, 210=>777, 211=>777, 212=>777, 213=>777, 214=>777, 215=>583,
216=>777, 217=>721, 218=>721, 219=>721, 220=>721, 221=>666, 222=>666, 223=>610, 224=>556, 225=>556, 226=>556, 227=>556, 228=>556, 229=>556, 230=>889, 231=>499,
232=>556, 233=>556, 234=>556, 235=>556, 236=>277, 237=>277, 238=>277, 239=>277, 240=>554, 241=>556, 242=>556, 243=>556, 244=>556, 245=>556, 246=>556, 247=>548,
248=>610, 249=>556, 250=>556, 251=>556, 252=>556, 253=>499, 254=>554, 255=>499, 63232=>530, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0,
63240=>0, 63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>800, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0,
3585=>626, 3586=>648, 3587=>677, 3588=>613, 3589=>591, 3590=>770, 3591=>496, 3592=>551, 3593=>596, 3594=>602, 3595=>648, 3596=>792, 3597=>833, 3598=>668, 3599=>663, 3600=>528,
3601=>815, 3602=>820, 3603=>818, 3604=>614, 3605=>645, 3606=>628, 3607=>691, 3608=>548, 3609=>668, 3610=>643, 3611=>636, 3612=>639, 3613=>639, 3614=>698, 3615=>698, 3616=>712,
3617=>665, 3618=>622, 3619=>501, 3620=>610, 3621=>593, 3622=>666, 3623=>545, 3624=>610, 3625=>666, 3626=>579, 3627=>651, 3628=>706, 3629=>567, 3630=>547, 3631=>518, 3632=>510,
3633=>0, 3634=>438, 3635=>438, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>643, 3647=>629, 3648=>340, 3649=>600,
112=>556, 113=>556, 114=>332, 115=>499, 116=>277, 117=>556, 118=>499, 119=>721, 120=>499, 121=>499, 122=>499, 123=>334, 124=>259, 125=>334, 126=>583, 8218=>222,
402=>554, 8222=>332, 8230=>570, 8224=>554, 8225=>554, 710=>332, 8240=>999, 352=>666, 8249=>332, 338=>999, 8216=>268, 8217=>278, 8220=>484, 8221=>531, 8226=>528, 8211=>548,
8212=>709, 732=>332, 8482=>999, 353=>499, 8250=>332, 339=>944, 376=>666, 160=>157, 161=>332, 162=>554, 163=>554, 164=>554, 165=>554, 166=>259, 167=>554, 168=>332,
169=>735, 170=>369, 171=>554, 172=>583, 173=>332, 174=>735, 175=>551, 176=>400, 177=>548, 178=>332, 179=>332, 180=>332, 181=>574, 182=>536, 183=>277, 184=>332,
185=>332, 186=>364, 187=>554, 188=>833, 189=>833, 190=>833, 191=>610, 192=>666, 193=>666, 194=>666, 195=>666, 196=>666, 197=>666, 198=>999, 199=>721, 200=>666,
201=>666, 202=>666, 203=>666, 204=>277, 205=>277, 206=>277, 207=>277, 208=>721, 209=>721, 210=>777, 211=>777, 212=>777, 213=>777, 214=>777, 215=>583, 216=>777,
217=>721, 218=>721, 219=>721, 220=>721, 221=>666, 222=>666, 223=>610, 224=>556, 225=>556, 226=>556, 227=>556, 228=>556, 229=>556, 230=>889, 231=>499, 232=>556,
233=>556, 234=>556, 235=>556, 236=>277, 237=>277, 238=>277, 239=>277, 240=>554, 241=>556, 242=>556, 243=>556, 244=>556, 245=>556, 246=>556, 247=>548, 248=>610,
249=>556, 250=>556, 251=>556, 252=>556, 253=>499, 254=>554, 255=>499, 63232=>530, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0, 63240=>0,
63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>800, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0, 3585=>626,
3586=>648, 3587=>677, 3588=>613, 3589=>591, 3590=>770, 3591=>496, 3592=>551, 3593=>596, 3594=>602, 3595=>648, 3596=>792, 3597=>800, 3598=>668, 3599=>663, 3600=>530, 3601=>815,
3602=>820, 3603=>818, 3604=>614, 3605=>645, 3606=>628, 3607=>691, 3608=>548, 3609=>668, 3610=>636, 3611=>636, 3612=>639, 3613=>639, 3614=>698, 3615=>698, 3616=>712, 3617=>665,
3618=>622, 3619=>501, 3620=>610, 3621=>593, 3622=>666, 3623=>545, 3624=>610, 3625=>666, 3626=>579, 3627=>651, 3628=>706, 3629=>567, 3630=>547, 3631=>518, 3632=>510, 3633=>0,
3634=>438, 3635=>438, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>643, 63263=>0, 3647=>629, 3648=>340, 3649=>600,
3650=>413, 3651=>400, 3652=>449, 3653=>220, 3654=>565, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>599, 3664=>611, 3665=>611,
3666=>611, 3667=>611, 3668=>611, 3669=>611, 3670=>611, 3671=>611, 3672=>611, 3673=>611, 3674=>625, 3675=>1105, 63256=>0, 63257=>0, 63258=>0, 63259=>0, 305=>277, 711=>332,
730=>332, 63260=>340, 63261=>340, 8194=>500, 8195=>1000);
730=>332, 63260=>340, 63261=>340, 8194=>500, 8195=>1000, 64256=>554, 64257=>499, 64258=>499, 64259=>776, 64260=>776, 8204=>0, 8205=>0, 8206=>0, 8207=>0);
$enc='';
$diff='';
$file='garudai.z';
$ctg='garudai.ctg.z';
$originalsize=45300;
$originalsize=85500;
?>

@ -0,0 +1,354 @@
<?php
$this->uni2gn = array (
32 => 'space',
33 => 'exclam',
34 => 'quotedbl',
35 => 'numbersign',
36 => 'dollar',
37 => 'percent',
38 => 'ampersand',
39 => 'quotesingle',
40 => 'parenleft',
41 => 'parenright',
42 => 'asterisk',
43 => 'plus',
44 => 'comma',
45 => 'hyphen',
46 => 'period',
47 => 'slash',
48 => 'zero',
49 => 'one',
50 => 'two',
51 => 'three',
52 => 'four',
53 => 'five',
54 => 'six',
55 => 'seven',
56 => 'eight',
57 => 'nine',
58 => 'colon',
59 => 'semicolon',
60 => 'less',
61 => 'equal',
62 => 'greater',
63 => 'question',
64 => 'at',
65 => 'A',
66 => 'B',
67 => 'C',
68 => 'D',
69 => 'E',
70 => 'F',
71 => 'G',
72 => 'H',
73 => 'I',
74 => 'J',
75 => 'K',
76 => 'L',
77 => 'M',
78 => 'N',
79 => 'O',
80 => 'P',
81 => 'Q',
82 => 'R',
83 => 'S',
84 => 'T',
85 => 'U',
86 => 'V',
87 => 'W',
88 => 'X',
89 => 'Y',
90 => 'Z',
91 => 'bracketleft',
92 => 'backslash',
93 => 'bracketright',
94 => 'asciicircum',
95 => 'underscore',
96 => 'grave',
97 => 'a',
98 => 'b',
99 => 'c',
100 => 'd',
101 => 'e',
102 => 'f',
103 => 'g',
104 => 'h',
105 => 'i',
106 => 'j',
107 => 'k',
108 => 'l',
109 => 'm',
110 => 'n',
111 => 'o',
112 => 'p',
113 => 'q',
114 => 'r',
115 => 's',
116 => 't',
117 => 'u',
118 => 'v',
119 => 'w',
120 => 'x',
121 => 'y',
122 => 'z',
123 => 'braceleft',
124 => 'bar',
125 => 'braceright',
126 => 'asciitilde',
8218 => 'quotesinglbase',
402 => 'florin',
8222 => 'quotedblbase',
8230 => 'ellipsis',
8224 => 'dagger',
8225 => 'daggerdbl',
710 => 'circumflex',
8240 => 'perthousand',
352 => 'Scaron',
8249 => 'guilsinglleft',
338 => 'OE',
8216 => 'quoteleft',
8217 => 'quoteright',
8220 => 'quotedblleft',
8221 => 'quotedblright',
8226 => 'bullet',
8211 => 'endash',
8212 => 'emdash',
732 => 'tilde',
8482 => 'trademark',
353 => 'scaron',
8250 => 'guilsinglright',
339 => 'oe',
376 => 'Ydieresis',
160 => 'nbspace',
161 => 'exclamdown',
162 => 'cent',
163 => 'sterling',
164 => 'currency',
165 => 'yen',
166 => 'brokenbar',
167 => 'section',
168 => 'dieresis',
169 => 'copyright',
170 => 'ordfeminine',
171 => 'guillemotleft',
172 => 'logicalnot',
173 => 'minus',
174 => 'registered',
175 => 'macron',
176 => 'degree',
177 => 'plusminus',
178 => 'twosuperior',
179 => 'threesuperior',
180 => 'acute',
181 => 'mu',
182 => 'paragraph',
183 => 'periodcentered',
184 => 'cedilla',
185 => 'onesuperior',
186 => 'ordmasculine',
187 => 'guillemotright',
188 => 'onequarter',
189 => 'onehalf',
190 => 'threequarters',
191 => 'questiondown',
192 => 'Agrave',
193 => 'Aacute',
194 => 'Acircumflex',
195 => 'Atilde',
196 => 'Adieresis',
197 => 'Aring',
198 => 'AE',
199 => 'Ccedilla',
200 => 'Egrave',
201 => 'Eacute',
202 => 'Ecircumflex',
203 => 'Edieresis',
204 => 'Igrave',
205 => 'Iacute',
206 => 'Icircumflex',
207 => 'Idieresis',
208 => 'Eth',
209 => 'Ntilde',
210 => 'Ograve',
211 => 'Oacute',
212 => 'Ocircumflex',
213 => 'Otilde',
214 => 'Odieresis',
215 => 'multiply',
216 => 'Oslash',
217 => 'Ugrave',
218 => 'Uacute',
219 => 'Ucircumflex',
220 => 'Udieresis',
221 => 'Yacute',
222 => 'Thorn',
223 => 'germandbls',
224 => 'agrave',
225 => 'aacute',
226 => 'acircumflex',
227 => 'atilde',
228 => 'adieresis',
229 => 'aring',
230 => 'ae',
231 => 'ccedilla',
232 => 'egrave',
233 => 'eacute',
234 => 'ecircumflex',
235 => 'edieresis',
236 => 'igrave',
237 => 'iacute',
238 => 'icircumflex',
239 => 'idieresis',
240 => 'eth',
241 => 'ntilde',
242 => 'ograve',
243 => 'oacute',
244 => 'ocircumflex',
245 => 'otilde',
246 => 'odieresis',
247 => 'divide',
248 => 'oslash',
249 => 'ugrave',
250 => 'uacute',
251 => 'ucircumflex',
252 => 'udieresis',
253 => 'yacute',
254 => 'thorn',
255 => 'ydieresis',
63232 => 'uni0E10.descless',
63233 => 'uni0E34.left',
63234 => 'uni0E35.left',
63235 => 'uni0E36.left',
63236 => 'uni0E37.left',
63237 => 'uni0E48.low_left',
63238 => 'uni0E49.low_left',
63239 => 'uni0E4A.low_left',
63240 => 'uni0E4B.low_left',
63241 => 'uni0E4C.low_left',
63242 => 'uni0E48.low',
63243 => 'uni0E49.low',
63244 => 'uni0E4A.low',
63245 => 'uni0E4B.low',
63246 => 'uni0E4C.low',
63247 => 'uni0E0D.descless',
63248 => 'uni0E31.left',
63249 => 'uni0E4D.left',
63250 => 'uni0E47.left',
63251 => 'uni0E48.left',
63252 => 'uni0E49.left',
63253 => 'uni0E4A.left',
63254 => 'uni0E4B.left',
63255 => 'uni0E4C.left',
3585 => 'uni0E01',
3586 => 'uni0E02',
3587 => 'uni0E03',
3588 => 'uni0E04',
3589 => 'uni0E05',
3590 => 'uni0E06',
3591 => 'uni0E07',
3592 => 'uni0E08',
3593 => 'uni0E09',
3594 => 'uni0E0A',
3595 => 'uni0E0B',
3596 => 'uni0E0C',
3597 => 'uni0E0D',
3598 => 'uni0E0E',
3599 => 'uni0E0F',
3600 => 'uni0E10',
3601 => 'uni0E11',
3602 => 'uni0E12',
3603 => 'uni0E13',
3604 => 'uni0E14',
3605 => 'uni0E15',
3606 => 'uni0E16',
3607 => 'uni0E17',
3608 => 'uni0E18',
3609 => 'uni0E19',
3610 => 'uni0E1A',
3611 => 'uni0E1B',
3612 => 'uni0E1C',
3613 => 'uni0E1D',
3614 => 'uni0E1E',
3615 => 'uni0E1F',
3616 => 'uni0E20',
3617 => 'uni0E21',
3618 => 'uni0E22',
3619 => 'uni0E23',
3620 => 'uni0E24',
3621 => 'uni0E25',
3622 => 'uni0E26',
3623 => 'uni0E27',
3624 => 'uni0E28',
3625 => 'uni0E29',
3626 => 'uni0E2A',
3627 => 'uni0E2B',
3628 => 'uni0E2C',
3629 => 'uni0E2D',
3630 => 'uni0E2E',
3631 => 'uni0E2F',
3632 => 'uni0E30',
3633 => 'uni0E31',
3634 => 'uni0E32',
3635 => 'uni0E33',
3636 => 'uni0E34',
3637 => 'uni0E35',
3638 => 'uni0E36',
3639 => 'uni0E37',
3640 => 'uni0E38',
3641 => 'uni0E39',
3642 => 'uni0E3A',
63262 => 'uni0E4D.high',
8203 => 'zerowidthspace',
9676 => 'dottedcircle',
63263 => 'uni0E47.high',
3647 => 'uni0E3F',
3648 => 'uni0E40',
3649 => 'uni0E41',
3650 => 'uni0E42',
3651 => 'uni0E43',
3652 => 'uni0E44',
3653 => 'uni0E45',
3654 => 'uni0E46',
3655 => 'uni0E47',
3656 => 'uni0E48',
3657 => 'uni0E49',
3658 => 'uni0E4A',
3659 => 'uni0E4B',
3660 => 'uni0E4C',
3661 => 'uni0E4D',
3662 => 'uni0E4E',
3663 => 'uni0E4F',
3664 => 'uni0E50',
3665 => 'uni0E51',
3666 => 'uni0E52',
3667 => 'uni0E53',
3668 => 'uni0E54',
3669 => 'uni0E55',
3670 => 'uni0E56',
3671 => 'uni0E57',
3672 => 'uni0E58',
3673 => 'uni0E59',
3674 => 'uni0E5A',
3675 => 'uni0E5B',
63256 => 'uni0E38.low',
63257 => 'uni0E39.low',
63258 => 'uni0E3A.low',
63259 => 'DEL',
305 => 'dotlessi',
711 => 'caron',
730 => 'ring',
63260 => 'uniF71C',
63261 => 'uniF71D',
8194 => 'enspace',
8195 => 'emspace',
64256 => 'ff',
64257 => 'fi',
64258 => 'fl',
64259 => 'ffi',
64260 => 'ffl',
8204 => 'zerowidthnonjoiner',
8205 => 'zerowidthjoiner',
8206 => 'afii299',
8207 => 'afii300',
);
?>

@ -1,8 +1,8 @@
<?php
$type='TrueTypeUnicode';
$name='Norasi';
$desc=array('Ascent'=>1219,'Descent'=>-529,'CapHeight'=>1219,'Flags'=>32,'FontBBox'=>'[-587 -529 1538 1219]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600);
$up=-100;
$desc=array('Ascent'=>1216,'Descent'=>-488,'CapHeight'=>1216,'Flags'=>32,'FontBBox'=>'[-602 -488 1538 1219]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>600);
$up=-125;
$ut=50;
$cw=array(
32=>366, 33=>332, 34=>407, 35=>499, 36=>499, 37=>832, 38=>777, 39=>238, 40=>332, 41=>332, 42=>499, 43=>563, 44=>249, 45=>332, 46=>249, 47=>276,
@ -19,20 +19,20 @@ $cw=array(
216=>720, 217=>720, 218=>720, 219=>720, 220=>720, 221=>720, 222=>555, 223=>499, 224=>443, 225=>443, 226=>443, 227=>443, 228=>443, 229=>443, 230=>666, 231=>443,
232=>443, 233=>443, 234=>443, 235=>443, 236=>276, 237=>276, 238=>276, 239=>276, 240=>499, 241=>499, 242=>499, 243=>499, 244=>499, 245=>499, 246=>499, 247=>563,
248=>499, 249=>499, 250=>499, 251=>499, 252=>499, 253=>499, 254=>499, 255=>499, 63232=>520, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0,
63240=>0, 63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>798, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0,
63240=>0, 63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>795, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0,
3585=>591, 3586=>515, 3587=>574, 3588=>568, 3589=>580, 3590=>644, 3591=>446, 3592=>467, 3593=>670, 3594=>520, 3595=>574, 3596=>793, 3597=>795, 3598=>626, 3599=>626, 3600=>521,
3601=>670, 3602=>780, 3603=>852, 3604=>566, 3605=>578, 3606=>584, 3607=>626, 3608=>527, 3609=>669, 3610=>604, 3611=>604, 3612=>594, 3613=>594, 3614=>653, 3615=>653, 3616=>624,
3617=>600, 3618=>543, 3619=>461, 3620=>591, 3621=>556, 3622=>626, 3623=>480, 3624=>602, 3625=>717, 3626=>594, 3627=>635, 3628=>685, 3629=>563, 3630=>571, 3631=>537, 3632=>458,
3633=>0, 3634=>398, 3635=>398, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>604, 3647=>666, 3648=>284, 3649=>552,
3650=>319, 3651=>369, 3652=>373, 3653=>297, 3654=>563, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>799, 3664=>688, 3665=>688,
3666=>688, 3667=>688, 3668=>688, 3669=>688, 3670=>688, 3671=>688, 3672=>688, 3673=>688, 3674=>713, 3675=>1609, 63256=>0, 63257=>0, 63258=>0, 63259=>366, 64257=>534, 64258=>530,
64256=>588, 64259=>805, 64260=>799, 305=>276, 63166=>276, 8260=>166, 728=>332, 729=>332, 730=>332, 733=>332, 731=>332, 711=>332, 321=>610, 322=>276, 8722=>563, 9251=>732,
63329=>471, 63330=>446, 63331=>437, 63332=>483, 63333=>424, 63334=>385, 63335=>483, 63336=>502, 63337=>244, 63338=>294, 63339=>541, 63340=>408, 63341=>615, 63342=>492, 63343=>499, 63344=>407,
63345=>483, 63346=>493, 63347=>388, 63348=>430, 63349=>508, 63350=>499, 63351=>720, 63352=>499, 63353=>509, 63354=>443, 63280=>499, 63281=>499, 63282=>499, 63283=>499, 63284=>499, 63285=>499,
63286=>499, 63287=>499, 63288=>499, 63289=>499, 8194=>500, 8195=>1000);
3633=>0, 3634=>398, 3635=>398, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>604, 63263=>0, 3647=>666, 3648=>284,
3649=>552, 3650=>319, 3651=>369, 3652=>373, 3653=>297, 3654=>563, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>799, 3664=>688,
3665=>688, 3666=>688, 3667=>688, 3668=>688, 3669=>688, 3670=>688, 3671=>688, 3672=>688, 3673=>688, 3674=>713, 3675=>1609, 63256=>0, 63257=>0, 63258=>0, 63259=>366, 64257=>534,
64258=>530, 64256=>588, 64259=>805, 64260=>799, 305=>276, 63166=>276, 8260=>166, 728=>332, 729=>332, 730=>332, 733=>332, 731=>332, 711=>332, 321=>610, 322=>276, 8722=>563,
9251=>732, 63329=>471, 63330=>446, 63331=>437, 63332=>483, 63333=>424, 63334=>385, 63335=>483, 63336=>502, 63337=>244, 63338=>294, 63339=>541, 63340=>408, 63341=>615, 63342=>492, 63343=>499,
63344=>407, 63345=>483, 63346=>493, 63347=>388, 63348=>430, 63349=>508, 63350=>499, 63351=>720, 63352=>499, 63353=>509, 63354=>443, 63280=>499, 63281=>499, 63282=>499, 63283=>499, 63284=>499,
63285=>499, 63286=>499, 63287=>499, 63288=>499, 63289=>499, 8194=>500, 8195=>1000, 8204=>0, 8205=>0, 8206=>0, 8207=>0);
$enc='';
$diff='';
$file='norasi.z';
$ctg='norasi.ctg.z';
$originalsize=62432;
$originalsize=103412;
?>

@ -0,0 +1,399 @@
<?php
$this->uni2gn = array (
32 => 'space',
33 => 'exclam',
34 => 'quotedbl',
35 => 'numbersign',
36 => 'dollar',
37 => 'percent',
38 => 'ampersand',
39 => 'quotesingle',
40 => 'parenleft',
41 => 'parenright',
42 => 'asterisk',
43 => 'plus',
44 => 'comma',
45 => 'hyphen',
46 => 'period',
47 => 'slash',
48 => 'zero',
49 => 'one',
50 => 'two',
51 => 'three',
52 => 'four',
53 => 'five',
54 => 'six',
55 => 'seven',
56 => 'eight',
57 => 'nine',
58 => 'colon',
59 => 'semicolon',
60 => 'less',
61 => 'equal',
62 => 'greater',
63 => 'question',
64 => 'at',
65 => 'A',
66 => 'B',
67 => 'C',
68 => 'D',
69 => 'E',
70 => 'F',
71 => 'G',
72 => 'H',
73 => 'I',
74 => 'J',
75 => 'K',
76 => 'L',
77 => 'M',
78 => 'N',
79 => 'O',
80 => 'P',
81 => 'Q',
82 => 'R',
83 => 'S',
84 => 'T',
85 => 'U',
86 => 'V',
87 => 'W',
88 => 'X',
89 => 'Y',
90 => 'Z',
91 => 'bracketleft',
92 => 'backslash',
93 => 'bracketright',
94 => 'asciicircum',
95 => 'underscore',
96 => 'grave',
97 => 'a',
98 => 'b',
99 => 'c',
100 => 'd',
101 => 'e',
102 => 'f',
103 => 'g',
104 => 'h',
105 => 'i',
106 => 'j',
107 => 'k',
108 => 'l',
109 => 'm',
110 => 'n',
111 => 'o',
112 => 'p',
113 => 'q',
114 => 'r',
115 => 's',
116 => 't',
117 => 'u',
118 => 'v',
119 => 'w',
120 => 'x',
121 => 'y',
122 => 'z',
123 => 'braceleft',
124 => 'bar',
125 => 'braceright',
126 => 'asciitilde',
8364 => 'Euro',
8218 => 'quotesinglbase',
402 => 'florin',
8222 => 'quotedblbase',
8230 => 'ellipsis',
8224 => 'dagger',
8225 => 'daggerdbl',
710 => 'circumflex',
8240 => 'perthousand',
352 => 'Scaron',
8249 => 'guilsinglleft',
338 => 'OE',
8216 => 'quoteleft',
8217 => 'quoteright',
8220 => 'quotedblleft',
8221 => 'quotedblright',
8226 => 'bullet',
8211 => 'endash',
8212 => 'emdash',
732 => 'tilde',
8482 => 'trademark',
353 => 'scaron',
8250 => 'guilsinglright',
339 => 'oe',
376 => 'Ydieresis',
160 => 'nbspace',
161 => 'exclamdown',
162 => 'cent',
163 => 'sterling',
164 => 'currency',
165 => 'yen',
166 => 'brokenbar',
167 => 'section',
168 => 'dieresis',
169 => 'copyright',
170 => 'ordfeminine',
171 => 'guillemotleft',
172 => 'logicalnot',
173 => 'softhyphen',
174 => 'registered',
175 => 'macron',
176 => 'degree',
177 => 'plusminus',
178 => 'twosuperior',
179 => 'threesuperior',
180 => 'acute',
181 => 'mu',
182 => 'paragraph',
183 => 'periodcentered',
184 => 'cedilla',
185 => 'onesuperior',
186 => 'ordmasculine',
187 => 'guillemotright',
188 => 'onequarter',
189 => 'onehalf',
190 => 'threequarters',
191 => 'questiondown',
192 => 'Agrave',
193 => 'Aacute',
194 => 'Acircumflex',
195 => 'Atilde',
196 => 'Adieresis',
197 => 'Aring',
198 => 'AE',
199 => 'Ccedilla',
200 => 'Egrave',
201 => 'Eacute',
202 => 'Ecircumflex',
203 => 'Edieresis',
204 => 'Igrave',
205 => 'Iacute',
206 => 'Icircumflex',
207 => 'Idieresis',
208 => 'Eth',
209 => 'Ntilde',
210 => 'Ograve',
211 => 'Oacute',
212 => 'Ocircumflex',
213 => 'Otilde',
214 => 'Odieresis',
215 => 'multiply',
216 => 'Oslash',
217 => 'Ugrave',
218 => 'Uacute',
219 => 'Ucircumflex',
220 => 'Udieresis',
221 => 'Yacute',
222 => 'Thorn',
223 => 'germandbls',
224 => 'agrave',
225 => 'aacute',
226 => 'acircumflex',
227 => 'atilde',
228 => 'adieresis',
229 => 'aring',
230 => 'ae',
231 => 'ccedilla',
232 => 'egrave',
233 => 'eacute',
234 => 'ecircumflex',
235 => 'edieresis',
236 => 'igrave',
237 => 'iacute',
238 => 'icircumflex',
239 => 'idieresis',
240 => 'eth',
241 => 'ntilde',
242 => 'ograve',
243 => 'oacute',
244 => 'ocircumflex',
245 => 'otilde',
246 => 'odieresis',
247 => 'divide',
248 => 'oslash',
249 => 'ugrave',
250 => 'uacute',
251 => 'ucircumflex',
252 => 'udieresis',
253 => 'yacute',
254 => 'thorn',
255 => 'ydieresis',
63232 => 'uni0E10.descless',
63233 => 'uni0E34.left',
63234 => 'uni0E35.left',
63235 => 'uni0E36.left',
63236 => 'uni0E37.left',
63237 => 'uni0E48.low_left',
63238 => 'uni0E49.low_left',
63239 => 'uni0E4A.low_left',
63240 => 'uni0E4B.low_left',
63241 => 'uni0E4C.low_left',
63242 => 'uni0E48.low',
63243 => 'uni0E49.low',
63244 => 'uni0E4A.low',
63245 => 'uni0E4B.low',
63246 => 'uni0E4C.low',
63247 => 'uni0E0D.descless',
63248 => 'uni0E31.left',
63249 => 'uni0E4D.left',
63250 => 'uni0E47.left',
63251 => 'uni0E48.left',
63252 => 'uni0E49.left',
63253 => 'uni0E4A.left',
63254 => 'uni0E4B.left',
63255 => 'uni0E4C.left',
3585 => 'uni0E01',
3586 => 'uni0E02',
3587 => 'uni0E03',
3588 => 'uni0E04',
3589 => 'uni0E05',
3590 => 'uni0E06',
3591 => 'uni0E07',
3592 => 'uni0E08',
3593 => 'uni0E09',
3594 => 'uni0E0A',
3595 => 'uni0E0B',
3596 => 'uni0E0C',
3597 => 'uni0E0D',
3598 => 'uni0E0E',
3599 => 'uni0E0F',
3600 => 'uni0E10',
3601 => 'uni0E11',
3602 => 'uni0E12',
3603 => 'uni0E13',
3604 => 'uni0E14',
3605 => 'uni0E15',
3606 => 'uni0E16',
3607 => 'uni0E17',
3608 => 'uni0E18',
3609 => 'uni0E19',
3610 => 'uni0E1A',
3611 => 'uni0E1B',
3612 => 'uni0E1C',
3613 => 'uni0E1D',
3614 => 'uni0E1E',
3615 => 'uni0E1F',
3616 => 'uni0E20',
3617 => 'uni0E21',
3618 => 'uni0E22',
3619 => 'uni0E23',
3620 => 'uni0E24',
3621 => 'uni0E25',
3622 => 'uni0E26',
3623 => 'uni0E27',
3624 => 'uni0E28',
3625 => 'uni0E29',
3626 => 'uni0E2A',
3627 => 'uni0E2B',
3628 => 'uni0E2C',
3629 => 'uni0E2D',
3630 => 'uni0E2E',
3631 => 'uni0E2F',
3632 => 'uni0E30',
3633 => 'uni0E31',
3634 => 'uni0E32',
3635 => 'uni0E33',
3636 => 'uni0E34',
3637 => 'uni0E35',
3638 => 'uni0E36',
3639 => 'uni0E37',
3640 => 'uni0E38',
3641 => 'uni0E39',
3642 => 'uni0E3A',
63262 => 'uni0E4D.high',
8203 => 'zerowidthspace',
9676 => 'dottedcircle',
63263 => 'uni0E47.high',
3647 => 'uni0E3F',
3648 => 'uni0E40',
3649 => 'uni0E41',
3650 => 'uni0E42',
3651 => 'uni0E43',
3652 => 'uni0E44',
3653 => 'uni0E45',
3654 => 'uni0E46',
3655 => 'uni0E47',
3656 => 'uni0E48',
3657 => 'uni0E49',
3658 => 'uni0E4A',
3659 => 'uni0E4B',
3660 => 'uni0E4C',
3661 => 'uni0E4D',
3662 => 'uni0E4E',
3663 => 'uni0E4F',
3664 => 'uni0E50',
3665 => 'uni0E51',
3666 => 'uni0E52',
3667 => 'uni0E53',
3668 => 'uni0E54',
3669 => 'uni0E55',
3670 => 'uni0E56',
3671 => 'uni0E57',
3672 => 'uni0E58',
3673 => 'uni0E59',
3674 => 'uni0E5A',
3675 => 'uni0E5B',
63256 => 'uni0E38.low',
63257 => 'uni0E39.low',
63258 => 'uni0E3A.low',
63259 => 'uniF71B',
64257 => 'fi',
64258 => 'fl',
64256 => 'ff',
64259 => 'ffi',
64260 => 'ffl',
305 => 'dotlessi',
63166 => 'dotlessj',
8260 => 'fraction',
728 => 'breve',
729 => 'dotaccent',
730 => 'ring',
733 => 'hungarumlaut',
731 => 'ogonek',
711 => 'caron',
321 => 'Lslash',
322 => 'lslash',
8722 => 'minus',
9251 => 'visiblespace',
63329 => 'Asmall',
63330 => 'Bsmall',
63331 => 'Csmall',
63332 => 'Dsmall',
63333 => 'Esmall',
63334 => 'Fsmall',
63335 => 'Gsmall',
63336 => 'Hsmall',
63337 => 'Ismall',
63338 => 'Jsmall',
63339 => 'Ksmall',
63340 => 'Lsmall',
63341 => 'Msmall',
63342 => 'Nsmall',
63343 => 'Osmall',
63344 => 'Psmall',
63345 => 'Qsmall',
63346 => 'Rsmall',
63347 => 'Ssmall',
63348 => 'Tsmall',
63349 => 'Usmall',
63350 => 'Vsmall',
63351 => 'Wsmall',
63352 => 'Xsmall',
63353 => 'Ysmall',
63354 => 'Zsmall',
63280 => 'zerooldstyle',
63281 => 'oneoldstyle',
63282 => 'twooldstyle',
63283 => 'threeoldstyle',
63284 => 'fouroldstyle',
63285 => 'fiveoldstyle',
63286 => 'sixoldstyle',
63287 => 'sevenoldstyle',
63288 => 'eightoldstyle',
63289 => 'nineoldstyle',
8194 => 'enspace',
8195 => 'emspace',
8204 => 'zerowidthnonjoiner',
8205 => 'zerowidthjoiner',
8206 => 'afii299',
8207 => 'afii300',
);
?>

@ -1,8 +1,8 @@
<?php
$type='TrueTypeUnicode';
$name='Norasi-Bold';
$desc=array('Ascent'=>1182,'Descent'=>-495,'CapHeight'=>1182,'Flags'=>32,'FontBBox'=>'[-598 -495 1579 1182]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>366);
$up=-100;
$desc=array('Ascent'=>1216,'Descent'=>-488,'CapHeight'=>1216,'Flags'=>32,'FontBBox'=>'[-621 -482 1579 1182]','ItalicAngle'=>0,'StemV'=>120,'MissingWidth'=>366);
$up=-125;
$ut=50;
$cw=array(
0=>366, 32=>439, 33=>332, 34=>553, 35=>499, 36=>499, 37=>998, 38=>832, 39=>188, 40=>332, 41=>332, 42=>499, 43=>569, 44=>249, 45=>332, 46=>249,
@ -16,23 +16,23 @@ $cw=array(
167=>499, 168=>332, 169=>745, 170=>298, 171=>499, 172=>569, 173=>569, 174=>745, 175=>332, 176=>399, 177=>569, 178=>298, 179=>298, 180=>332, 181=>555, 182=>539,
183=>249, 184=>332, 185=>298, 186=>329, 187=>499, 188=>749, 189=>749, 190=>749, 191=>499, 192=>720, 193=>720, 194=>720, 195=>720, 196=>720, 197=>720, 198=>998,
199=>720, 200=>666, 201=>666, 202=>666, 203=>666, 204=>388, 205=>388, 206=>388, 207=>388, 208=>720, 209=>720, 210=>777, 211=>777, 212=>777, 213=>777, 214=>777,
215=>569, 216=>777, 217=>720, 218=>720, 219=>720, 220=>720, 221=>720, 222=>610, 223=>555, 224=>499, 225=>499, 226=>499, 227=>499, 228=>499, 229=>499, 230=>720,
231=>443, 232=>443, 233=>443, 234=>443, 235=>443, 236=>276, 237=>276, 238=>276, 239=>276, 240=>499, 241=>555, 242=>499, 243=>499, 244=>499, 245=>499, 246=>499,
247=>569, 248=>499, 249=>555, 250=>555, 251=>555, 252=>555, 253=>499, 254=>555, 255=>499, 63232=>536, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0,
215=>569, 216=>777, 217=>720, 218=>720, 219=>720, 220=>720, 221=>720, 222=>610, 223=>555, 224=>443, 225=>443, 226=>443, 227=>443, 228=>443, 229=>443, 230=>720,
231=>443, 232=>443, 233=>443, 234=>443, 235=>443, 236=>276, 237=>276, 238=>276, 239=>276, 240=>499, 241=>499, 242=>499, 243=>499, 244=>499, 245=>499, 246=>499,
247=>569, 248=>499, 249=>499, 250=>499, 251=>499, 252=>499, 253=>499, 254=>555, 255=>499, 63232=>536, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0,
63239=>0, 63240=>0, 63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>793, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0,
63255=>0, 3585=>593, 3586=>539, 3587=>568, 3588=>571, 3589=>582, 3590=>638, 3591=>440, 3592=>465, 3593=>672, 3594=>534, 3595=>572, 3596=>808, 3597=>804, 3598=>629, 3599=>629,
63255=>0, 3585=>593, 3586=>539, 3587=>568, 3588=>571, 3589=>582, 3590=>638, 3591=>440, 3592=>465, 3593=>672, 3594=>534, 3595=>572, 3596=>808, 3597=>793, 3598=>629, 3599=>629,
3600=>536, 3601=>669, 3602=>780, 3603=>870, 3604=>569, 3605=>581, 3606=>582, 3607=>618, 3608=>537, 3609=>659, 3610=>602, 3611=>600, 3612=>596, 3613=>596, 3614=>656, 3615=>656,
3616=>621, 3617=>603, 3618=>543, 3619=>498, 3620=>590, 3621=>569, 3622=>625, 3623=>481, 3624=>597, 3625=>717, 3626=>594, 3627=>640, 3628=>763, 3629=>559, 3630=>571, 3631=>547,
3632=>467, 3633=>0, 3634=>413, 3635=>416, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>602, 3647=>744, 3648=>290,
3649=>562, 3650=>342, 3651=>361, 3652=>380, 3653=>303, 3654=>575, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>815, 3664=>701,
3665=>701, 3666=>701, 3667=>701, 3668=>701, 3669=>701, 3670=>701, 3671=>701, 3672=>701, 3673=>701, 3674=>728, 3675=>1643, 63256=>0, 63257=>0, 63258=>0, 63259=>366, 64257=>555,
64258=>555, 64256=>609, 64259=>832, 64260=>832, 305=>276, 63166=>332, 8260=>166, 728=>332, 729=>332, 730=>332, 733=>332, 731=>332, 711=>332, 321=>666, 322=>276, 8722=>569,
9251=>499, 63329=>476, 63330=>439, 63331=>476, 63332=>476, 63333=>439, 63334=>402, 63335=>512, 63336=>512, 63337=>256, 63338=>329, 63339=>512, 63340=>439, 63341=>622, 63342=>476, 63343=>512,
63344=>402, 63345=>512, 63346=>476, 63347=>366, 63348=>439, 63349=>476, 63350=>476, 63351=>659, 63352=>476, 63353=>476, 63354=>439, 63280=>499, 63281=>499, 63282=>499, 63283=>499, 63284=>499,
63285=>499, 63286=>499, 63287=>499, 63288=>499, 63289=>499, 8194=>500, 8195=>1000);
3632=>467, 3633=>0, 3634=>413, 3635=>413, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>602, 63263=>0, 3647=>744,
3648=>290, 3649=>562, 3650=>342, 3651=>361, 3652=>380, 3653=>303, 3654=>575, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>815,
3664=>701, 3665=>701, 3666=>701, 3667=>701, 3668=>701, 3669=>701, 3670=>701, 3671=>701, 3672=>701, 3673=>701, 3674=>728, 3675=>1643, 63256=>0, 63257=>0, 63258=>0, 63259=>366,
64257=>555, 64258=>555, 64256=>609, 64259=>832, 64260=>832, 305=>276, 63166=>332, 8260=>166, 728=>332, 729=>332, 730=>332, 733=>332, 731=>332, 711=>332, 321=>666, 322=>276,
8722=>569, 9251=>499, 63329=>476, 63330=>439, 63331=>476, 63332=>476, 63333=>439, 63334=>402, 63335=>512, 63336=>512, 63337=>256, 63338=>329, 63339=>512, 63340=>439, 63341=>622, 63342=>476,
63343=>512, 63344=>402, 63345=>512, 63346=>476, 63347=>366, 63348=>439, 63349=>476, 63350=>476, 63351=>659, 63352=>476, 63353=>476, 63354=>439, 63280=>499, 63281=>499, 63282=>499, 63283=>499,
63284=>499, 63285=>499, 63286=>499, 63287=>499, 63288=>499, 63289=>499, 8194=>500, 8195=>1000, 8204=>0, 8205=>0, 8206=>0, 8207=>0);
$enc='';
$diff='';
$file='norasib.z';
$ctg='norasib.ctg.z';
$originalsize=63240;
$originalsize=101680;
?>

@ -0,0 +1,400 @@
<?php
$this->uni2gn = array (
0 => '.notdef',
32 => 'space',
33 => 'exclam',
34 => 'quotedbl',
35 => 'numbersign',
36 => 'dollar',
37 => 'percent',
38 => 'ampersand',
39 => 'quotesingle',
40 => 'parenleft',
41 => 'parenright',
42 => 'asterisk',
43 => 'plus',
44 => 'comma',
45 => 'hyphen',
46 => 'period',
47 => 'slash',
48 => 'zero',
49 => 'one',
50 => 'two',
51 => 'three',
52 => 'four',
53 => 'five',
54 => 'six',
55 => 'seven',
56 => 'eight',
57 => 'nine',
58 => 'colon',
59 => 'semicolon',
60 => 'less',
61 => 'equal',
62 => 'greater',
63 => 'question',
64 => 'at',
65 => 'A',
66 => 'B',
67 => 'C',
68 => 'D',
69 => 'E',
70 => 'F',
71 => 'G',
72 => 'H',
73 => 'I',
74 => 'J',
75 => 'K',
76 => 'L',
77 => 'M',
78 => 'N',
79 => 'O',
80 => 'P',
81 => 'Q',
82 => 'R',
83 => 'S',
84 => 'T',
85 => 'U',
86 => 'V',
87 => 'W',
88 => 'X',
89 => 'Y',
90 => 'Z',
91 => 'bracketleft',
92 => 'backslash',
93 => 'bracketright',
94 => 'asciicircum',
95 => 'underscore',
96 => 'grave',
97 => 'a',
98 => 'b',
99 => 'c',
100 => 'd',
101 => 'e',
102 => 'f',
103 => 'g',
104 => 'h',
105 => 'i',
106 => 'j',
107 => 'k',
108 => 'l',
109 => 'm',
110 => 'n',
111 => 'o',
112 => 'p',
113 => 'q',
114 => 'r',
115 => 's',
116 => 't',
117 => 'u',
118 => 'v',
119 => 'w',
120 => 'x',
121 => 'y',
122 => 'z',
123 => 'braceleft',
124 => 'bar',
125 => 'braceright',
126 => 'asciitilde',
8364 => 'Euro',
8218 => 'quotesinglbase',
402 => 'florin',
8222 => 'quotedblbase',
8230 => 'ellipsis',
8224 => 'dagger',
8225 => 'daggerdbl',
710 => 'circumflex',
8240 => 'perthousand',
352 => 'Scaron',
8249 => 'guilsinglleft',
338 => 'OE',
8216 => 'quoteleft',
8217 => 'quoteright',
8220 => 'quotedblleft',
8221 => 'quotedblright',
8226 => 'bullet',
8211 => 'endash',
8212 => 'emdash',
732 => 'tilde',
8482 => 'trademark',
353 => 'scaron',
8250 => 'guilsinglright',
339 => 'oe',
376 => 'Ydieresis',
160 => 'nbspace',
161 => 'exclamdown',
162 => 'cent',
163 => 'sterling',
164 => 'currency',
165 => 'yen',
166 => 'brokenbar',
167 => 'section',
168 => 'dieresis',
169 => 'copyright',
170 => 'ordfeminine',
171 => 'guillemotleft',
172 => 'logicalnot',
173 => 'softhyphen',
174 => 'registered',
175 => 'macron',
176 => 'degree',
177 => 'plusminus',
178 => 'twosuperior',
179 => 'threesuperior',
180 => 'acute',
181 => 'mu',
182 => 'paragraph',
183 => 'periodcentered',
184 => 'cedilla',
185 => 'onesuperior',
186 => 'ordmasculine',
187 => 'guillemotright',
188 => 'onequarter',
189 => 'onehalf',
190 => 'threequarters',
191 => 'questiondown',
192 => 'Agrave',
193 => 'Aacute',
194 => 'Acircumflex',
195 => 'Atilde',
196 => 'Adieresis',
197 => 'Aring',
198 => 'AE',
199 => 'Ccedilla',
200 => 'Egrave',
201 => 'Eacute',
202 => 'Ecircumflex',
203 => 'Edieresis',
204 => 'Igrave',
205 => 'Iacute',
206 => 'Icircumflex',
207 => 'Idieresis',
208 => 'Eth',
209 => 'Ntilde',
210 => 'Ograve',
211 => 'Oacute',
212 => 'Ocircumflex',
213 => 'Otilde',
214 => 'Odieresis',
215 => 'multiply',
216 => 'Oslash',
217 => 'Ugrave',
218 => 'Uacute',
219 => 'Ucircumflex',
220 => 'Udieresis',
221 => 'Yacute',
222 => 'Thorn',
223 => 'germandbls',
224 => 'agrave',
225 => 'aacute',
226 => 'acircumflex',
227 => 'atilde',
228 => 'adieresis',
229 => 'aring',
230 => 'ae',
231 => 'ccedilla',
232 => 'egrave',
233 => 'eacute',
234 => 'ecircumflex',
235 => 'edieresis',
236 => 'igrave',
237 => 'iacute',
238 => 'icircumflex',
239 => 'idieresis',
240 => 'eth',
241 => 'ntilde',
242 => 'ograve',
243 => 'oacute',
244 => 'ocircumflex',
245 => 'otilde',
246 => 'odieresis',
247 => 'divide',
248 => 'oslash',
249 => 'ugrave',
250 => 'uacute',
251 => 'ucircumflex',
252 => 'udieresis',
253 => 'yacute',
254 => 'thorn',
255 => 'ydieresis',
63232 => 'uni0E10.descless',
63233 => 'uni0E34.left',
63234 => 'uni0E35.left',
63235 => 'uni0E36.left',
63236 => 'uni0E37.left',
63237 => 'uni0E48.low_left',
63238 => 'uni0E49.low_left',
63239 => 'uni0E4A.low_left',
63240 => 'uni0E4B.low_left',
63241 => 'uni0E4C.low_left',
63242 => 'uni0E48.low',
63243 => 'uni0E49.low',
63244 => 'uni0E4A.low',
63245 => 'uni0E4B.low',
63246 => 'uni0E4C.low',
63247 => 'uni0E0D.descless',
63248 => 'uni0E31.left',
63249 => 'uni0E4D.left',
63250 => 'uni0E47.left',
63251 => 'uni0E48.left',
63252 => 'uni0E49.left',
63253 => 'uni0E4A.left',
63254 => 'uni0E4B.left',
63255 => 'uni0E4C.left',
3585 => 'uni0E01',
3586 => 'uni0E02',
3587 => 'uni0E03',
3588 => 'uni0E04',
3589 => 'uni0E05',
3590 => 'uni0E06',
3591 => 'uni0E07',
3592 => 'uni0E08',
3593 => 'uni0E09',
3594 => 'uni0E0A',
3595 => 'uni0E0B',
3596 => 'uni0E0C',
3597 => 'uni0E0D',
3598 => 'uni0E0E',
3599 => 'uni0E0F',
3600 => 'uni0E10',
3601 => 'uni0E11',
3602 => 'uni0E12',
3603 => 'uni0E13',
3604 => 'uni0E14',
3605 => 'uni0E15',
3606 => 'uni0E16',
3607 => 'uni0E17',
3608 => 'uni0E18',
3609 => 'uni0E19',
3610 => 'uni0E1A',
3611 => 'uni0E1B',
3612 => 'uni0E1C',
3613 => 'uni0E1D',
3614 => 'uni0E1E',
3615 => 'uni0E1F',
3616 => 'uni0E20',
3617 => 'uni0E21',
3618 => 'uni0E22',
3619 => 'uni0E23',
3620 => 'uni0E24',
3621 => 'uni0E25',
3622 => 'uni0E26',
3623 => 'uni0E27',
3624 => 'uni0E28',
3625 => 'uni0E29',
3626 => 'uni0E2A',
3627 => 'uni0E2B',
3628 => 'uni0E2C',
3629 => 'uni0E2D',
3630 => 'uni0E2E',
3631 => 'uni0E2F',
3632 => 'uni0E30',
3633 => 'uni0E31',
3634 => 'uni0E32',
3635 => 'uni0E33',
3636 => 'uni0E34',
3637 => 'uni0E35',
3638 => 'uni0E36',
3639 => 'uni0E37',
3640 => 'uni0E38',
3641 => 'uni0E39',
3642 => 'uni0E3A',
63262 => 'uni0E4D.high',
8203 => 'zerowidthspace',
9676 => 'uni25CC',
63263 => 'uni0E47.high',
3647 => 'uni0E3F',
3648 => 'uni0E40',
3649 => 'uni0E41',
3650 => 'uni0E42',
3651 => 'uni0E43',
3652 => 'uni0E44',
3653 => 'uni0E45',
3654 => 'uni0E46',
3655 => 'uni0E47',
3656 => 'uni0E48',
3657 => 'uni0E49',
3658 => 'uni0E4A',
3659 => 'uni0E4B',
3660 => 'uni0E4C',
3661 => 'uni0E4D',
3662 => 'uni0E4E',
3663 => 'uni0E4F',
3664 => 'uni0E50',
3665 => 'uni0E51',
3666 => 'uni0E52',
3667 => 'uni0E53',
3668 => 'uni0E54',
3669 => 'uni0E55',
3670 => 'uni0E56',
3671 => 'uni0E57',
3672 => 'uni0E58',
3673 => 'uni0E59',
3674 => 'uni0E5A',
3675 => 'uni0E5B',
63256 => 'uni0E38.low',
63257 => 'uni0E39.low',
63258 => 'uni0E3A.low',
63259 => 'uniF71B',
64257 => 'fi',
64258 => 'fl',
64256 => 'ff',
64259 => 'ffi',
64260 => 'ffl',
305 => 'dotlessi',
63166 => 'dotlessj',
8260 => 'fraction',
728 => 'breve',
729 => 'dotaccent',
730 => 'ring',
733 => 'hungarumlaut',
731 => 'ogonek',
711 => 'caron',
321 => 'Lslash',
322 => 'lslash',
8722 => 'minus',
9251 => 'visiblespace',
63329 => 'Asmall',
63330 => 'Bsmall',
63331 => 'Csmall',
63332 => 'Dsmall',
63333 => 'Esmall',
63334 => 'Fsmall',
63335 => 'Gsmall',
63336 => 'Hsmall',
63337 => 'Ismall',
63338 => 'Jsmall',
63339 => 'Ksmall',
63340 => 'Lsmall',
63341 => 'Msmall',
63342 => 'Nsmall',
63343 => 'Osmall',
63344 => 'Psmall',
63345 => 'Qsmall',
63346 => 'Rsmall',
63347 => 'Ssmall',
63348 => 'Tsmall',
63349 => 'Usmall',
63350 => 'Vsmall',
63351 => 'Wsmall',
63352 => 'Xsmall',
63353 => 'Ysmall',
63354 => 'Zsmall',
63280 => 'zerooldstyle',
63281 => 'oneoldstyle',
63282 => 'twooldstyle',
63283 => 'threeoldstyle',
63284 => 'fouroldstyle',
63285 => 'fiveoldstyle',
63286 => 'sixoldstyle',
63287 => 'sevenoldstyle',
63288 => 'eightoldstyle',
63289 => 'nineoldstyle',
8194 => 'enspace',
8195 => 'emspace',
8204 => 'zerowidthnonjoiner',
8205 => 'zerowidthjoiner',
8206 => 'afii299',
8207 => 'afii300',
);
?>

@ -1,38 +1,38 @@
<?php
$type='TrueTypeUnicode';
$name='Norasi-Oblique';
$desc=array('Ascent'=>1219,'Descent'=>-529,'CapHeight'=>1219,'Flags'=>96,'FontBBox'=>'[-443 -529 1608 1219]','ItalicAngle'=>-12,'StemV'=>70,'MissingWidth'=>366);
$up=-100;
$name='Norasi-BoldOblique';
$desc=array('Ascent'=>1216,'Descent'=>-488,'CapHeight'=>1216,'Flags'=>96,'FontBBox'=>'[-489 -482 1644 1182]','ItalicAngle'=>-12,'StemV'=>120,'MissingWidth'=>600);
$up=-125;
$ut=50;
$cw=array(
0=>366, 32=>366, 33=>332, 34=>407, 35=>499, 36=>499, 37=>832, 38=>777, 39=>238, 40=>332, 41=>332, 42=>499, 43=>563, 44=>249, 45=>332, 46=>249,
47=>276, 48=>499, 49=>499, 50=>499, 51=>499, 52=>499, 53=>499, 54=>499, 55=>499, 56=>499, 57=>499, 58=>276, 59=>276, 60=>563, 61=>563, 62=>563,
63=>443, 64=>919, 65=>720, 66=>666, 67=>666, 68=>720, 69=>610, 70=>555, 71=>720, 72=>720, 73=>332, 74=>388, 75=>720, 76=>610, 77=>887, 78=>720,
79=>720, 80=>555, 81=>720, 82=>666, 83=>555, 84=>610, 85=>720, 86=>720, 87=>943, 88=>720, 89=>720, 90=>610, 91=>332, 92=>276, 93=>332, 94=>468,
95=>499, 96=>332, 97=>443, 98=>499, 99=>443, 100=>499, 101=>443, 102=>332, 103=>499, 104=>499, 105=>276, 106=>276, 107=>499, 108=>276, 109=>777, 110=>499,
111=>499, 112=>499, 113=>499, 114=>332, 115=>388, 116=>276, 117=>499, 118=>499, 119=>720, 120=>499, 121=>499, 122=>443, 123=>478, 124=>199, 125=>478, 126=>540,
8364=>499, 8218=>332, 402=>499, 8222=>443, 8230=>998, 8224=>499, 8225=>499, 710=>332, 8240=>998, 352=>555, 8249=>332, 338=>887, 8216=>332, 8217=>332, 8220=>443, 8221=>443,
8226=>348, 8211=>499, 8212=>998, 732=>332, 8482=>979, 353=>388, 8250=>332, 339=>720, 376=>720, 160=>366, 161=>332, 162=>499, 163=>499, 164=>499, 165=>499, 166=>199,
167=>499, 168=>332, 169=>758, 170=>275, 171=>499, 172=>563, 173=>563, 174=>758, 175=>332, 176=>399, 177=>563, 178=>298, 179=>298, 180=>332, 181=>499, 182=>452,
183=>249, 184=>332, 185=>298, 186=>309, 187=>499, 188=>749, 189=>749, 190=>749, 191=>443, 192=>720, 193=>720, 194=>720, 195=>720, 196=>720, 197=>720, 198=>887,
199=>666, 200=>610, 201=>610, 202=>610, 203=>610, 204=>332, 205=>332, 206=>332, 207=>332, 208=>720, 209=>720, 210=>720, 211=>720, 212=>720, 213=>720, 214=>720,
215=>563, 216=>720, 217=>720, 218=>720, 219=>720, 220=>720, 221=>720, 222=>555, 223=>499, 224=>443, 225=>443, 226=>443, 227=>443, 228=>443, 229=>443, 230=>666,
231=>443, 232=>443, 233=>443, 234=>443, 235=>443, 236=>276, 237=>276, 238=>276, 239=>276, 240=>499, 241=>499, 242=>499, 243=>499, 244=>499, 245=>499, 246=>499,
247=>563, 248=>499, 249=>499, 250=>499, 251=>499, 252=>499, 253=>499, 254=>499, 255=>499, 63232=>520, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0,
63239=>0, 63240=>0, 63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>798, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0,
63255=>0, 3585=>591, 3586=>515, 3587=>574, 3588=>568, 3589=>580, 3590=>644, 3591=>446, 3592=>467, 3593=>670, 3594=>520, 3595=>574, 3596=>793, 3597=>795, 3598=>626, 3599=>626,
3600=>521, 3601=>670, 3602=>780, 3603=>852, 3604=>566, 3605=>578, 3606=>584, 3607=>626, 3608=>527, 3609=>669, 3610=>604, 3611=>604, 3612=>594, 3613=>594, 3614=>653, 3615=>653,
3616=>624, 3617=>600, 3618=>543, 3619=>461, 3620=>591, 3621=>556, 3622=>626, 3623=>480, 3624=>602, 3625=>717, 3626=>594, 3627=>635, 3628=>685, 3629=>563, 3630=>571, 3631=>537,
3632=>458, 3633=>0, 3634=>398, 3635=>398, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>604, 3647=>666, 3648=>284,
3649=>284, 3650=>319, 3651=>369, 3652=>373, 3653=>297, 3654=>563, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>799, 3664=>688,
3665=>688, 3666=>688, 3667=>688, 3668=>688, 3669=>688, 3670=>688, 3671=>688, 3672=>688, 3673=>688, 3674=>713, 3675=>1609, 63256=>0, 63257=>0, 63258=>0, 63259=>366, 64257=>534,
64258=>530, 64256=>603, 64259=>820, 64260=>814, 305=>276, 63166=>276, 8260=>166, 728=>332, 729=>332, 730=>332, 733=>332, 731=>332, 711=>332, 321=>610, 322=>276, 8722=>563,
9251=>732, 63329=>471, 63330=>446, 63331=>437, 63332=>483, 63333=>424, 63334=>385, 63335=>483, 63336=>502, 63337=>244, 63338=>294, 63339=>541, 63340=>408, 63341=>615, 63342=>492, 63343=>499,
63344=>407, 63345=>483, 63346=>493, 63347=>388, 63348=>430, 63349=>508, 63350=>499, 63351=>720, 63352=>499, 63353=>509, 63354=>443, 63280=>499, 63281=>499, 63282=>499, 63283=>499, 63284=>499,
63285=>499, 63286=>499, 63287=>499, 63288=>499, 63289=>499, 8194=>500, 8195=>1000);
32=>439, 33=>332, 34=>553, 35=>499, 36=>499, 37=>998, 38=>832, 39=>188, 40=>332, 41=>332, 42=>499, 43=>569, 44=>249, 45=>332, 46=>249, 47=>276,
48=>499, 49=>499, 50=>499, 51=>499, 52=>499, 53=>499, 54=>499, 55=>499, 56=>499, 57=>499, 58=>332, 59=>332, 60=>569, 61=>569, 62=>569, 63=>499,
64=>928, 65=>720, 66=>666, 67=>720, 68=>720, 69=>666, 70=>610, 71=>777, 72=>777, 73=>388, 74=>499, 75=>777, 76=>666, 77=>943, 78=>720, 79=>777,
80=>610, 81=>777, 82=>720, 83=>555, 84=>666, 85=>720, 86=>720, 87=>998, 88=>720, 89=>720, 90=>666, 91=>332, 92=>276, 93=>332, 94=>580, 95=>499,
96=>332, 97=>499, 98=>555, 99=>443, 100=>555, 101=>443, 102=>332, 103=>499, 104=>555, 105=>276, 106=>332, 107=>555, 108=>276, 109=>832, 110=>555, 111=>499,
112=>555, 113=>555, 114=>443, 115=>388, 116=>332, 117=>555, 118=>499, 119=>720, 120=>499, 121=>499, 122=>443, 123=>392, 124=>219, 125=>392, 126=>520, 8364=>499,
8218=>332, 402=>499, 8222=>499, 8230=>998, 8224=>499, 8225=>499, 710=>332, 8240=>998, 352=>555, 8249=>332, 338=>998, 8216=>332, 8217=>332, 8220=>499, 8221=>499, 8226=>348,
8211=>499, 8212=>998, 732=>332, 8482=>998, 353=>388, 8250=>332, 339=>720, 376=>720, 160=>439, 161=>332, 162=>499, 163=>499, 164=>499, 165=>499, 166=>219, 167=>499,
168=>332, 169=>745, 170=>298, 171=>499, 172=>569, 173=>569, 174=>745, 175=>332, 176=>399, 177=>569, 178=>298, 179=>298, 180=>332, 181=>555, 182=>539, 183=>249,
184=>332, 185=>298, 186=>329, 187=>499, 188=>749, 189=>749, 190=>749, 191=>499, 192=>720, 193=>720, 194=>720, 195=>720, 196=>720, 197=>720, 198=>998, 199=>720,
200=>666, 201=>666, 202=>666, 203=>666, 204=>388, 205=>388, 206=>388, 207=>388, 208=>720, 209=>720, 210=>777, 211=>777, 212=>777, 213=>777, 214=>777, 215=>569,
216=>777, 217=>720, 218=>720, 219=>720, 220=>720, 221=>720, 222=>610, 223=>555, 224=>443, 225=>443, 226=>443, 227=>443, 228=>443, 229=>443, 230=>720, 231=>443,
232=>443, 233=>443, 234=>443, 235=>443, 236=>276, 237=>276, 238=>276, 239=>276, 240=>499, 241=>499, 242=>499, 243=>499, 244=>499, 245=>499, 246=>499, 247=>569,
248=>499, 249=>499, 250=>499, 251=>499, 252=>499, 253=>499, 254=>555, 255=>499, 63232=>536, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0,
63240=>0, 63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>793, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0,
3585=>593, 3586=>539, 3587=>568, 3588=>571, 3589=>582, 3590=>638, 3591=>440, 3592=>465, 3593=>672, 3594=>534, 3595=>572, 3596=>808, 3597=>793, 3598=>629, 3599=>629, 3600=>536,
3601=>669, 3602=>780, 3603=>870, 3604=>569, 3605=>581, 3606=>582, 3607=>618, 3608=>537, 3609=>659, 3610=>602, 3611=>600, 3612=>596, 3613=>596, 3614=>656, 3615=>656, 3616=>621,
3617=>603, 3618=>543, 3619=>498, 3620=>590, 3621=>569, 3622=>625, 3623=>481, 3624=>597, 3625=>717, 3626=>594, 3627=>640, 3628=>763, 3629=>559, 3630=>571, 3631=>547, 3632=>467,
3633=>0, 3634=>413, 3635=>413, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>602, 63263=>0, 3647=>744, 3648=>290,
3649=>562, 3650=>342, 3651=>361, 3652=>380, 3653=>303, 3654=>575, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>815, 3664=>701,
3665=>701, 3666=>701, 3667=>701, 3668=>701, 3669=>701, 3670=>701, 3671=>701, 3672=>701, 3673=>701, 3674=>728, 3675=>1643, 63256=>0, 63257=>0, 63258=>0, 63259=>366, 64257=>555,
64258=>555, 64256=>609, 64259=>832, 64260=>832, 305=>276, 63166=>332, 8260=>166, 728=>332, 729=>332, 730=>332, 733=>332, 731=>332, 711=>332, 321=>666, 322=>276, 8722=>569,
9251=>499, 63329=>476, 63330=>439, 63331=>476, 63332=>476, 63333=>439, 63334=>402, 63335=>512, 63336=>512, 63337=>256, 63338=>329, 63339=>512, 63340=>439, 63341=>622, 63342=>476, 63343=>512,
63344=>402, 63345=>512, 63346=>476, 63347=>366, 63348=>439, 63349=>476, 63350=>476, 63351=>659, 63352=>476, 63353=>476, 63354=>439, 63280=>499, 63281=>499, 63282=>499, 63283=>499, 63284=>499,
63285=>499, 63286=>499, 63287=>499, 63288=>499, 63289=>499, 8194=>500, 8195=>1000, 8204=>0, 8205=>0, 8206=>0, 8207=>0);
$enc='';
$diff='';
$file='norasibi.z';
$ctg='norasibi.ctg.z';
$originalsize=68884;
$originalsize=113944;
?>

@ -0,0 +1,399 @@
<?php
$this->uni2gn = array (
32 => 'space',
33 => 'exclam',
34 => 'quotedbl',
35 => 'numbersign',
36 => 'dollar',
37 => 'percent',
38 => 'ampersand',
39 => 'quotesingle',
40 => 'parenleft',
41 => 'parenright',
42 => 'asterisk',
43 => 'plus',
44 => 'comma',
45 => 'hyphen',
46 => 'period',
47 => 'slash',
48 => 'zero',
49 => 'one',
50 => 'two',
51 => 'three',
52 => 'four',
53 => 'five',
54 => 'six',
55 => 'seven',
56 => 'eight',
57 => 'nine',
58 => 'colon',
59 => 'semicolon',
60 => 'less',
61 => 'equal',
62 => 'greater',
63 => 'question',
64 => 'at',
65 => 'A',
66 => 'B',
67 => 'C',
68 => 'D',
69 => 'E',
70 => 'F',
71 => 'G',
72 => 'H',
73 => 'I',
74 => 'J',
75 => 'K',
76 => 'L',
77 => 'M',
78 => 'N',
79 => 'O',
80 => 'P',
81 => 'Q',
82 => 'R',
83 => 'S',
84 => 'T',
85 => 'U',
86 => 'V',
87 => 'W',
88 => 'X',
89 => 'Y',
90 => 'Z',
91 => 'bracketleft',
92 => 'backslash',
93 => 'bracketright',
94 => 'asciicircum',
95 => 'underscore',
96 => 'grave',
97 => 'a',
98 => 'b',
99 => 'c',
100 => 'd',
101 => 'e',
102 => 'f',
103 => 'g',
104 => 'h',
105 => 'i',
106 => 'j',
107 => 'k',
108 => 'l',
109 => 'm',
110 => 'n',
111 => 'o',
112 => 'p',
113 => 'q',
114 => 'r',
115 => 's',
116 => 't',
117 => 'u',
118 => 'v',
119 => 'w',
120 => 'x',
121 => 'y',
122 => 'z',
123 => 'braceleft',
124 => 'bar',
125 => 'braceright',
126 => 'asciitilde',
8364 => 'Euro',
8218 => 'quotesinglbase',
402 => 'florin',
8222 => 'quotedblbase',
8230 => 'ellipsis',
8224 => 'dagger',
8225 => 'daggerdbl',
710 => 'circumflex',
8240 => 'perthousand',
352 => 'Scaron',
8249 => 'guilsinglleft',
338 => 'OE',
8216 => 'quoteleft',
8217 => 'quoteright',
8220 => 'quotedblleft',
8221 => 'quotedblright',
8226 => 'bullet',
8211 => 'endash',
8212 => 'emdash',
732 => 'tilde',
8482 => 'trademark',
353 => 'scaron',
8250 => 'guilsinglright',
339 => 'oe',
376 => 'Ydieresis',
160 => 'nbspace',
161 => 'exclamdown',
162 => 'cent',
163 => 'sterling',
164 => 'currency',
165 => 'yen',
166 => 'brokenbar',
167 => 'section',
168 => 'dieresis',
169 => 'copyright',
170 => 'ordfeminine',
171 => 'guillemotleft',
172 => 'logicalnot',
173 => 'softhyphen',
174 => 'registered',
175 => 'macron',
176 => 'degree',
177 => 'plusminus',
178 => 'twosuperior',
179 => 'threesuperior',
180 => 'acute',
181 => 'mu',
182 => 'paragraph',
183 => 'periodcentered',
184 => 'cedilla',
185 => 'onesuperior',
186 => 'ordmasculine',
187 => 'guillemotright',
188 => 'onequarter',
189 => 'onehalf',
190 => 'threequarters',
191 => 'questiondown',
192 => 'Agrave',
193 => 'Aacute',
194 => 'Acircumflex',
195 => 'Atilde',
196 => 'Adieresis',
197 => 'Aring',
198 => 'AE',
199 => 'Ccedilla',
200 => 'Egrave',
201 => 'Eacute',
202 => 'Ecircumflex',
203 => 'Edieresis',
204 => 'Igrave',
205 => 'Iacute',
206 => 'Icircumflex',
207 => 'Idieresis',
208 => 'Eth',
209 => 'Ntilde',
210 => 'Ograve',
211 => 'Oacute',
212 => 'Ocircumflex',
213 => 'Otilde',
214 => 'Odieresis',
215 => 'multiply',
216 => 'Oslash',
217 => 'Ugrave',
218 => 'Uacute',
219 => 'Ucircumflex',
220 => 'Udieresis',
221 => 'Yacute',
222 => 'Thorn',
223 => 'germandbls',
224 => 'agrave',
225 => 'aacute',
226 => 'acircumflex',
227 => 'atilde',
228 => 'adieresis',
229 => 'aring',
230 => 'ae',
231 => 'ccedilla',
232 => 'egrave',
233 => 'eacute',
234 => 'ecircumflex',
235 => 'edieresis',
236 => 'igrave',
237 => 'iacute',
238 => 'icircumflex',
239 => 'idieresis',
240 => 'eth',
241 => 'ntilde',
242 => 'ograve',
243 => 'oacute',
244 => 'ocircumflex',
245 => 'otilde',
246 => 'odieresis',
247 => 'divide',
248 => 'oslash',
249 => 'ugrave',
250 => 'uacute',
251 => 'ucircumflex',
252 => 'udieresis',
253 => 'yacute',
254 => 'thorn',
255 => 'ydieresis',
63232 => 'uni0E10.descless',
63233 => 'uni0E34.left',
63234 => 'uni0E35.left',
63235 => 'uni0E36.left',
63236 => 'uni0E37.left',
63237 => 'uni0E48.low_left',
63238 => 'uni0E49.low_left',
63239 => 'uni0E4A.low_left',
63240 => 'uni0E4B.low_left',
63241 => 'uni0E4C.low_left',
63242 => 'uni0E48.low',
63243 => 'uni0E49.low',
63244 => 'uni0E4A.low',
63245 => 'uni0E4B.low',
63246 => 'uni0E4C.low',
63247 => 'uni0E0D.descless',
63248 => 'uni0E31.left',
63249 => 'uni0E4D.left',
63250 => 'uni0E47.left',
63251 => 'uni0E48.left',
63252 => 'uni0E49.left',
63253 => 'uni0E4A.left',
63254 => 'uni0E4B.left',
63255 => 'uni0E4C.left',
3585 => 'uni0E01',
3586 => 'uni0E02',
3587 => 'uni0E03',
3588 => 'uni0E04',
3589 => 'uni0E05',
3590 => 'uni0E06',
3591 => 'uni0E07',
3592 => 'uni0E08',
3593 => 'uni0E09',
3594 => 'uni0E0A',
3595 => 'uni0E0B',
3596 => 'uni0E0C',
3597 => 'uni0E0D',
3598 => 'uni0E0E',
3599 => 'uni0E0F',
3600 => 'uni0E10',
3601 => 'uni0E11',
3602 => 'uni0E12',
3603 => 'uni0E13',
3604 => 'uni0E14',
3605 => 'uni0E15',
3606 => 'uni0E16',
3607 => 'uni0E17',
3608 => 'uni0E18',
3609 => 'uni0E19',
3610 => 'uni0E1A',
3611 => 'uni0E1B',
3612 => 'uni0E1C',
3613 => 'uni0E1D',
3614 => 'uni0E1E',
3615 => 'uni0E1F',
3616 => 'uni0E20',
3617 => 'uni0E21',
3618 => 'uni0E22',
3619 => 'uni0E23',
3620 => 'uni0E24',
3621 => 'uni0E25',
3622 => 'uni0E26',
3623 => 'uni0E27',
3624 => 'uni0E28',
3625 => 'uni0E29',
3626 => 'uni0E2A',
3627 => 'uni0E2B',
3628 => 'uni0E2C',
3629 => 'uni0E2D',
3630 => 'uni0E2E',
3631 => 'uni0E2F',
3632 => 'uni0E30',
3633 => 'uni0E31',
3634 => 'uni0E32',
3635 => 'uni0E33',
3636 => 'uni0E34',
3637 => 'uni0E35',
3638 => 'uni0E36',
3639 => 'uni0E37',
3640 => 'uni0E38',
3641 => 'uni0E39',
3642 => 'uni0E3A',
63262 => 'uni0E4D.high',
8203 => 'zerowidthspace',
9676 => 'dottedcircle',
63263 => 'uni0E47.high',
3647 => 'uni0E3F',
3648 => 'uni0E40',
3649 => 'uni0E41',
3650 => 'uni0E42',
3651 => 'uni0E43',
3652 => 'uni0E44',
3653 => 'uni0E45',
3654 => 'uni0E46',
3655 => 'uni0E47',
3656 => 'uni0E48',
3657 => 'uni0E49',
3658 => 'uni0E4A',
3659 => 'uni0E4B',
3660 => 'uni0E4C',
3661 => 'uni0E4D',
3662 => 'uni0E4E',
3663 => 'uni0E4F',
3664 => 'uni0E50',
3665 => 'uni0E51',
3666 => 'uni0E52',
3667 => 'uni0E53',
3668 => 'uni0E54',
3669 => 'uni0E55',
3670 => 'uni0E56',
3671 => 'uni0E57',
3672 => 'uni0E58',
3673 => 'uni0E59',
3674 => 'uni0E5A',
3675 => 'uni0E5B',
63256 => 'uni0E38.low',
63257 => 'uni0E39.low',
63258 => 'uni0E3A.low',
63259 => 'uniF71B',
64257 => 'fi',
64258 => 'fl',
64256 => 'ff',
64259 => 'ffi',
64260 => 'ffl',
305 => 'dotlessi',
63166 => 'dotlessj',
8260 => 'fraction',
728 => 'breve',
729 => 'dotaccent',
730 => 'ring',
733 => 'hungarumlaut',
731 => 'ogonek',
711 => 'caron',
321 => 'Lslash',
322 => 'lslash',
8722 => 'minus',
9251 => 'uni2423',
63329 => 'uniF761',
63330 => 'uniF762',
63331 => 'uniF763',
63332 => 'uniF764',
63333 => 'uniF765',
63334 => 'uniF766',
63335 => 'uniF767',
63336 => 'uniF768',
63337 => 'uniF769',
63338 => 'uniF76A',
63339 => 'uniF76B',
63340 => 'uniF76C',
63341 => 'uniF76D',
63342 => 'uniF76E',
63343 => 'uniF76F',
63344 => 'uniF770',
63345 => 'uniF771',
63346 => 'uniF772',
63347 => 'uniF773',
63348 => 'uniF774',
63349 => 'uniF775',
63350 => 'uniF776',
63351 => 'uniF777',
63352 => 'uniF778',
63353 => 'uniF779',
63354 => 'uniF77A',
63280 => 'zerooldstyle',
63281 => 'oneoldstyle',
63282 => 'twooldstyle',
63283 => 'threeoldstyle',
63284 => 'fouroldstyle',
63285 => 'fiveoldstyle',
63286 => 'sixoldstyle',
63287 => 'sevenoldstyle',
63288 => 'eightoldstyle',
63289 => 'nineoldstyle',
8194 => 'enspace',
8195 => 'emspace',
8204 => 'zerowidthnonjoiner',
8205 => 'zerowidthjoiner',
8206 => 'afii299',
8207 => 'afii300',
);
?>

@ -1,38 +1,38 @@
<?php
$type='TrueTypeUnicode';
$name='Norasi-BoldOblique';
$desc=array('Ascent'=>1182,'Descent'=>-495,'CapHeight'=>1182,'Flags'=>96,'FontBBox'=>'[-445 -495 1644 1182]','ItalicAngle'=>-12,'StemV'=>120,'MissingWidth'=>600);
$up=-100;
$name='Norasi-Oblique';
$desc=array('Ascent'=>1216,'Descent'=>-488,'CapHeight'=>1216,'Flags'=>96,'FontBBox'=>'[-483 -488 1608 1219]','ItalicAngle'=>-12,'StemV'=>70,'MissingWidth'=>366);
$up=-125;
$ut=50;
$cw=array(
32=>439, 33=>332, 34=>553, 35=>499, 36=>499, 37=>998, 38=>832, 39=>188, 40=>332, 41=>332, 42=>499, 43=>569, 44=>249, 45=>332, 46=>249, 47=>276,
48=>499, 49=>499, 50=>499, 51=>499, 52=>499, 53=>499, 54=>499, 55=>499, 56=>499, 57=>499, 58=>332, 59=>332, 60=>569, 61=>569, 62=>569, 63=>499,
64=>928, 65=>720, 66=>666, 67=>720, 68=>720, 69=>666, 70=>610, 71=>777, 72=>777, 73=>388, 74=>499, 75=>777, 76=>666, 77=>943, 78=>720, 79=>777,
80=>610, 81=>777, 82=>720, 83=>555, 84=>666, 85=>720, 86=>720, 87=>998, 88=>720, 89=>720, 90=>666, 91=>332, 92=>276, 93=>332, 94=>580, 95=>499,
96=>332, 97=>499, 98=>555, 99=>443, 100=>555, 101=>443, 102=>332, 103=>499, 104=>555, 105=>276, 106=>332, 107=>555, 108=>276, 109=>832, 110=>555, 111=>499,
112=>555, 113=>555, 114=>443, 115=>388, 116=>332, 117=>555, 118=>499, 119=>720, 120=>499, 121=>499, 122=>443, 123=>392, 124=>219, 125=>392, 126=>520, 8364=>499,
8218=>332, 402=>499, 8222=>499, 8230=>998, 8224=>499, 8225=>499, 710=>332, 8240=>998, 352=>555, 8249=>332, 338=>998, 8216=>332, 8217=>332, 8220=>499, 8221=>499, 8226=>348,
8211=>499, 8212=>998, 732=>332, 8482=>998, 353=>388, 8250=>332, 339=>720, 376=>720, 160=>439, 161=>332, 162=>499, 163=>499, 164=>499, 165=>499, 166=>219, 167=>499,
168=>332, 169=>745, 170=>298, 171=>499, 172=>569, 173=>569, 174=>745, 175=>332, 176=>399, 177=>569, 178=>298, 179=>298, 180=>332, 181=>555, 182=>539, 183=>249,
184=>332, 185=>298, 186=>329, 187=>499, 188=>749, 189=>749, 190=>749, 191=>499, 192=>720, 193=>720, 194=>720, 195=>720, 196=>720, 197=>720, 198=>998, 199=>720,
200=>666, 201=>666, 202=>666, 203=>666, 204=>388, 205=>388, 206=>388, 207=>388, 208=>720, 209=>720, 210=>777, 211=>777, 212=>777, 213=>777, 214=>777, 215=>569,
216=>777, 217=>720, 218=>720, 219=>720, 220=>720, 221=>720, 222=>610, 223=>555, 224=>499, 225=>499, 226=>499, 227=>499, 228=>499, 229=>499, 230=>720, 231=>443,
232=>443, 233=>443, 234=>443, 235=>443, 236=>276, 237=>276, 238=>276, 239=>276, 240=>499, 241=>555, 242=>499, 243=>499, 244=>499, 245=>499, 246=>499, 247=>569,
248=>499, 249=>555, 250=>555, 251=>555, 252=>555, 253=>499, 254=>555, 255=>499, 63232=>536, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0, 63239=>0,
63240=>0, 63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>793, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0, 63255=>0,
3585=>593, 3586=>539, 3587=>568, 3588=>571, 3589=>582, 3590=>638, 3591=>440, 3592=>465, 3593=>672, 3594=>534, 3595=>572, 3596=>808, 3597=>804, 3598=>629, 3599=>629, 3600=>536,
3601=>669, 3602=>780, 3603=>870, 3604=>569, 3605=>581, 3606=>582, 3607=>618, 3608=>537, 3609=>659, 3610=>602, 3611=>600, 3612=>596, 3613=>596, 3614=>656, 3615=>656, 3616=>621,
3617=>603, 3618=>543, 3619=>498, 3620=>590, 3621=>569, 3622=>625, 3623=>481, 3624=>597, 3625=>717, 3626=>594, 3627=>640, 3628=>763, 3629=>559, 3630=>571, 3631=>547, 3632=>467,
3633=>0, 3634=>413, 3635=>416, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>602, 3647=>744, 3648=>290, 3649=>562,
3650=>342, 3651=>361, 3652=>380, 3653=>303, 3654=>575, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>815, 3664=>701, 3665=>701,
3666=>701, 3667=>701, 3668=>701, 3669=>701, 3670=>701, 3671=>701, 3672=>701, 3673=>701, 3674=>728, 3675=>1643, 63256=>0, 63257=>0, 63258=>0, 63259=>366, 64257=>555, 64258=>555,
64256=>609, 64259=>832, 64260=>832, 305=>276, 63166=>332, 8260=>166, 728=>332, 729=>332, 730=>332, 733=>332, 731=>332, 711=>332, 321=>666, 322=>276, 8722=>569, 9251=>499,
63329=>476, 63330=>439, 63331=>476, 63332=>476, 63333=>439, 63334=>402, 63335=>512, 63336=>512, 63337=>256, 63338=>329, 63339=>512, 63340=>439, 63341=>622, 63342=>476, 63343=>512, 63344=>402,
63345=>512, 63346=>476, 63347=>366, 63348=>439, 63349=>476, 63350=>476, 63351=>659, 63352=>476, 63353=>476, 63354=>439, 63280=>499, 63281=>499, 63282=>499, 63283=>499, 63284=>499, 63285=>499,
63286=>499, 63287=>499, 63288=>499, 63289=>499, 8194=>500, 8195=>1000);
0=>366, 32=>366, 33=>332, 34=>407, 35=>499, 36=>499, 37=>832, 38=>777, 39=>238, 40=>332, 41=>332, 42=>499, 43=>563, 44=>249, 45=>332, 46=>249,
47=>276, 48=>499, 49=>499, 50=>499, 51=>499, 52=>499, 53=>499, 54=>499, 55=>499, 56=>499, 57=>499, 58=>276, 59=>276, 60=>563, 61=>563, 62=>563,
63=>443, 64=>919, 65=>720, 66=>666, 67=>666, 68=>720, 69=>610, 70=>555, 71=>720, 72=>720, 73=>332, 74=>388, 75=>720, 76=>610, 77=>887, 78=>720,
79=>720, 80=>555, 81=>720, 82=>666, 83=>555, 84=>610, 85=>720, 86=>720, 87=>943, 88=>720, 89=>720, 90=>610, 91=>332, 92=>276, 93=>332, 94=>468,
95=>499, 96=>332, 97=>443, 98=>499, 99=>443, 100=>499, 101=>443, 102=>332, 103=>499, 104=>499, 105=>276, 106=>276, 107=>499, 108=>276, 109=>777, 110=>499,
111=>499, 112=>499, 113=>499, 114=>332, 115=>388, 116=>276, 117=>499, 118=>499, 119=>720, 120=>499, 121=>499, 122=>443, 123=>478, 124=>199, 125=>478, 126=>540,
8364=>499, 8218=>332, 402=>499, 8222=>443, 8230=>998, 8224=>499, 8225=>499, 710=>332, 8240=>998, 352=>555, 8249=>332, 338=>887, 8216=>332, 8217=>332, 8220=>443, 8221=>443,
8226=>348, 8211=>499, 8212=>998, 732=>332, 8482=>979, 353=>388, 8250=>332, 339=>720, 376=>720, 160=>366, 161=>332, 162=>499, 163=>499, 164=>499, 165=>499, 166=>199,
167=>499, 168=>332, 169=>758, 170=>275, 171=>499, 172=>563, 173=>563, 174=>758, 175=>332, 176=>399, 177=>563, 178=>298, 179=>298, 180=>332, 181=>499, 182=>452,
183=>249, 184=>332, 185=>298, 186=>309, 187=>499, 188=>749, 189=>749, 190=>749, 191=>443, 192=>720, 193=>720, 194=>720, 195=>720, 196=>720, 197=>720, 198=>887,
199=>666, 200=>610, 201=>610, 202=>610, 203=>610, 204=>332, 205=>332, 206=>332, 207=>332, 208=>720, 209=>720, 210=>720, 211=>720, 212=>720, 213=>720, 214=>720,
215=>563, 216=>720, 217=>720, 218=>720, 219=>720, 220=>720, 221=>720, 222=>555, 223=>499, 224=>443, 225=>443, 226=>443, 227=>443, 228=>443, 229=>443, 230=>666,
231=>443, 232=>443, 233=>443, 234=>443, 235=>443, 236=>276, 237=>276, 238=>276, 239=>276, 240=>499, 241=>499, 242=>499, 243=>499, 244=>499, 245=>499, 246=>499,
247=>563, 248=>499, 249=>499, 250=>499, 251=>499, 252=>499, 253=>499, 254=>499, 255=>499, 63232=>521, 63233=>0, 63234=>0, 63235=>0, 63236=>0, 63237=>0, 63238=>0,
63239=>0, 63240=>0, 63241=>0, 63242=>0, 63243=>0, 63244=>0, 63245=>0, 63246=>0, 63247=>795, 63248=>0, 63249=>0, 63250=>0, 63251=>0, 63252=>0, 63253=>0, 63254=>0,
63255=>0, 3585=>591, 3586=>515, 3587=>574, 3588=>568, 3589=>580, 3590=>644, 3591=>446, 3592=>467, 3593=>670, 3594=>520, 3595=>574, 3596=>793, 3597=>795, 3598=>626, 3599=>626,
3600=>521, 3601=>670, 3602=>780, 3603=>852, 3604=>566, 3605=>578, 3606=>584, 3607=>626, 3608=>527, 3609=>669, 3610=>604, 3611=>604, 3612=>594, 3613=>594, 3614=>653, 3615=>653,
3616=>624, 3617=>600, 3618=>543, 3619=>461, 3620=>591, 3621=>556, 3622=>626, 3623=>480, 3624=>602, 3625=>717, 3626=>594, 3627=>635, 3628=>685, 3629=>563, 3630=>571, 3631=>537,
3632=>458, 3633=>0, 3634=>398, 3635=>398, 3636=>0, 3637=>0, 3638=>0, 3639=>0, 3640=>0, 3641=>0, 3642=>0, 63262=>0, 8203=>0, 9676=>604, 63263=>0, 3647=>666,
3648=>284, 3649=>552, 3650=>319, 3651=>369, 3652=>373, 3653=>297, 3654=>563, 3655=>0, 3656=>0, 3657=>0, 3658=>0, 3659=>0, 3660=>0, 3661=>0, 3662=>0, 3663=>799,
3664=>688, 3665=>688, 3666=>688, 3667=>688, 3668=>688, 3669=>688, 3670=>688, 3671=>688, 3672=>688, 3673=>688, 3674=>713, 3675=>1609, 63256=>0, 63257=>0, 63258=>0, 63259=>366,
64257=>534, 64258=>530, 64256=>603, 64259=>820, 64260=>814, 305=>276, 63166=>276, 8260=>166, 728=>332, 729=>332, 730=>332, 733=>332, 731=>332, 711=>332, 321=>610, 322=>276,
8722=>563, 9251=>732, 63329=>471, 63330=>446, 63331=>437, 63332=>483, 63333=>424, 63334=>385, 63335=>483, 63336=>502, 63337=>244, 63338=>294, 63339=>541, 63340=>408, 63341=>615, 63342=>492,
63343=>499, 63344=>407, 63345=>483, 63346=>493, 63347=>388, 63348=>430, 63349=>508, 63350=>499, 63351=>720, 63352=>499, 63353=>509, 63354=>443, 63280=>499, 63281=>499, 63282=>499, 63283=>499,
63284=>499, 63285=>499, 63286=>499, 63287=>499, 63288=>499, 63289=>499, 8194=>500, 8195=>1000, 8204=>0, 8205=>0, 8206=>0, 8207=>0);
$enc='';
$diff='';
$file='norasii.z';
$ctg='norasii.ctg.z';
$originalsize=70756;
$originalsize=116124;
?>

@ -0,0 +1,400 @@
<?php
$this->uni2gn = array (
0 => '.notdef',
32 => 'space',
33 => 'exclam',
34 => 'quotedbl',
35 => 'numbersign',
36 => 'dollar',
37 => 'percent',
38 => 'ampersand',
39 => 'quotesingle',
40 => 'parenleft',
41 => 'parenright',
42 => 'asterisk',
43 => 'plus',
44 => 'comma',
45 => 'hyphen',
46 => 'period',
47 => 'slash',
48 => 'zero',
49 => 'one',
50 => 'two',
51 => 'three',
52 => 'four',
53 => 'five',
54 => 'six',
55 => 'seven',
56 => 'eight',
57 => 'nine',
58 => 'colon',
59 => 'semicolon',
60 => 'less',
61 => 'equal',
62 => 'greater',
63 => 'question',
64 => 'at',
65 => 'A',
66 => 'B',
67 => 'C',
68 => 'D',
69 => 'E',
70 => 'F',
71 => 'G',
72 => 'H',
73 => 'I',
74 => 'J',
75 => 'K',
76 => 'L',
77 => 'M',
78 => 'N',
79 => 'O',
80 => 'P',
81 => 'Q',
82 => 'R',
83 => 'S',
84 => 'T',
85 => 'U',
86 => 'V',
87 => 'W',
88 => 'X',
89 => 'Y',
90 => 'Z',
91 => 'bracketleft',
92 => 'backslash',
93 => 'bracketright',
94 => 'asciicircum',
95 => 'underscore',
96 => 'grave',
97 => 'a',
98 => 'b',
99 => 'c',
100 => 'd',
101 => 'e',
102 => 'f',
103 => 'g',
104 => 'h',
105 => 'i',
106 => 'j',
107 => 'k',
108 => 'l',
109 => 'm',
110 => 'n',
111 => 'o',
112 => 'p',
113 => 'q',
114 => 'r',
115 => 's',
116 => 't',
117 => 'u',
118 => 'v',
119 => 'w',
120 => 'x',
121 => 'y',
122 => 'z',
123 => 'braceleft',
124 => 'bar',
125 => 'braceright',
126 => 'asciitilde',
8364 => 'Euro',
8218 => 'quotesinglbase',
402 => 'florin',
8222 => 'quotedblbase',
8230 => 'ellipsis',
8224 => 'dagger',
8225 => 'daggerdbl',
710 => 'circumflex',
8240 => 'perthousand',
352 => 'Scaron',
8249 => 'guilsinglleft',
338 => 'OE',
8216 => 'quoteleft',
8217 => 'quoteright',
8220 => 'quotedblleft',
8221 => 'quotedblright',
8226 => 'bullet',
8211 => 'endash',
8212 => 'emdash',
732 => 'tilde',
8482 => 'trademark',
353 => 'scaron',
8250 => 'guilsinglright',
339 => 'oe',
376 => 'Ydieresis',
160 => 'nbspace',
161 => 'exclamdown',
162 => 'cent',
163 => 'sterling',
164 => 'currency',
165 => 'yen',
166 => 'brokenbar',
167 => 'section',
168 => 'dieresis',
169 => 'copyright',
170 => 'ordfeminine',
171 => 'guillemotleft',
172 => 'logicalnot',
173 => 'softhyphen',
174 => 'registered',
175 => 'macron',
176 => 'degree',
177 => 'plusminus',
178 => 'twosuperior',
179 => 'threesuperior',
180 => 'acute',
181 => 'mu',
182 => 'paragraph',
183 => 'periodcentered',
184 => 'cedilla',
185 => 'onesuperior',
186 => 'ordmasculine',
187 => 'guillemotright',
188 => 'onequarter',
189 => 'onehalf',
190 => 'threequarters',
191 => 'questiondown',
192 => 'Agrave',
193 => 'Aacute',
194 => 'Acircumflex',
195 => 'Atilde',
196 => 'Adieresis',
197 => 'Aring',
198 => 'AE',
199 => 'Ccedilla',
200 => 'Egrave',
201 => 'Eacute',
202 => 'Ecircumflex',
203 => 'Edieresis',
204 => 'Igrave',
205 => 'Iacute',
206 => 'Icircumflex',
207 => 'Idieresis',
208 => 'Eth',
209 => 'Ntilde',
210 => 'Ograve',
211 => 'Oacute',
212 => 'Ocircumflex',
213 => 'Otilde',
214 => 'Odieresis',
215 => 'multiply',
216 => 'Oslash',
217 => 'Ugrave',
218 => 'Uacute',
219 => 'Ucircumflex',
220 => 'Udieresis',
221 => 'Yacute',
222 => 'Thorn',
223 => 'germandbls',
224 => 'agrave',
225 => 'aacute',
226 => 'acircumflex',
227 => 'atilde',
228 => 'adieresis',
229 => 'aring',
230 => 'ae',
231 => 'ccedilla',
232 => 'egrave',
233 => 'eacute',
234 => 'ecircumflex',
235 => 'edieresis',
236 => 'igrave',
237 => 'iacute',
238 => 'icircumflex',
239 => 'idieresis',
240 => 'eth',
241 => 'ntilde',
242 => 'ograve',
243 => 'oacute',
244 => 'ocircumflex',
245 => 'otilde',
246 => 'odieresis',
247 => 'divide',
248 => 'oslash',
249 => 'ugrave',
250 => 'uacute',
251 => 'ucircumflex',
252 => 'udieresis',
253 => 'yacute',
254 => 'thorn',
255 => 'ydieresis',
63232 => 'uni0E10.descless',
63233 => 'uni0E34.left',
63234 => 'uni0E35.left',
63235 => 'uni0E36.left',
63236 => 'uni0E37.left',
63237 => 'uni0E48.low_left',
63238 => 'uni0E49.low_left',
63239 => 'uni0E4A.low_left',
63240 => 'uni0E4B.low_left',
63241 => 'uni0E4C.low_left',
63242 => 'uni0E48.low',
63243 => 'uni0E49.low',
63244 => 'uni0E4A.low',
63245 => 'uni0E4B.low',
63246 => 'uni0E4C.low',
63247 => 'uni0E0D.descless',
63248 => 'uni0E31.left',
63249 => 'uni0E4D.left',
63250 => 'uni0E47.left',
63251 => 'uni0E48.left',
63252 => 'uni0E49.left',
63253 => 'uni0E4A.left',
63254 => 'uni0E4B.left',
63255 => 'uni0E4C.left',
3585 => 'uni0E01',
3586 => 'uni0E02',
3587 => 'uni0E03',
3588 => 'uni0E04',
3589 => 'uni0E05',
3590 => 'uni0E06',
3591 => 'uni0E07',
3592 => 'uni0E08',
3593 => 'uni0E09',
3594 => 'uni0E0A',
3595 => 'uni0E0B',
3596 => 'uni0E0C',
3597 => 'uni0E0D',
3598 => 'uni0E0E',
3599 => 'uni0E0F',
3600 => 'uni0E10',
3601 => 'uni0E11',
3602 => 'uni0E12',
3603 => 'uni0E13',
3604 => 'uni0E14',
3605 => 'uni0E15',
3606 => 'uni0E16',
3607 => 'uni0E17',
3608 => 'uni0E18',
3609 => 'uni0E19',
3610 => 'uni0E1A',
3611 => 'uni0E1B',
3612 => 'uni0E1C',
3613 => 'uni0E1D',
3614 => 'uni0E1E',
3615 => 'uni0E1F',
3616 => 'uni0E20',
3617 => 'uni0E21',
3618 => 'uni0E22',
3619 => 'uni0E23',
3620 => 'uni0E24',
3621 => 'uni0E25',
3622 => 'uni0E26',
3623 => 'uni0E27',
3624 => 'uni0E28',
3625 => 'uni0E29',
3626 => 'uni0E2A',
3627 => 'uni0E2B',
3628 => 'uni0E2C',
3629 => 'uni0E2D',
3630 => 'uni0E2E',
3631 => 'uni0E2F',
3632 => 'uni0E30',
3633 => 'uni0E31',
3634 => 'uni0E32',
3635 => 'uni0E33',
3636 => 'uni0E34',
3637 => 'uni0E35',
3638 => 'uni0E36',
3639 => 'uni0E37',
3640 => 'uni0E38',
3641 => 'uni0E39',
3642 => 'uni0E3A',
63262 => 'uni0E4D.high',
8203 => 'zerowidthspace',
9676 => 'uni25CC',
63263 => 'uni0E47.high',
3647 => 'uni0E3F',
3648 => 'uni0E40',
3649 => 'uni0E41',
3650 => 'uni0E42',
3651 => 'uni0E43',
3652 => 'uni0E44',
3653 => 'uni0E45',
3654 => 'uni0E46',
3655 => 'uni0E47',
3656 => 'uni0E48',
3657 => 'uni0E49',
3658 => 'uni0E4A',
3659 => 'uni0E4B',
3660 => 'uni0E4C',
3661 => 'uni0E4D',
3662 => 'uni0E4E',
3663 => 'uni0E4F',
3664 => 'uni0E50',
3665 => 'uni0E51',
3666 => 'uni0E52',
3667 => 'uni0E53',
3668 => 'uni0E54',
3669 => 'uni0E55',
3670 => 'uni0E56',
3671 => 'uni0E57',
3672 => 'uni0E58',
3673 => 'uni0E59',
3674 => 'uni0E5A',
3675 => 'uni0E5B',
63256 => 'uni0E38.low',
63257 => 'uni0E39.low',
63258 => 'uni0E3A.low',
63259 => 'uniF71B',
64257 => 'fi',
64258 => 'fl',
64256 => 'ff',
64259 => 'ffi',
64260 => 'ffl',
305 => 'dotlessi',
63166 => 'dotlessj',
8260 => 'fraction',
728 => 'breve',
729 => 'dotaccent',
730 => 'ring',
733 => 'hungarumlaut',
731 => 'ogonek',
711 => 'caron',
321 => 'Lslash',
322 => 'lslash',
8722 => 'minus',
9251 => 'uni2423',
63329 => 'uniF761',
63330 => 'uniF762',
63331 => 'uniF763',
63332 => 'uniF764',
63333 => 'uniF765',
63334 => 'uniF766',
63335 => 'uniF767',
63336 => 'uniF768',
63337 => 'uniF769',
63338 => 'uniF76A',
63339 => 'uniF76B',
63340 => 'uniF76C',
63341 => 'uniF76D',
63342 => 'uniF76E',
63343 => 'uniF76F',
63344 => 'uniF770',
63345 => 'uniF771',
63346 => 'uniF772',
63347 => 'uniF773',
63348 => 'uniF774',
63349 => 'uniF775',
63350 => 'uniF776',
63351 => 'uniF777',
63352 => 'uniF778',
63353 => 'uniF779',
63354 => 'uniF77A',
63280 => 'zerooldstyle',
63281 => 'oneoldstyle',
63282 => 'twooldstyle',
63283 => 'threeoldstyle',
63284 => 'fouroldstyle',
63285 => 'fiveoldstyle',
63286 => 'sixoldstyle',
63287 => 'sevenoldstyle',
63288 => 'eightoldstyle',
63289 => 'nineoldstyle',
8194 => 'enspace',
8195 => 'emspace',
8204 => 'zerowidthnonjoiner',
8205 => 'zerowidthjoiner',
8206 => 'afii299',
8207 => 'afii300',
);
?>
Loading…
Cancel
Save