mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-03 09:21:10 +02:00
improved TextExtent from Olivier
git-svn-id: trunk@6243 -
This commit is contained in:
parent
96951cf407
commit
cd01392045
@ -88,7 +88,7 @@ Type
|
||||
procedure UpdateLineStyle;
|
||||
procedure UpdateFillColor;
|
||||
procedure UpdateFont;
|
||||
function MapedFontName : string;
|
||||
function MappedFontName: string;
|
||||
function MapedString(const St : string):string;
|
||||
|
||||
procedure MoveToLastPos;
|
||||
@ -168,10 +168,347 @@ Type
|
||||
end;
|
||||
|
||||
implementation
|
||||
Type
|
||||
TFontsWidths = Array[32..255] of Integer;
|
||||
TFontPSMetrics = Record
|
||||
Name : string;
|
||||
Widths : TFontsWidths;
|
||||
end;
|
||||
|
||||
Const
|
||||
cBrushStyle : Array[bsSolid..bsDiagCross] of String = ('bsSolid','bsClear','bsHorizontal',
|
||||
'bsVertical','bsFDiagonal',
|
||||
'bsBDiagonal','bsCross','bsDiagCross');
|
||||
|
||||
|
||||
cFontPSMetrics : Array[0..12] of TFontPSMetrics =(
|
||||
(Name : 'CourierISO';
|
||||
Widths: (600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600)
|
||||
),
|
||||
(Name : 'CourierISO-Bold';
|
||||
Widths: (600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600)
|
||||
),
|
||||
(Name : 'CourierISO-Oblique';
|
||||
Widths: (600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600)
|
||||
),
|
||||
(Name : 'CourierISO-Oblique-Bold';
|
||||
Widths: (600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
|
||||
600, 600, 600, 600, 600, 600)
|
||||
),
|
||||
(Name : 'HelveticaISO';
|
||||
Widths: (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, 278, 278, 278,
|
||||
278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
|
||||
278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
|
||||
278, 278, 278, 278, 278, 278, 278, 278, 278, 278,
|
||||
278, 333, 556, 556, 556, 556, 260, 556, 333, 737,
|
||||
370, 556, 584, 333, 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)
|
||||
),
|
||||
(Name : 'HelveticaISO-Bold';
|
||||
Widths: (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, 833, 833, 833,
|
||||
833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
|
||||
833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
|
||||
833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
|
||||
278, 333, 556, 556, 556, 556, 280, 556, 333, 737,
|
||||
370, 556, 584, 333, 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)
|
||||
),
|
||||
(Name : 'HelveticaISO-Oblique';
|
||||
Widths: (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, 833, 833, 833,
|
||||
833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
|
||||
833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
|
||||
833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
|
||||
278, 333, 556, 556, 556, 556, 260, 556, 333, 737,
|
||||
370, 556, 584, 333, 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)
|
||||
),
|
||||
(Name : 'HelveticaISO-Oblique-Bold';
|
||||
Widths: (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, 833, 833, 833,
|
||||
833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
|
||||
833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
|
||||
833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
|
||||
278, 333, 556, 556, 556, 556, 280, 556, 333, 737,
|
||||
370, 556, 584, 333, 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)
|
||||
),
|
||||
(Name : 'RomanISO';
|
||||
Widths: (250, 333, 408, 500, 500, 833, 778, 180,
|
||||
333, 333, 500, 564, 250, 333, 250, 278, 500, 500,
|
||||
500, 500, 500, 500, 500, 500, 500, 500, 278, 278,
|
||||
564, 564, 564, 444, 921, 722, 667, 667, 722, 611,
|
||||
556, 722, 722, 333, 389, 722, 611, 889, 722, 722,
|
||||
556, 722, 667, 556, 611, 722, 722, 944, 722, 722,
|
||||
611, 333, 278, 333, 469, 500, 333, 444, 500, 444,
|
||||
500, 444, 333, 500, 500, 278, 278, 500, 278, 778,
|
||||
500, 500, 500, 500, 333, 389, 278, 500, 500, 722,
|
||||
500, 500, 444, 480, 200, 480, 541, 889, 889, 889,
|
||||
889, 889, 889, 889, 889, 889, 889, 889, 889, 889,
|
||||
889, 889, 889, 889, 889, 889, 889, 889, 889, 889,
|
||||
889, 889, 889, 889, 889, 889, 889, 889, 889, 889,
|
||||
250, 333, 500, 500, 500, 500, 200, 500, 333, 760,
|
||||
276, 500, 564, 333, 760, 333, 400, 564, 300, 300,
|
||||
333, 500, 453, 250, 333, 300, 310, 500, 750, 750,
|
||||
750, 444, 722, 722, 722, 722, 722, 722, 889, 667,
|
||||
611, 611, 611, 611, 333, 333, 333, 333, 722, 722,
|
||||
722, 722, 722, 722, 722, 564, 722, 722, 722, 722,
|
||||
722, 722, 556, 500, 444, 444, 444, 444, 444, 444,
|
||||
667, 444, 444, 444, 444, 444, 278, 278, 278, 278,
|
||||
500, 500, 500, 500, 500, 500, 500, 564, 500, 500,
|
||||
500, 500, 500, 500, 500, 500)
|
||||
),
|
||||
(Name : 'TimesISO-Bold';
|
||||
Widths: (250, 333, 555, 500, 500, 1000, 833, 278,
|
||||
333, 333, 500, 570, 250, 333, 250, 278, 500, 500,
|
||||
500, 500, 500, 500, 500, 500, 500, 500, 333, 333,
|
||||
570, 570, 570, 500, 930, 722, 667, 722, 722, 667,
|
||||
611, 778, 778, 389, 500, 778, 667, 944, 722, 778,
|
||||
611, 778, 722, 556, 667, 722, 722, 1000, 722, 722,
|
||||
667, 333, 278, 333, 581, 500, 333, 500, 556, 444,
|
||||
556, 444, 333, 500, 556, 278, 333, 556, 278, 833,
|
||||
556, 500, 556, 556, 444, 389, 333, 556, 500, 722,
|
||||
500, 500, 444, 394, 220, 394, 520, 944, 944, 944,
|
||||
944, 944, 944, 944, 944, 944, 944, 944, 944, 944,
|
||||
944, 944, 944, 944, 944, 944, 944, 944, 944, 944,
|
||||
944, 944, 944, 944, 944, 944, 944, 944, 944, 944,
|
||||
250, 333, 500, 500, 500, 500, 220, 500, 333, 747,
|
||||
300, 500, 570, 333, 747, 333, 400, 570, 300, 300,
|
||||
333, 556, 540, 250, 333, 300, 330, 500, 750, 750,
|
||||
750, 500, 722, 722, 722, 722, 722, 722, 1000, 722,
|
||||
667, 667, 667, 667, 389, 389, 389, 389, 722, 722,
|
||||
778, 778, 778, 778, 778, 570, 778, 722, 722, 722,
|
||||
722, 722, 611, 556, 500, 500, 500, 500, 500, 500,
|
||||
722, 444, 444, 444, 444, 444, 278, 278, 278, 278,
|
||||
500, 556, 500, 500, 500, 500, 500, 570, 500, 556,
|
||||
556, 556, 556, 500, 556, 500)
|
||||
),
|
||||
(Name : 'TimesISO-Italic';
|
||||
Widths: (250, 333, 420, 500, 500, 833, 778, 214,
|
||||
333, 333, 500, 675, 250, 333, 250, 278, 500, 500,
|
||||
500, 500, 500, 500, 500, 500, 500, 500, 333, 333,
|
||||
675, 675, 675, 500, 920, 611, 611, 667, 722, 611,
|
||||
611, 722, 722, 333, 444, 667, 556, 833, 667, 722,
|
||||
611, 722, 611, 500, 556, 722, 611, 833, 611, 556,
|
||||
556, 389, 278, 389, 422, 500, 333, 500, 500, 444,
|
||||
500, 444, 278, 500, 500, 278, 278, 444, 278, 722,
|
||||
500, 500, 500, 500, 389, 389, 278, 500, 444, 667,
|
||||
444, 444, 389, 400, 275, 400, 541, 833, 833, 833,
|
||||
833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
|
||||
833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
|
||||
833, 833, 833, 833, 833, 833, 833, 833, 833, 833,
|
||||
250, 389, 500, 500, 500, 500, 275, 500, 333, 760,
|
||||
276, 500, 675, 333, 760, 333, 400, 675, 300, 300,
|
||||
333, 500, 523, 250, 333, 300, 310, 500, 750, 750,
|
||||
750, 500, 611, 611, 611, 611, 611, 611, 889, 667,
|
||||
611, 611, 611, 611, 333, 333, 333, 333, 722, 667,
|
||||
722, 722, 722, 722, 722, 675, 722, 722, 722, 722,
|
||||
722, 556, 611, 500, 500, 500, 500, 500, 500, 500,
|
||||
667, 444, 444, 444, 444, 444, 278, 278, 278, 278,
|
||||
500, 500, 500, 500, 500, 500, 500, 675, 500, 500,
|
||||
500, 500, 500, 444, 500, 444)
|
||||
),
|
||||
(Name : 'TimesISO-Italic-Bold';
|
||||
Widths: (250, 389, 555, 500, 500, 833, 778, 278,
|
||||
333, 333, 500, 570, 250, 333, 250, 278, 500, 500,
|
||||
500, 500, 500, 500, 500, 500, 500, 500, 333, 333,
|
||||
570, 570, 570, 500, 832, 667, 667, 667, 722, 667,
|
||||
667, 722, 778, 389, 500, 667, 611, 889, 722, 722,
|
||||
611, 722, 667, 556, 611, 722, 667, 889, 667, 611,
|
||||
611, 333, 278, 333, 570, 500, 333, 500, 500, 444,
|
||||
500, 444, 333, 500, 556, 278, 278, 500, 278, 778,
|
||||
556, 500, 500, 500, 389, 389, 278, 556, 444, 667,
|
||||
500, 444, 389, 348, 220, 348, 570, 889, 889, 889,
|
||||
889, 889, 889, 889, 889, 889, 889, 889, 889, 889,
|
||||
889, 889, 889, 889, 889, 889, 889, 889, 889, 889,
|
||||
889, 889, 889, 889, 889, 889, 889, 889, 889, 889,
|
||||
250, 389, 500, 500, 500, 500, 220, 500, 333, 747,
|
||||
266, 500, 606, 333, 747, 333, 400, 570, 300, 300,
|
||||
333, 576, 500, 250, 333, 300, 300, 500, 750, 750,
|
||||
750, 500, 667, 667, 667, 667, 667, 667, 944, 667,
|
||||
667, 667, 667, 667, 389, 389, 389, 389, 722, 722,
|
||||
722, 722, 722, 722, 722, 570, 722, 722, 722, 722,
|
||||
722, 611, 611, 500, 500, 500, 500, 500, 500, 500,
|
||||
722, 444, 444, 444, 444, 444, 278, 278, 278, 278,
|
||||
500, 556, 500, 500, 500, 500, 500, 570, 500, 556,
|
||||
556, 556, 556, 444, 500, 444)
|
||||
),
|
||||
(Name : 'Symbol';
|
||||
Widths: (250,333,713,500,549,833,778,439,
|
||||
333,333,500,549,250,549,250,278,500,500,
|
||||
500,500,500,500,500,500,500,500,278,278,
|
||||
549,549,549,444,549,722,667,722,612,611,
|
||||
763,603,722,333,631,722,686,889,722,722,
|
||||
768,741,556,592,611,690,439,768,645,795,
|
||||
611,333,863,333,658,500,500,631,549,549,
|
||||
494,439,521,411,603,329,603,549,549,576,
|
||||
521,549,549,521,549,603,439,576,713,686,
|
||||
493,686,494,480,200,480,549,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,
|
||||
0,620,247,549,167,713,500,753,753,753,
|
||||
753,1042,987,603,987,603,400,549,411,549,
|
||||
549,713,494,460,549,549,549,549,1000,603,
|
||||
1000,658,823,686,795,987,768,768,823,768,
|
||||
768,713,713,713,713,713,713,713,768,713,
|
||||
790,790,890,823,549,250,713,603,603,1042,
|
||||
987,603,987,603,494,329,790,790,786,713,
|
||||
384,384,384,384,384,384,494,494,494,494,
|
||||
0,329,274,686,686,686,384,384,384,384,
|
||||
384,384,494,494,790, 250)
|
||||
)
|
||||
);
|
||||
|
||||
{ TPostscriptPrinterCanvas }
|
||||
|
||||
//Write an instruction in the header of document
|
||||
@ -329,7 +666,7 @@ begin
|
||||
(Font.Style<>fcLastFont.Style) or FirstUpdatefont then
|
||||
begin
|
||||
FirstUpdatefont:=False;
|
||||
Write(Format('/%s findfont %d scalefont setfont',[MapedFontName,Font.Size]));
|
||||
Write(Format('/%s findfont %d scalefont setfont',[MappedFontName,Font.Size]));
|
||||
end;
|
||||
finally
|
||||
fcLastFont.Assign(Font);
|
||||
@ -337,7 +674,7 @@ begin
|
||||
end;
|
||||
|
||||
//Return an Postscript font Name
|
||||
function TPostscriptPrinterCanvas.MapedFontName: string;
|
||||
function TPostscriptPrinterCanvas.MappedFontName: string;
|
||||
Var Atr : string;
|
||||
begin
|
||||
Atr:='';
|
||||
@ -1382,12 +1719,34 @@ begin
|
||||
end;
|
||||
|
||||
function TPostscriptPrinterCanvas.TextExtent(const Text: string): TSize;
|
||||
Var IndexFont,i : Integer;
|
||||
FontName : string;
|
||||
c: Char;
|
||||
begin
|
||||
Result.cX := 0;
|
||||
Result.cY := 0;
|
||||
if Text='' then Exit;
|
||||
RequiredState([csHandleValid, csFontValid]);
|
||||
GetTextExtentPoint(0, PChar(Text), Length(Text), Result);
|
||||
Result.cX:=Font.Size*72;
|
||||
|
||||
FontName:=MappedFontName;
|
||||
IndexFont:=0; //By default, use CourierISO metrics
|
||||
for i:=0 to High(cFontPSMetrics) do
|
||||
begin
|
||||
if cFontPSMetrics[i].Name=FontName then
|
||||
begin
|
||||
IndexFont:=i;
|
||||
Break;
|
||||
end;
|
||||
end;
|
||||
|
||||
for i:=1 to Length(Text) do
|
||||
begin
|
||||
c:=Text[i];
|
||||
if (c in [#32..#255]) then
|
||||
Inc(Result.cX,cFontPSMetrics[IndexFont].Widths[Ord(c)]);
|
||||
end;
|
||||
Result.cX:=Round(Result.cX*Font.Size*0.001);
|
||||
end;
|
||||
|
||||
//Draw an Picture
|
||||
|
Loading…
Reference in New Issue
Block a user