📄 embeddedpdffonts.pas
字号:
unit EmbeddedPdfFonts;
//----------------------------------------------------------------------------------------------------------------------
//
// This file is part of fabFORCE EmbeddedPDF.
// Copyright (c) 1999-2001 Takezou. <takeshi_kanno@est.hi-ho.ne.jp>
// Copyright (C) 2003 Michael G. Zinner, www.fabFORCE.net
//
// EmbeddedPDF is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// EmbeddedPDF is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Library General Public License for more details.
//
// You should have received a copy of the GNU Library General Public License
// along with EmbeddedPDF; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
//----------------------------------------------------------------------------------------------------------------------
//
// Unit PdfFonts.pas
// -----------------
// Version 1.0, 12.09.2003, Mike
// Description
// Contains the font classes
//
// Changes:
// Version 1.0, 12.09.2003, Mike
// adapted version from Takezou's PowerPDF, Version 0.9 (beta), 2000.09.14
//
//----------------------------------------------------------------------------------------------------------------------
interface
uses
SysUtils, Classes, EmbeddedPdfDoc, EmbeddedPdfTypes;
const
TYPE1_FONT_STR_TABLE: array[0..2] of TPDF_STR_TBL =(
(KEY: 'Type'; VAL: 'Font'),
(KEY: 'Subtype'; VAL: 'Type1'),
(KEY: 'Encoding'; VAL: 'WinAnsiEncoding')
);
TRUETYPE_FONT_STR_TABLE: array[0..2] of TPDF_STR_TBL =(
(KEY: 'Type'; VAL: 'Font'),
(KEY: 'Subtype'; VAL: 'TrueType'),
(KEY: 'Encoding'; VAL: 'WinAnsiEncoding')
);
// FixedWidth defination
FIXED_WIDTH_W_ARRAY: array[32..255] of Integer = (
600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600);
FIXED_WIDTH_INT_TABLE: array[0..1] of TPDF_INT_TBL =(
(KEY: 'FirstChar'; VAL: 32),
(KEY: 'LastChar'; VAL: 255)
);
FIXED_WIDTH_DISC_STR_TABLE: array[0..2] of TPDF_STR_TBL =(
(KEY: 'Type'; VAL: 'FontDescriptor'),
(KEY: 'FontName'; VAL: 'Type1'),
(KEY: 'Encoding'; VAL: 'WinAnsiEncoding')
);
FIXED_WIDTH_DISC_INT_TABLE: array[0..6] of TPDF_INT_TBL =(
(KEY: 'Ascent'; VAL: 833),
(KEY: 'CapHeight'; VAL: 833),
(KEY: 'Descent'; VAL: -300),
(KEY: 'Flags'; VAL: PDF_FONT_STD_CHARSET + PDF_FONT_FIXED_WIDTH),
(KEY: 'ItalicAngle'; VAL: -15),
(KEY: 'StemV'; VAL: 78),
(KEY: 'MissingWidth'; VAL: 600));
FIXED_WIDTH_BBOX: array[0..3] of Integer = (-103,-300,836,833);
// FixedWidth-Bold defination
FIXED_WIDTH_BOLD_W_ARRAY: array[32..255] of Integer = (
600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600);
FIXED_WIDTH_BOLD_DISC_INT_TABLE: array[0..6] of TPDF_INT_TBL =(
(KEY: 'Ascent'; VAL: 833),
(KEY: 'CapHeight'; VAL: 833),
(KEY: 'Descent'; VAL: -300),
(KEY: 'Flags'; VAL: PDF_FONT_STD_CHARSET +
PDF_FONT_FOURCE_BOLD + PDF_FONT_FIXED_WIDTH),
(KEY: 'ItalicAngle'; VAL: 0),
(KEY: 'StemV'; VAL: 156),
(KEY: 'MissingWidth'; VAL: 600));
FIXED_WIDTH_BOLD_BBOX: array[0..3] of Integer = (-46,-300,702,833);
// FixedWidth-Italic defination
FIXED_WIDTH_ITALIC_W_ARRAY: array[32..255] of Integer = (
600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600);
FIXED_WIDTH_ITALIC_DISC_INT_TABLE: array[0..6] of TPDF_INT_TBL =(
(KEY: 'Ascent'; VAL: 833),
(KEY: 'CapHeight'; VAL: 833),
(KEY: 'Descent'; VAL: -300),
(KEY: 'Flags'; VAL: PDF_FONT_STD_CHARSET +
PDF_FONT_FIXED_WIDTH),
(KEY: 'ItalicAngle'; VAL: -15),
(KEY: 'StemV'; VAL: 78),
(KEY: 'MissingWidth'; VAL: 600));
FIXED_WIDTH_ITALIC_BBOX: array[0..3] of Integer = (-67,-300,800,833);
// FixedWidth-BoldItalic defination
FIXED_WIDTH_BOLDITALIC_W_ARRAY: array[32..255] of Integer = (
600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,600,
600,600);
FIXED_WIDTH_BOLDITALIC_DISC_INT_TABLE: array[0..6] of TPDF_INT_TBL =(
(KEY: 'Ascent'; VAL: 833),
(KEY: 'CapHeight'; VAL: 833),
(KEY: 'Descent'; VAL: -300),
(KEY: 'Flags'; VAL: PDF_FONT_STD_CHARSET +
PDF_FONT_FIXED_WIDTH + PDF_FONT_FOURCE_BOLD),
(KEY: 'ItalicAngle'; VAL: -15),
(KEY: 'StemV'; VAL: 156),
(KEY: 'MissingWidth'; VAL: 600));
FIXED_WIDTH_BOLDITALIC_BBOX: array[0..3] of Integer = (-103,-300,836,833);
// Arial definition
ARIAL_W_ARRAY: array[32..255] of Integer = (
278,278,355,556,556,889,667,191,333,333,389,584,278,333,
278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,
584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,
722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,
469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,
556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,
584,0,556,0,222,556,333,1000,556,556,333,1000,667,333,1000,0,
611,0,0,222,222,333,333,350,556,1000,333,1000,500,333,944,0,
500,667,0,333,556,556,556,556,260,556,333,737,370,556,584,0,
737,333,400,584,333,333,333,556,537,278,333,333,365,556,834,834,
834,611,667,667,667,667,667,667,1000,722,667,667,667,667,278,278,
278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,
667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,
278,278,556,556,556,556,556,556,556,584,611,556,556,556,556,500,
556,500);
ARIAL_INT_TABLE: array[0..1] of TPDF_INT_TBL = (
(KEY: 'FirstChar'; VAL: 32),
(KEY: 'LastChar'; VAL: 255)
);
ARIAL_DISC_STR_TABLE: array[0..2] of TPDF_STR_TBL = (
(KEY: 'Type'; VAL: 'FontDescriptor'),
(KEY: 'FontName'; VAL: 'Type1'),
(KEY: 'Encoding'; VAL: 'WinAnsiEncoding')
);
ARIAL_DISC_INT_TABLE: array[0..6] of TPDF_INT_TBL = (
(KEY: 'Ascent'; VAL: 905),
(KEY: 'CapHeight'; VAL: 905),
(KEY: 'Descent'; VAL: -212),
(KEY: 'Flags'; VAL: PDF_FONT_STD_CHARSET),
(KEY: 'ItalicAngle'; VAL: 0),
(KEY: 'StemV'; VAL: 78),
(KEY: 'MissingWidth'; VAL: 750)
);
ARIAL_BBOX: array[0..3] of Integer = (-166,-225,1000,931);
// Arial-Bold definition
ARIAL_BOLD_W_ARRAY: array[32..255] of Integer = (
278,333,474,556,556,889,722,238,333,333,389,584,278,333,
278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,
584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,
722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,
584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,
611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,
584,0,556,0,278,556,500,1000,556,556,333,1000,667,333,1000,0,
611,0,0,278,278,500,500,350,556,1000,333,1000,556,333,944,0,
500,667,0,333,556,556,556,556,280,556,333,737,370,556,584,0,
737,333,400,584,333,333,333,611,556,278,333,333,365,556,834,834,
834,611,722,722,722,722,722,722,1000,722,667,667,667,667,278,278,
278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,
667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,
278,278,611,611,611,611,611,611,611,584,611,611,611,611,611,556,
611,556);
ARIAL_BOLD_DISC_INT_TABLE: array[0..6] of TPDF_INT_TBL =(
(KEY: 'Ascent'; VAL: 905),
(KEY: 'CapHeight'; VAL: 905),
(KEY: 'Descent'; VAL: -212),
(KEY: 'Flags'; VAL: PDF_FONT_STD_CHARSET +
PDF_FONT_FOURCE_BOLD),
(KEY: 'ItalicAngle'; VAL: 0),
(KEY: 'StemV'; VAL: 156),
(KEY: 'MissingWidth'; VAL: 750)
);
ARIAL_BOLD_BBOX: array[0..3] of Integer = (-170,-228,1003,962);
// Arial-Italic definition
ARIAL_ITALIC_W_ARRAY: array[32..255] of Integer = (
278,278,355,556,556,889,667,191,333,333,389,584,278,333,
278,278,556,556,556,556,556,556,556,556,556,556,278,278,584,584,
584,556,1015,667,667,722,722,667,611,778,722,278,500,667,556,833,
722,778,667,778,722,667,611,722,667,944,667,667,611,278,278,278,
469,556,333,556,556,500,556,556,278,556,556,222,222,500,222,833,
556,556,556,556,333,500,278,556,500,722,500,500,500,334,260,334,
584,0,556,0,222,556,333,1000,556,556,333,1000,667,333,1000,0,
611,0,0,222,222,333,333,350,556,1000,333,1000,500,333,944,0,
500,667,0,333,556,556,556,556,260,556,333,737,370,556,584,0,
737,333,400,584,333,333,333,556,537,278,333,333,365,556,834,834,
834,611,667,667,667,667,667,667,1000,722,667,667,667,667,278,278,
278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,
667,611,556,556,556,556,556,556,889,500,556,556,556,556,278,278,
278,278,556,556,556,556,556,556,556,584,611,556,556,556,556,500,
556,500);
ARIAL_ITALIC_DISC_STR_TABLE: array[0..2] of TPDF_STR_TBL =(
(KEY: 'Type'; VAL: 'FontDescriptor'),
(KEY: 'FontName'; VAL: 'Type1'),
(KEY: 'Encoding'; VAL: 'WinAnsiEncoding')
);
ARIAL_ITALIC_DISC_INT_TABLE: array[0..6] of TPDF_INT_TBL =(
(KEY: 'Ascent'; VAL: 905),
(KEY: 'CapHeight'; VAL: 905),
(KEY: 'Descent'; VAL: -212),
(KEY: 'Flags'; VAL: PDF_FONT_STD_CHARSET),
(KEY: 'ItalicAngle'; VAL: -15),
(KEY: 'StemV'; VAL: 78),
(KEY: 'MissingWidth'; VAL: 750)
);
ARIAL_ITALIC_BBOX: array[0..3] of Integer = (-170,-225,1116,931);
// Arial-BoldItalic definition
ARIAL_BOLDITALIC_W_ARRAY: array[32..255] of Integer = (
278,333,474,556,556,889,722,238,333,333,389,584,278,333,
278,278,556,556,556,556,556,556,556,556,556,556,333,333,584,584,
584,611,975,722,722,722,722,667,611,778,722,278,556,722,611,833,
722,778,667,778,722,667,611,722,667,944,667,667,611,333,278,333,
584,556,333,556,611,556,611,556,333,611,611,278,278,556,278,889,
611,611,611,611,389,556,333,611,556,778,556,556,500,389,280,389,
584,0,556,0,278,556,500,1000,556,556,333,1000,667,333,1000,0,
611,0,0,278,278,500,500,350,556,1000,333,1000,556,333,944,0,
500,667,0,333,556,556,556,556,280,556,333,737,370,556,584,0,
737,333,400,584,333,333,333,611,556,278,333,333,365,556,834,834,
834,611,722,722,722,722,722,722,1000,722,667,667,667,667,278,278,
278,278,722,722,778,778,778,778,778,584,778,722,722,722,722,667,
667,611,556,556,556,556,556,556,889,556,556,556,556,556,278,278,
278,278,611,611,611,611,611,611,611,584,611,611,611,611,611,556,
611,556);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -