Bypass Qt font metric calculations (#272)
- This originally showed up as fonts rendering differently on X11 than Wayland. (#230) - Setting font size in points should be device and back end independent, however the same exact font face and size, on the same machine, sometimes results in different font metrics between the xcb and wayland Qt back ends. - Setting font size in pixels, assuming a virtual DPI of 96 pixels/inch, results in consistent font metrics and rendering between these back ends. Furthermore, this virtual DPI works for either on-screen or hi-res printer QPainter contexts. - This virtual DPI seems to work correctly with some limited testing with Windows and MacOS. - Add rendering tests to build-tests CI script.
This commit is contained in:
@@ -23,23 +23,18 @@ jobs:
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
build_type: Release
|
||||
c_compiler: gcc
|
||||
cpp_compiler: g++
|
||||
- os: ubuntu-latest
|
||||
build_type: Release
|
||||
c_compiler: clang
|
||||
cpp_compiler: clang++
|
||||
- os: ubuntu-22.04
|
||||
build_type: Release
|
||||
c_compiler: gcc
|
||||
cpp_compiler: g++
|
||||
- os: windows-latest
|
||||
build_type: Release
|
||||
c_compiler: cl
|
||||
cpp_compiler: cl
|
||||
- os: macos-latest
|
||||
build_type: Release
|
||||
c_compiler: clang
|
||||
cpp_compiler: clang++
|
||||
|
||||
@@ -105,7 +100,7 @@ jobs:
|
||||
with:
|
||||
version: '6.2.*'
|
||||
install-deps: 'true'
|
||||
archives: 'qtbase qtsvg qttools icu qttranslations'
|
||||
archives: 'qtbase qtsvg qttools icu qttranslations qtwayland'
|
||||
|
||||
- name: Set reusable strings
|
||||
id: strings
|
||||
@@ -118,32 +113,162 @@ jobs:
|
||||
cmake -B ${{ steps.strings.outputs.build-output-dir }}
|
||||
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
|
||||
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
|
||||
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_TOOLCHAIN_FILE=${{ env.TOOLCHAIN_FILE }}
|
||||
-S ${{ github.workspace }}
|
||||
|
||||
- name: Build
|
||||
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}
|
||||
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config Release
|
||||
|
||||
- name: Test (Ubuntu)
|
||||
if: startsWith( matrix.os, 'ubuntu-' )
|
||||
working-directory: ${{ steps.strings.outputs.build-output-dir }}
|
||||
run: |
|
||||
xvfb-run ./glabels/glabels-qt --Version
|
||||
xvfb-run ctest --build-config ${{ matrix.build_type }}
|
||||
xvfb-run -a ./glabels/glabels-qt --Version
|
||||
xvfb-run -a ctest --build-config Release
|
||||
|
||||
- name: Test (Windows)
|
||||
if: startsWith( matrix.os, 'windows-' )
|
||||
working-directory: ${{ steps.strings.outputs.build-output-dir }}
|
||||
env:
|
||||
QT_ASSUME_STDERR_HAS_CONSOLE: 1
|
||||
run: |
|
||||
ctest --build-config ${{ matrix.build_type }}
|
||||
./glabels-batch/Release/glabels-batch-qt --Version
|
||||
ctest --build-config Release
|
||||
|
||||
- name: Test (MacOS)
|
||||
if: startsWith( matrix.os, 'macos-' )
|
||||
working-directory: ${{ steps.strings.outputs.build-output-dir }}
|
||||
run: |
|
||||
./glabels/glabels-qt --Version
|
||||
ctest --build-config ${{ matrix.build_type }}
|
||||
ctest --build-config Release
|
||||
|
||||
- name: Install render test dependencies (Ubuntu-latest)
|
||||
if: startsWith( matrix.os, 'ubuntu-latest' )
|
||||
working-directory: ${{ steps.strings.outputs.build-output-dir }}
|
||||
run: |
|
||||
sudo apt-get -y install xwayland-run
|
||||
sudo apt-get -y install comparepdf
|
||||
|
||||
- name: Install render test dependencies (Windows)
|
||||
if: startsWith( matrix.os, 'windows' )
|
||||
working-directory: ${{ steps.strings.outputs.build-output-dir }}
|
||||
run: |
|
||||
choco install diff-pdf
|
||||
|
||||
- name: Install render test dependencies (MacOS)
|
||||
if: startsWith( matrix.os, 'macos' )
|
||||
working-directory: ${{ steps.strings.outputs.build-output-dir }}
|
||||
run: |
|
||||
brew install diff-pdf
|
||||
|
||||
- name: Render tests (Ubuntu-latest)
|
||||
if: startsWith( matrix.os, 'ubuntu-latest' )
|
||||
working-directory: ${{ steps.strings.outputs.build-output-dir }}
|
||||
shell: bash
|
||||
env:
|
||||
TEST_DIR: ${{ github.workspace }}/test-data
|
||||
run: |
|
||||
set +e
|
||||
run-x() { xvfb-run -a "$@"; }
|
||||
run-w() { wlheadless-run -c weston --log=/dev/null -- "$@"; }
|
||||
#
|
||||
#
|
||||
echo "================"
|
||||
echo "X11 render tests"
|
||||
echo "================"
|
||||
run-x ./glabels-batch/glabels-batch-qt --Version
|
||||
#
|
||||
# echo "-- Available fonts (X) -------------------------------------------------"
|
||||
# run-x fc-list : family
|
||||
# echo "------------------------------------------------------------------------"
|
||||
#
|
||||
echo "-----------------------------------"
|
||||
run-x ./glabels-batch/glabels-batch-qt -o simple-shapes-x.pdf "$TEST_DIR/simple-shapes.glabels"
|
||||
comparepdf -ca -v2 "$TEST_DIR/simple-shapes.pdf" simple-shapes-x.pdf
|
||||
echo "-----------------------------------"
|
||||
run-x ./glabels-batch/glabels-batch-qt -o simple-code39-x.pdf "$TEST_DIR/simple-code39.glabels"
|
||||
comparepdf -ca -v2 "$TEST_DIR/simple-code39.pdf" simple-code39-x.pdf
|
||||
echo "-----------------------------------"
|
||||
run-x ./glabels-batch/glabels-batch-qt -o simple-text-liberation-sans-x.pdf "$TEST_DIR/simple-text-liberation-sans.glabels"
|
||||
comparepdf -ca -v2 "$TEST_DIR/simple-text-liberation-sans.pdf" simple-text-liberation-sans-x.pdf
|
||||
echo "-----------------------------------"
|
||||
run-x ./glabels-batch/glabels-batch-qt -o simple-text-liberation-serif-x.pdf "$TEST_DIR/simple-text-liberation-serif.glabels"
|
||||
comparepdf -ca -v2 "$TEST_DIR/simple-text-liberation-serif.pdf" simple-text-liberation-serif-x.pdf
|
||||
echo "-----------------------------------"
|
||||
#
|
||||
#
|
||||
echo "===================="
|
||||
echo "Wayland render tests"
|
||||
echo "===================="
|
||||
run-w ./glabels-batch/glabels-batch-qt --Version
|
||||
#
|
||||
# echo "-- Available fonts (X) -------------------------------------------------"
|
||||
# run-w fc-list : family
|
||||
# echo "------------------------------------------------------------------------"
|
||||
#
|
||||
echo "-----------------------------------"
|
||||
run-w ./glabels-batch/glabels-batch-qt -o simple-shapes-w.pdf "$TEST_DIR/simple-shapes.glabels"
|
||||
comparepdf -ca -v2 "$TEST_DIR/simple-shapes.pdf" simple-shapes-w.pdf
|
||||
echo "-----------------------------------"
|
||||
run-w ./glabels-batch/glabels-batch-qt -o simple-code39-w.pdf "$TEST_DIR/simple-code39.glabels"
|
||||
comparepdf -ca -v2 "$TEST_DIR/simple-code39.pdf" simple-code39-w.pdf
|
||||
echo "-----------------------------------"
|
||||
run-w ./glabels-batch/glabels-batch-qt -o simple-text-liberation-sans-w.pdf "$TEST_DIR/simple-text-liberation-sans.glabels"
|
||||
comparepdf -ca -v2 "$TEST_DIR/simple-text-liberation-sans.pdf" simple-text-liberation-sans-w.pdf
|
||||
echo "-----------------------------------"
|
||||
run-w ./glabels-batch/glabels-batch-qt -o simple-text-liberation-serif-w.pdf "$TEST_DIR/simple-text-liberation-serif.glabels"
|
||||
comparepdf -ca -v2 "$TEST_DIR/simple-text-liberation-serif.pdf" simple-text-liberation-serif-w.pdf
|
||||
echo "-----------------------------------"
|
||||
|
||||
- name: Render tests (Windows)
|
||||
if: startsWith( matrix.os, 'windows' )
|
||||
working-directory: ${{ steps.strings.outputs.build-output-dir }}
|
||||
shell: pwsh
|
||||
env:
|
||||
TEST_DIR: ${{ github.workspace }}/test-data
|
||||
QT_ASSUME_STDERR_HAS_CONSOLE: 1
|
||||
run: |
|
||||
set +e
|
||||
./glabels-batch/Release/glabels-batch-qt --Version
|
||||
echo "-----------------------------------"
|
||||
./glabels-batch/Release/glabels-batch-qt -o simple-shapes-windows.pdf "$env:TEST_DIR/simple-shapes.glabels" 2>&1
|
||||
diff-pdf -v "$env:TEST_DIR/simple-shapes.pdf" simple-shapes-windows.pdf 2>&1
|
||||
echo "-----------------------------------"
|
||||
./glabels-batch/Release/glabels-batch-qt -o simple-code39-windows.pdf "$env:TEST_DIR/simple-code39.glabels" 2>&1
|
||||
diff-pdf -v "$env:TEST_DIR/simple-code39.pdf" simple-code39-windows.pdf 2>&1
|
||||
echo "-----------------------------------"
|
||||
#
|
||||
# TODO: Create text-based rendering tests using fonts available on Windows
|
||||
#
|
||||
|
||||
- name: Render tests (MacOS)
|
||||
if: startsWith( matrix.os, 'macos' )
|
||||
working-directory: ${{ steps.strings.outputs.build-output-dir }}
|
||||
shell: bash
|
||||
env:
|
||||
TEST_DIR: ${{ github.workspace }}/test-data
|
||||
run: |
|
||||
set +e
|
||||
./glabels-batch/glabels-batch-qt --Version
|
||||
echo "-----------------------------------"
|
||||
./glabels-batch/glabels-batch-qt -o simple-shapes-mac.pdf "$TEST_DIR/simple-shapes.glabels"
|
||||
diff-pdf -v "$TEST_DIR/simple-shapes.pdf" simple-shapes-mac.pdf
|
||||
echo "-----------------------------------"
|
||||
./glabels-batch/glabels-batch-qt -o simple-code39-mac.pdf "$TEST_DIR/simple-code39.glabels"
|
||||
diff-pdf -v "$TEST_DIR/simple-code39.pdf" simple-code39-mac.pdf
|
||||
echo "-----------------------------------"
|
||||
#
|
||||
# TODO: Create text-based rendering tests using fonts available on MacOS
|
||||
#
|
||||
|
||||
- name: Upload render tests for manual inspection
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: render-tests-${{ matrix.os }}-${{ matrix.cpp_compiler }}-${{ github.run_number }}
|
||||
path: ${{ steps.strings.outputs.build-output-dir }}/*.pdf
|
||||
|
||||
|
||||
# - name: Tmate
|
||||
# uses: mxschmitt/action-tmate@v3
|
||||
|
||||
@@ -10,7 +10,7 @@ set (glabels-batch_sources
|
||||
#=====================================
|
||||
# Target
|
||||
#=====================================
|
||||
add_executable (glabels-batch-qt WIN32
|
||||
add_executable (glabels-batch-qt
|
||||
${glabels-batch_sources}
|
||||
)
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
#include <QLocale>
|
||||
#include <QPrinter>
|
||||
#include <QPrinterInfo>
|
||||
#include <QTextStream>
|
||||
#include <QTranslator>
|
||||
|
||||
|
||||
@@ -151,7 +152,7 @@ int main( int argc, char **argv )
|
||||
// Handle verbose version option
|
||||
if ( parser.isSet( "Version" ) )
|
||||
{
|
||||
qInfo().noquote() << glabels::model::Version::details();
|
||||
QTextStream(stdout) << glabels::model::Version::details() << Qt::endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -35,6 +35,7 @@
|
||||
#include <QIcon>
|
||||
#include <QLibraryInfo>
|
||||
#include <QLocale>
|
||||
#include <QTextStream>
|
||||
#include <QTranslator>
|
||||
|
||||
|
||||
@@ -92,7 +93,7 @@ int main( int argc, char **argv )
|
||||
// Handle verbose version option
|
||||
if ( parser.isSet( "Version" ) )
|
||||
{
|
||||
qInfo().noquote() << glabels::model::Version::details();
|
||||
QTextStream(stdout) << glabels::model::Version::details() << Qt::endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,11 +24,31 @@
|
||||
#include "Size.h"
|
||||
|
||||
#include <QBrush>
|
||||
#include <QDebug>
|
||||
#include <QPen>
|
||||
#include <QTextDocument>
|
||||
#include <QTextBlock>
|
||||
#include <QRegularExpression>
|
||||
#include <QtDebug>
|
||||
|
||||
|
||||
//
|
||||
// Private
|
||||
//
|
||||
namespace
|
||||
{
|
||||
///
|
||||
/// Calculate pixel size
|
||||
///
|
||||
/// Assume a virtual DPI of 96 pixels/inch for all QPainter contexts.
|
||||
/// Ideally, we should use pointSizes for device independence, but as
|
||||
/// Qt-6.4 on X11, Wayland, and MacOS this approach has better results.
|
||||
///
|
||||
int pixelSize( double pointSize )
|
||||
{
|
||||
const double virtual_dpi = 96;
|
||||
return qMax( 1, qRound( pointSize * virtual_dpi/72.0 ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
namespace glabels
|
||||
@@ -467,7 +487,7 @@ namespace glabels
|
||||
{
|
||||
QFont font;
|
||||
font.setFamily( mFontFamily );
|
||||
font.setPointSizeF( mFontSize );
|
||||
font.setPixelSize( pixelSize( mFontSize ) );
|
||||
font.setWeight( mFontWeight );
|
||||
font.setItalic( mFontItalicFlag );
|
||||
font.setUnderline( mFontUnderlineFlag );
|
||||
@@ -591,7 +611,7 @@ namespace glabels
|
||||
{
|
||||
QFont font;
|
||||
font.setFamily( mFontFamily );
|
||||
font.setPointSizeF( mFontSize );
|
||||
font.setPixelSize( pixelSize( mFontSize ) );
|
||||
font.setWeight( mFontWeight );
|
||||
font.setItalic( mFontItalicFlag );
|
||||
font.setUnderline( mFontUnderlineFlag );
|
||||
@@ -712,7 +732,7 @@ namespace glabels
|
||||
|
||||
QFont font;
|
||||
font.setFamily( mFontFamily );
|
||||
font.setPointSizeF( mTextAutoShrink ? autoShrinkFontSize( record, variables ) : mFontSize );
|
||||
font.setPixelSize( pixelSize( mTextAutoShrink ? autoShrinkFontSize( record, variables ) : mFontSize ) );
|
||||
font.setWeight( mFontWeight );
|
||||
font.setItalic( mFontItalicFlag );
|
||||
font.setUnderline( mFontUnderlineFlag );
|
||||
@@ -816,7 +836,7 @@ namespace glabels
|
||||
double candidateSize = mFontSize;
|
||||
while ( candidateSize > 1.0 )
|
||||
{
|
||||
font.setPointSizeF( candidateSize );
|
||||
font.setPixelSize( pixelSize( candidateSize ) );
|
||||
|
||||
// Line spacing is affected by font size
|
||||
QFontMetricsF fontMetrics( font );
|
||||
@@ -860,6 +880,5 @@ namespace glabels
|
||||
return candidateSize;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0"?>
|
||||
<Glabels-document version="4.0">
|
||||
<Template size="US-Letter" part="5395" description="Name badge labels" brand="Avery">
|
||||
<Label-rectangle id="0" y_waste="4.5pt" round="13.5pt" width="243pt" x_waste="4.5pt" height="168pt">
|
||||
<Markup-margin size="4.5pt"/>
|
||||
<Layout dx="270pt" ny="4" dy="180pt" nx="2" y0="42pt" x0="49.5pt"/>
|
||||
</Label-rectangle>
|
||||
</Template>
|
||||
<Objects rotate="false" id="0">
|
||||
<Object-barcode x="6.75pt" h="32.805pt" text="false" color="0xff" a2="0" a1="0" a5="0" y="67.5975pt" a4="0" w="229.5pt" a3="1" checksum="true" lock_aspect_ratio="false" a0="1" data="ABC 123" backend="" style="code39"/>
|
||||
</Objects>
|
||||
<Data/>
|
||||
</Glabels-document>
|
||||
Binary file not shown.
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0"?>
|
||||
<Glabels-document version="4.0">
|
||||
<Template brand="Avery" description="Name badge labels" part="5095" size="US-Letter">
|
||||
<Label-rectangle y_waste="4.5pt" height="168pt" id="0" round="13.5pt" width="243pt" x_waste="4.5pt">
|
||||
<Markup-margin size="4.5pt"/>
|
||||
<Layout dy="180pt" y0="42pt" nx="2" x0="49.5pt" ny="4" dx="270pt"/>
|
||||
</Label-rectangle>
|
||||
</Template>
|
||||
<Objects id="0" rotate="false">
|
||||
<Object-box line_width="1pt" a2="0" w="72pt" a1="0" shadow_x="1.3pt" x="18pt" shadow_y="1.3pt" h="72pt" line_color="0xff" shadow="false" a3="1" shadow_opacity="0.5" a4="0" a5="0" lock_aspect_ratio="false" y="45pt" fill_color="0xff00ff" shadow_color="0xff" a0="1"/>
|
||||
<Object-ellipse line_width="1pt" a2="0" w="72pt" a1="0" shadow_x="1.3pt" x="108pt" shadow_y="1.3pt" h="72pt" line_color="0xff" shadow="false" a3="1" shadow_opacity="0.5" a4="0" a5="0" lock_aspect_ratio="false" y="45pt" fill_color="0xff00ff" shadow_color="0xff" a0="1"/>
|
||||
<Object-line dy="-9.59164e-17pt" line_width="1pt" a2="0" a1="0" shadow_x="1.3pt" x="18pt" shadow_y="1.3pt" line_color="0xff" shadow="false" a3="1" shadow_opacity="0.5" a4="0" a5="0" y="135pt" dx="198pt" shadow_color="0xff" a0="1"/>
|
||||
</Objects>
|
||||
<Data/>
|
||||
</Glabels-document>
|
||||
Binary file not shown.
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0"?>
|
||||
<Glabels-document version="4.0">
|
||||
<Template height="254.636pt" roll_width="90.7087pt" brand="Brother" description="Address labels" size="roll" width="82.0913pt" part="DK-1201">
|
||||
<Label-rectangle id="0" round="4.25197pt" height="254.636pt" y_waste="0pt" x_waste="0pt" width="82.0913pt">
|
||||
<Markup-margin y_size="8.50394pt" x_size="4.25197pt"/>
|
||||
<Layout y0="0pt" dy="0pt" x0="0pt" ny="1" dx="0pt" nx="1"/>
|
||||
</Label-rectangle>
|
||||
</Template>
|
||||
<Objects id="0" rotate="true">
|
||||
<Object-text font_underline="false" shadow="false" align="left" a5="0" a0="1" shadow_opacity="0.5" w="124pt" h="25pt" shadow_color="0xff" lock_aspect_ratio="false" a2="0" shadow_x="1.3pt" shadow_y="1.3pt" font_size="10" wrap="word" font_weight="normal" a1="0" a3="1" color="0xff" valign="top" x="18pt" a4="0" font_family="Liberation Sans" line_spacing="1" font_italic="false" auto_shrink="false" y="10pt">
|
||||
<p>Liberation Sans 10</p>
|
||||
</Object-text>
|
||||
<Object-text font_underline="false" shadow="false" align="left" a5="0" a0="1" shadow_opacity="0.5" w="219pt" h="36pt" shadow_color="0xff" lock_aspect_ratio="false" a2="0" shadow_x="1.3pt" shadow_y="1.3pt" font_size="12" wrap="word" font_weight="bold" a1="0" a3="1" color="0xff" valign="top" x="18pt" a4="0" font_family="Liberation Sans" line_spacing="1" font_italic="false" auto_shrink="false" y="27pt">
|
||||
<p>Liberation Sans 12 Bold</p>
|
||||
</Object-text>
|
||||
<Object-text font_underline="false" shadow="false" align="left" a5="0" a0="1" shadow_opacity="0.5" w="219pt" h="36pt" shadow_color="0xff" lock_aspect_ratio="false" a2="0" shadow_x="1.3pt" shadow_y="1.3pt" font_size="14" wrap="word" font_weight="normal" a1="0" a3="1" color="0xff" valign="top" x="18pt" a4="0" font_family="Liberation Sans" line_spacing="1" font_italic="true" auto_shrink="false" y="48pt">
|
||||
<p>Liberation Sans 14 Italic</p>
|
||||
</Object-text>
|
||||
</Objects>
|
||||
<Data/>
|
||||
</Glabels-document>
|
||||
Binary file not shown.
@@ -0,0 +1,72 @@
|
||||
<?xml version="1.0"?>
|
||||
<Glabels-document version="4.0">
|
||||
<Template size="US-Letter" description="Full-page labels" brand="Avery" part="3114">
|
||||
<Label-rectangle height="792pt" y_waste="0pt" id="0" round="0pt" x_waste="0pt" width="612pt">
|
||||
<Markup-margin size="4.5pt"/>
|
||||
<Layout nx="1" dy="0pt" dx="0pt" ny="1" y0="0pt" x0="0pt"/>
|
||||
</Label-rectangle>
|
||||
</Template>
|
||||
<Objects id="0" rotate="false">
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="10" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="98pt" lock_aspect_ratio="false" a0="1" w="146pt" h="22pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 10</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="12" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="120pt" lock_aspect_ratio="false" a0="1" w="146pt" h="22pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 12</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="14" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="147pt" lock_aspect_ratio="false" a0="1" w="180pt" h="22pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 14</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="20" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="174pt" lock_aspect_ratio="false" a0="1" w="239pt" h="38pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 20</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="24" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="210pt" lock_aspect_ratio="false" a0="1" w="254pt" h="43pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 24</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="bold" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="10" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="255pt" lock_aspect_ratio="false" a0="1" w="146pt" h="22pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 10</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="bold" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="12" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="277pt" lock_aspect_ratio="false" a0="1" w="146pt" h="22pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 12</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="bold" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="14" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="304pt" lock_aspect_ratio="false" a0="1" w="180pt" h="22pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 14</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="bold" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="20" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="331pt" lock_aspect_ratio="false" a0="1" w="239pt" h="38pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 20</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="bold" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="24" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="367pt" lock_aspect_ratio="false" a0="1" w="287pt" h="43pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 24</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="10" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="408pt" lock_aspect_ratio="false" a0="1" w="146pt" h="22pt" font_italic="true" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 10</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="12" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="430pt" lock_aspect_ratio="false" a0="1" w="146pt" h="22pt" font_italic="true" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 12</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="14" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="457pt" lock_aspect_ratio="false" a0="1" w="180pt" h="22pt" font_italic="true" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 14</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="20" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="484pt" lock_aspect_ratio="false" a0="1" w="239pt" h="38pt" font_italic="true" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 20</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="false" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="24" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="520pt" lock_aspect_ratio="false" a0="1" w="254pt" h="43pt" font_italic="true" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 24</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="true" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="10" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="561pt" lock_aspect_ratio="false" a0="1" w="146pt" h="22pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 10</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="true" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="12" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="583pt" lock_aspect_ratio="false" a0="1" w="146pt" h="22pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 12</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="true" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="20" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="637pt" lock_aspect_ratio="false" a0="1" w="239pt" h="38pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 20</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="true" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="24" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="673pt" lock_aspect_ratio="false" a0="1" w="254pt" h="43pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 24</p>
|
||||
</Object-text>
|
||||
<Object-text wrap="word" a3="1" shadow_color="0xff" font_weight="normal" a4="0" shadow="false" font_underline="true" line_spacing="1" a5="0" auto_shrink="false" shadow_opacity="0.5" font_size="14" align="left" a1="0" font_family="Liberation Serif" color="0xff" shadow_x="1.3pt" valign="top" y="610pt" lock_aspect_ratio="false" a0="1" w="180pt" h="22pt" font_italic="false" shadow_y="1.3pt" x="183pt" a2="0">
|
||||
<p>Liberation Serif 14</p>
|
||||
</Object-text>
|
||||
</Objects>
|
||||
<Data/>
|
||||
</Glabels-document>
|
||||
Binary file not shown.
Reference in New Issue
Block a user