diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 8828eac4d..000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,17 +0,0 @@ -## Issue or Feature -- [ ] If this is an issue with installation, I have read the [troubleshooting guide](https://github.com/Automattic/node-canvas/issues/1511). - - - -## Steps to Reproduce - -```js -var Canvas = require('canvas'); -var canvas = Canvas.createCanvas(200, 200); -var ctx = canvas.getContext('2d'); -// etc. -``` - -## Your Environment -* Version of node-canvas (output of `npm list canvas` or `yarn list canvas`): -* Environment (e.g. node 4.2.0 on Mac OS X 10.8): diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index c308e167e..000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,3 +0,0 @@ -Thanks for contributing! - -- [ ] Have you updated CHANGELOG.md? diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..8c46688cb --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,215 @@ +name: Build +on: [push] + +env: + DEBUG: "napi:*" + MACOSX_DEPLOYMENT_TARGET: "10.13" + +jobs: + build: + strategy: + fail-fast: false + matrix: + targets: + [ + "x86_64-apple-darwin", + "aarch64-apple-darwin", + "x86_64-pc-windows-msvc", + "i686-pc-windows-msvc", + "aarch64-pc-windows-msvc", + "x86_64-unknown-linux-gnu", + "aarch64-unknown-linux-gnu", + "x86_64-unknown-linux-musl", + "aarch64-unknown-linux-musl", + "armv7-unknown-linux-gnueabihf", + "aarch64-linux-android", + "armv7-linux-androideabi", + ] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Install + uses: dtolnay/rust-toolchain@stable + with: + toolchain: stable + targets: ${{ matrix.targets }} + + - uses: actions/setup-node@v4 + with: + node-version: "18" + + - uses: pnpm/action-setup@v2 + name: Install pnpm + with: + version: 8 + run_install: false + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install ziglang + uses: goto-bus-stop/setup-zig@v1 + with: + version: 0.11.0 + + - run: cargo install cargo-xwin + - run: pnpm install + - run: pnpm run gen-packages + - run: pnpm run build --target ${{ matrix.targets }} + - run: pnpm run postbuild + + - uses: actions/upload-artifact@v3 + with: + name: bindings-${{ matrix.targets }} + path: "*.node" + if-no-files-found: error + + test-host: + strategy: + fail-fast: false + matrix: + settings: + - target: x86_64-apple-darwin + host: macos-latest + - target: x86_64-pc-windows-msvc + host: windows-latest + - target: i686-pc-windows-msvc + host: windows-latest + node: ["18", "20"] + runs-on: ${{ matrix.settings.host }} + needs: + - build + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node }} + + - uses: pnpm/action-setup@v2 + name: Install pnpm + with: + version: 8 + run_install: false + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Setup node x86 + if: matrix.settings.target == 'i686-pc-windows-msvc' + run: pnpm config set cpu "ia32" + shell: bash + + - name: Install dependencies + run: pnpm install + + - name: Setup node x86 + uses: actions/setup-node@v4 + if: matrix.settings.target == 'i686-pc-windows-msvc' + with: + node-version: 18 + cache: pnpm + architecture: x86 + + - name: Download bindings + uses: actions/download-artifact@v3 + with: + name: bindings-${{ matrix.settings.target }} + + - name: Run tests + run: pnpm test + + test-docker: + strategy: + fail-fast: false + matrix: + settings: + - target: x86_64-unknown-linux-gnu + docker: node:18-slim + args: "" + - target: aarch64-unknown-linux-gnu + docker: node:18-slim + args: "--platform linux/arm64" + - target: x86_64-unknown-linux-musl + docker: node:18-alpine + args: "" + - target: aarch64-unknown-linux-musl + docker: node:18-alpine + args: "--platform linux/arm64" + - target: armv7-unknown-linux-gnueabihf + docker: node:18-bullseye-slim + args: "--platform linux/arm/v7" + + runs-on: ubuntu-latest + needs: + - build + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 18 + + - uses: pnpm/action-setup@v2 + name: Install pnpm + with: + version: 8 + run_install: false + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: pnpm install + + - name: Download bindings + uses: actions/download-artifact@v3 + with: + name: bindings-${{ matrix.settings.target }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: arm64,arm + + - run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + + - name: Run tests + uses: addnab/docker-run-action@v3 + with: + image: ${{ matrix.settings.docker }} + options: ${{ matrix.settings.args }} -v ${{ github.workspace }}:/build -w /build + run: | + set -e + pnpm test diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index c21812da6..000000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,89 +0,0 @@ -name: Test -on: - push: - paths-ignore: - - ".github/workflows/prebuild.yaml" - pull_request: - paths-ignore: - - ".github/workflows/prebuild.yaml" - -jobs: - Linux: - name: Test on Linux - runs-on: ubuntu-latest - strategy: - matrix: - node: [10, 12, 14, 16, 18, 20] - steps: - - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node }} - - uses: actions/checkout@v3 - - name: Install Dependencies - run: | - sudo apt update - sudo apt install -y libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev librsvg2-dev - - name: Install - run: npm install --build-from-source - - name: Test - run: npm test - - Windows: - name: Test on Windows - runs-on: windows-2019 - strategy: - matrix: - node: [10, 12, 14, 16, 18, 20] - steps: - - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node }} - - uses: actions/checkout@v3 - - name: Install Dependencies - run: | - Invoke-WebRequest "https://ftp-osl.osuosl.org/pub/gnome/binaries/win64/gtk+/2.22/gtk+-bundle_2.22.1-20101229_win64.zip" -OutFile "gtk.zip" - Expand-Archive gtk.zip -DestinationPath "C:\GTK" - Invoke-WebRequest "https://downloads.sourceforge.net/project/libjpeg-turbo/2.0.4/libjpeg-turbo-2.0.4-vc64.exe" -OutFile "libjpeg.exe" -UserAgent NativeHost - .\libjpeg.exe /S - npm install -g node-gyp@8 - npm prefix -g | % {npm config set node_gyp "$_\node_modules\node-gyp\bin\node-gyp.js"} - - name: Install - run: npm install --build-from-source - - name: Test - run: npm test - - macOS: - name: Test on macOS - runs-on: macos-latest - strategy: - matrix: - node: [10, 12, 14, 16, 18, 20] - steps: - - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node }} - - uses: actions/checkout@v3 - - name: Install Dependencies - run: | - brew update - brew install python3 || : # python doesn't need to be linked - brew install pkg-config cairo pango libpng jpeg giflib librsvg - - name: Install - run: npm install --build-from-source - - name: Test - run: npm test - - Lint: - name: Lint - runs-on: ubuntu-latest - steps: - - uses: actions/setup-node@v3 - with: - node-version: 14 - - uses: actions/checkout@v3 - - name: Install - run: npm install --ignore-scripts - - name: Lint - run: npm run lint - - name: Lint Types - run: npm run dtslint diff --git a/.github/workflows/prebuild.yaml b/.github/workflows/prebuild.yaml deleted file mode 100644 index 784069e06..000000000 --- a/.github/workflows/prebuild.yaml +++ /dev/null @@ -1,236 +0,0 @@ -# Triggering prebuilds: -# 1. Create a draft release manually using the GitHub UI. -# 2. Set the `jobs.*.strategy.matrix.node` arrays to the set of Node.js versions -# to build for. -# 3. Set the `jobs.*.strategy.matrix.canvas_tag` arrays to the set of Canvas -# tags to build. (Usually this is a single tag, but can be an array when a -# new version of Node.js is released and older versions of Canvas need to be -# built.) -# 4. Commit and push this file to master. -# 5. In the Actions tab, navigate to the "Make Prebuilds" workflow and click -# "Run workflow". -# 6. Once the builds succeed, promote the draft release to a full release. - -name: Make Prebuilds -on: workflow_dispatch - -# UPLOAD_TO can be specified to upload the release assets under a different tag -# name (e.g. for testing). If omitted, the assets are published under the same -# release tag as the canvas version being built. -# env: -# UPLOAD_TO: "v0.0.1" - -jobs: - Linux: - strategy: - matrix: - node: [8, 9, 10, 11, 12, 13, 14, 16, 18, 20] - canvas_tag: [] # e.g. "v2.6.1" - name: ${{ matrix.canvas_tag}}, Node.js ${{ matrix.node }}, Linux - runs-on: ubuntu-latest - container: - image: chearon/canvas-prebuilt:7 - env: - CANVAS_VERSION_TO_BUILD: ${{ matrix.canvas_tag }} - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ matrix.canvas_tag }} - - - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node }} - - - name: Build - run: | - npm install -g node-gyp - npm install --ignore-scripts - . prebuild/Linux/preinstall.sh - cp prebuild/Linux/binding.gyp binding.gyp - node-gyp rebuild -j 2 - . prebuild/Linux/bundle.sh - - - name: Test binary - run: | - cd /root/harfbuzz-* && make uninstall - cd /root/cairo-* && make uninstall - cd /root/pango-* && make uninstall - cd /root/libpng-* && make uninstall - cd /root/libjpeg-* && make uninstall - cd /root/giflib-* && make uninstall - cd $GITHUB_WORKSPACE && npm test - - - name: Make bundle - id: make_bundle - run: . prebuild/tarball.sh - - - name: Upload - uses: actions/github-script@0.9.0 - with: - script: | - const fs = require("fs"); - const assetName = "${{ steps.make_bundle.outputs.asset_name }}"; - const tagName = process.env.UPLOAD_TO || process.env.CANVAS_VERSION_TO_BUILD; - const [owner, repo] = process.env.GITHUB_REPOSITORY.split("/"); - - const releases = await github.repos.listReleases({owner, repo}); - const release = releases.data.find(r => r.tag_name === tagName); - if (!release) - throw new Error(`Tag ${tagName} not found. Did you make the GitHub release?`); - - const oldAsset = release.assets.find(a => a.name === assetName); - if (oldAsset) - await github.repos.deleteReleaseAsset({owner, repo, asset_id: oldAsset.id}); - - // (This is equivalent to actions/upload-release-asset. We're - // already in a script, so might as well do it here.) - const r = await github.repos.uploadReleaseAsset({ - url: release.upload_url, - headers: { - "content-type": "application/x-gzip", - "content-length": `${fs.statSync(assetName).size}` - }, - name: assetName, - data: fs.readFileSync(assetName) - }); - - macOS: - strategy: - matrix: - node: [8, 9, 10, 11, 12, 13, 14, 16, 18, 20] - canvas_tag: [] # e.g. "v2.6.1" - name: ${{ matrix.canvas_tag}}, Node.js ${{ matrix.node }}, macOS - runs-on: macos-latest - env: - CANVAS_VERSION_TO_BUILD: ${{ matrix.canvas_tag }} - steps: - - uses: actions/checkout@v2 - with: - ref: ${{ matrix.canvas_tag }} - - - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node }} - - - name: Build - run: | - npm install -g node-gyp - npm install --ignore-scripts - . prebuild/macOS/preinstall.sh - cp prebuild/macOS/binding.gyp binding.gyp - node-gyp rebuild -j 2 - . prebuild/macOS/bundle.sh - - - name: Test binary - run: | - brew uninstall --force cairo pango librsvg giflib harfbuzz - npm test - - - name: Make bundle - id: make_bundle - run: . prebuild/tarball.sh - - - name: Upload - uses: actions/github-script@0.9.0 - with: - script: | - const fs = require("fs"); - const assetName = "${{ steps.make_bundle.outputs.asset_name }}"; - const tagName = process.env.UPLOAD_TO || process.env.CANVAS_VERSION_TO_BUILD; - const [owner, repo] = process.env.GITHUB_REPOSITORY.split("/"); - - const releases = await github.repos.listReleases({owner, repo}); - const release = releases.data.find(r => r.tag_name === tagName); - if (!release) - throw new Error(`Tag ${tagName} not found. Did you make the GitHub release?`); - - const oldAsset = release.assets.find(a => a.name === assetName); - if (oldAsset) - await github.repos.deleteReleaseAsset({owner, repo, asset_id: oldAsset.id}); - - // (This is equivalent to actions/upload-release-asset. We're - // already in a script, so might as well do it here.) - const r = await github.repos.uploadReleaseAsset({ - url: release.upload_url, - headers: { - "content-type": "application/x-gzip", - "content-length": `${fs.statSync(assetName).size}` - }, - name: assetName, - data: fs.readFileSync(assetName) - }); - - Win: - strategy: - matrix: - node: [8, 9, 10, 11, 12, 13, 14, 16, 18, 20] - canvas_tag: [] # e.g. "v2.6.1" - name: ${{ matrix.canvas_tag}}, Node.js ${{ matrix.node }}, Windows - runs-on: windows-latest - env: - CANVAS_VERSION_TO_BUILD: ${{ matrix.canvas_tag }} - steps: - # TODO drop when https://github.com/actions/virtual-environments/pull/632 lands - - uses: numworks/setup-msys2@v1 - with: - update: true - path-type: inherit - - - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node }} - - - uses: actions/checkout@v2 - with: - ref: ${{ matrix.canvas_tag }} - - - name: Build - run: | - npm install -g node-gyp - npm install --ignore-scripts - msys2do . prebuild/Windows/preinstall.sh - msys2do cp prebuild/Windows/binding.gyp binding.gyp - msys2do node-gyp configure - msys2do node-gyp rebuild -j 2 - - - name: Bundle - run: msys2do . prebuild/Windows/bundle.sh - - - name: Test binary - # By not running in msys2, this doesn't have access to the msys2 libs - run: npm test - - - name: Make asset - id: make_bundle - # I can't figure out why this isn't an env var already. It shows up with `env`. - run: msys2do UPLOAD_TO=${{ env.UPLOAD_TO }} CANVAS_VERSION_TO_BUILD=${{ env.CANVAS_VERSION_TO_BUILD}} . prebuild/tarball.sh - - - name: Upload - uses: actions/github-script@0.9.0 - with: - script: | - const fs = require("fs"); - const assetName = "${{ steps.make_bundle.outputs.asset_name }}"; - const tagName = process.env.UPLOAD_TO || process.env.CANVAS_VERSION_TO_BUILD; - const [owner, repo] = process.env.GITHUB_REPOSITORY.split("/"); - - const releases = await github.repos.listReleases({owner, repo}); - const release = releases.data.find(r => r.tag_name === tagName); - if (!release) - throw new Error(`Tag ${tagName} not found. Did you make the GitHub release?`); - - const oldAsset = release.assets.find(a => a.name === assetName); - if (oldAsset) - await github.repos.deleteReleaseAsset({owner, repo, asset_id: oldAsset.id}); - - // (This is equivalent to actions/upload-release-asset. We're - // already in a script, so might as well do it here.) - const r = await github.repos.uploadReleaseAsset({ - url: release.upload_url, - headers: { - "content-type": "application/x-gzip", - "content-length": `${fs.statSync(assetName).size}` - }, - name: assetName, - data: fs.readFileSync(assetName) - }); diff --git a/.gitignore b/.gitignore index ff66b1103..8de10083c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,20 +1,7 @@ -build -.DS_Store -.lock-wscript -test/images/*.png -examples/*.png -examples/*.jpg -testing -out.png -out.pdf -out.svg -.pomo +target node_modules -package-lock.json - -# Vim cruft -*.swp -*.un~ -npm-debug.log - -.idea +pkg +dist +*.node +packages/* +!packages/.gitkeep diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..31b206571 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,9 @@ +node_modules +pnpm-lock.yaml +*.md +dist +pkg +build +docs +/index.js +/index.d.ts diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000..3d0a90b8b --- /dev/null +++ b/.prettierrc @@ -0,0 +1,9 @@ +{ + "bracketSpacing": true, + "endOfLine": "lf", + "jsxSingleQuote": false, + "semi": true, + "singleQuote": false, + "tabWidth": 4, + "trailingComma": "es5" +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..50e99b63e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "rust-analyzer.showUnlinkedFileNotification": false, + "rust-analyzer.procMacro.ignored": { "napi-derive": ["napi"] } +} diff --git a/CHANGELOG.md b/CHANGELOG.md index e0768f8c3..e1cfad5d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,1058 +5,1056 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). -(Unreleased) -================== +# (Unreleased) + ### Changed -* Defer the initialization of the `op` variable to the `default` switch case to avoid a compiler warning. (#2229) -* Use a `default` switch case with a null statement if some enum values aren't suppsed to be handled, this avoids a compiler warning. (#2229) -* Migrate from librsvg's deprecated `rsvg_handle_get_dimensions()` and `rsvg_handle_render_cairo()` functions to the new `rsvg_handle_get_intrinsic_size_in_pixels()` and `rsvg_handle_render_document()` respectively. (#2229) -* Avoid calling virtual methods in constructors/destructors to avoid bypassing virtual dispatch. (#2229) -* Remove unused private field `backend` in the `Backend` class. (#2229) -* Add Node.js v20 to CI. (#2237) + ### Added -* Added string tags to support class detection + ### Fixed -* Fix a case of use-after-free. (#2229) -* Fix usage of garbage value by filling the allocated memory entirely with zeros if it's not modified. (#2229) -* Fix a potential memory leak. (#2229) -2.11.2 -================== +- fix the wrong type of setTransform + + # 3.0.0 + +This release notably changes to using N-API. 🎉 + +### Breaking + +- Dropped support for Node.js 16.x and below. + +### Changed + +- Migrated to N-API (by way of node-addon-api) and removed libuv and v8 dependencies +- Defer the initialization of the `op` variable to the `default` switch case to avoid a compiler warning. (#2229) +- Use a `default` switch case with a null statement if some enum values aren't suppsed to be handled, this avoids a compiler warning. (#2229) +- Migrate from librsvg's deprecated `rsvg_handle_get_dimensions()` and `rsvg_handle_render_cairo()` functions to the new `rsvg_handle_get_intrinsic_size_in_pixels()` and `rsvg_handle_render_document()` respectively. (#2229) +- Avoid calling virtual methods in constructors/destructors to avoid bypassing virtual dispatch. (#2229) +- Remove unused private field `backend` in the `Backend` class. (#2229) +- Add Node.js v20 to CI. (#2237) +- Replaced `dtslint` with `tsd` (#2313) + +### Added + +- Added string tags to support class detection + ### Fixed -* Building on Windows in CI (and maybe other Windows configurations?) (#2216) -2.11.1 -================== +- Fix a case of use-after-free. (#2229) +- Fix usage of garbage value by filling the allocated memory entirely with zeros if it's not modified. (#2229) +- Fix a potential memory leak. (#2229) + + # 2.11.2 + ### Fixed -* Add missing property `canvas` to the `CanvasRenderingContext2D` type -* Fixed glyph positions getting rounded, resulting text having a slight `letter-spacing` effect -* Fixed `ctx.font` not being restored correctly after `ctx.restore()` (#1946) -2.11.0 -================== +- Building on Windows in CI (and maybe other Windows configurations?) (#2216) + + # 2.11.1 + ### Fixed -* Replace triple-slash directive in types with own types to avoid polluting TS modules with globals ([#1656](https://github.com/Automattic/node-canvas/issues/1656)) -2.10.2 -================== +- Add missing property `canvas` to the `CanvasRenderingContext2D` type +- Fixed glyph positions getting rounded, resulting text having a slight `letter-spacing` effect +- Fixed `ctx.font` not being restored correctly after `ctx.restore()` (#1946) + + # 2.11.0 + ### Fixed -* Fix `Assertion failed: (object->InternalFieldCount() > 0), function Unwrap, file nan_object_wrap.h, line 32.` ([#2025](https://github.com/Automattic/node-canvas/issues/2025)) -* `textBaseline` and `textAlign` were not saved/restored by `save()`/`restore()`. ([#1936](https://github.com/Automattic/node-canvas/issues/2029)) -* Update nan to v2.17.0 to ensure Node.js v18+ support. + +- Replace triple-slash directive in types with own types to avoid polluting TS modules with globals ([#1656](https://github.com/Automattic/node-canvas/issues/1656)) + + # 2.10.2 + +### Fixed + +- Fix `Assertion failed: (object->InternalFieldCount() > 0), function Unwrap, file nan_object_wrap.h, line 32.` ([#2025](https://github.com/Automattic/node-canvas/issues/2025)) +- `textBaseline` and `textAlign` were not saved/restored by `save()`/`restore()`. ([#1936](https://github.com/Automattic/node-canvas/issues/2029)) +- Update nan to v2.17.0 to ensure Node.js v18+ support. + ### Changed -* Improve performance and memory usage of `save()`/`restore()`. -* `save()`/`restore()` no longer have a maximum depth (previously 64 states). -2.10.1 -================== +- Improve performance and memory usage of `save()`/`restore()`. +- `save()`/`restore()` no longer have a maximum depth (previously 64 states). + + # 2.10.1 + ### Fixed -* Fix `actualBoundingBoxLeft` and `actualBoundingBoxRight` when `textAlign='center'` or `'right'` ([#1909](https://github.com/Automattic/node-canvas/issues/1909)) -* Fix `rgba(r,g,b,0)` with alpha to 0 should parse as transparent, not opaque. ([#2110](https://github.com/Automattic/node-canvas/pull/2110)) -2.10.0 -================== +- Fix `actualBoundingBoxLeft` and `actualBoundingBoxRight` when `textAlign='center'` or `'right'` ([#1909](https://github.com/Automattic/node-canvas/issues/1909)) +- Fix `rgba(r,g,b,0)` with alpha to 0 should parse as transparent, not opaque. ([#2110](https://github.com/Automattic/node-canvas/pull/2110)) + + # 2.10.0 + ### Added -* Export `pangoVersion` -* [`ctx.roundRect()`](https://developer.chrome.com/blog/canvas2d/#round-rect) + +- Export `pangoVersion` +- [`ctx.roundRect()`](https://developer.chrome.com/blog/canvas2d/#round-rect) + ### Fixed -* `rgba(r,g,b)` with no alpha should parse as opaque, not transparent. ([#2029](https://github.com/Automattic/node-canvas/issues/2029)) -* Typo in `PngConfig.filters` types. ([#2072](https://github.com/Automattic/node-canvas/issues/2072)) -* `createPattern()` always used "repeat" mode; now supports "repeat-x" and "repeat-y". ([#2066](https://github.com/Automattic/node-canvas/issues/2066)) -* Crashes and hangs when using non-finite values in `context.arc()`. ([#2055](https://github.com/Automattic/node-canvas/issues/2055)) -* Incorrect `context.arc()` geometry logic for full ellipses. ([#1808](https://github.com/Automattic/node-canvas/issues/1808), ([#1736](https://github.com/Automattic/node-canvas/issues/1736))) -* Added missing `deregisterAllFonts` to the Typescript declaration file ([#2096](https://github.com/Automattic/node-canvas/pull/2096)) -* Add `User-Agent` header when requesting remote images ([#2099](https://github.com/Automattic/node-canvas/issues/2099)) - -2.9.3 -================== + +- `rgba(r,g,b)` with no alpha should parse as opaque, not transparent. ([#2029](https://github.com/Automattic/node-canvas/issues/2029)) +- Typo in `PngConfig.filters` types. ([#2072](https://github.com/Automattic/node-canvas/issues/2072)) +- `createPattern()` always used "repeat" mode; now supports "repeat-x" and "repeat-y". ([#2066](https://github.com/Automattic/node-canvas/issues/2066)) +- Crashes and hangs when using non-finite values in `context.arc()`. ([#2055](https://github.com/Automattic/node-canvas/issues/2055)) +- Incorrect `context.arc()` geometry logic for full ellipses. ([#1808](https://github.com/Automattic/node-canvas/issues/1808), ([#1736](https://github.com/Automattic/node-canvas/issues/1736))) +- Added missing `deregisterAllFonts` to the Typescript declaration file ([#2096](https://github.com/Automattic/node-canvas/pull/2096)) +- Add `User-Agent` header when requesting remote images ([#2099](https://github.com/Automattic/node-canvas/issues/2099)) + + # 2.9.3 + ### Fixed -* Wrong fonts used when calling `registerFont` multiple times with the same family name ([#2041](https://github.com/Automattic/node-canvas/issues/2041)) -2.9.2 -================== +- Wrong fonts used when calling `registerFont` multiple times with the same family name ([#2041](https://github.com/Automattic/node-canvas/issues/2041)) + + # 2.9.2 + ### Fixed -* All exports now work when Canvas is used in ES Modules (ESM). ([#2047](https://github.com/Automattic/node-canvas/pull/2047)) -* `npm rebuild` will now re-fetch prebuilt binaries to avoid `NODE_MODULE_VERSION` mismatch errors. ([#1982](https://github.com/Automattic/node-canvas/pull/1982)) -2.9.1 -================== +- All exports now work when Canvas is used in ES Modules (ESM). ([#2047](https://github.com/Automattic/node-canvas/pull/2047)) +- `npm rebuild` will now re-fetch prebuilt binaries to avoid `NODE_MODULE_VERSION` mismatch errors. ([#1982](https://github.com/Automattic/node-canvas/pull/1982)) + + # 2.9.1 + ### Fixed -* Stringify CanvasGradient, CanvasPattern and ImageData like browsers do. (#1639, #1646) -* Add missing include for `toupper`. -* Throw an error instead of crashing the process if `getImageData` or `putImageData` is called on a PDF or SVG canvas (#1853) -* Compatibility with Typescript 4.6 -* Near-perfect font matching on Linux (#1572) -* Fix multi-byte font path support on Windows. -* Allow rebuild of this library - -2.9.0 -================== + +- Stringify CanvasGradient, CanvasPattern and ImageData like browsers do. (#1639, #1646) +- Add missing include for `toupper`. +- Throw an error instead of crashing the process if `getImageData` or `putImageData` is called on a PDF or SVG canvas (#1853) +- Compatibility with Typescript 4.6 +- Near-perfect font matching on Linux (#1572) +- Fix multi-byte font path support on Windows. +- Allow rebuild of this library + + # 2.9.0 + ### Changed -* Refactor functions to classes. -* Changed `DOMPoint()` constructor to check for parameter nullability. -* Changed `DOMMatrix.js` to use string literals for non-special cases. -* Remove semicolons from Dommatrix.js. -* Update nan to v2.15.0 to ensure Node.js v14+ support. -* Clean up inf/nan macros and slightly speed up argument checking. + +- Refactor functions to classes. +- Changed `DOMPoint()` constructor to check for parameter nullability. +- Changed `DOMMatrix.js` to use string literals for non-special cases. +- Remove semicolons from Dommatrix.js. +- Update nan to v2.15.0 to ensure Node.js v14+ support. +- Clean up inf/nan macros and slightly speed up argument checking. + ### Added -* Added `deregisterAllFonts` method to free up memory and reduce font conflicts. + +- Added `deregisterAllFonts` method to free up memory and reduce font conflicts. + ### Fixed -* Support Apple M1 Homebrew install that puts canvas install library files in `/opt/homebrew/lib` -2.8.0 -================== +- Support Apple M1 Homebrew install that puts canvas install library files in `/opt/homebrew/lib` + + # 2.8.0 + ### Changed -* Upgrade dtslint -* Upgrade node-pre-gyp to 1.0.0. Note that if you are using special node-pre-gyp - features like `node_pre_gyp_accessKeyId`, you may need to make changes to your - installation procedure. See https://github.com/mapbox/node-pre-gyp/blob/master/CHANGELOG.md#100. -* Add Node.js v16 to CI. -* The C++ class method `nBytes()` now returns a size_t. (Because this is a C++ - method only, this is not considered a breaking change.) + +- Upgrade dtslint +- Upgrade node-pre-gyp to 1.0.0. Note that if you are using special node-pre-gyp + features like `node_pre_gyp_accessKeyId`, you may need to make changes to your + installation procedure. See https://github.com/mapbox/node-pre-gyp/blob/master/CHANGELOG.md#100. +- Add Node.js v16 to CI. +- The C++ class method `nBytes()` now returns a size_t. (Because this is a C++ + method only, this is not considered a breaking change.) + ### Added -* Add support for `inverse()` and `invertSelf()` to `DOMMatrix` (#1648) -* Add support for `context.getTransform()` ([#1769](https://github.com/Automattic/node-canvas/pull/1769)) -* Add support for `context.setTransform(dommatrix)` ([#1769](https://github.com/Automattic/node-canvas/pull/1769)) + +- Add support for `inverse()` and `invertSelf()` to `DOMMatrix` (#1648) +- Add support for `context.getTransform()` ([#1769](https://github.com/Automattic/node-canvas/pull/1769)) +- Add support for `context.setTransform(dommatrix)` ([#1769](https://github.com/Automattic/node-canvas/pull/1769)) + ### Fixed -* Fix `actualBoundingBoxLeft` and `actualBoundingBoxRight` returned by `measureText` to be the ink rect ([#1776](https://github.com/Automattic/node-canvas/pull/1776), fixes [#1703](https://github.com/Automattic/node-canvas/issues/1703)). -* Fix Pango logging "expect ugly output" on Windows (#1643) -* Fix benchmark for createPNGStream (#1672) -* Fix dangling reference in BackendOperationNotAvailable exception (#1740) -* Fix always-false comparison warning in Canvas.cc. -* Fix Node.js crash when throwing from an onload or onerror handler. - -2.7.0 -================== + +- Fix `actualBoundingBoxLeft` and `actualBoundingBoxRight` returned by `measureText` to be the ink rect ([#1776](https://github.com/Automattic/node-canvas/pull/1776), fixes [#1703](https://github.com/Automattic/node-canvas/issues/1703)). +- Fix Pango logging "expect ugly output" on Windows (#1643) +- Fix benchmark for createPNGStream (#1672) +- Fix dangling reference in BackendOperationNotAvailable exception (#1740) +- Fix always-false comparison warning in Canvas.cc. +- Fix Node.js crash when throwing from an onload or onerror handler. + + # 2.7.0 + ### Changed -* Switch CI to Github Actions. (Adds Windows and macOS builds.) -* Switch prebuilds to GitHub actions in the Automattic/node-canvas repository. - Previously these were in the [node-gfx/node-canvas-prebuilt](https://github.com/node-gfx/node-canvas-prebuilt) - and triggered manually. -* Speed up `fillStyle=` and `strokeStyle=` + +- Switch CI to Github Actions. (Adds Windows and macOS builds.) +- Switch prebuilds to GitHub actions in the Automattic/node-canvas repository. + Previously these were in the [node-gfx/node-canvas-prebuilt](https://github.com/node-gfx/node-canvas-prebuilt) + and triggered manually. +- Speed up `fillStyle=` and `strokeStyle=` + ### Added -* Export `rsvgVersion`. -* CanvasPattern’s `setTransform` method is no longer missing + +- Export `rsvgVersion`. +- CanvasPattern’s `setTransform` method is no longer missing + ### Fixed -* Fix BMP issues. (#1497) -* Update typings to support jpg and addPage on NodeCanvasRenderingContext2D (#1509) -* Fix assertion failure when using Visual Studio Code debugger to inspect Image prototype (#1534) -* Fix signed/unsigned comparison warning introduced in 2.6.0, and function cast warnings with GCC8+ -* Fix to compile without JPEG support (#1593). -* Fix compile errors with cairo -* Fix Image#complete if the image failed to load. -* Upgrade node-pre-gyp to v0.15.0 to use latest version of needle to fix error when downloading prebuilds. -* Don't throw if `fillStyle` or `strokeStyle` is set to an object, but that object is not a Gradient or Pattern. (This behavior was non-standard: invalid inputs are supposed to be ignored.) - -2.6.1 -================== + +- Fix BMP issues. (#1497) +- Update typings to support jpg and addPage on NodeCanvasRenderingContext2D (#1509) +- Fix assertion failure when using Visual Studio Code debugger to inspect Image prototype (#1534) +- Fix signed/unsigned comparison warning introduced in 2.6.0, and function cast warnings with GCC8+ +- Fix to compile without JPEG support (#1593). +- Fix compile errors with cairo +- Fix Image#complete if the image failed to load. +- Upgrade node-pre-gyp to v0.15.0 to use latest version of needle to fix error when downloading prebuilds. +- Don't throw if `fillStyle` or `strokeStyle` is set to an object, but that object is not a Gradient or Pattern. (This behavior was non-standard: invalid inputs are supposed to be ignored.) + + # 2.6.1 + ### Fixed -* Ignore `maxWidth` in `fillText` and `strokeText` if it is undefined -* Fix crash (assertion failure) in Node.js 12.x when patterns or gradients are used -* Fix crash (check failure) in Node.js 12.x when using RGB16_565 format. (The - underlying arraybuffer was incorrectly sized.) -* Fix rendering error when applying shadow width line style (lineCap lineJoin lineDash) - -2.6.0 -================== + +- Ignore `maxWidth` in `fillText` and `strokeText` if it is undefined +- Fix crash (assertion failure) in Node.js 12.x when patterns or gradients are used +- Fix crash (check failure) in Node.js 12.x when using RGB16_565 format. (The + underlying arraybuffer was incorrectly sized.) +- Fix rendering error when applying shadow width line style (lineCap lineJoin lineDash) + + # 2.6.0 + ### Changed -* Allow larger buffers to be returned from `toBuffer('raw')`. + +- Allow larger buffers to be returned from `toBuffer('raw')`. + ### Added -* Support for various BMP headers and color depths (#1435) + +- Support for various BMP headers and color depths (#1435) + ### Fixed -* Fix crash when changing canvas width/height while `fillStyle` or `strokeStyle` - was set to a `CanvasPattern` or `CanvasGradient` (#1357). -* Fix crash when changing width/height of SVG canvases (#1380). -* Fix crash when using `toBuffer('raw')` with large canvases (#1158). -* Clarified meaning of byte ordering for `toBuffer('raw')` in readme. (#1416) -* Fix package.json Typings field to point to Declaration file (#1432) -* Properly check return value from `Set` and `Call`. (#1415) -* Use `Get` version from `Nan` instead of `v8`. (#1415) - -2.5.0 -================== + +- Fix crash when changing canvas width/height while `fillStyle` or `strokeStyle` + was set to a `CanvasPattern` or `CanvasGradient` (#1357). +- Fix crash when changing width/height of SVG canvases (#1380). +- Fix crash when using `toBuffer('raw')` with large canvases (#1158). +- Clarified meaning of byte ordering for `toBuffer('raw')` in readme. (#1416) +- Fix package.json Typings field to point to Declaration file (#1432) +- Properly check return value from `Set` and `Call`. (#1415) +- Use `Get` version from `Nan` instead of `v8`. (#1415) + + # 2.5.0 + ### Added -* Support redirects when fetching images (using [simple-get](https://github.com/feross/simple-get)) (#1398) -* Support Node.js v12 + +- Support redirects when fetching images (using [simple-get](https://github.com/feross/simple-get)) (#1398) +- Support Node.js v12 + ### Fixed -* Fix object literal & arrow function syntax usage for IE. -2.4.1 -================== +- Fix object literal & arrow function syntax usage for IE. + + # 2.4.1 + ### Fixed -* Guard JPEG width/height against maximum supported (#1385) -* Fix electron 5 and node 12 compatibility -* Fix encoding options (quality) parameter in `canvas.toDataURL()` -2.4.0 -================== +- Guard JPEG width/height against maximum supported (#1385) +- Fix electron 5 and node 12 compatibility +- Fix encoding options (quality) parameter in `canvas.toDataURL()` + + # 2.4.0 + ### Added -* (Actually) added `resolution` option for `canvas.toBuffer("image/png")` and - `canvas.createPNGStream()`. This was documented since 2.0.0 but not working. -* Add typescript definitions. + +- (Actually) added `resolution` option for `canvas.toBuffer("image/png")` and + `canvas.createPNGStream()`. This was documented since 2.0.0 but not working. +- Add typescript definitions. + ### Fixed -* PDF metadata (added in 2.3.0) wasn't being set with `canvas.createPDFStream()` -* Fix custom "inspect" function deprecation warnings (#1326) -2.3.1 -================== +- PDF metadata (added in 2.3.0) wasn't being set with `canvas.createPDFStream()` +- Fix custom "inspect" function deprecation warnings (#1326) + + # 2.3.1 + ### Fixed -* Fix `canvas.toBuffer()` for JPEGs (#1350) -2.3.0 -================== +- Fix `canvas.toBuffer()` for JPEGs (#1350) + + # 2.3.0 + ### Added -* Add support for multiple PDF page sizes -* Add support for embedding document metadata in PDFs + +- Add support for multiple PDF page sizes +- Add support for embedding document metadata in PDFs ### Fixed -* Don't crash when font string is invalid (bug since 2.2.0) (#1328) -* Fix memory leak in `canvas.toBuffer()` (#1202, #1296) -* Fix memory leak in `ctx.font=` (#1202) -2.2.0 -================== +- Don't crash when font string is invalid (bug since 2.2.0) (#1328) +- Fix memory leak in `canvas.toBuffer()` (#1202, #1296) +- Fix memory leak in `ctx.font=` (#1202) + + # 2.2.0 + ### Added -* BMP support + +- BMP support ### Fixed -* Reset context on resurface (#1292) -* Support Jest test framework (#1311) -2.1.0 -================== +- Reset context on resurface (#1292) +- Support Jest test framework (#1311) + + # 2.1.0 + ### Added -* Warn when building with old, unsupported versions of cairo or libjpeg. -2.0.0 -================== +- Warn when building with old, unsupported versions of cairo or libjpeg. + + # 2.0.0 **Upgrading from 1.x** + ```js // (1) The Canvas constructor is no longer the default export from the module. /* old: */ -const Canvas = require('canvas') -const mycanvas = new Canvas(width, height) +const Canvas = require("canvas"); +const mycanvas = new Canvas(width, height); /* new: */ -const { createCanvas, Canvas } = require('canvas') -const mycanvas = createCanvas(width, height) -mycanvas instanceof Canvas // true +const { createCanvas, Canvas } = require("canvas"); +const mycanvas = createCanvas(width, height); +mycanvas instanceof Canvas; // true /* old: */ -const Canvas = require('canvas') -const myimg = new Canvas.Image() +const Canvas = require("canvas"); +const myimg = new Canvas.Image(); /* new: */ -const { Image } = require('canvas') -const myimg = new Image() +const { Image } = require("canvas"); +const myimg = new Image(); // (2) The quality argument for canvas.createJPEGStream/canvas.jpegStream now // goes from 0 to 1 instead of from 0 to 100: -canvas.createJPEGStream({ quality: 50 }) // old -canvas.createJPEGStream({ quality: 0.5 }) // new +canvas.createJPEGStream({ quality: 50 }); // old +canvas.createJPEGStream({ quality: 0.5 }); // new // (3) The ZLIB compression level and PNG filter options for canvas.toBuffer are // now named instead of positional arguments: -canvas.toBuffer(undefined, 3, canvas.PNG_FILTER_NONE) // old -canvas.toBuffer(undefined, { compressionLevel: 3, filters: canvas.PNG_FILTER_NONE }) // new +canvas.toBuffer(undefined, 3, canvas.PNG_FILTER_NONE); // old +canvas.toBuffer(undefined, { + compressionLevel: 3, + filters: canvas.PNG_FILTER_NONE, +}); // new // or specify the mime type explicitly: -canvas.toBuffer('image/png', { compressionLevel: 3, filters: canvas.PNG_FILTER_NONE }) // new +canvas.toBuffer("image/png", { + compressionLevel: 3, + filters: canvas.PNG_FILTER_NONE, +}); // new // (4) #2 also applies for canvas.pngStream, although these arguments were not // documented: -canvas.pngStream(3, canvas.PNG_FILTER_NONE) // old -canvas.pngStream({ compressionLevel: 3, filters: canvas.PNG_FILTER_NONE }) // new +canvas.pngStream(3, canvas.PNG_FILTER_NONE); // old +canvas.pngStream({ compressionLevel: 3, filters: canvas.PNG_FILTER_NONE }); // new // (5) canvas.syncPNGStream() and canvas.syncJPEGStream() have been removed: -canvas.syncPNGStream() // old -canvas.createSyncPNGStream() // old -canvas.createPNGStream() // new +canvas.syncPNGStream(); // old +canvas.createSyncPNGStream(); // old +canvas.createPNGStream(); // new -canvas.syncJPEGStream() // old -canvas.createSyncJPEGStream() // old -canvas.createJPEGStream() // new +canvas.syncJPEGStream(); // old +canvas.createSyncJPEGStream(); // old +canvas.createJPEGStream(); // new // (6) Context2d.filter has been renamed to context2d.quality to avoid a // conflict with the new standard 'filter' property. -context.filter = 'best' // old -context.quality = 'best' // new +context.filter = "best"; // old +context.quality = "best"; // new ``` ### Breaking - * Drop support for Node.js <6.x - * Remove sync stream functions (bc53059). Note that most streams are still - synchronous (run in the main thread); this change just removed `syncPNGStream` - and `syncJPEGStream`. - * Pango is now *required* on all platforms (7716ae4). - * Make the `quality` argument for JPEG output go from 0 to 1 to match HTML spec. - * Make the `compressionLevel` and `filters` arguments for `canvas.toBuffer()` - named instead of positional. Same for `canvas.pngStream()`, although these - arguments were not documented. - * See also: *Correct some of the `globalCompositeOperator` types* under - **Fixed**. These changes were bug-fixes, but will break existing code relying - on the incorrect types. - * Rename `context2d.filter` to `context2d.quality` to avoid a conflict with the - new standard 'filter' property. Note that the standard 'filter' property is - not yet implemented. + +- Drop support for Node.js <6.x +- Remove sync stream functions (bc53059). Note that most streams are still + synchronous (run in the main thread); this change just removed `syncPNGStream` + and `syncJPEGStream`. +- Pango is now _required_ on all platforms (7716ae4). +- Make the `quality` argument for JPEG output go from 0 to 1 to match HTML spec. +- Make the `compressionLevel` and `filters` arguments for `canvas.toBuffer()` + named instead of positional. Same for `canvas.pngStream()`, although these + arguments were not documented. +- See also: _Correct some of the `globalCompositeOperator` types_ under + **Fixed**. These changes were bug-fixes, but will break existing code relying + on the incorrect types. +- Rename `context2d.filter` to `context2d.quality` to avoid a conflict with the + new standard 'filter' property. Note that the standard 'filter' property is + not yet implemented. ### Fixed - * Fix build with SVG support enabled (#1123) - * Prevent segfaults caused by loading invalid fonts (#1105) - * Fix memory leak in font loading - * Port has_lib.sh to javascript (#872) - * Correctly sample the edge of images when scaling (#1084) - * Detect CentOS libjpeg path (b180ea5) - * Improve measureText accuracy (2bbfec5) - * Fix memory leak when image callbacks reference the image (1f4b646) - * Fix putImageData(data, negative, negative) (2102e25) - * Fix SVG recognition when loading from buffer (77749e6) - * Re-rasterize SVG when drawing to a context and dimensions changed (79bf232) - * Prevent JPEG errors from crashing process (#1124) - * Improve handling of invalid arguments (#1129) - * Fix repeating patterns when drawing a canvas to itself (#1136) - * Prevent segfaults caused by creating a too large canvas - * Fix parse-font regex to allow for whitespaces. - * Allow assigning non-string values to fillStyle and strokeStyle - * Fix drawing zero-width and zero-height images. - * Fix DEP0005 deprecation warning - * Don't assume `data:` URIs assigned to `img.src` are always base64-encoded - * Fix formatting of color strings (e.g. `ctx.fillStyle`) on 32-bit platforms - * Explicitly export symbols for the C++ API - * Named CSS colors should match case-insensitive - * Correct some of the `globalCompositeOperator` types to match the spec: - * "hsl-hue" is now "hue" - * "hsl-saturation" is now "saturation" - * "hsl-color" is now "color" - * "hsl-luminosity" is now "luminosity" - * "darker" is now "darken" - * "dest" is now "destination" - * "add" is removed (but is the same as "lighter") - * "source" is now "copy" - * Provide better, Node.js core-style coded errors for failed sys calls. (For - example, provide an error with code 'ENOENT' if setting `img.src` to a path - that does not exist.) - * Support reading CMYK, YCCK JPEGs. - * Hide `Image.prototype.source` - * Fix behavior of maxWidth (#1088) - * Fix behavior of textAlignment with maxWidth (#1253) + +- Fix build with SVG support enabled (#1123) +- Prevent segfaults caused by loading invalid fonts (#1105) +- Fix memory leak in font loading +- Port has_lib.sh to javascript (#872) +- Correctly sample the edge of images when scaling (#1084) +- Detect CentOS libjpeg path (b180ea5) +- Improve measureText accuracy (2bbfec5) +- Fix memory leak when image callbacks reference the image (1f4b646) +- Fix putImageData(data, negative, negative) (2102e25) +- Fix SVG recognition when loading from buffer (77749e6) +- Re-rasterize SVG when drawing to a context and dimensions changed (79bf232) +- Prevent JPEG errors from crashing process (#1124) +- Improve handling of invalid arguments (#1129) +- Fix repeating patterns when drawing a canvas to itself (#1136) +- Prevent segfaults caused by creating a too large canvas +- Fix parse-font regex to allow for whitespaces. +- Allow assigning non-string values to fillStyle and strokeStyle +- Fix drawing zero-width and zero-height images. +- Fix DEP0005 deprecation warning +- Don't assume `data:` URIs assigned to `img.src` are always base64-encoded +- Fix formatting of color strings (e.g. `ctx.fillStyle`) on 32-bit platforms +- Explicitly export symbols for the C++ API +- Named CSS colors should match case-insensitive +- Correct some of the `globalCompositeOperator` types to match the spec: + - "hsl-hue" is now "hue" + - "hsl-saturation" is now "saturation" + - "hsl-color" is now "color" + - "hsl-luminosity" is now "luminosity" + - "darker" is now "darken" + - "dest" is now "destination" + - "add" is removed (but is the same as "lighter") + - "source" is now "copy" +- Provide better, Node.js core-style coded errors for failed sys calls. (For + example, provide an error with code 'ENOENT' if setting `img.src` to a path + that does not exist.) +- Support reading CMYK, YCCK JPEGs. +- Hide `Image.prototype.source` +- Fix behavior of maxWidth (#1088) +- Fix behavior of textAlignment with maxWidth (#1253) ### Added - * Prebuilds (#992) with different libc versions to the prebuilt binary (#1140) - * Support `canvas.getContext("2d", {alpha: boolean})` and - `canvas.getContext("2d", {pixelFormat: "..."})` - * Support indexed PNG encoding. - * Support `currentTransform` (d6714ee) - * Export `CanvasGradient` (6a4c0ab) - * Support #RGBA , #RRGGBBAA hex colors (10a82ec) - * Support maxWidth arg for fill/strokeText (175b40d) - * Support image.naturalWidth/Height (a5915f8) - * Render SVG img elements when librsvg is available (1baf00e) - * Support ellipse method (4d4a726) - * Browser-compatible API (6a29a23) - * Support for jpeg on Windows (42e9a74) - * Support for backends (1a6dffe) - * Support for `canvas.toBuffer("image/jpeg")` - * Unified configuration options for `canvas.toBuffer()`, `canvas.pngStream()` - and `canvas.jpegStream()` - * ~~Added `resolution` option for `canvas.toBuffer("image/png")` and - `canvas.createPNGStream()`~~ this was not working - * Support for `canvas.toDataURI("image/jpeg")` (sync) - * Support for `img.src = ` to match browsers - * Support reading data URL on `img.src` - * Readme: add dependencies command for OpenBSD - * Throw error if calling jpegStream when canvas was not built with JPEG support - * Emit error if trying to load GIF, SVG or JPEG image when canvas was not built - with support for that format - -1.6.x (unreleased) -================== + +- Prebuilds (#992) with different libc versions to the prebuilt binary (#1140) +- Support `canvas.getContext("2d", {alpha: boolean})` and + `canvas.getContext("2d", {pixelFormat: "..."})` +- Support indexed PNG encoding. +- Support `currentTransform` (d6714ee) +- Export `CanvasGradient` (6a4c0ab) +- Support #RGBA , #RRGGBBAA hex colors (10a82ec) +- Support maxWidth arg for fill/strokeText (175b40d) +- Support image.naturalWidth/Height (a5915f8) +- Render SVG img elements when librsvg is available (1baf00e) +- Support ellipse method (4d4a726) +- Browser-compatible API (6a29a23) +- Support for jpeg on Windows (42e9a74) +- Support for backends (1a6dffe) +- Support for `canvas.toBuffer("image/jpeg")` +- Unified configuration options for `canvas.toBuffer()`, `canvas.pngStream()` + and `canvas.jpegStream()` +- ~~Added `resolution` option for `canvas.toBuffer("image/png")` and + `canvas.createPNGStream()`~~ this was not working +- Support for `canvas.toDataURI("image/jpeg")` (sync) +- Support for `img.src = ` to match browsers +- Support reading data URL on `img.src` +- Readme: add dependencies command for OpenBSD +- Throw error if calling jpegStream when canvas was not built with JPEG support +- Emit error if trying to load GIF, SVG or JPEG image when canvas was not built + with support for that format + +# 1.6.x (unreleased) + ### Fixed - * Make setLineDash able to handle full zeroed dashes (b8cf1d7) - * Fix reading fillStyle after setting it from gradient to color (a84b2bc) + +- Make setLineDash able to handle full zeroed dashes (b8cf1d7) +- Fix reading fillStyle after setting it from gradient to color (a84b2bc) ### Added - * Support for pattern repeat and no-repeat (#1066) - * Support for context globalAlpha for gradients and patterns (#1064) -1.6.9 / 2017-12-20 -================== +- Support for pattern repeat and no-repeat (#1066) +- Support for context globalAlpha for gradients and patterns (#1064) + +# 1.6.9 / 2017-12-20 + ### Fixed - * Fix some instances of crashes (7c9ec58, 8b792c3) - * Fix node 0.x compatibility (dca33f7) -1.6.8 / 2017-12-12 -================== +- Fix some instances of crashes (7c9ec58, 8b792c3) +- Fix node 0.x compatibility (dca33f7) + +# 1.6.8 / 2017-12-12 + ### Fixed - * Faster, more compliant parseFont (4625efa, 37cd969) -1.6.7 / 2017-09-08 -================== +- Faster, more compliant parseFont (4625efa, 37cd969) + +# 1.6.7 / 2017-09-08 + ### Fixed - * Minimal backport of #985 (rotated text baselines) (c19edb8) -1.6.6 / 2017-05-03 -================== +- Minimal backport of #985 (rotated text baselines) (c19edb8) + +# 1.6.6 / 2017-05-03 + ### Fixed - * Use .node extension for requiring native module so webpack works (1b05599) - * Correct text baseline calculation (#1037) -1.6.5 / 2017-03-18 -================== +- Use .node extension for requiring native module so webpack works (1b05599) +- Correct text baseline calculation (#1037) + +# 1.6.5 / 2017-03-18 + ### Changed - * Parse font using parse-css-font and units-css (d316416) -1.6.4 / 2017-02-26 -================== +- Parse font using parse-css-font and units-css (d316416) + +# 1.6.4 / 2017-02-26 + ### Fixed - * Make sure Canvas#toDataURL is always async if callback is passed (8586d72) -1.6.3 / 2017-02-14 -================== +- Make sure Canvas#toDataURL is always async if callback is passed (8586d72) + +# 1.6.3 / 2017-02-14 + ### Fixed - * Fix isnan() and isinf() on clang (5941e13) -1.6.2 / 2016-10-30 -================== +- Fix isnan() and isinf() on clang (5941e13) + +# 1.6.2 / 2016-10-30 + ### Fixed - * Fix deprecation warnings (c264879) - * Bump nan (e4aea20) -1.6.1 / 2016-10-23 -================== +- Fix deprecation warnings (c264879) +- Bump nan (e4aea20) + +# 1.6.1 / 2016-10-23 ### Fixed - * Make has_lib.sh work on BSD OSes (1727d66) -1.6.0 / 2016-10-16 -================== +- Make has_lib.sh work on BSD OSes (1727d66) + +# 1.6.0 / 2016-10-16 + +- Support canvas.getBuffer('raw') (#819) + +# 1.5.0 / 2016-09-11 + +- Crude PDF stream implementation (#781) +- Update CI settings (#797) +- Reduce some of the install warnings (#794) +- Fix lineDash browser tests never finishing (#793) +- Add issue template (#791) + +# 1.4.0 / 2016-06-03 + +- Add support for evenodd fill rule (#762) + +# 1.3.17 / 2016-06-03 + +- Removing redundant duplicate calls (#769) +- Cleanup examples (#776) +- Fix CanvasRenderingContext2D class name (#777) + +# 1.3.16 / 2016-05-29 + +- Fix leak of data when streaming JPEG (#774) + +# 1.3.15 / 2016-05-09 + +- Fix segfault in putImageData (#750) + +# 1.3.14 / 2016-05-05 + +- Clamp JPEG buffer size (#739) + +# 1.3.13 / 2016-05-01 + +- Bumb NAN version (#759) + +# 1.3.12 / 2016-03-01 + +- Expose freetype version (#718) +- Require new in constructor (#717) + +# 1.3.11 / 2016-03-01 + +- Properly clamp quality in toDataURL (#728) +- Strict mode (#719) + +# 1.3.10 / 2016-02-07 + +- Fix segfault on node 0.10.x (#712) - * Support canvas.getBuffer('raw') (#819) +# 1.3.9 / 2016-01-27 -1.5.0 / 2016-09-11 -================== +- Allow to unbind onload/onerror callback handlers (#706) - * Crude PDF stream implementation (#781) - * Update CI settings (#797) - * Reduce some of the install warnings (#794) - * Fix lineDash browser tests never finishing (#793) - * Add issue template (#791) +# 1.3.8 / 2016-01-22 -1.4.0 / 2016-06-03 -================== +- Cleanup build scripts and fix pangocairo detection (#701) - * Add support for evenodd fill rule (#762) +# 1.3.7 / 2016-01-13 -1.3.17 / 2016-06-03 -=================== +- Don't unbind onload/onerror callbacks after invoking them (#615) - * Removing redundant duplicate calls (#769) - * Cleanup examples (#776) - * Fix CanvasRenderingContext2D class name (#777) +# 1.3.6 / 2016-01-06 -1.3.16 / 2016-05-29 -=================== +- Allow optional arguments in `toDataURL` to be `undefined` and improve `toDataURL`'s spec compliance (#690) - * Fix leak of data when streaming JPEG (#774) +# 1.3.5 / 2015-12-07 -1.3.15 / 2016-05-09 -=================== +- Add image/jpeg support to `toDataUrl` (#685) - * Fix segfault in putImageData (#750) +# 1.3.4 / 2015-11-21 -1.3.14 / 2016-05-05 -=================== +- Upgrade nan to 2.1.0 (#671) - * Clamp JPEG buffer size (#739) +# 1.3.3 / 2015-11-21 -1.3.13 / 2016-05-01 -=================== +- Fix compilation on Visual Studio 2015 (#670) - * Bumb NAN version (#759) +# 1.3.2 / 2015-11-18 -1.3.12 / 2016-03-01 -=================== +- Fix incorrect Y offset and scaling for shadows (#669) - * Expose freetype version (#718) - * Require new in constructor (#717) +# 1.3.1 / 2015-11-09 -1.3.11 / 2016-03-01 -=================== +- Wrap std::min calls in paranthesis to prevent macro expansion on windows (#660) - * Properly clamp quality in toDataURL (#728) - * Strict mode (#719) +# 1.3.0 / 2015-10-26 -1.3.10 / 2016-02-07 -=================== +- Expose ImageData constructor and make it more spec-compliant (#569) - * Fix segfault on node 0.10.x (#712) +# 1.2.11 / 2015-10-20 -1.3.9 / 2016-01-27 -================== +- Implement blur on images (#648) - * Allow to unbind onload/onerror callback handlers (#706) +# 1.2.10 / 2015-10-12 -1.3.8 / 2016-01-22 -================== +- Fix segfault in Canvas#jpegStream (#629) - * Cleanup build scripts and fix pangocairo detection (#701) +# 1.2.9 / 2015-09-14 -1.3.7 / 2016-01-13 -================== +- Upgrade to Nan 2.x with support for iojs 3.x and Node.js 4.x (#622) - * Don't unbind onload/onerror callbacks after invoking them (#615) +# 1.2.8 / 2015-08-30 -1.3.6 / 2016-01-06 -================== +- Clean up the tests (#612) +- Replace CanvasPixelArray with Uint8ClampedArray to be API-compliant (#604) +- Specify travis iojs versions (#611) - * Allow optional arguments in `toDataURL` to be `undefined` and improve `toDataURL`'s spec compliance (#690) +# 1.2.7 / 2015-07-29 -1.3.5 / 2015-12-07 -================== +- Avoid future reserved keyword (#592) - * Add image/jpeg support to `toDataUrl` (#685) +# 1.2.6 / 2015-07-29 -1.3.4 / 2015-11-21 -================== +- Fix the build on windows (#589) - * Upgrade nan to 2.1.0 (#671) +# 1.2.5 / 2015-07-28 -1.3.3 / 2015-11-21 -================== +- Another npm release, since 1.2.4 was botched (see #596) - * Fix compilation on Visual Studio 2015 (#670) +# 1.2.4 / 2015-07-23 -1.3.2 / 2015-11-18 -================== +- Point `homepage` and `repository` links to [`github.com/Automattic/node-canvas`][repo] +- Fix Travis builds and Cairo include paths (thanks, Linus Unnebäck!) - * Fix incorrect Y offset and scaling for shadows (#669) +# 1.2.3 / 2015-05-21 -1.3.1 / 2015-11-09 -================== +- Update TJ Holowaychuk's username in the readme +- Fix segmentation fault in `Image::loadFromBuffer` when buffer is empty +- Optimize getImageData() +- package: add "license" attribute +- package: update "nan" to v1.8.4 +- package: append `.git` to "repository" URL - * Wrap std::min calls in paranthesis to prevent macro expansion on windows (#660) +# 1.2.2 / 2015-04-18 -1.3.0 / 2015-10-26 -================== +- Now works on io.js +- Fix 'drawImage' scaling (the dimensions of the region that gets clipped also needs to be scaled). +- Fix bug in StreamPNGSync - * Expose ImageData constructor and make it more spec-compliant (#569) +# 1.2.1 / 2015-02-10 -1.2.11 / 2015-10-20 -=================== +- Use non-cairo 1.12 API for shadow blur - * Implement blur on images (#648) +# 1.2.0 / 2015-01-31 -1.2.10 / 2015-10-12 -=================== +- travis: drop support for node v0.6 +- Merge pull request #507 from salzhrani/iojs +- io.js compatibility +- Merge pull request #505 from woodcoder/shadow-blur +- Fix issue with line width not being correct in stroked shadows. +- Add another shadow/transform test. +- Refactor setSourceRGBA to allow the context to be supplied. +- Simple image shadow (no blurring or handling current transforms) based on image's alpha channel. +- Test showing issue #133, that images don't have shadows. +- The +1 on the offset seems to match the browser's output better, but I can't work out why it would be needed (unless it's pixel alignment related). +- Make the shadow radius more accurately match the browser's, making use of sigma scale as used in SKIA: https://github.com/google/skia/blob/master/src/effects/SkBlurMask.cpp#L26. +- Create a new image surface to render blurred shadows to, this means that vector formats like PDF will now render blurs. +- Add recommended calls to flush and dirty buffer, as per http://www.cairographics.org/manual/cairo-Image-Surfaces.html#cairo-image-surface-get-data. +- Add PDF button to test page to easily generate PDF version of the test image. +- Fix to ensure shadowOffset is unaffected by the current transform. +- New test illustrating that canvas implementation doesn't translate the shadowOffset. +- Merge pull request #490 from AllYearbooks/master +- Merge pull request #501 from motiz88/hsl-color +- Code style + attribution. Also removed parseClipped() and commented out wrapInt (now wrap_int). +- Added visual tests for hsl() and hsla() color parsing. +- Fixed handling in hsl/hsla color parser. parseNumber() was erroring out on numbers with long fractional parts. +- hsl/hsla color parsing + rebeccapurple hsl() and hsla() color values are now supported, with corresponding unit tests. Also added rebeccapurple (from CSS Color Level 4) to the named color list. +- float rather than int for drawImage arguments +- with_pango to true and use fontconfig to load fonts +- Merge pull request #399 from nulltask/fix/lighten +- Merge pull request #465 from espadrine/master +- Merge pull request #470 from tonylukasavage/patch-1 +- Add one-liner MacPorts install to docs +- Offer SVG output. +- Readme update: node-gyp. +- Readme: fix subheading size +- Readme: remove Gemnasium badge, use SVG for npm badge +- Readme: add Travis-CI badge +- change operator lighter to lighten - * Fix segfault in Canvas#jpegStream (#629) +# 1.1.6 / 2014-08-01 -1.2.9 / 2015-09-14 -================== +- export canvas.CanvasPixelArray instead of canvas.PixelArray which is undefined +- Glib version test into giflib exists test +- Giflib 5.1 +- install: use an even older version of giflib (v4.1.6) +- install: use an older version of giflib (v4.2.3) +- install: install `giflib` +- install: use more compatible sh syntax +- travis: attempt to run the ./install script before testintg +- travis: test node v0.6, v0.8, v0.10, and v0.11 +- Distinguish between 'add' and 'lighter' - * Upgrade to Nan 2.x with support for iojs 3.x and Node.js 4.x (#622) +# 1.1.5 / 2014-06-26 -1.2.8 / 2015-08-30 -================== +- Readme: remove Contributors section +- Readme: update copyright +- On Windows, copy required DLLs next to ".node" file (#442 @pandell) +- Duplicate "msvc_settings" for "Debug" configuration +- Remove unneeded #include +- Use float constants to prevent double->float conversion warning +- Ignore Visual C++ 2013 warnings (#441 @pandell) +- Add algorithm include to CanvasRenderingContext2d.cc for std::min (#435 @kkoopa) +- Updated NAN to 1.2.0 (#434 @kkoopa) - * Clean up the tests (#612) - * Replace CanvasPixelArray with Uint8ClampedArray to be API-compliant (#604) - * Specify travis iojs versions (#611) +# 1.1.4 / 2014-06-08 -1.2.7 / 2015-07-29 -================== +- Fix compile error with Visual C++ +- Add support for the lineDash API +- Update NAN +- New V8 compatibility +- Correctly limit bounds in PutImageData to prevent segment fault +- Fix segfault when onload and onerror are not function +- Add support for Node 0.11.9 - * Avoid future reserved keyword (#592) +# 1.1.3 / 2014-01-08 -1.2.6 / 2015-07-29 -================== +- Add CAIRO_FORMAT_INVALID +- Readjust the amount of allocated memory +- Fix argument index for filter parameter +- Make has_lib.sh work properly on Debian 64bit - * Fix the build on windows (#589) +# 1.1.2 / 2013-10-31 -1.2.5 / 2015-07-28 -================== +- NAN dep upgrade, full node@<=0.11.8 compatibility +- Use node::MakeCallback() instead of v8::Function::Call() +- Improve nan location discovery +- Fix enabling gif/jpeg options on Ubuntu 13.04 - * Another npm release, since 1.2.4 was botched (see #596) +# 1.1.1 / 2013-10-09 -1.2.4 / 2015-07-23 -================== +- add better support for outdated versions of Cairo - * Point `homepage` and `repository` links to [`github.com/Automattic/node-canvas`][repo] - * Fix Travis builds and Cairo include paths (thanks, Linus Unnebäck!) +# 1.1.0 / 2013-08-01 -1.2.3 / 2015-05-21 -================== +- add png compression options +- add jpeg stream progressive mode option +- fix resource leaks on read errors - * Update TJ Holowaychuk's username in the readme - * Fix segmentation fault in `Image::loadFromBuffer` when buffer is empty - * Optimize getImageData() - * package: add "license" attribute - * package: update "nan" to v1.8.4 - * package: append `.git` to "repository" URL +# 1.0.4 / 2013-07-23 -1.2.2 / 2015-04-18 -================== +- 0.11.4+ compatibility using NAN +- fix typo in context2d for imageSmoothingEnabled - * Now works on io.js - * Fix 'drawImage' scaling (the dimensions of the region that gets clipped also needs to be scaled). - * Fix bug in StreamPNGSync +# 1.0.3 / 2013-06-04 -1.2.1 / 2015-02-10 -================== +- add "nearest" and "bilinear" to patternQuality +- fix fread() retval check (items not bytes) +- removed unneeded private fields - * Use non-cairo 1.12 API for shadow blur +# 1.0.2 / 2013-03-22 -1.2.0 / 2015-01-31 -================== +- add Context2d#imageSmoothingEnabled= - * travis: drop support for node v0.6 - * Merge pull request #507 from salzhrani/iojs - * io.js compatibility - * Merge pull request #505 from woodcoder/shadow-blur - * Fix issue with line width not being correct in stroked shadows. - * Add another shadow/transform test. - * Refactor setSourceRGBA to allow the context to be supplied. - * Simple image shadow (no blurring or handling current transforms) based on image's alpha channel. - * Test showing issue #133, that images don't have shadows. - * The +1 on the offset seems to match the browser's output better, but I can't work out why it would be needed (unless it's pixel alignment related). - * Make the shadow radius more accurately match the browser's, making use of sigma scale as used in SKIA: https://github.com/google/skia/blob/master/src/effects/SkBlurMask.cpp#L26. - * Create a new image surface to render blurred shadows to, this means that vector formats like PDF will now render blurs. - * Add recommended calls to flush and dirty buffer, as per http://www.cairographics.org/manual/cairo-Image-Surfaces.html#cairo-image-surface-get-data. - * Add PDF button to test page to easily generate PDF version of the test image. - * Fix to ensure shadowOffset is unaffected by the current transform. - * New test illustrating that canvas implementation doesn't translate the shadowOffset. - * Merge pull request #490 from AllYearbooks/master - * Merge pull request #501 from motiz88/hsl-color - * Code style + attribution. Also removed parseClipped() and commented out wrapInt (now wrap_int). - * Added visual tests for hsl() and hsla() color parsing. - * Fixed handling in hsl/hsla color parser. parseNumber() was erroring out on numbers with long fractional parts. - * hsl/hsla color parsing + rebeccapurple hsl() and hsla() color values are now supported, with corresponding unit tests. Also added rebeccapurple (from CSS Color Level 4) to the named color list. - * float rather than int for drawImage arguments - * with_pango to true and use fontconfig to load fonts - * Merge pull request #399 from nulltask/fix/lighten - * Merge pull request #465 from espadrine/master - * Merge pull request #470 from tonylukasavage/patch-1 - * Add one-liner MacPorts install to docs - * Offer SVG output. - * Readme update: node-gyp. - * Readme: fix subheading size - * Readme: remove Gemnasium badge, use SVG for npm badge - * Readme: add Travis-CI badge - * change operator lighter to lighten - -1.1.6 / 2014-08-01 -================== - - * export canvas.CanvasPixelArray instead of canvas.PixelArray which is undefined - * Glib version test into giflib exists test - * Giflib 5.1 - * install: use an even older version of giflib (v4.1.6) - * install: use an older version of giflib (v4.2.3) - * install: install `giflib` - * install: use more compatible sh syntax - * travis: attempt to run the ./install script before testintg - * travis: test node v0.6, v0.8, v0.10, and v0.11 - * Distinguish between 'add' and 'lighter' - -1.1.5 / 2014-06-26 -================== - - * Readme: remove Contributors section - * Readme: update copyright - * On Windows, copy required DLLs next to ".node" file (#442 @pandell) - * Duplicate "msvc_settings" for "Debug" configuration - * Remove unneeded #include - * Use float constants to prevent double->float conversion warning - * Ignore Visual C++ 2013 warnings (#441 @pandell) - * Add algorithm include to CanvasRenderingContext2d.cc for std::min (#435 @kkoopa) - * Updated NAN to 1.2.0 (#434 @kkoopa) - -1.1.4 / 2014-06-08 -================== - - * Fix compile error with Visual C++ - * Add support for the lineDash API - * Update NAN - * New V8 compatibility - * Correctly limit bounds in PutImageData to prevent segment fault - * Fix segfault when onload and onerror are not function - * Add support for Node 0.11.9 - -1.1.3 / 2014-01-08 -================== - - * Add CAIRO_FORMAT_INVALID - * Readjust the amount of allocated memory - * Fix argument index for filter parameter - * Make has_lib.sh work properly on Debian 64bit - -1.1.2 / 2013-10-31 -================== - - * NAN dep upgrade, full node@<=0.11.8 compatibility - * Use node::MakeCallback() instead of v8::Function::Call() - * Improve nan location discovery - * Fix enabling gif/jpeg options on Ubuntu 13.04 - -1.1.1 / 2013-10-09 -================== - - * add better support for outdated versions of Cairo - -1.1.0 / 2013-08-01 -================== - - * add png compression options - * add jpeg stream progressive mode option - * fix resource leaks on read errors - -1.0.4 / 2013-07-23 -================== - - * 0.11.4+ compatibility using NAN - * fix typo in context2d for imageSmoothingEnabled - -1.0.3 / 2013-06-04 -================== - - * add "nearest" and "bilinear" to patternQuality - * fix fread() retval check (items not bytes) - * removed unneeded private fields - -1.0.2 / 2013-03-22 -================== - - * add Context2d#imageSmoothingEnabled= - -1.0.1 / 2013-02-25 -================== +# 1.0.1 / 2013-02-25 - * travis: test modern node versions - * change the node-gyp build to use pkg-config +- travis: test modern node versions +- change the node-gyp build to use pkg-config -1.0.0 / 2013-01-16 -================== +# 1.0.0 / 2013-01-16 - * add conditional pango font support [Julian Viereck] - * add `Canvas#{png,jpeg}Stream()` alias of create* legacy methods - * add support for grayscale JPEGs - * fix: explicitly cast the after work callback function to "uv_after_work_cb" - * fix test server for express 3.x - * fix: call cairo_surface_finish in ~Canvas when pdf - * remove old 0.4.x binding support. Closes #197 +- add conditional pango font support [Julian Viereck] +- add `Canvas#{png,jpeg}Stream()` alias of create\* legacy methods +- add support for grayscale JPEGs +- fix: explicitly cast the after work callback function to "uv_after_work_cb" +- fix test server for express 3.x +- fix: call cairo_surface_finish in ~Canvas when pdf +- remove old 0.4.x binding support. Closes #197 -0.13.1 / 2012-08-20 -================== +# 0.13.1 / 2012-08-20 - * fix cases where GIF_LIB_VERSION is not defined - * fix auto-detection of optional libraries for OS X - * fix Context2d::SetFont for pango when setting normal weight/style +- fix cases where GIF_LIB_VERSION is not defined +- fix auto-detection of optional libraries for OS X +- fix Context2d::SetFont for pango when setting normal weight/style -0.13.0 / 2012-08-12 -================== +# 0.13.0 / 2012-08-12 - * add pango support [c-spencer] - * add pango / png / jpeg gyp auto-detection [c-spencer] - * add `.gifVersion` [tootallnate] - * add `.jpegVersion` [tootallnate] - * add moar gyp stuff [tootallnate] - * remove wscript - * fix `closure_destroy()` with cast for `AdjustAmountOfExternalAllocatedMemory()` +- add pango support [c-spencer] +- add pango / png / jpeg gyp auto-detection [c-spencer] +- add `.gifVersion` [tootallnate] +- add `.jpegVersion` [tootallnate] +- add moar gyp stuff [tootallnate] +- remove wscript +- fix `closure_destroy()` with cast for `AdjustAmountOfExternalAllocatedMemory()` -0.12.1 / 2012-06-29 -================== +# 0.12.1 / 2012-06-29 - * fix jpeg malloc Image issue. Closes #160 [c-spencer] - * Improve Image mode API - * Add clearData method to handle reassignment of src, and clean up mime data memory handling. - * Improve how _data_len is managed and use to adjust memory, hide more of mime API behind cairo version conditional. - * Add optional mime-data tracking to Image. - * Refactor JPEG decoding into decodeJPEGIntoSurface +- fix jpeg malloc Image issue. Closes #160 [c-spencer] +- Improve Image mode API +- Add clearData method to handle reassignment of src, and clean up mime data memory handling. +- Improve how \_data_len is managed and use to adjust memory, hide more of mime API behind cairo version conditional. +- Add optional mime-data tracking to Image. +- Refactor JPEG decoding into decodeJPEGIntoSurface -0.12.0 / 2012-05-02 -================== +# 0.12.0 / 2012-05-02 - * Added `textDrawingMode` context property [c-spencer] - * Added additional TextMetrics properties [c-spencer] +- Added `textDrawingMode` context property [c-spencer] +- Added additional TextMetrics properties [c-spencer] -0.11.3 / 2012-04-25 -================== +# 0.11.3 / 2012-04-25 - * Fixed `Image` memory leak. Closes #150 - * Fixed Context2d::hasShadow() +- Fixed `Image` memory leak. Closes #150 +- Fixed Context2d::hasShadow() -0.11.2 / 2012-04-12 -================== +# 0.11.2 / 2012-04-12 - * Fixed: pdf memory leak, free closure and surface in ~Canvas +- Fixed: pdf memory leak, free closure and surface in ~Canvas -0.11.1 / 2012-04-10 -================== +# 0.11.1 / 2012-04-10 - * Changed: renamed .nextPage() to .addPage() +- Changed: renamed .nextPage() to .addPage() -0.11.0 / 2012-04-10 -================== +# 0.11.0 / 2012-04-10 - * Added quick PDF support - * Added `Canvas#type` getter - * Added ./examples/pdf-images.js - * Added ./examples/multiple-page-pdf.js - * Added ./examples/small-pdf.js +- Added quick PDF support +- Added `Canvas#type` getter +- Added ./examples/pdf-images.js +- Added ./examples/multiple-page-pdf.js +- Added ./examples/small-pdf.js -0.10.3 / 2012-02-27 -================== +# 0.10.3 / 2012-02-27 - * Fixed quadratic curve starting point for undefined path. Closes #155 +- Fixed quadratic curve starting point for undefined path. Closes #155 -0.10.2 / 2012-02-06 -================== +# 0.10.2 / 2012-02-06 - * Fixed: Context2d setters with invalid values ignored - * Changed: replaced seek with `fstat()` +- Fixed: Context2d setters with invalid values ignored +- Changed: replaced seek with `fstat()` -0.10.1 / 2012-01-31 -================== +# 0.10.1 / 2012-01-31 - * Added _/opt/local/lib_ to wscript [obarthel] - * Added bounds checking to `rgba_to_string()` [obarthel] - * Fixed cleanup in JPEG Image loading [obarthel] - * Fixed missing CSS color table values [obarthel] +- Added _/opt/local/lib_ to wscript [obarthel] +- Added bounds checking to `rgba_to_string()` [obarthel] +- Fixed cleanup in JPEG Image loading [obarthel] +- Fixed missing CSS color table values [obarthel] -0.10.0 / 2012-01-18 -================== +# 0.10.0 / 2012-01-18 - * Added `ctx.createPattern()` [slaskis] +- Added `ctx.createPattern()` [slaskis] -0.9.0 / 2012-01-13 -================== +# 0.9.0 / 2012-01-13 - * Added `createJPEGStream()` [Elijah Hamovitz] +- Added `createJPEGStream()` [Elijah Hamovitz] -0.8.3 / 2012-01-04 -================== +# 0.8.3 / 2012-01-04 - * Added support for libjpeg62-dev or libjpeg8-dev [wwlinx] +- Added support for libjpeg62-dev or libjpeg8-dev [wwlinx] -0.8.2 / 2011-12-14 -================== +# 0.8.2 / 2011-12-14 - * Fixed two memory leaks in context2d [Tharit] - * Fixed `make test-server` +- Fixed two memory leaks in context2d [Tharit] +- Fixed `make test-server` -0.8.1 / 2011-10-31 -================== +# 0.8.1 / 2011-10-31 - * Added 0.5.x support [TooTallNate] - * Fixed `measureText().width`. Closes #126 +- Added 0.5.x support [TooTallNate] +- Fixed `measureText().width`. Closes #126 -0.8.0 / 2011-10-28 -================== +# 0.8.0 / 2011-10-28 - * Added data uri support. Closes #49 +- Added data uri support. Closes #49 -0.7.3 / 2011-09-14 -================== +# 0.7.3 / 2011-09-14 - * Added better lineTo() / moveTo() exception messages +- Added better lineTo() / moveTo() exception messages -0.7.2 / 2011-08-30 -================== +# 0.7.2 / 2011-08-30 - * Changed: prefix some private methods with _ +- Changed: prefix some private methods with \_ -0.7.1 / 2011-08-25 -================== +# 0.7.1 / 2011-08-25 - * Added better image format detection - * Added libpath options to waf configuration; this was necessary to correctly detect gif and jpeg support on FreeBSD +- Added better image format detection +- Added libpath options to waf configuration; this was necessary to correctly detect gif and jpeg support on FreeBSD -0.7.0 / 2011-07-12 -================== +# 0.7.0 / 2011-07-12 - * Added GIF support [Brian McKinney] +- Added GIF support [Brian McKinney] -0.6.0 / 2011-06-04 -================== +# 0.6.0 / 2011-06-04 - * Added `Image#src=Buffer` support. Closes #91 - * Added `devDependencies` - * Added `source-atop` test - * Added _image-src.js_ example - * Removed `V8::AdjustAmountOfExternalAllocatedMemory()` call from `toBuffer()` - * Fixed v8 memory hint when resizing canvas [atomizer] +- Added `Image#src=Buffer` support. Closes #91 +- Added `devDependencies` +- Added `source-atop` test +- Added _image-src.js_ example +- Removed `V8::AdjustAmountOfExternalAllocatedMemory()` call from `toBuffer()` +- Fixed v8 memory hint when resizing canvas [atomizer] -0.5.4 / 2011-04-20 -================== +# 0.5.4 / 2011-04-20 - * Added; special case of zero-width rectangle [atomizer] - * Fixed; do not clamp arguments to integer values [atomizer] - * Fixed; preserve current path during `fillRect()` and `strokeRect()` [atomizer] - * Fixed; `restorePath()`: clear current path before appending [atomizer] +- Added; special case of zero-width rectangle [atomizer] +- Fixed; do not clamp arguments to integer values [atomizer] +- Fixed; preserve current path during `fillRect()` and `strokeRect()` [atomizer] +- Fixed; `restorePath()`: clear current path before appending [atomizer] -0.5.3 / 2011-04-11 -================== +# 0.5.3 / 2011-04-11 - * Clamp image bounds in `PixelArray::PixelArray()` [Marcello Bastea-Forte] +- Clamp image bounds in `PixelArray::PixelArray()` [Marcello Bastea-Forte] -0.5.2 / 2011-04-09 -================== +# 0.5.2 / 2011-04-09 - * Changed; make `PNGStream` a real `Stream` [Marcello Bastea-Forte] +- Changed; make `PNGStream` a real `Stream` [Marcello Bastea-Forte] -0.5.1 / 2011-03-16 -================== +# 0.5.1 / 2011-03-16 - * Fixed (kinda) `img.src=` error handling - * Fixed; move closure.h down for malloc ref. Closes #80 +- Fixed (kinda) `img.src=` error handling +- Fixed; move closure.h down for malloc ref. Closes #80 -0.5.0 / 2011-03-14 -================== +# 0.5.0 / 2011-03-14 - * Added several more operators (color-dodge, color-burn, difference, etc) - * Performance; no longer re-allocating `closure->data` for each png write - * Fixed freeing of `Context2d` states - * Fixed text alignment / baseline [Olaf] - * Fixed HandleScopes [Olaf] - * Fixed small misc memory leaks - * Fixed `Buffer` usage for node 0.4.x +- Added several more operators (color-dodge, color-burn, difference, etc) +- Performance; no longer re-allocating `closure->data` for each png write +- Fixed freeing of `Context2d` states +- Fixed text alignment / baseline [Olaf] +- Fixed HandleScopes [Olaf] +- Fixed small misc memory leaks +- Fixed `Buffer` usage for node 0.4.x -0.4.3 / 2011-01-11 -================== +# 0.4.3 / 2011-01-11 - * Fixed font family dereferencing. Closes #72 - * Fixed; stripping of quotes from font-family before applying - * Fixed duplicate textAlign getter - * Removed sans-serif default of _Arial_ +- Fixed font family dereferencing. Closes #72 +- Fixed; stripping of quotes from font-family before applying +- Fixed duplicate textAlign getter +- Removed sans-serif default of _Arial_ -0.4.2 / 2010-12-28 -================== +# 0.4.2 / 2010-12-28 - * Fixed font size growing issue after successive calls. Closes #70 +- Fixed font size growing issue after successive calls. Closes #70 -0.4.1 / 2010-12-18 -================== +# 0.4.1 / 2010-12-18 - * Fixed; toString() first argument of `{fill,stroke}Text()`. Closes #68 +- Fixed; toString() first argument of `{fill,stroke}Text()`. Closes #68 -0.4.0 / 2010-12-12 -================== +# 0.4.0 / 2010-12-12 - * Added `drawImage()` with `Canvas` instance support. Closes #67 +- Added `drawImage()` with `Canvas` instance support. Closes #67 -0.3.3 / 2010-11-30 -================== +# 0.3.3 / 2010-11-30 - * Added `CanvasRenderingContext2d#patternQuality` accessor, accepting _fast_, _good_, and _best_ - * Fixed; pre-multiply `putImageData()` components - * Fixed; `PixelArray` data is not premultiplied +- Added `CanvasRenderingContext2d#patternQuality` accessor, accepting _fast_, _good_, and _best_ +- Fixed; pre-multiply `putImageData()` components +- Fixed; `PixelArray` data is not premultiplied -0.3.2 / 2010-11-26 -================== +# 0.3.2 / 2010-11-26 - * Added --profile option to config - * Fixed `eio_custom` segfault(s). Closes #46 - * Fixed two named colors. Closes #62 [thanks noonat] - * Fixed a few warnings - * Fixed; freeing data in `Image::loadJPEG()` on failure - * Fixed; include _jpeglib_ only when __HAVE_JPEG__ - * Fixed; using `strstr()` instead of `strnstr()` +- Added --profile option to config +- Fixed `eio_custom` segfault(s). Closes #46 +- Fixed two named colors. Closes #62 [thanks noonat] +- Fixed a few warnings +- Fixed; freeing data in `Image::loadJPEG()` on failure +- Fixed; include _jpeglib_ only when **HAVE_JPEG** +- Fixed; using `strstr()` instead of `strnstr()` -0.3.1 / 2010-11-24 -================== +# 0.3.1 / 2010-11-24 - * Fixed; `Image` loading is sync until race-condition is resolved - * Fixed; `Image::loadJPEG()` return status based on errno +- Fixed; `Image` loading is sync until race-condition is resolved +- Fixed; `Image::loadJPEG()` return status based on errno -0.3.0 / 2010-11-24 -================== +# 0.3.0 / 2010-11-24 - * Added arcTo(). Closes #11 - * Added c color parser, _./examples/ray.js_ is now twice as fast - * Fixed `putImageData()` bug messing up rgba channels +- Added arcTo(). Closes #11 +- Added c color parser, _./examples/ray.js_ is now twice as fast +- Fixed `putImageData()` bug messing up rgba channels -0.2.1 / 2010-11-19 -================== +# 0.2.1 / 2010-11-19 - * Added image _resize_ example - * Fixed canvas resizing via `{width,height}=`. Closes #57 - * Fixed `Canvas#getContext()`, caching the CanvasRenderingContext - * Fixed async image loading (test server still messed) +- Added image _resize_ example +- Fixed canvas resizing via `{width,height}=`. Closes #57 +- Fixed `Canvas#getContext()`, caching the CanvasRenderingContext +- Fixed async image loading (test server still messed) -0.2.0 / 2010-11-18 -================== +# 0.2.0 / 2010-11-18 - * Added jpeg `Image` support (when libjpeg is available) - * Added _hsl_ / _hsla_ color support. [Tom Carden] +- Added jpeg `Image` support (when libjpeg is available) +- Added _hsl_ / _hsla_ color support. [Tom Carden] -0.1.0 / 2010-11-17 -================== +# 0.1.0 / 2010-11-17 - * Added `Image` - * Added `ImageData` - * Added `PixelArray` - * Added `CanvasRenderingContext2d#drawImage()` - * Added `CanvasRenderingContext2d#getImageData()` - * Added `CanvasRenderingContext2d#createImageData()` - * Added kraken blur benchmark example - * Added several new tests - * Fixed instanceof checks for many c++ methods - * Fixed test runner in firefox [Don Park] +- Added `Image` +- Added `ImageData` +- Added `PixelArray` +- Added `CanvasRenderingContext2d#drawImage()` +- Added `CanvasRenderingContext2d#getImageData()` +- Added `CanvasRenderingContext2d#createImageData()` +- Added kraken blur benchmark example +- Added several new tests +- Fixed instanceof checks for many c++ methods +- Fixed test runner in firefox [Don Park] -0.0.8 / 2010-11-12 -================== +# 0.0.8 / 2010-11-12 - * Added `CanvasRenderingContext2d#drawImage()` - * Fixed `free()` call missing stdlib - * Fixed Image#{width,height} initialization to 0 - * Fixed; load image on non-LOADING state +- Added `CanvasRenderingContext2d#drawImage()` +- Fixed `free()` call missing stdlib +- Fixed Image#{width,height} initialization to 0 +- Fixed; load image on non-LOADING state -0.0.7 / 2010-11-12 -================== +# 0.0.7 / 2010-11-12 - * Fixed _lighter_ for older versions of cairo +- Fixed _lighter_ for older versions of cairo -0.0.6 / 2010-11-12 -================== +# 0.0.6 / 2010-11-12 - * Added `Image` - * Added conditional support for cairo 1.10.0 operators +- Added `Image` +- Added conditional support for cairo 1.10.0 operators -0.0.5 / 2010-11-10 -================== +# 0.0.5 / 2010-11-10 - * Added custom port support to _test/server.js_ - * Added more global composite operator support - * Added `Context2d#antialias=` - * Added _voronoi_ example - * Added -D__NDEBUG__ to default build - * Added __BUFFER_DATA__ macro for backwards compat buffer data access [Don Park] - * Fixed getter bug preventing patterns from being returned via `fillStyle` etc +- Added custom port support to _test/server.js_ +- Added more global composite operator support +- Added `Context2d#antialias=` +- Added _voronoi_ example +- Added -D**NDEBUG** to default build +- Added **BUFFER_DATA** macro for backwards compat buffer data access [Don Park] +- Fixed getter bug preventing patterns from being returned via `fillStyle` etc - * Fixed; __CAIRO_STATUS_NO_MEMORY___ on failed {re,m}alloc() - * Fixed; free `Canvas::ToBuffer()` closure data +- Fixed; **CAIRO*STATUS_NO_MEMORY*** on failed {re,m}alloc() +- Fixed; free `Canvas::ToBuffer()` closure data -0.0.4 / 2010-11-09 -================== +# 0.0.4 / 2010-11-09 - * Bump to fix npm engine cache bug... +- Bump to fix npm engine cache bug... -0.0.3 / 2010-11-09 -================== +# 0.0.3 / 2010-11-09 - * Added async `toDataURL()` support - * Added async `toBuffer()` support - * Removed buffer utils +- Added async `toDataURL()` support +- Added async `toBuffer()` support +- Removed buffer utils -0.0.2 / 2010-11-08 -================== +# 0.0.2 / 2010-11-08 - * Added shadow support (faster/better gaussian blur to come) - * Added node v0.3 support [Don Park] - * Added -O3 to build - * Removed `Canvas#savePNG()` use `Canvas#createPNGStream()` +- Added shadow support (faster/better gaussian blur to come) +- Added node v0.3 support [Don Park] +- Added -O3 to build +- Removed `Canvas#savePNG()` use `Canvas#createPNGStream()` -0.0.1 / 2010-11-04 -================== +# 0.0.1 / 2010-11-04 - * Initial release +- Initial release [repo]: https://github.com/Automattic/node-canvas diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 000000000..b318809d9 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1306 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +dependencies = [ + "serde", +] + +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "bytemuck" +version = "1.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "canvas" +version = "0.0.0" +dependencies = [ + "anyhow", + "bitflags 2.4.1", + "canvas-macros", + "cfg-if", + "concat-idents", + "csscolorparser", + "derive_builder", + "either", + "font-kit", + "lazy_static", + "napi", + "napi-build", + "napi-derive", + "once_cell", + "paste", + "raqote", + "regex", + "serde", + "serde_json", +] + +[[package]] +name = "canvas-macros" +version = "0.0.0" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "wasm-bindgen", + "windows-targets", +] + +[[package]] +name = "cmake" +version = "0.1.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +dependencies = [ + "cc", +] + +[[package]] +name = "concat-idents" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f76990911f2267d837d9d0ad060aa63aaad170af40904b29461734c339030d4d" +dependencies = [ + "quote", + "syn 2.0.48", +] + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "core-graphics" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "libc", +] + +[[package]] +name = "core-text" +version = "19.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25" +dependencies = [ + "core-foundation", + "core-graphics", + "foreign-types", + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "csscolorparser" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2a7d3066da2de787b7f032c736763eb7ae5d355f81a68bab2675a96008b0bf" +dependencies = [ + "phf", + "rgb", + "serde", +] + +[[package]] +name = "cstr" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8aa998c33a6d3271e3678950a22134cd7dd27cef86dee1b611b5b14207d1d90b" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "ctor" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d2b3721e861707777e3195b0158f950ae6dc4a27e4d02ff9f67e3eb3de199e" +dependencies = [ + "quote", + "syn 2.0.48", +] + +[[package]] +name = "darling" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +dependencies = [ + "darling_core", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_builder" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "660047478bc508c0fde22c868991eec0c40a63e48d610befef466d48e2bee574" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b217e6dd1011a54d12f3b920a411b5abd44b1716ecfe94f5f2f2f7b52e08ab7" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_builder_macro" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5f77d7e20ac9153428f7ca14a88aba652adfc7a0ef0a06d654386310ef663b" +dependencies = [ + "derive_builder_core", + "syn 1.0.109", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dlib" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +dependencies = [ + "libloading", +] + +[[package]] +name = "dwrote" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439a1c2ba5611ad3ed731280541d36d2e9c4ac5e7fb818a27b604bdc5a6aa65b" +dependencies = [ + "lazy_static", + "libc", + "winapi", + "wio", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +dependencies = [ + "serde", +] + +[[package]] +name = "encoding_rs" +version = "0.8.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "euclid" +version = "0.22.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787" +dependencies = [ + "num-traits", +] + +[[package]] +name = "fdeflate" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "float-ord" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce81f49ae8a0482e4c55ea62ebbd7e5a686af544c00b9d090bba3ff9be97b3d" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "font-kit" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0504fc23a34d36352540ae5eedcec2623c86607a4efe25494ca9641845c5a50" +dependencies = [ + "bitflags 2.4.1", + "byteorder", + "core-foundation", + "core-graphics", + "core-text", + "dirs-next", + "dwrote", + "float-ord", + "freetype", + "lazy_static", + "libc", + "log", + "pathfinder_geometry", + "pathfinder_simd", + "walkdir", + "winapi", + "yeslogic-fontconfig-sys", +] + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "freetype" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee38378a9e3db1cc693b4f88d166ae375338a0ff75cb8263e1c601d51f35dc6" +dependencies = [ + "freetype-sys", + "libc", +] + +[[package]] +name = "freetype-sys" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a37d4011c0cc628dfa766fcc195454f4b068d7afdc2adfd28861191d866e731a" +dependencies = [ + "cmake", + "libc", + "pkg-config", +] + +[[package]] +name = "getrandom" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "hermit-abi" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" + +[[package]] +name = "iana-time-zone" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "itoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" + +[[package]] +name = "js-sys" +version = "0.3.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" + +[[package]] +name = "libloading" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +dependencies = [ + "cfg-if", + "windows-sys", +] + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" + +[[package]] +name = "lyon_geom" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74df1ff0a0147282eb10699537a03baa7d31972b58984a1d44ce0624043fe8ad" +dependencies = [ + "arrayvec", + "euclid", + "num-traits", +] + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "napi" +version = "2.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "902495f6b80f53f8435aefbbd2241c9c675fa239cd7e5f8e28fb57f3b69ecd09" +dependencies = [ + "bitflags 2.4.1", + "chrono", + "ctor", + "encoding_rs", + "napi-derive", + "napi-sys", + "once_cell", + "serde", + "serde_json", + "tokio", +] + +[[package]] +name = "napi-build" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b4532cf86bfef556348ac65e561e3123879f0e7566cca6d43a6ff5326f13df" + +[[package]] +name = "napi-derive" +version = "2.14.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e61bec1ee990ae3e9a5f443484c65fb38e571a898437f0ad283ed69c82fc59c0" +dependencies = [ + "cfg-if", + "convert_case", + "napi-derive-backend", + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "napi-derive-backend" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2314f777bc9cde51705d991c44466cee4de4a3f41c6d3d019fcbbebb5cdd47c4" +dependencies = [ + "convert_case", + "once_cell", + "proc-macro2", + "quote", + "regex", + "semver", + "syn 2.0.48", +] + +[[package]] +name = "napi-sys" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2503fa6af34dc83fb74888df8b22afe933b58d37daf7d80424b1c60c68196b8b" +dependencies = [ + "libloading", +] + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "pathfinder_geometry" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b7e7b4ea703700ce73ebf128e1450eb69c3a8329199ffbfb9b2a0418e5ad3" +dependencies = [ + "log", + "pathfinder_simd", +] + +[[package]] +name = "pathfinder_simd" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0444332826c70dc47be74a7c6a5fc44e23a7905ad6858d4162b658320455ef93" +dependencies = [ + "rustc_version", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "png" +version = "0.17.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "proc-macro2" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "raqote" +version = "0.1.0" +dependencies = [ + "euclid", + "font-kit", + "lyon_geom", + "pathfinder_geometry", + "png", + "sw-composite", + "typed-arena", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "rgb" +version = "0.8.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20ec2d3e3fc7a92ced357df9cebd5a10b6fb2aa1ee797bf7e9ce2f17dffc8f59" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "ryu" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "semver" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" + +[[package]] +name = "serde" +version = "1.0.193" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.193" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "serde_json" +version = "1.0.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "sw-composite" +version = "0.7.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac8fb7895b4afa060ad731a32860db8755da3449a47e796d5ecf758db2671d4" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", +] + +[[package]] +name = "tokio" +version = "1.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" +dependencies = [ + "backtrace", + "num_cpus", + "pin-project-lite", +] + +[[package]] +name = "typed-arena" +version = "2.0.3" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.48", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.48", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "wio" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5" +dependencies = [ + "winapi", +] + +[[package]] +name = "yeslogic-fontconfig-sys" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb6b23999a8b1a997bf47c7bb4d19ad4029c3327bb3386ebe0a5ff584b33c7a" +dependencies = [ + "cstr", + "dlib", + "once_cell", + "pkg-config", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 000000000..43a6fd68b --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,3 @@ +[workspace] +resolver = "2" +members = ["crates/canvas", "crates/macros", "crates/raqote", "crates/typed-arena"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..e98e8089b --- /dev/null +++ b/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2010 LearnBoost, and contributors +Copyright (c) 2014 Automattic, Inc and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the 'Software'), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 000000000..774530fd3 --- /dev/null +++ b/README.md @@ -0,0 +1,602 @@ +# node-canvas + +![Test](https://github.com/Automattic/node-canvas/workflows/Test/badge.svg) +[![NPM version](https://badge.fury.io/js/canvas.svg)](http://badge.fury.io/js/canvas) + +node-canvas is a [Cairo](http://cairographics.org/)-backed Canvas implementation for [Node.js](http://nodejs.org). + +## Installation + +```bash +$ npm install canvas +``` + +By default, binaries for macOS, Linux and Windows will be downloaded. If you want to build from source, use `npm install --build-from-source` and see the **Compiling** section below. + +The minimum version of Node.js required is **10.20.0**. + +### Compiling + +If you don't have a supported OS or processor architecture, or you use `--build-from-source`, the module will be compiled on your system. This requires several dependencies, including Cairo and Pango. + +For detailed installation information, see the [wiki](https://github.com/Automattic/node-canvas/wiki/_pages). One-line installation instructions for common OSes are below. Note that libgif/giflib, librsvg and libjpeg are optional and only required if you need GIF, SVG and JPEG support, respectively. Cairo v1.10.0 or later is required. + +| OS | Command | +| ------- | --------------------------------------------------------------------------------------------------------------- | +| OS X | Using [Homebrew](https://brew.sh/):
`brew install pkg-config cairo pango libpng jpeg giflib librsvg pixman` | +| Ubuntu | `sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev` | +| Fedora | `sudo yum install gcc-c++ cairo-devel pango-devel libjpeg-turbo-devel giflib-devel` | +| Solaris | `pkgin install cairo pango pkg-config xproto renderproto kbproto xextproto` | +| OpenBSD | `doas pkg_add cairo pango png jpeg giflib` | +| Windows | See the [wiki](https://github.com/Automattic/node-canvas/wiki/Installation:-Windows) | +| Others | See the [wiki](https://github.com/Automattic/node-canvas/wiki) | + +**Mac OS X v10.11+:** If you have recently updated to Mac OS X v10.11+ and are experiencing trouble when compiling, run the following command: `xcode-select --install`. Read more about the problem [on Stack Overflow](http://stackoverflow.com/a/32929012/148072). +If you have xcode 10.0 or higher installed, in order to build from source you need NPM 6.4.1 or higher. + +## Quick Example + +```javascript +const { createCanvas, loadImage } = require("canvas"); +const canvas = createCanvas(200, 200); +const ctx = canvas.getContext("2d"); + +// Write "Awesome!" +ctx.font = "30px Impact"; +ctx.rotate(0.1); +ctx.fillText("Awesome!", 50, 100); + +// Draw line under text +var text = ctx.measureText("Awesome!"); +ctx.strokeStyle = "rgba(0,0,0,0.5)"; +ctx.beginPath(); +ctx.lineTo(50, 102); +ctx.lineTo(50 + text.width, 102); +ctx.stroke(); + +// Draw cat with lime helmet +loadImage("examples/images/lime-cat.jpg").then((image) => { + ctx.drawImage(image, 50, 0, 70, 70); + + console.log(''); +}); +``` + +## Upgrading from 1.x to 2.x + +See the [changelog](https://github.com/Automattic/node-canvas/blob/master/CHANGELOG.md) for a guide to upgrading from 1.x to 2.x. + +For version 1.x documentation, see [the v1.x branch](https://github.com/Automattic/node-canvas/tree/v1.x). + +## Documentation + +This project is an implementation of the Web Canvas API and implements that API as closely as possible. For API documentation, please visit [Mozilla Web Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API). (See [Compatibility Status](https://github.com/Automattic/node-canvas/wiki/Compatibility-Status) for the current API compliance.) All utility methods and non-standard APIs are documented below. + +### Utility methods + +- [createCanvas()](#createcanvas) +- [createImageData()](#createimagedata) +- [loadImage()](#loadimage) +- [registerFont()](#registerfont) + +### Non-standard APIs + +- [Image#src](#imagesrc) +- [Image#dataMode](#imagedatamode) +- [Canvas#toBuffer()](#canvastobuffer) +- [Canvas#createPNGStream()](#canvascreatepngstream) +- [Canvas#createJPEGStream()](#canvascreatejpegstream) +- [Canvas#createPDFStream()](#canvascreatepdfstream) +- [Canvas#toDataURL()](#canvastodataurl) +- [CanvasRenderingContext2D#patternQuality](#canvasrenderingcontext2dpatternquality) +- [CanvasRenderingContext2D#quality](#canvasrenderingcontext2dquality) +- [CanvasRenderingContext2D#textDrawingMode](#canvasrenderingcontext2dtextdrawingmode) +- [CanvasRenderingContext2D#globalCompositeOperation = 'saturate'](#canvasrenderingcontext2dglobalcompositeoperation--saturate) +- [CanvasRenderingContext2D#antialias](#canvasrenderingcontext2dantialias) + +### createCanvas() + +> ```ts +> createCanvas(width: number, height: number, type?: 'PDF'|'SVG') => Canvas +> ``` + +Creates a Canvas instance. This method works in both Node.js and Web browsers, where there is no Canvas constructor. (See `browser.js` for the implementation that runs in browsers.) + +```js +const { createCanvas } = require("canvas"); +const mycanvas = createCanvas(200, 200); +const myPDFcanvas = createCanvas(600, 800, "pdf"); // see "PDF Support" section +``` + +### createImageData() + +> ```ts +> createImageData(width: number, height: number) => ImageData +> createImageData(data: Uint8ClampedArray, width: number, height?: number) => ImageData +> // for alternative pixel formats: +> createImageData(data: Uint16Array, width: number, height?: number) => ImageData +> ``` + +Creates an ImageData instance. This method works in both Node.js and Web browsers. + +```js +const { createImageData } = require("canvas"); +const width = 20, + height = 20; +const arraySize = width * height * 4; +const mydata = createImageData(new Uint8ClampedArray(arraySize), width); +``` + +### loadImage() + +> ```ts +> loadImage() => Promise +> ``` + +Convenience method for loading images. This method works in both Node.js and Web browsers. + +```js +const { loadImage } = require("canvas"); +const myimg = loadImage("http://server.com/image.png"); + +myimg + .then(() => { + // do something with image + }) + .catch((err) => { + console.log("oh no!", err); + }); + +// or with async/await: +const myimg = await loadImage("http://server.com/image.png"); +// do something with image +``` + +### registerFont() + +> ```ts +> registerFont(path: string, { family: string, weight?: string, style?: string }) => void +> ``` + +To use a font file that is not installed as a system font, use `registerFont()` to register the font with Canvas. _This must be done before the Canvas is created._ + +```js +const { registerFont, createCanvas } = require("canvas"); +registerFont("comicsans.ttf", { family: "Comic Sans" }); + +const canvas = createCanvas(500, 500); +const ctx = canvas.getContext("2d"); + +ctx.font = '12px "Comic Sans"'; +ctx.fillText("Everyone hates this font :(", 250, 10); +``` + +The second argument is an object with properties that resemble the CSS properties that are specified in `@font-face` rules. You must specify at least `family`. `weight`, and `style` are optional and default to `'normal'`. + +### Image#src + +> ```ts +> img.src: string|Buffer +> ``` + +As in browsers, `img.src` can be set to a `data:` URI or a remote URL. In addition, node-canvas allows setting `src` to a local file path or `Buffer` instance. + +```javascript +const { Image } = require("canvas"); + +// From a buffer: +fs.readFile("images/squid.png", (err, squid) => { + if (err) throw err; + const img = new Image(); + img.onload = () => ctx.drawImage(img, 0, 0); + img.onerror = (err) => { + throw err; + }; + img.src = squid; +}); + +// From a local file path: +const img = new Image(); +img.onload = () => ctx.drawImage(img, 0, 0); +img.onerror = (err) => { + throw err; +}; +img.src = "images/squid.png"; + +// From a remote URL: +img.src = "http://picsum.photos/200/300"; +// ... as above + +// From a `data:` URI: +img.src = + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="; +// ... as above +``` + +_Note: In some cases, `img.src=` is currently synchronous. However, you should always use `img.onload` and `img.onerror`, as we intend to make `img.src=` always asynchronous as it is in browsers. See https://github.com/Automattic/node-canvas/issues/1007._ + +### Image#dataMode + +> ```ts +> img.dataMode: number +> ``` + +Applies to JPEG images drawn to PDF canvases only. + +Setting `img.dataMode = Image.MODE_MIME` or `Image.MODE_MIME|Image.MODE_IMAGE` enables MIME data tracking of images. When MIME data is tracked, PDF canvases can embed JPEGs directly into the output, rather than re-encoding into PNG. This can drastically reduce filesize and speed up rendering. + +```javascript +const { Image, createCanvas } = require("canvas"); +const canvas = createCanvas(w, h, "pdf"); +const img = new Image(); +img.dataMode = Image.MODE_IMAGE; // Only image data tracked +img.dataMode = Image.MODE_MIME; // Only mime data tracked +img.dataMode = Image.MODE_MIME | Image.MODE_IMAGE; // Both are tracked +``` + +If working with a non-PDF canvas, image data _must_ be tracked; otherwise the output will be junk. + +Enabling mime data tracking has no benefits (only a slow down) unless you are generating a PDF. + +### Canvas#toBuffer() + +> ```ts +> canvas.toBuffer((err: Error|null, result: Buffer) => void, mimeType?: string, config?: any) => void +> canvas.toBuffer(mimeType?: string, config?: any) => Buffer +> ``` + +Creates a [`Buffer`](https://nodejs.org/api/buffer.html) object representing the image contained in the canvas. + +- **callback** If provided, the buffer will be provided in the callback instead of being returned by the function. Invoked with an error as the first argument if encoding failed, or the resulting buffer as the second argument if it succeeded. Not supported for mimeType `raw` or for PDF or SVG canvases. +- **mimeType** A string indicating the image format. Valid options are `image/png`, `image/jpeg` (if node-canvas was built with JPEG support), `raw` (unencoded data in BGRA order on little-endian (most) systems, ARGB on big-endian systems; top-to-bottom), `application/pdf` (for PDF canvases) and `image/svg+xml` (for SVG canvases). Defaults to `image/png` for image canvases, or the corresponding type for PDF or SVG canvas. +- **config** + + - For `image/jpeg`, an object specifying the quality (0 to 1), if progressive compression should be used and/or if chroma subsampling should be used: `{quality: 0.75, progressive: false, chromaSubsampling: true}`. All properties are optional. + + - For `image/png`, an object specifying the ZLIB compression level (between 0 and 9), the compression filter(s), the palette (indexed PNGs only), the the background palette index (indexed PNGs only) and/or the resolution (ppi): `{compressionLevel: 6, filters: canvas.PNG_ALL_FILTERS, palette: undefined, backgroundIndex: 0, resolution: undefined}`. All properties are optional. + + Note that the PNG format encodes the resolution in pixels per meter, so if you specify `96`, the file will encode 3780 ppm (~96.01 ppi). The resolution is undefined by default to match common browser behavior. + + - For `application/pdf`, an object specifying optional document metadata: `{title: string, author: string, subject: string, keywords: string, creator: string, creationDate: Date, modDate: Date}`. All properties are optional and default to `undefined`, except for `creationDate`, which defaults to the current date. _Adding metadata requires Cairo 1.16.0 or later._ + + For a description of these properties, see page 550 of [PDF 32000-1:2008](https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf). + + Note that there is no standard separator for `keywords`. A space is recommended because it is in common use by other applications, and Cairo will enclose the list of keywords in quotes if a comma or semicolon is used. + +**Return value** + +If no callback is provided, a [`Buffer`](https://nodejs.org/api/buffer.html). If a callback is provided, none. + +#### Examples + +```js +// Default: buf contains a PNG-encoded image +const buf = canvas.toBuffer(); + +// PNG-encoded, zlib compression level 3 for faster compression but bigger files, no filtering +const buf2 = canvas.toBuffer("image/png", { + compressionLevel: 3, + filters: canvas.PNG_FILTER_NONE, +}); + +// JPEG-encoded, 50% quality +const buf3 = canvas.toBuffer("image/jpeg", { quality: 0.5 }); + +// Asynchronous PNG +canvas.toBuffer((err, buf) => { + if (err) throw err; // encoding failed + // buf is PNG-encoded image +}); + +canvas.toBuffer( + (err, buf) => { + if (err) throw err; // encoding failed + // buf is JPEG-encoded image at 95% quality + }, + "image/jpeg", + { quality: 0.95 } +); + +// BGRA pixel values, native-endian +const buf4 = canvas.toBuffer("raw"); +const { stride, width } = canvas; +// In memory, this is `canvas.height * canvas.stride` bytes long. +// The top row of pixels, in BGRA order on little-endian hardware, +// left-to-right, is: +const topPixelsBGRALeftToRight = buf4.slice(0, width * 4); +// And the third row is: +const row3 = buf4.slice(2 * stride, 2 * stride + width * 4); + +// SVG and PDF canvases +const myCanvas = createCanvas(w, h, "pdf"); +myCanvas.toBuffer(); // returns a buffer containing a PDF-encoded canvas +// With optional metadata: +myCanvas.toBuffer("application/pdf", { + title: "my picture", + keywords: "node.js demo cairo", + creationDate: new Date(), +}); +``` + +### Canvas#createPNGStream() + +> ```ts +> canvas.createPNGStream(config?: any) => ReadableStream +> ``` + +Creates a [`ReadableStream`](https://nodejs.org/api/stream.html#stream_class_stream_readable) that emits PNG-encoded data. + +- `config` An object specifying the ZLIB compression level (between 0 and 9), the compression filter(s), the palette (indexed PNGs only) and/or the background palette index (indexed PNGs only): `{compressionLevel: 6, filters: canvas.PNG_ALL_FILTERS, palette: undefined, backgroundIndex: 0, resolution: undefined}`. All properties are optional. + +#### Examples + +```javascript +const fs = require("fs"); +const out = fs.createWriteStream(__dirname + "/test.png"); +const stream = canvas.createPNGStream(); +stream.pipe(out); +out.on("finish", () => console.log("The PNG file was created.")); +``` + +To encode indexed PNGs from canvases with `pixelFormat: 'A8'` or `'A1'`, provide an options object: + +```js +const palette = new Uint8ClampedArray([ + //r g b a + 0, + 50, + 50, + 255, // index 1 + 10, + 90, + 90, + 255, // index 2 + 127, + 127, + 255, + 255, + // ... +]); +canvas.createPNGStream({ + palette: palette, + backgroundIndex: 0, // optional, defaults to 0 +}); +``` + +### Canvas#createJPEGStream() + +> ```ts +> canvas.createJPEGStream(config?: any) => ReadableStream +> ``` + +Creates a [`ReadableStream`](https://nodejs.org/api/stream.html#stream_class_stream_readable) that emits JPEG-encoded data. + +_Note: At the moment, `createJPEGStream()` is synchronous under the hood. That is, it runs in the main thread, not in the libuv threadpool._ + +- `config` an object specifying the quality (0 to 1), if progressive compression should be used and/or if chroma subsampling should be used: `{quality: 0.75, progressive: false, chromaSubsampling: true}`. All properties are optional. + +#### Examples + +```javascript +const fs = require("fs"); +const out = fs.createWriteStream(__dirname + "/test.jpeg"); +const stream = canvas.createJPEGStream(); +stream.pipe(out); +out.on("finish", () => console.log("The JPEG file was created.")); + +// Disable 2x2 chromaSubsampling for deeper colors and use a higher quality +const stream = canvas.createJPEGStream({ + quality: 0.95, + chromaSubsampling: false, +}); +``` + +### Canvas#createPDFStream() + +> ```ts +> canvas.createPDFStream(config?: any) => ReadableStream +> ``` + +- `config` an object specifying optional document metadata: `{title: string, author: string, subject: string, keywords: string, creator: string, creationDate: Date, modDate: Date}`. See `toBuffer()` for more information. _Adding metadata requires Cairo 1.16.0 or later._ + +Applies to PDF canvases only. Creates a [`ReadableStream`](https://nodejs.org/api/stream.html#stream_class_stream_readable) that emits the encoded PDF. `canvas.toBuffer()` also produces an encoded PDF, but `createPDFStream()` can be used to reduce memory usage. + +### Canvas#toDataURL() + +This is a standard API, but several non-standard calls are supported. The full list of supported calls is: + +```js +dataUrl = canvas.toDataURL(); // defaults to PNG +dataUrl = canvas.toDataURL("image/png"); +dataUrl = canvas.toDataURL("image/jpeg"); +dataUrl = canvas.toDataURL("image/jpeg", quality); // quality from 0 to 1 +canvas.toDataURL((err, png) => {}); // defaults to PNG +canvas.toDataURL("image/png", (err, png) => {}); +canvas.toDataURL("image/jpeg", (err, jpeg) => {}); // sync JPEG is not supported +canvas.toDataURL("image/jpeg", { ...opts }, (err, jpeg) => {}); // see Canvas#createJPEGStream for valid options +canvas.toDataURL("image/jpeg", quality, (err, jpeg) => {}); // spec-following; quality from 0 to 1 +``` + +### CanvasRenderingContext2D#patternQuality + +> ```ts +> context.patternQuality: 'fast'|'good'|'best'|'nearest'|'bilinear' +> ``` + +Defaults to `'good'`. Affects pattern (gradient, image, etc.) rendering quality. + +### CanvasRenderingContext2D#quality + +> ```ts +> context.quality: 'fast'|'good'|'best'|'nearest'|'bilinear' +> ``` + +Defaults to `'good'`. Like `patternQuality`, but applies to transformations affecting more than just patterns. + +### CanvasRenderingContext2D#textDrawingMode + +> ```ts +> context.textDrawingMode: 'path'|'glyph' +> ``` + +Defaults to `'path'`. The effect depends on the canvas type: + +- **Standard (image)** `glyph` and `path` both result in rasterized text. Glyph mode is faster than `path`, but may result in lower-quality text, especially when rotated or translated. + +- **PDF** `glyph` will embed text instead of paths into the PDF. This is faster to encode, faster to open with PDF viewers, yields a smaller file size and makes the text selectable. The subset of the font needed to render the glyphs will be embedded in the PDF. This is usually the mode you want to use with PDF canvases. + +- **SVG** `glyph` does _not_ cause `` elements to be produced as one might expect ([cairo bug](https://gitlab.freedesktop.org/cairo/cairo/issues/253)). Rather, `glyph` will create a `` section with a `` for each glyph, then those glyphs be reused via `` elements. `path` mode creates a `` element for each text string. `glyph` mode is faster and yields a smaller file size. + +In `glyph` mode, `ctx.strokeText()` and `ctx.fillText()` behave the same (aside from using the stroke and fill style, respectively). + +This property is tracked as part of the canvas state in save/restore. + +### CanvasRenderingContext2D#globalCompositeOperation = 'saturate' + +In addition to all of the standard global composite operations defined by the Canvas specification, the ['saturate'](https://www.cairographics.org/operators/#saturate) operation is also available. + +### CanvasRenderingContext2D#antialias + +> ```ts +> context.antialias: 'default'|'none'|'gray'|'subpixel' +> ``` + +Sets the anti-aliasing mode. + +## PDF Output Support + +node-canvas can create PDF documents instead of images. The canvas type must be set when creating the canvas as follows: + +```js +const canvas = createCanvas(200, 500, "pdf"); +``` + +An additional method `.addPage()` is then available to create multiple page PDFs: + +```js +// On first page +ctx.font = "22px Helvetica"; +ctx.fillText("Hello World", 50, 80); + +ctx.addPage(); +// Now on second page +ctx.font = "22px Helvetica"; +ctx.fillText("Hello World 2", 50, 80); + +canvas.toBuffer(); // returns a PDF file +canvas.createPDFStream(); // returns a ReadableStream that emits a PDF +// With optional document metadata (requires Cairo 1.16.0): +canvas.toBuffer("application/pdf", { + title: "my picture", + keywords: "node.js demo cairo", + creationDate: new Date(), +}); +``` + +It is also possible to create pages with different sizes by passing `width` and `height` to the `.addPage()` method: + +```js +ctx.font = "22px Helvetica"; +ctx.fillText("Hello World", 50, 80); +ctx.addPage(400, 800); + +ctx.fillText("Hello World 2", 50, 80); +``` + +See also: + +- [Image#dataMode](#imagedatamode) for embedding JPEGs in PDFs +- [Canvas#createPDFStream()](#canvascreatepdfstream) for creating PDF streams +- [CanvasRenderingContext2D#textDrawingMode](#canvasrenderingcontext2dtextdrawingmode) + for embedding text instead of paths + +## SVG Output Support + +node-canvas can create SVG documents instead of images. The canvas type must be set when creating the canvas as follows: + +```js +const canvas = createCanvas(200, 500, "svg"); +// Use the normal primitives. +fs.writeFileSync("out.svg", canvas.toBuffer()); +``` + +## SVG Image Support + +If librsvg is available when node-canvas is installed, node-canvas can render SVG images to your canvas context. This currently works by rasterizing the SVG image (i.e. drawing an SVG image to an SVG canvas will not preserve the SVG data). + +```js +const img = new Image(); +img.onload = () => ctx.drawImage(img, 0, 0); +img.onerror = (err) => { + throw err; +}; +img.src = "./example.svg"; +``` + +## Image pixel formats (experimental) + +node-canvas has experimental support for additional pixel formats, roughly following the [Canvas color space proposal](https://github.com/WICG/canvas-color-space/blob/master/CanvasColorSpaceProposal.md). + +```js +const canvas = createCanvas(200, 200); +const ctx = canvas.getContext("2d", { pixelFormat: "A8" }); +``` + +By default, canvases are created in the `RGBA32` format, which corresponds to the native HTML Canvas behavior. Each pixel is 32 bits. The JavaScript APIs that involve pixel data (`getImageData`, `putImageData`) store the colors in the order {red, green, blue, alpha} without alpha pre-multiplication. (The C++ API stores the colors in the order {alpha, red, green, blue} in native-[endian](https://en.wikipedia.org/wiki/Endianness) ordering, with alpha pre-multiplication.) + +These additional pixel formats have experimental support: + +- `RGB24` Like `RGBA32`, but the 8 alpha bits are always opaque. This format is always used if the `alpha` context attribute is set to false (i.e. `canvas.getContext('2d', {alpha: false})`). This format can be faster than `RGBA32` because transparency does not need to be calculated. +- `A8` Each pixel is 8 bits. This format can either be used for creating grayscale images (treating each byte as an alpha value), or for creating indexed PNGs (treating each byte as a palette index) (see [the example using alpha values with `fillStyle`](examples/indexed-png-alpha.js) and [the example using `imageData`](examples/indexed-png-image-data.js)). +- `RGB16_565` Each pixel is 16 bits, with red in the upper 5 bits, green in the middle 6 bits, and blue in the lower 5 bits, in native platform endianness. Some hardware devices and frame buffers use this format. Note that PNG does not support this format; when creating a PNG, the image will be converted to 24-bit RGB. This format is thus suboptimal for generating PNGs. `ImageData` instances for this mode use a `Uint16Array` instead of a `Uint8ClampedArray`. +- `A1` Each pixel is 1 bit, and pixels are packed together into 32-bit quantities. The ordering of the bits matches the endianness of the + platform: on a little-endian machine, the first pixel is the least-significant bit. This format can be used for creating single-color images. _Support for this format is incomplete, see note below._ +- `RGB30` Each pixel is 30 bits, with red in the upper 10, green in the middle 10, and blue in the lower 10. (Requires Cairo 1.12 or later.) _Support for this format is incomplete, see note below._ + +Notes and caveats: + +- Using a non-default format can affect the behavior of APIs that involve pixel data: + + - `context2d.createImageData` The size of the array returned depends on the number of bit per pixel for the underlying image data format, per the above descriptions. + - `context2d.getImageData` The format of the array returned depends on the underlying image mode, per the above descriptions. Be aware of platform endianness, which can be determined using node.js's [`os.endianness()`](https://nodejs.org/api/os.html#os_os_endianness) + function. + - `context2d.putImageData` As above. + +- `A1` and `RGB30` do not yet support `getImageData` or `putImageData`. Have a use case and/or opinion on working with these formats? Open an issue and let us know! (See #935.) + +- `A1`, `A8`, `RGB30` and `RGB16_565` with shadow blurs may crash or not render properly. + +- The `ImageData(width, height)` and `ImageData(Uint8ClampedArray, width)` constructors assume 4 bytes per pixel. To create an `ImageData` instance with a different number of bytes per pixel, use `new ImageData(new Uint8ClampedArray(size), width, height)` or `new ImageData(new Uint16ClampedArray(size), width, height)`. + +## Testing + +First make sure you've built the latest version. Get all the deps you need (see [compiling](#compiling) above), and run: + +``` +npm install --build-from-source +``` + +For visual tests: `npm run test-server` and point your browser to http://localhost:4000. + +For unit tests: `npm run test`. + +## Benchmarks + +Benchmarks live in the `benchmarks` directory. + +## Examples + +Examples line in the `examples` directory. Most produce a png image of the same name, and others such as _live-clock.js_ launch an HTTP server to be viewed in the browser. + +## Original Authors + +- TJ Holowaychuk ([tj](http://github.com/tj)) +- Nathan Rajlich ([TooTallNate](http://github.com/TooTallNate)) +- Rod Vagg ([rvagg](http://github.com/rvagg)) +- Juriy Zaytsev ([kangax](http://github.com/kangax)) + +## License + +### node-canvas + +`node-canvas` is licensed under the [MIT License](./LICENSE). diff --git a/Readme.md b/Readme.md deleted file mode 100644 index cc945aa9a..000000000 --- a/Readme.md +++ /dev/null @@ -1,600 +0,0 @@ -# node-canvas - -![Test](https://github.com/Automattic/node-canvas/workflows/Test/badge.svg) -[![NPM version](https://badge.fury.io/js/canvas.svg)](http://badge.fury.io/js/canvas) - -node-canvas is a [Cairo](http://cairographics.org/)-backed Canvas implementation for [Node.js](http://nodejs.org). - -## Installation - -```bash -$ npm install canvas -``` - -By default, binaries for macOS, Linux and Windows will be downloaded. If you want to build from source, use `npm install --build-from-source` and see the **Compiling** section below. - -The minimum version of Node.js required is **6.0.0**. - -### Compiling - -If you don't have a supported OS or processor architecture, or you use `--build-from-source`, the module will be compiled on your system. This requires several dependencies, including Cairo and Pango. - -For detailed installation information, see the [wiki](https://github.com/Automattic/node-canvas/wiki/_pages). One-line installation instructions for common OSes are below. Note that libgif/giflib, librsvg and libjpeg are optional and only required if you need GIF, SVG and JPEG support, respectively. Cairo v1.10.0 or later is required. - -OS | Command ------ | ----- -OS X | Using [Homebrew](https://brew.sh/):
`brew install pkg-config cairo pango libpng jpeg giflib librsvg pixman` -Ubuntu | `sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev` -Fedora | `sudo yum install gcc-c++ cairo-devel pango-devel libjpeg-turbo-devel giflib-devel` -Solaris | `pkgin install cairo pango pkg-config xproto renderproto kbproto xextproto` -OpenBSD | `doas pkg_add cairo pango png jpeg giflib` -Windows | See the [wiki](https://github.com/Automattic/node-canvas/wiki/Installation:-Windows) -Others | See the [wiki](https://github.com/Automattic/node-canvas/wiki) - -**Mac OS X v10.11+:** If you have recently updated to Mac OS X v10.11+ and are experiencing trouble when compiling, run the following command: `xcode-select --install`. Read more about the problem [on Stack Overflow](http://stackoverflow.com/a/32929012/148072). -If you have xcode 10.0 or higher installed, in order to build from source you need NPM 6.4.1 or higher. - -## Quick Example - -```javascript -const { createCanvas, loadImage } = require('canvas') -const canvas = createCanvas(200, 200) -const ctx = canvas.getContext('2d') - -// Write "Awesome!" -ctx.font = '30px Impact' -ctx.rotate(0.1) -ctx.fillText('Awesome!', 50, 100) - -// Draw line under text -var text = ctx.measureText('Awesome!') -ctx.strokeStyle = 'rgba(0,0,0,0.5)' -ctx.beginPath() -ctx.lineTo(50, 102) -ctx.lineTo(50 + text.width, 102) -ctx.stroke() - -// Draw cat with lime helmet -loadImage('examples/images/lime-cat.jpg').then((image) => { - ctx.drawImage(image, 50, 0, 70, 70) - - console.log('') -}) -``` - -## Upgrading from 1.x to 2.x - -See the [changelog](https://github.com/Automattic/node-canvas/blob/master/CHANGELOG.md) for a guide to upgrading from 1.x to 2.x. - -For version 1.x documentation, see [the v1.x branch](https://github.com/Automattic/node-canvas/tree/v1.x). - -## Documentation - -This project is an implementation of the Web Canvas API and implements that API as closely as possible. For API documentation, please visit [Mozilla Web Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API). (See [Compatibility Status](https://github.com/Automattic/node-canvas/wiki/Compatibility-Status) for the current API compliance.) All utility methods and non-standard APIs are documented below. - -### Utility methods - -* [createCanvas()](#createcanvas) -* [createImageData()](#createimagedata) -* [loadImage()](#loadimage) -* [registerFont()](#registerfont) - -### Non-standard APIs - -* [Image#src](#imagesrc) -* [Image#dataMode](#imagedatamode) -* [Canvas#toBuffer()](#canvastobuffer) -* [Canvas#createPNGStream()](#canvascreatepngstream) -* [Canvas#createJPEGStream()](#canvascreatejpegstream) -* [Canvas#createPDFStream()](#canvascreatepdfstream) -* [Canvas#toDataURL()](#canvastodataurl) -* [CanvasRenderingContext2D#patternQuality](#canvasrenderingcontext2dpatternquality) -* [CanvasRenderingContext2D#quality](#canvasrenderingcontext2dquality) -* [CanvasRenderingContext2D#textDrawingMode](#canvasrenderingcontext2dtextdrawingmode) -* [CanvasRenderingContext2D#globalCompositeOperation = 'saturate'](#canvasrenderingcontext2dglobalcompositeoperation--saturate) -* [CanvasRenderingContext2D#antialias](#canvasrenderingcontext2dantialias) - -### createCanvas() - -> ```ts -> createCanvas(width: number, height: number, type?: 'PDF'|'SVG') => Canvas -> ``` - -Creates a Canvas instance. This method works in both Node.js and Web browsers, where there is no Canvas constructor. (See `browser.js` for the implementation that runs in browsers.) - -```js -const { createCanvas } = require('canvas') -const mycanvas = createCanvas(200, 200) -const myPDFcanvas = createCanvas(600, 800, 'pdf') // see "PDF Support" section -``` - -### createImageData() - -> ```ts -> createImageData(width: number, height: number) => ImageData -> createImageData(data: Uint8ClampedArray, width: number, height?: number) => ImageData -> // for alternative pixel formats: -> createImageData(data: Uint16Array, width: number, height?: number) => ImageData -> ``` - -Creates an ImageData instance. This method works in both Node.js and Web browsers. - -```js -const { createImageData } = require('canvas') -const width = 20, height = 20 -const arraySize = width * height * 4 -const mydata = createImageData(new Uint8ClampedArray(arraySize), width) -``` - -### loadImage() - -> ```ts -> loadImage() => Promise -> ``` - -Convenience method for loading images. This method works in both Node.js and Web browsers. - -```js -const { loadImage } = require('canvas') -const myimg = loadImage('http://server.com/image.png') - -myimg.then(() => { - // do something with image -}).catch(err => { - console.log('oh no!', err) -}) - -// or with async/await: -const myimg = await loadImage('http://server.com/image.png') -// do something with image -``` - -### registerFont() - -> ```ts -> registerFont(path: string, { family: string, weight?: string, style?: string }) => void -> ``` - -To use a font file that is not installed as a system font, use `registerFont()` to register the font with Canvas. *This must be done before the Canvas is created.* - -```js -const { registerFont, createCanvas } = require('canvas') -registerFont('comicsans.ttf', { family: 'Comic Sans' }) - -const canvas = createCanvas(500, 500) -const ctx = canvas.getContext('2d') - -ctx.font = '12px "Comic Sans"' -ctx.fillText('Everyone hates this font :(', 250, 10) -``` - -The second argument is an object with properties that resemble the CSS properties that are specified in `@font-face` rules. You must specify at least `family`. `weight`, and `style` are optional and default to `'normal'`. - -### Image#src - -> ```ts -> img.src: string|Buffer -> ``` - -As in browsers, `img.src` can be set to a `data:` URI or a remote URL. In addition, node-canvas allows setting `src` to a local file path or `Buffer` instance. - -```javascript -const { Image } = require('canvas') - -// From a buffer: -fs.readFile('images/squid.png', (err, squid) => { - if (err) throw err - const img = new Image() - img.onload = () => ctx.drawImage(img, 0, 0) - img.onerror = err => { throw err } - img.src = squid -}) - -// From a local file path: -const img = new Image() -img.onload = () => ctx.drawImage(img, 0, 0) -img.onerror = err => { throw err } -img.src = 'images/squid.png' - -// From a remote URL: -img.src = 'http://picsum.photos/200/300' -// ... as above - -// From a `data:` URI: -img.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==' -// ... as above -``` - -*Note: In some cases, `img.src=` is currently synchronous. However, you should always use `img.onload` and `img.onerror`, as we intend to make `img.src=` always asynchronous as it is in browsers. See https://github.com/Automattic/node-canvas/issues/1007.* - -### Image#dataMode - -> ```ts -> img.dataMode: number -> ``` - -Applies to JPEG images drawn to PDF canvases only. - -Setting `img.dataMode = Image.MODE_MIME` or `Image.MODE_MIME|Image.MODE_IMAGE` enables MIME data tracking of images. When MIME data is tracked, PDF canvases can embed JPEGs directly into the output, rather than re-encoding into PNG. This can drastically reduce filesize and speed up rendering. - -```javascript -const { Image, createCanvas } = require('canvas') -const canvas = createCanvas(w, h, 'pdf') -const img = new Image() -img.dataMode = Image.MODE_IMAGE // Only image data tracked -img.dataMode = Image.MODE_MIME // Only mime data tracked -img.dataMode = Image.MODE_MIME | Image.MODE_IMAGE // Both are tracked -``` - -If working with a non-PDF canvas, image data *must* be tracked; otherwise the output will be junk. - -Enabling mime data tracking has no benefits (only a slow down) unless you are generating a PDF. - -### Canvas#toBuffer() - -> ```ts -> canvas.toBuffer((err: Error|null, result: Buffer) => void, mimeType?: string, config?: any) => void -> canvas.toBuffer(mimeType?: string, config?: any) => Buffer -> ``` - -Creates a [`Buffer`](https://nodejs.org/api/buffer.html) object representing the image contained in the canvas. - -* **callback** If provided, the buffer will be provided in the callback instead of being returned by the function. Invoked with an error as the first argument if encoding failed, or the resulting buffer as the second argument if it succeeded. Not supported for mimeType `raw` or for PDF or SVG canvases. -* **mimeType** A string indicating the image format. Valid options are `image/png`, `image/jpeg` (if node-canvas was built with JPEG support), `raw` (unencoded data in BGRA order on little-endian (most) systems, ARGB on big-endian systems; top-to-bottom), `application/pdf` (for PDF canvases) and `image/svg+xml` (for SVG canvases). Defaults to `image/png` for image canvases, or the corresponding type for PDF or SVG canvas. -* **config** - * For `image/jpeg`, an object specifying the quality (0 to 1), if progressive compression should be used and/or if chroma subsampling should be used: `{quality: 0.75, progressive: false, chromaSubsampling: true}`. All properties are optional. - - * For `image/png`, an object specifying the ZLIB compression level (between 0 and 9), the compression filter(s), the palette (indexed PNGs only), the the background palette index (indexed PNGs only) and/or the resolution (ppi): `{compressionLevel: 6, filters: canvas.PNG_ALL_FILTERS, palette: undefined, backgroundIndex: 0, resolution: undefined}`. All properties are optional. - - Note that the PNG format encodes the resolution in pixels per meter, so if you specify `96`, the file will encode 3780 ppm (~96.01 ppi). The resolution is undefined by default to match common browser behavior. - - * For `application/pdf`, an object specifying optional document metadata: `{title: string, author: string, subject: string, keywords: string, creator: string, creationDate: Date, modDate: Date}`. All properties are optional and default to `undefined`, except for `creationDate`, which defaults to the current date. *Adding metadata requires Cairo 1.16.0 or later.* - - For a description of these properties, see page 550 of [PDF 32000-1:2008](https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf). - - Note that there is no standard separator for `keywords`. A space is recommended because it is in common use by other applications, and Cairo will enclose the list of keywords in quotes if a comma or semicolon is used. - -**Return value** - -If no callback is provided, a [`Buffer`](https://nodejs.org/api/buffer.html). If a callback is provided, none. - -#### Examples - -```js -// Default: buf contains a PNG-encoded image -const buf = canvas.toBuffer() - -// PNG-encoded, zlib compression level 3 for faster compression but bigger files, no filtering -const buf2 = canvas.toBuffer('image/png', { compressionLevel: 3, filters: canvas.PNG_FILTER_NONE }) - -// JPEG-encoded, 50% quality -const buf3 = canvas.toBuffer('image/jpeg', { quality: 0.5 }) - -// Asynchronous PNG -canvas.toBuffer((err, buf) => { - if (err) throw err // encoding failed - // buf is PNG-encoded image -}) - -canvas.toBuffer((err, buf) => { - if (err) throw err // encoding failed - // buf is JPEG-encoded image at 95% quality -}, 'image/jpeg', { quality: 0.95 }) - -// BGRA pixel values, native-endian -const buf4 = canvas.toBuffer('raw') -const { stride, width } = canvas -// In memory, this is `canvas.height * canvas.stride` bytes long. -// The top row of pixels, in BGRA order on little-endian hardware, -// left-to-right, is: -const topPixelsBGRALeftToRight = buf4.slice(0, width * 4) -// And the third row is: -const row3 = buf4.slice(2 * stride, 2 * stride + width * 4) - -// SVG and PDF canvases -const myCanvas = createCanvas(w, h, 'pdf') -myCanvas.toBuffer() // returns a buffer containing a PDF-encoded canvas -// With optional metadata: -myCanvas.toBuffer('application/pdf', { - title: 'my picture', - keywords: 'node.js demo cairo', - creationDate: new Date() -}) -``` - -### Canvas#createPNGStream() - -> ```ts -> canvas.createPNGStream(config?: any) => ReadableStream -> ``` - -Creates a [`ReadableStream`](https://nodejs.org/api/stream.html#stream_class_stream_readable) that emits PNG-encoded data. - -* `config` An object specifying the ZLIB compression level (between 0 and 9), the compression filter(s), the palette (indexed PNGs only) and/or the background palette index (indexed PNGs only): `{compressionLevel: 6, filters: canvas.PNG_ALL_FILTERS, palette: undefined, backgroundIndex: 0, resolution: undefined}`. All properties are optional. - -#### Examples - -```javascript -const fs = require('fs') -const out = fs.createWriteStream(__dirname + '/test.png') -const stream = canvas.createPNGStream() -stream.pipe(out) -out.on('finish', () => console.log('The PNG file was created.')) -``` - -To encode indexed PNGs from canvases with `pixelFormat: 'A8'` or `'A1'`, provide an options object: - -```js -const palette = new Uint8ClampedArray([ - //r g b a - 0, 50, 50, 255, // index 1 - 10, 90, 90, 255, // index 2 - 127, 127, 255, 255 - // ... -]) -canvas.createPNGStream({ - palette: palette, - backgroundIndex: 0 // optional, defaults to 0 -}) -``` - -### Canvas#createJPEGStream() - -> ```ts -> canvas.createJPEGStream(config?: any) => ReadableStream -> ``` - -Creates a [`ReadableStream`](https://nodejs.org/api/stream.html#stream_class_stream_readable) that emits JPEG-encoded data. - -*Note: At the moment, `createJPEGStream()` is synchronous under the hood. That is, it runs in the main thread, not in the libuv threadpool.* - -* `config` an object specifying the quality (0 to 1), if progressive compression should be used and/or if chroma subsampling should be used: `{quality: 0.75, progressive: false, chromaSubsampling: true}`. All properties are optional. - -#### Examples - -```javascript -const fs = require('fs') -const out = fs.createWriteStream(__dirname + '/test.jpeg') -const stream = canvas.createJPEGStream() -stream.pipe(out) -out.on('finish', () => console.log('The JPEG file was created.')) - -// Disable 2x2 chromaSubsampling for deeper colors and use a higher quality -const stream = canvas.createJPEGStream({ - quality: 0.95, - chromaSubsampling: false -}) -``` - -### Canvas#createPDFStream() - -> ```ts -> canvas.createPDFStream(config?: any) => ReadableStream -> ``` - -* `config` an object specifying optional document metadata: `{title: string, author: string, subject: string, keywords: string, creator: string, creationDate: Date, modDate: Date}`. See `toBuffer()` for more information. *Adding metadata requires Cairo 1.16.0 or later.* - -Applies to PDF canvases only. Creates a [`ReadableStream`](https://nodejs.org/api/stream.html#stream_class_stream_readable) that emits the encoded PDF. `canvas.toBuffer()` also produces an encoded PDF, but `createPDFStream()` can be used to reduce memory usage. - -### Canvas#toDataURL() - -This is a standard API, but several non-standard calls are supported. The full list of supported calls is: - -```js -dataUrl = canvas.toDataURL() // defaults to PNG -dataUrl = canvas.toDataURL('image/png') -dataUrl = canvas.toDataURL('image/jpeg') -dataUrl = canvas.toDataURL('image/jpeg', quality) // quality from 0 to 1 -canvas.toDataURL((err, png) => { }) // defaults to PNG -canvas.toDataURL('image/png', (err, png) => { }) -canvas.toDataURL('image/jpeg', (err, jpeg) => { }) // sync JPEG is not supported -canvas.toDataURL('image/jpeg', {...opts}, (err, jpeg) => { }) // see Canvas#createJPEGStream for valid options -canvas.toDataURL('image/jpeg', quality, (err, jpeg) => { }) // spec-following; quality from 0 to 1 -``` - -### CanvasRenderingContext2D#patternQuality - -> ```ts -> context.patternQuality: 'fast'|'good'|'best'|'nearest'|'bilinear' -> ``` - -Defaults to `'good'`. Affects pattern (gradient, image, etc.) rendering quality. - -### CanvasRenderingContext2D#quality - -> ```ts -> context.quality: 'fast'|'good'|'best'|'nearest'|'bilinear' -> ``` - -Defaults to `'good'`. Like `patternQuality`, but applies to transformations affecting more than just patterns. - -### CanvasRenderingContext2D#textDrawingMode - -> ```ts -> context.textDrawingMode: 'path'|'glyph' -> ``` - -Defaults to `'path'`. The effect depends on the canvas type: - -* **Standard (image)** `glyph` and `path` both result in rasterized text. Glyph mode is faster than `path`, but may result in lower-quality text, especially when rotated or translated. - -* **PDF** `glyph` will embed text instead of paths into the PDF. This is faster to encode, faster to open with PDF viewers, yields a smaller file size and makes the text selectable. The subset of the font needed to render the glyphs will be embedded in the PDF. This is usually the mode you want to use with PDF canvases. - -* **SVG** `glyph` does *not* cause `` elements to be produced as one might expect ([cairo bug](https://gitlab.freedesktop.org/cairo/cairo/issues/253)). Rather, `glyph` will create a `` section with a `` for each glyph, then those glyphs be reused via `` elements. `path` mode creates a `` element for each text string. `glyph` mode is faster and yields a smaller file size. - -In `glyph` mode, `ctx.strokeText()` and `ctx.fillText()` behave the same (aside from using the stroke and fill style, respectively). - -This property is tracked as part of the canvas state in save/restore. - -### CanvasRenderingContext2D#globalCompositeOperation = 'saturate' - -In addition to all of the standard global composite operations defined by the Canvas specification, the ['saturate'](https://www.cairographics.org/operators/#saturate) operation is also available. - -### CanvasRenderingContext2D#antialias - -> ```ts -> context.antialias: 'default'|'none'|'gray'|'subpixel' -> ``` - -Sets the anti-aliasing mode. - -## PDF Output Support - -node-canvas can create PDF documents instead of images. The canvas type must be set when creating the canvas as follows: - -```js -const canvas = createCanvas(200, 500, 'pdf') -``` - -An additional method `.addPage()` is then available to create multiple page PDFs: - -```js -// On first page -ctx.font = '22px Helvetica' -ctx.fillText('Hello World', 50, 80) - -ctx.addPage() -// Now on second page -ctx.font = '22px Helvetica' -ctx.fillText('Hello World 2', 50, 80) - -canvas.toBuffer() // returns a PDF file -canvas.createPDFStream() // returns a ReadableStream that emits a PDF -// With optional document metadata (requires Cairo 1.16.0): -canvas.toBuffer('application/pdf', { - title: 'my picture', - keywords: 'node.js demo cairo', - creationDate: new Date() -}) -``` - -It is also possible to create pages with different sizes by passing `width` and `height` to the `.addPage()` method: - -```js -ctx.font = '22px Helvetica' -ctx.fillText('Hello World', 50, 80) -ctx.addPage(400, 800) - -ctx.fillText('Hello World 2', 50, 80) -``` - -See also: - -* [Image#dataMode](#imagedatamode) for embedding JPEGs in PDFs -* [Canvas#createPDFStream()](#canvascreatepdfstream) for creating PDF streams -* [CanvasRenderingContext2D#textDrawingMode](#canvasrenderingcontext2dtextdrawingmode) - for embedding text instead of paths - -## SVG Output Support - -node-canvas can create SVG documents instead of images. The canvas type must be set when creating the canvas as follows: - -```js -const canvas = createCanvas(200, 500, 'svg') -// Use the normal primitives. -fs.writeFileSync('out.svg', canvas.toBuffer()) -``` - -## SVG Image Support - -If librsvg is available when node-canvas is installed, node-canvas can render SVG images to your canvas context. This currently works by rasterizing the SVG image (i.e. drawing an SVG image to an SVG canvas will not preserve the SVG data). - -```js -const img = new Image() -img.onload = () => ctx.drawImage(img, 0, 0) -img.onerror = err => { throw err } -img.src = './example.svg' -``` - -## Image pixel formats (experimental) - -node-canvas has experimental support for additional pixel formats, roughly following the [Canvas color space proposal](https://github.com/WICG/canvas-color-space/blob/master/CanvasColorSpaceProposal.md). - -```js -const canvas = createCanvas(200, 200) -const ctx = canvas.getContext('2d', { pixelFormat: 'A8' }) -``` - -By default, canvases are created in the `RGBA32` format, which corresponds to the native HTML Canvas behavior. Each pixel is 32 bits. The JavaScript APIs that involve pixel data (`getImageData`, `putImageData`) store the colors in the order {red, green, blue, alpha} without alpha pre-multiplication. (The C++ API stores the colors in the order {alpha, red, green, blue} in native-[endian](https://en.wikipedia.org/wiki/Endianness) ordering, with alpha pre-multiplication.) - -These additional pixel formats have experimental support: - -* `RGB24` Like `RGBA32`, but the 8 alpha bits are always opaque. This format is always used if the `alpha` context attribute is set to false (i.e. `canvas.getContext('2d', {alpha: false})`). This format can be faster than `RGBA32` because transparency does not need to be calculated. -* `A8` Each pixel is 8 bits. This format can either be used for creating grayscale images (treating each byte as an alpha value), or for creating indexed PNGs (treating each byte as a palette index) (see [the example using alpha values with `fillStyle`](examples/indexed-png-alpha.js) and [the example using `imageData`](examples/indexed-png-image-data.js)). -* `RGB16_565` Each pixel is 16 bits, with red in the upper 5 bits, green in the middle 6 bits, and blue in the lower 5 bits, in native platform endianness. Some hardware devices and frame buffers use this format. Note that PNG does not support this format; when creating a PNG, the image will be converted to 24-bit RGB. This format is thus suboptimal for generating PNGs. `ImageData` instances for this mode use a `Uint16Array` instead of a `Uint8ClampedArray`. -* `A1` Each pixel is 1 bit, and pixels are packed together into 32-bit quantities. The ordering of the bits matches the endianness of the - platform: on a little-endian machine, the first pixel is the least-significant bit. This format can be used for creating single-color images. *Support for this format is incomplete, see note below.* -* `RGB30` Each pixel is 30 bits, with red in the upper 10, green in the middle 10, and blue in the lower 10. (Requires Cairo 1.12 or later.) *Support for this format is incomplete, see note below.* - -Notes and caveats: - -* Using a non-default format can affect the behavior of APIs that involve pixel data: - - * `context2d.createImageData` The size of the array returned depends on the number of bit per pixel for the underlying image data format, per the above descriptions. - * `context2d.getImageData` The format of the array returned depends on the underlying image mode, per the above descriptions. Be aware of platform endianness, which can be determined using node.js's [`os.endianness()`](https://nodejs.org/api/os.html#os_os_endianness) - function. - * `context2d.putImageData` As above. - -* `A1` and `RGB30` do not yet support `getImageData` or `putImageData`. Have a use case and/or opinion on working with these formats? Open an issue and let us know! (See #935.) - -* `A1`, `A8`, `RGB30` and `RGB16_565` with shadow blurs may crash or not render properly. - -* The `ImageData(width, height)` and `ImageData(Uint8ClampedArray, width)` constructors assume 4 bytes per pixel. To create an `ImageData` instance with a different number of bytes per pixel, use `new ImageData(new Uint8ClampedArray(size), width, height)` or `new ImageData(new Uint16ClampedArray(size), width, height)`. - -## Testing - -First make sure you've built the latest version. Get all the deps you need (see [compiling](#compiling) above), and run: - -``` -npm install --build-from-source -``` - -For visual tests: `npm run test-server` and point your browser to http://localhost:4000. - -For unit tests: `npm run test`. - -## Benchmarks - -Benchmarks live in the `benchmarks` directory. - -## Examples - -Examples line in the `examples` directory. Most produce a png image of the same name, and others such as *live-clock.js* launch an HTTP server to be viewed in the browser. - -## Original Authors - - - TJ Holowaychuk ([tj](http://github.com/tj)) - - Nathan Rajlich ([TooTallNate](http://github.com/TooTallNate)) - - Rod Vagg ([rvagg](http://github.com/rvagg)) - - Juriy Zaytsev ([kangax](http://github.com/kangax)) - -## License - -### node-canvas - -(The MIT License) - -Copyright (c) 2010 LearnBoost, and contributors <dev@learnboost.com> - -Copyright (c) 2014 Automattic, Inc and contributors <dev@automattic.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the 'Software'), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -### BMP parser - -See [license](src/bmp/LICENSE.md) diff --git a/benchmarks/run.js b/benchmarks/run.js index 14f4db379..8db31da7a 100644 --- a/benchmarks/run.js +++ b/benchmarks/run.js @@ -4,176 +4,187 @@ * milliseconds to complete. */ -const { createCanvas } = require('../') -const canvas = createCanvas(200, 200) -const largeCanvas = createCanvas(1000, 1000) -const ctx = canvas.getContext('2d') +const { createCanvas } = require("../"); +const canvas = createCanvas(200, 200); +const largeCanvas = createCanvas(1000, 1000); +const ctx = canvas.getContext("2d"); -const initialTimes = 10 -const minDurationMs = 2000 +const initialTimes = 10; +const minDurationMs = 2000; -const queue = [] -let running = false +const queue = []; +let running = false; -function bm (label, fn) { - queue.push({ label: label, fn: fn }) - next() +function bm(label, fn) { + queue.push({ label: label, fn: fn }); + next(); } -function next () { - if (queue.length && !running) { - run(queue.pop(), initialTimes, Date.now()) - } +function next() { + if (queue.length && !running) { + run(queue.pop(), initialTimes, Date.now()); + } } -function run (benchmark, n, start) { - running = true - const originalN = n - const fn = benchmark.fn +function run(benchmark, n, start) { + running = true; + const originalN = n; + const fn = benchmark.fn; - if (fn.length) { // async - let pending = n + if (fn.length) { + // async + let pending = n; - while (n--) { - fn(function () { - --pending || done(benchmark, originalN, start, true) - }) + while (n--) { + fn(function () { + --pending || done(benchmark, originalN, start, true); + }); + } + } else { + while (n--) fn(); + done(benchmark, originalN, start); } - } else { - while (n--) fn() - done(benchmark, originalN, start) - } } -function done (benchmark, times, start, isAsync) { - const duration = Date.now() - start +function done(benchmark, times, start, isAsync) { + const duration = Date.now() - start; - if (duration < minDurationMs) { - run(benchmark, times * 2, Date.now()) - } else { - const opsSec = times / duration * 1000 - if (isAsync) { - console.log(' - \x1b[33m%s\x1b[0m %s ops/sec (%s times, async)', benchmark.label, opsSec.toLocaleString(), times) + if (duration < minDurationMs) { + run(benchmark, times * 2, Date.now()); } else { - console.log(' - \x1b[33m%s\x1b[0m %s ops/sec (%s times)', benchmark.label, opsSec.toLocaleString(), times) + const opsSec = (times / duration) * 1000; + if (isAsync) { + console.log( + " - \x1b[33m%s\x1b[0m %s ops/sec (%s times, async)", + benchmark.label, + opsSec.toLocaleString(), + times + ); + } else { + console.log( + " - \x1b[33m%s\x1b[0m %s ops/sec (%s times)", + benchmark.label, + opsSec.toLocaleString(), + times + ); + } + running = false; + next(); } - running = false - next() - } } // node-canvas -bm('save/restore', function () { - for (let i = 0; i < 1000; i++) { - const max = i & 15 - for (let j = 0; j < max; ++j) { - ctx.save() +bm("save/restore", function () { + for (let i = 0; i < 1000; i++) { + const max = i & 15; + for (let j = 0; j < max; ++j) { + ctx.save(); + } + for (let j = 0; j < max; ++j) { + ctx.restore(); + } } - for (let j = 0; j < max; ++j) { - ctx.restore() - } - } -}) +}); -bm('fillStyle= name', function () { - for (let i = 0; i < 10000; i++) { - ctx.fillStyle = '#fefefe' - } -}) +bm("fillStyle= name", function () { + for (let i = 0; i < 10000; i++) { + ctx.fillStyle = "#fefefe"; + } +}); -bm('lineTo()', function () { - ctx.lineTo(0, 50) -}) +bm("lineTo()", function () { + ctx.lineTo(0, 50); +}); -bm('arc()', function () { - ctx.arc(75, 75, 50, 0, Math.PI * 2, true) -}) +bm("arc()", function () { + ctx.arc(75, 75, 50, 0, Math.PI * 2, true); +}); -bm('fillStyle= hex', function () { - ctx.fillStyle = '#FFCCAA' -}) +bm("fillStyle= hex", function () { + ctx.fillStyle = "#FFCCAA"; +}); -bm('fillStyle= rgba()', function () { - ctx.fillStyle = 'rgba(0,255,80,1)' -}) +bm("fillStyle= rgba()", function () { + ctx.fillStyle = "rgba(0,255,80,1)"; +}); // Apparently there's a bug in cairo by which the fillRect and strokeRect are // slow only after a ton of arcs have been drawn. -bm('fillRect()', function () { - ctx.fillRect(50, 50, 100, 100) -}) - -bm('strokeRect()', function () { - ctx.strokeRect(50, 50, 100, 100) -}) - -bm('linear gradients', function () { - const lingrad = ctx.createLinearGradient(0, 50, 0, 95) - lingrad.addColorStop(0.5, '#000') - lingrad.addColorStop(1, 'rgba(0,0,0,0)') - ctx.fillStyle = lingrad - ctx.fillRect(10, 10, 130, 130) -}) - -bm('toBuffer() 200x200', function () { - canvas.toBuffer() -}) - -bm('toBuffer() 1000x1000', function () { - largeCanvas.toBuffer() -}) - -bm('toBuffer() async 200x200', function (done) { - canvas.toBuffer(function (err, buf) { - if (err) throw err - - done() - }) -}) - -bm('toBuffer() async 1000x1000', function (done) { - largeCanvas.toBuffer(function (err, buf) { - if (err) throw err - - done() - }) -}) +bm("fillRect()", function () { + ctx.fillRect(50, 50, 100, 100); +}); + +bm("strokeRect()", function () { + ctx.strokeRect(50, 50, 100, 100); +}); + +bm("linear gradients", function () { + const lingrad = ctx.createLinearGradient(0, 50, 0, 95); + lingrad.addColorStop(0.5, "#000"); + lingrad.addColorStop(1, "rgba(0,0,0,0)"); + ctx.fillStyle = lingrad; + ctx.fillRect(10, 10, 130, 130); +}); + +bm("toBuffer() 200x200", function () { + canvas.toBuffer(); +}); + +bm("toBuffer() 1000x1000", function () { + largeCanvas.toBuffer(); +}); + +bm("toBuffer() async 200x200", function (done) { + canvas.toBuffer(function (err, buf) { + if (err) throw err; + + done(); + }); +}); + +bm("toBuffer() async 1000x1000", function (done) { + largeCanvas.toBuffer(function (err, buf) { + if (err) throw err; + + done(); + }); +}); bm('toBuffer().toString("base64") 200x200', function () { - canvas.toBuffer().toString('base64') -}) - -bm('toDataURL() 200x200', function () { - canvas.toDataURL() -}) - -bm('moveTo() / arc() / stroke()', function () { - ctx.beginPath() - ctx.arc(75, 75, 50, 0, Math.PI * 2, true) // Outer circle - ctx.moveTo(110, 75) - ctx.arc(75, 75, 35, 0, Math.PI, false) // Mouth - ctx.moveTo(65, 65) - ctx.arc(60, 65, 5, 0, Math.PI * 2, true) // Left eye - ctx.moveTo(95, 65) - ctx.arc(90, 65, 5, 0, Math.PI * 2, true) // Right eye - ctx.stroke() -}) - -bm('createImageData(300,300)', function () { - ctx.createImageData(300, 300) -}) - -bm('getImageData(0,0,100,100)', function () { - ctx.getImageData(0, 0, 100, 100) -}) - -bm('PNGStream 200x200', function (done) { - const stream = canvas.createPNGStream() - stream.on('data', function (chunk) { - // whatever - }) - stream.on('end', function () { - done() - }) -}) + canvas.toBuffer().toString("base64"); +}); + +bm("toDataURL() 200x200", function () { + canvas.toDataURL(); +}); + +bm("moveTo() / arc() / stroke()", function () { + ctx.beginPath(); + ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // Outer circle + ctx.moveTo(110, 75); + ctx.arc(75, 75, 35, 0, Math.PI, false); // Mouth + ctx.moveTo(65, 65); + ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // Left eye + ctx.moveTo(95, 65); + ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // Right eye + ctx.stroke(); +}); + +bm("createImageData(300,300)", function () { + ctx.createImageData(300, 300); +}); + +bm("getImageData(0,0,100,100)", function () { + ctx.getImageData(0, 0, 100, 100); +}); + +bm("PNGStream 200x200", function (done) { + const stream = canvas.createPNGStream(); + stream.on("data", function (chunk) { + // whatever + }); + stream.on("end", function () { + done(); + }); +}); diff --git a/binding.gyp b/binding.gyp deleted file mode 100644 index 19a33e816..000000000 --- a/binding.gyp +++ /dev/null @@ -1,230 +0,0 @@ -{ - 'conditions': [ - ['OS=="win"', { - 'variables': { - 'GTK_Root%': 'C:/GTK', # Set the location of GTK all-in-one bundle - 'with_jpeg%': 'false', - 'with_gif%': 'false', - 'with_rsvg%': 'false', - 'variables': { # Nest jpeg_root to evaluate it before with_jpeg - 'jpeg_root%': ') -> Self { + Self { + width, + height, + r#type: kind.unwrap_or_default(), + stride: 0, + target: DrawTarget::new(width, height), + } + } + + pub fn to_buffer( + &self, + mime: Option, + config: Option>, + ) -> Buffer { + let _mime = mime.unwrap_or(String::from("image/png")); + let _config = config.unwrap_or(Either3::A(PngConfig::default())); + + // TODO: Implementation + Buffer::from(vec![]) + } + + pub fn get_context(&self, id: String) -> CanvasRenderingContext2d { + match id.as_str() { + "2d" => CanvasRenderingContext2d::new(self), + "webgl" | "webgl2" => panic!("Unsupported context type!"), + + _ => panic!("Unknown context ID: {}", id), + } + } +} + +expose_napi!(Canvas, get_context, getContext, (&self, id: String) -> CanvasRenderingContext2d); +// expose_napi!(Canvas, to_buffer, toBuffer, (&self, mime: StringOption, config: BufferConfig) -> Buffer); diff --git a/crates/canvas/src/canvas/cap.rs b/crates/canvas/src/canvas/cap.rs new file mode 100644 index 000000000..080784a25 --- /dev/null +++ b/crates/canvas/src/canvas/cap.rs @@ -0,0 +1,18 @@ +#[napi] +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Serialize, Deserialize)] +pub enum LineCap { + #[default] + Butt, + Round, + Square, +} + +impl LineCap { + pub fn into_raqote(&self) -> raqote::LineCap { + match *self { + LineCap::Butt => raqote::LineCap::Butt, + LineCap::Round => raqote::LineCap::Round, + LineCap::Square => raqote::LineCap::Square, + } + } +} diff --git a/crates/canvas/src/canvas/color.rs b/crates/canvas/src/canvas/color.rs new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/crates/canvas/src/canvas/color.rs @@ -0,0 +1 @@ + diff --git a/crates/canvas/src/canvas/fill.rs b/crates/canvas/src/canvas/fill.rs new file mode 100644 index 000000000..0c3d244a2 --- /dev/null +++ b/crates/canvas/src/canvas/fill.rs @@ -0,0 +1,7 @@ +#[napi] +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Serialize, Deserialize)] +pub enum FillRule { + #[default] + EvenOdd, + NonZero, +} diff --git a/crates/canvas/src/canvas/format.rs b/crates/canvas/src/canvas/format.rs new file mode 100644 index 000000000..fc2a68ac3 --- /dev/null +++ b/crates/canvas/src/canvas/format.rs @@ -0,0 +1,11 @@ +#[napi] +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Serialize, Deserialize)] +pub enum PixelFormat { + #[default] + Rgba32, + Rgb24, + A8, + Rgb16_565, + A1, + Rgb30, +} diff --git a/crates/canvas/src/canvas/gradient.rs b/crates/canvas/src/canvas/gradient.rs new file mode 100644 index 000000000..5385ea5f6 --- /dev/null +++ b/crates/canvas/src/canvas/gradient.rs @@ -0,0 +1,28 @@ +use csscolorparser::parse; +use raqote::{Color, GradientStop}; + +#[napi] +#[derive(Debug, Clone, Default)] +pub struct CanvasGradient { + stops: Vec, +} + +#[napi] +impl CanvasGradient { + #[napi(constructor)] + pub fn new() -> Self { + Self::default() + } + + #[napi] + pub fn add_color_stop(&mut self, offset: f64, color: String) { + let offset = offset as f32; + let [r, g, b, a] = parse(&color).unwrap().to_rgba8(); + let color = Color::new(a, r, g, b); + + self.stops.push(GradientStop { + position: offset, + color, + }); + } +} diff --git a/crates/canvas/src/canvas/join.rs b/crates/canvas/src/canvas/join.rs new file mode 100644 index 000000000..ba697b354 --- /dev/null +++ b/crates/canvas/src/canvas/join.rs @@ -0,0 +1,18 @@ +#[napi] +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Serialize, Deserialize)] +pub enum LineJoin { + Bevel, + #[default] + Miter, + Round, +} + +impl LineJoin { + pub fn into_raqote(&self) -> raqote::LineJoin { + match *self { + LineJoin::Bevel => raqote::LineJoin::Bevel, + LineJoin::Miter => raqote::LineJoin::Miter, + LineJoin::Round => raqote::LineJoin::Round, + } + } +} diff --git a/crates/canvas/src/canvas/mod.rs b/crates/canvas/src/canvas/mod.rs new file mode 100644 index 000000000..21fd7d2ba --- /dev/null +++ b/crates/canvas/src/canvas/mod.rs @@ -0,0 +1,9 @@ +pub mod canvas; +pub mod cap; +pub mod color; +pub mod fill; +pub mod format; +pub mod gradient; +pub mod join; +pub mod mode; +pub mod operation; diff --git a/crates/canvas/src/canvas/mode.rs b/crates/canvas/src/canvas/mode.rs new file mode 100644 index 000000000..087b35112 --- /dev/null +++ b/crates/canvas/src/canvas/mode.rs @@ -0,0 +1,21 @@ +use raqote::AntialiasMode; + +#[napi] +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Serialize, Deserialize)] +pub enum AliasingMode { + #[default] + Default, + None, + Gray, + Subpixel, +} + +impl AliasingMode { + pub fn into_raqote(&self) -> AntialiasMode { + match *self { + AliasingMode::Default | AliasingMode::Gray => AntialiasMode::Gray, + AliasingMode::None => AntialiasMode::None, + AliasingMode::Subpixel => panic!("Raqote does not suppoort subpixel mode!"), + } + } +} diff --git a/crates/canvas/src/canvas/operation.rs b/crates/canvas/src/canvas/operation.rs new file mode 100644 index 000000000..60d51181c --- /dev/null +++ b/crates/canvas/src/canvas/operation.rs @@ -0,0 +1,35 @@ +#[napi] +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Serialize, Deserialize)] +pub enum GlobalCompositeOperation { + Clear, + Copy, + Destination, + #[default] + SourceOver, + DestinationOver, + SourceIn, + DestinationIn, + SourceOut, + DestinationOut, + SourceAtop, + DestinationAtop, + Xor, + Lighter, + Normal, + Multiply, + Screen, + Overlay, + Darken, + Lighten, + ColorDodge, + ColorBurn, + HardLight, + SoftLight, + Difference, + Exclusion, + Hue, + Saturation, + Color, + Luminosity, + Saturate, +} diff --git a/crates/canvas/src/config/jpeg.rs b/crates/canvas/src/config/jpeg.rs new file mode 100644 index 000000000..dbdce243f --- /dev/null +++ b/crates/canvas/src/config/jpeg.rs @@ -0,0 +1,18 @@ +#[napi(object)] +#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct JpegConfig { + pub quality: f64, + pub progressive: bool, + pub chroma_subsampling: bool, +} + +#[napi] +impl Default for JpegConfig { + fn default() -> Self { + Self { + quality: 0.75, + progressive: false, + chroma_subsampling: true, + } + } +} diff --git a/crates/canvas/src/config/mod.rs b/crates/canvas/src/config/mod.rs new file mode 100644 index 000000000..6cc64fd23 --- /dev/null +++ b/crates/canvas/src/config/mod.rs @@ -0,0 +1,3 @@ +pub mod jpeg; +pub mod pdf; +pub mod png; diff --git a/crates/canvas/src/config/pdf.rs b/crates/canvas/src/config/pdf.rs new file mode 100644 index 000000000..c26a22197 --- /dev/null +++ b/crates/canvas/src/config/pdf.rs @@ -0,0 +1,11 @@ +#[napi(object)] +#[derive(Debug, Clone, PartialEq, PartialOrd, Default, Serialize, Deserialize)] +pub struct PdfConfig { + pub title: Option, + pub author: Option, + pub subject: Option, + pub keywords: Option, + pub creator: Option, + pub creation_date: f64, + pub mod_date: Option, +} diff --git a/crates/canvas/src/config/png.rs b/crates/canvas/src/config/png.rs new file mode 100644 index 000000000..cf0f1986d --- /dev/null +++ b/crates/canvas/src/config/png.rs @@ -0,0 +1,24 @@ +use crate::image::filters::PngFilters; + +#[napi(object)] +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] +pub struct PngConfig { + pub compression_level: u8, + pub filters: PngFilters, + pub palette: Option>, + pub background_index: i32, + pub resolution: Option, +} + +#[napi] +impl Default for PngConfig { + fn default() -> Self { + Self { + compression_level: 6, + filters: PngFilters::All, + palette: None, + background_index: 0, + resolution: None, + } + } +} diff --git a/crates/canvas/src/context/context.rs b/crates/canvas/src/context/context.rs new file mode 100644 index 000000000..3ea636e2c --- /dev/null +++ b/crates/canvas/src/context/context.rs @@ -0,0 +1,126 @@ +use csscolorparser::parse; +use raqote::{BlendMode, Color, DrawOptions, DrawTarget, StrokeStyle}; + +use crate::{ + alias_property_borrow, + canvas::{ + canvas::Canvas, cap::LineCap, join::LineJoin, mode::AliasingMode, + operation::GlobalCompositeOperation, + }, + dom::matrix::DomMatrix, + image::quality::Quality, + text::{align::TextAlign, baseline::TextBaseline, mode::TextDrawingMode}, +}; + +pub const DEFAULT_COLOR: &str = "black"; + +#[napi] +#[derive(Debug, Clone)] +pub struct CanvasRenderingContext2d { + pub pattern_quality: Quality, + pub quality: Quality, + pub text_drawing_mode: TextDrawingMode, + pub antialias: AliasingMode, + pub line_width: f64, + pub line_cap: LineCap, + pub line_join: LineJoin, + pub miter_limit: f64, + pub line_dash_offset: f64, + pub font: String, + pub text_align: TextAlign, + pub text_baseline: TextBaseline, + pub shadow_blur: f64, + pub shadow_color: String, + pub shadow_offset_x: f64, + pub shadow_offset_y: f64, + pub global_alpha: f64, + pub global_composite_operation: GlobalCompositeOperation, + pub image_smoothing_enabled: bool, + pub fill_style: Option, + pub stroke_style: Option, + + pub(crate) current_transform: DomMatrix, + pub(crate) canvas: Canvas, + pub(crate) target: DrawTarget, +} + +#[napi] +impl CanvasRenderingContext2d { + #[napi(constructor)] + pub fn new(canvas: &Canvas) -> Self { + Self { + pattern_quality: Default::default(), + quality: Default::default(), + text_drawing_mode: Default::default(), + antialias: Default::default(), + line_width: Default::default(), + line_cap: Default::default(), + line_join: Default::default(), + miter_limit: Default::default(), + line_dash_offset: Default::default(), + font: Default::default(), + text_align: Default::default(), + text_baseline: Default::default(), + shadow_blur: Default::default(), + shadow_color: Default::default(), + shadow_offset_x: Default::default(), + shadow_offset_y: Default::default(), + global_alpha: Default::default(), + global_composite_operation: Default::default(), + image_smoothing_enabled: Default::default(), + fill_style: Default::default(), + stroke_style: Default::default(), + current_transform: Default::default(), + canvas: canvas.clone(), + target: canvas.clone().target, + } + } +} + +impl CanvasRenderingContext2d { + pub fn get_options(&self) -> DrawOptions { + DrawOptions { + blend_mode: BlendMode::SrcOver, + alpha: self.global_alpha as f32, + antialias: self.antialias.into_raqote(), + } + } + + pub fn get_stroke_style(&self) -> StrokeStyle { + StrokeStyle { + cap: self.line_cap.into_raqote(), + dash_array: Vec::new(), + dash_offset: self.line_dash_offset as f32, + join: self.line_join.into_raqote(), + miter_limit: self.miter_limit as f32, + width: self.line_width as f32, + } + } + + pub fn get_fill_color(&self) -> Color { + let color = self.fill_style.clone().unwrap_or(DEFAULT_COLOR.to_string()); + let [r, g, b, a] = parse(&color).unwrap().to_rgba8(); + + Color::new(a, r, g, b) + } + + pub fn get_stroke_color(&self) -> Color { + let color = self + .stroke_style + .clone() + .unwrap_or(DEFAULT_COLOR.to_string()); + + let [r, g, b, a] = parse(&color).unwrap().to_rgba8(); + + Color::new(a, r, g, b) + } +} + +alias_property_borrow!( + CanvasRenderingContext2d, + DomMatrix, + currentTransform, + current_transform +); + +alias_property_borrow!(CanvasRenderingContext2d, Canvas, canvas, canvas); diff --git a/crates/canvas/src/context/mod.rs b/crates/canvas/src/context/mod.rs new file mode 100644 index 000000000..341231993 --- /dev/null +++ b/crates/canvas/src/context/mod.rs @@ -0,0 +1,3 @@ +pub mod context; +pub mod rect; +pub mod text; diff --git a/crates/canvas/src/context/rect.rs b/crates/canvas/src/context/rect.rs new file mode 100644 index 000000000..5d6496b23 --- /dev/null +++ b/crates/canvas/src/context/rect.rs @@ -0,0 +1,51 @@ +use raqote::{PathBuilder, SolidSource, Source}; + +use super::context::CanvasRenderingContext2d; + +#[napi] +impl CanvasRenderingContext2d { + #[napi] + pub fn clear_rect(&mut self, x: f64, y: f64, width: f64, height: f64) { + self.target.fill_rect( + x as f32, + y as f32, + width as f32, + height as f32, + &Source::Solid(SolidSource { + a: 0, + b: 0, + g: 0, + r: 0, + }), + &self.get_options(), + ); + } + + #[napi] + pub fn fill_rect(&mut self, x: f64, y: f64, width: f64, height: f64) { + self.target.fill_rect( + x as f32, + y as f32, + width as f32, + height as f32, + &Source::Solid(SolidSource::from(self.get_fill_color())), + &self.get_options(), + ); + } + + #[napi] + pub fn stroke_rect(&mut self, x: f64, y: f64, width: f64, height: f64) { + let mut path = PathBuilder::new(); + + path.rect(x as f32, y as f32, width as f32, height as f32); + + let path = path.finish(); + + self.target.stroke( + &path, + &Source::Solid(SolidSource::from(self.get_stroke_color())), + &self.get_stroke_style(), + &self.get_options(), + ); + } +} diff --git a/crates/canvas/src/context/text.rs b/crates/canvas/src/context/text.rs new file mode 100644 index 000000000..7aa5b7f82 --- /dev/null +++ b/crates/canvas/src/context/text.rs @@ -0,0 +1,35 @@ +use font_kit::{font::Font, source::SystemSource}; +use raqote::{DrawOptions, Point, SolidSource, Source}; + +use super::context::CanvasRenderingContext2d; + +impl CanvasRenderingContext2d { + pub fn get_font(&self) -> Font { + // TODO: Get from self.font + SystemSource::new() + .select_family_by_name("Arial") + .unwrap() + .fonts()[0] + .load() + .unwrap() + } + + // TODO: Use max_w + pub fn fill_text(&mut self, text: String, x: f64, y: f64, _max_w: Option) { + // TODO: Get from self.font + let font_size = 12.0; + + self.target.draw_text( + &self.get_font(), + font_size, + &text, + Point::new(x as f32, y as f32), + &Source::Solid(SolidSource::from(self.get_stroke_color())), + &DrawOptions { + alpha: self.global_alpha as f32, + antialias: self.antialias.into_raqote(), + ..Default::default() + }, + ) + } +} diff --git a/crates/canvas/src/create.rs b/crates/canvas/src/create.rs new file mode 100644 index 000000000..baa05d3ff --- /dev/null +++ b/crates/canvas/src/create.rs @@ -0,0 +1,30 @@ +use napi::bindgen_prelude::{Either3, Uint16Array, Uint8ClampedArray}; + +use crate::{ + canvas::canvas::Canvas, + image::{data::ImageData, kind::ImageKind}, +}; + +#[napi] +pub fn create_canvas(width: i32, height: i32, kind: Option) -> Canvas { + Canvas::new(width, height, kind) +} + +#[napi] +pub fn create_image_data( + width: i32, + height: Option, + data: Option, Uint8ClampedArray, Uint16Array>>, +) -> ImageData { + if let Some(data) = data { + let data = match data { + Either3::A(val) => unsafe { val.align_to().1.to_vec() }, + Either3::B(val) => val.to_vec(), + Either3::C(val) => unsafe { val.to_vec().align_to().1.to_vec() }, + }; + + ImageData::with_data(Uint8ClampedArray::new(data), width, height) + } else { + ImageData::new(width, height.unwrap_or(0)) + } +} diff --git a/crates/canvas/src/dom/matrix/convert.rs b/crates/canvas/src/dom/matrix/convert.rs new file mode 100644 index 000000000..1ef1bcd82 --- /dev/null +++ b/crates/canvas/src/dom/matrix/convert.rs @@ -0,0 +1,94 @@ +use napi::bindgen_prelude::{Float32Array, Float64Array}; + +use crate::util::clone_into_array; + +use super::{ + parse::{parse_transform_unchecked, TRANSFORM_REGEX}, + DomMatrix, +}; + +impl From> for DomMatrix { + fn from(value: Box<[f64]>) -> Self { + Self::from(value.to_vec()) + } +} + +impl From> for DomMatrix { + fn from(value: Vec) -> Self { + Self::from(value.as_slice()) + } +} + +impl<'a> From<&'a [f64]> for DomMatrix { + fn from(init: &'a [f64]) -> Self { + if init.len() == 6 { + Self::from(clone_into_array::<[f64; 6], f64>(&init[0..6])) + } else if init.len() == 16 { + Self::from(clone_into_array::<[f64; 16], f64>(&init[0..16])) + } else { + // No way to return an error :( + Self::identity() + } + } +} + +impl From<[f64; 6]> for DomMatrix { + fn from(init: [f64; 6]) -> Self { + Self::identity().set_values(init.to_vec()) + } +} + +impl From<[f64; 16]> for DomMatrix { + fn from(init: [f64; 16]) -> Self { + Self::identity().set_values(init.to_vec()) + } +} + +impl From<[f32; 6]> for DomMatrix { + fn from(value: [f32; 6]) -> Self { + DomMatrix::from(value.map(|v| v as f64)) + } +} + +impl From<[f32; 16]> for DomMatrix { + fn from(value: [f32; 16]) -> Self { + DomMatrix::from(value.map(|v| v as f64)) + } +} + +impl From for DomMatrix { + fn from(init: String) -> Self { + if init.is_empty() { + Self::identity() + } else { + let transforms = TRANSFORM_REGEX + .splitn(&init, 20) + .map(parse_transform_unchecked) + .collect::>(); + + if transforms.is_empty() { + Self::default() + } else { + let mut init = DomMatrix::from(transforms[0]); + + for transform in transforms { + init.multiply_self(&DomMatrix::from(transform)); + } + + init + } + } + } +} + +impl From for DomMatrix { + fn from(value: Float32Array) -> Self { + Self::from(value.to_vec().iter().map(|v| *v as f64).collect::>()) + } +} + +impl From for DomMatrix { + fn from(value: Float64Array) -> Self { + Self::from(value.to_vec()) + } +} diff --git a/crates/canvas/src/dom/matrix/flip.rs b/crates/canvas/src/dom/matrix/flip.rs new file mode 100644 index 000000000..ec3b2a712 --- /dev/null +++ b/crates/canvas/src/dom/matrix/flip.rs @@ -0,0 +1,34 @@ +use super::DomMatrix; + +#[napi] +impl DomMatrix { + #[napi] + pub fn flip_x(&self) -> Self { + self.clone().flip_x_self() + } + + #[napi] + pub fn flip_y(&self) -> Self { + self.clone().flip_y_self() + } + + #[napi] + pub fn flip_x_self(&mut self) -> Self { + let mut tmp = Self::identity(); + + tmp.m11 = -1.0; + + *self = tmp * *self; + *self + } + + #[napi] + pub fn flip_y_self(&mut self) -> Self { + let mut tmp = Self::identity(); + + tmp.m22 = -1.0; + + *self = tmp * *self; + *self + } +} diff --git a/crates/canvas/src/dom/matrix/from.rs b/crates/canvas/src/dom/matrix/from.rs new file mode 100644 index 000000000..6ef13c686 --- /dev/null +++ b/crates/canvas/src/dom/matrix/from.rs @@ -0,0 +1,32 @@ +use napi::bindgen_prelude::{Float32Array, Float64Array}; + +use super::DomMatrix; + +#[napi] +impl DomMatrix { + #[napi] + pub fn from_array(init: Vec) -> Self { + Self::from(init) + } + + #[napi] + pub fn from_string(init: String) -> Self { + Self::from(init) + } + + #[napi] + #[allow(clippy::clone_on_copy)] + pub fn from_matrix(other: &DomMatrix) -> Self { + other.clone() + } + + #[napi] + pub fn from_float32_array(arr: Float32Array) -> Self { + Self::from(arr) + } + + #[napi] + pub fn from_float64_array(arr: Float64Array) -> Self { + Self::from(arr) + } +} diff --git a/crates/canvas/src/dom/matrix/inverse.rs b/crates/canvas/src/dom/matrix/inverse.rs new file mode 100644 index 000000000..7f2dd74e2 --- /dev/null +++ b/crates/canvas/src/dom/matrix/inverse.rs @@ -0,0 +1,138 @@ +use super::DomMatrix; + +#[napi] +impl DomMatrix { + #[napi] + pub fn inverse(&self) -> Self { + self.clone().invert_self() + } + + #[napi] + pub fn invert_self(&mut self) -> Self { + let mut inv = Self::blank(); + + inv.m11 = self.m22 * self.m33 * self.m44 + - self.m22 * self.m34 * self.m43 + - self.m32 * self.m23 * self.m44 + + self.m32 * self.m24 * self.m43 + + self.m42 * self.m23 * self.m34 + - self.m42 * self.m24 * self.m33; + + inv.m21 = -self.m21 * self.m33 * self.m44 + + self.m21 * self.m34 * self.m43 + + self.m31 * self.m23 * self.m44 + - self.m31 * self.m24 * self.m43 + - self.m41 * self.m23 * self.m34 + + self.m41 * self.m24 * self.m33; + + inv.m31 = self.m21 * self.m32 * self.m44 + - self.m21 * self.m34 * self.m42 + - self.m31 * self.m22 * self.m44 + + self.m31 * self.m24 * self.m42 + + self.m41 * self.m22 * self.m34 + - self.m41 * self.m24 * self.m32; + + inv.m41 = -self.m21 * self.m32 * self.m43 + + self.m21 * self.m33 * self.m42 + + self.m31 * self.m22 * self.m43 + - self.m31 * self.m23 * self.m42 + - self.m41 * self.m22 * self.m33 + + self.m41 * self.m23 * self.m32; + + let det = self.m11 * inv.m11 + self.m12 * inv.m21 + self.m13 * inv.m31 + self.m14 * inv.m41; + + if det == 0.0 { + self.set_values([f64::NAN; 16].to_vec()); + return *self; + } + + inv.m12 = -self.m12 * self.m33 * self.m44 + + self.m12 * self.m34 * self.m43 + + self.m32 * self.m13 * self.m44 + - self.m32 * self.m14 * self.m43 + - self.m42 * self.m13 * self.m34 + + self.m42 * self.m14 * self.m33; + + inv.m22 = self.m11 * self.m33 * self.m44 + - self.m11 * self.m34 * self.m43 + - self.m31 * self.m13 * self.m44 + + self.m31 * self.m14 * self.m43 + + self.m41 * self.m13 * self.m34 + - self.m41 * self.m14 * self.m33; + + inv.m32 = -self.m11 * self.m32 * self.m44 + + self.m11 * self.m34 * self.m42 + + self.m31 * self.m12 * self.m44 + - self.m31 * self.m14 * self.m42 + - self.m41 * self.m12 * self.m34 + + self.m41 * self.m14 * self.m32; + + inv.m42 = self.m11 * self.m32 * self.m43 + - self.m11 * self.m33 * self.m42 + - self.m31 * self.m12 * self.m43 + + self.m31 * self.m13 * self.m42 + + self.m41 * self.m12 * self.m33 + - self.m41 * self.m13 * self.m32; + + inv.m13 = self.m12 * self.m23 * self.m44 + - self.m12 * self.m24 * self.m43 + - self.m22 * self.m13 * self.m44 + + self.m22 * self.m14 * self.m43 + + self.m42 * self.m13 * self.m24 + - self.m42 * self.m14 * self.m23; + + inv.m23 = -self.m11 * self.m23 * self.m44 + + self.m11 * self.m24 * self.m43 + + self.m21 * self.m13 * self.m44 + - self.m21 * self.m14 * self.m43 + - self.m41 * self.m13 * self.m24 + + self.m41 * self.m14 * self.m23; + + inv.m33 = self.m11 * self.m22 * self.m44 + - self.m11 * self.m24 * self.m42 + - self.m21 * self.m12 * self.m44 + + self.m21 * self.m14 * self.m42 + + self.m41 * self.m12 * self.m24 + - self.m41 * self.m14 * self.m22; + + inv.m43 = -self.m11 * self.m22 * self.m43 + + self.m11 * self.m23 * self.m42 + + self.m21 * self.m12 * self.m43 + - self.m21 * self.m13 * self.m42 + - self.m41 * self.m12 * self.m23 + + self.m41 * self.m13 * self.m22; + + inv.m14 = -self.m12 * self.m23 * self.m34 + + self.m12 * self.m24 * self.m33 + + self.m22 * self.m13 * self.m34 + - self.m22 * self.m14 * self.m33 + - self.m32 * self.m13 * self.m24 + + self.m32 * self.m14 * self.m23; + + inv.m24 = self.m11 * self.m23 * self.m34 + - self.m11 * self.m24 * self.m33 + - self.m21 * self.m13 * self.m34 + + self.m21 * self.m14 * self.m33 + + self.m31 * self.m13 * self.m24 + - self.m31 * self.m14 * self.m23; + + inv.m34 = -self.m11 * self.m22 * self.m34 + + self.m11 * self.m24 * self.m32 + + self.m21 * self.m12 * self.m34 + - self.m21 * self.m14 * self.m32 + - self.m31 * self.m12 * self.m24 + + self.m31 * self.m14 * self.m22; + + inv.m44 = self.m11 * self.m22 * self.m33 + - self.m11 * self.m23 * self.m32 + - self.m21 * self.m12 * self.m33 + + self.m21 * self.m13 * self.m32 + + self.m31 * self.m12 * self.m23 + - self.m31 * self.m13 * self.m22; + + let vals = inv.values(); + + self.set_values(vals.iter().map(|v| v / det).collect()); + *self + } +} diff --git a/crates/canvas/src/dom/matrix/mod.rs b/crates/canvas/src/dom/matrix/mod.rs new file mode 100644 index 000000000..7418c5566 --- /dev/null +++ b/crates/canvas/src/dom/matrix/mod.rs @@ -0,0 +1,105 @@ +use crate::alias_property; +use std::f64::consts::PI; + +pub mod convert; +pub mod flip; +pub mod from; +pub mod inverse; +pub mod ops; +pub mod out; +pub mod parse; +pub mod rotate; +pub mod scale; +pub mod skew; +pub mod transform; +pub mod translate; +pub mod values; + +#[cfg(test)] +pub mod tests; + +pub const RAD_TO_DEG: f64 = 180.0 / PI; +pub const DEG_TO_RAD: f64 = PI / 180.0; +pub const PI_360: f64 = PI / 360.0; + +#[napi] +#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Default, Serialize, Deserialize)] +pub struct DomMatrix { + pub m11: f64, + pub m12: f64, + pub m13: f64, + pub m14: f64, + pub m21: f64, + pub m22: f64, + pub m23: f64, + pub m24: f64, + pub m31: f64, + pub m32: f64, + pub m33: f64, + pub m34: f64, + pub m41: f64, + pub m42: f64, + pub m43: f64, + pub m44: f64, +} + +#[napi] +impl DomMatrix { + #[napi(constructor)] + pub fn new(init: Option>) -> Self { + if let Some(init) = init { + Self::from(init) + } else { + Self::identity() + } + } + + #[napi] + pub fn blank() -> Self { + Self::default() + } + + #[napi] + pub fn identity() -> Self { + Self { + m11: 1.0, + m12: 0.0, + m13: 0.0, + m14: 0.0, + m21: 0.0, + m22: 1.0, + m23: 0.0, + m24: 0.0, + m31: 0.0, + m32: 0.0, + m33: 1.0, + m34: 0.0, + m41: 0.0, + m42: 0.0, + m43: 0.0, + m44: 1.0, + } + } + + #[napi(getter)] + pub fn is_identity(&self) -> bool { + self.values().eq(&Self::identity().values()) + } + + #[napi(getter)] + pub fn is_2d(&self) -> bool { + self.m31 == 0.0 + && self.m32 == 0.0 + && self.m33 == 1.0 + && self.m34 == 0.0 + && self.m43 == 0.0 + && self.m44 == 1.0 + } +} + +alias_property!(DomMatrix, f64, a, m11); +alias_property!(DomMatrix, f64, b, m12); +alias_property!(DomMatrix, f64, c, m21); +alias_property!(DomMatrix, f64, d, m22); +alias_property!(DomMatrix, f64, e, m41); +alias_property!(DomMatrix, f64, f, m42); diff --git a/crates/canvas/src/dom/matrix/ops/mod.rs b/crates/canvas/src/dom/matrix/ops/mod.rs new file mode 100644 index 000000000..4a47c6626 --- /dev/null +++ b/crates/canvas/src/dom/matrix/ops/mod.rs @@ -0,0 +1 @@ +pub mod mul; diff --git a/crates/canvas/src/dom/matrix/ops/mul.rs b/crates/canvas/src/dom/matrix/ops/mul.rs new file mode 100644 index 000000000..b84236cd7 --- /dev/null +++ b/crates/canvas/src/dom/matrix/ops/mul.rs @@ -0,0 +1,138 @@ +use std::ops::{Mul, MulAssign}; + +use crate::{dom::matrix::DomMatrix, fix_zero}; + +#[napi] +impl DomMatrix { + #[napi] + pub fn multiply(&self, other: &DomMatrix) -> DomMatrix { + self.clone().multiply_self(other) + } + + #[napi] + pub fn pre_multiply(&self, other: &DomMatrix) -> DomMatrix { + self.clone().pre_multiply_self(other) + } + + #[napi] + pub fn pre_multiply_self(&mut self, other: &DomMatrix) -> DomMatrix { + *self = other.multiply(self); + *self + } + + #[napi] + pub fn multiply_self(&mut self, other: &DomMatrix) -> DomMatrix { + let m11 = self.m11 * other.m11 + + self.m12 * other.m21 + + self.m13 * other.m31 + + self.m14 * other.m41; + + let m12 = self.m11 * other.m12 + + self.m12 * other.m22 + + self.m13 * other.m32 + + self.m14 * other.m42; + + let m13 = self.m11 * other.m13 + + self.m12 * other.m23 + + self.m13 * other.m33 + + self.m14 * other.m43; + + let m14 = self.m11 * other.m14 + + self.m12 * other.m24 + + self.m13 * other.m34 + + self.m14 * other.m44; + + let m21 = self.m21 * other.m11 + + self.m22 * other.m21 + + self.m23 * other.m31 + + self.m24 * other.m41; + + let m22 = self.m21 * other.m12 + + self.m22 * other.m22 + + self.m23 * other.m32 + + self.m24 * other.m42; + + let m23 = self.m21 * other.m13 + + self.m22 * other.m23 + + self.m23 * other.m33 + + self.m24 * other.m43; + + let m24 = self.m21 * other.m14 + + self.m22 * other.m24 + + self.m23 * other.m34 + + self.m24 * other.m44; + + let m31 = self.m31 * other.m11 + + self.m32 * other.m21 + + self.m33 * other.m31 + + self.m34 * other.m41; + + let m32 = self.m31 * other.m12 + + self.m32 * other.m22 + + self.m33 * other.m32 + + self.m34 * other.m42; + + let m33 = self.m31 * other.m13 + + self.m32 * other.m23 + + self.m33 * other.m33 + + self.m34 * other.m43; + + let m34 = self.m31 * other.m14 + + self.m32 * other.m24 + + self.m33 * other.m34 + + self.m34 * other.m44; + + let m41 = self.m41 * other.m11 + + self.m42 * other.m21 + + self.m43 * other.m31 + + self.m44 * other.m41; + + let m42 = self.m41 * other.m12 + + self.m42 * other.m22 + + self.m43 * other.m32 + + self.m44 * other.m42; + + let m43 = self.m41 * other.m13 + + self.m42 * other.m23 + + self.m43 * other.m33 + + self.m44 * other.m43; + + let m44 = self.m41 * other.m14 + + self.m42 * other.m24 + + self.m43 * other.m34 + + self.m44 * other.m44; + + self.m11 = fix_zero!(m11); + self.m12 = fix_zero!(m12); + self.m13 = fix_zero!(m13); + self.m14 = fix_zero!(m14); + self.m21 = fix_zero!(m21); + self.m22 = fix_zero!(m22); + self.m23 = fix_zero!(m23); + self.m24 = fix_zero!(m24); + self.m31 = fix_zero!(m31); + self.m32 = fix_zero!(m32); + self.m33 = fix_zero!(m33); + self.m34 = fix_zero!(m34); + self.m41 = fix_zero!(m41); + self.m42 = fix_zero!(m42); + self.m43 = fix_zero!(m43); + self.m44 = fix_zero!(m44); + + *self + } +} + +impl Mul for DomMatrix { + type Output = Self; + + fn mul(self, rhs: Self) -> Self::Output { + self.multiply(&rhs) + } +} + +impl MulAssign for DomMatrix { + fn mul_assign(&mut self, rhs: Self) { + self.multiply_self(&rhs); + } +} diff --git a/crates/canvas/src/dom/matrix/out.rs b/crates/canvas/src/dom/matrix/out.rs new file mode 100644 index 000000000..5bf24c69c --- /dev/null +++ b/crates/canvas/src/dom/matrix/out.rs @@ -0,0 +1,21 @@ +use napi::bindgen_prelude::{Float32Array, Float64Array}; + +use super::DomMatrix; + +#[napi] +impl DomMatrix { + #[napi] + pub fn to_float32_array(&self) -> Float32Array { + Float32Array::new( + self.values() + .iter() + .map(|v| *v as f32) + .collect::>(), + ) + } + + #[napi] + pub fn to_float64_array(&self) -> Float64Array { + Float64Array::new(self.values().to_vec()) + } +} diff --git a/crates/canvas/src/dom/matrix/parse.rs b/crates/canvas/src/dom/matrix/parse.rs new file mode 100644 index 000000000..2973fb0a5 --- /dev/null +++ b/crates/canvas/src/dom/matrix/parse.rs @@ -0,0 +1,58 @@ +use anyhow::Result; +use once_cell::sync::Lazy; +use regex::Regex; + +use crate::util::clone_into_array; + +pub static TRANSFORM_REGEX: Lazy = Lazy::new(|| Regex::new(r"\)\s+").unwrap()); + +pub fn parse_matrix(data: &str) -> Result<[f64; 16]> { + let parsed = data.replace("matrix(", ""); + let parsed = parsed.splitn(7, ',').collect::>(); + + if parsed.len() != 6 { + Err(anyhow!("Failed to parse matrix: {}", data)) + } else { + let parsed = parsed + .iter() + .map(|v| v.parse::().unwrap()) + .collect::>(); + + Ok([ + parsed[0], parsed[1], 0.0, 0.0, parsed[2], parsed[3], 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, + parsed[4], parsed[5], 0.0, 1.0, + ]) + } +} + +pub fn parse_matrix3d(data: &str) -> Result<[f64; 16]> { + let parsed = data.replace("matrix3d(", ""); + let parsed = parsed.splitn(17, ',').collect::>(); + + if parsed.len() != 16 { + Err(anyhow!("Failed to parse matrix: {}", data)) + } else { + Ok(clone_into_array( + parsed + .iter() + .map(|v| v.parse::().unwrap()) + .collect::>() + .as_slice(), + )) + } +} + +#[allow(clippy::suspicious_splitn)] +pub fn parse_transform(data: &str) -> Result<[f64; 16]> { + let kind = data.splitn(1, '(').next().unwrap(); + + match kind { + "matrix" => parse_matrix(data), + "matrix3d" => parse_matrix3d(data), + _ => Err(anyhow!("Unknown transform type!")), + } +} + +pub fn parse_transform_unchecked(data: &str) -> [f64; 16] { + parse_transform(data).unwrap() +} diff --git a/crates/canvas/src/dom/matrix/rotate.rs b/crates/canvas/src/dom/matrix/rotate.rs new file mode 100644 index 000000000..4595df4fa --- /dev/null +++ b/crates/canvas/src/dom/matrix/rotate.rs @@ -0,0 +1,107 @@ +use crate::fix_zero; + +use super::{DomMatrix, DEG_TO_RAD, PI_360, RAD_TO_DEG}; + +#[napi] +impl DomMatrix { + #[napi] + pub fn rotate(&self, rx: f64, ry: Option, rz: Option) -> Self { + self.clone().rotate_self(rx, ry, rz) + } + + #[napi] + pub fn rotate_self(&mut self, mut rx: f64, o_ry: Option, o_rz: Option) -> Self { + let mut ry = o_ry.unwrap_or(0.0); + let mut rz = o_rz.unwrap_or(0.0); + + if o_ry.is_none() && o_rz.is_none() { + rz = rx; + rx = 0.0; + ry = 0.0; + } + + let rad_x = rx * DEG_TO_RAD; + let rad_y = ry * DEG_TO_RAD; + let rad_z = rz * DEG_TO_RAD; + + let cos_x = rad_x.cos(); + let sin_x = -rad_x.sin(); + let cos_y = rad_y.cos(); + let sin_y = -rad_y.sin(); + let cos_z = rad_z.cos(); + let sin_z = -rad_z.sin(); + + let mut tmp = Self::identity(); + + tmp.m11 = fix_zero!(cos_y * cos_z); + tmp.m12 = fix_zero!(-cos_y * sin_z); + tmp.m13 = fix_zero!(sin_y); + tmp.m21 = fix_zero!(sin_x * sin_y * cos_z + cos_x * sin_z); + tmp.m22 = fix_zero!(cos_x * cos_z - sin_x * sin_y * sin_z); + tmp.m23 = fix_zero!(-sin_x * cos_y); + tmp.m31 = fix_zero!(sin_x * sin_z - cos_x * sin_y * cos_z); + tmp.m32 = fix_zero!(sin_x * cos_z + cos_x * sin_y * sin_z); + tmp.m33 = fix_zero!(cos_x * cos_y); + + *self = tmp * *self; + *self + } + + #[napi] + pub fn rotate_axis_angle(&self, x: f64, y: f64, z: f64, alpha: f64) -> Self { + self.clone().rotate_axis_angle_self(x, y, z, alpha) + } + + #[napi] + pub fn rotate_axis_angle_self(&mut self, x: f64, y: f64, z: f64, alpha: f64) -> Self { + let mut tmp = Self::identity(); + let len = (x * x + y * y + z * z).sqrt(); + + if len == 0.0 { + return tmp; + } + + let x = x / len; + let y = y / len; + let z = z / len; + + let angle = alpha * PI_360; + let sin_a = angle.sin(); + let cos_a = angle.cos(); + let sin_a2 = sin_a * sin_a; + + let x2 = x * x; + let y2 = y * y; + let z2 = z * z; + + tmp.m11 = 1.0 - 2.0 * (y2 + z2) * sin_a2; + tmp.m12 = 2.0 * (x * y * sin_a2 + z * sin_a * cos_a); + tmp.m13 = 2.0 * (x * z * sin_a2 - y * sin_a * cos_a); + tmp.m21 = 2.0 * (y * x * sin_a2 - z * sin_a * cos_a); + tmp.m22 = 1.0 - 2.0 * (z2 + x2) * sin_a2; + tmp.m23 = 2.0 * (y * z * sin_a2 + x * sin_a * cos_a); + tmp.m31 = 2.0 * (z * x * sin_a2 + y * sin_a * cos_a); + tmp.m32 = 2.0 * (z * y * sin_a2 - x * sin_a * cos_a); + tmp.m33 = 1.0 - 2.0 * (x2 + y2) * sin_a2; + + *self = tmp * *self; + *self + } + + #[napi] + pub fn rotate_from_vector(&self, x: Option, y: Option) -> Self { + self.clone().rotate_from_vector_self(x, y) + } + + #[napi] + pub fn rotate_from_vector_self(&mut self, x: Option, y: Option) -> Self { + let x = x.unwrap_or(0.0); + let y = y.unwrap_or(0.0); + + if x == 0.0 && y == 0.0 { + self.rotate_self(0.0, None, None) + } else { + self.rotate_self(y.atan2(x) * RAD_TO_DEG, None, None) + } + } +} diff --git a/crates/canvas/src/dom/matrix/scale.rs b/crates/canvas/src/dom/matrix/scale.rs new file mode 100644 index 000000000..69fb47648 --- /dev/null +++ b/crates/canvas/src/dom/matrix/scale.rs @@ -0,0 +1,71 @@ +use super::DomMatrix; + +#[napi] +impl DomMatrix { + #[napi] + pub fn scale( + &self, + x: Option, + y: Option, + z: Option, + ox: Option, + oy: Option, + oz: Option, + ) -> Self { + self.clone().scale_self(x, y, z, ox, oy, oz) + } + + #[napi] + pub fn scale_3d( + &self, + scale: Option, + ox: Option, + oy: Option, + oz: Option, + ) -> Self { + self.clone().scale_3d_self(scale, ox, oy, oz) + } + + #[napi] + pub fn scale_3d_self( + &mut self, + scale: Option, + ox: Option, + oy: Option, + oz: Option, + ) -> Self { + self.scale_self(scale, scale, scale, ox, oy, oz) + } + + #[napi] + pub fn scale_self( + &mut self, + x: Option, + y: Option, + z: Option, + ox: Option, + oy: Option, + oz: Option, + ) -> Self { + let x = x.unwrap_or(1.0); + let y = y.unwrap_or(x); + let z = z.unwrap_or(1.0); + let ox = ox.unwrap_or(0.0); + let oy = oy.unwrap_or(0.0); + let oz = oz.unwrap_or(0.0); + + self.translate_self(ox, Some(oy), Some(oz)); + + let mut tmp = Self::identity(); + + tmp.m11 = x; + tmp.m22 = y; + tmp.m33 = z; + + *self = tmp * *self; + + self.translate_self(-ox, Some(-oy), Some(-oz)); + + *self + } +} diff --git a/crates/canvas/src/dom/matrix/skew.rs b/crates/canvas/src/dom/matrix/skew.rs new file mode 100644 index 000000000..78923c472 --- /dev/null +++ b/crates/canvas/src/dom/matrix/skew.rs @@ -0,0 +1,53 @@ +use std::f64::consts::PI; + +use super::DomMatrix; + +#[napi] +impl DomMatrix { + #[napi] + pub fn skew_x(&self, angle: f64) -> Self { + self.clone().skew_x_self(angle) + } + + #[napi] + pub fn skew_y(&self, angle: f64) -> Self { + self.clone().skew_y_self(angle) + } + + #[napi] + pub fn skew(&self, angle_x: f64, angle_y: f64) -> Self { + self.clone().skew_self(angle_x, angle_y) + } + + #[napi] + pub fn skew_x_self(&mut self, angle: f64) -> Self { + self.skew_self(angle, 0.0) + } + + #[napi] + pub fn skew_y_self(&mut self, angle: f64) -> Self { + self.skew_self(0.0, angle) + } + + #[napi] + pub fn skew_self(&mut self, angle_x: f64, angle_y: f64) -> Self { + let mut tmp = Self::identity(); + + if angle_x > 0.0 { + let rad_x = (angle_x * PI) / 180.0; + let tan_x = rad_x.tan(); + + tmp.m21 = tan_x; + } + + if angle_y > 0.0 { + let rad_y = (angle_y * PI) / 180.0; + let tan_y = rad_y.tan(); + + tmp.m12 = tan_y; + } + + *self = tmp * *self; + *self + } +} diff --git a/crates/canvas/src/dom/matrix/tests/flip.rs b/crates/canvas/src/dom/matrix/tests/flip.rs new file mode 100644 index 000000000..af46d20bb --- /dev/null +++ b/crates/canvas/src/dom/matrix/tests/flip.rs @@ -0,0 +1,31 @@ +use crate::{assert_approx_eq, dom::matrix::DomMatrix}; + +#[test] +pub fn flip_x_works() { + let mut mat = DomMatrix::new(None); + + mat.rotate_self(70.0, None, None); + mat.flip_x_self(); + + assert_approx_eq!(mat.get_a(), -0.34202); + assert_approx_eq!(mat.get_b(), -0.93969); + assert_approx_eq!(mat.get_c(), -0.93969); + assert_approx_eq!(mat.get_d(), 0.34202); + assert_eq!(mat.get_e(), 0.0); + assert_eq!(mat.get_f(), 0.0); +} + +#[test] +pub fn flip_y_works() { + let mut mat = DomMatrix::new(None); + + mat.rotate_self(70.0, None, None); + mat.flip_y_self(); + + assert_approx_eq!(mat.get_a(), 0.34202); + assert_approx_eq!(mat.get_b(), 0.93969); + assert_approx_eq!(mat.get_c(), 0.93969); + assert_approx_eq!(mat.get_d(), -0.34202); + assert_eq!(mat.get_e(), 0.0); + assert_eq!(mat.get_f(), 0.0); +} diff --git a/crates/canvas/src/dom/matrix/tests/inverse.rs b/crates/canvas/src/dom/matrix/tests/inverse.rs new file mode 100644 index 000000000..3dc4c9312 --- /dev/null +++ b/crates/canvas/src/dom/matrix/tests/inverse.rs @@ -0,0 +1,82 @@ +use crate::dom::matrix::{tests::X_VALS, DomMatrix}; + +use super::{check_matrix_output, A_VALS}; + +#[test] +pub fn invert_self_works_for_invertible() { + let mut mat = DomMatrix::new(Some(A_VALS.to_vec())); + + mat.invert_self(); + + check_matrix_output( + mat.values(), + [ + 0.9152542372881356, + -0.01694915254237288, + -0.7966101694915254, + -0.13559322033898305, + -1.8305084745762712, + -0.9661016949152542, + 1.5932203389830508, + 1.271186440677966, + 0.7966101694915254, + 0.559322033898305, + -0.711864406779661, + -0.5254237288135594, + 0.711864406779661, + 0.5423728813559322, + -0.5084745762711864, + -0.6610169491525424, + ], + ); +} + +#[test] +pub fn invert_self_works_for_non_invertible() { + let mut mat = DomMatrix::new(Some(X_VALS.to_vec())); + + mat.invert_self(); + + assert_eq!(mat.values().iter().all(|v| v.is_nan()), true); + assert_eq!(mat.is_2d(), false); +} + +#[test] +pub fn inverse_preserves_original() { + let mat = DomMatrix::new(Some(A_VALS.to_vec())); + let mat2 = mat.inverse(); + + assert_eq!(mat.values(), A_VALS); + + check_matrix_output( + mat2.values(), + [ + 0.9152542372881356, + -0.01694915254237288, + -0.7966101694915254, + -0.13559322033898305, + -1.8305084745762712, + -0.9661016949152542, + 1.5932203389830508, + 1.271186440677966, + 0.7966101694915254, + 0.559322033898305, + -0.711864406779661, + -0.5254237288135594, + 0.711864406779661, + 0.5423728813559322, + -0.5084745762711864, + -0.6610169491525424, + ], + ); +} + +#[test] +pub fn inverse_preserves_original_non_invertible() { + let mat = DomMatrix::new(Some(X_VALS.to_vec())); + let mat2 = mat.inverse(); + + assert_eq!(mat.values(), X_VALS); + assert_eq!(mat2.values().iter().all(|v| v.is_nan()), true); + assert_eq!(mat2.is_2d(), false); +} diff --git a/crates/canvas/src/dom/matrix/tests/mod.rs b/crates/canvas/src/dom/matrix/tests/mod.rs new file mode 100644 index 000000000..699fa62b8 --- /dev/null +++ b/crates/canvas/src/dom/matrix/tests/mod.rs @@ -0,0 +1,38 @@ +use crate::assert_approx_eq; + +pub mod flip; +pub mod inverse; +pub mod rotate; +pub mod rotate_axis; +pub mod rotate_vec; +pub mod scale; +pub mod scale_3d; +pub mod skew; +pub mod transform; +pub mod translate; + +pub const A_VALS: [f64; 16] = [ + 4.0, 5.0, 1.0, 8.0, 0.0, 3.0, 6.0, 1.0, 3.0, 5.0, 0.0, 9.0, 2.0, 4.0, 6.0, 1.0, +]; +pub const X_VALS: [f64; 16] = [ + 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, +]; + +pub fn check_matrix_output(real: [f64; 16], expected: [f64; 16]) { + assert_approx_eq!(real[0], expected[0]); + assert_approx_eq!(real[1], expected[1]); + assert_approx_eq!(real[2], expected[2]); + assert_approx_eq!(real[3], expected[3]); + assert_approx_eq!(real[4], expected[4]); + assert_approx_eq!(real[5], expected[5]); + assert_approx_eq!(real[6], expected[6]); + assert_approx_eq!(real[7], expected[7]); + assert_approx_eq!(real[8], expected[8]); + assert_approx_eq!(real[9], expected[9]); + assert_approx_eq!(real[10], expected[10]); + assert_approx_eq!(real[11], expected[11]); + assert_approx_eq!(real[12], expected[12]); + assert_approx_eq!(real[13], expected[13]); + assert_approx_eq!(real[14], expected[14]); + assert_approx_eq!(real[15], expected[15]); +} diff --git a/crates/canvas/src/dom/matrix/tests/rotate.rs b/crates/canvas/src/dom/matrix/tests/rotate.rs new file mode 100644 index 000000000..49cda9086 --- /dev/null +++ b/crates/canvas/src/dom/matrix/tests/rotate.rs @@ -0,0 +1,82 @@ +use crate::{assert_approx_eq, dom::matrix::DomMatrix}; + +#[test] +pub fn test_rotate_x_works() { + let mut mat = DomMatrix::new(None); + + mat.rotate_self(70.0, None, None); + + assert_approx_eq!(mat.m11, 0.3420201); + assert_approx_eq!(mat.m12, 0.9396926); + assert_approx_eq!(mat.m13, 0.0); + assert_approx_eq!(mat.m14, 0.0); + + assert_approx_eq!(mat.m21, -0.939692); + assert_approx_eq!(mat.m22, 0.3420201); + assert_approx_eq!(mat.m23, 0.0); + assert_approx_eq!(mat.m24, 0.0); + + assert_approx_eq!(mat.m31, 0.0); + assert_approx_eq!(mat.m32, 0.0); + assert_approx_eq!(mat.m33, 1.0); + assert_approx_eq!(mat.m34, 0.0); + + assert_approx_eq!(mat.m41, 0.0); + assert_approx_eq!(mat.m42, 0.0); + assert_approx_eq!(mat.m43, 0.0); + assert_approx_eq!(mat.m44, 1.0); +} + +#[test] +pub fn test_rotate_xy_works() { + let mut mat = DomMatrix::new(None); + + mat.rotate_self(70.0, Some(30.0), None); + + assert_approx_eq!(mat.m11, 0.8660254); + assert_approx_eq!(mat.m12, 0.0); + assert_approx_eq!(mat.m13, -0.5); + assert_approx_eq!(mat.m14, 0.0); + + assert_approx_eq!(mat.m21, 0.4698463); + assert_approx_eq!(mat.m22, 0.3420201); + assert_approx_eq!(mat.m23, 0.8137976); + assert_approx_eq!(mat.m24, 0.0); + + assert_approx_eq!(mat.m31, 0.1710100); + assert_approx_eq!(mat.m32, -0.9396926); + assert_approx_eq!(mat.m33, 0.2961981); + assert_approx_eq!(mat.m34, 0.0); + + assert_approx_eq!(mat.m41, 0.0); + assert_approx_eq!(mat.m42, 0.0); + assert_approx_eq!(mat.m43, 0.0); + assert_approx_eq!(mat.m44, 1.0); +} + +#[test] +pub fn test_rotate_xyz_works() { + let mut mat = DomMatrix::new(None); + + mat.rotate_self(70.0, Some(30.0), Some(50.0)); + + assert_approx_eq!(mat.m11, 0.5566703); + assert_approx_eq!(mat.m12, 0.6634139); + assert_approx_eq!(mat.m13, -0.5); + assert_approx_eq!(mat.m14, 0.0); + + assert_approx_eq!(mat.m21, 0.0400087); + assert_approx_eq!(mat.m22, 0.5797694); + assert_approx_eq!(mat.m23, 0.8137976); + assert_approx_eq!(mat.m24, 0.0); + + assert_approx_eq!(mat.m31, 0.8297694); + assert_approx_eq!(mat.m32, -0.4730214); + assert_approx_eq!(mat.m33, 0.2961981); + assert_approx_eq!(mat.m34, 0.0); + + assert_approx_eq!(mat.m41, 0.0); + assert_approx_eq!(mat.m42, 0.0); + assert_approx_eq!(mat.m43, 0.0); + assert_approx_eq!(mat.m44, 1.0); +} diff --git a/crates/canvas/src/dom/matrix/tests/rotate_axis.rs b/crates/canvas/src/dom/matrix/tests/rotate_axis.rs new file mode 100644 index 000000000..c63ad3531 --- /dev/null +++ b/crates/canvas/src/dom/matrix/tests/rotate_axis.rs @@ -0,0 +1,29 @@ +use crate::{ + assert_approx_eq, + dom::matrix::{tests::A_VALS, DomMatrix}, +}; + +#[test] +pub fn rotate_axis_works() { + let data = DomMatrix::new(Some(A_VALS.to_vec())).rotate_axis_angle(2.0, 4.0, 1.0, 35.0); + + assert_approx_eq!(data.m11, 1.9640922); + assert_approx_eq!(data.m12, 2.4329989); + assert_approx_eq!(data.m13, 2.0179538); + assert_approx_eq!(data.m14, 2.6719387); + + assert_approx_eq!(data.m21, 0.6292488); + assert_approx_eq!(data.m22, 4.0133545); + assert_approx_eq!(data.m23, 5.6853755); + assert_approx_eq!(data.m24, 3.0697681); + + assert_approx_eq!(data.m31, 4.5548203); + assert_approx_eq!(data.m32, 6.0805840); + assert_approx_eq!(data.m33, -0.7774101); + assert_approx_eq!(data.m34, 11.3770500); + + assert_approx_eq!(data.m41, 2.0); + assert_approx_eq!(data.m42, 4.0); + assert_approx_eq!(data.m43, 6.0); + assert_approx_eq!(data.m44, 1.0); +} diff --git a/crates/canvas/src/dom/matrix/tests/rotate_vec.rs b/crates/canvas/src/dom/matrix/tests/rotate_vec.rs new file mode 100644 index 000000000..924c73444 --- /dev/null +++ b/crates/canvas/src/dom/matrix/tests/rotate_vec.rs @@ -0,0 +1,58 @@ +use crate::{assert_approx_eq, dom::matrix::DomMatrix}; + +use super::A_VALS; + +#[test] +pub fn rotate_vec_works_no_args() { + assert_eq!( + DomMatrix::new(Some(A_VALS.to_vec())) + .rotate_from_vector(None, None) + .values(), + A_VALS + ); +} + +#[test] +pub fn rotate_vec_works_one_arg() { + assert_eq!( + DomMatrix::new(Some(A_VALS.to_vec())) + .rotate_from_vector(Some(5.0), None) + .values(), + A_VALS + ); +} + +#[test] +pub fn rotate_vec_works_zeros() { + assert_eq!( + DomMatrix::new(Some(A_VALS.to_vec())) + .rotate_from_vector(Some(0.0), Some(0.0)) + .values(), + A_VALS + ); +} + +#[test] +pub fn rotate_vec_works() { + let mat = DomMatrix::new(Some(A_VALS.to_vec())).rotate_from_vector(Some(4.0), Some(2.0)); + + assert_approx_eq!(mat.m11, 3.5777087); + assert_approx_eq!(mat.m12, 5.8137767); + assert_approx_eq!(mat.m13, 3.5777087); + assert_approx_eq!(mat.m14, 7.6026311); + + assert_approx_eq!(mat.m21, -1.7888543); + assert_approx_eq!(mat.m22, 0.4472135); + assert_approx_eq!(mat.m23, 4.9193495); + assert_approx_eq!(mat.m24, -2.6832815); + + assert_approx_eq!(mat.m31, 3.0); + assert_approx_eq!(mat.m32, 5.0); + assert_approx_eq!(mat.m33, 0.0); + assert_approx_eq!(mat.m34, 9.0); + + assert_approx_eq!(mat.m41, 2.0); + assert_approx_eq!(mat.m42, 4.0); + assert_approx_eq!(mat.m43, 6.0); + assert_approx_eq!(mat.m44, 1.0); +} diff --git a/crates/canvas/src/dom/matrix/tests/scale.rs b/crates/canvas/src/dom/matrix/tests/scale.rs new file mode 100644 index 000000000..2216b300a --- /dev/null +++ b/crates/canvas/src/dom/matrix/tests/scale.rs @@ -0,0 +1,114 @@ +use crate::dom::matrix::DomMatrix; + +use super::check_matrix_output; + +#[test] +pub fn scale_works_x() { + check_matrix_output( + DomMatrix::new(None) + .scale(Some(2.0), None, None, None, None, None) + .values(), + [ + 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, + ], + ); +} + +#[test] +pub fn scale_works_xy() { + check_matrix_output( + DomMatrix::new(None) + .scale(Some(2.0), Some(3.0), None, None, None, None) + .values(), + [ + 2.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, + ], + ); +} + +#[test] +pub fn scale_works_xyz() { + check_matrix_output( + DomMatrix::new(None) + .scale(Some(2.0), Some(3.0), Some(4.0), None, None, None) + .values(), + [ + 2.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0, + ], + ); +} + +#[test] +pub fn scale_works_xyz_origin_x() { + check_matrix_output( + DomMatrix::new(None) + .scale(Some(2.0), Some(3.0), Some(4.0), Some(5.0), None, None) + .values(), + [ + 2.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0, -5.0, 0.0, 0.0, 1.0, + ], + ); +} + +#[test] +pub fn scale_works_xyz_origin_xy() { + check_matrix_output( + DomMatrix::new(None) + .scale(Some(2.0), Some(3.0), Some(4.0), Some(5.0), Some(6.0), None) + .values(), + [ + 2.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 4.0, 0.0, -5.0, -12.0, 0.0, 1.0, + ], + ); +} + +#[test] +pub fn scale_works_xyz_origin_xyz() { + check_matrix_output( + DomMatrix::new(None) + .scale( + Some(2.0), + Some(1.0), + Some(1.0), + Some(0.0), + Some(0.0), + Some(0.0), + ) + .values(), + [ + 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, + ], + ); + + check_matrix_output( + DomMatrix::new(None) + .scale( + Some(2.0), + Some(3.0), + Some(2.0), + Some(0.0), + Some(0.0), + Some(0.0), + ) + .values(), + [ + 2.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, + ], + ); + + check_matrix_output( + DomMatrix::new(None) + .scale( + Some(5.0), + Some(-1.0), + Some(2.0), + Some(1.0), + Some(3.0), + Some(2.0), + ) + .values(), + [ + 5.0, 0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, -4.0, 6.0, -2.0, 1.0, + ], + ); +} diff --git a/crates/canvas/src/dom/matrix/tests/scale_3d.rs b/crates/canvas/src/dom/matrix/tests/scale_3d.rs new file mode 100644 index 000000000..aec97e2c3 --- /dev/null +++ b/crates/canvas/src/dom/matrix/tests/scale_3d.rs @@ -0,0 +1,64 @@ +use crate::dom::matrix::DomMatrix; + +use super::{check_matrix_output, A_VALS}; + +#[test] +pub fn scale_3d_works() { + check_matrix_output( + DomMatrix::new(Some(A_VALS.to_vec())) + .scale_3d(None, None, None, None) + .values(), + A_VALS, + ); +} + +#[test] +pub fn scale_3d_works_scale() { + check_matrix_output( + DomMatrix::new(Some(A_VALS.to_vec())) + .scale_3d(Some(2.0), None, None, None) + .values(), + [ + 8.0, 10.0, 2.0, 16.0, 0.0, 6.0, 12.0, 2.0, 6.0, 10.0, 0.0, 18.0, 2.0, 4.0, 6.0, 1.0, + ], + ); +} + +#[test] +pub fn scale_3d_works_scale_origin_x() { + check_matrix_output( + DomMatrix::new(Some(A_VALS.to_vec())) + .scale_3d(Some(2.0), Some(3.0), None, None) + .values(), + [ + 8.0, 10.0, 2.0, 16.0, 0.0, 6.0, 12.0, 2.0, 6.0, 10.0, 0.0, 18.0, -10.0, -11.0, 3.0, + -23.0, + ], + ); +} + +#[test] +pub fn scale_3d_works_scale_origin_xy() { + check_matrix_output( + DomMatrix::new(Some(A_VALS.to_vec())) + .scale_3d(Some(2.0), Some(3.0), Some(4.0), None) + .values(), + [ + 8.0, 10.0, 2.0, 16.0, 0.0, 6.0, 12.0, 2.0, 6.0, 10.0, 0.0, 18.0, -10.0, -23.0, -21.0, + -27.0, + ], + ); +} + +#[test] +pub fn scale_3d_works_scale_origin_xyz() { + check_matrix_output( + DomMatrix::new(Some(A_VALS.to_vec())) + .scale_3d(Some(2.0), Some(3.0), Some(4.0), Some(5.0)) + .values(), + [ + 8.0, 10.0, 2.0, 16.0, 0.0, 6.0, 12.0, 2.0, 6.0, 10.0, 0.0, 18.0, -25.0, -48.0, -21.0, + -72.0, + ], + ); +} diff --git a/crates/canvas/src/dom/matrix/tests/skew.rs b/crates/canvas/src/dom/matrix/tests/skew.rs new file mode 100644 index 000000000..1cfdbf8ff --- /dev/null +++ b/crates/canvas/src/dom/matrix/tests/skew.rs @@ -0,0 +1,25 @@ +use crate::dom::matrix::DomMatrix; + +use super::{check_matrix_output, A_VALS}; + +#[test] +pub fn skew_x_works() { + check_matrix_output( + DomMatrix::new(Some(A_VALS.to_vec())).skew_x(30.0).values(), + [ + 4.0, 5.0, 1.0, 8.0, 2.3094010, 5.8867513, 6.5773502, 5.6188021, 3.0, 5.0, 0.0, 9.0, + 2.0, 4.0, 6.0, 1.0, + ], + ); +} + +#[test] +pub fn skew_y_works() { + check_matrix_output( + DomMatrix::new(Some(A_VALS.to_vec())).skew_y(30.0).values(), + [ + 4.0, 6.7320508, 4.4641016, 8.5773502, 0.0, 3.0, 6.0, 1.0, 3.0, 5.0, 0.0, 9.0, 2.0, 4.0, + 6.0, 1.0, + ], + ); +} diff --git a/crates/canvas/src/dom/matrix/tests/transform.rs b/crates/canvas/src/dom/matrix/tests/transform.rs new file mode 100644 index 000000000..67df1d378 --- /dev/null +++ b/crates/canvas/src/dom/matrix/tests/transform.rs @@ -0,0 +1,35 @@ +use crate::{ + assert_approx_eq, + dom::{matrix::DomMatrix, point::DomPoint}, +}; + +#[test] +pub fn test_transform_point() { + let mut mat = DomMatrix::new(None); + + let ret = mat.transform_point(DomPoint { + x: 1.0, + y: 2.0, + z: 3.0, + ..Default::default() + }); + + assert_eq!(ret.x, 1.0); + assert_eq!(ret.y, 2.0); + assert_eq!(ret.z, 3.0); + assert_eq!(ret.w, 1.0); + + mat.rotate_self(70.0, None, None); + + let ret = mat.transform_point(DomPoint { + x: 2.0, + y: 3.0, + z: 4.0, + ..Default::default() + }); + + assert_approx_eq!(ret.x, -2.13503); + assert_approx_eq!(ret.y, 2.905445); + assert_eq!(ret.z, 4.0); + assert_eq!(ret.w, 1.0); +} diff --git a/crates/canvas/src/dom/matrix/tests/translate.rs b/crates/canvas/src/dom/matrix/tests/translate.rs new file mode 100644 index 000000000..f84912794 --- /dev/null +++ b/crates/canvas/src/dom/matrix/tests/translate.rs @@ -0,0 +1,37 @@ +use crate::dom::matrix::{tests::A_VALS, DomMatrix}; + +#[test] +pub fn translate_works_x() { + let mut mat = DomMatrix::new(None); + + mat.translate_self(1.0, None, None); + + assert_eq!( + mat.values(), + [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0] + ); +} + +#[test] +pub fn translate_works_xy() { + let mut mat = DomMatrix::new(Some(A_VALS.to_vec())); + + mat.translate_self(2.0, Some(5.0), None); + + assert_eq!( + mat.values(), + [4.0, 5.0, 1.0, 8.0, 0.0, 3.0, 6.0, 1.0, 3.0, 5.0, 0.0, 9.0, 10.0, 29.0, 38.0, 22.0] + ); +} + +#[test] +pub fn translate_works_xyz() { + let mut mat = DomMatrix::new(None); + + mat.translate_self(1.0, Some(2.0), Some(3.0)); + + assert_eq!( + mat.values(), + [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 2.0, 3.0, 1.0] + ); +} diff --git a/crates/canvas/src/dom/matrix/transform.rs b/crates/canvas/src/dom/matrix/transform.rs new file mode 100644 index 000000000..6d88f18a3 --- /dev/null +++ b/crates/canvas/src/dom/matrix/transform.rs @@ -0,0 +1,21 @@ +use crate::dom::point::DomPoint; + +use super::DomMatrix; + +#[napi] +impl DomMatrix { + #[napi] + pub fn transform_point(&self, DomPoint { x, y, z, w }: DomPoint) -> DomPoint { + let nx = self.m11 * x + self.m21 * y + self.m31 * z + self.m41 * w; + let ny = self.m12 * x + self.m22 * y + self.m32 * z + self.m42 * w; + let nz = self.m13 * x + self.m23 * y + self.m33 * z + self.m43 * w; + let nw = self.m14 * x + self.m24 * y + self.m34 * z + self.m44 * w; + + DomPoint { + x: nx, + y: ny, + z: nz, + w: nw, + } + } +} diff --git a/crates/canvas/src/dom/matrix/translate.rs b/crates/canvas/src/dom/matrix/translate.rs new file mode 100644 index 000000000..fa5531c9c --- /dev/null +++ b/crates/canvas/src/dom/matrix/translate.rs @@ -0,0 +1,26 @@ +use crate::fix_zero; + +use super::DomMatrix; + +#[napi] +impl DomMatrix { + #[napi] + pub fn translate(&self, x: f64, y: Option, z: Option) -> Self { + self.clone().translate_self(x, y, z) + } + + #[napi] + pub fn translate_self(&mut self, x: f64, y: Option, z: Option) -> Self { + let y = y.unwrap_or(0.0); + let z = z.unwrap_or(0.0); + let mut tmp = Self::identity(); + + tmp.m41 = fix_zero!(x); + tmp.m42 = fix_zero!(y); + tmp.m43 = fix_zero!(z); + + // Apparently MulAssign breaks this...? + *self = tmp * *self; + *self + } +} diff --git a/crates/canvas/src/dom/matrix/values.rs b/crates/canvas/src/dom/matrix/values.rs new file mode 100644 index 000000000..c9beb97ad --- /dev/null +++ b/crates/canvas/src/dom/matrix/values.rs @@ -0,0 +1,52 @@ +use super::DomMatrix; + +#[napi] +impl DomMatrix { + #[napi] + pub fn values(&self) -> [f64; 16] { + [ + self.m11, self.m12, self.m13, self.m14, self.m21, self.m22, self.m23, self.m24, + self.m31, self.m32, self.m33, self.m34, self.m41, self.m42, self.m43, self.m44, + ] + } + + #[napi] + pub fn set_values(&mut self, values: Vec) -> Self { + if values.len() == 16 { + self.m11 = values[0]; + self.m12 = values[1]; + self.m13 = values[2]; + self.m14 = values[3]; + self.m21 = values[4]; + self.m22 = values[5]; + self.m23 = values[6]; + self.m24 = values[7]; + self.m31 = values[8]; + self.m32 = values[9]; + self.m33 = values[10]; + self.m34 = values[11]; + self.m41 = values[12]; + self.m42 = values[13]; + self.m43 = values[14]; + self.m44 = values[15]; + } else if values.len() == 6 { + self.m11 = values[0]; + self.m12 = values[1]; + self.m21 = values[2]; + self.m22 = values[3]; + self.m41 = values[4]; + self.m42 = values[5]; + } else { + panic!("Values must be either 6 or 16 elements long!"); + } + + *self + } + + #[napi] + pub fn set_matrix_value(&mut self, transform_list: Vec) { + let temp = DomMatrix::new(Some(transform_list)); + + self.set_values(temp.values().to_vec()); + } +} diff --git a/crates/canvas/src/dom/mod.rs b/crates/canvas/src/dom/mod.rs new file mode 100644 index 000000000..2e41407ae --- /dev/null +++ b/crates/canvas/src/dom/mod.rs @@ -0,0 +1,2 @@ +pub mod matrix; +pub mod point; diff --git a/crates/canvas/src/dom/point.rs b/crates/canvas/src/dom/point.rs new file mode 100644 index 000000000..c6ed5b410 --- /dev/null +++ b/crates/canvas/src/dom/point.rs @@ -0,0 +1,19 @@ +#[napi(object)] +#[derive(Debug, Clone, Copy, PartialEq, PartialOrd, Serialize, Deserialize)] +pub struct DomPoint { + pub x: f64, + pub y: f64, + pub z: f64, + pub w: f64, +} + +impl Default for DomPoint { + fn default() -> Self { + Self { + x: 0.0, + y: 0.0, + z: 0.0, + w: 1.0, + } + } +} diff --git a/crates/canvas/src/format/mod.rs b/crates/canvas/src/format/mod.rs new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/crates/canvas/src/format/mod.rs @@ -0,0 +1 @@ + diff --git a/crates/canvas/src/image/data.rs b/crates/canvas/src/image/data.rs new file mode 100644 index 000000000..adb176b17 --- /dev/null +++ b/crates/canvas/src/image/data.rs @@ -0,0 +1,47 @@ +use napi::bindgen_prelude::Uint8ClampedArray; + +#[napi] +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Serialize, Deserialize)] +pub struct ImageData { + data: Vec, + + pub width: i32, + pub height: i32, +} + +#[napi] +impl ImageData { + #[napi(constructor)] + pub fn new(width: i32, height: i32) -> Self { + Self { + width, + height, + data: Vec::with_capacity((width * height) as usize), + } + } + + #[napi(factory)] + pub fn with_data(data: Uint8ClampedArray, width: i32, height: Option) -> Self { + let height = height.unwrap_or_else(|| { + // Calculate height assuming 4 BPP + let size = data.len() as i32 / 4; + size / width + }); + + Self { + data: data.to_vec(), + width, + height, + } + } + + #[napi(getter)] + pub fn get_data(&self) -> Uint8ClampedArray { + Uint8ClampedArray::new(self.data.clone()) + } + + #[napi(setter)] + pub fn set_data(&mut self, data: Uint8ClampedArray) { + self.data = data.to_vec(); + } +} diff --git a/crates/canvas/src/image/filters.rs b/crates/canvas/src/image/filters.rs new file mode 100644 index 000000000..4cc7cc06a --- /dev/null +++ b/crates/canvas/src/image/filters.rs @@ -0,0 +1,30 @@ +use napi::{ + bindgen_prelude::FromNapiValue, + sys::{napi_env, napi_get_value_uint32, napi_value}, + Result, +}; + +bitflags! { + #[napi] + #[repr(transparent)] + #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] + pub struct PngFilters: u32 { + const NoFilters = 0b00000001; + const All = 0b00000010; + const None = 0b00000100; + const Sub = 0b00001000; + const Up = 0b00010000; + const Avg = 0b00100000; + const Paeth = 0b01000000; + } +} + +impl FromNapiValue for PngFilters { + unsafe fn from_napi_value(env: napi_env, napi_val: napi_value) -> Result { + let mut ret = 0; + + napi_get_value_uint32(env, napi_val, &mut ret); + + Ok(Self::from_bits_retain(ret)) + } +} diff --git a/crates/canvas/src/image/image.rs b/crates/canvas/src/image/image.rs new file mode 100644 index 000000000..ec3e0bbd0 --- /dev/null +++ b/crates/canvas/src/image/image.rs @@ -0,0 +1,36 @@ +use either::Either; +use napi::bindgen_prelude::Buffer; + +use super::mode::ImageMode; + +#[napi] +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] +pub struct Image { + src: Either>, + + pub data_mode: ImageMode, + pub width: i32, + pub height: i32, + pub complete: bool, + pub natural_width: i32, + pub natural_height: i32, +} + +#[napi] +impl Image { + #[napi(getter)] + pub fn get_src(&self) -> napi::Either { + match self.clone().src { + Either::Left(val) => napi::Either::A(val), + Either::Right(val) => napi::Either::B(Buffer::from(val)), + } + } + + #[napi(setter)] + pub fn set_src(&mut self, val: napi::Either) { + match val { + napi::Either::A(val) => self.src = Either::Left(val), + napi::Either::B(val) => self.src = Either::Right(val.to_vec()), + } + } +} diff --git a/crates/canvas/src/image/kind.rs b/crates/canvas/src/image/kind.rs new file mode 100644 index 000000000..4ce2a435a --- /dev/null +++ b/crates/canvas/src/image/kind.rs @@ -0,0 +1,8 @@ +#[napi(string_enum)] +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Serialize, Deserialize)] +pub enum ImageKind { + #[default] + Image, + Pdf, + Svg, +} diff --git a/crates/canvas/src/image/mod.rs b/crates/canvas/src/image/mod.rs new file mode 100644 index 000000000..20a380cb5 --- /dev/null +++ b/crates/canvas/src/image/mod.rs @@ -0,0 +1,7 @@ +pub mod data; +pub mod filters; +pub mod image; +pub mod kind; +pub mod mode; +pub mod quality; +pub mod repeat; diff --git a/crates/canvas/src/image/mode.rs b/crates/canvas/src/image/mode.rs new file mode 100644 index 000000000..440eec754 --- /dev/null +++ b/crates/canvas/src/image/mode.rs @@ -0,0 +1,25 @@ +use napi::{ + bindgen_prelude::FromNapiValue, + sys::{napi_env, napi_get_value_uint32, napi_value}, + Result, +}; + +bitflags! { + #[napi] + #[repr(transparent)] + #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] + pub struct ImageMode: u32 { + const Image = 0b00000001; + const Mime = 0b00000010; + } +} + +impl FromNapiValue for ImageMode { + unsafe fn from_napi_value(env: napi_env, napi_val: napi_value) -> Result { + let mut ret = 0; + + napi_get_value_uint32(env, napi_val, &mut ret); + + Ok(ImageMode::from_bits_retain(ret)) + } +} diff --git a/crates/canvas/src/image/quality.rs b/crates/canvas/src/image/quality.rs new file mode 100644 index 000000000..13278fcf8 --- /dev/null +++ b/crates/canvas/src/image/quality.rs @@ -0,0 +1,10 @@ +#[napi] +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Serialize, Deserialize)] +pub enum Quality { + Fast, + #[default] + Good, + Best, + Nearest, + Bilinear, +} diff --git a/crates/canvas/src/image/repeat.rs b/crates/canvas/src/image/repeat.rs new file mode 100644 index 000000000..c700aa0c3 --- /dev/null +++ b/crates/canvas/src/image/repeat.rs @@ -0,0 +1,10 @@ +#[napi] +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Serialize, Deserialize)] +pub enum Repetition { + #[default] + Repeat, + RepeatX, + RepeatY, + NoRepeat, + None, +} diff --git a/crates/canvas/src/lib.rs b/crates/canvas/src/lib.rs new file mode 100644 index 000000000..db91cb957 --- /dev/null +++ b/crates/canvas/src/lib.rs @@ -0,0 +1,32 @@ +#![allow(clippy::module_inception)] + +#[macro_use] +extern crate anyhow; + +#[macro_use] +extern crate concat_idents; + +#[macro_use] +extern crate serde; + +#[macro_use] +extern crate bitflags; + +#[macro_use] +extern crate napi_derive; + +#[macro_use] +extern crate derive_builder; + +pub mod canvas; +pub mod config; +pub mod context; +pub mod create; +pub mod dom; +pub mod format; +pub mod image; +pub mod text; +pub mod util; + +#[cfg(test)] +pub mod test; diff --git a/crates/canvas/src/test.rs b/crates/canvas/src/test.rs new file mode 100644 index 000000000..15ea88aff --- /dev/null +++ b/crates/canvas/src/test.rs @@ -0,0 +1,21 @@ +#[macro_export] +macro_rules! assert_approx_eq { + ($left: expr, $right: expr) => { + assert_approx_eq!($left, $right, 0.001); + }; + + ($left: expr, $right: expr, $tolerance: expr) => { + assert!( + $right > $left - $tolerance && $right < $left + $tolerance, + "{}", + format!( + "assert_approx_eq!({}, {}, tolerance = {})\n\n left = {:?}\n right = {:?}\n\n", + stringify!($left), + stringify!($right), + $tolerance, + $left, + $right + ) + ); + }; +} diff --git a/crates/canvas/src/text/align.rs b/crates/canvas/src/text/align.rs new file mode 100644 index 000000000..f058d6a5f --- /dev/null +++ b/crates/canvas/src/text/align.rs @@ -0,0 +1,10 @@ +#[napi] +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Serialize, Deserialize)] +pub enum TextAlign { + Center, + End, + Left, + Right, + #[default] + Start, +} diff --git a/crates/canvas/src/text/baseline.rs b/crates/canvas/src/text/baseline.rs new file mode 100644 index 000000000..03aa1b90b --- /dev/null +++ b/crates/canvas/src/text/baseline.rs @@ -0,0 +1,11 @@ +#[napi] +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Serialize, Deserialize)] +pub enum TextBaseline { + #[default] + Alphabetic, + Bottom, + Hanging, + Ideographic, + Middle, + Top, +} diff --git a/crates/canvas/src/text/font.rs b/crates/canvas/src/text/font.rs new file mode 100644 index 000000000..c35ce1ff9 --- /dev/null +++ b/crates/canvas/src/text/font.rs @@ -0,0 +1,7 @@ +#[napi(object)] +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize, Builder)] +pub struct FontOptions { + pub family: String, + pub weight: Option, + pub style: Option, +} diff --git a/crates/canvas/src/text/metrics.rs b/crates/canvas/src/text/metrics.rs new file mode 100644 index 000000000..7b79e92a4 --- /dev/null +++ b/crates/canvas/src/text/metrics.rs @@ -0,0 +1,11 @@ +#[napi(object)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)] +pub struct TextMetrics { + pub actual_bounding_box_ascent: i32, + pub actual_bounding_box_descent: i32, + pub actual_bounding_box_left: i32, + pub actual_bounding_box_right: i32, + pub font_bounding_box_ascent: i32, + pub font_bounding_box_descent: i32, + pub width: i32, +} diff --git a/crates/canvas/src/text/mod.rs b/crates/canvas/src/text/mod.rs new file mode 100644 index 000000000..e0ec2264a --- /dev/null +++ b/crates/canvas/src/text/mod.rs @@ -0,0 +1,5 @@ +pub mod align; +pub mod baseline; +pub mod font; +pub mod metrics; +pub mod mode; diff --git a/crates/canvas/src/text/mode.rs b/crates/canvas/src/text/mode.rs new file mode 100644 index 000000000..ced54ea51 --- /dev/null +++ b/crates/canvas/src/text/mode.rs @@ -0,0 +1,7 @@ +#[napi] +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Default, Serialize, Deserialize)] +pub enum TextDrawingMode { + #[default] + Path, + Glyph, +} diff --git a/crates/canvas/src/util/expose.rs b/crates/canvas/src/util/expose.rs new file mode 100644 index 000000000..557818ce9 --- /dev/null +++ b/crates/canvas/src/util/expose.rs @@ -0,0 +1,51 @@ +// TODO: Rewrite as a proc_macro, this is broken. +#[macro_export] +macro_rules! expose_napi { + ($struct: ident, $func: ident, $name: expr, ($(, $($param: ident: $($ty: tt)*),*)?) $(-> $($ret: tt)*)?) => { + cfg_if::cfg_if! { + if #[cfg(feature = "napi")] { + concat_idents!(fn_name = napi_exposed_, $func { + #[napi_derive::napi] + impl $struct { + #[napi(js_name = $name)] + pub fn fn_name($(, $($param: $($ty)*),*)?) $(-> $($ret)*)? { + Self::$func($($($param),*)?) + } + } + }); + } + } + }; + + ($struct: ident, $func: ident, $name: expr, (&self $(, $($param: ident: $($ty: tt)*),*)?) $(-> $($ret: tt)*)?) => { + cfg_if::cfg_if! { + if #[cfg(feature = "napi")] { + concat_idents!(fn_name = napi_exposed_, $func { + #[napi_derive::napi] + impl $struct { + #[napi(js_name = $name)] + pub fn fn_name(&self $(, $($param: $($ty)*),*)?) $(-> $($ret)*)? { + self.$func($($($param),*)?) + } + } + }); + } + } + }; + + ($struct: ident, $func: ident, $name: expr, (&mut self $(, $($param: ident: $($ty: tt)*),*)?) $(-> $($ret: tt)*)?) => { + cfg_if::cfg_if! { + if #[cfg(feature = "napi")] { + concat_idents!(fn_name = napi_exposed_, $func { + #[napi_derive::napi] + impl $struct { + #[napi(js_name = $name)] + pub fn fn_name(&mut self $(, $($param: $($ty)*),*)?) $(-> $($ret)*)? { + self.$func($($($param),*)?) + } + } + }); + } + } + }; +} diff --git a/crates/canvas/src/util/macros.rs b/crates/canvas/src/util/macros.rs new file mode 100644 index 000000000..28bfef8e9 --- /dev/null +++ b/crates/canvas/src/util/macros.rs @@ -0,0 +1,72 @@ +#[macro_export] +macro_rules! alias_property { + ($struct: ident, $type: ident, $alias: ident, $($real: expr)+) => { + concat_idents!(fn_name = get_, $alias { + #[allow(non_snake_case)] + impl $struct { + pub fn fn_name(&self) -> $type { + self.$($real).+ + } + } + }); + + paste::paste! { + $crate::expose_napi!($struct, [], $alias, (&self) -> $type); + } + + concat_idents!(fn_name = set_, $alias { + #[allow(non_snake_case)] + impl $struct { + pub fn fn_name(&mut self, new_val: $type) { + self.$($real).+ = new_val; + } + } + }); + + paste::paste! { + $crate::expose_napi!($struct, [], $alias, (&mut self, new_val: $type)); + } + } +} + +#[macro_export] +macro_rules! alias_property_borrow { + ($struct: ident, $type: ident, $alias: ident, $real: ident) => { + concat_idents!(fn_name = get_, $alias, _napi_alias { + #[allow(non_snake_case)] + impl $struct { + pub fn fn_name(&self) -> &$type { + &self.$real + } + } + }); + + paste::paste! { + $crate::expose_napi!($struct, [], $alias, (&self) -> *$type); + } + + concat_idents!(fn_name = set_, $alias, _napi_alias { + #[allow(non_snake_case)] + impl $struct { + pub fn fn_name(&mut self, new_val: &$type) { + self.$real = new_val.clone(); + } + } + }); + + paste::paste! { + $crate::expose_napi!($struct, [], $alias, (&mut self, new_val: &$type)); + } + } +} + +#[macro_export] +macro_rules! fix_zero { + ($val: expr) => { + if $val == 0.0 || $val == -0.0 { + 0.0 + } else { + $val + } + }; +} diff --git a/crates/canvas/src/util/mod.rs b/crates/canvas/src/util/mod.rs new file mode 100644 index 000000000..f44a91f9c --- /dev/null +++ b/crates/canvas/src/util/mod.rs @@ -0,0 +1,33 @@ +use std::{convert::AsMut, ops::Mul}; + +use napi::bindgen_prelude::Either3; + +use crate::config::{jpeg::JpegConfig, pdf::PdfConfig, png::PngConfig}; + +pub mod expose; +pub mod macros; + +pub type StringOption = Option; +pub type BufferConfig = Option>; + +/// See https://stackoverflow.com/a/37679442 +pub fn clone_into_array(slice: &[T]) -> A +where + A: Sized + Default + AsMut<[T]>, + T: Clone, +{ + let mut a = Default::default(); + >::as_mut(&mut a).clone_from_slice(slice); + a +} + +pub fn multiply_slices(mut a: [T; N], b: [T; N]) -> [T; N] +where + T: Mul + Copy, +{ + for i in 0..a.len() { + a[i] = a[i] * b[i]; + } + + a +} diff --git a/crates/macros/Cargo.toml b/crates/macros/Cargo.toml new file mode 100644 index 000000000..1500d3920 --- /dev/null +++ b/crates/macros/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "canvas-macros" +version = "0.0.0" +edition = "2021" + +[lib] +proc-macro = true + +[dependencies] +proc-macro2 = "1.0.78" +quote = "1.0.35" diff --git a/crates/macros/src/lib.rs b/crates/macros/src/lib.rs new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/crates/macros/src/lib.rs @@ -0,0 +1 @@ + diff --git a/crates/raqote/Cargo.toml b/crates/raqote/Cargo.toml new file mode 100644 index 000000000..2ef72f6ee --- /dev/null +++ b/crates/raqote/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "raqote" +version = "0.1.0" +edition = "2021" + +[features] +default = ["text", "png"] +text = ["font-kit", "pathfinder_geometry"] + +[dependencies] +euclid = "0.22.9" +font-kit = { version = "0.12.0", optional = true } +lyon_geom = "1.0.4" +pathfinder_geometry = { version = "0.5.1", optional = true } +png = { version = "0.17.10", optional = true } +sw-composite = "0.7.16" +typed-arena = { version = "2.0.3", path = "../typed-arena" } diff --git a/crates/raqote/LICENSE b/crates/raqote/LICENSE new file mode 100644 index 000000000..2b2d9bf22 --- /dev/null +++ b/crates/raqote/LICENSE @@ -0,0 +1,27 @@ +Copyright (c) 2019 Jeff Muizelaar +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/crates/raqote/README.md b/crates/raqote/README.md new file mode 100644 index 000000000..7e6caed5e --- /dev/null +++ b/crates/raqote/README.md @@ -0,0 +1,4 @@ +# raqote + +This is a fork of the [raqote](https://github.com/jrmuizel/raqote) library by +[@jrmuizel](https://github.com/jrmuizel) to add some traits to the `DrawTarget` struct. diff --git a/crates/raqote/example.png b/crates/raqote/example.png new file mode 100644 index 000000000..9396e672f Binary files /dev/null and b/crates/raqote/example.png differ diff --git a/crates/raqote/src/blitter.rs b/crates/raqote/src/blitter.rs new file mode 100644 index 000000000..da34c7aea --- /dev/null +++ b/crates/raqote/src/blitter.rs @@ -0,0 +1,877 @@ +use sw_composite::*; + +use crate::draw_target::{ExtendMode, FilterMode, Source}; +use crate::{IntPoint, Point, Transform}; + +use euclid::vec2; +use std::marker::PhantomData; + +pub trait Blitter { + fn blit_span(&mut self, y: i32, x1: i32, x2: i32, mask: &[u8]); +} + +pub trait RasterBlitter { + fn blit_span(&mut self, y: i32, x1: i32, x2: i32); +} + +pub struct MaskSuperBlitter { + pub x: i32, + pub y: i32, + width: i32, + pub buf: Vec, +} + +const SHIFT: i32 = crate::rasterizer::SAMPLE_SHIFT; +const SCALE: i32 = 1 << SHIFT; +const MASK: i32 = SCALE - 1; +const SUPER_MASK: i32 = (1 << SHIFT) - 1; + +fn coverage_to_partial_alpha(mut aa: i32) -> u8 { + aa <<= 8 - 2 * SHIFT; + return aa as u8; +} + +impl MaskSuperBlitter { + pub fn new(x: i32, y: i32, width: i32, height: i32) -> MaskSuperBlitter { + MaskSuperBlitter { + x: x * SCALE, + y: y * SCALE, + width, + // we can end up writing one byte past the end of the buffer so allocate that + // padding to avoid needing to do an extra check + buf: vec![0; (width * height) as usize + 1], + } + } +} + +// Perform this tricky subtract, to avoid overflowing to 256. Our caller should +// only ever call us with at most enough to hit 256 (never larger), so it is +// enough to just subtract the high-bit. Actually clamping with a branch would +// be slower (e.g. if (tmp > 255) tmp = 255;) +fn saturated_add(a: u8, b: u8) -> u8 { + let tmp = a as u32 + b as u32; + let result = tmp - (tmp >> 8); + result as u8 +} + +impl RasterBlitter for MaskSuperBlitter { + fn blit_span(&mut self, mut y: i32, mut x1: i32, mut x2: i32) { + y -= self.y; + x1 -= self.x; + x2 -= self.x; + x2 = x2.min(self.width * SCALE); + let max: u8 = ((1 << (8 - SHIFT)) - (((y & MASK) + 1) >> SHIFT)) as u8; + let start = (y / 4 * self.width) as usize; + + let mut fb = x1 & SUPER_MASK; + let fe = x2 & SUPER_MASK; + let b = &mut self.buf[start + (x1 >> SHIFT) as usize..start + (x2 >> SHIFT) as usize + 1]; + let len = b.len(); + + // invert the alpha on the left side + if len == 0 { + } else if len == 1 { + b[0] = saturated_add(b[0], coverage_to_partial_alpha(fe - fb)); + } else { + fb = (1 << SHIFT) - fb; + b[0] = saturated_add(b[0], coverage_to_partial_alpha(fb)); + + // Rust seems to emit bounds checks here when it should be able to avoid them + for i in &mut b[1..len - 1] { + *i += max; + } + b[len - 1] = saturated_add(b[len - 1], coverage_to_partial_alpha(fe)); + } + } +} + +pub struct MaskBlitter { + pub x: i32, + pub y: i32, + width: i32, + pub buf: Vec, +} + +impl MaskBlitter { + pub fn new(x: i32, y: i32, width: i32, height: i32) -> MaskBlitter { + MaskBlitter { + x: x * SCALE, + y: y * SCALE, + width, + // we can end up writing one byte past the end of the buffer so allocate that + // padding to avoid needing to do an extra check + buf: vec![0; (width * height) as usize + 1], + } + } +} + +impl RasterBlitter for MaskBlitter { + fn blit_span(&mut self, mut y: i32, mut x1: i32, mut x2: i32) { + y -= self.y; + x1 -= self.x; + x2 -= self.x; + if y % SCALE != 0 { + return; + } + + x2 = x2.min(self.width * SCALE); + + x1 >>= SHIFT; + x2 >>= SHIFT; + + for i in x1..x2 { + self.buf[(y / 4 * self.width + i) as usize] = 0xff; + } + } +} + +pub trait Shader { + fn shade_span(&self, x: i32, y: i32, dest: &mut [u32], count: usize); +} + +pub struct SolidShader { + pub color: u32, +} + +impl Shader for SolidShader { + fn shade_span(&self, _x: i32, _y: i32, dest: &mut [u32], count: usize) { + for i in 0..count { + dest[i] = self.color; + } + } +} + +fn transform_to_fixed(transform: &Transform) -> MatrixFixedPoint { + MatrixFixedPoint { + xx: float_to_fixed(transform.m11), + xy: float_to_fixed(transform.m21), + yx: float_to_fixed(transform.m12), + yy: float_to_fixed(transform.m22), + x0: float_to_fixed(transform.m31), + y0: float_to_fixed(transform.m32), + } +} + +pub struct TransformedImageShader<'a, 'b, Fetch: PixelFetch> { + image: &'a Image<'b>, + xfm: MatrixFixedPoint, + fetch: PhantomData, +} + +impl<'a, 'b, Fetch: PixelFetch> TransformedImageShader<'a, 'b, Fetch> { + pub fn new( + image: &'a Image<'b>, + transform: &Transform, + ) -> TransformedImageShader<'a, 'b, Fetch> { + TransformedImageShader { + image, + xfm: transform_to_fixed( + &transform + .pre_translate(vec2(0.5, 0.5)) + .then_translate(vec2(-0.5, -0.5)), + ), + fetch: PhantomData, + } + } +} + +impl<'a, 'b, Fetch: PixelFetch> Shader for TransformedImageShader<'a, 'b, Fetch> { + fn shade_span(&self, mut x: i32, y: i32, dest: &mut [u32], count: usize) { + for i in 0..count { + let p = self.xfm.transform(x as u16, y as u16); + dest[i] = fetch_bilinear::(self.image, p.x, p.y); + x += 1; + } + } +} + +pub struct TransformedImageAlphaShader<'a, 'b, Fetch: PixelFetch> { + image: &'a Image<'b>, + xfm: MatrixFixedPoint, + alpha: u32, + fetch: PhantomData, +} + +impl<'a, 'b, Fetch: PixelFetch> TransformedImageAlphaShader<'a, 'b, Fetch> { + pub fn new( + image: &'a Image<'b>, + transform: &Transform, + alpha: u32, + ) -> TransformedImageAlphaShader<'a, 'b, Fetch> { + TransformedImageAlphaShader { + image, + xfm: transform_to_fixed( + &transform + .pre_translate(vec2(0.5, 0.5)) + .then_translate(vec2(-0.5, -0.5)), + ), + alpha: alpha_to_alpha256(alpha), + fetch: PhantomData, + } + } +} + +impl<'a, 'b, Fetch: PixelFetch> Shader for TransformedImageAlphaShader<'a, 'b, Fetch> { + fn shade_span(&self, mut x: i32, y: i32, dest: &mut [u32], count: usize) { + for i in 0..count { + let p = self.xfm.transform(x as u16, y as u16); + dest[i] = fetch_bilinear_alpha::(self.image, p.x, p.y, self.alpha); + x += 1; + } + } +} + +pub struct TransformedNearestImageShader<'a, 'b, Fetch: PixelFetch> { + image: &'a Image<'b>, + xfm: MatrixFixedPoint, + fetch: PhantomData, +} + +impl<'a, 'b, Fetch: PixelFetch> TransformedNearestImageShader<'a, 'b, Fetch> { + pub fn new( + image: &'a Image<'b>, + transform: &Transform, + ) -> TransformedNearestImageShader<'a, 'b, Fetch> { + TransformedNearestImageShader { + image, + xfm: transform_to_fixed( + &transform + .pre_translate(vec2(0.5, 0.5)) + .then_translate(vec2(-0.5, -0.5)), + ), + fetch: PhantomData, + } + } +} + +impl<'a, 'b, Fetch: PixelFetch> Shader for TransformedNearestImageShader<'a, 'b, Fetch> { + fn shade_span(&self, mut x: i32, y: i32, dest: &mut [u32], count: usize) { + for i in 0..count { + let p = self.xfm.transform(x as u16, y as u16); + dest[i] = fetch_nearest::(self.image, p.x, p.y); + x += 1; + } + } +} + +pub struct TransformedNearestImageAlphaShader<'a, 'b, Fetch: PixelFetch> { + image: &'a Image<'b>, + xfm: MatrixFixedPoint, + alpha: u32, + fetch: PhantomData, +} + +impl<'a, 'b, Fetch: PixelFetch> TransformedNearestImageAlphaShader<'a, 'b, Fetch> { + pub fn new( + image: &'a Image<'b>, + transform: &Transform, + alpha: u32, + ) -> TransformedNearestImageAlphaShader<'a, 'b, Fetch> { + TransformedNearestImageAlphaShader { + image, + xfm: transform_to_fixed( + &transform + .pre_translate(vec2(0.5, 0.5)) + .then_translate(vec2(-0.5, -0.5)), + ), + alpha: alpha_to_alpha256(alpha), + fetch: PhantomData, + } + } +} + +impl<'a, 'b, Fetch: PixelFetch> Shader for TransformedNearestImageAlphaShader<'a, 'b, Fetch> { + fn shade_span(&self, mut x: i32, y: i32, dest: &mut [u32], count: usize) { + for i in 0..count { + let p = self.xfm.transform(x as u16, y as u16); + dest[i] = fetch_nearest_alpha::(self.image, p.x, p.y, self.alpha); + x += 1; + } + } +} + +pub struct ImagePadAlphaShader<'a, 'b> { + image: &'a Image<'b>, + offset_x: i32, + offset_y: i32, + alpha: u32, +} + +impl<'a, 'b> ImagePadAlphaShader<'a, 'b> { + pub fn new(image: &'a Image<'b>, x: i32, y: i32, alpha: u32) -> ImagePadAlphaShader<'a, 'b> { + ImagePadAlphaShader { + image, + offset_x: x, + offset_y: y, + alpha: alpha_to_alpha256(alpha), + } + } +} + +impl<'a, 'b> Shader for ImagePadAlphaShader<'a, 'b> { + fn shade_span(&self, mut x: i32, mut y: i32, dest: &mut [u32], mut count: usize) { + x += self.offset_x; + y += self.offset_y; + let mut dest_x = 0; + + if y < 0 { + y = 0; + } else if y >= self.image.height { + y = self.image.height - 1; + } + + while x < 0 && count > 0 { + dest[dest_x] = alpha_mul(self.image.data[(self.image.width * y) as usize], self.alpha); + x += 1; + dest_x += 1; + count -= 1; + } + if count > 0 && x < self.image.width { + let len = count.min((self.image.width - x) as usize); + let d = &mut dest[dest_x..dest_x + len]; + let src_start = (self.image.width * y + x) as usize; + let s = &self.image.data[src_start..src_start + len]; + + for (d, s) in d.iter_mut().zip(s) { + *d = alpha_mul(*s, self.alpha); + } + + dest_x += len; + count -= len; + } + while count > 0 { + dest[dest_x] = alpha_mul( + self.image.data[(self.image.width * y + self.image.width - 1) as usize], + self.alpha, + ); + dest_x += 1; + count -= 1; + } + } +} + +pub struct ImageRepeatAlphaShader<'a, 'b> { + image: &'a Image<'b>, + offset_x: i32, + offset_y: i32, + alpha: u32, +} + +impl<'a, 'b> ImageRepeatAlphaShader<'a, 'b> { + pub fn new(image: &'a Image<'b>, x: i32, y: i32, alpha: u32) -> ImageRepeatAlphaShader<'a, 'b> { + ImageRepeatAlphaShader { + image, + offset_x: x, + offset_y: y, + alpha: alpha_to_alpha256(alpha), + } + } +} + +impl<'a, 'b> Shader for ImageRepeatAlphaShader<'a, 'b> { + fn shade_span(&self, mut x: i32, mut y: i32, dest: &mut [u32], mut count: usize) { + x += self.offset_x; + y += self.offset_y; + let mut dest_x = 0; + + let y = y.rem_euclid(self.image.height); + let mut x = x.rem_euclid(self.image.width); + + while count > 0 { + let len = count.min((self.image.width - x) as usize); + let d = &mut dest[dest_x..dest_x + len]; + let src_start = (self.image.width * y + x) as usize; + let s = &self.image.data[src_start..src_start + len]; + + for (d, s) in d.iter_mut().zip(s) { + *d = alpha_mul(*s, self.alpha); + } + + dest_x += len; + count -= len; + x = 0; + } + } +} + +pub struct RadialGradientShader { + gradient: Box, + spread: Spread, +} + +impl RadialGradientShader { + pub fn new( + gradient: &Gradient, + transform: &Transform, + spread: Spread, + alpha: u32, + ) -> RadialGradientShader { + RadialGradientShader { + gradient: gradient.make_source( + &transform_to_fixed(&transform.pre_translate(vec2(0.5, 0.5))), + alpha, + ), + spread, + } + } +} + +impl Shader for RadialGradientShader { + fn shade_span(&self, mut x: i32, y: i32, dest: &mut [u32], count: usize) { + for i in 0..count { + dest[i] = self + .gradient + .radial_gradient_eval(x as u16, y as u16, self.spread); + x += 1; + } + } +} + +pub struct TwoCircleRadialGradientShader { + gradient: Box, + spread: Spread, +} + +impl TwoCircleRadialGradientShader { + pub fn new( + gradient: &Gradient, + transform: &Transform, + c1: Point, + r1: f32, + c2: Point, + r2: f32, + spread: Spread, + alpha: u32, + ) -> TwoCircleRadialGradientShader { + TwoCircleRadialGradientShader { + gradient: gradient.make_two_circle_source( + c1.x, + c1.y, + r1, + c2.x, + c2.y, + r2, + &transform_to_fixed(&transform.pre_translate(vec2(0.5, 0.5))), + alpha, + ), + spread, + } + } +} + +impl Shader for TwoCircleRadialGradientShader { + fn shade_span(&self, mut x: i32, y: i32, dest: &mut [u32], count: usize) { + for i in 0..count { + dest[i] = self.gradient.eval(x as u16, y as u16, self.spread); + x += 1; + } + } +} + +pub struct SweepGradientShader { + gradient: Box, + spread: Spread, +} + +impl SweepGradientShader { + pub fn new( + gradient: &Gradient, + transform: &Transform, + start_angle: f32, + end_angle: f32, + spread: Spread, + alpha: u32, + ) -> SweepGradientShader { + SweepGradientShader { + gradient: gradient.make_sweep_source( + start_angle, + end_angle, + &transform_to_fixed(&transform.pre_translate(vec2(0.5, 0.5))), + alpha, + ), + spread, + } + } +} + +impl Shader for SweepGradientShader { + fn shade_span(&self, mut x: i32, y: i32, dest: &mut [u32], count: usize) { + for i in 0..count { + dest[i] = self.gradient.eval(x as u16, y as u16, self.spread); + x += 1; + } + } +} + +pub struct LinearGradientShader { + gradient: Box, + spread: Spread, +} + +impl LinearGradientShader { + pub fn new( + gradient: &Gradient, + transform: &Transform, + spread: Spread, + alpha: u32, + ) -> LinearGradientShader { + LinearGradientShader { + gradient: gradient.make_source( + &transform_to_fixed(&transform.pre_translate(vec2(0.5, 0.5))), + alpha, + ), + spread, + } + } +} + +impl Shader for LinearGradientShader { + fn shade_span(&self, mut x: i32, y: i32, dest: &mut [u32], count: usize) { + for i in 0..count { + dest[i] = self + .gradient + .linear_gradient_eval(x as u16, y as u16, self.spread); + x += 1; + } + } +} + +pub struct ShaderMaskBlitter<'a> { + pub x: i32, + pub y: i32, + pub shader: &'a dyn Shader, + pub tmp: Vec, + pub dest: &'a mut [u32], + pub dest_stride: i32, +} + +impl<'a> Blitter for ShaderMaskBlitter<'a> { + fn blit_span(&mut self, y: i32, x1: i32, x2: i32, mask: &[u8]) { + let dest_row = (y - self.y) * self.dest_stride; + let count = (x2 - x1) as usize; + self.shader.shade_span(x1, y, &mut self.tmp[..], count); + for i in 0..count { + let mask = mask[i] as u32; + if mask != 0 { + self.dest[(dest_row + x1 - self.x) as usize + i] = over_in( + self.tmp[i], + self.dest[(dest_row + x1 - self.x) as usize + i], + mask, + ); + } + } + } +} + +pub struct ShaderClipMaskBlitter<'a> { + pub x: i32, + pub y: i32, + pub shader: &'a dyn Shader, + pub tmp: Vec, + pub dest: &'a mut [u32], + pub dest_stride: i32, + pub clip: &'a [u8], + pub clip_stride: i32, +} + +impl<'a> Blitter for ShaderClipMaskBlitter<'a> { + fn blit_span(&mut self, y: i32, x1: i32, x2: i32, mask: &[u8]) { + let dest_row = (y - self.y) * self.dest_stride; + let clip_row = y * self.clip_stride; + let count = (x2 - x1) as usize; + self.shader.shade_span(x1, y, &mut self.tmp[..], count); + for i in 0..count { + let mask = mask[i] as u32; + let clip = self.clip[(clip_row + x1) as usize + i] as u32; + if mask != 0 && clip != 0 { + self.dest[(dest_row + x1 - self.x) as usize + i] = over_in_in( + self.tmp[i], + self.dest[(dest_row + x1 - self.x) as usize + i], + mask, + clip, + ); + } + } + } +} + +pub struct ShaderClipBlendMaskBlitter<'a> { + pub x: i32, + pub y: i32, + pub shader: &'a dyn Shader, + pub tmp: Vec, + pub dest: &'a mut [u32], + pub dest_stride: i32, + pub clip: &'a [u8], + pub clip_stride: i32, + pub blend_fn: fn(&[u32], &[u8], &[u8], &mut [u32]), +} + +impl<'a> Blitter for ShaderClipBlendMaskBlitter<'a> { + fn blit_span(&mut self, y: i32, x1: i32, x2: i32, mask: &[u8]) { + let dest_row = (y - self.y) * self.dest_stride; + let clip_row = y * self.clip_stride; + let count = (x2 - x1) as usize; + self.shader.shade_span(x1, y, &mut self.tmp[..], count); + (self.blend_fn)( + &self.tmp[..], + mask, + &self.clip[(clip_row + x1) as usize..], + &mut self.dest[(dest_row + x1 - self.x) as usize..], + ) + } +} + +pub struct ShaderBlendMaskBlitter<'a> { + pub x: i32, + pub y: i32, + pub shader: &'a dyn Shader, + pub tmp: Vec, + pub dest: &'a mut [u32], + pub dest_stride: i32, + pub blend_fn: fn(&[u32], &[u8], &mut [u32]), +} + +impl<'a> Blitter for ShaderBlendMaskBlitter<'a> { + fn blit_span(&mut self, y: i32, x1: i32, x2: i32, mask: &[u8]) { + let dest_row = (y - self.y) * self.dest_stride; + let count = (x2 - x1) as usize; + self.shader.shade_span(x1, y, &mut self.tmp[..], count); + (self.blend_fn)( + &self.tmp[..], + mask, + &mut self.dest[(dest_row + x1 - self.x) as usize..], + ) + } +} + +pub struct ShaderBlendBlitter<'a> { + pub x: i32, + pub y: i32, + pub shader: &'a dyn Shader, + pub tmp: Vec, + pub dest: &'a mut [u32], + pub dest_stride: i32, + pub blend_fn: fn(&[u32], &mut [u32]), +} + +impl<'a> Blitter for ShaderBlendBlitter<'a> { + fn blit_span(&mut self, y: i32, x1: i32, x2: i32, _: &[u8]) { + let dest_row = (y - self.y) * self.dest_stride; + let count = (x2 - x1) as usize; + self.shader.shade_span(x1, y, &mut self.tmp[..], count); + (self.blend_fn)( + &self.tmp[..], + &mut self.dest[(dest_row + x1 - self.x) as usize..], + ) + } +} + +fn is_integer_transform(trans: &Transform) -> Option { + if trans.m11 == 1. && trans.m12 == 0. && trans.m21 == 0. && trans.m22 == 1. { + let x = trans.m31 as i32; + let y = trans.m32 as i32; + if x as f32 == trans.m31 && y as f32 == trans.m32 { + return Some(IntPoint::new(x, y)); + } + } + None +} + +pub enum ShaderStorage<'a, 'b> { + None, + Solid(SolidShader), + ImagePadAlpha(ImagePadAlphaShader<'a, 'b>), + ImageRepeatAlpha(ImageRepeatAlphaShader<'a, 'b>), + TransformedNearestPadImageAlpha(TransformedNearestImageAlphaShader<'a, 'b, PadFetch>), + TransformedNearestRepeatImageAlpha(TransformedNearestImageAlphaShader<'a, 'b, RepeatFetch>), + TransformedPadImageAlpha(TransformedImageAlphaShader<'a, 'b, PadFetch>), + TransformedRepeatImageAlpha(TransformedImageAlphaShader<'a, 'b, RepeatFetch>), + TransformedPadImage(TransformedImageShader<'a, 'b, PadFetch>), + TransformedRepeatImage(TransformedImageShader<'a, 'b, RepeatFetch>), + TransformedNearestPadImage(TransformedNearestImageShader<'a, 'b, PadFetch>), + TransformedNearestRepeatImage(TransformedNearestImageShader<'a, 'b, RepeatFetch>), + RadialGradient(RadialGradientShader), + TwoCircleRadialGradient(TwoCircleRadialGradientShader), + LinearGradient(LinearGradientShader), + SweepGradient(SweepGradientShader), +} + +// The idea here is to store a shader in shader_storage and then return +// a reference to it. The goal is to avoid a heap allocation but the end +// result is pretty ugly. +pub fn choose_shader<'a, 'b, 'c>( + ti: &Transform, + src: &'b Source<'c>, + alpha: f32, + shader_storage: &'a mut ShaderStorage<'b, 'c>, +) -> &'a dyn Shader { + // XXX: clamp alpha + let alpha = (alpha * 255. + 0.5) as u32; + + *shader_storage = match src { + Source::Solid(c) => { + let color = alpha_mul(c.to_u32(), alpha_to_alpha256(alpha)); + let s = SolidShader { color }; + ShaderStorage::Solid(s) + } + Source::Image(ref image, ExtendMode::Pad, filter, transform) => { + if let Some(offset) = is_integer_transform(&ti.then(&transform)) { + ShaderStorage::ImagePadAlpha(ImagePadAlphaShader::new( + image, offset.x, offset.y, alpha, + )) + } else { + if alpha != 255 { + if *filter == FilterMode::Bilinear { + let s = TransformedImageAlphaShader::::new( + image, + &ti.then(&transform), + alpha, + ); + ShaderStorage::TransformedPadImageAlpha(s) + } else { + let s = TransformedNearestImageAlphaShader::::new( + image, + &ti.then(&transform), + alpha, + ); + ShaderStorage::TransformedNearestPadImageAlpha(s) + } + } else { + if *filter == FilterMode::Bilinear { + let s = + TransformedImageShader::::new(image, &ti.then(&transform)); + ShaderStorage::TransformedPadImage(s) + } else { + let s = TransformedNearestImageShader::::new( + image, + &ti.then(&transform), + ); + ShaderStorage::TransformedNearestPadImage(s) + } + } + } + } + Source::Image(ref image, ExtendMode::Repeat, filter, transform) => { + if let Some(offset) = is_integer_transform(&ti.then(&transform)) { + ShaderStorage::ImageRepeatAlpha(ImageRepeatAlphaShader::new( + image, offset.x, offset.y, alpha, + )) + } else { + if *filter == FilterMode::Bilinear { + if alpha != 255 { + let s = TransformedImageAlphaShader::::new( + image, + &ti.then(&transform), + alpha, + ); + ShaderStorage::TransformedRepeatImageAlpha(s) + } else { + let s = + TransformedImageShader::::new(image, &ti.then(&transform)); + ShaderStorage::TransformedRepeatImage(s) + } + } else { + if alpha != 255 { + let s = TransformedNearestImageAlphaShader::::new( + image, + &ti.then(&transform), + alpha, + ); + ShaderStorage::TransformedNearestRepeatImageAlpha(s) + } else { + let s = TransformedNearestImageShader::::new( + image, + &ti.then(&transform), + ); + ShaderStorage::TransformedNearestRepeatImage(s) + } + } + } + } + Source::RadialGradient(ref gradient, spread, transform) => { + let s = RadialGradientShader::new(gradient, &ti.then(&transform), *spread, alpha); + ShaderStorage::RadialGradient(s) + } + Source::TwoCircleRadialGradient(ref gradient, spread, c1, r1, c2, r2, transform) => { + let s = TwoCircleRadialGradientShader::new( + gradient, + &ti.then(&transform), + *c1, + *r1, + *c2, + *r2, + *spread, + alpha, + ); + ShaderStorage::TwoCircleRadialGradient(s) + } + Source::SweepGradient(ref gradient, spread, start_angle, end_angle, transform) => { + let s = SweepGradientShader::new( + gradient, + &ti.then(&transform), + *start_angle, + *end_angle, + *spread, + alpha, + ); + ShaderStorage::SweepGradient(s) + } + Source::LinearGradient(ref gradient, spread, transform) => { + let s = LinearGradientShader::new(gradient, &ti.then(&transform), *spread, alpha); + ShaderStorage::LinearGradient(s) + } + }; + + match shader_storage { + ShaderStorage::None => unreachable!(), + ShaderStorage::Solid(s) => s, + ShaderStorage::ImagePadAlpha(s) => s, + ShaderStorage::ImageRepeatAlpha(s) => s, + ShaderStorage::TransformedNearestPadImageAlpha(s) => s, + ShaderStorage::TransformedNearestRepeatImageAlpha(s) => s, + ShaderStorage::TransformedPadImageAlpha(s) => s, + ShaderStorage::TransformedRepeatImageAlpha(s) => s, + ShaderStorage::TransformedPadImage(s) => s, + ShaderStorage::TransformedRepeatImage(s) => s, + ShaderStorage::TransformedNearestPadImage(s) => s, + ShaderStorage::TransformedNearestRepeatImage(s) => s, + ShaderStorage::RadialGradient(s) => s, + ShaderStorage::TwoCircleRadialGradient(s) => s, + ShaderStorage::SweepGradient(s) => s, + ShaderStorage::LinearGradient(s) => s, + } +} + +pub enum ShaderBlitterStorage<'a> { + None, + ShaderBlendMaskBlitter(ShaderBlendMaskBlitter<'a>), + ShaderClipBlendMaskBlitter(ShaderClipBlendMaskBlitter<'a>), + ShaderMaskBlitter(ShaderMaskBlitter<'a>), + ShaderClipMaskBlitter(ShaderClipMaskBlitter<'a>), + ShaderBlendBlitter(ShaderBlendBlitter<'a>), +} + +/* +pub struct SolidBlitter<'a> { + color: u32, + mask: &'a [u8], + dest: &'a mut [u32], + dest_stride: i32, + mask_stride: i32, +} + +impl<'a> Blitter for SolidBlitter<'a> { + fn blit_span(&mut self, y: i32, x1: i32, x2: i32) { + let dest_row = y * self.dest_stride; + let mask_row = y * self.mask_stride; + for i in x1..x2 { + self.dest[(dest_row + i) as usize] = over_in( + self.color, + self.dest[(dest_row + i) as usize], + self.mask[(mask_row + i) as usize] as u32, + ); + } + } +} +*/ diff --git a/crates/raqote/src/dash.rs b/crates/raqote/src/dash.rs new file mode 100644 index 000000000..1c2d58043 --- /dev/null +++ b/crates/raqote/src/dash.rs @@ -0,0 +1,206 @@ +use crate::path_builder::*; + +use crate::Point; + +use lyon_geom::LineSegment; + +#[derive(Clone, Copy)] +struct DashState { + index: usize, // index into the dash array + on: bool, // whether the dash is on or off + remaining_length: f32, // how much of the dash remains +} + +pub fn dash_path(path: &Path, dash_array: &[f32], mut dash_offset: f32) -> Path { + let mut dashed = PathBuilder::new(); + + let mut cur_pt = None; + let mut start_point = None; + + let mut total_dash_length = 0.; + for dash in dash_array { + total_dash_length += *dash; + } + if dash_array.len() % 2 == 1 { + // if the number of items in the dash_array is odd then we need it takes two periods + // to return to the beginning. + total_dash_length *= 2.; + } + + // The dash length must be more than zero. + if !(total_dash_length > 0.) { + return dashed.finish(); + } + + // Handle large positive and negative offsets so that we don't loop for a high number of + // iterations below in extreme cases + dash_offset = dash_offset % total_dash_length; + if dash_offset < 0. { + dash_offset += total_dash_length; + } + + // To handle closed paths we need a bunch of extra state so that we properly + // join the first segment. Unfortunately, this makes the code sort of hairy. + // We need to store all of the points in the initial segment so that we can + // join the end of the path with it. + let mut is_first_segment = true; + let mut first_dash = true; + let mut initial_segment: Vec = Vec::new(); + + let mut state = DashState { + on: true, + remaining_length: dash_array[0], + index: 0, + }; + + // adjust our position in the dash array by the dash offset + while dash_offset > state.remaining_length { + dash_offset -= state.remaining_length; + state.index += 1; + state.remaining_length = dash_array[state.index % dash_array.len()]; + state.on = !state.on; + } + state.remaining_length -= dash_offset; + + // Save a copy of the initial state so that we can restore it for each subpath + let initial = state; + for op in &path.ops { + match *op { + PathOp::MoveTo(pt) => { + cur_pt = Some(pt); + start_point = Some(pt); + dashed.move_to(pt.x, pt.y); + + // flush the previous initial segment + if initial_segment.len() > 0 { + dashed.move_to(initial_segment[0].x, initial_segment[0].y); + for i in 1..initial_segment.len() { + dashed.line_to(initial_segment[i].x, initial_segment[i].y); + } + } + is_first_segment = true; + initial_segment = Vec::new(); + first_dash = true; + + // reset the dash state + state = initial; + } + PathOp::LineTo(pt) => { + if let Some(cur_pt) = cur_pt { + let mut start = cur_pt; + let line = LineSegment { + from: start, + to: pt, + }; + let mut len = line.length(); + let lv = line.to_vector().normalize(); + while len > state.remaining_length { + let seg = start + lv * state.remaining_length; + if state.on { + if is_first_segment { + initial_segment.push(start); + initial_segment.push(seg); + } else { + dashed.line_to(seg.x, seg.y); + } + } else { + first_dash = false; + dashed.move_to(seg.x, seg.y); + } + is_first_segment = false; + state.on = !state.on; + state.index += 1; + len -= state.remaining_length; + state.remaining_length = dash_array[state.index % dash_array.len()]; + start = seg; + } + if state.on { + if is_first_segment { + initial_segment.push(start); + initial_segment.push(pt); + } else { + dashed.line_to(pt.x, pt.y); + } + } else { + first_dash = false; + dashed.move_to(pt.x, pt.y); + } + state.remaining_length -= len; + } + cur_pt = Some(pt); + } + PathOp::Close => { + if let (Some(current), Some(start_point)) = (cur_pt, start_point) { + let mut start = current; + let line = LineSegment { + from: start, + to: start_point, + }; + let mut len = line.length(); + let lv = line.to_vector().normalize(); + + while len > state.remaining_length { + let seg = start + lv * state.remaining_length; + if state.on { + if is_first_segment { + initial_segment.push(start); + initial_segment.push(seg); + } else { + dashed.line_to(seg.x, seg.y); + } + } else { + first_dash = false; + dashed.move_to(seg.x, seg.y); + } + state.on = !state.on; + state.index += 1; + len -= state.remaining_length; + state.remaining_length = dash_array[state.index % dash_array.len()]; + start = seg; + } + + if state.on { + if first_dash { + // If we're still on the first dash we can just close + dashed.close(); + } else { + if initial_segment.len() > 0 { + // If have an initial segment we'll need to connect with it + for pt in initial_segment { + dashed.line_to(pt.x, pt.y); + } + } else { + dashed.line_to(start_point.x, start_point.y); + } + } + } else { + if initial_segment.len() > 0 { + dashed.move_to(initial_segment[0].x, initial_segment[0].y); + for i in 1..initial_segment.len() { + dashed.line_to(initial_segment[i].x, initial_segment[i].y); + } + } + } + initial_segment = Vec::new(); + cur_pt = Some(start_point); + + // reset the dash state + state = initial; + } else { + cur_pt = None; + } + } + PathOp::QuadTo(..) => panic!("Only flat paths handled"), + PathOp::CubicTo(..) => panic!("Only flat paths handled"), + } + } + + // We still have an initial segment that we need to emit + if !initial_segment.is_empty() { + dashed.move_to(initial_segment[0].x, initial_segment[0].y); + for i in 1..initial_segment.len() { + dashed.line_to(initial_segment[i].x, initial_segment[i].y); + } + } + dashed.finish() +} diff --git a/crates/raqote/src/draw_target.rs b/crates/raqote/src/draw_target.rs new file mode 100644 index 000000000..f576101b4 --- /dev/null +++ b/crates/raqote/src/draw_target.rs @@ -0,0 +1,1267 @@ +use crate::rasterizer::Rasterizer; + +use crate::blitter::*; +use sw_composite::*; + +use crate::dash::*; +use crate::geom::*; +use crate::path_builder::*; + +pub use crate::path_builder::Winding; +use lyon_geom::CubicBezierSegment; + +#[cfg(feature = "text")] +mod fk { + pub use font_kit::canvas::{Canvas, Format, RasterizationOptions}; + pub use font_kit::font::Font; + pub use font_kit::hinting::HintingOptions; + pub use pathfinder_geometry::transform2d::Transform2F; + pub use pathfinder_geometry::vector::{vec2f, vec2i}; +} + +#[cfg(feature = "png")] +use std::fs::*; +#[cfg(feature = "png")] +use std::io::BufWriter; + +use crate::stroke::*; +use crate::{IntPoint, IntRect, Point, Transform, Vector}; + +use euclid::vec2; + +#[derive(Clone)] +pub struct Mask { + pub width: i32, + pub height: i32, + pub data: Vec, +} + +/// A premultiplied color. i.e. r,b,g <= a +#[derive(Clone, Copy, PartialEq, Debug)] +pub struct SolidSource { + pub r: u8, + pub g: u8, + pub b: u8, + pub a: u8, +} + +impl SolidSource { + pub fn to_u32(&self) -> u32 { + let color = ((self.a as u32) << 24) + | ((self.r as u32) << 16) + | ((self.g as u32) << 8) + | ((self.b as u32) << 0); + color + } + + pub fn from_unpremultiplied_argb(a: u8, r: u8, g: u8, b: u8) -> Self { + SolidSource { + a: a, + r: muldiv255(a as u32, r as u32) as u8, + g: muldiv255(a as u32, g as u32) as u8, + b: muldiv255(a as u32, b as u32) as u8, + } + } +} + +impl From for SolidSource { + fn from(color: Color) -> Self { + SolidSource::from_unpremultiplied_argb(color.a(), color.r(), color.g(), color.b()) + } +} + +#[derive(PartialEq, Clone, Copy, Debug)] +pub enum BlendMode { + Dst, + Src, + Clear, + SrcOver, + DstOver, + SrcIn, + DstIn, + SrcOut, + DstOut, + SrcAtop, + DstAtop, + Xor, + Add, + + Screen, + Overlay, + Darken, + Lighten, + ColorDodge, + ColorBurn, + HardLight, + SoftLight, + Difference, + Exclusion, + Multiply, + Hue, + Saturation, + Color, + Luminosity, +} + +trait Blender { + type Output; + fn build() -> Self::Output; +} + +struct BlendRow; + +fn blend_row(src: &[u32], dst: &mut [u32]) { + for (dst, src) in dst.iter_mut().zip(src) { + *dst = T::blend(*src, *dst); + } +} + +impl Blender for BlendRow { + type Output = fn(&[u32], &mut [u32]); + fn build() -> Self::Output { + blend_row:: + } +} + +struct BlendRowMask; + +fn blend_row_mask(src: &[u32], mask: &[u8], dst: &mut [u32]) { + for ((dst, src), mask) in dst.iter_mut().zip(src).zip(mask) { + *dst = lerp(*dst, T::blend(*src, *dst), alpha_to_alpha256(*mask as u32)); + } +} + +impl Blender for BlendRowMask { + type Output = fn(&[u32], &[u8], &mut [u32]); + fn build() -> Self::Output { + blend_row_mask:: + } +} + +struct BlendRowMaskClip; + +fn blend_row_mask_clip(src: &[u32], mask: &[u8], clip: &[u8], dst: &mut [u32]) { + for (((dst, src), mask), clip) in dst.iter_mut().zip(src).zip(mask).zip(clip) { + *dst = alpha_lerp(*dst, T::blend(*src, *dst), *mask as u32, *clip as u32); + } +} + +impl Blender for BlendRowMaskClip { + type Output = fn(&[u32], &[u8], &[u8], &mut [u32]); + fn build() -> Self::Output { + blend_row_mask_clip:: + } +} + +fn build_blend_proc(mode: BlendMode) -> T::Output { + use sw_composite::blend::*; + match mode { + BlendMode::Dst => T::build::(), + BlendMode::Src => T::build::(), + BlendMode::Clear => T::build::(), + BlendMode::SrcOver => T::build::(), + BlendMode::DstOver => T::build::(), + BlendMode::SrcIn => T::build::(), + BlendMode::DstIn => T::build::(), + BlendMode::SrcOut => T::build::(), + BlendMode::DstOut => T::build::(), + BlendMode::SrcAtop => T::build::(), + BlendMode::DstAtop => T::build::(), + BlendMode::Xor => T::build::(), + BlendMode::Add => T::build::(), + BlendMode::Screen => T::build::(), + BlendMode::Overlay => T::build::(), + BlendMode::Darken => T::build::(), + BlendMode::Lighten => T::build::(), + BlendMode::ColorDodge => T::build::(), + BlendMode::ColorBurn => T::build::(), + BlendMode::HardLight => T::build::(), + BlendMode::SoftLight => T::build::(), + BlendMode::Difference => T::build::(), + BlendMode::Exclusion => T::build::(), + BlendMode::Multiply => T::build::(), + BlendMode::Hue => T::build::(), + BlendMode::Saturation => T::build::(), + BlendMode::Color => T::build::(), + BlendMode::Luminosity => T::build::(), + } +} + +#[derive(Copy, Clone)] +pub enum ExtendMode { + Pad, + Repeat, +} + +#[derive(Copy, Clone, PartialEq)] +pub enum FilterMode { + Bilinear, + Nearest, +} + +/// LinearGradients have an implicit start point at 0,0 and an end point at 256,0. The transform +/// parameter can be used to adjust them to the desired location. +/// RadialGradients have an implicit center at 0,0 and a radius of 128. +/// The helper functions: `new_linear_gradient`, `new_radial_gradient` and `new_two_circle_radial_gradient` +/// allow the gradients to be constructed with easier to understand inputs. +/// The `transform` parameter maps user space to source space. This means that setting the same transform +/// on the draw target as the source will have the effect of canceling out. +/// +/// These locations are an artifact of the blitter implementation and will probably change in the +/// future to become more ergonomic. +#[derive(Clone)] +pub enum Source<'a> { + Solid(SolidSource), + Image(Image<'a>, ExtendMode, FilterMode, Transform), + RadialGradient(Gradient, Spread, Transform), + TwoCircleRadialGradient(Gradient, Spread, Point, f32, Point, f32, Transform), + LinearGradient(Gradient, Spread, Transform), + SweepGradient(Gradient, Spread, f32, f32, Transform), +} + +impl From for Source<'_> { + fn from(other: SolidSource) -> Self { + Source::Solid(other) + } +} + +impl From for Source<'_> { + fn from(color: Color) -> Self { + Source::Solid(SolidSource::from(color)) + } +} + +impl<'a> Source<'a> { + /// Creates a new linear gradient source where the start point corresponds to the gradient + /// stop at position = 0 and the end point corresponds to the gradient stop at position = 1. + pub fn new_linear_gradient( + gradient: Gradient, + start: Point, + end: Point, + spread: Spread, + ) -> Source<'a> { + let gradient_vector = Vector::new(end.x - start.x, end.y - start.y); + // Get length of desired gradient vector + let length = gradient_vector.length(); + if length != 0. { + let gradient_vector = gradient_vector.normalize(); + + let sin = gradient_vector.y; + let cos = gradient_vector.x; + // Build up a rotation matrix from our vector + let mat = Transform::new(cos, -sin, sin, cos, 0., 0.); + + // Adjust for the start point + let mat = mat.pre_translate(vec2(-start.x, -start.y)); + + // Scale gradient to desired length + let mat = mat.then_scale(1. / length, 1. / length); + Source::LinearGradient(gradient, spread, mat) + } else { + // use some degenerate matrix + Source::LinearGradient(gradient, spread, Transform::scale(0., 0.)) + } + } + + /// Creates a new radial gradient that is centered at the given point and has the given radius. + pub fn new_radial_gradient( + gradient: Gradient, + center: Point, + radius: f32, + spread: Spread, + ) -> Source<'a> { + // Scale gradient to desired radius + let scale = Transform::scale(radius, radius); + // Transform gradient to center of gradient + let translate = Transform::translation(center.x, center.y); + // Compute final transform + let transform = scale.then(&translate).inverse().unwrap(); + + Source::RadialGradient(gradient, spread, transform) + } + + /// Creates a new radial gradient that is centered at the given point and has the given radius. + pub fn new_two_circle_radial_gradient( + gradient: Gradient, + center1: Point, + radius1: f32, + center2: Point, + radius2: f32, + spread: Spread, + ) -> Source<'a> { + let transform = Transform::identity(); + Source::TwoCircleRadialGradient( + gradient, spread, center1, radius1, center2, radius2, transform, + ) + } + + /// Creates a new sweep gradient that is centered at the given point with `start_angle` and `end_angle`. + pub fn new_sweep_gradient( + gradient: Gradient, + center: Point, + start_angle: f32, + end_angle: f32, + spread: Spread, + ) -> Source<'a> { + // Transform gradient to center of gradient + let transform = Transform::translation(-center.x, -center.y); + Source::SweepGradient(gradient, spread, start_angle, end_angle, transform) + } +} + +#[derive(PartialEq, Clone, Copy, Debug)] +pub enum AntialiasMode { + None, + Gray, +} + +#[derive(PartialEq, Clone, Copy, Debug)] +pub struct DrawOptions { + pub blend_mode: BlendMode, + pub alpha: f32, + pub antialias: AntialiasMode, +} + +impl DrawOptions { + pub fn new() -> Self { + Default::default() + } +} + +impl Default for DrawOptions { + fn default() -> Self { + DrawOptions { + blend_mode: BlendMode::SrcOver, + alpha: 1., + antialias: AntialiasMode::Gray, + } + } +} + +#[derive(Debug, Clone)] +struct Clip { + rect: IntRect, + mask: Option>, +} + +#[derive(Debug, Clone)] +struct Layer { + buf: Vec, + opacity: f32, + rect: IntRect, + blend: BlendMode, +} + +fn scaled_tolerance(x: f32, trans: &Transform) -> f32 { + // The absolute value of the determinant is the area parallelogram + // Take the sqrt of the area to losily convert to one dimension + x / trans.determinant().abs().sqrt() +} + +/// The main type used for drawing +#[derive(Debug, Clone)] +pub struct DrawTarget> { + width: i32, + height: i32, + rasterizer: Rasterizer, + current_point: Option, + first_point: Option, + buf: Backing, + clip_stack: Vec, + layer_stack: Vec, + transform: Transform, +} + +impl DrawTarget { + pub fn new(width: i32, height: i32) -> DrawTarget { + DrawTarget { + width, + height, + current_point: None, + first_point: None, + rasterizer: Rasterizer::new(width, height), + buf: vec![0; (width * height) as usize], + clip_stack: Vec::new(), + layer_stack: Vec::new(), + transform: Transform::identity(), + } + } + + /// Use a previously used vector for the bitmap and extend it to the given size(if needed) + pub fn from_vec(width: i32, height: i32, mut vec: Vec) -> DrawTarget { + vec.resize((width * height) as usize, 0); + DrawTarget { + width, + height, + current_point: None, + first_point: None, + rasterizer: Rasterizer::new(width, height), + buf: vec, + clip_stack: Vec::new(), + layer_stack: Vec::new(), + transform: Transform::identity(), + } + } + + /// Take ownership of the buffer backing the DrawTarget + pub fn into_vec(self) -> Vec { + self.buf + } +} + +impl + AsMut<[u32]>> DrawTarget { + /// Use an existing backing storage for the bitmap + /// + /// The backing store must be the correct size (width*height elements). + pub fn from_backing(width: i32, height: i32, buf: Backing) -> Self { + assert_eq!((width * height) as usize, buf.as_ref().len()); + DrawTarget { + width, + height, + current_point: None, + first_point: None, + rasterizer: Rasterizer::new(width, height), + buf, + clip_stack: Vec::new(), + layer_stack: Vec::new(), + transform: Transform::identity(), + } + } + + pub fn width(&self) -> i32 { + self.width + } + + pub fn height(&self) -> i32 { + self.height + } + + /// sets a transform that will be applied to all drawing operations + pub fn set_transform(&mut self, transform: &Transform) { + self.transform = *transform; + } + + /// gets the current transform + pub fn get_transform(&self) -> &Transform { + &self.transform + } + + fn move_to(&mut self, pt: Point) { + self.current_point = Some(pt); + self.first_point = Some(pt); + } + + fn line_to(&mut self, pt: Point) { + if self.current_point.is_none() { + self.current_point = Some(pt); + self.first_point = Some(pt); + } + if let Some(current_point) = self.current_point { + self.rasterizer + .add_edge(current_point, pt, false, Point::new(0., 0.)); + self.current_point = Some(pt); + } + } + + fn quad_to(&mut self, cpt: Point, pt: Point) { + if self.current_point.is_none() { + self.current_point = Some(cpt); + self.first_point = Some(cpt); + } + if let Some(current_point) = self.current_point { + let curve = [current_point, cpt, pt]; + self.current_point = Some(curve[2]); + self.add_quad(curve); + } + } + + fn add_quad(&mut self, mut curve: [Point; 3]) { + let a = curve[0].y; + let b = curve[1].y; + let c = curve[2].y; + if is_not_monotonic(a, b, c) { + let mut t_value = 0.; + if valid_unit_divide(a - b, a - b - b + c, &mut t_value) { + let mut dst = [Point::new(0., 0.); 5]; + chop_quad_at(&curve, &mut dst, t_value); + flatten_double_quad_extrema(&mut dst); + self.rasterizer.add_edge(dst[0], dst[2], true, dst[1]); + self.rasterizer.add_edge(dst[2], dst[4], true, dst[3]); + return; + } + // if we get here, we need to force dst to be monotonic, even though + // we couldn't compute a unit_divide value (probably underflow). + let b = if (a - b).abs() < (b - c).abs() { a } else { c }; + curve[1].y = b; + } + self.rasterizer.add_edge(curve[0], curve[2], true, curve[1]); + } + + fn cubic_to(&mut self, cpt1: Point, cpt2: Point, pt: Point) { + if self.current_point.is_none() { + self.current_point = Some(cpt1); + self.first_point = Some(cpt1); + } + if let Some(current_point) = self.current_point { + let c = CubicBezierSegment { + from: current_point, + ctrl1: cpt1, + ctrl2: cpt2, + to: pt, + }; + c.for_each_quadratic_bezier(0.01, &mut |q| { + let curve = [q.from, q.ctrl, q.to]; + self.add_quad(curve); + }); + self.current_point = Some(pt); + } + } + + fn close(&mut self) { + if let (Some(first_point), Some(current_point)) = (self.first_point, self.current_point) { + self.rasterizer + .add_edge(current_point, first_point, false, Point::new(0., 0.)); + } + self.current_point = self.first_point; + } + + fn apply_path(&mut self, path: &Path) { + // we have no height so there can be no edges + if self.height == 0 { + return; + } + + for op in &path.ops { + match *op { + PathOp::MoveTo(pt) => { + self.close(); + self.move_to(self.transform.transform_point(pt)); + } + PathOp::LineTo(pt) => self.line_to(self.transform.transform_point(pt)), + PathOp::QuadTo(cpt, pt) => self.quad_to( + self.transform.transform_point(cpt), + self.transform.transform_point(pt), + ), + PathOp::CubicTo(cpt1, cpt2, pt) => self.cubic_to( + self.transform.transform_point(cpt1), + self.transform.transform_point(cpt2), + self.transform.transform_point(pt), + ), + PathOp::Close => self.close(), + } + } + // make sure the path is closed + self.close(); + // XXX: we'd like for this function to return the bounds of the path + } + + pub fn push_clip_rect(&mut self, rect: IntRect) { + // intersect with current clip + let clip = match self.clip_stack.last() { + Some(Clip { + rect: current_clip, + mask: _, + }) => Clip { + rect: current_clip.intersection_unchecked(&rect), + mask: None, + }, + _ => Clip { + rect: rect, + mask: None, + }, + }; + self.clip_stack.push(clip); + } + + pub fn pop_clip(&mut self) { + self.clip_stack.pop(); + } + + pub fn push_clip(&mut self, path: &Path) { + self.apply_path(path); + + // XXX: restrict to clipped area + let mut blitter = MaskSuperBlitter::new(0, 0, self.width, self.height); + self.rasterizer.rasterize(&mut blitter, path.winding); + + if let Some(last) = self.clip_stack.last() { + // combine with previous mask + if let Some(last_mask) = &last.mask { + for i in 0..((self.width * self.height) as usize) { + blitter.buf[i] = muldiv255(blitter.buf[i] as u32, last_mask[i] as u32) as u8 + } + } + } + + let current_bounds = self.clip_bounds(); + //XXX: handle interleaving of clip rect/masks better + self.clip_stack.push(Clip { + rect: current_bounds, + mask: Some(blitter.buf), + }); + self.rasterizer.reset(); + } + + fn clip_bounds(&self) -> IntRect { + self.clip_stack + .last() + .map(|c| c.rect) + .unwrap_or(IntRect::new( + euclid::Point2D::new(0, 0), + euclid::Point2D::new(self.width, self.height), + )) + } + + /// Pushes a new layer as the drawing target. This is used for implementing + /// group opacity effects. + pub fn push_layer(&mut self, opacity: f32) { + self.push_layer_with_blend(opacity, BlendMode::SrcOver) + } + + /// Pushes a new layer as the drawing target. This is used for implementing + /// group opacity or blend effects. + pub fn push_layer_with_blend(&mut self, opacity: f32, blend: BlendMode) { + let rect = self.clip_bounds(); + self.layer_stack.push(Layer { + rect, + buf: vec![0; (rect.size().width * rect.size().height) as usize], + opacity, + blend, + }); + } + + /// Draws the most recently pushed layer to the drawing target with + /// the pushed opacity applied. + pub fn pop_layer(&mut self) { + let layer = self.layer_stack.pop().unwrap(); + let opacity = (layer.opacity * 255. + 0.5) as u8; + // Allocating an entire mask just for the opacity is needlessly bad. + // We should be able to fix it once the blitters work better. + let mask = vec![opacity; (self.width * self.height) as usize]; + let size = layer.rect.size(); + let ctm = self.transform; + self.transform = Transform::identity(); + let image = Source::Image( + Image { + width: size.width, + height: size.height, + data: &layer.buf, + }, + ExtendMode::Pad, + FilterMode::Nearest, + Transform::translation(-layer.rect.min.x as f32, -layer.rect.min.y as f32), + ); + self.composite( + &image, + Some(&mask), + intrect(0, 0, self.width, self.height), + layer.rect, + layer.blend, + 1., + ); + self.transform = ctm; + } + + /// Draws an image at (x, y) with the size (width, height). This will rescale the image to the + /// destination size. + pub fn draw_image_with_size_at( + &mut self, + width: f32, + height: f32, + x: f32, + y: f32, + image: &Image, + options: &DrawOptions, + ) { + let source = Source::Image( + *image, + ExtendMode::Pad, + FilterMode::Bilinear, + Transform::translation(-x, -y) + .then_scale(image.width as f32 / width, image.height as f32 / height), + ); + + self.fill_rect(x, y, width, height, &source, options); + } + + /// Draws an image at x, y + pub fn draw_image_at(&mut self, x: f32, y: f32, image: &Image, options: &DrawOptions) { + self.draw_image_with_size_at( + image.width as f32, + image.height as f32, + x, + y, + image, + options, + ); + } + + /// Draws `src` through an untransformed `mask` positioned at `x`, `y` in device space + pub fn mask(&mut self, src: &Source, x: i32, y: i32, mask: &Mask) { + self.composite( + src, + Some(&mask.data), + intrect(x, y, mask.width, mask.height), + intrect(x, y, mask.width, mask.height), + BlendMode::SrcOver, + 1., + ); + } + + /// Strokes `path` with `style` and fills the result with `src` + pub fn stroke( + &mut self, + path: &Path, + src: &Source, + style: &StrokeStyle, + options: &DrawOptions, + ) { + let tolerance = 0.1; + + // Since we're flattening in userspace, we need to compensate for the transform otherwise + // we'll flatten too much or not enough depending on the scale. We approximate doing this + // correctly by scaling the tolerance value using the same mechanism as Fitz. This + // approximation will fail if the scale between axes is drastically different. An + // alternative would be to use transform specific flattening but I haven't seen that done + // anywhere. + let tolerance = scaled_tolerance(tolerance, &self.transform); + let mut path = path.flatten(tolerance); + + if !style.dash_array.is_empty() { + path = dash_path(&path, &style.dash_array, style.dash_offset); + } + let stroked = stroke_to_path(&path, style); + self.fill(&stroked, src, options); + } + + /// Fills the rect `x`, `y,`, `width`, `height` with `src`. If the result is an + /// integer aligned rectangle performance will be faster than filling a rectangular path. + pub fn fill_rect( + &mut self, + x: f32, + y: f32, + width: f32, + height: f32, + src: &Source, + options: &DrawOptions, + ) { + let ix = x as i32; + let iy = y as i32; + let iwidth = width as i32; + let iheight = height as i32; + let integer_rect = + ix as f32 == x && iy as f32 == y && iwidth as f32 == width && iheight as f32 == height; + + if self.transform == Transform::identity() && integer_rect && self.clip_stack.is_empty() { + let bounds = intrect(0, 0, self.width, self.height); + let mut irect = intrect(ix, iy, ix + iwidth, iy + iheight); + irect = match irect.intersection(&bounds) { + Some(irect) => irect, + _ => return, + }; + self.composite(src, None, irect, irect, options.blend_mode, options.alpha); + } else { + let mut pb = PathBuilder::new(); + pb.rect(x, y, width, height); + self.fill(&pb.finish(), src, options); + } + } + + /// Fills `path` with `src` + pub fn fill(&mut self, path: &Path, src: &Source, options: &DrawOptions) { + self.apply_path(path); + let bounds = self.rasterizer.get_bounds(); + if bounds.size().width > 0 && bounds.size().height > 0 { + match options.antialias { + AntialiasMode::None => { + let mut blitter = MaskBlitter::new( + bounds.min.x, + bounds.min.y, + bounds.size().width, + bounds.size().height, + ); + self.rasterizer.rasterize(&mut blitter, path.winding); + self.composite( + src, + Some(&blitter.buf), + bounds, + bounds, + options.blend_mode, + options.alpha, + ); + } + AntialiasMode::Gray => { + let mut blitter = MaskSuperBlitter::new( + bounds.min.x, + bounds.min.y, + bounds.size().width, + bounds.size().height, + ); + self.rasterizer.rasterize(&mut blitter, path.winding); + self.composite( + src, + Some(&blitter.buf), + bounds, + bounds, + options.blend_mode, + options.alpha, + ); + } + } + } + self.rasterizer.reset(); + } + + /// Fills the current clip with the solid color `solid` + pub fn clear(&mut self, solid: SolidSource) { + let mut pb = PathBuilder::new(); + if self.clip_stack.is_empty() { + let color = solid.to_u32(); + for pixel in self.buf.as_mut() { + *pixel = color; + } + } else { + let ctm = self.transform; + self.transform = Transform::identity(); + pb.rect(0., 0., self.width as f32, self.height as f32); + self.fill( + &pb.finish(), + &Source::Solid(solid), + &DrawOptions { + blend_mode: BlendMode::Src, + alpha: 1., + antialias: AntialiasMode::Gray, + }, + ); + self.transform = ctm; + } + } + + #[cfg(feature = "text")] + pub fn draw_text( + &mut self, + font: &fk::Font, + point_size: f32, + text: &str, + start: Point, + src: &Source, + options: &DrawOptions, + ) { + let mut start = fk::vec2f(start.x, start.y); + let mut ids = Vec::new(); + let mut positions = Vec::new(); + for c in text.chars() { + let id = font.glyph_for_char(c).unwrap(); + ids.push(id); + positions.push(Point::new(start.x(), start.y())); + start += font.advance(id).unwrap() * point_size / 24. / 96.; + } + self.draw_glyphs(font, point_size, &ids, &positions, src, options); + } + + #[cfg(feature = "text")] + pub fn draw_glyphs( + &mut self, + font: &fk::Font, + point_size: f32, + ids: &[u32], + positions: &[Point], + src: &Source, + options: &DrawOptions, + ) { + let antialias_mode = match options.antialias { + AntialiasMode::Gray => fk::RasterizationOptions::GrayscaleAa, + AntialiasMode::None => fk::RasterizationOptions::Bilevel, + }; + let mut combined_bounds = euclid::Rect::zero(); + for (id, position) in ids.iter().zip(positions.iter()) { + let bounds = font.raster_bounds( + *id, + point_size, + fk::Transform2F::row_major( + self.transform.m11, + self.transform.m12, + self.transform.m21, + self.transform.m22, + 0., + 0., + ) + .translate(fk::vec2f(position.x, position.y)), + fk::HintingOptions::None, + antialias_mode, + ); + combined_bounds = match bounds { + Ok(bounds) => { + let origin = bounds.origin(); + let size = bounds.size(); + let bounds = euclid::Rect::new( + IntPoint::new(origin.x(), origin.y()), + euclid::Size2D::new(size.x(), size.y()), + ); + combined_bounds.union(&bounds) + } + _ => panic!(), + } + } + + /*let mut canvas = Canvas::new(&euclid::Size2D::new(combined_bounds.size.width as u32, + combined_bounds.size.height as u32), Format::A8);*/ + let mut canvas = fk::Canvas::new( + fk::vec2i(combined_bounds.size.width, combined_bounds.size.height), + fk::Format::A8, + ); + for (id, position) in ids.iter().zip(positions.iter()) { + let mut position = self.transform.transform_point(*position); + position.x -= combined_bounds.origin.x as f32; + position.y -= combined_bounds.origin.y as f32; + font.rasterize_glyph( + &mut canvas, + *id, + point_size, + fk::Transform2F::row_major( + self.transform.m11, + self.transform.m12, + self.transform.m21, + self.transform.m22, + 0., + 0., + ) + .translate(fk::vec2f(position.x, position.y)), + fk::HintingOptions::None, + antialias_mode, + ) + .unwrap(); + } + + self.composite( + src, + Some(&canvas.pixels), + combined_bounds.to_box2d(), + combined_bounds.to_box2d(), + options.blend_mode, + 1., + ); + } +} + +impl DrawTarget { + fn choose_blitter<'a, 'b, 'c>( + mask: Option<&[u8]>, + clip_stack: &'a Vec, + blitter_storage: &'b mut ShaderBlitterStorage<'a>, + shader: &'a dyn Shader, + blend: BlendMode, + dest: &'a mut [u32], + dest_bounds: IntRect, + width: i32, + ) -> &'b mut dyn Blitter { + *blitter_storage = match (mask, clip_stack.last()) { + ( + Some(_mask), + Some(Clip { + rect: _, + mask: Some(clip), + }), + ) => { + if blend == BlendMode::SrcOver { + let scb = ShaderClipMaskBlitter { + x: dest_bounds.min.x, + y: dest_bounds.min.y, + shader, + tmp: vec![0; width as usize], + dest, + dest_stride: dest_bounds.size().width, + clip, + clip_stride: width, + }; + ShaderBlitterStorage::ShaderClipMaskBlitter(scb) + } else { + let blend_fn = build_blend_proc::(blend); + let scb_blend = ShaderClipBlendMaskBlitter { + x: dest_bounds.min.x, + y: dest_bounds.min.y, + shader, + tmp: vec![0; width as usize], + dest, + dest_stride: dest_bounds.size().width, + clip, + clip_stride: width, + blend_fn, + }; + ShaderBlitterStorage::ShaderClipBlendMaskBlitter(scb_blend) + } + } + (Some(_mask), _) => { + if blend == BlendMode::SrcOver { + let sb = ShaderMaskBlitter { + x: dest_bounds.min.x, + y: dest_bounds.min.y, + shader: &*shader, + tmp: vec![0; width as usize], + dest, + dest_stride: dest_bounds.size().width, + }; + ShaderBlitterStorage::ShaderMaskBlitter(sb) + } else { + let blend_fn = build_blend_proc::(blend); + let sb_blend = ShaderBlendMaskBlitter { + x: dest_bounds.min.x, + y: dest_bounds.min.y, + shader: &*shader, + tmp: vec![0; width as usize], + dest, + dest_stride: dest_bounds.size().width, + blend_fn, + }; + ShaderBlitterStorage::ShaderBlendMaskBlitter(sb_blend) + } + } + (None, _) => { + let blend_fn = build_blend_proc::(blend); + let sb_blend = ShaderBlendBlitter { + x: dest_bounds.min.x, + y: dest_bounds.min.y, + shader: &*shader, + tmp: vec![0; width as usize], + dest, + dest_stride: dest_bounds.size().width, + blend_fn, + }; + ShaderBlitterStorage::ShaderBlendBlitter(sb_blend) + } + }; + + match blitter_storage { + ShaderBlitterStorage::None => unreachable!(), + ShaderBlitterStorage::ShaderBlendMaskBlitter(s) => s, + ShaderBlitterStorage::ShaderClipBlendMaskBlitter(s) => s, + ShaderBlitterStorage::ShaderMaskBlitter(s) => s, + ShaderBlitterStorage::ShaderClipMaskBlitter(s) => s, + ShaderBlitterStorage::ShaderBlendBlitter(s) => s, + } + } +} + +impl + AsMut<[u32]>> DrawTarget { + /// `mask_rect` is in DrawTarget space. i.e size is the size of the mask and origin is the position. + /// you can not render a part of the mask + fn composite( + &mut self, + src: &Source, + mask: Option<&[u8]>, + mask_rect: IntRect, + mut rect: IntRect, + blend: BlendMode, + alpha: f32, + ) { + let ti = self.transform.inverse(); + let ti = if let Some(ti) = ti { + ti + } else { + // the transform is not invertible so we have nothing to draw + return; + }; + + let clip_bounds = self.clip_bounds(); + + let (dest, dest_bounds) = match self.layer_stack.last_mut() { + Some(layer) => (&mut layer.buf[..], layer.rect), + None => (self.buf.as_mut(), intrect(0, 0, self.width, self.height)), + }; + + rect = rect + .intersection_unchecked(&clip_bounds) + .intersection_unchecked(&dest_bounds) + .intersection_unchecked(&mask_rect); + if rect.is_empty() { + return; + } + + let mut shader_storage = ShaderStorage::None; + let shader = choose_shader(&ti, src, alpha, &mut shader_storage); + + let mut blitter_storage = ShaderBlitterStorage::None; + let blitter = DrawTarget::choose_blitter( + mask, + &self.clip_stack, + &mut blitter_storage, + shader, + blend, + dest, + dest_bounds, + self.width, + ); + + match mask { + Some(mask) => { + for y in rect.min.y..rect.max.y { + let mask_row = (y - mask_rect.min.y) * mask_rect.size().width; + let mask_start = (mask_row + rect.min.x - mask_rect.min.x) as usize; + let mask_end = (mask_row + rect.max.x - mask_rect.min.x) as usize; + blitter.blit_span(y, rect.min.x, rect.max.x, &mask[mask_start..mask_end]); + } + } + None => { + for y in rect.min.y..rect.max.y { + let empty_mask = []; + blitter.blit_span(y, rect.min.x, rect.max.x, &empty_mask[..]); + } + } + }; + } + + /// Draws `src_rect` of `src` at `dst`. The current transform and clip are ignored + pub fn composite_surface>( + &mut self, + src: &DrawTarget, + src_rect: IntRect, + dst: IntPoint, + f: F, + ) { + let dst_rect = intrect(0, 0, self.width, self.height); + + // intersect the src_rect with the source size so that we don't go out of bounds + let src_rect = src_rect.intersection_unchecked(&intrect(0, 0, src.width, src.height)); + + let src_rect = dst_rect + .intersection_unchecked(&src_rect.translate(dst.to_vector())) + .translate(-dst.to_vector()); + + // clamp requires Float so open code it + let dst = IntPoint::new( + dst.x.max(dst_rect.min.x).min(dst_rect.max.x), + dst.y.max(dst_rect.min.y).min(dst_rect.max.y), + ); + + if src_rect.is_empty() { + return; + } + + for y in src_rect.min.y..src_rect.max.y { + let dst_row_start = (dst.x + (dst.y + y - src_rect.min.y) * self.width) as usize; + let dst_row_end = dst_row_start + src_rect.size().width as usize; + let src_row_start = (src_rect.min.x + y * src.width) as usize; + let src_row_end = src_row_start + src_rect.size().width as usize; + f( + &src.buf.as_ref()[src_row_start..src_row_end], + &mut self.buf.as_mut()[dst_row_start..dst_row_end], + ); + } + } + + /// Draws `src_rect` of `src` at `dst`. The current transform and clip are ignored. + /// `src_rect` is clamped to (0, 0, src.width, src.height). + pub fn copy_surface>( + &mut self, + src: &DrawTarget, + src_rect: IntRect, + dst: IntPoint, + ) { + self.composite_surface(src, src_rect, dst, |src, dst| dst.copy_from_slice(src)) + } + + /// Blends `src_rect` of `src` at `dst`using `blend` mode. + /// The current transform and clip are ignored. + /// `src_rect` is clamped to (0, 0, `src.width`, `src.height`). + pub fn blend_surface>( + &mut self, + src: &DrawTarget, + src_rect: IntRect, + dst: IntPoint, + blend: BlendMode, + ) { + let blend_fn = build_blend_proc::(blend); + self.composite_surface(src, src_rect, dst, |src, dst| { + blend_fn(src, dst); + }); + } + + /// Blends `src_rect` of `src` at `dst` using `alpha`. The current transform and clip are ignored. + /// `src_rect` is clamped to (0, 0, `src.width`, `src.height`). + pub fn blend_surface_with_alpha>( + &mut self, + src: &DrawTarget, + src_rect: IntRect, + dst: IntPoint, + alpha: f32, + ) { + let alpha = (alpha * 255. + 0.5) as u8; + + self.composite_surface(src, src_rect, dst, |src, dst| { + over_in_row(src, dst, alpha as u32); + }); + } + + /// Returns a reference to the underlying pixel data + pub fn get_data(&self) -> &[u32] { + self.buf.as_ref() + } + + /// Returns a mut reference to the underlying pixel data as ARGB with a representation + /// like: (A << 24) | (R << 16) | (G << 8) | B + pub fn get_data_mut(&mut self) -> &mut [u32] { + self.buf.as_mut() + } + + /// Returns a reference to the underlying pixel data as individual bytes with the order BGRA + /// on little endian. + pub fn get_data_u8(&self) -> &[u8] { + let buf = self.buf.as_ref(); + let p = buf.as_ptr(); + let len = buf.len(); + // we want to return an [u8] slice instead of a [u32] slice. This is a safe thing to + // do because requirements of a [u32] slice are stricter. + unsafe { std::slice::from_raw_parts(p as *const u8, len * std::mem::size_of::()) } + } + + /// Returns a mut reference to the underlying pixel data as individual bytes with the order BGRA + /// on little endian. + pub fn get_data_u8_mut(&mut self) -> &mut [u8] { + let buf = self.buf.as_mut(); + let p = buf.as_mut_ptr(); + let len = buf.len(); + // we want to return an [u8] slice instead of a [u32] slice. This is a safe thing to + // do because requirements of a [u32] slice are stricter. + unsafe { std::slice::from_raw_parts_mut(p as *mut u8, len * std::mem::size_of::()) } + } + + /// Take ownership of the buffer backing the DrawTarget + pub fn into_inner(self) -> Backing { + self.buf + } + + /// Saves the current pixel to a png file at `path` + #[cfg(feature = "png")] + pub fn write_png>(&self, path: P) -> Result<(), png::EncodingError> { + let file = File::create(path)?; + + let w = &mut BufWriter::new(file); + + let mut encoder = png::Encoder::new(w, self.width as u32, self.height as u32); + encoder.set_color(png::ColorType::Rgba); + encoder.set_depth(png::BitDepth::Eight); + let mut writer = encoder.write_header()?; + let buf = self.buf.as_ref(); + let mut output = Vec::with_capacity(buf.len() * 4); + + for pixel in buf { + let a = (pixel >> 24) & 0xffu32; + let mut r = (pixel >> 16) & 0xffu32; + let mut g = (pixel >> 8) & 0xffu32; + let mut b = (pixel >> 0) & 0xffu32; + + if a > 0u32 { + r = r * 255u32 / a; + g = g * 255u32 / a; + b = b * 255u32 / a; + } + + output.push(r as u8); + output.push(g as u8); + output.push(b as u8); + output.push(a as u8); + } + + writer.write_image_data(&output) + } +} diff --git a/crates/raqote/src/geom.rs b/crates/raqote/src/geom.rs new file mode 100644 index 000000000..0aeb72527 --- /dev/null +++ b/crates/raqote/src/geom.rs @@ -0,0 +1,90 @@ +/* + * Copyright 2006 The Android Open Source Project + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE.skia file. + */ +use crate::Point; + +pub fn intrect(x1: T, y1: T, x2: T, y2: T) -> euclid::default::Box2D { + euclid::default::Box2D::new(euclid::point2(x1, y1), euclid::point2(x2, y2)) +} + +// we can do this +pub fn valid_unit_divide(mut numer: f32, mut denom: f32, ratio: &mut f32) -> bool { + if numer < 0. { + numer = -numer; + denom = -denom; + } + + if denom == 0. || numer == 0. || numer >= denom { + return false; + } + + let r = numer / denom; + if r.is_nan() { + return false; + } + debug_assert!(r >= 0. && r < 1.); + if r == 0. { + // catch underflow if numer <<<< denom + return false; + } + *ratio = r; + + true +} + +pub fn is_not_monotonic(a: f32, b: f32, c: f32) -> bool { + let ab = a - b; + let mut bc = b - c; + if ab < 0. { + bc = -bc; + } + + ab == 0. || bc < 0. +} + +fn interp(a: f32, b: f32, t: f32) -> f32 { + debug_assert!(t >= 0. && t <= 1.); + a + (b - a) * t +} + +// Skia does a weird thing where it treats arrays of points as castable to array of floats. +// For now we just duplicate quad_x and quad_y +fn interp_quad_x_coords(src: &[Point; 3], dst: &mut [Point; 5], t: f32) { + let ab = interp(src[0].x, src[1].x, t); + let bc = interp(src[1].x, src[2].x, t); + + dst[0].x = src[0].x; + dst[1].x = ab; + dst[2].x = interp(ab, bc, t); + dst[3].x = bc; + dst[4].x = src[2].x; +} + +fn interp_quad_y_coords(src: &[Point; 3], dst: &mut [Point; 5], t: f32) { + let ab = interp(src[0].y, src[1].y, t); + let bc = interp(src[1].y, src[2].y, t); + + dst[0].y = src[0].y; + dst[1].y = ab; + dst[2].y = interp(ab, bc, t); + dst[3].y = bc; + dst[4].y = src[2].y; +} + +pub fn chop_quad_at(src: &[Point; 3], dst: &mut [Point; 5], t: f32) { + debug_assert!(t > 0. && t < 1.); + + interp_quad_x_coords(src, dst, t); + interp_quad_y_coords(src, dst, t); +} + +// ensures that the y values are contiguous +// dst[1].fY = dst[3].fY = dst[2].fY +// I'm not sure why we need this +pub fn flatten_double_quad_extrema(dst: &mut [Point; 5]) { + dst[1].y = dst[2].y; + dst[3].y = dst[2].y; +} diff --git a/crates/raqote/src/lib.rs b/crates/raqote/src/lib.rs new file mode 100644 index 000000000..e1f77e723 --- /dev/null +++ b/crates/raqote/src/lib.rs @@ -0,0 +1,124 @@ +/*! + +A pure Rust 2D Graphics Library. + +Raqote is a small, simple, fast software 2D graphics library. + +Current functionality + - path filling + - stroking + - dashing + - image, solid, and gradient fills + - rectangular and path clipping + - blend modes + - layers + - repeat modes for images + - global alpha + +### Notable users +- [resvg](https://github.com/RazrFalcon/resvg) supports using raqote as a backend. +- [Servo](https://github.com/servo/servo) uses raqote as its canvas backend. +- [orbtk](https://gitlab.redox-os.org/redox-os/orbtk/tree/master/crates/render) uses raqote. + +Example: + +[A simple example drawing to a window](https://github.com/jrmuizel/raqote-examples/blob/master/examples/minifb.rs) + +Another example drawing to a png follows: + +```rust +use raqote::*; + +let mut dt = DrawTarget::new(400, 400); + +let mut pb = PathBuilder::new(); +pb.move_to(100., 10.); +pb.cubic_to(150., 40., 175., 0., 200., 10.); +pb.quad_to(120., 100., 80., 200.); +pb.quad_to(150., 180., 300., 300.); +pb.close(); +let path = pb.finish(); + +let gradient = Source::new_radial_gradient( + Gradient { + stops: vec![ + GradientStop { + position: 0.2, + color: Color::new(0xff, 0, 0xff, 0), + }, + GradientStop { + position: 0.8, + color: Color::new(0xff, 0xff, 0xff, 0xff), + }, + GradientStop { + position: 1., + color: Color::new(0xff, 0xff, 0, 0xff), + }, + ], + }, + Point::new(150., 150.), + 128., + Spread::Pad, +); +dt.fill(&path, &gradient, &DrawOptions::new()); + +let mut pb = PathBuilder::new(); +pb.move_to(100., 100.); +pb.line_to(300., 300.); +pb.line_to(200., 300.); +let path = pb.finish(); + +dt.stroke( + &path, + &Source::Solid(SolidSource { + r: 0x0, + g: 0x0, + b: 0x80, + a: 0x80, + }), + &StrokeStyle { + cap: LineCap::Round, + join: LineJoin::Round, + width: 10., + miter_limit: 2., + dash_array: vec![10., 18.], + dash_offset: 16., + }, + &DrawOptions::new() +); + +dt.write_png("example.png"); +``` + +Produces: + +![example.png](https://github.com/jrmuizel/raqote/raw/master/example.png) + +*/ + +#![warn(missing_copy_implementations)] + +mod blitter; +mod dash; +mod draw_target; +mod geom; +mod rasterizer; +mod stroke; +mod tests; + +mod path_builder; +pub use path_builder::*; + +pub use crate::draw_target::{AntialiasMode, FilterMode}; +pub use crate::draw_target::{ + BlendMode, DrawOptions, DrawTarget, ExtendMode, Mask, SolidSource, Source, Winding, +}; +pub use crate::stroke::*; + +pub use sw_composite::{Color, Gradient, GradientStop, Image, Spread}; + +pub type IntRect = euclid::default::Box2D; +pub type IntPoint = euclid::default::Point2D; +pub type Point = euclid::default::Point2D; +pub type Transform = euclid::default::Transform2D; +pub type Vector = euclid::default::Vector2D; diff --git a/crates/raqote/src/path_builder.rs b/crates/raqote/src/path_builder.rs new file mode 100644 index 000000000..087658f97 --- /dev/null +++ b/crates/raqote/src/path_builder.rs @@ -0,0 +1,305 @@ +use lyon_geom::Angle; +use lyon_geom::Arc; +use lyon_geom::CubicBezierSegment; +use lyon_geom::QuadraticBezierSegment; + +use crate::{Point, Transform, Vector}; + +#[derive(Clone, Copy, PartialEq, Debug)] +pub enum Winding { + EvenOdd, + NonZero, +} + +#[derive(Clone, Copy, Debug)] +pub enum PathOp { + MoveTo(Point), + LineTo(Point), + QuadTo(Point, Point), + CubicTo(Point, Point, Point), + Close, +} + +impl PathOp { + fn transform(self, xform: &Transform) -> PathOp { + match self { + PathOp::MoveTo(p) => PathOp::MoveTo(xform.transform_point(p)), + PathOp::LineTo(p) => PathOp::LineTo(xform.transform_point(p)), + PathOp::QuadTo(p1, p2) => { + PathOp::QuadTo(xform.transform_point(p1), xform.transform_point(p2)) + } + PathOp::CubicTo(p1, p2, p3) => PathOp::CubicTo( + xform.transform_point(p1), + xform.transform_point(p2), + xform.transform_point(p3), + ), + PathOp::Close => PathOp::Close, + } + } +} + +/// Represents a complete path usable for filling or stroking. +#[derive(Clone, Debug)] +pub struct Path { + pub ops: Vec, + pub winding: Winding, +} + +impl Path { + /// Flattens `self` by replacing all QuadTo and CurveTo + /// commands with an appropriate number of LineTo commands + /// so that the error is not greater than `tolerance`. + pub fn flatten(&self, tolerance: f32) -> Path { + let mut cur_pt = None; + let mut flattened = Path { + ops: Vec::new(), + winding: Winding::NonZero, + }; + for op in &self.ops { + match *op { + PathOp::MoveTo(pt) | PathOp::LineTo(pt) => { + cur_pt = Some(pt); + flattened.ops.push(op.clone()) + } + PathOp::Close => { + cur_pt = None; + flattened.ops.push(op.clone()) + } + PathOp::QuadTo(cpt, pt) => { + let start = cur_pt.unwrap_or(cpt); + let c = QuadraticBezierSegment { + from: start, + ctrl: cpt, + to: pt, + }; + for l in c.flattened(tolerance) { + flattened.ops.push(PathOp::LineTo(l)); + } + cur_pt = Some(pt); + } + PathOp::CubicTo(cpt1, cpt2, pt) => { + let start = cur_pt.unwrap_or(cpt1); + let c = CubicBezierSegment { + from: start, + ctrl1: cpt1, + ctrl2: cpt2, + to: pt, + }; + for l in c.flattened(tolerance) { + flattened.ops.push(PathOp::LineTo(l)); + } + cur_pt = Some(pt); + } + } + } + flattened + } + + /// Returns true if the point `x`, `y` is within the filled + /// area of of `self`. The path will be flattened using `tolerance`. + /// The point is considered contained if it's on the path. + // this function likely has bugs + pub fn contains_point(&self, tolerance: f32, x: f32, y: f32) -> bool { + //XXX Instead of making a new path we should just use flattening callbacks + let flat_path = self.flatten(tolerance); + struct WindState { + first_point: Option, + current_point: Option, + count: i32, + on_edge: bool, + + x: f32, + y: f32, + } + + impl WindState { + fn close(&mut self) { + if let (Some(first_point), Some(current_point)) = + (self.first_point, self.current_point) + { + self.add_edge(current_point, first_point); + } + self.first_point = None; + } + + // to determine containment we just need to count crossing of ray from (x, y) going to infinity + fn add_edge(&mut self, p1: Point, p2: Point) { + let (x1, y1) = (p1.x, p1.y); + let (x2, y2) = (p2.x, p2.y); + + let dir = if y1 < y2 { -1 } else { 1 }; + + // entirely to the right + if x1 > self.x && x2 > self.x { + return; + } + + // entirely above + if y1 > self.y && y2 > self.y { + return; + } + + // entirely below + if y1 < self.y && y2 < self.y { + return; + } + + // entirely to the left + if x1 < self.x && x2 < self.x { + if y1 > self.y && y2 < self.y { + self.count += 1; + return; + } + if y2 > self.y && y1 < self.y { + self.count -= 1; + return; + } + } + + let dx = x2 - x1; + let dy = y2 - y1; + + // cross product/perp dot product lets us know which side of the line we're on + let cross = dx * (self.y - y1) - dy * (self.x - x1); + + if cross == 0. { + self.on_edge = true; + } else if (cross > 0. && dir > 0) || (cross < 0. && dir < 0) { + self.count += dir; + } + } + } + + let mut ws = WindState { + count: 0, + first_point: None, + current_point: None, + x, + y, + on_edge: false, + }; + + for op in &flat_path.ops { + match *op { + PathOp::MoveTo(pt) => { + ws.close(); + ws.current_point = Some(pt); + ws.first_point = Some(pt); + } + PathOp::LineTo(pt) => { + if let Some(current_point) = ws.current_point { + ws.add_edge(current_point, pt); + } else { + ws.first_point = Some(pt); + } + ws.current_point = Some(pt); + } + PathOp::QuadTo(..) | PathOp::CubicTo(..) => panic!(), + PathOp::Close => ws.close(), + } + } + // make sure the path is closed + ws.close(); + + let inside = match self.winding { + Winding::EvenOdd => ws.count & 1 != 0, + Winding::NonZero => ws.count != 0, + }; + inside || ws.on_edge + } + + pub fn transform(self, transform: &Transform) -> Path { + let Path { ops, winding } = self; + let ops = ops.into_iter().map(|op| op.transform(transform)).collect(); + Path { ops, winding } + } +} + +/// A helper struct used for constructing a `Path`. +pub struct PathBuilder { + path: Path, +} + +impl From for PathBuilder { + fn from(path: Path) -> Self { + PathBuilder { path } + } +} + +impl PathBuilder { + pub fn new() -> PathBuilder { + PathBuilder { + path: Path { + ops: Vec::new(), + winding: Winding::NonZero, + }, + } + } + + /// Moves the current point to `x`, `y` + pub fn move_to(&mut self, x: f32, y: f32) { + self.path.ops.push(PathOp::MoveTo(Point::new(x, y))) + } + + /// Adds a line segment from the current point to `x`, `y` + pub fn line_to(&mut self, x: f32, y: f32) { + self.path.ops.push(PathOp::LineTo(Point::new(x, y))) + } + + /// Adds a quadratic bezier from the current point to `x`, `y`, + /// using a control point of `cx`, `cy` + pub fn quad_to(&mut self, cx: f32, cy: f32, x: f32, y: f32) { + self.path + .ops + .push(PathOp::QuadTo(Point::new(cx, cy), Point::new(x, y))) + } + + /// Adds a rect to the path + pub fn rect(&mut self, x: f32, y: f32, width: f32, height: f32) { + self.move_to(x, y); + self.line_to(x + width, y); + self.line_to(x + width, y + height); + self.line_to(x, y + height); + self.close(); + } + + /// Adds a cubic bezier from the current point to `x`, `y`, + /// using control points `cx1`, `cy1` and `cx2`, `cy2` + pub fn cubic_to(&mut self, cx1: f32, cy1: f32, cx2: f32, cy2: f32, x: f32, y: f32) { + self.path.ops.push(PathOp::CubicTo( + Point::new(cx1, cy1), + Point::new(cx2, cy2), + Point::new(x, y), + )) + } + + /// Closes the current subpath + pub fn close(&mut self) { + self.path.ops.push(PathOp::Close) + } + + /// Adds an arc approximated by quadratic beziers with center `x`, `y` + /// and radius `r` starting at `start_angle` and sweeping by `sweep_angle`. + /// For a positive `sweep_angle` the sweep is done clockwise, for a negative + /// `sweep_angle` the sweep is done counterclockwise. + pub fn arc(&mut self, x: f32, y: f32, r: f32, start_angle: f32, sweep_angle: f32) { + //XXX: handle the current point being the wrong spot + let a: Arc = Arc { + center: Point::new(x, y), + radii: Vector::new(r, r), + start_angle: Angle::radians(start_angle), + sweep_angle: Angle::radians(sweep_angle), + x_rotation: Angle::zero(), + }; + let start = a.from(); + self.line_to(start.x, start.y); + a.for_each_quadratic_bezier(&mut |q| { + self.quad_to(q.ctrl.x, q.ctrl.y, q.to.x, q.to.y); + }); + } + + /// Completes the current path + pub fn finish(self) -> Path { + self.path + } +} diff --git a/crates/raqote/src/rasterizer.rs b/crates/raqote/src/rasterizer.rs new file mode 100644 index 000000000..755f7c584 --- /dev/null +++ b/crates/raqote/src/rasterizer.rs @@ -0,0 +1,668 @@ +/* Copyright 2013 Jeff Muizelaar + * + * Use of this source code is governed by a MIT-style license that can be + * found in the LICENSE file. + * + * Portions Copyright 2006 The Android Open Source Project + * + * Use of that source code is governed by a BSD-style license that can be + * found in the LICENSE.skia file. + */ + +use typed_arena::Arena; + +use crate::blitter::RasterBlitter; +use crate::geom::intrect; +use crate::path_builder::Winding; +use crate::{IntRect, Point}; + +use std::ptr::NonNull; + +// One reason to have separate Edge/ActiveEdge is reduce the +// memory usage of inactive edges. On the other hand +// managing the lifetime of ActiveEdges is a lot +// trickier than Edges. Edges can stay alive for the entire +// rasterization. ActiveEdges will come and go in a much +// less predictable order. On the other hand having the +// ActiveEdges close together in memory would help +// avoid cache misses. If we did switch to having separate +// active edges it might be wise to store the active edges +// in an array instead of as a linked list. This will work +// well for the bubble sorting, but will cause more problems +// for insertion. + +struct Edge { + //XXX: it is probably worth renaming this to top and bottom + x1: Dot2, + y1: Dot2, + x2: Dot2, + y2: Dot2, + control_x: Dot2, + control_y: Dot2, +} + +// Fixed point representation: +// We use 30.2 for the end points and 16.16 for the intermediate +// results. I believe this essentially limits us to a 16.16 space. +// +// Prior Work: +// - Cairo used to be 16.16 but switched to 24.8. Cairo converts paths +// early to this fixed representation +// - Fitz uses different precision depending on the AA settings +// and uses the following Bresenham style adjustment in its step function +// to avoid having to worry about intermediate precision +// edge->x += edge->xmove; +// edge->e += edge->adj_up; +// if (edge->e > 0) { +// edge->x += edge->xdir; +// edge->e -= edge->adj_down; +// } + +/// 16.16 fixed point representation. +type Dot16 = i32; +/// 30.2 fixed point representation. +type Dot2 = i32; +/// 26.6 fixed point representation. +type Dot6 = i32; +/// A "sliding fixed point" representation 16.16 >> shift. +type ShiftedDot16 = i32; + +fn div_fixed16_fixed16(a: Dot16, b: Dot16) -> Dot16 { + (((a as i64) << 16) / (b as i64)) as i32 +} + +#[inline] +fn dot2_to_dot16(val: Dot2) -> Dot16 { + val << (16 - SAMPLE_SHIFT) +} + +#[inline] +fn dot16_to_dot2(val: Dot2) -> Dot16 { + val >> (16 - SAMPLE_SHIFT) +} + +#[inline] +fn dot2_to_int(val: Dot2) -> i32 { + val >> SAMPLE_SHIFT +} + +#[inline] +fn int_to_dot2(val: i32) -> Dot2 { + val << SAMPLE_SHIFT +} + +#[inline] +fn f32_to_dot2(val: f32) -> Dot2 { + (val * SAMPLE_SIZE) as i32 +} + +#[inline] +fn dot2_to_dot6(val: Dot2) -> Dot6 { + val << 4 +} + +// it is possible to fit this into 64 bytes on x86-64 +// with the following layout: +// +// 4 x2,y2 +// 8 next +// 6*4 slope_x,fullx,next_x,next_y, old_x,old_y +// 4*4 dx,ddx,dy,ddy +// 2 cury +// 1 count +// 1 shift +// +// some example counts 5704 curves, 1720 lines 7422 edges +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] +pub struct ActiveEdge { + x2: Dot2, + y2: Dot2, + next: Option>, + slope_x: Dot16, + fullx: Dot16, + next_x: Dot16, + next_y: Dot16, + + dx: Dot16, + ddx: ShiftedDot16, + dy: Dot16, + ddy: ShiftedDot16, + + old_x: Dot16, + old_y: Dot16, + + // Shift is used to "scale" how fast we move along the quadratic curve. + // The key is that we scale dx and dy by the same amount so it doesn't need to have a physical unit + // as long as it doesn't overshoot. + // shift isdiv_fixed16_fixed16 probably also needed to balance number of bits that we need and make sure we don't + // overflow the 32 bits we have. + // It looks like some of quantities are stored in a "sliding fixed point" representation where the + // point depends on the shift. + shift: i32, + // we need to use count so that we make sure that we always line the last point up + // exactly. i.e. we don't have a great way to know when we're at the end implicitly. + count: i32, + winding: i8, // the direction of the edge +} + +impl ActiveEdge { + fn new() -> ActiveEdge { + ActiveEdge { + x2: 0, + y2: 0, + next: None, + slope_x: 0, + fullx: 0, + next_x: 0, + next_y: 0, + dx: 0, + ddx: 0, + dy: 0, + ddy: 0, + old_x: 0, + old_y: 0, + shift: 0, + count: 0, + winding: 0, + } + } + + // we want this to inline into step_edges() to + // avoid the call overhead + fn step(&mut self, cury: Dot2) { + // if we have a shift that means we have a curve + if self.shift != 0 { + if cury >= dot16_to_dot2(self.next_y) { + self.old_y = self.next_y; + self.old_x = self.next_x; + self.fullx = self.next_x; + // increment until we have a next_y that's greater + while self.count > 0 && cury >= dot16_to_dot2(self.next_y) { + self.next_x += self.dx >> self.shift; + self.dx += self.ddx; + self.next_y += self.dy >> self.shift; + self.dy += self.ddy; + self.count -= 1; + } + if self.count == 0 { + // for the last line sgement we can + // just set next_y,x to the end point + self.next_y = dot2_to_dot16(self.y2); + self.next_x = dot2_to_dot16(self.x2); + } + // update slope if we're going to be using it + // we want to avoid dividing by 0 which can happen if we exited the loop above early + if (cury + 1) < self.y2 { + self.slope_x = + div_fixed16_fixed16(self.next_x - self.old_x, self.next_y - self.old_y) + >> 2; + } + } + self.fullx += self.slope_x; + } else { + // XXX: look into bresenham to control error here + self.fullx += self.slope_x; + } + } +} + +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] +pub struct Rasterizer { + edge_starts: Vec>>, + width: i32, + height: i32, + cur_y: Dot2, + + // we use this rect to track the bounds of the added edges + bounds_top: i32, + bounds_bottom: i32, + bounds_left: i32, + bounds_right: i32, + + active_edges: Option>, + + edge_arena: Arena, +} + +impl Rasterizer { + pub fn new(width: i32, height: i32) -> Rasterizer { + let mut edge_starts = Vec::new(); + for _ in 0..int_to_dot2(height) { + edge_starts.push(None); + } + Rasterizer { + width: int_to_dot2(width), + height: int_to_dot2(height), + bounds_right: 0, + bounds_left: width, + bounds_top: height, + bounds_bottom: 0, + cur_y: 0, + edge_starts, + edge_arena: Arena::new(), + active_edges: None, + } + } +} + +// A cheap version of the "Alpha max plus beta min" algorithm (⍺=1, β=0.5) +fn cheap_distance(mut dx: Dot6, mut dy: Dot6) -> Dot6 { + dx = dx.abs(); + dy = dy.abs(); + // return max + min/2 + if dx > dy { + dx + (dy >> 1) + } else { + dy + (dx >> 1) + } +} + +fn diff_to_shift(dx: Dot6, dy: Dot6) -> i32 { + // cheap calc of distance from center of p0-p2 to the center of the curve + let mut dist = cheap_distance(dx, dy); + + // shift down dist (it is currently in dot6) + // down by 5 should give us 1/2 pixel accuracy (assuming our dist is accurate...) + // this is chosen by heuristic: make it as big as possible (to minimize segments) + // ... but small enough so that our curves still look smooth + dist = (dist + (1 << 4)) >> 5; + + // each subdivision (shift value) cuts this dist (error) by 1/4 + (32 - ((dist as u32).leading_zeros()) as i32) >> 1 +} + +// this metric is taken from skia +fn compute_curve_steps(e: &Edge) -> i32 { + let dx = e.control_x * 2 - e.x1 - e.x2; + let dy = e.control_y * 2 - e.y1 - e.y2; + let shift = diff_to_shift(dot2_to_dot6(dx), dot2_to_dot6(dy)); + assert!(shift >= 0); + + shift +} + +const SAMPLE_SIZE: f32 = (1 << SAMPLE_SHIFT) as f32; +pub const SAMPLE_SHIFT: i32 = 2; + +/* We store 1<= self.height { + return; + } + + // drop horizontal edges + if cury >= e.y2 { + return; + } + + self.bounds_top = self.bounds_top.min(dot2_to_int(edge.y1)); + self.bounds_bottom = self.bounds_bottom.max(dot2_to_int(edge.y2 + 3)); + + self.bounds_left = self.bounds_left.min(dot2_to_int(edge.x1)); + self.bounds_left = self.bounds_left.min(dot2_to_int(edge.x2)); + + self.bounds_right = self.bounds_right.max(dot2_to_int(edge.x1 + 3)); + self.bounds_right = self.bounds_right.max(dot2_to_int(edge.x2 + 3)); + + if curve { + self.bounds_left = self.bounds_left.min(dot2_to_int(edge.control_x)); + self.bounds_right = self.bounds_right.max(dot2_to_int(edge.control_x + 3)); + + // Based on Skia + // we'll iterate t from 0..1 (0-256) + // range of A is 4 times coordinate-range + // we can get more accuracy here by using the input points instead of the rounded versions + // A is derived from `dot2_to_dot16(2 * (from - 2 * ctrl + to))`, it is the second derivative of the + // quadratic bézier. + let mut A = + (edge.x1 - edge.control_x - edge.control_x + edge.x2) << (15 - SAMPLE_SHIFT); + let mut B = edge.control_x - edge.x1; // The derivative at the start of the curve is 2 * (ctrl - from). + //let mut C = edge.x1; + let mut shift = compute_curve_steps(&edge); + + if shift == 0 { + shift = 1; + } else if shift > MAX_COEFF_SHIFT { + shift = MAX_COEFF_SHIFT; + } + e.shift = shift; + e.count = 1 << shift; + e.dx = 2 * (A >> shift) + 2 * B * (1 << (16 - SAMPLE_SHIFT)); + e.ddx = 2 * (A >> (shift - 1)); + + A = (edge.y1 - edge.control_y - edge.control_y + edge.y2) << (15 - SAMPLE_SHIFT); + B = edge.control_y - edge.y1; + //C = edge.y1; + e.dy = 2 * (A >> shift) + 2 * B * (1 << (16 - SAMPLE_SHIFT)); + e.ddy = 2 * (A >> (shift - 1)); + + // compute the first next_x,y + e.count -= 1; + e.next_x = (e.fullx) + (e.dx >> e.shift); + e.next_y = (cury * (1 << (16 - SAMPLE_SHIFT))) + (e.dy >> e.shift); + e.dx += e.ddx; + e.dy += e.ddy; + + // skia does this part in UpdateQuad. unfortunately we duplicate it + while e.count > 0 && cury >= dot16_to_dot2(e.next_y) { + e.next_x += e.dx >> shift; + e.dx += e.ddx; + e.next_y += e.dy >> shift; + e.dy += e.ddy; + e.count -= 1; + } + if e.count == 0 { + e.next_y = dot2_to_dot16(edge.y2); + e.next_x = dot2_to_dot16(edge.x2); + } + e.slope_x = (e.next_x - (e.fullx)) / dot16_to_dot2(e.next_y - dot2_to_dot16(cury)); + } else { + e.shift = 0; + e.slope_x = (edge.x2 - edge.x1) * (1 << (16 - SAMPLE_SHIFT)) / (edge.y2 - edge.y1); + } + + if cury < 0 { + // XXX: we could compute an intersection with the top and bottom so we don't need to step them into view + // for curves we can just step them into place. + while cury < 0 { + e.step(cury); + cury += 1; + } + + // cury was adjusted so check again for horizontal edges + if cury >= e.y2 { + return; + } + } + + // add to the beginning of the edge start list + // if edges are added from left to right + // they'll be in this list from right to left + // this works out later during insertion + e.next = self.edge_starts[cury as usize]; + self.edge_starts[cury as usize] = Some(NonNull::from(e)); + } + + fn step_edges(&mut self) { + let mut prev_ptr = &mut self.active_edges as *mut _; + let mut edge = self.active_edges; + let cury = self.cur_y; // avoid any aliasing problems + while let Some(mut e_ptr) = edge { + let e = unsafe { e_ptr.as_mut() }; + e.step(cury); + // avoid aliasing between edge->next and prev_ptr so that we can reuse next + let next = e.next; + // remove any finished edges + if (cury + 1) >= e.y2 { + // remove from active list + unsafe { *prev_ptr = next }; + } else { + prev_ptr = &mut e.next; + } + edge = next; + } + } + /* + int comparisons; + static inline void dump_edges(ActiveEdge *e) + { + while (e) { + printf("%d ", e.fullx); + e = e.next; + } + printf("\n"); + } + */ + // Insertion sort the new edges into the active list + // The new edges could be showing up at any x coordinate + // but existing active edges will be sorted. + // + // Merge in the new edges. Since both lists are sorted we can do + // this in a single pass. + // Note: we could do just O(1) append the list of new active edges + // to the existing active edge list, but then we'd have to sort + // the entire resulting list + fn insert_starting_edges(&mut self) { + let mut new_edges: Option> = None; + let mut edge = self.edge_starts[self.cur_y as usize]; + // insertion sort all of the new edges + while let Some(mut e_ptr) = edge { + let e = unsafe { e_ptr.as_mut() }; + let mut prev_ptr = &mut new_edges as *mut _; + let mut new = new_edges; + while let Some(mut new_ptr) = new { + let a = unsafe { new_ptr.as_mut() }; + if e.fullx <= a.fullx { + break; + } + // comparisons++; + prev_ptr = &mut a.next; + new = a.next; + } + edge = e.next; + e.next = new; + unsafe { *prev_ptr = Some(e_ptr) }; + } + + // merge the sorted new_edges into active_edges + let mut prev_ptr = &mut self.active_edges as *mut _; + let mut active = self.active_edges; + let mut edge = new_edges; + while let Some(mut e_ptr) = edge { + let e = unsafe { e_ptr.as_mut() }; + while let Some(mut a_ptr) = active { + let a = unsafe { a_ptr.as_mut() }; + if e.fullx <= a.fullx { + break; + } + + // comparisons++; + prev_ptr = &mut a.next; + active = a.next; + } + edge = e.next; + e.next = active; + let next_prev_ptr = &mut e.next as *mut _; + unsafe { *prev_ptr = Some(e_ptr) }; + prev_ptr = next_prev_ptr; + } + } + + // Skia does stepping and scanning of edges in a single + // pass over the edge list. + fn scan_edges(&mut self, blitter: &mut dyn RasterBlitter, winding_mode: Winding) { + let mut edge = self.active_edges; + let mut winding = 0; + + // handle edges that begin to the left of the bitmap + while let Some(mut e_ptr) = edge { + let e = unsafe { e_ptr.as_mut() }; + if e.fullx >= 0 { + break; + } + winding += e.winding as i32; + edge = e.next; + } + + let mut prevx = 0; + while let Some(mut e_ptr) = edge { + let e = unsafe { e_ptr.as_mut() }; + + let inside = match winding_mode { + Winding::EvenOdd => winding & 1 != 0, + Winding::NonZero => winding != 0, + }; + + if inside { + blitter.blit_span( + self.cur_y, + dot16_to_dot2(prevx + (1 << (15 - SAMPLE_SHIFT))), + dot16_to_dot2(e.fullx + (1 << (15 - SAMPLE_SHIFT))), + ); + } + + if dot16_to_dot2(e.fullx) >= self.width { + break; + } + winding += e.winding as i32; + prevx = e.fullx; + edge = e.next; + } + + // we don't need to worry about any edges beyond width + } + + // You may have heard that one should never use a bubble sort. + // However in our situation a bubble sort is actually a good choice. + // The input list will be mostly sorted except for a couple of lines + // that have need to be swapped. Further it is common that our edges are + // already sorted and bubble sort lets us avoid doing any memory writes. + + // Some statistics from using a bubble sort on an + // example scene. You can see that bubble sort does + // noticeably better than O (n lg n). + // summary(edges*bubble_sort_iterations) + // Min. 1st Qu. Median Mean 3rd Qu. Max. + // 0.0 9.0 69.0 131.5 206.0 1278.0 + // summary(edges*log2(edges)) + // Min. 1st Qu. Median Mean 3rd Qu. Max. NA's + // 0.00 28.53 347.10 427.60 787.20 1286.00 2.00 + fn sort_edges(&mut self) { + if self.active_edges.is_none() { + return; + } + + let mut swapped; + loop { + swapped = false; + let mut edge = self.active_edges.unwrap(); + let mut next_edge = unsafe { edge.as_mut() }.next; + let mut prev = &mut self.active_edges as *mut _; + while let Some(mut next_ptr) = next_edge { + let next = unsafe { next_ptr.as_mut() }; + if unsafe { edge.as_mut() }.fullx > next.fullx { + // swap edge and next + unsafe { edge.as_mut() }.next = next.next; + next.next = Some(edge); + unsafe { (*prev) = Some(next_ptr) }; + swapped = true; + } + prev = (&mut unsafe { edge.as_mut() }.next) as *mut _; + edge = next_ptr; + next_edge = unsafe { edge.as_mut() }.next; + } + if !swapped { + break; + } + } + } + + pub fn rasterize(&mut self, blitter: &mut dyn RasterBlitter, winding_mode: Winding) { + let start = int_to_dot2(self.bounds_top).max(0); + let end = int_to_dot2(self.bounds_bottom).min(self.height); + + self.cur_y = start; + while self.cur_y < end { + // we do 4x4 super-sampling so we need + // to scan 4 times before painting a line of pixels + for _ in 0..4 { + // insert the new edges into the sorted list + self.insert_starting_edges(); + // scan over the edge list producing a list of spans + self.scan_edges(blitter, winding_mode); + // step all of the edges to the next scanline + // dropping the ones that end + self.step_edges(); + // sort the remaining edges + self.sort_edges(); + self.cur_y += 1; + } + } + } + + pub fn get_bounds(&self) -> IntRect { + intrect( + self.bounds_left.max(0), + self.bounds_top.max(0), + self.bounds_right.min(dot2_to_int(self.width)), + self.bounds_bottom.min(dot2_to_int(self.height)), + ) + } + + pub fn reset(&mut self) { + if self.bounds_bottom < self.bounds_top { + debug_assert_eq!(self.active_edges, None); + for e in &mut self.edge_starts { + debug_assert_eq!(*e, None); + } + debug_assert_eq!(self.bounds_bottom, 0); + debug_assert_eq!(self.bounds_right, 0); + debug_assert_eq!(self.bounds_top, dot2_to_int(self.height)); + debug_assert_eq!(self.bounds_left, dot2_to_int(self.width)); + // Currently we allocate an edge in the arena even if we don't + // end up putting it in the edge_starts list. Avoiding that + // would let us avoiding having to reinitialize the arena + self.edge_arena = Arena::new(); + return; + } + let start = int_to_dot2(self.bounds_top).max(0) as usize; + let end = int_to_dot2(self.bounds_bottom).min(self.height) as usize; + self.active_edges = None; + for e in &mut self.edge_starts[start..end] { + *e = None; + } + self.edge_arena = Arena::new(); + self.bounds_bottom = 0; + self.bounds_right = 0; + self.bounds_top = dot2_to_int(self.height); + self.bounds_left = dot2_to_int(self.width); + } +} diff --git a/crates/raqote/src/stroke.rs b/crates/raqote/src/stroke.rs new file mode 100644 index 000000000..bab866a37 --- /dev/null +++ b/crates/raqote/src/stroke.rs @@ -0,0 +1,391 @@ +// This is a simple path stroker. It flattens the path and strokes each segment individually. +// For a recent survey of stroking approaches see "Converting stroked primitives to filled primitives" by Diego Nehab + +use crate::path_builder::{Path, PathBuilder, PathOp}; +use crate::{Point, Vector}; + +#[derive(Clone, PartialEq, Debug)] +pub struct StrokeStyle { + pub width: f32, + pub cap: LineCap, + pub join: LineJoin, + pub miter_limit: f32, + pub dash_array: Vec, + pub dash_offset: f32, +} + +impl Default for StrokeStyle { + fn default() -> Self { + StrokeStyle { + width: 1., + cap: LineCap::Butt, + join: LineJoin::Miter, + miter_limit: 10., + dash_array: Vec::new(), + dash_offset: 0., + } + } +} + +#[derive(Clone, Copy, PartialEq, Debug)] +pub enum LineCap { + Round, + Square, + Butt, +} + +#[derive(Clone, Copy, PartialEq, Debug)] +pub enum LineJoin { + Round, + Miter, + Bevel, +} + +fn compute_normal(p0: Point, p1: Point) -> Option { + let ux = p1.x - p0.x; + let uy = p1.y - p0.y; + + // this could overflow f32. Skia in SkPoint::Normalize used to + // checks for this and used a double in that situation, but was + // simplified to always use doubles. + let ulen = ux.hypot(uy); + if ulen == 0. { + return None; + } + // the normal is perpendicular to the *unit* vector + Some(Vector::new(-uy / ulen, ux / ulen)) +} + +fn flip(v: Vector) -> Vector { + Vector::new(-v.x, -v.y) +} + +/* Compute a spline approximation of the arc +centered at xc, yc from the angle a to the angle b + +The angle between a and b should not be more than a +quarter circle (pi/2) + +The approximation is similar to an approximation given in: +"Approximation of a cubic bezier curve by circular arcs and vice versa" +by Alekas Riškus. However that approximation becomes unstable when the +angle of the arc approaches 0. + +This approximation is inspired by a discussion with Boris Zbarsky +and essentially just computes: + + h = 4.0/3.0 * tan ((angle_B - angle_A) / 4.0); + +without converting to polar coordinates. + +A different way to do this is covered in "Approximation of a cubic bezier +curve by circular arcs and vice versa" by Alekas Riškus. However, the method +presented there doesn't handle arcs with angles close to 0 because it +divides by the perp dot product of the two angle vectors. +*/ +fn arc_segment(path: &mut PathBuilder, xc: f32, yc: f32, radius: f32, a: Vector, b: Vector) { + let r_sin_a = radius * a.y; + let r_cos_a = radius * a.x; + let r_sin_b = radius * b.y; + let r_cos_b = radius * b.x; + + /* bisect the angle between 'a' and 'b' with 'mid' */ + let mut mid = a + b; + mid /= mid.length(); + + /* bisect the angle between 'a' and 'mid' with 'mid2' this is parallel to a + * line with angle (B - A)/4 */ + let mid2 = a + mid; + + let h = (4. / 3.) * dot(perp(a), mid2) / dot(a, mid2); + + path.cubic_to( + xc + r_cos_a - h * r_sin_a, + yc + r_sin_a + h * r_cos_a, + xc + r_cos_b + h * r_sin_b, + yc + r_sin_b - h * r_cos_b, + xc + r_cos_b, + yc + r_sin_b, + ); +} + +/* The angle between the vectors must be <= pi */ +fn bisect(a: Vector, b: Vector) -> Vector { + let mut mid; + if dot(a, b) >= 0. { + /* if the angle between a and b is accute, then we can + * just add the vectors and normalize */ + mid = a + b; + } else { + /* otherwise, we can flip a, add it + * and then use the perpendicular of the result */ + mid = flip(a) + b; + mid = perp(mid); + } + + /* normalize */ + /* because we assume that 'a' and 'b' are normalized, we can use + * sqrt instead of hypot because the range of mid is limited */ + let mid_len = mid.x * mid.x + mid.y * mid.y; + let len = mid_len.sqrt(); + return mid / len; +} + +fn arc(path: &mut PathBuilder, xc: f32, yc: f32, radius: f32, a: Vector, b: Vector) { + /* find a vector that bisects the angle between a and b */ + let mid_v = bisect(a, b); + + /* construct the arc using two curve segments */ + arc_segment(path, xc, yc, radius, a, mid_v); + arc_segment(path, xc, yc, radius, mid_v, b); +} + +fn join_round(path: &mut PathBuilder, center: Point, a: Vector, b: Vector, radius: f32) { + /* + int ccw = dot (perp (b), a) >= 0; // XXX: is this always true? + yes, otherwise we have an interior angle. + assert (ccw); + */ + arc(path, center.x, center.y, radius, a, b); +} + +fn cap_line(dest: &mut PathBuilder, style: &StrokeStyle, pt: Point, normal: Vector) { + let offset = style.width / 2.; + match style.cap { + LineCap::Butt => { /* nothing to do */ } + LineCap::Round => { + dest.move_to(pt.x + normal.x * offset, pt.y + normal.y * offset); + arc(dest, pt.x, pt.y, offset, normal, flip(normal)); + dest.line_to(pt.x, pt.y); + dest.close(); + } + LineCap::Square => { + // parallel vector + let v = Vector::new(normal.y, -normal.x); + let end = pt + v * offset; + dest.move_to(pt.x + normal.x * offset, pt.y + normal.y * offset); + dest.line_to(end.x + normal.x * offset, end.y + normal.y * offset); + dest.line_to(end.x + -normal.x * offset, end.y + -normal.y * offset); + dest.line_to(pt.x - normal.x * offset, pt.y - normal.y * offset); + dest.line_to(pt.x, pt.y); + dest.close(); + } + } +} + +fn bevel( + dest: &mut PathBuilder, + style: &StrokeStyle, + pt: Point, + s1_normal: Vector, + s2_normal: Vector, +) { + let offset = style.width / 2.; + dest.move_to(pt.x + s1_normal.x * offset, pt.y + s1_normal.y * offset); + dest.line_to(pt.x + s2_normal.x * offset, pt.y + s2_normal.y * offset); + dest.line_to(pt.x, pt.y); + dest.close(); +} + +/* given a normal rotate the vector 90 degrees to the right clockwise + * This function has a period of 4. e.g. swap(swap(swap(swap(x) == x */ +fn swap(a: Vector) -> Vector { + /* one of these needs to be negative. We choose a.x so that we rotate to the right instead of negating */ + Vector::new(a.y, -a.x) +} + +fn unperp(a: Vector) -> Vector { + swap(a) +} + +/* rotate a vector 90 degrees to the left */ +fn perp(v: Vector) -> Vector { + Vector::new(-v.y, v.x) +} + +fn dot(a: Vector, b: Vector) -> f32 { + a.x * b.x + a.y * b.y +} + +/* Finds the intersection of two lines each defined by a point and a normal. +From "Example 2: Find the intersection of two lines" of +"The Pleasures of "Perp Dot" Products" +F. S. Hill, Jr. */ +fn line_intersection(a: Point, a_perp: Vector, b: Point, b_perp: Vector) -> Option { + let a_parallel = unperp(a_perp); + let c = b - a; + let denom = dot(b_perp, a_parallel); + if denom == 0.0 { + return None; + } + + let t = dot(b_perp, c) / denom; + + let intersection = Point::new(a.x + t * (a_parallel.x), a.y + t * (a_parallel.y)); + + Some(intersection) +} + +fn is_interior_angle(a: Vector, b: Vector) -> bool { + /* angles of 180 and 0 degrees will evaluate to 0, however + * we to treat 180 as an interior angle and 180 as an exterior angle */ + dot(perp(a), b) > 0. || a == b /* 0 degrees is interior */ +} + +fn join_line( + dest: &mut PathBuilder, + style: &StrokeStyle, + pt: Point, + mut s1_normal: Vector, + mut s2_normal: Vector, +) { + if is_interior_angle(s1_normal, s2_normal) { + s2_normal = flip(s2_normal); + s1_normal = flip(s1_normal); + std::mem::swap(&mut s1_normal, &mut s2_normal); + } + + // XXX: joining uses `pt` which can cause seams because it lies halfway on a line and the + // rasterizer may not find exactly the same spot + let offset = style.width / 2.; + match style.join { + LineJoin::Round => { + dest.move_to(pt.x + s1_normal.x * offset, pt.y + s1_normal.y * offset); + join_round(dest, pt, s1_normal, s2_normal, offset); + dest.line_to(pt.x, pt.y); + dest.close(); + } + LineJoin::Miter => { + let in_dot_out = -s1_normal.x * s2_normal.x + -s1_normal.y * s2_normal.y; + if 2. <= style.miter_limit * style.miter_limit * (1. - in_dot_out) { + let start = pt + s1_normal * offset; + let end = pt + s2_normal * offset; + if let Some(intersection) = line_intersection(start, s1_normal, end, s2_normal) { + // We won't have an intersection if the segments are parallel + dest.move_to(pt.x + s1_normal.x * offset, pt.y + s1_normal.y * offset); + dest.line_to(intersection.x, intersection.y); + dest.line_to(pt.x + s2_normal.x * offset, pt.y + s2_normal.y * offset); + dest.line_to(pt.x, pt.y); + dest.close(); + } + } else { + bevel(dest, style, pt, s1_normal, s2_normal); + } + } + LineJoin::Bevel => { + bevel(dest, style, pt, s1_normal, s2_normal); + } + } +} + +pub fn stroke_to_path(path: &Path, style: &StrokeStyle) -> Path { + let mut stroked_path = PathBuilder::new(); + + if style.width <= 0. { + return stroked_path.finish(); + } + + let mut cur_pt = None; + let mut last_normal = Vector::zero(); + let half_width = style.width / 2.; + let mut start_point = None; + for op in &path.ops { + match *op { + PathOp::MoveTo(pt) => { + if let (Some(cur_pt), Some((point, normal))) = (cur_pt, start_point) { + // cap end + cap_line(&mut stroked_path, style, cur_pt, last_normal); + // cap beginning + cap_line(&mut stroked_path, style, point, flip(normal)); + } + start_point = None; + cur_pt = Some(pt); + } + PathOp::LineTo(pt) => { + if cur_pt.is_none() { + start_point = None; + } else if let Some(cur_pt) = cur_pt { + if let Some(normal) = compute_normal(cur_pt, pt) { + if start_point.is_none() { + start_point = Some((cur_pt, normal)); + } else { + join_line(&mut stroked_path, style, cur_pt, last_normal, normal); + } + + stroked_path.move_to( + cur_pt.x + normal.x * half_width, + cur_pt.y + normal.y * half_width, + ); + stroked_path + .line_to(pt.x + normal.x * half_width, pt.y + normal.y * half_width); + // we add a point at the midpoint of the line so that our edge has matching + // end points with the edges used for joining. This avoids seams during + // rasterization caused by precision differences in the slope and endpoints + stroked_path.line_to(pt.x, pt.y); + stroked_path + .line_to(pt.x + -normal.x * half_width, pt.y + -normal.y * half_width); + stroked_path.line_to( + cur_pt.x - normal.x * half_width, + cur_pt.y - normal.y * half_width, + ); + stroked_path.line_to(cur_pt.x, cur_pt.y); + + stroked_path.close(); + + last_normal = normal; + } + } + cur_pt = Some(pt); + } + PathOp::Close => { + if let (Some(cur_pt), Some((end_point, start_normal))) = (cur_pt, start_point) { + if let Some(normal) = compute_normal(cur_pt, end_point) { + join_line(&mut stroked_path, style, cur_pt, last_normal, normal); + + // the closing line segment + stroked_path.move_to( + cur_pt.x + normal.x * half_width, + cur_pt.y + normal.y * half_width, + ); + stroked_path.line_to( + end_point.x + normal.x * half_width, + end_point.y + normal.y * half_width, + ); + stroked_path.line_to(end_point.x, end_point.y); + stroked_path.line_to( + end_point.x + -normal.x * half_width, + end_point.y + -normal.y * half_width, + ); + stroked_path.line_to( + cur_pt.x - normal.x * half_width, + cur_pt.y - normal.y * half_width, + ); + stroked_path.line_to(cur_pt.x, cur_pt.y); + stroked_path.close(); + + join_line(&mut stroked_path, style, end_point, normal, start_normal); + } else { + join_line( + &mut stroked_path, + style, + end_point, + last_normal, + start_normal, + ); + } + } + cur_pt = start_point.map(|x| x.0); + start_point = None; + } + PathOp::QuadTo(..) => panic!("Only flat paths handled"), + PathOp::CubicTo(..) => panic!("Only flat paths handled"), + } + } + if let (Some(cur_pt), Some((point, normal))) = (cur_pt, start_point) { + // cap end + cap_line(&mut stroked_path, style, cur_pt, last_normal); + // cap beginning + cap_line(&mut stroked_path, style, point, flip(normal)); + } + stroked_path.finish() +} diff --git a/crates/raqote/src/tests.rs b/crates/raqote/src/tests.rs new file mode 100644 index 000000000..8b43b84cc --- /dev/null +++ b/crates/raqote/src/tests.rs @@ -0,0 +1,899 @@ +#[cfg(test)] +mod tests { + + use crate::geom::intrect; + use crate::*; + const WHITE_SOURCE: Source = Source::Solid(SolidSource { + r: 0xff, + g: 0xff, + b: 0xff, + a: 0xff, + }); + + #[test] + fn basic_rasterizer() { + let mut dt = DrawTarget::new(2, 2); + let mut pb = PathBuilder::new(); + pb.rect(1., 1., 1., 1.); + dt.fill(&pb.finish(), &WHITE_SOURCE, &DrawOptions::new()); + let white = 0xffffffff; + assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..]) + } + + #[test] + fn implicit_close() { + let mut dt = DrawTarget::new(2, 2); + let mut pb = PathBuilder::new(); + pb.move_to(1., 1.); + pb.line_to(2., 1.); + pb.line_to(2., 2.); + pb.line_to(1., 2.); + dt.fill(&pb.finish(), &WHITE_SOURCE, &DrawOptions::new()); + let white = 0xffffffff; + assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..]) + } + + #[test] + fn offscreen_edges() { + let mut dt = DrawTarget::new(2, 2); + let mut pb = PathBuilder::new(); + pb.rect(1., 0., 8., 1.); + dt.fill(&pb.finish(), &WHITE_SOURCE, &DrawOptions::new()); + let white = 0xffffffff; + assert_eq!(dt.get_data(), &vec![0, white, 0, 0][..]) + } + + #[test] + fn clip_rect() { + let mut dt = DrawTarget::new(2, 2); + dt.push_clip_rect(intrect(1, 1, 2, 2)); + let mut pb = PathBuilder::new(); + pb.rect(0., 0., 2., 2.); + dt.fill(&pb.finish(), &WHITE_SOURCE, &DrawOptions::new()); + let white = 0xffffffff; + assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..]) + } + + #[test] + fn nested_clip_rect() { + let mut dt = DrawTarget::new(2, 2); + dt.push_clip_rect(intrect(0, 1, 2, 2)); + dt.push_clip_rect(intrect(1, 0, 2, 2)); + let mut pb = PathBuilder::new(); + pb.rect(0., 0., 2., 2.); + dt.fill(&pb.finish(), &WHITE_SOURCE, &DrawOptions::new()); + let white = 0xffffffff; + assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..]) + } + + #[test] + fn even_odd_rect() { + let mut dt = DrawTarget::new(2, 2); + let mut pb = PathBuilder::new(); + pb.rect(0., 0., 2., 2.); + pb.rect(0., 0., 2., 2.); + pb.rect(1., 1., 2., 2.); + let mut path = pb.finish(); + path.winding = Winding::EvenOdd; + dt.fill(&path, &WHITE_SOURCE, &DrawOptions::new()); + let white = 0xffffffff; + assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..]) + } + + #[test] + fn clear() { + let mut dt = DrawTarget::new(2, 2); + let mut pb = PathBuilder::new(); + pb.rect(0., 0., 2., 2.); + let path = pb.finish(); + dt.fill(&path, &WHITE_SOURCE, &DrawOptions::new()); + dt.clear(SolidSource { + r: 0, + g: 0, + b: 0, + a: 0, + }); + assert_eq!(dt.get_data(), &vec![0, 0, 0, 0][..]) + } + + #[test] + fn basic_push_layer() { + let mut dt = DrawTarget::new(2, 2); + let mut pb = PathBuilder::new(); + dt.push_clip_rect(intrect(1, 1, 2, 2)); + dt.push_layer(1.); + pb.rect(1., 1., 1., 1.); + dt.fill(&pb.finish(), &WHITE_SOURCE, &DrawOptions::new()); + let white = 0xffffffff; + dt.pop_layer(); + assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..]) + } + + #[test] + fn basic_draw_image() { + let mut dt = DrawTarget::new(2, 2); + let mut dt2 = DrawTarget::new(1, 1); + + let mut pb = PathBuilder::new(); + pb.rect(0., 0., 1., 1.); + dt2.fill(&pb.finish(), &WHITE_SOURCE, &DrawOptions::new()); + let image = Image { + width: 1, + height: 1, + data: dt2.get_data(), + }; + dt.draw_image_at(1., 1., &image, &DrawOptions::default()); + let white = 0xffffffff; + assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..]) + } + + #[test] + fn draw_image_subset() { + let mut dt = DrawTarget::new(2, 2); + let mut dt2 = DrawTarget::new(3, 3); + + let mut pb = PathBuilder::new(); + pb.rect(1., 1., 1., 1.); + dt2.fill(&pb.finish(), &WHITE_SOURCE, &DrawOptions::new()); + let image = Image { + width: 3, + height: 3, + data: dt2.get_data(), + }; + dt.draw_image_at(0., 0., &image, &DrawOptions::default()); + let white = 0xffffffff; + assert_eq!(dt.get_data(), &vec![0, 0, 0, white][..]) + } + + #[test] + fn repeating_draw_image() { + let mut dt = DrawTarget::new(4, 1); + let mut dt2 = DrawTarget::new(2, 1); + + let mut pb = PathBuilder::new(); + pb.rect(0., 0., 1., 1.); + dt2.fill(&pb.finish(), &WHITE_SOURCE, &DrawOptions::new()); + let image = Image { + width: 2, + height: 1, + data: dt2.get_data(), + }; + let mut pb = PathBuilder::new(); + pb.rect(0., 0., 4., 1.); + let source = Source::Image( + image, + ExtendMode::Repeat, + FilterMode::Bilinear, + Transform::translation(0., 0.), + ); + + dt.fill(&pb.finish(), &source, &DrawOptions::default()); + let white = 0xffffffff; + assert_eq!(dt.get_data(), &vec![white, 0, white, 0][..]) + } + + #[test] + fn stroke() { + let mut dt = DrawTarget::new(3, 3); + let mut pb = PathBuilder::new(); + pb.rect(0.5, 0.5, 2., 2.); + dt.stroke( + &pb.finish(), + &WHITE_SOURCE, + &StrokeStyle { + width: 1., + ..Default::default() + }, + &DrawOptions::new(), + ); + let white = 0xffffffff; + assert_eq!( + dt.get_data(), + &vec![white, white, white, white, 0, white, white, white, white][..] + ) + } + + #[test] + fn degenerate_stroke() { + let mut dt = DrawTarget::new(3, 3); + let mut pb = PathBuilder::new(); + pb.move_to(0.5, 0.5); + pb.line_to(2., 2.); + pb.line_to(2., 2.); + pb.line_to(4., 2.); + dt.stroke( + &pb.finish(), + &WHITE_SOURCE, + &StrokeStyle { + width: 1., + ..Default::default() + }, + &DrawOptions::new(), + ); + } + + #[test] + fn degenerate_stroke2() { + let mut dt = DrawTarget::new(3, 3); + let mut pb = PathBuilder::new(); + pb.move_to(2., 2.); + pb.line_to(2., 3.); + pb.line_to(2., 4.); + dt.stroke( + &pb.finish(), + &WHITE_SOURCE, + &StrokeStyle { + width: 1., + ..Default::default() + }, + &DrawOptions::new(), + ); + } + + #[test] + fn zero_width_stroke() { + let mut dt = DrawTarget::new(3, 3); + let mut pb = PathBuilder::new(); + pb.move_to(2., 2.); + pb.line_to(200., 300.); + dt.stroke( + &pb.finish(), + &WHITE_SOURCE, + &StrokeStyle { + width: 0., + ..Default::default() + }, + &DrawOptions::new(), + ); + } + + #[test] + fn negative_width_stroke() { + let mut dt = DrawTarget::new(3, 3); + let mut pb = PathBuilder::new(); + pb.move_to(2., 2.); + pb.line_to(200., 300.); + dt.stroke( + &pb.finish(), + &WHITE_SOURCE, + &StrokeStyle { + width: std::f32::MIN, + ..Default::default() + }, + &DrawOptions::new(), + ); + } + + #[test] + fn tiny_negative_width_stroke() { + let mut dt = DrawTarget::new(3, 3); + let mut pb = PathBuilder::new(); + pb.move_to(2., 2.); + pb.line_to(200., 300.); + dt.stroke( + &pb.finish(), + &WHITE_SOURCE, + &StrokeStyle { + width: -core::f32::MIN_POSITIVE, + ..Default::default() + }, + &DrawOptions::new(), + ); + } + + #[test] + fn dashing() { + let mut dt = DrawTarget::new(3, 3); + let mut pb = PathBuilder::new(); + pb.move_to(40., 40.); + pb.line_to(160., 40.); + pb.line_to(160., 160.); + pb.line_to(160., 160.); + pb.close(); + dt.stroke( + &pb.finish(), + &WHITE_SOURCE, + &StrokeStyle { + width: 1., + dash_array: vec![10.0, 6.0, 4.0, 10.0, 6.0, 4.0], + dash_offset: 15.0, + ..Default::default() + }, + &DrawOptions::new(), + ); + } + + #[test] + fn dash_rect() { + let mut dt = DrawTarget::new(3, 3); + let mut pb = PathBuilder::new(); + pb.rect(0.5, 0.5, 12., 12.); + dt.stroke( + &pb.finish(), + &WHITE_SOURCE, + &StrokeStyle { + width: 1., + dash_array: vec![1., 1.], + dash_offset: 0.5, + ..Default::default() + }, + &DrawOptions::new(), + ); + let white = 0xffffffff; + assert_eq!( + dt.get_data(), + &vec![white, 0, white, 0, 0, 0, white, 0, 0][..] + ) + } + + #[test] + fn dash_with_negative_length_1() { + let mut dt = DrawTarget::new(3, 3); + let mut pb = PathBuilder::new(); + pb.rect(0.5, 0.5, 12., 12.); + dt.stroke( + &pb.finish(), + &WHITE_SOURCE, + &StrokeStyle { + width: 1., + dash_array: vec![-1.], + dash_offset: 0.5, + ..Default::default() + }, + &DrawOptions::new(), + ); + // Must not loop. + } + + #[test] + fn dash_with_negative_length_2() { + let mut dt = DrawTarget::new(3, 3); + let mut pb = PathBuilder::new(); + pb.rect(0.5, 0.5, 12., 12.); + dt.stroke( + &pb.finish(), + &WHITE_SOURCE, + &StrokeStyle { + width: 1., + dash_array: vec![5., -10.], + dash_offset: 0.5, + ..Default::default() + }, + &DrawOptions::new(), + ); + // Must not loop. + } + + #[test] + fn draw_options_alpha() { + let mut dt = DrawTarget::new(2, 2); + let mut pb = PathBuilder::new(); + pb.rect(1., 1., 1., 1.); + dt.fill( + &pb.finish(), + &WHITE_SOURCE, + &DrawOptions { + alpha: 0., + ..Default::default() + }, + ); + assert_eq!(dt.get_data(), &vec![0, 0, 0, 0][..]) + } + + #[test] + fn blend_zero() { + let mut dt = DrawTarget::new(2, 2); + + dt.clear(SolidSource { + r: 0xff, + g: 0xff, + b: 0xff, + a: 0xff, + }); + + let source = Source::Solid(SolidSource { + r: 0x00, + g: 0x00, + b: 0x00, + a: 0xff, + }); + + let mut pb = PathBuilder::new(); + pb.rect(0., 0., 1., 1.); + let path = pb.finish(); + dt.fill(&path, &source, &DrawOptions::default()); + let white = 0xffffffff; + let black = 0xff000000; + + assert_eq!(dt.get_data(), &vec![black, white, white, white][..]) + } + + #[test] + fn two_circle_radial_gradient() { + let mut dt = DrawTarget::new(2, 2); + + let gradient = Source::new_two_circle_radial_gradient( + Gradient { + stops: vec![ + GradientStop { + position: 0.0, + color: Color::new(0xff, 00, 00, 00), + }, + GradientStop { + position: 1.0, + color: Color::new(0xff, 0xff, 0xff, 0xff), + }, + ], + }, + Point::new(-8., -8.), + 0.0, + Point::new(-8., -8.), + 0.5, + Spread::Pad, + ); + + let mut pb = PathBuilder::new(); + pb.rect(0., 0., 2., 2.); + let path = pb.finish(); + dt.fill(&path, &gradient, &DrawOptions::default()); + let white = 0xffffffff; + + assert_eq!(dt.get_data(), &vec![white, white, white, white][..]) + } + + #[test] + fn two_circle_radial_gradient_boundary() { + // make sure the gradient doesn't draw anything for r < 0 circles + let mut dt = DrawTarget::new(2, 2); + let gradient = Gradient { + stops: vec![ + GradientStop { + position: 0.0, + color: Color::new(0xff, 0xff, 0, 0xff), + }, + GradientStop { + position: 1.0, + color: Color::new(0xff, 0x0, 0, 0xff), + }, + ], + }; + + let src = Source::new_two_circle_radial_gradient( + gradient.clone(), + Point::new(150., 25.), + 50., + Point::new(200., 25.), + 100., + Spread::Pad, + ); + + dt.fill_rect(0., 0., 2., 2., &src, &DrawOptions::default()); + assert_eq!(dt.get_data(), &vec![0, 0, 0, 0][..]); + + let src = Source::new_two_circle_radial_gradient( + gradient, + Point::new(100., 25.), + 50., + Point::new(200., 25.), + 100., + Spread::Pad, + ); + + dt.fill_rect(0., 0., 2., 2., &src, &DrawOptions::default()); + assert_eq!(dt.get_data(), &vec![0, 0, 0, 0][..]) + } + + #[test] + fn get_mut_data() { + let mut dt = DrawTarget::new(1, 1); + + let data = dt.get_data_u8_mut(); + data[0] = 0xff; + data[1] = 0xff; + data[2] = 0xff; + data[3] = 0xff; + + let white = 0xffffffff; + + assert_eq!(dt.get_data(), &vec![white][..]) + } + + #[test] + fn draw_options_aliased() { + let mut dt = DrawTarget::new(2, 2); + let mut pb = PathBuilder::new(); + pb.rect(0.5, 0.5, 1., 1.); + dt.fill( + &pb.finish(), + &WHITE_SOURCE, + &DrawOptions { + antialias: AntialiasMode::None, + ..Default::default() + }, + ); + let white = 0xffffffff; + assert_eq!(dt.get_data(), &vec![0, 0, white, 0][..]) + } + + #[test] + fn draw_options_aliased_bounds() { + let mut dt = DrawTarget::new(2, 4); + let mut pb = PathBuilder::new(); + pb.rect(1., 3., 1., 1.); + dt.fill( + &pb.finish(), + &WHITE_SOURCE, + &DrawOptions { + antialias: AntialiasMode::None, + ..Default::default() + }, + ); + } + + #[test] + fn copy_surface() { + let mut dest = DrawTarget::new(2, 2); + let mut src = DrawTarget::new(2, 2); + + let white = 0xffffffff; + let red = 0xffff0000; + let green = 0xff00ff00; + let blue = 0xff0000ff; + + let data = src.get_data_mut(); + data[0] = white; + data[1] = red; + data[2] = green; + data[3] = blue; + + dest.copy_surface(&src, intrect(0, 0, 2, 2), IntPoint::new(-1, -1)); + assert_eq!(dest.get_data(), &vec![blue, 0, 0, 0][..]); + dest.copy_surface(&src, intrect(0, 0, 2, 2), IntPoint::new(1, -1)); + assert_eq!(dest.get_data(), &vec![blue, green, 0, 0][..]); + dest.copy_surface(&src, intrect(0, 0, 2, 2), IntPoint::new(-1, 1)); + assert_eq!(dest.get_data(), &vec![blue, green, red, 0][..]); + dest.copy_surface(&src, intrect(0, 0, 2, 2), IntPoint::new(1, 1)); + assert_eq!(dest.get_data(), &vec![blue, green, red, white][..]); + } + + #[test] + fn path_contains_point() { + let mut pb = PathBuilder::new(); + pb.rect(0., 0., 2., 2.); + let rect = pb.finish(); + + assert!(rect.contains_point(0.1, 1., 1.)); + assert!(!rect.contains_point(0.1, 4., 4.)); + assert!(rect.contains_point(0.1, 0., 1.)); + + let mut pb = PathBuilder::new(); + pb.move_to(0., 0.); + pb.line_to(0., 1.); + pb.line_to(1., 1.); + pb.close(); + let tri = pb.finish(); + + assert!(tri.contains_point(0.1, 0.5, 0.5)); + assert!(!tri.contains_point(0.1, 0.6, 0.5)); + assert!(tri.contains_point(0.1, 0.4, 0.5)); + } + + #[test] + fn push_clip() { + let mut dest = DrawTarget::new(2, 2); + + let mut pb = PathBuilder::new(); + pb.rect(1., 1., 1., 1.); + let rect = pb.finish(); + + dest.push_clip(&rect); + + let mut pb = PathBuilder::new(); + pb.rect(0., 0., 1., 1.); + let rect = pb.finish(); + + dest.push_clip(&rect); + } + + #[test] + fn empty_lineto_fill() { + let mut dt = DrawTarget::new(2, 2); + + let mut pb = PathBuilder::new(); + pb.line_to(0., 2.); + pb.line_to(2., 2.); + pb.line_to(2., 0.); + dt.fill(&pb.finish(), &WHITE_SOURCE, &DrawOptions::new()); + assert_eq!(dt.get_data()[0], 0) + } + + #[test] + fn empty_lineto_stroke() { + let mut dt = DrawTarget::new(2, 2); + + let mut pb = PathBuilder::new(); + pb.line_to(0., 2.); + let path = pb.finish(); + dt.stroke( + &path, + &WHITE_SOURCE, + &StrokeStyle { + width: 2., + ..Default::default() + }, + &DrawOptions::new(), + ); + assert_eq!(dt.get_data(), &vec![0, 0, 0, 0][..]); + + dt.stroke( + &path, + &WHITE_SOURCE, + &StrokeStyle { + width: 2., + dash_array: vec![2., 2.], + dash_offset: 0., + ..Default::default() + }, + &DrawOptions::new(), + ); + assert_eq!(dt.get_data(), &vec![0, 0, 0, 0][..]); + } + + #[test] + fn clip_rect_composite() { + let mut dest = DrawTarget::new(2, 2); + + let mut pb = PathBuilder::new(); + pb.rect(0., 0., 2., 2.); + let rect = pb.finish(); + + let fill = Source::Solid(SolidSource { + r: 255, + g: 0, + b: 0, + a: 255, + }); + dest.fill(&rect, &fill, &DrawOptions::new()); + dest.push_clip(&rect); + + let pixels = dest.get_data(); + // expected a red pixel + let expected = 255 << 24 | 255 << 16 | 0 << 8 | 0; + assert_eq!(pixels[0], expected); + + let fill = Source::Solid(SolidSource { + r: 0, + g: 255, + b: 0, + a: 255, + }); + dest.fill(&rect, &fill, &DrawOptions::new()); + let pixels = dest.get_data(); + // expected a green pixel + let expected = 255 << 24 | 0 << 16 | 255 << 8 | 0; + assert_eq!(pixels[0], expected); + } + + #[test] + fn draw_image_xor() { + let mut target = DrawTarget::new(1, 1); + let mut pb = PathBuilder::new(); + pb.rect(0., 0., 1., 1.); + let rect = pb.finish(); + let mut options = DrawOptions::new(); + options.blend_mode = BlendMode::Src; + target.fill( + &rect, + &Source::Solid(SolidSource::from_unpremultiplied_argb(128, 0, 255, 255)), + &options, + ); + + options.blend_mode = BlendMode::Xor; + target.fill( + &rect, + &Source::Solid(SolidSource::from_unpremultiplied_argb(0xbf, 255, 255, 0)), + &options, + ); + } + + #[test] + fn arc_contains() { + let mut pb = PathBuilder::new(); + pb.arc(50., 25., 10., 0., std::f32::consts::PI); + let path = pb.finish(); + assert!(!path.contains_point(0.1, 50., 10.)); + assert!(!path.contains_point(0.1, 50., 20.)); + assert!(path.contains_point(0.1, 50., 30.)); + assert!(!path.contains_point(0.1, 50., 40.)); + assert!(!path.contains_point(0.1, 30., 20.)); + assert!(!path.contains_point(0.1, 70., 20.)); + assert!(!path.contains_point(0.1, 30., 30.)); + assert!(!path.contains_point(0.1, 70., 30.)); + } + + #[test] + fn new_linear_gradient_zerosize() { + let source = Source::new_linear_gradient( + Gradient { stops: Vec::new() }, + Point::new(42., 42.), + Point::new(42., 42.), + Spread::Pad, + ); + + match source { + Source::LinearGradient(_, _, transform) => { + assert_eq!(transform.m11, 0.); + assert_eq!(transform.m12, 0.); + assert_eq!(transform.m21, 0.); + assert_eq!(transform.m22, 0.); + assert_eq!(transform.m31, 0.); + assert_eq!(transform.m32, 0.); + } + _ => panic!("dead end"), + }; + } + + #[test] + fn blend_surface_with_negative_offset() { + let mut dt1 = crate::DrawTarget::new(3, 3); + let dt2 = crate::DrawTarget::new(3, 3); + dt1.blend_surface_with_alpha( + &dt2, + crate::IntRect::new(crate::IntPoint::new(-1, -1), crate::IntPoint::new(2, 2)), + crate::IntPoint::new(2, 2), + 1.0, + ); + } + + #[test] + fn close_sets_current_point() { + let mut dt = crate::DrawTarget::new(3, 3); + let mut pb = PathBuilder::new(); + pb.rect(10., 10., 100., 100.); + pb.line_to(-10., -10.); + let path = pb.finish(); + dt.stroke( + &path, + &WHITE_SOURCE, + &StrokeStyle { + width: 5., + ..Default::default() + }, + &DrawOptions::new(), + ); + let white = 0xffffffff; + assert_eq!( + dt.get_data(), + &vec![white, white, white, white, white, white, white, white, white][..] + ); + + // make sure we get the same behaviour when dashing + let mut dt = crate::DrawTarget::new(3, 3); + dt.stroke( + &path, + &WHITE_SOURCE, + &StrokeStyle { + width: 5., + dash_array: vec![1000., 10.], + ..Default::default() + }, + &DrawOptions::new(), + ); + let white = 0xffffffff; + assert_eq!( + dt.get_data(), + &vec![white, white, white, white, white, white, white, white, white][..] + ); + } + + #[test] + fn close_clears_start_point() { + let mut dt = DrawTarget::new(4, 4); + + // This path is positioned just outside of the draw + // target so that when it's stroked we can ensure + // that none of the stroke leaks in + let mut pb = PathBuilder::new(); + pb.move_to(14.0, 0.0); + pb.line_to(104.0, 30.0); + pb.line_to(14.0, 70.0); + pb.close(); + + let style = StrokeStyle { + width: 20.0, + cap: LineCap::Square, + join: LineJoin::Bevel, + ..StrokeStyle::default() + }; + + dt.stroke(&pb.finish(), &WHITE_SOURCE, &style, &DrawOptions::new()); + + for i in dt.get_data() { + assert_eq!(*i, 0); + } + } + + #[test] + fn negative_repeat() { + let mut dt = DrawTarget::new(2, 2); + let options = DrawOptions::new(); + + let img = Image { + width: 2, + height: 2, + data: &vec![0xffff0000; 2 * 2], + }; + + let identity = Transform::identity(); + let img_src = Source::Image(img, ExtendMode::Repeat, FilterMode::Nearest, identity); + dt.set_transform(&dt.get_transform().pre_translate(euclid::vec2(0., 1.))); + dt.fill_rect(0., -1., 100., 50., &img_src, &options); + } + + #[test] + fn zero_sized_draw_target() { + let mut dt = DrawTarget::new(0, 0); + let mut pb = PathBuilder::new(); + pb.line_to(0.5, 0.5); + pb.line_to(2.0, -2.0); + pb.line_to(2.0, 0.5); + dt.fill(&pb.finish(), &WHITE_SOURCE, &DrawOptions::new()); + } + + #[test] + fn dash_subpath_restart() { + let mut dt = DrawTarget::new(2, 2); + let mut pb = PathBuilder::new(); + + // move to some arbitrary place + pb.move_to(40., 40.); + pb.line_to(60., 40.); + // the dash should still be off + + // Start a new subpath. This should reset the dash state so that we + // cover the entire draw target with the dash + pb.move_to(-0.5, 1.); + pb.line_to(3., 1.); + + dt.stroke( + &pb.finish(), + &WHITE_SOURCE, + &StrokeStyle { + width: 2., + dash_array: vec![1.0, 14.0, 3.0, 80.], + dash_offset: 15.0, + ..Default::default() + }, + &DrawOptions::new(), + ); + + let white = 0xffffffff; + assert_eq!(dt.get_data(), &vec![white, white, white, white][..]); + } + + #[test] + fn nearest_offset() { + let white = 0xffffffff; + let checkerboard = vec![0xff000000, white, white, 0xff000000]; + let (width, height) = (2, 2); + + let mut dt = DrawTarget::new(width, height); + let image = Image { + width, + height, + data: &checkerboard, + }; + dt.set_transform(&Transform::translation(-299., -299.)); + let source = Source::Image( + image, + ExtendMode::Pad, + FilterMode::Nearest, + Transform::identity().then_scale(width as f32 / 600., height as f32 / 600.), + ); + + // draw a checkerboard scaled way up and make sure the origin stays in the center + dt.fill_rect(0., 0., 600., 600., &source, &DrawOptions::new()); + + assert_eq!(dt.get_data(), &checkerboard[..]); + } +} diff --git a/crates/typed-arena/Cargo.toml b/crates/typed-arena/Cargo.toml new file mode 100644 index 000000000..896178413 --- /dev/null +++ b/crates/typed-arena/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "typed-arena" +version = "2.0.3" +authors = ["The typed-arena developers"] +license = "MIT" +description = "The arena, a fast but limited type of allocator." +documentation = "https://docs.rs/typed-arena" +repository = "https://github.com/thomcc/rust-typed-arena" +categories = ["memory-management", "no-std"] +keywords = ["arena"] +readme = "./README.md" +exclude = ["benchmarks"] +autobenches = false + +[lib] +name = "typed_arena" +path = "src/lib.rs" + +[features] +default = ["std"] +std = [] diff --git a/crates/typed-arena/LICENSE b/crates/typed-arena/LICENSE new file mode 100644 index 000000000..d2498aa20 --- /dev/null +++ b/crates/typed-arena/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 The typed-arena developers + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/crates/typed-arena/README.md b/crates/typed-arena/README.md new file mode 100644 index 000000000..666a968bc --- /dev/null +++ b/crates/typed-arena/README.md @@ -0,0 +1,4 @@ +# typed-arena + +This is a fork of the [typed-arena](https://github.com/thomcc/rust-typed-arena) library by +[@thomcc](https://github.com/thomcc) to add some traits to the `Arena` struct. diff --git a/crates/typed-arena/src/lib.rs b/crates/typed-arena/src/lib.rs new file mode 100644 index 000000000..e961a7b17 --- /dev/null +++ b/crates/typed-arena/src/lib.rs @@ -0,0 +1,637 @@ +//! The arena, a fast but limited type of allocator. +//! +//! **A fast (but limited) allocation arena for values of a single type.** +//! +//! Allocated objects are destroyed all at once, when the arena itself is +//! destroyed. There is no deallocation of individual objects while the arena +//! itself is still alive. The flipside is that allocation is fast: typically +//! just a vector push. +//! +//! There is also a method `into_vec()` to recover ownership of allocated +//! objects when the arena is no longer required, instead of destroying +//! everything. +//! +//! ## Example +//! +//! ``` +//! use typed_arena::Arena; +//! +//! struct Monster { +//! level: u32, +//! } +//! +//! let monsters = Arena::new(); +//! +//! let goku = monsters.alloc(Monster { level: 9001 }); +//! assert!(goku.level > 9000); +//! ``` +//! +//! ## Safe Cycles +//! +//! All allocated objects get the same lifetime, so you can safely create cycles +//! between them. This can be useful for certain data structures, such as graphs +//! and trees with parent pointers. +//! +//! ``` +//! use std::cell::Cell; +//! use typed_arena::Arena; +//! +//! struct CycleParticipant<'a> { +//! other: Cell>>, +//! } +//! +//! let arena = Arena::new(); +//! +//! let a = arena.alloc(CycleParticipant { other: Cell::new(None) }); +//! let b = arena.alloc(CycleParticipant { other: Cell::new(None) }); +//! +//! a.other.set(Some(b)); +//! b.other.set(Some(a)); +//! ``` + +// Potential optimizations: +// 1) add and stabilize a method for in-place reallocation of vecs. +// 2) add and stabilize placement new. +// 3) use an iterator. This may add far too much unsafe code. + +#![deny(missing_docs)] +#![cfg_attr(not(any(feature = "std", test)), no_std)] + +#[cfg(not(feature = "std"))] +extern crate alloc; + +#[cfg(any(feature = "std", test))] +extern crate core; + +#[cfg(not(feature = "std"))] +use alloc::vec::Vec; + +use core::cell::RefCell; +use core::cmp; +use core::iter; +use core::mem; +use core::ptr; +use core::slice; +use core::str; + +use mem::MaybeUninit; + +#[cfg(test)] +mod test; + +// Initial size in bytes. +const INITIAL_SIZE: usize = 1024; +// Minimum capacity. Must be larger than 0. +const MIN_CAPACITY: usize = 1; + +/// An arena of objects of type `T`. +/// +/// ## Example +/// +/// ``` +/// use typed_arena::Arena; +/// +/// struct Monster { +/// level: u32, +/// } +/// +/// let monsters = Arena::new(); +/// +/// let vegeta = monsters.alloc(Monster { level: 9001 }); +/// assert!(vegeta.level > 9000); +/// ``` +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] +pub struct Arena { + chunks: RefCell>, +} + +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] +struct ChunkList { + current: Vec, + rest: Vec>, +} + +impl Arena { + /// Construct a new arena. + /// + /// ## Example + /// + /// ``` + /// use typed_arena::Arena; + /// + /// let arena = Arena::new(); + /// # arena.alloc(1); + /// ``` + pub fn new() -> Arena { + let size = cmp::max(1, mem::size_of::()); + Arena::with_capacity(INITIAL_SIZE / size) + } + + /// Construct a new arena with capacity for `n` values pre-allocated. + /// + /// ## Example + /// + /// ``` + /// use typed_arena::Arena; + /// + /// let arena = Arena::with_capacity(1337); + /// # arena.alloc(1); + /// ``` + pub fn with_capacity(n: usize) -> Arena { + let n = cmp::max(MIN_CAPACITY, n); + Arena { + chunks: RefCell::new(ChunkList { + current: Vec::with_capacity(n), + rest: Vec::new(), + }), + } + } + + /// Return the size of the arena + /// + /// This is useful for using the size of previous typed arenas to build new typed arenas with large enough spaces. + /// + /// ## Example + /// + /// ``` + /// use typed_arena::Arena; + /// + /// let arena = Arena::with_capacity(0); + /// let a = arena.alloc(1); + /// let b = arena.alloc(2); + /// + /// assert_eq!(arena.len(), 2); + /// ``` + pub fn len(&self) -> usize { + let chunks = self.chunks.borrow(); + + let mut res = 0; + for vec in chunks.rest.iter() { + res += vec.len() + } + + res + chunks.current.len() + } + + /// Allocates a value in the arena, and returns a mutable reference + /// to that value. + /// + /// ## Example + /// + /// ``` + /// use typed_arena::Arena; + /// + /// let arena = Arena::new(); + /// let x = arena.alloc(42); + /// assert_eq!(*x, 42); + /// ``` + #[inline] + pub fn alloc(&self, value: T) -> &mut T { + self.alloc_fast_path(value) + .unwrap_or_else(|value| self.alloc_slow_path(value)) + } + + #[inline] + fn alloc_fast_path(&self, value: T) -> Result<&mut T, T> { + let mut chunks = self.chunks.borrow_mut(); + let len = chunks.current.len(); + if len < chunks.current.capacity() { + chunks.current.push(value); + // Avoid going through `Vec::deref_mut`, which overlaps + // other references we have already handed out! + debug_assert!(len < chunks.current.len()); // bounds check + Ok(unsafe { &mut *chunks.current.as_mut_ptr().add(len) }) + } else { + Err(value) + } + } + + fn alloc_slow_path(&self, value: T) -> &mut T { + &mut self.alloc_extend(iter::once(value))[0] + } + + /// Uses the contents of an iterator to allocate values in the arena. + /// Returns a mutable slice that contains these values. + /// + /// ## Example + /// + /// ``` + /// use typed_arena::Arena; + /// + /// let arena = Arena::new(); + /// let abc = arena.alloc_extend("abcdefg".chars().take(3)); + /// assert_eq!(abc, ['a', 'b', 'c']); + /// ``` + pub fn alloc_extend(&self, iterable: I) -> &mut [T] + where + I: IntoIterator, + { + let mut iter = iterable.into_iter(); + + let mut chunks = self.chunks.borrow_mut(); + + let iter_min_len = iter.size_hint().0; + let mut next_item_index; + debug_assert!( + chunks.current.capacity() >= chunks.current.len(), + "capacity is always greater than or equal to len, so we don't need to worry about underflow" + ); + if iter_min_len > chunks.current.capacity() - chunks.current.len() { + chunks.reserve(iter_min_len); + chunks.current.extend(iter); + next_item_index = 0; + } else { + next_item_index = chunks.current.len(); + let mut i = 0; + while let Some(elem) = iter.next() { + if chunks.current.len() == chunks.current.capacity() { + // The iterator was larger than we could fit into the current chunk. + let chunks = &mut *chunks; + // Create a new chunk into which we can freely push the entire iterator into + chunks.reserve(i + 1); + let previous_chunk = chunks.rest.last_mut().unwrap(); + let previous_chunk_len = previous_chunk.len(); + // Move any elements we put into the previous chunk into this new chunk + chunks + .current + .extend(previous_chunk.drain(previous_chunk_len - i..)); + chunks.current.push(elem); + // And the remaining elements in the iterator + chunks.current.extend(iter); + next_item_index = 0; + break; + } else { + chunks.current.push(elem); + } + i += 1; + } + } + + // Extend the lifetime from that of `chunks_borrow` to that of `self`. + // This is OK because we’re careful to never move items + // by never pushing to inner `Vec`s beyond their initial capacity. + // The returned reference is unique (`&mut`): + // the `Arena` never gives away references to existing items. + unsafe { + let new_len = chunks.current.len() - next_item_index; + slice::from_raw_parts_mut(chunks.current.as_mut_ptr().add(next_item_index), new_len) + } + } + + /// Allocates space for a given number of values, but doesn't initialize it. + /// + /// ## Safety + /// + /// After calling this method, the arena considers the elements initialized. If you fail to + /// initialize them (which includes because of panicking during the initialization), the arena + /// will run destructors on the uninitialized memory. Therefore, you must initialize them. + /// + /// Considering how easy it is to cause undefined behaviour using this, you're advised to + /// prefer the other (safe) methods, like [`alloc_extend`][Arena::alloc_extend]. + /// + /// ## Example + /// + /// ```rust + /// use std::mem::{self, MaybeUninit}; + /// use std::ptr; + /// use typed_arena::Arena; + /// + /// // Transmute from MaybeUninit slice to slice of initialized T. + /// // It is a separate function to preserve the lifetime of the reference. + /// unsafe fn transmute_uninit(r: &mut [MaybeUninit]) -> &mut [A] { + /// mem::transmute(r) + /// } + /// + /// let arena: Arena = Arena::new(); + /// let slice: &mut [bool]; + /// unsafe { + /// let uninitialized = arena.alloc_uninitialized(10); + /// for elem in uninitialized.iter_mut() { + /// ptr::write(elem.as_mut_ptr(), true); + /// } + /// slice = transmute_uninit(uninitialized); + /// } + /// ``` + /// + /// ## Alternative allocation pattern + /// + /// To avoid the problem of dropping assumed to be initialized elements on panic, it is also + /// possible to combine the [`reserve_extend`][Arena::reserve_extend] with + /// [`uninitialized_array`][Arena::uninitialized_array], initialize the elements and confirm + /// them by this method. In such case, when there's a panic during initialization, the already + /// initialized elements would leak but it wouldn't cause UB. + /// + /// ```rust + /// use std::mem::{self, MaybeUninit}; + /// use std::ptr; + /// use typed_arena::Arena; + /// + /// unsafe fn transmute_uninit(r: &mut [MaybeUninit]) -> &mut [A] { + /// mem::transmute(r) + /// } + /// + /// const COUNT: usize = 2; + /// + /// let arena: Arena = Arena::new(); + /// + /// arena.reserve_extend(COUNT); + /// let slice: &mut [String]; + /// unsafe { + /// // Perform initialization before we claim the memory. + /// let uninitialized = arena.uninitialized_array(); + /// assert!((*uninitialized).len() >= COUNT); // Ensured by the reserve_extend + /// for elem in &mut (*uninitialized)[..COUNT] { + /// ptr::write(elem.as_mut_ptr(), "Hello".to_owned()); + /// } + /// let addr = (*uninitialized).as_ptr() as usize; + /// + /// // The alloc_uninitialized returns the same memory, but "confirms" its allocation. + /// slice = transmute_uninit(arena.alloc_uninitialized(COUNT)); + /// assert_eq!(addr, slice.as_ptr() as usize); + /// assert_eq!(slice, &["Hello".to_owned(), "Hello".to_owned()]); + /// } + /// ``` + pub unsafe fn alloc_uninitialized(&self, num: usize) -> &mut [MaybeUninit] { + let mut chunks = self.chunks.borrow_mut(); + + debug_assert!( + chunks.current.capacity() >= chunks.current.len(), + "capacity is always greater than or equal to len, so we don't need to worry about underflow" + ); + if num > chunks.current.capacity() - chunks.current.len() { + chunks.reserve(num); + } + + // At this point, the current chunk must have free capacity. + let next_item_index = chunks.current.len(); + chunks.current.set_len(next_item_index + num); + + // Go through pointers, to make sure we never create a reference to uninitialized T. + let start = chunks.current.as_mut_ptr().offset(next_item_index as isize); + let start_uninit = start as *mut MaybeUninit; + slice::from_raw_parts_mut(start_uninit, num) + } + + /// Makes sure there's enough continuous space for at least `num` elements. + /// + /// This may save some work if called before [`alloc_extend`][Arena::alloc_extend]. It also + /// allows somewhat safer use pattern of [`alloc_uninitialized`][Arena::alloc_uninitialized]. + /// On the other hand this might waste up to `n - 1` elements of space. In case new allocation + /// is needed, the unused ones in current chunk are never used. + pub fn reserve_extend(&self, num: usize) { + let mut chunks = self.chunks.borrow_mut(); + + debug_assert!( + chunks.current.capacity() >= chunks.current.len(), + "capacity is always greater than or equal to len, so we don't need to worry about underflow" + ); + if num > chunks.current.capacity() - chunks.current.len() { + chunks.reserve(num); + } + } + + /// Returns unused space. + /// + /// *This unused space is still not considered "allocated".* Therefore, it + /// won't be dropped unless there are further calls to `alloc`, + /// [`alloc_uninitialized`][Arena::alloc_uninitialized], or + /// [`alloc_extend`][Arena::alloc_extend] which is why the method is safe. + /// + /// It returns a raw pointer to avoid creating multiple mutable references to the same place. + /// It is up to the caller not to dereference it after any of the `alloc_` methods are called. + pub fn uninitialized_array(&self) -> *mut [MaybeUninit] { + let mut chunks = self.chunks.borrow_mut(); + let len = chunks.current.capacity() - chunks.current.len(); + let next_item_index = chunks.current.len(); + + unsafe { + // Go through pointers, to make sure we never create a reference to uninitialized T. + let start = chunks.current.as_mut_ptr().offset(next_item_index as isize); + let start_uninit = start as *mut MaybeUninit; + ptr::slice_from_raw_parts_mut(start_uninit, len) + } + } + + /// Convert this `Arena` into a `Vec`. + /// + /// Items in the resulting `Vec` appear in the order that they were + /// allocated in. + /// + /// ## Example + /// + /// ``` + /// use typed_arena::Arena; + /// + /// let arena = Arena::new(); + /// + /// arena.alloc("a"); + /// arena.alloc("b"); + /// arena.alloc("c"); + /// + /// let easy_as_123 = arena.into_vec(); + /// + /// assert_eq!(easy_as_123, vec!["a", "b", "c"]); + /// ``` + pub fn into_vec(self) -> Vec { + let mut chunks = self.chunks.into_inner(); + // keep order of allocation in the resulting Vec + let n = chunks + .rest + .iter() + .fold(chunks.current.len(), |a, v| a + v.len()); + let mut result = Vec::with_capacity(n); + for mut vec in chunks.rest { + result.append(&mut vec); + } + result.append(&mut chunks.current); + result + } + + /// Returns an iterator that allows modifying each value. + /// + /// Items are yielded in the order that they were allocated. + /// + /// ## Example + /// + /// ``` + /// use typed_arena::Arena; + /// + /// #[derive(Debug, PartialEq, Eq)] + /// struct Point { x: i32, y: i32 }; + /// + /// let mut arena = Arena::new(); + /// + /// arena.alloc(Point { x: 0, y: 0 }); + /// arena.alloc(Point { x: 1, y: 1 }); + /// + /// for point in arena.iter_mut() { + /// point.x += 10; + /// } + /// + /// let points = arena.into_vec(); + /// + /// assert_eq!(points, vec![Point { x: 10, y: 0 }, Point { x: 11, y: 1 }]); + /// + /// ``` + /// + /// ## Immutable Iteration + /// + /// Note that there is no corresponding `iter` method. Access to the arena's contents + /// requries mutable access to the arena itself. + /// + /// ```compile_fail + /// use typed_arena::Arena; + /// + /// let mut arena = Arena::new(); + /// let x = arena.alloc(1); + /// + /// // borrow error! + /// for i in arena.iter_mut() { + /// println!("i: {}", i); + /// } + /// + /// // borrow error! + /// *x = 2; + /// ``` + #[inline] + pub fn iter_mut(&mut self) -> IterMut { + let chunks = self.chunks.get_mut(); + let position = if !chunks.rest.is_empty() { + let index = 0; + let inner_iter = chunks.rest[index].iter_mut(); + // Extend the lifetime of the individual elements to that of the arena. + // This is OK because we borrow the arena mutably to prevent new allocations + // and we take care here to never move items inside the arena while the + // iterator is alive. + let inner_iter = unsafe { mem::transmute(inner_iter) }; + IterMutState::ChunkListRest { index, inner_iter } + } else { + // Extend the lifetime of the individual elements to that of the arena. + let iter = unsafe { mem::transmute(chunks.current.iter_mut()) }; + IterMutState::ChunkListCurrent { iter } + }; + IterMut { + chunks, + state: position, + } + } +} + +impl Arena { + /// Allocates a string slice and returns a mutable reference to it. + /// + /// This is on `Arena`, because string slices use byte slices (`[u8]`) as their backing + /// storage. + /// + /// # Example + /// + /// ``` + /// use typed_arena::Arena; + /// + /// let arena: Arena = Arena::new(); + /// let hello = arena.alloc_str("Hello world"); + /// assert_eq!("Hello world", hello); + /// ``` + #[inline] + pub fn alloc_str(&self, s: &str) -> &mut str { + let buffer = self.alloc_extend(s.bytes()); + // Can't fail the utf8 validation, it already came in as utf8 + unsafe { str::from_utf8_unchecked_mut(buffer) } + } +} + +impl Default for Arena { + fn default() -> Self { + Self::new() + } +} + +impl ChunkList { + #[inline(never)] + #[cold] + fn reserve(&mut self, additional: usize) { + let double_cap = self + .current + .capacity() + .checked_mul(2) + .expect("capacity overflow"); + let required_cap = additional + .checked_next_power_of_two() + .expect("capacity overflow"); + let new_capacity = cmp::max(double_cap, required_cap); + let chunk = mem::replace(&mut self.current, Vec::with_capacity(new_capacity)); + self.rest.push(chunk); + } +} + +enum IterMutState<'a, T> { + ChunkListRest { + index: usize, + inner_iter: slice::IterMut<'a, T>, + }, + ChunkListCurrent { + iter: slice::IterMut<'a, T>, + }, +} + +/// Mutable arena iterator. +/// +/// This struct is created by the [`iter_mut`](struct.Arena.html#method.iter_mut) method on [Arenas](struct.Arena.html). +pub struct IterMut<'a, T: 'a> { + chunks: &'a mut ChunkList, + state: IterMutState<'a, T>, +} + +impl<'a, T> Iterator for IterMut<'a, T> { + type Item = &'a mut T; + fn next(&mut self) -> Option<&'a mut T> { + loop { + self.state = match self.state { + IterMutState::ChunkListRest { + mut index, + ref mut inner_iter, + } => { + match inner_iter.next() { + Some(item) => return Some(item), + None => { + index += 1; + if index < self.chunks.rest.len() { + let inner_iter = self.chunks.rest[index].iter_mut(); + // Extend the lifetime of the individual elements to that of the arena. + let inner_iter = unsafe { mem::transmute(inner_iter) }; + IterMutState::ChunkListRest { index, inner_iter } + } else { + let iter = self.chunks.current.iter_mut(); + // Extend the lifetime of the individual elements to that of the arena. + let iter = unsafe { mem::transmute(iter) }; + IterMutState::ChunkListCurrent { iter } + } + } + } + } + IterMutState::ChunkListCurrent { ref mut iter } => return iter.next(), + }; + } + } + + fn size_hint(&self) -> (usize, Option) { + let current_len = self.chunks.current.len(); + let current_cap = self.chunks.current.capacity(); + if self.chunks.rest.is_empty() { + (current_len, Some(current_len)) + } else { + let rest_len = self.chunks.rest.len(); + let last_chunk_len = self + .chunks + .rest + .last() + .map(|chunk| chunk.len()) + .unwrap_or(0); + + let min = current_len + last_chunk_len; + let max = min + (rest_len * current_cap / rest_len); + + (min, Some(max)) + } + } +} diff --git a/crates/typed-arena/src/test.rs b/crates/typed-arena/src/test.rs new file mode 100644 index 000000000..a124e45df --- /dev/null +++ b/crates/typed-arena/src/test.rs @@ -0,0 +1,395 @@ +#![allow(dropping_references, dead_code)] + +use super::*; +use std::cell::Cell; +use std::mem; +use std::panic::{self, AssertUnwindSafe}; +use std::ptr; + +struct DropTracker<'a>(&'a Cell); +impl<'a> Drop for DropTracker<'a> { + fn drop(&mut self) { + self.0.set(self.0.get() + 1); + } +} + +struct Node<'a, 'b: 'a>(Option<&'a Node<'a, 'b>>, u32, DropTracker<'b>); + +#[test] +fn arena_as_intended() { + let drop_counter = Cell::new(0); + { + let arena = Arena::with_capacity(2); + + let mut node: &Node = arena.alloc(Node(None, 1, DropTracker(&drop_counter))); + assert_eq!(arena.chunks.borrow().rest.len(), 0); + + node = arena.alloc(Node(Some(node), 2, DropTracker(&drop_counter))); + assert_eq!(arena.chunks.borrow().rest.len(), 0); + + node = arena.alloc(Node(Some(node), 3, DropTracker(&drop_counter))); + assert_eq!(arena.chunks.borrow().rest.len(), 1); + + node = arena.alloc(Node(Some(node), 4, DropTracker(&drop_counter))); + assert_eq!(arena.chunks.borrow().rest.len(), 1); + + assert_eq!(node.1, 4); + assert_eq!(node.0.unwrap().1, 3); + assert_eq!(node.0.unwrap().0.unwrap().1, 2); + assert_eq!(node.0.unwrap().0.unwrap().0.unwrap().1, 1); + assert!(node.0.unwrap().0.unwrap().0.unwrap().0.is_none()); + + assert_eq!(arena.len(), 4); + + mem::drop(node); + assert_eq!(drop_counter.get(), 0); + + let mut node: &Node = arena.alloc(Node(None, 5, DropTracker(&drop_counter))); + assert_eq!(arena.chunks.borrow().rest.len(), 1); + + node = arena.alloc(Node(Some(node), 6, DropTracker(&drop_counter))); + assert_eq!(arena.chunks.borrow().rest.len(), 1); + + node = arena.alloc(Node(Some(node), 7, DropTracker(&drop_counter))); + assert_eq!(arena.chunks.borrow().rest.len(), 2); + + assert_eq!(drop_counter.get(), 0); + + assert_eq!(node.1, 7); + assert_eq!(node.0.unwrap().1, 6); + assert_eq!(node.0.unwrap().0.unwrap().1, 5); + assert!(node.0.unwrap().0.unwrap().0.is_none()); + + assert_eq!(drop_counter.get(), 0); + } + assert_eq!(drop_counter.get(), 7); +} + +#[test] +fn ensure_into_vec_maintains_order_of_allocation() { + let arena = Arena::with_capacity(1); // force multiple inner vecs + for &s in &["t", "e", "s", "t"] { + arena.alloc(String::from(s)); + } + let vec = arena.into_vec(); + assert_eq!(vec, vec!["t", "e", "s", "t"]); +} + +#[test] +fn test_zero_cap() { + let arena = Arena::with_capacity(0); + let a = arena.alloc(1); + let b = arena.alloc(2); + assert_eq!(*a, 1); + assert_eq!(*b, 2); + assert_eq!(arena.len(), 2); +} + +#[test] +fn test_alloc_extend() { + let arena = Arena::with_capacity(2); + for i in 0..15 { + let slice = arena.alloc_extend(0..i); + for (j, &elem) in slice.iter().enumerate() { + assert_eq!(j, elem); + } + } +} + +#[test] +fn test_alloc_uninitialized() { + const LIMIT: usize = 15; + let drop_counter = Cell::new(0); + unsafe { + let arena: Arena = Arena::with_capacity(4); + for i in 0..LIMIT { + let slice = arena.alloc_uninitialized(i); + for (j, elem) in slice.iter_mut().enumerate() { + ptr::write( + elem.as_mut_ptr(), + Node(None, j as u32, DropTracker(&drop_counter)), + ); + } + assert_eq!(drop_counter.get(), 0); + } + } + assert_eq!(drop_counter.get(), (0..LIMIT).fold(0, |a, e| a + e) as u32); +} + +#[test] +fn test_alloc_extend_with_drop_counter() { + let drop_counter = Cell::new(0); + { + let arena = Arena::with_capacity(2); + let iter = (0..100).map(|j| Node(None, j as u32, DropTracker(&drop_counter))); + let older_ref = Some(&arena.alloc_extend(iter)[0]); + assert_eq!(drop_counter.get(), 0); + let iter = (0..100).map(|j| Node(older_ref, j as u32, DropTracker(&drop_counter))); + arena.alloc_extend(iter); + assert_eq!(drop_counter.get(), 0); + } + assert_eq!(drop_counter.get(), 200); +} + +/// Test with bools. +/// +/// Bools, unlike integers, have invalid bit patterns. Therefore, ever having an uninitialized bool +/// is insta-UB. Make sure miri doesn't find any such thing. +#[test] +fn test_alloc_uninitialized_bools() { + const LEN: usize = 20; + unsafe { + let arena: Arena = Arena::with_capacity(2); + let slice = arena.alloc_uninitialized(LEN); + for elem in slice.iter_mut() { + ptr::write(elem.as_mut_ptr(), true); + } + // Now it is fully initialized, we can safely transmute the slice. + let slice: &mut [bool] = mem::transmute(slice); + assert_eq!(&[true; LEN], slice); + } +} + +/// Check nothing bad happens by panicking during initialization of borrowed slice. +#[test] +fn alloc_uninitialized_with_panic() { + struct Dropper(bool); + + impl Drop for Dropper { + fn drop(&mut self) { + // Just make sure we touch the value, to make sure miri would bite if it was + // unitialized + if self.0 { + panic!(); + } + } + } + let mut reached_first_init = false; + panic::catch_unwind(AssertUnwindSafe(|| unsafe { + let arena: Arena = Arena::new(); + arena.reserve_extend(2); + let uninitialized = arena.uninitialized_array(); + assert!((*uninitialized).len() >= 2); + ptr::write((*uninitialized)[0].as_mut_ptr(), Dropper(false)); + reached_first_init = true; + panic!("To drop the arena"); + // If it didn't panic, we would continue by initializing the second one and confirming by + // .alloc_uninitialized(); + })) + .unwrap_err(); + assert!(reached_first_init); +} + +#[test] +fn test_uninitialized_array() { + let arena = Arena::with_capacity(2); + let uninit = arena.uninitialized_array(); + arena.alloc_extend(0..2); + unsafe { + for (&a, b) in (&*uninit).iter().zip(0..2) { + assert_eq!(a.assume_init(), b); + } + assert!((&*arena.uninitialized_array()).as_ptr() != (&*uninit).as_ptr()); + arena.alloc(0); + let uninit = arena.uninitialized_array(); + assert_eq!((&*uninit).len(), 3); + } +} + +#[test] +fn dont_trust_the_iterator_size() { + use std::iter::repeat; + + struct WrongSizeIter(I); + impl Iterator for WrongSizeIter + where + I: Iterator, + { + type Item = I::Item; + + fn next(&mut self) -> Option { + self.0.next() + } + + fn size_hint(&self) -> (usize, Option) { + (0, Some(0)) + } + } + + impl ExactSizeIterator for WrongSizeIter where I: Iterator {} + + let arena = Arena::with_capacity(2); + arena.alloc(0); + let slice = arena.alloc_extend(WrongSizeIter(repeat(1).take(1_000))); + // Allocation of 1000 elements should have created a new chunk + assert_eq!(arena.chunks.borrow().rest.len(), 1); + assert_eq!(slice.len(), 1000); +} + +#[test] +fn arena_is_send() { + fn assert_is_send(_: T) {} + + // If `T` is `Send`, ... + assert_is_send(42_u32); + + // Then `Arena` is also `Send`. + let arena: Arena = Arena::new(); + assert_is_send(arena); +} + +#[test] +fn iter_mut_low_capacity() { + #[derive(Debug, PartialEq, Eq)] + struct NonCopy(usize); + + const MAX: usize = 1_000; + const CAP: usize = 16; + + let mut arena = Arena::with_capacity(CAP); + for i in 1..MAX { + arena.alloc(NonCopy(i)); + } + + assert!( + arena.chunks.borrow().rest.len() > 1, + "expected multiple chunks" + ); + + let mut iter = arena.iter_mut(); + for i in 1..MAX { + assert_eq!(Some(&mut NonCopy(i)), iter.next()); + } + + assert_eq!(None, iter.next()); +} + +#[test] +fn iter_mut_high_capacity() { + #[derive(Debug, PartialEq, Eq)] + struct NonCopy(usize); + + const MAX: usize = 1_000; + const CAP: usize = 8192; + + let mut arena = Arena::with_capacity(CAP); + for i in 1..MAX { + arena.alloc(NonCopy(i)); + } + + assert!( + arena.chunks.borrow().rest.is_empty(), + "expected single chunk" + ); + + let mut iter = arena.iter_mut(); + for i in 1..MAX { + assert_eq!(Some(&mut NonCopy(i)), iter.next()); + } + + assert_eq!(None, iter.next()); +} + +fn assert_size_hint(arena_len: usize, iter: IterMut<'_, T>) { + let (min, max) = iter.size_hint(); + + assert!(max.is_some()); + let max = max.unwrap(); + + // Check that the actual arena length lies between the estimated min and max + assert!(min <= arena_len); + assert!(max >= arena_len); + + // Check that the min and max estimates are within a factor of 3 + assert!(min >= arena_len / 3); + assert!(max <= arena_len * 3); +} + +#[test] +fn size_hint() { + #[derive(Debug, PartialEq, Eq)] + struct NonCopy(usize); + + const MAX: usize = 32; + const CAP: usize = 0; + + for cap in CAP..(CAP + 16/* check some non-power-of-two capacities */) { + let mut arena = Arena::with_capacity(cap); + for i in 1..MAX { + arena.alloc(NonCopy(i)); + let iter = arena.iter_mut(); + assert_size_hint(i, iter); + } + } +} + +// Ensure that `alloc_extend` doesn't violate provenance of +// existing references. (Note: This test is pointless except +// under miri). +#[test] +fn check_extend_provenance() { + let arena = Arena::new(); + let a = arena.alloc(0); + arena.alloc_extend(core::iter::once(1)); + *a = 1; +} + +#[test] +fn size_hint_low_initial_capacities() { + #[derive(Debug, PartialEq, Eq)] + struct NonCopy(usize); + #[cfg(miri)] + const MAX: usize = 100; + #[cfg(not(miri))] + const MAX: usize = 25_000; + const CAP: usize = 0; + + for cap in CAP..(CAP + 128/* check some non-power-of-two capacities */) { + let mut arena = Arena::with_capacity(cap); + for i in 1..MAX { + arena.alloc(NonCopy(i)); + let iter = arena.iter_mut(); + assert_size_hint(i, iter); + } + } +} + +#[test] +fn size_hint_high_initial_capacities() { + #[derive(Debug, PartialEq, Eq)] + struct NonCopy(usize); + + #[cfg(miri)] + const MAX: usize = 100; + #[cfg(not(miri))] + const MAX: usize = 25_000; + const CAP: usize = 8164; + + for cap in CAP..(CAP + 128/* check some non-power-of-two capacities */) { + let mut arena = Arena::with_capacity(cap); + for i in 1..MAX { + arena.alloc(NonCopy(i)); + let iter = arena.iter_mut(); + assert_size_hint(i, iter); + } + } +} + +#[test] +fn size_hint_many_items() { + #[derive(Debug, PartialEq, Eq)] + struct NonCopy(usize); + + #[cfg(miri)] + const MAX: usize = 500; + #[cfg(not(miri))] + const MAX: usize = 5_000_000; + const CAP: usize = 16; + + let mut arena = Arena::with_capacity(CAP); + for i in 1..MAX { + arena.alloc(NonCopy(i)); + let iter = arena.iter_mut(); + assert_size_hint(i, iter); + } +} diff --git a/docs/progress.md b/docs/progress.md new file mode 100644 index 000000000..cad5e3c6f --- /dev/null +++ b/docs/progress.md @@ -0,0 +1,377 @@ +# Implementation Progress + +- [ ] Canvas + - [x] new() + - [x] new(width: i32, height: i32) + - [x] new(width: i32, height: i32, kind: ImageKind) + - [ ] toBuffer() + - [ ] toBuffer(cb: fn(Option, Buffer)) + - [ ] toBuffer(cb: fn(Option, Buffer), mime: String) + - [ ] toBuffer(cb: fn(Option, Buffer), mime: String, config: BufferConfig) + - [ ] toBuffer() -> Buffer + - [ ] toBuffer(mime: String) -> Buffer + - [ ] toBuffer(mime: String, config: BufferConfig) -> Buffer + - [ ] mime = "image/png" (default on non-PDF, non-SVG canvases) + - [ ] mime = "image/jpeg" + - [ ] mime = "raw" (Unencoded BGRA data on LE, ARGB on BE, top-to-bottom) + - [ ] mime = "application/pdf" (only for PDF canvases) + - [ ] mime = "image/svg+xml" (only for SVG canvases) + - [ ] createPNGStream() + - [ ] createPNGStream() -> ReadableStream + - [ ] createPNGStream(config: PngConfig) -> ReadableStream + - [ ] createJPEGStream() + - [ ] createJPEGStream() -> ReadableStream + - [ ] createJPEGStream(config: JpegConfig) -> ReadableStream + - [ ] createPDFStream() + - [ ] createPDFStream() -> ReadableStream + - [ ] createPDFStream(config: PdfConfig) -> ReadableStream + - [ ] toDateURL() + - [ ] toDataURL() -> String + - [ ] toDataURL(mime: String) -> String + - [ ] toDataURL(mime: String, quality: f32 /* 0 to 1 */) -> String + - [ ] toDataURL(cb: fn(Option, String)) + - [ ] toDataURL(mime: String, cb: fn(Option, String)) + - [ ] toDataURL(mime: String, opts: BufferConfig, cb: fn(Option, String)) + - [ ] toDataURL(mime: String, quality: f32 /* 0 to 1 */, cb: fn(Option, String)) + - [ ] mime = "image/png" + - [ ] mime = "image/jpeg" + - [x] width: i32 + - [x] height: i32 + - [x] stride: i32 + - [x] type: ImageKind + - [x] getContext() + - [x] getContext(id: String) + - [x] getContext(id: String, attrs: ContextSettings) -> CanvasRenderingContext2D **NOTE: Removed, see below.** + - [x] id = "2d" + - [x] id = "webgl" + - [x] id = "webgl2" +- [ ] CanvasRenderingContext2D + - [x] clearRect(x: i32, y: i32, w: i32, h: i32) + - [x] fillRect(x: i32, y: i32, w: i32, h: i32) + - [x] strokeRect(x: i32, y: i32, w: i32, h: i32) + - [ ] fillText() + - [ ] fillText(text: String, x: i32, y: i32) + - [ ] fillText(text: String, x: i32, y: i32, maxWidth: i32) + - [ ] strokeText() + - [ ] strokeText(text: String, x: i32, y: i32) + - [ ] strokeText(text: String, x: i32, y: i32, maxWidth: i32) + - [ ] measureText(text: String) -> TextMetrics + - [ ] getLineDash() -> Vec + - [ ] setLineDash(segments: Vec) + - [ ] createLinearGradient(x0: i32, y0: i32, x1: i32, y1: i32) -> CanvasGradient + - [ ] createRadialGradient(x0: i32, y0: i32, r0: i32, x1: i32, y1: i32, r1: i32) -> CanvasGradient + - [ ] createPattern() + - [ ] createPattern(image: Either) -> CanvasPattern + - [ ] createPattern(image: Either, repetition: Repetition) -> CanvasPattern + - [ ] beginPath() + - [ ] closePath() + - [ ] moveTo(x: i32, y: i32) + - [ ] lineTo(x: i32, y: i32) + - [ ] quadraticCurveTo(cpx: i32, cpy: i32, x: i32, y: i32) + - [ ] bezierCurveTo(cp1x: i32, cp1y: i32, cp2x: i32, cp2y: i32, x: i32, y: i32) + - [ ] arc() + - [ ] arc(x: i32, y: i32, radius: i32, startAngle: i32, endAngle: i32) + - [ ] arc(x: i32, y: i32, radius: i32, startAngle: i32, endAngle: i32, counterClockwise: bool) + - [ ] arcTo(x1: i32, y1: i32, x2: i32, y2: i32, radius: i32) + - [ ] ellipse() + - [ ] ellipse(x: i32, y: i32, radiusX: i32, radiusY: i32, rotation: i32, startAngle: i32, endAngle: i32) + - [ ] ellipse(x: i32, y: i32, radiusX: i32, radiusY: i32, rotation: i32, startAngle: i32, endAngle: i32, counterclockwise: bool) + - [ ] rect(x: i32, y: i32, w: i32, h: i32) + - [ ] roundRect() + - [ ] roundRect(x: i32, y: i32, w: i32, h: i32) + - [ ] roundRect(x: i32, y: i32, w: i32, h: i32, radii: i32) + - [ ] roundRect(x: i32, y: i32, w: i32, h: i32, radii: [i32; 4]) + - [ ] fill() + - [ ] fill() + - [ ] fill(fillRule: CanvasFillRule) + - [ ] stroke() + - [ ] clip() + - [ ] clip() + - [ ] clip(fillRule: CanvasFillRule) + - [ ] isPointInPath() + - [ ] isPointInPath(x: i32, y: i32) + - [ ] isPointInPath(x: i32, y: i32, fillRule: CanvasFillRule) + - [ ] rotate(angle: f32) + - [ ] scale(x: f32, y: f32) + - [ ] translate(x: i32, y: i32) + - [ ] transform(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32) + - [ ] setTransform() + - [ ] setTransform() + - [ ] setTransform(transform: DomMatrix) + - [ ] setTransform(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32) + - [ ] getTransform() -> DomMatrix + - [ ] resetTransform() + - [ ] drawImage() + - [ ] drawImage(image: Either, dx: i32, dy: i32) + - [ ] drawImage(image: Either, dx: i32, dy: i32, dw: i32, dh: i32) + - [ ] drawImage(image: Either, sx: i32, sy: i32, sw: i32, sh: i32, dx: i32, dy: i32, dw: i32, dh: i32) + - [ ] createImageData() + - [ ] createImageData(sw: i32, sh: i32) -> ImageData + - [ ] createImageData(data: ImageData) -> ImageData + - [ ] getImageData(sx: i32, sy: i32, sw: i32, sh: i32) -> ImageData + - [ ] putImageData() + - [ ] putImageData(data: ImageData, dx: i32, dy: i32) + - [ ] putImageData(data: ImageData, dx: i32, dy: i32, dirtyX: i32, dirtyY: i32, dirtyWidth: i32, dirtyHeight: i32) + - [ ] save() + - [ ] restore() + - [ ] addPage() /* PDF Only */ + - [ ] addPage() + - [ ] addPage(w: i32) + - [ ] addPage(w: i32, h: i32) + - [x] patternQuality: Quality = Quality::Good + - [x] quality: Quality = Quality::Good + - [x] textDrawingMode: TextDrawingMode = TextDrawingMode::Path + - [x] antialias: AliasingMode = AliasingMode::Default + - [x] lineWidth: i32 + - [x] lineCap: LineCap + - [x] lineJoin: LineJoin + - [x] miterLimit: i32 + - [x] lineDashOffset: i32 + - [x] font: String + - [x] textAlign: TextAlign + - [x] textBaseline: TextBaseline + - [x] fillStyle: Either3 + - [x] strokeStyle: Either3 + - [x] shadowBlur: i32 + - [x] shadowColor: String + - [x] shadowOffsetX: i32 + - [x] shadowOffsetY: i32 + - [x] currentTransform: DomMatrix + - [x] globalAlpha: i32 + - [x] globalCompositeOperation: GlobalCompositeOperation + - [x] imageSmoothingEnabled: bool + - [x] canvas: Canvas +- [x] ImageData + - [x] new() + - [x] new(width: i32, height: i32) + - [x] new(data: Uint8ClampedArray, width: i32) + - [x] new(data: Uint8ClampedArray, width: i32, height: i32) + - [x] data: Uint8ClampedArray + - [x] width: i32 + - [x] height: i32 +- [x] CanvasGradient + - [x] addColorStop(offset: i32, color: String) +- [x] CanvasPattern **NOTE: Removed, `raqote` does not support this, and there are other options.** + - [x] setTransform() + - [x] setTransform() + - [x] setTransform(matrix: DomMatrix) +- [x] Image + - [x] src: Either + - [x] dataMode: ImageMode + - [x] width: i32 + - [x] height: i32 + - [x] complete: bool + - [x] naturalWidth: i32 + - [x] naturalHeight: i32 +- [x] DomMatrix + - [x] new() + - [x] new(init: String) + - [x] new(init: Vec) + - [x] toString() + - [x] multiply(other: DomMatrix) -> DomMatrix + - [x] multiplySelf(other: DomMatrix) -> DomMatrix + - [x] preMultiplySelf(other: DomMatrix) -> DomMatrix + - [x] translate(tx: i32, ty: i32, tz: i32) -> DomMatrix + - [x] translateSelf(tx: i32, ty: i32, tz: i32) -> DomMatrix + - [x] scale(scaleX: i32, scaleY: i32, scaleZ: i32, originX: i32, originY: i32, originZ: i32) -> DomMatrix + - [x] scale3d(scale: i32, originX: i32, originY: i32, originZ: i32) -> DomMatrix + - [x] scale3dSelf(scale: i32, originX: i32, originY: i32, originZ: i32) -> DomMatrix + - [x] scaleSelf(scaleX: i32, scaleY: i32, scaleZ: i32, originX: i32, originY: i32, originZ: i32) -> DomMatrix + - [x] rotateFromVector(x: i32, y: i32) -> DomMatrix + - [x] rotateFromVectorSelf(x: i32, y: i32) -> DomMatrix + - [x] rotate(rotX: i32, rotY: i32, rotZ: i32) -> DomMatrix + - [x] rotateSelf(rotX: i32, rotY: i32, rotZ: i32) -> DomMatrix + - [x] rotateAxisAngle(x: i32, y: i32, z: i32, angle: i32) -> DomMatrix + - [x] rotateAxisAngleSelf(x: i32, y: i32, z: i32, angle: i32) -> DomMatrix + - [x] skewX(sx: i32) -> DomMatrix + - [x] skewXSelf(sx: i32) -> DomMatrix + - [x] skewY(sy: i32) -> DomMatrix + - [x] skewYSelf(sy: i32) -> DomMatrix + - [x] flipX() -> DomMatrix + - [x] flipY() -> DomMatrix + - [x] inverse() -> DomMatrix + - [x] invertSelf() -> DomMatrix + - [x] setMatrixValue(transformList: string) -> DomMatrix + - [x] transformPoint(point: DomPoint) -> DomPoint + - [x] toFloat32Array() -> Float32Array + - [x] toFloat64Array() -> Float64Array + - [x] is2D: bool (READ ONLY) + - [x] isIdentity: bool (READ ONLY) + - [x] a: i32 + - [x] b: i32 + - [x] c: i32 + - [x] d: i32 + - [x] e: i32 + - [x] f: i32 + - [x] m11: i32 + - [x] m12: i32 + - [x] m13: i32 + - [x] m14: i32 + - [x] m21: i32 + - [x] m22: i32 + - [x] m23: i32 + - [x] m24: i32 + - [x] m31: i32 + - [x] m32: i32 + - [x] m33: i32 + - [x] m34: i32 + - [x] m41: i32 + - [x] m42: i32 + - [x] m43: i32 + - [x] m44: i32 + - [x] + Traits: + - [x] std::ops::Mul + - [x] std::ops::MulAssign + - [x] From + - [x] From + - [x] From +- [x] DomPoint + - [x] w: i32 + - [x] x: i32 + - [x] y: i32 + - [x] z: i32 +- [x] enum FillRule + - [x] EvenOdd + - [x] NonZero +- [x] enum Repetition + - [x] Repeat + - [x] RepeatX + - [x] RepeatY + - [x] NoRepeat + - [x] None +- [x] enum TextAlign + - [x] Center + - [x] End + - [x] Left + - [x] Right + - [x] Start +- [x] enum TextBaseline + - [x] Alphabetic + - [x] Bottom + - [x] Hanging + - [x] Ideographic + - [x] Middle + - [x] Top +- [x] enum LineCap + - [x] Butt + - [x] Round + - [x] Square +- [x] enum LineJoin + - [x] Bevel + - [x] Miter + - [x] Round +- [x] enum GlobalCompositeOperation + - [x] Clear + - [x] Copy + - [x] Destination + - [x] SourceOver + - [x] DestinationOver + - [x] SourceIn + - [x] DestinationIn + - [x] SourceOut + - [x] DestinationOut + - [x] SourceAtop + - [x] DestinationAtop + - [x] Xor + - [x] Lighter + - [x] Normal + - [x] Multiply + - [x] Screen + - [x] Overlay + - [x] Darken + - [x] Lighten + - [x] ColorDodge + - [x] ColorBurn + - [x] HardLight + - [x] SoftLight + - [x] Difference + - [x] Exclusion + - [x] Hue + - [x] Saturation + - [x] Color + - [x] Luminosity + - [x] Saturate +- [x] TextMetrics + - [x] actualBoundingBoxAscent: i32 + - [x] actualBoundingBoxDescent: i32 + - [x] actualBoundingBoxLeft: i32 + - [x] actualBoundingBoxRight: i32 + - [x] fontBoundingBoxAscent: i32 + - [x] fontBoundingBoxDescent: i32 + - [x] width: i32 +- [x] enum ImageKind + - [x] Image + - [x] Pdf + - [x] Svg +- [x] enum ImageMode (bitflags) + - [x] Image = 0 + - [x] Mime = 1 +- [x] struct FontOptions (builder) + - [x] family: String + - [x] weight: Option, + - [x] style: Option, +- [x] enum BufferConfig (builder) **NOTE: This was changed to be an `Either3`** + - [x] Jpeg(JpegConfig) + - [x] Png(PngConfig) + - [x] Pdf(PdfConfig) +- [x] enum PngFilters (bitflags) + - [x] NoFilters = 0 + - [x] All = 1 + - [x] None = 2 + - [x] Sub = 3 + - [x] Up = 4 + - [x] Avg = 5 + - [x] Paeth = 6 +- [x] struct JpegConfig + - [x] quality: f32 = 0.75 + - [x] progressive: bool = false + - [x] chromaSubsampling: bool = true +- [x] struct PngConfig + - [x] compressionLevel: u8 = 6 + - [x] filters: u8 = PngFilters::All + - [x] palette: Option> + - [x] backgroundIndex: i32 + - [x] resolution: Option +- [x] struct PdfConfig + - [x] title: Option + - [x] author: Option + - [x] subject: Option + - [x] keywords: Option + - [x] creator: Option + - [x] creationDate: Date + - [x] modDate: Option +- [x] enum Quality + - [x] Fast + - [x] Good + - [x] Best + - [x] Nearest + - [x] Bilinear +- [x] enum TextDrawingMode + - [x] Path + - [x] Glyph +- [x] enum AliasingMode + - [x] Default + - [x] None + - [x] Gray + - [x] Subpixel +- [x] enum PixelFormat + - [x] Rgba32 + - [x] Rgb24 + - [x] A8 + - [x] Rgb16_565 + - [x] A1 + - [x] Rgb30 +- [x] struct ContextSettings **NOTE: Removed, it's redundant and doesn't change anything.** + - [x] alpha: bool = false + - [x] pixelFormat: Option +- [x] createCanvas() + - [x] createCanvas(width: i32, height: i32) -> Canvas + - [x] createCanvas(width: i32, height: i32, kind: ImageKind) -> Canvas +- [x] createImageData() + - [x] createImageData(width: i32, height: i32) -> ImageData + - [x] createImageData(data: Uint8ClampedArray, width: i32) -> ImageData **NOTE: Modified argument order** + - [x] createImageData(data: Uint8ClampedArray, width: i32, height: i32) -> ImageData **NOTE: Modified argument order** + - [x] createImageData(data: Vec, width: i32) -> ImageData **NOTE: Modified argument order** + - [x] createImageData(data: Vec, width: i32, height: i32) -> ImageData **NOTE: Modified argument order** +- [ ] async loadImage(url: string) -> Image +- [ ] registerFont(path: string, opts: FontOptions) diff --git a/examples/backends.js b/examples/backends.js deleted file mode 100644 index dee41efd5..000000000 --- a/examples/backends.js +++ /dev/null @@ -1,18 +0,0 @@ -const fs = require('fs') -const { resolve } = require('path') - -const Canvas = require('..') - -const imagebackend = new Canvas.backends.ImageBackend(800, 600) - -const canvas = new Canvas.Canvas(imagebackend) -const ctx = canvas.getContext('2d') - -console.log('Width: ' + canvas.width + ', Height: ' + canvas.height) - -ctx.fillStyle = '#00FF00' -ctx.fillRect(50, 50, 100, 100) - -const outPath = resolve(__dirname, 'rectangle.png') - -canvas.createPNGStream().pipe(fs.createWriteStream(outPath)) diff --git a/examples/clock.js b/examples/clock.js deleted file mode 100644 index 240ed9d24..000000000 --- a/examples/clock.js +++ /dev/null @@ -1,113 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -function getX (angle) { - return -Math.sin(angle + Math.PI) -} - -function getY (angle) { - return Math.cos(angle + Math.PI) -} - -function clock (ctx) { - let x, y, i - const now = new Date() - - ctx.clearRect(0, 0, 320, 320) - - ctx.save() - - ctx.translate(160, 160) - ctx.beginPath() - ctx.lineWidth = 14 - ctx.strokeStyle = '#325FA2' - ctx.fillStyle = '#eeeeee' - ctx.arc(0, 0, 142, 0, Math.PI * 2, true) - ctx.stroke() - ctx.fill() - - // Hour marks - ctx.lineWidth = 8 - ctx.strokeStyle = '#000000' - for (i = 0; i < 12; i++) { - x = getX(Math.PI / 6 * i) - y = getY(Math.PI / 6 * i) - ctx.beginPath() - ctx.moveTo(x * 100, y * 100) - ctx.lineTo(x * 125, y * 125) - ctx.stroke() - } - - // Minute marks - ctx.lineWidth = 5 - ctx.strokeStyle = '#000000' - for (i = 0; i < 60; i++) { - if (i % 5 !== 0) { - x = getX(Math.PI / 30 * i) - y = getY(Math.PI / 30 * i) - ctx.beginPath() - ctx.moveTo(x * 117, y * 117) - ctx.lineTo(x * 125, y * 125) - ctx.stroke() - } - } - - const sec = now.getSeconds() - const min = now.getMinutes() - const hr = now.getHours() % 12 - - ctx.fillStyle = 'black' - - // Write hours - x = getX(hr * (Math.PI / 6) + (Math.PI / 360) * min + (Math.PI / 21600) * sec) - y = getY(hr * (Math.PI / 6) + (Math.PI / 360) * min + (Math.PI / 21600) * sec) - ctx.lineWidth = 14 - ctx.beginPath() - ctx.moveTo(x * -20, y * -20) - ctx.lineTo(x * 80, y * 80) - ctx.stroke() - - // Write minutes - x = getX((Math.PI / 30) * min + (Math.PI / 1800) * sec) - y = getY((Math.PI / 30) * min + (Math.PI / 1800) * sec) - - ctx.lineWidth = 10 - ctx.beginPath() - ctx.moveTo(x * -28, y * -28) - ctx.lineTo(x * 112, y * 112) - ctx.stroke() - - // Write seconds - x = getX(sec * Math.PI / 30) - y = getY(sec * Math.PI / 30) - ctx.strokeStyle = '#D40000' - ctx.fillStyle = '#D40000' - ctx.lineWidth = 6 - ctx.beginPath() - ctx.moveTo(x * -30, y * -30) - ctx.lineTo(x * 83, y * 83) - ctx.stroke() - ctx.beginPath() - ctx.arc(0, 0, 10, 0, Math.PI * 2, true) - ctx.fill() - ctx.beginPath() - ctx.arc(x * 95, y * 95, 10, 0, Math.PI * 2, true) - ctx.stroke() - ctx.fillStyle = '#555' - ctx.arc(0, 0, 3, 0, Math.PI * 2, true) - ctx.fill() - - ctx.restore() -} - -module.exports = clock - -if (require.main === module) { - const canvas = Canvas.createCanvas(320, 320) - const ctx = canvas.getContext('2d') - - clock(ctx) - - canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'clock.png'))) -} diff --git a/examples/crop.js b/examples/crop.js deleted file mode 100644 index c1ade470a..000000000 --- a/examples/crop.js +++ /dev/null @@ -1,28 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('canvas') - -const img = new Canvas.Image() - -img.onerror = function (err) { - throw err -} - -img.onload = function () { - const w = img.width / 2 - const h = img.height / 2 - const canvas = Canvas.createCanvas(w, h) - const ctx = canvas.getContext('2d') - - ctx.drawImage(img, 0, 0, w, h, 0, 0, w, h) - - const out = fs.createWriteStream(path.join(__dirname, 'crop.jpg')) - const stream = canvas.createJPEGStream({ - bufsize: 2048, - quality: 80 - }) - - stream.pipe(out) -} - -img.src = path.join(__dirname, 'images', 'squid.png') diff --git a/examples/fill-evenodd.js b/examples/fill-evenodd.js deleted file mode 100644 index 3823ef4e6..000000000 --- a/examples/fill-evenodd.js +++ /dev/null @@ -1,13 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const canvas = Canvas.createCanvas(100, 100) -const ctx = canvas.getContext('2d') - -ctx.fillStyle = '#f00' -ctx.rect(0, 0, 100, 50) -ctx.arc(50, 50, 50, 0, 2 * Math.PI) -ctx.fill('evenodd') - -canvas.createJPEGStream().pipe(fs.createWriteStream(path.join(__dirname, '/fill-evenodd.jpg'))) diff --git a/examples/font.js b/examples/font.js deleted file mode 100644 index d2a37b825..000000000 --- a/examples/font.js +++ /dev/null @@ -1,34 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -function fontFile (name) { - return path.join(__dirname, '/pfennigFont/', name) -} - -// Pass each font, including all of its individual variants if there are any, to -// `registerFont`. When you set `ctx.font`, refer to the styles and the family -// name as it is embedded in the TTF. If you aren't sure, open the font in -// FontForge and visit Element -> Font Information and copy the Family Name -Canvas.registerFont(fontFile('Pfennig.ttf'), { family: 'pfennigFont' }) -Canvas.registerFont(fontFile('PfennigBold.ttf'), { family: 'pfennigFont', weight: 'bold' }) -Canvas.registerFont(fontFile('PfennigItalic.ttf'), { family: 'pfennigFont', style: 'italic' }) -Canvas.registerFont(fontFile('PfennigBoldItalic.ttf'), { family: 'pfennigFont', weight: 'bold', style: 'italic' }) - -const canvas = Canvas.createCanvas(320, 320) -const ctx = canvas.getContext('2d') - -ctx.font = 'normal normal 50px Helvetica' - -ctx.fillText('Quo Vaids?', 0, 70) - -ctx.font = 'bold 50px pfennigFont' -ctx.fillText('Quo Vaids?', 0, 140, 100) - -ctx.font = 'italic 50px pfennigFont' -ctx.fillText('Quo Vaids?', 0, 210) - -ctx.font = 'bold italic 50px pfennigFont' -ctx.fillText('Quo Vaids?', 0, 280) - -canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'font.png'))) diff --git a/examples/globalAlpha.js b/examples/globalAlpha.js deleted file mode 100644 index e618c0b10..000000000 --- a/examples/globalAlpha.js +++ /dev/null @@ -1,32 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const canvas = Canvas.createCanvas(150, 150) -const ctx = canvas.getContext('2d') - -ctx.fillStyle = '#FD0' -ctx.fillRect(0, 0, 75, 75) - -ctx.fillStyle = '#6C0' -ctx.fillRect(75, 0, 75, 75) - -ctx.fillStyle = '#09F)' -ctx.fillRect(0, 75, 75, 75) - -ctx.fillStyle = '#F30' -ctx.fillRect(75, 75, 150, 150) - -ctx.fillStyle = '#FFF' - -// set transparency value -ctx.globalAlpha = 0.2 - -// Draw semi transparent circles -for (let i = 0; i < 7; i++) { - ctx.beginPath() - ctx.arc(75, 75, 10 + 10 * i, 0, Math.PI * 2, true) - ctx.fill() -} - -canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'globalAlpha.png'))) diff --git a/examples/gradients.js b/examples/gradients.js deleted file mode 100644 index f504258c2..000000000 --- a/examples/gradients.js +++ /dev/null @@ -1,27 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const canvas = Canvas.createCanvas(320, 320) -const ctx = canvas.getContext('2d') - -// Create gradients -const lingrad = ctx.createLinearGradient(0, 0, 0, 150) -lingrad.addColorStop(0, '#00ABEB') -lingrad.addColorStop(0.5, '#fff') -lingrad.addColorStop(0.5, '#26C000') -lingrad.addColorStop(1, '#fff') - -const lingrad2 = ctx.createLinearGradient(0, 50, 0, 95) -lingrad2.addColorStop(0.5, '#000') -lingrad2.addColorStop(1, 'rgba(0,0,0,0)') - -// assign gradients to fill and stroke styles -ctx.fillStyle = lingrad -ctx.strokeStyle = lingrad2 - -// draw shapes -ctx.fillRect(10, 10, 130, 130) -ctx.strokeRect(50, 50, 50, 50) - -canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'gradients.png'))) diff --git a/examples/grayscale-image.js b/examples/grayscale-image.js deleted file mode 100644 index ce3ffa06c..000000000 --- a/examples/grayscale-image.js +++ /dev/null @@ -1,18 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const Image = Canvas.Image -const canvas = Canvas.createCanvas(288, 288) -const ctx = canvas.getContext('2d') - -const img = new Image() -img.onload = () => { - ctx.drawImage(img, 0, 0) - canvas.createJPEGStream().pipe(fs.createWriteStream(path.join(__dirname, 'passedThroughGrayscale.jpg'))) -} -img.onerror = err => { - throw err -} - -img.src = path.join(__dirname, 'images', 'grayscaleImage.jpg') diff --git a/examples/image-caption-overlay.js b/examples/image-caption-overlay.js deleted file mode 100644 index e156b42b8..000000000 --- a/examples/image-caption-overlay.js +++ /dev/null @@ -1,87 +0,0 @@ -import { createWriteStream } from 'fs' -import pify from 'pify' -import imageSizeOf from 'image-size' -import { createCanvas, loadImage, Image } from 'canvas' - -const imageSizeOfP = pify(imageSizeOf) - -function createImageFromBuffer (buffer) { - const image = new Image() - image.src = buffer - - return image -} - -function createCaptionOverlay ({ - text, - width, - height, - font = 'Arial', - fontSize = 48, - captionHeight = 120, - decorateCaptionTextFillStyle = null, - decorateCaptionFillStyle = null, - offsetX = 0, - offsetY = 0 -}) { - const canvas = createCanvas(width, height) - const ctx = canvas.getContext('2d') - - const createGradient = (first, second) => { - const grd = ctx.createLinearGradient(width, captionY, width, height) - grd.addColorStop(0, first) - grd.addColorStop(1, second) - - return grd - } - - // Hold computed caption position - const captionX = offsetX - const captionY = offsetY + height - captionHeight - const captionTextX = captionX + (width / 2) - const captionTextY = captionY + (captionHeight / 2) - - // Fill caption rect - ctx.fillStyle = decorateCaptionFillStyle - ? decorateCaptionFillStyle(ctx) - : createGradient('rgba(0, 0, 0, 0)', 'rgba(0, 0, 0, 0.45)') - ctx.fillRect(captionX, captionY, width, captionHeight) - - // Fill caption text - ctx.textBaseline = 'middle' - ctx.textAlign = 'center' - ctx.font = `${fontSize}px ${font}` - ctx.fillStyle = decorateCaptionTextFillStyle - ? decorateCaptionTextFillStyle(ctx) - : 'white' - ctx.fillText(text, captionTextX, captionTextY) - - return createImageFromBuffer(canvas.toBuffer()) -} - -(async () => { - try { - const source = 'images/lime-cat.jpg' - const { width, height } = await imageSizeOfP(source) - const canvas = createCanvas(width, height) - const ctx = canvas.getContext('2d') - - // Draw base image - const image = await loadImage(source) - ctx.drawImage(image, 0, 0) - - // Draw caption overlay - const overlay = await createCaptionOverlay({ - text: 'Hello!', - width, - height - }) - ctx.drawImage(overlay, 0, 0) - - // Output to `.png` file - canvas.createPNGStream().pipe(createWriteStream('foo.png')) - } catch (err) { - console.log(err) - process.exit(1) - } -})() diff --git a/examples/image-src-svg.js b/examples/image-src-svg.js deleted file mode 100644 index 88a5365ed..000000000 --- a/examples/image-src-svg.js +++ /dev/null @@ -1,18 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const canvas = Canvas.createCanvas(500, 500) -const ctx = canvas.getContext('2d') -ctx.fillStyle = 'white' -ctx.fillRect(0, 0, 500, 500) - -Canvas.loadImage(path.join(__dirname, 'images', 'small-svg.svg')) - .then(image => { - image.width *= 1.5 - image.height *= 1.5 - ctx.drawImage(image, canvas.width / 2 - image.width / 2, canvas.height / 2 - image.height / 2) - - canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'image-src-svg.png'))) - }) - .catch(e => console.error(e)) diff --git a/examples/image-src-url.js b/examples/image-src-url.js deleted file mode 100644 index fcad291df..000000000 --- a/examples/image-src-url.js +++ /dev/null @@ -1,18 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const Image = Canvas.Image -const canvas = Canvas.createCanvas(200, 300) -const ctx = canvas.getContext('2d') - -const img = new Image() -img.onload = () => { - ctx.drawImage(img, 0, 0) - canvas.createPNGStream() - .pipe(fs.createWriteStream(path.join(__dirname, 'image-src-url.png'))) -} -img.onerror = err => { - console.log(err) -} -img.src = 'http://picsum.photos/200/300' diff --git a/examples/image-src.js b/examples/image-src.js deleted file mode 100644 index 704b5d39b..000000000 --- a/examples/image-src.js +++ /dev/null @@ -1,41 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const Image = Canvas.Image -const canvas = Canvas.createCanvas(200, 200) -const ctx = canvas.getContext('2d') - -ctx.fillRect(0, 0, 150, 150) -ctx.save() - -ctx.fillStyle = '#09F' -ctx.fillRect(15, 15, 120, 120) - -ctx.save() -ctx.fillStyle = '#FFF' -ctx.globalAlpha = 0.5 -ctx.fillRect(30, 30, 90, 90) - -ctx.restore() -ctx.fillRect(45, 45, 60, 60) - -ctx.restore() -ctx.fillRect(60, 60, 30, 30) - -const img = new Image() -img.onerror = err => { throw err } -img.onload = () => { - img.src = canvas.toBuffer() - ctx.drawImage(img, 0, 0, 50, 50) - ctx.drawImage(img, 50, 0, 50, 50) - ctx.drawImage(img, 100, 0, 50, 50) - - const img2 = new Image() - img2.onload = () => { - ctx.drawImage(img2, 30, 50, img2.width / 4, img2.height / 4) - canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'image-src.png'))) - } - img2.onerror = err => { throw err } - img2.src = path.join(__dirname, 'images', 'squid.png') -} diff --git a/examples/images/grayscaleImage.jpg b/examples/images/grayscaleImage.jpg deleted file mode 100644 index 672c2a0fa..000000000 Binary files a/examples/images/grayscaleImage.jpg and /dev/null differ diff --git a/examples/images/lime-cat.jpg b/examples/images/lime-cat.jpg deleted file mode 100644 index 5db7f2cac..000000000 Binary files a/examples/images/lime-cat.jpg and /dev/null differ diff --git a/examples/images/small-svg.svg b/examples/images/small-svg.svg deleted file mode 100755 index abf449bce..000000000 --- a/examples/images/small-svg.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/examples/images/squid.png b/examples/images/squid.png deleted file mode 100644 index 254068cdf..000000000 Binary files a/examples/images/squid.png and /dev/null differ diff --git a/examples/indexed-png-alpha.js b/examples/indexed-png-alpha.js deleted file mode 100644 index 79a8a5d41..000000000 --- a/examples/indexed-png-alpha.js +++ /dev/null @@ -1,34 +0,0 @@ -const Canvas = require('..') -const fs = require('fs') -const path = require('path') -const canvas = Canvas.createCanvas(200, 200) -const ctx = canvas.getContext('2d', { pixelFormat: 'A8' }) - -// Matches the "fillStyle" browser test, made by using alpha fillStyle value -const palette = new Uint8ClampedArray(37 * 4) -let i, j -let k = 0 -// First value is opaque white: -palette[k++] = 255 -palette[k++] = 255 -palette[k++] = 255 -palette[k++] = 255 -for (i = 0; i < 6; i++) { - for (j = 0; j < 6; j++) { - palette[k++] = Math.floor(255 - 42.5 * i) - palette[k++] = Math.floor(255 - 42.5 * j) - palette[k++] = 0 - palette[k++] = 255 - } -} -for (i = 0; i < 6; i++) { - for (j = 0; j < 6; j++) { - const index = i * 6 + j + 1.5 // 0.5 to bias rounding - const fraction = index / 255 - ctx.fillStyle = 'rgba(0,0,0,' + fraction + ')' - ctx.fillRect(j * 25, i * 25, 25, 25) - } -} - -canvas.createPNGStream({ palette: palette }) - .pipe(fs.createWriteStream(path.join(__dirname, 'indexed2.png'))) diff --git a/examples/indexed-png-image-data.js b/examples/indexed-png-image-data.js deleted file mode 100644 index 253835f0e..000000000 --- a/examples/indexed-png-image-data.js +++ /dev/null @@ -1,39 +0,0 @@ -const Canvas = require('..') -const fs = require('fs') -const path = require('path') -const canvas = Canvas.createCanvas(200, 200) -const ctx = canvas.getContext('2d', { pixelFormat: 'A8' }) - -// Matches the "fillStyle" browser test, made by manipulating imageData -const palette = new Uint8ClampedArray(37 * 4) -let k = 0 -let i, j -// First value is opaque white: -palette[k++] = 255 -palette[k++] = 255 -palette[k++] = 255 -palette[k++] = 255 -for (i = 0; i < 6; i++) { - for (j = 0; j < 6; j++) { - palette[k++] = Math.floor(255 - 42.5 * i) - palette[k++] = Math.floor(255 - 42.5 * j) - palette[k++] = 0 - palette[k++] = 255 - } -} -const idata = ctx.getImageData(0, 0, 200, 200) -for (i = 0; i < 6; i++) { - for (j = 0; j < 6; j++) { - const index = j * 6 + i - // fill rect: - for (let xr = j * 25; xr < j * 25 + 25; xr++) { - for (let yr = i * 25; yr < i * 25 + 25; yr++) { - idata.data[xr * 200 + yr] = index + 1 - } - } - } -} -ctx.putImageData(idata, 0, 0) - -canvas.createPNGStream({ palette: palette }) - .pipe(fs.createWriteStream(path.join(__dirname, 'indexed.png'))) diff --git a/examples/kraken.js b/examples/kraken.js deleted file mode 100644 index ed2f25e8c..000000000 --- a/examples/kraken.js +++ /dev/null @@ -1,106 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const Image = Canvas.Image -const canvas = Canvas.createCanvas(400, 267) -const ctx = canvas.getContext('2d') - -const img = new Image() - -img.onload = function () { - ctx.drawImage(img, 0, 0) -} - -img.onerror = err => { throw err } - -img.src = path.join(__dirname, 'images', 'squid.png') - -const sigma = 10 // radius -let kernel, kernelSize, kernelSum - -function buildKernel () { - let i, j, g - const ss = sigma * sigma - const factor = 2 * Math.PI * ss - - kernel = [[]] - - i = 0 - do { - g = Math.exp(-(i * i) / (2 * ss)) / factor - if (g < 1e-3) break - kernel[0].push(g) - ++i - } while (i < 7) - - kernelSize = i - for (j = 1; j < kernelSize; ++j) { - kernel.push([]) - for (i = 0; i < kernelSize; ++i) { - g = Math.exp(-(i * i + j * j) / (2 * ss)) / factor - kernel[j].push(g) - } - } - - kernelSum = 0 - for (j = 1 - kernelSize; j < kernelSize; ++j) { - for (i = 1 - kernelSize; i < kernelSize; ++i) { - kernelSum += kernel[Math.abs(j)][Math.abs(i)] - } - } -} - -function blurTest () { - let x, y, i, j - let r, g, b, a - - console.log('... running') - - const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height) - const data = imgData.data - const width = imgData.width - const height = imgData.height - - const startTime = (new Date()).getTime() - - for (y = 0; y < height; ++y) { - for (x = 0; x < width; ++x) { - r = 0 - g = 0 - b = 0 - a = 0 - - for (j = 1 - kernelSize; j < kernelSize; ++j) { - if (y + j < 0 || y + j >= height) continue - - for (i = 1 - kernelSize; i < kernelSize; ++i) { - if (x + i < 0 || x + i >= width) continue - - r += data[4 * ((y + j) * width + (x + i)) + 0] * kernel[Math.abs(j)][Math.abs(i)] - g += data[4 * ((y + j) * width + (x + i)) + 1] * kernel[Math.abs(j)][Math.abs(i)] - b += data[4 * ((y + j) * width + (x + i)) + 2] * kernel[Math.abs(j)][Math.abs(i)] - a += data[4 * ((y + j) * width + (x + i)) + 3] * kernel[Math.abs(j)][Math.abs(i)] - } - } - - data[4 * (y * width + x) + 0] = r / kernelSum - data[4 * (y * width + x) + 1] = g / kernelSum - data[4 * (y * width + x) + 2] = b / kernelSum - data[4 * (y * width + x) + 3] = a / kernelSum - } - } - - const finishTime = Date.now() - startTime - for (i = 0; i < data.length; i++) { - imgData.data[i] = data[i] - } - - ctx.putImageData(imgData, 0, 0) - console.log('... finished in %dms', finishTime) -} - -buildKernel() -blurTest() - -canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'kraken.png'))) diff --git a/examples/live-clock.js b/examples/live-clock.js deleted file mode 100644 index 365680b84..000000000 --- a/examples/live-clock.js +++ /dev/null @@ -1,19 +0,0 @@ -const http = require('http') -const Canvas = require('..') - -const clock = require('./clock') - -const canvas = Canvas.createCanvas(320, 320) -const ctx = canvas.getContext('2d') - -http.createServer(function (req, res) { - clock(ctx) - - res.writeHead(200, { 'Content-Type': 'text/html' }) - res.end( - '' + - '' - ) -}).listen(3000, function () { - console.log('Server started on port 3000') -}) diff --git a/examples/multi-page-pdf.js b/examples/multi-page-pdf.js deleted file mode 100644 index 46b8237e7..000000000 --- a/examples/multi-page-pdf.js +++ /dev/null @@ -1,42 +0,0 @@ -const fs = require('fs') -const Canvas = require('..') - -const canvas = Canvas.createCanvas(500, 500, 'pdf') -const ctx = canvas.getContext('2d') - -let x, y - -function reset () { - x = 50 - y = 80 -} - -function h1 (str) { - ctx.font = '22px Helvetica' - ctx.fillText(str, x, y) -} - -function p (str) { - ctx.font = '10px Arial' - ctx.fillText(str, x, (y += 20)) -} - -reset() -h1('PDF demo') -p('Multi-page PDF demonstration') -ctx.addPage() - -reset() -h1('Page #2') -p('This is the second page') -ctx.addPage(250, 250) // create a page with half the size of the canvas - -reset() -h1('Page #3') -p('This is the third page') - -fs.writeFile('out.pdf', canvas.toBuffer(), function (err) { - if (err) throw err - - console.log('created out.pdf') -}) diff --git a/examples/pango-glyphs.js b/examples/pango-glyphs.js deleted file mode 100644 index eddbbdb4a..000000000 --- a/examples/pango-glyphs.js +++ /dev/null @@ -1,22 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const canvas = Canvas.createCanvas(400, 100) -const ctx = canvas.getContext('2d') - -ctx.globalAlpha = 1 -ctx.font = 'normal 16px Impact' - -ctx.textBaseline = 'top' - -// Note this demo depends node-canvas being installed with pango support, -// and your system having installed fonts supporting the glyphs. - -ctx.fillStyle = '#000' -ctx.fillText('English: Some text in Impact.', 10, 10) -ctx.fillText('Japanese: 図書館の中では、静かにする。', 10, 30) -ctx.fillText('Arabic: اللغة العربية هي أكثر اللغات تحدثا ضمن', 10, 50) -ctx.fillText('Korean: 모타는사라미 못하는 사람이', 10, 70) - -canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'pango-glyphs.png'))) diff --git a/examples/pdf-images.js b/examples/pdf-images.js deleted file mode 100644 index 2753dcb58..000000000 --- a/examples/pdf-images.js +++ /dev/null @@ -1,58 +0,0 @@ -const fs = require('fs') -const { Image, createCanvas } = require('..') - -const canvas = createCanvas(500, 500, 'pdf') -const ctx = canvas.getContext('2d') - -let x, y - -function reset () { - x = 50 - y = 80 -} - -function h1 (str) { - ctx.font = '22px Helvetica' - ctx.fillText(str, x, y) -} - -function p (str) { - ctx.font = '10px Arial' - ctx.fillText(str, x, (y += 20)) -} - -function img (src) { - const img = new Image() - img.src = src - ctx.drawImage(img, x, (y += 20)) - y += img.height -} - -reset() -h1('PDF image demo') -p('This is an image embedded in a PDF') -img('examples/images/squid.png') -p('Figure 1.0 - Some squid thing') -ctx.addPage() - -reset() -h1('Lime cat') -p('This is a pretty sweet cat') -img('examples/images/lime-cat.jpg') -p('Figure 1.1 - Lime cat is awesome') -ctx.addPage() - -const buff = canvas.toBuffer('application/pdf', { - title: 'Squid and Cat!', - author: 'Octocat', - subject: 'An example PDF made with node-canvas', - keywords: 'node.js squid cat lime', - creator: 'my app', - modDate: new Date() -}) - -fs.writeFile('out.pdf', buff, function (err) { - if (err) throw err - - console.log('created out.pdf') -}) diff --git a/examples/pfennigFont/FONTLOG.txt b/examples/pfennigFont/FONTLOG.txt deleted file mode 100644 index d05f2e186..000000000 --- a/examples/pfennigFont/FONTLOG.txt +++ /dev/null @@ -1,108 +0,0 @@ -FONTLOG -Pfennig font family -========================== - -This file provides detailed information on the Pfennig family of fonts. -This information should be distributed along with the Pfennig fonts and -any derivative works. - - -Basic Font Information ----------------------- - -Pfennig is a sans-serif font with support for Latin, Cyrillic, Greek and Hebrew -character sets. It contains sufficient characters for Latin-0 through Latin-10, -as well as all modern Cyrillic scripts, the full Vietnamese range, modern Greek, -modern Hebrew, and the Pan-African Alphabet. It supports the standard Roman -ligatures and uses OpenType tables for diacritic placement. - -Pfennig supports the following Unicode ranges: - -Range Description Coverage -.............................................. -U+0020-U+007F Basic Latin Full -U+00A0-U+00FF Latin-1 Supplement Full -U+0100-U+017F Latin Extended-A Full -U+0180-U+024F Latin Extended-B 146/208 -U+0250-U+02AF IPA Extensions 32/96 -U+02B0-U+02FF Spacing Modifiers 18/80 -U+0300-U+036F Combining Diacritics 34/112 -U+0370-U+03FF Greek 74/134 -U+0400-U+04FF Cyrillic 214/256 -U+0500-U+052F Cyrillic Supplement 14/44 -U+0590-U+05FF Hebrew 27/87 -U+1DC0-U+1DFF Comb. Diacritic Supp. 4/43 -U+1E00-U+1EFF Latin Extended Add'l 173/256 -U+2000-U+206F General Punctuation 19/107 -U+2070-U+209F Super/Subscripts 1/42 -U+20A0-U+20CF Currency Symbols 1/26 (Euro sign only) -U+2100-U+214F Letterlike Symbols 2/80 -U+2200-U+22FF Mathematical Operators 2/256 -U+25A0-U+25FF Geometric Shapes 1/96 (Dotted circle only) -U+2C60-U+2C7F Latin Extended-C 5/32 -U+A720-U+A7FF Latin Extended-D 5/129 -U+FB00-U+FB06 Latin Ligatures 5/7 (all except archaic ligatures) - -ChangeLog ---------- - -2012-04-10 Added Cyrillic glyphs for Orok, Khanty, Nenets (in Unicode - pipeline) -2012-04-07 Improved AE ligature and U+A78D; added a few glyphs with - diacritics. -2011-09-24 Added a few African Latin glyphs; improved Cyrillic breve; major - spacing improvements in italics; improved TTF hints. -2010-08-31 Further refinements of Vietnamese range in all faces. -2010-08-04 Added several obscure African letters. Corrected some stacked - diacritics. Corrected proposed codepoint for H with hook. -2010-06-23 Added modern Hebrew and Greek ranges -2010-06-17 Added all anchors needed for diacritic attachment for - Pan-African to upright fonts; italic fonts are by nature unsuitable - for Pan-African due to stylistic clashes (e.g. between a and alpha). - Improved lowercase thorn in all fonts. Added dropped umlaut on A, O - and U in upright fonts, accessible as ss01. -2010-06-04 Finished up requirements for Pan-African Alphabet; - improved Vietnamese italic & bold-italic -2010-04-23 Completed support for all Cyrillic codepoints for modern - orthographies. -2010-04-14 More glyphs: African, modern Pinyin, Amerindian -2010-04-12 Moved non-Unicode glyphs to PUA; added a few more African - glyphs. -2010-04-06 Diacritic improvement in Bold Vietnamese. Additional glyphs - for Skolt Sami, the Pan-Nigerian Alphabet, and various other - African languages. -2010-03-31 Further spacing enhancements in non-italic. Improvements in - Vietnamese range in Medium to prevent excessive diacritic - height. Spacing improvements in italic ligatures. -2009-09-18 Major overhaul of spacing in non-italic -2009-08-06 Added Vietnamese range. -2009-07-30 Kerned Latin ranges. -2009-07-29 Added Cyrillic range. -2009-07-24 Initial release - - -Information for Contributors ----------------------------- - -This font is licensed under the Open Font License (OFL). There is no Reserved -Name clause for the Pfennig font, enabling the free conversion between font -formats. - -You can read more about the OFL here: -http://scripts.sil.org/OFL - -If you'd like to make changes to the original font, you are free to contact -the author of the original font (for contact information, please see the -"Contributors" section below). Glyph changes should be in a FontForge .sfd -file (please make sure your version of FontForge is reasonably up-to-date). -Please send *only* the changed glyphs, not the entire font range. The author -reserves the right to reject or modify any contributions. If your contribution -is accepted, your name will appear in the Contributors section (unless you -specify otherwise). - - -Contributors ------------- - -Daniel Johnson (font maintainer) -il.basso.buffo at gmail dot com diff --git a/examples/pfennigFont/OFL.txt b/examples/pfennigFont/OFL.txt deleted file mode 100644 index 33579b5ca..000000000 --- a/examples/pfennigFont/OFL.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright (c) 2009 - 2012 Daniel Johnson (). - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/examples/pfennigFont/Pfennig.sfd b/examples/pfennigFont/Pfennig.sfd deleted file mode 100644 index c9b2f40e8..000000000 --- a/examples/pfennigFont/Pfennig.sfd +++ /dev/null @@ -1,28053 +0,0 @@ -SplineFontDB: 3.0 -FontName: Pfennig -FullName: Pfennig -FamilyName: Pfennig -Weight: Medium -Copyright: Copyright 2009-2012 by Daniel Johnson. Released under the terms of the SIL Open Font License. -UComments: "2009-7-16: Created." -Version: 20120410 -ItalicAngle: 0 -UnderlinePosition: -204 -UnderlineWidth: 102 -Ascent: 1638 -Descent: 410 -LayerCount: 2 -Layer: 0 0 "Back" 1 -Layer: 1 1 "Fore" 0 -NeedsXUIDChange: 1 -XUID: [1021 1003 1579404955 6722392] -FSType: 0 -OS2Version: 0 -OS2_WeightWidthSlopeOnly: 0 -OS2_UseTypoMetrics: 1 -CreationTime: 1247766582 -ModificationTime: 1334085823 -PfmFamily: 33 -TTFWeight: 500 -TTFWidth: 5 -LineGap: 0 -VLineGap: 0 -OS2TypoAscent: 2174 -OS2TypoAOffset: 0 -OS2TypoDescent: -531 -OS2TypoDOffset: 0 -OS2TypoLinegap: 0 -OS2WinAscent: 2174 -OS2WinAOffset: 0 -OS2WinDescent: 531 -OS2WinDOffset: 0 -HheadAscent: 2174 -HheadAOffset: 0 -HheadDescent: -531 -HheadDOffset: 0 -OS2FamilyClass: 2050 -OS2Vendor: 'PfEd' -Lookup: 1 0 0 "'ss01' Style Set 1 in Latin" {"'ss01' Style Set 1 in Latin-1" } ['ss01' ('latn' <'dflt' > ) ] -Lookup: 1 0 0 "'locl' Localized Forms for Sami" {"'locl' Localized Forms for Sami-1" } ['locl' ('latn' <'LSM ' > 'latn' <'NSM ' > 'latn' <'SKS ' > ) ] -Lookup: 4 0 1 "'liga' Standard Ligatures in Latin lookup 0" {"'liga' Standard Ligatures in Latin lookup 0-1" } ['liga' ('DFLT' <'dflt' > 'latn' <'dflt' > ) ] -Lookup: 262 0 0 "'mkmk' Mark to Mark lookup 2" {"'mkmk' Mark to Mark lookup 2-1" } ['mkmk' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'latn' <'LSM ' 'NSM ' 'SKS ' 'dflt' > ) ] -Lookup: 258 0 0 "'kern' Horizontal Kerning lookup 1" {"'kern' Horizontal Kerning lookup 1-1" } ['kern' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'latn' <'dflt' > ) ] -Lookup: 260 0 0 "'mark' Mark Positioning in Latin lookup 0" {"'mark' Mark Positioning in Latin lookup 0-1" } ['mark' ('DFLT' <'dflt' > 'latn' <'dflt' > ) ] -MarkAttachClasses: 1 -DEI: 91125 -KernClass2: 9 9 "'kern' Horizontal Kerning lookup 1-1" - 109 A L Agrave Aacute Acircumflex Atilde Adieresis Aring Amacron Abreve Aogonek Lacute Lcommaaccent Lcaron Lslash - 529 B C E G H I J K M N R S U X Z Ccedilla Egrave Eacute Ecircumflex Edieresis Ntilde Ugrave Uacute Ucircumflex Udieresis Cacute Ccircumflex Cdotaccent Ccaron Emacron Edotaccent Eogonek Ecaron Gcircumflex Gbreve Gdotaccent Gcommaaccent Hcircumflex Hbar Itilde Imacron Iogonek Idotaccent Jcircumflex Kcommaaccent Nacute Ncommaaccent Ncaron Eng OE Racute Rcommaaccent Rcaron Sacute Scircumflex Scedilla Scaron Utilde Umacron Ubreve Uring Uhungarumlaut Uogonek Zacute Zdotaccent Zcaron Scommaaccent uni1E02 uni1E40 uni1E60 Ebreve Ibreve - 122 D O Eth Ograve Oacute Ocircumflex Otilde Odieresis Oslash Thorn Dcaron Dcroat Omacron Ohungarumlaut uni01EA uni1E0A Obreve - 152 F P T V W Y Yacute Tcommaaccent Tcaron Tbar Wcircumflex Ycircumflex Ydieresis uni021A uni1E1E uni1E56 uni1E6A Wgrave Wacute Wdieresis Ygrave Ohorn Uhorn - 551 a c g h i j k m n q s u x z agrave aacute acircumflex atilde adieresis aring ccedilla igrave iacute icircumflex idieresis ntilde ugrave uacute ucircumflex udieresis amacron abreve aogonek cacute ccircumflex cdotaccent ccaron gcircumflex gbreve gdotaccent gcommaaccent hcircumflex hbar itilde imacron iogonek dotlessi jcircumflex kcommaaccent kgreenlandic nacute ncommaaccent ncaron eng sacute scircumflex scedilla scaron utilde umacron ubreve uring uhungarumlaut uogonek zacute zdotaccent zcaron scommaaccent uni0237 uni1E41 uni1E61 ohorn uhorn ibreve - 200 b e o p egrave eacute ecircumflex edieresis eth ograve oacute ocircumflex otilde odieresis oslash thorn emacron edotaccent eogonek ecaron omacron ohungarumlaut oe uni01EB uni1E03 uni1E57 ebreve obreve - 153 d f l t germandbls dcaron dcroat lacute lcommaaccent lcaron lslash tcommaaccent tcaron tbar uni021B uni1E0B uni1E1F uni1E6B uniFB00 fi fl uniFB03 uniFB04 - 112 r v w y yacute ydieresis racute rcommaaccent rcaron wcircumflex ycircumflex longs wgrave wacute wdieresis ygrave - 90 A J Agrave Aacute Acircumflex Atilde Adieresis Aring AE Amacron Abreve Aogonek Jcircumflex - 551 B D E F H I K L M N P R S U X Z Egrave Eacute Ecircumflex Edieresis Igrave Iacute Icircumflex Idieresis Eth Ntilde Ugrave Uacute Ucircumflex Udieresis Thorn Dcaron Dcroat Emacron Edotaccent Eogonek Ecaron Hcircumflex Hbar Itilde Imacron Iogonek Idotaccent Kcommaaccent Lacute Lcommaaccent Lcaron Lslash Nacute Ncommaaccent Ncaron Eng Racute Rcommaaccent Rcaron Sacute Scircumflex Scedilla Scaron Utilde Umacron Ubreve Uring Uhungarumlaut Uogonek Zacute Zdotaccent Zcaron Scommaaccent uni1E02 uni1E0A uni1E1E uni1E40 uni1E56 uni1E60 Uhorn Ebreve Ibreve - 192 C G O Q Ccedilla Ograve Oacute Ocircumflex Otilde Odieresis Oslash Cacute Ccircumflex Cdotaccent Ccaron Gcircumflex Gbreve Gdotaccent Gcommaaccent Omacron Ohungarumlaut OE uni01EA Ohorn Obreve - 113 T V W Y Tcommaaccent Tcaron Tbar Wcircumflex Ycircumflex Ydieresis uni021A uni1E6A Wgrave Wacute Wdieresis Ygrave - 450 a i j m n p r s u x z agrave aacute acircumflex atilde adieresis aring ae igrave iacute icircumflex idieresis ntilde ugrave uacute ucircumflex udieresis amacron abreve aogonek itilde imacron iogonek dotlessi jcircumflex kgreenlandic nacute ncommaaccent ncaron eng racute rcommaaccent rcaron sacute scircumflex scedilla scaron utilde umacron ubreve uring uhungarumlaut uogonek zacute zdotaccent zcaron scommaaccent uni0237 uni1E41 uni1E61 uhorn ibreve - 185 b f h k l t germandbls thorn hcircumflex hbar kcommaaccent lacute lcommaaccent lcaron lslash tcommaaccent tcaron tbar longs uni021B uni1E03 uni1E1F uni1E6B uniFB00 fi fl uniFB03 uniFB04 - 299 c d e g o q ccedilla egrave eacute ecircumflex edieresis eth ograve oacute ocircumflex otilde odieresis oslash cacute ccircumflex cdotaccent ccaron dcaron dcroat emacron edotaccent eogonek ecaron gcircumflex gbreve gdotaccent gcommaaccent omacron ohungarumlaut oe uni01EB uni1E0B ohorn ebreve obreve - 77 v w y yacute ydieresis wcircumflex ycircumflex wgrave wacute wdieresis ygrave - 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -61 {} -123 {} 0 {} 0 {} 0 {} -61 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -41 {} 0 {} 0 {} -41 {} 0 {} 0 {} 0 {} 0 {} 0 {} -164 {} 41 {} 0 {} 82 {} -41 {} 61 {} -123 {} 0 {} 0 {} 0 {} 0 {} 0 {} -123 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -164 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -123 {} 0 {} 0 {} -123 {} 0 {} 0 {} 0 {} 0 {} -TtTable: prep -PUSHW_1 - 511 -SCANCTRL -PUSHB_1 - 4 -SCANTYPE -EndTTInstrs -LangName: 1033 "" "" "" "" "" "" "" "" "" "" "" "" "" "Copyright (c) 2009, Daniel Johnson (),+AAoA-with Reserved Font Name Pfennig.+AAoACgAA-This Font Software is licensed under the SIL Open Font License, Version 1.1.+AAoA-This license is copied below, and is also available with a FAQ at:+AAoA-http://scripts.sil.org/OFL+AAoACgAK------------------------------------------------------------+AAoA-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007+AAoA------------------------------------------------------------+AAoACgAA-PREAMBLE+AAoA-The goals of the Open Font License (OFL) are to stimulate worldwide+AAoA-development of collaborative font projects, to support the font creation+AAoA-efforts of academic and linguistic communities, and to provide a free and+AAoA-open framework in which fonts may be shared and improved in partnership+AAoA-with others.+AAoACgAA-The OFL allows the licensed fonts to be used, studied, modified and+AAoA-redistributed freely as long as they are not sold by themselves. The+AAoA-fonts, including any derivative works, can be bundled, embedded, +AAoA-redistributed and/or sold with any software provided that any reserved+AAoA-names are not used by derivative works. The fonts and derivatives,+AAoA-however, cannot be released under any other type of license. The+AAoA-requirement for fonts to remain under this license does not apply+AAoA-to any document created using the fonts or their derivatives.+AAoACgAA-DEFINITIONS+AAoAIgAA-Font Software+ACIA refers to the set of files released by the Copyright+AAoA-Holder(s) under this license and clearly marked as such. This may+AAoA-include source files, build scripts and documentation.+AAoACgAi-Reserved Font Name+ACIA refers to any names specified as such after the+AAoA-copyright statement(s).+AAoACgAi-Original Version+ACIA refers to the collection of Font Software components as+AAoA-distributed by the Copyright Holder(s).+AAoACgAi-Modified Version+ACIA refers to any derivative made by adding to, deleting,+AAoA-or substituting -- in part or in whole -- any of the components of the+AAoA-Original Version, by changing formats or by porting the Font Software to a+AAoA-new environment.+AAoACgAi-Author+ACIA refers to any designer, engineer, programmer, technical+AAoA-writer or other person who contributed to the Font Software.+AAoACgAA-PERMISSION & CONDITIONS+AAoA-Permission is hereby granted, free of charge, to any person obtaining+AAoA-a copy of the Font Software, to use, study, copy, merge, embed, modify,+AAoA-redistribute, and sell modified and unmodified copies of the Font+AAoA-Software, subject to the following conditions:+AAoACgAA-1) Neither the Font Software nor any of its individual components,+AAoA-in Original or Modified Versions, may be sold by itself.+AAoACgAA-2) Original or Modified Versions of the Font Software may be bundled,+AAoA-redistributed and/or sold with any software, provided that each copy+AAoA-contains the above copyright notice and this license. These can be+AAoA-included either as stand-alone text files, human-readable headers or+AAoA-in the appropriate machine-readable metadata fields within text or+AAoA-binary files as long as those fields can be easily viewed by the user.+AAoACgAA-3) No Modified Version of the Font Software may use the Reserved Font+AAoA-Name(s) unless explicit written permission is granted by the corresponding+AAoA-Copyright Holder. This restriction only applies to the primary font name as+AAoA-presented to the users.+AAoACgAA-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font+AAoA-Software shall not be used to promote, endorse or advertise any+AAoA-Modified Version, except to acknowledge the contribution(s) of the+AAoA-Copyright Holder(s) and the Author(s) or with their explicit written+AAoA-permission.+AAoACgAA-5) The Font Software, modified or unmodified, in part or in whole,+AAoA-must be distributed entirely under this license, and must not be+AAoA-distributed under any other license. The requirement for fonts to+AAoA-remain under this license does not apply to any document created+AAoA-using the Font Software.+AAoACgAA-TERMINATION+AAoA-This license becomes null and void if any of the above conditions are+AAoA-not met.+AAoACgAA-DISCLAIMER+AAoA-THE FONT SOFTWARE IS PROVIDED +ACIA-AS IS+ACIA, WITHOUT WARRANTY OF ANY KIND,+AAoA-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF+AAoA-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT+AAoA-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE+AAoA-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,+AAoA-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL+AAoA-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING+AAoA-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM+AAoA-OTHER DEALINGS IN THE FONT SOFTWARE." "http://scripts.sil.org/OFL" -GaspTable: 1 65535 3 -Encoding: UnicodeBmp -Compacted: 1 -UnicodeInterp: none -NameList: Adobe Glyph List -DisplaySize: -48 -AntiAlias: 1 -FitToEm: 1 -WinInfo: 756 18 11 -BeginPrivate: 1 -BlueValues 35 [-20 0 901 922 1352 1352 1434 1454] -EndPrivate -Grid --90.1123 1085.44 m 17 - 2228.22 1085.44 l 9 --90.1123 1433.6 m 25 - 2228.22 1433.6 l 25 --90.1123 901.12 m 17 - 2228.22 901.12 l 9 --90.1123 1351.68 m 25 - 2228.22 1351.68 l 25 -EndSplineSet -AnchorClass2: "mktop" "'mkmk' Mark to Mark lookup 2-1" "horn" "'mark' Mark Positioning in Latin lookup 0-1" "bottom" "'mark' Mark Positioning in Latin lookup 0-1" "ogonek" "'mark' Mark Positioning in Latin lookup 0-1" "cedilla" "'mark' Mark Positioning in Latin lookup 0-1" "top" "'mark' Mark Positioning in Latin lookup 0-1" -BeginChars: 65536 1113 - -StartChar: d -Encoding: 100 100 0 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -20 102<403 666> 0 43G<780 944> 819 102<403 659> 1311 41G<780 944> -VStem: 90 164<258 643> 780 164<0 47 208 666 823 1352> -AnchorPoint: "horn" 885 1085 basechar 0 -AnchorPoint: "ogonek" 864 0 basechar 0 -AnchorPoint: "cedilla" 512 0 basechar 0 -AnchorPoint: "bottom" 514 0 basechar 0 -AnchorPoint: "top" 532 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -780 823 m 1,0,-1 - 780 1352 l 1,1,-1 - 944 1352 l 1,2,-1 - 944 0 l 1,3,-1 - 780 0 l 1,4,-1 - 780 47 l 1,5,6 - 675 -20 675 -20 504 -20 c 0,7,8 - 314 -20 314 -20 200 120 c 0,9,10 - 90 256 90 256 90 451 c 0,11,12 - 90 580 90 580 139.5 686.5 c 128,-1,13 - 189 793 189 793 285 857.5 c 128,-1,14 - 381 922 381 922 520.5 922 c 128,-1,15 - 660 922 660 922 780 823 c 1,0,-1 -780 398 m 0,16,17 - 780 476 780 476 768 546 c 128,-1,18 - 756 616 756 616 729.5 679.5 c 128,-1,19 - 703 743 703 743 653 781 c 128,-1,20 - 603 819 603 819 527.5 819 c 128,-1,21 - 452 819 452 819 386 762.5 c 128,-1,22 - 320 706 320 706 287 623 c 128,-1,23 - 254 540 254 540 254 451 c 128,-1,24 - 254 362 254 362 287 278.5 c 128,-1,25 - 320 195 320 195 386 138.5 c 128,-1,26 - 452 82 452 82 535 82 c 0,27,28 - 628 82 628 82 701 157 c 0,29,30 - 780 238 780 238 780 398 c 0,16,17 -EndSplineSet -Validated: 1 -EndChar - -StartChar: a -Encoding: 97 97 1 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43G<694 858> 520 102<343 688> 819 102<304 636> -VStem: 94 164<178 440> 694 164<0 16 107 507 606 754> -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 489 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -115 829 m 1,0,1 - 293 922 293 922 438 922 c 0,2,3 - 626 922 626 922 708 881 c 0,4,5 - 756 857 756 857 784 822.5 c 128,-1,6 - 812 788 812 788 830 727 c 0,7,8 - 858 628 858 628 858 414 c 2,9,-1 - 858 0 l 1,10,-1 - 694 0 l 1,11,-1 - 694 16 l 1,12,13 - 581 -20 581 -20 471 -20 c 0,14,15 - 297 -20 297 -20 195.5 58.5 c 128,-1,16 - 94 137 94 137 94 311 c 0,17,18 - 94 508 94 508 268 584 c 0,19,20 - 357 624 357 624 463 624 c 0,21,-1 - 466 624 l 0,22,23 - 574 624 574 624 690 606 c 1,24,25 - 684 726 684 726 638.5 772.5 c 128,-1,26 - 593 819 593 819 473.5 819 c 128,-1,27 - 354 819 354 819 217 723 c 1,28,-1 - 115 829 l 1,0,1 -694 125 m 1,29,-1 - 694 498 l 1,30,31 - 601 520 601 520 501 520 c 128,-1,32 - 401 520 401 520 329.5 466 c 128,-1,33 - 258 412 258 412 258 310 c 128,-1,34 - 258 208 258 208 331 145 c 128,-1,35 - 404 82 404 82 504 82 c 128,-1,36 - 604 82 604 82 694 125 c 1,29,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: h -Encoding: 104 104 2 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43G<147 311 784 948> 819 102<385 697> 1311 41G<147 311> -VStem: 147 164<0 756 870 1352> 784 164<0 717> -AnchorPoint: "horn" 856 717 basechar 0 -AnchorPoint: "ogonek" 860 0 basechar 0 -AnchorPoint: "cedilla" 532 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "top" 387 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -311 723 m 1,0,-1 - 311 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 1352 l 1,3,-1 - 311 1352 l 1,4,-1 - 311 870 l 1,5,6 - 410 922 410 922 520 922 c 0,7,8 - 736 922 736 922 842 816 c 128,-1,9 - 948 710 948 710 948 492 c 2,10,-1 - 948 0 l 1,11,-1 - 784 0 l 1,12,-1 - 784 467 l 2,13,14 - 784 677 784 677 720 751 c 0,15,16 - 662 819 662 819 542 819 c 128,-1,17 - 422 819 422 819 311 723 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: e -Encoding: 101 101 3 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> -VStem: 90 164<256 451> -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "top" 530 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -932 158 m 1,0,1 - 791 -20 791 -20 553 -20 c 0,2,3 - 351 -20 351 -20 220.5 109.5 c 128,-1,4 - 90 239 90 239 90 451 c 0,5,6 - 90 555 90 555 127 645 c 0,7,8 - 164 734 164 734 224 794 c 0,9,10 - 353 922 353 922 512 922 c 0,11,12 - 615 922 615 922 699 880 c 0,13,14 - 782 838 782 838 834 770 c 0,15,16 - 942 627 942 627 942 451 c 1,17,-1 - 254 451 l 1,18,19 - 254 283 254 283 345.5 182.5 c 128,-1,20 - 437 82 437 82 585 82 c 128,-1,21 - 733 82 733 82 809 205 c 1,22,-1 - 932 158 l 1,0,1 -264 553 m 1,23,-1 - 770 553 l 1,24,25 - 752 673 752 673 694 746 c 128,-1,26 - 636 819 636 819 540 819 c 128,-1,27 - 444 819 444 819 367 747 c 128,-1,28 - 290 675 290 675 264 553 c 1,23,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: n -Encoding: 110 110 4 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43G<147 311 784 948> 819 102<385 697> 860 41G<147 311> -VStem: 147 164<0 756 870 901> 784 164<0 717> -AnchorPoint: "horn" 856 717 basechar 0 -AnchorPoint: "ogonek" 877 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "top" 549 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -311 723 m 1,0,-1 - 311 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 901 l 1,3,-1 - 311 901 l 1,4,-1 - 311 870 l 1,5,6 - 410 922 410 922 520 922 c 0,7,8 - 736 922 736 922 842 816 c 128,-1,9 - 948 710 948 710 948 492 c 2,10,-1 - 948 0 l 1,11,-1 - 784 0 l 1,12,-1 - 784 467 l 2,13,14 - 784 677 784 677 720 751 c 0,15,16 - 662 819 662 819 542 819 c 128,-1,17 - 422 819 422 819 311 723 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: c -Encoding: 99 99 5 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 819 102<404 664> -VStem: 90 164<253 648> -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "ogonek" 571 0 basechar 0 -AnchorPoint: "bottom" 569 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "top" 532 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -932 158 m 1,0,1 - 791 -20 791 -20 553 -20 c 0,2,3 - 351 -20 351 -20 220.5 109.5 c 128,-1,4 - 90 239 90 239 90 451 c 0,5,6 - 90 555 90 555 127 645 c 0,7,8 - 164 734 164 734 224 794 c 0,9,10 - 353 922 353 922 499.5 922 c 128,-1,11 - 646 922 646 922 743 854.5 c 128,-1,12 - 840 787 840 787 893 676 c 1,13,-1 - 760 608 l 1,14,15 - 734 705 734 705 679 762 c 128,-1,16 - 624 819 624 819 543 819 c 0,17,18 - 423 819 423 819 338.5 717 c 128,-1,19 - 254 615 254 615 254 449 c 128,-1,20 - 254 283 254 283 345.5 182.5 c 128,-1,21 - 437 82 437 82 585 82 c 128,-1,22 - 733 82 733 82 809 205 c 1,23,-1 - 932 158 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: b -Encoding: 98 98 6 -Width: 1079 -VWidth: 0 -Flags: W -HStem: -20 102<387 701> 819 102<430 702> 1311 41G<139 303> -VStem: 139 164<166 678 852 1352> 829 164<237 664> -AnchorPoint: "ogonek" 545 0 basechar 0 -AnchorPoint: "horn" 901 717 basechar 0 -AnchorPoint: "cedilla" 545 0 basechar 0 -AnchorPoint: "bottom" 551 0 basechar 0 -AnchorPoint: "top" 578 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -303 852 m 1,0,1 - 409 922 409 922 538.5 922 c 128,-1,2 - 668 922 668 922 756 885 c 128,-1,3 - 844 848 844 848 894.5 782 c 128,-1,4 - 945 716 945 716 969 633.5 c 128,-1,5 - 993 551 993 551 993 451 c 128,-1,6 - 993 351 993 351 968.5 268.5 c 128,-1,7 - 944 186 944 186 893 120 c 0,8,9 - 785 -20 785 -20 549 -20 c 1,10,11 - 320 -20 320 -20 224 86 c 0,12,13 - 140 180 140 180 139 369 c 2,14,-1 - 139 1352 l 1,15,-1 - 303 1352 l 1,16,-1 - 303 852 l 1,0,1 -303 471 m 2,17,-1 - 303 303 l 2,18,19 - 304 114 304 114 498 87 c 0,20,21 - 534 82 534 82 588.5 82 c 128,-1,22 - 643 82 643 82 692 115 c 128,-1,23 - 741 148 741 148 770 202 c 128,-1,24 - 799 256 799 256 814 319.5 c 128,-1,25 - 829 383 829 383 829 451 c 128,-1,26 - 829 519 829 519 814 582.5 c 128,-1,27 - 799 646 799 646 770 700 c 0,28,29 - 706 819 706 819 580 819 c 0,30,31 - 489 818 489 818 425 770 c 0,32,33 - 303 678 303 678 303 471 c 2,17,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: s -Encoding: 115 115 7 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<276 603> 819 102<316 571> -VStem: 125 164<595 792> 651 164<128 358> -AnchorPoint: "horn" 647 793 basechar 0 -AnchorPoint: "ogonek" 455 0 basechar 0 -AnchorPoint: "bottom" 449 0 basechar 0 -AnchorPoint: "cedilla" 449 0 basechar 0 -AnchorPoint: "top" 416 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -756 795 m 1,0,-1 - 637 723 l 1,1,2 - 555 795 555 795 536.5 800 c 128,-1,3 - 518 805 518 805 500 811 c 0,4,5 - 477 819 477 819 418 819 c 128,-1,6 - 359 819 359 819 324 785 c 128,-1,7 - 289 751 289 751 289 688 c 0,8,9 - 289 576 289 576 453 547 c 1,10,11 - 815 480 815 480 815 262 c 0,12,13 - 815 121 815 121 710 50.5 c 128,-1,14 - 605 -20 605 -20 434 -20 c 0,15,16 - 320 -20 320 -20 260 10 c 128,-1,17 - 200 40 200 40 174.5 57 c 128,-1,18 - 149 74 149 74 88 117 c 1,19,-1 - 176 193 l 1,20,21 - 267 129 267 129 315.5 105.5 c 128,-1,22 - 364 82 364 82 464 82 c 128,-1,23 - 564 82 564 82 607.5 128 c 128,-1,24 - 651 174 651 174 651 262 c 0,25,26 - 651 388 651 388 434 424 c 1,27,28 - 284 452 284 452 204.5 520.5 c 128,-1,29 - 125 589 125 589 125 684 c 128,-1,30 - 125 779 125 779 197 850.5 c 128,-1,31 - 269 922 269 922 383 922 c 128,-1,32 - 497 922 497 922 580.5 891.5 c 128,-1,33 - 664 861 664 861 756 795 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: i -Encoding: 105 105 8 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43G<123 287> 860 41G<123 287> 1085 164<123 287> -VStem: 123 164<0 901 1085 1249> -AnchorPoint: "top" 205 1167 basechar 0 -AnchorPoint: "horn" 250 717 basechar 0 -AnchorPoint: "cedilla" 209 0 basechar 0 -AnchorPoint: "bottom" 203 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 1249 m 1,0,-1 - 287 1249 l 1,1,-1 - 287 1085 l 1,2,-1 - 123 1085 l 1,3,-1 - 123 1249 l 1,0,-1 -123 901 m 1,4,-1 - 287 901 l 1,5,-1 - 287 0 l 1,6,-1 - 123 0 l 1,7,-1 - 123 901 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: o -Encoding: 111 111 9 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> -VStem: 90 164<231 648> 807 164<241 660> -AnchorPoint: "cedilla" 506 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "top" 535 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -807 451 m 128,-1,1 - 807 613 807 613 733 716 c 128,-1,2 - 659 819 659 819 541 819 c 128,-1,3 - 423 819 423 819 338.5 717 c 128,-1,4 - 254 615 254 615 254 446.5 c 128,-1,5 - 254 278 254 278 327 180 c 128,-1,6 - 400 82 400 82 529.5 82 c 128,-1,7 - 659 82 659 82 733 185.5 c 128,-1,0 - 807 289 807 289 807 451 c 128,-1,1 -971 451 m 128,-1,9 - 971 222 971 222 845 101 c 128,-1,10 - 719 -20 719 -20 516.5 -20 c 128,-1,11 - 314 -20 314 -20 202 107 c 128,-1,12 - 90 234 90 234 90 451 c 0,13,14 - 90 555 90 555 127 645 c 0,15,16 - 164 734 164 734 224 794 c 0,17,18 - 353 922 353 922 512 922 c 0,19,20 - 719 922 719 922 845 801 c 128,-1,8 - 971 680 971 680 971 451 c 128,-1,9 -EndSplineSet -Validated: 1 -EndChar - -StartChar: t -Encoding: 116 116 10 -Width: 567 -VWidth: 0 -Flags: W -HStem: 0 43G<188 352> 799 102<84 188 352 514> -VStem: 188 164<0 799 901 1198> -AnchorPoint: "horn" 319 1085 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -AnchorPoint: "bottom" 264 0 basechar 0 -AnchorPoint: "cedilla" 264 0 basechar 0 -AnchorPoint: "top" 272 1352 basechar 0 -LayerCount: 2 -Fore -SplineSet -352 799 m 1,0,-1 - 352 0 l 1,1,-1 - 188 0 l 1,2,-1 - 188 799 l 1,3,-1 - 53 799 l 1,4,-1 - 84 901 l 1,5,-1 - 188 901 l 1,6,-1 - 188 1198 l 1,7,-1 - 352 1229 l 1,8,-1 - 352 901 l 1,9,-1 - 514 901 l 1,10,-1 - 514 799 l 1,11,-1 - 352 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: m -Encoding: 109 109 11 -Width: 1605 -VWidth: 0 -Flags: W -HStem: 0 43G<147 311 725 889 1303 1466> 819 102<367 664 944 1231> 860 41G<147 311> -VStem: 147 164<0 766 874 901> 725 164<0 753> 1303 164<0 726> -CounterMasks: 1 1c -AnchorPoint: "horn" 1389 717 basechar 0 -AnchorPoint: "cedilla" 815 0 basechar 0 -AnchorPoint: "ogonek" 1380 0 basechar 0 -AnchorPoint: "bottom" 809 0 basechar 0 -AnchorPoint: "top" 809 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -311 729 m 1,0,-1 - 311 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 901 l 1,3,-1 - 311 901 l 1,4,-1 - 311 874 l 1,5,6 - 393 922 393 922 489 922 c 0,7,8 - 705 922 705 922 799 815 c 1,9,10 - 857 860 857 860 934 891 c 128,-1,11 - 1011 922 1011 922 1073 922 c 0,12,13 - 1264 922 1264 922 1365 814.5 c 128,-1,14 - 1466 707 1466 707 1466 492 c 2,15,-1 - 1466 0 l 1,16,-1 - 1303 0 l 1,17,-1 - 1303 500 l 2,18,19 - 1303 696 1303 696 1244 762 c 0,20,21 - 1194 818 1194 818 1116 819 c 0,22,23 - 950 819 950 819 889 719 c 1,24,-1 - 889 0 l 1,25,-1 - 725 0 l 1,26,-1 - 725 500 l 2,27,28 - 725 699 725 699 675 762 c 0,29,30 - 648 796 648 796 613 807.5 c 128,-1,31 - 578 819 578 819 520 819 c 0,32,33 - 404 819 404 819 311 729 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: f -Encoding: 102 102 12 -Width: 559 -VWidth: 0 -Flags: W -HStem: 0 43G<166 330> 799 102<61 166 330 492> 1270 102<363 538> -VStem: 166 164<0 799 901 1238> -AnchorPoint: "horn" 512 1315 basechar 0 -AnchorPoint: "ogonek" 250 0 basechar 0 -AnchorPoint: "cedilla" 250 0 basechar 0 -AnchorPoint: "bottom" 246 0 basechar 0 -AnchorPoint: "top" 340 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -524 1239 m 1,0,1 - 500 1270 500 1270 444 1270 c 0,2,3 - 388 1270 388 1270 359 1221 c 128,-1,4 - 330 1172 330 1172 330 1042 c 2,5,-1 - 330 901 l 1,6,-1 - 492 901 l 1,7,-1 - 492 799 l 1,8,-1 - 330 799 l 1,9,-1 - 330 0 l 1,10,-1 - 166 0 l 1,11,-1 - 166 799 l 1,12,-1 - 31 799 l 1,13,-1 - 61 901 l 1,14,-1 - 166 901 l 1,15,-1 - 166 1096 l 2,16,17 - 166 1221 166 1221 233.5 1296.5 c 128,-1,18 - 301 1372 301 1372 422 1372 c 0,19,20 - 506 1372 506 1372 567 1350 c 1,21,-1 - 524 1239 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: j -Encoding: 106 106 13 -Width: 536 -VWidth: 0 -Flags: W -HStem: -348 102<-3 219> 860 41G<252 416> 1085 164<252 416> -VStem: 252 164<-216 901 1085 1249> -AnchorPoint: "cedilla" 139 -348 basechar 0 -AnchorPoint: "ogonek" 287 -266 basechar 0 -AnchorPoint: "horn" 369 717 basechar 0 -AnchorPoint: "top" 334 1167 basechar 0 -AnchorPoint: "bottom" 129 -348 basechar 0 -LayerCount: 2 -Fore -SplineSet -33 -195 m 5,0,1 - 69 -246 69 -246 135 -246 c 128,-1,2 - 201 -246 201 -246 226.5 -187.5 c 128,-1,3 - 252 -129 252 -129 252 0 c 2,4,-1 - 252 901 l 1,5,-1 - 416 901 l 1,6,-1 - 416 -68 l 2,7,8 - 416 -272 416 -272 220 -332 c 0,9,10 - 168 -348 168 -348 111 -348 c 0,11,12 - -19 -348 -19 -348 -96 -256 c 1,13,-1 - 33 -195 l 5,0,1 -252 1249 m 1,14,-1 - 416 1249 l 1,15,-1 - 416 1085 l 1,16,-1 - 252 1085 l 1,17,-1 - 252 1249 l 1,14,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: space -Encoding: 32 32 14 -Width: 409 -VWidth: 0 -Flags: W -LayerCount: 2 -EndChar - -StartChar: l -Encoding: 108 108 15 -Width: 456 -VWidth: 0 -Flags: W -HStem: 0 43G<147 311> 1311 41G<147 311> -VStem: 147 164<0 1352> -AnchorPoint: "horn" 266 1085 basechar 0 -AnchorPoint: "ogonek" 233 0 basechar 0 -AnchorPoint: "bottom" 227 0 basechar 0 -AnchorPoint: "cedilla" 223 0 basechar 0 -AnchorPoint: "top" 229 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -311 1352 m 25,0,-1 - 311 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 1352 l 1,3,-1 - 311 1352 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: p -Encoding: 112 112 16 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -16 102<439 692> 823 102<421 705> 864 41G<147 311> -VStem: 147 164<-410 59 240 710 866 905> 838 164<262 660> -AnchorPoint: "horn" 885 717 basechar 0 -AnchorPoint: "ogonek" 561 0 basechar 0 -AnchorPoint: "cedilla" 561 0 basechar 0 -AnchorPoint: "bottom" 598 0 basechar 0 -AnchorPoint: "top" 582 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -311 59 m 1,0,-1 - 311 -410 l 1,1,-1 - 147 -410 l 1,2,-1 - 147 905 l 1,3,-1 - 311 905 l 1,4,-1 - 311 866 l 1,5,6 - 406 926 406 926 549 926 c 128,-1,7 - 692 926 692 926 792 861.5 c 128,-1,8 - 892 797 892 797 946.5 690 c 128,-1,9 - 1001 583 1001 583 1001 455 c 0,10,11 - 1001 262 1001 262 868.5 123 c 128,-1,12 - 736 -16 736 -16 547 -16 c 0,13,14 - 408 -16 408 -16 311 59 c 1,0,-1 -311 508 m 2,15,-1 - 311 504 l 2,16,17 - 311 196 311 196 467 112 c 0,18,19 - 515 86 515 86 581 86 c 128,-1,20 - 647 86 647 86 708 142 c 128,-1,21 - 769 198 769 198 803.5 283 c 128,-1,22 - 838 368 838 368 838 455.5 c 128,-1,23 - 838 543 838 543 808.5 627 c 128,-1,24 - 779 711 779 711 722.5 767 c 128,-1,25 - 666 823 666 823 598 823 c 0,26,27 - 443 823 443 823 377 742.5 c 128,-1,28 - 311 662 311 662 311 508 c 2,15,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: q -Encoding: 113 113 17 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -20 102<382 654> 819 102<382 696> -VStem: 90 164<237 664> 780 164<-410 49 223 735> -AnchorPoint: "horn" 877 717 basechar 0 -AnchorPoint: "ogonek" 487 0 basechar 0 -AnchorPoint: "cedilla" 487 0 basechar 0 -AnchorPoint: "bottom" 487 0 basechar 0 -AnchorPoint: "top" 522 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -780 49 m 1,0,1 - 676 -20 676 -20 546 -20 c 128,-1,2 - 416 -20 416 -20 328 17 c 128,-1,3 - 240 54 240 54 189 120 c 128,-1,4 - 138 186 138 186 114 268.5 c 128,-1,5 - 90 351 90 351 90 451 c 0,6,7 - 90 552 90 552 114 634 c 128,-1,8 - 138 716 138 716 190 782 c 0,9,10 - 299 922 299 922 535 922 c 0,11,12 - 764 922 764 922 860 814 c 0,13,14 - 944 720 944 720 944 532 c 2,15,-1 - 944 -410 l 1,16,-1 - 780 -410 l 1,17,-1 - 780 49 l 1,0,1 -780 430 m 2,18,-1 - 780 598 l 2,19,20 - 780 734 780 734 693 780 c 0,21,22 - 620 820 620 820 523 820 c 0,23,-1 - 520 820 l 0,24,25 - 422 820 422 820 363 762 c 0,26,27 - 254 657 254 657 254 451 c 0,28,29 - 254 311 254 311 314 202 c 0,30,31 - 380 82 380 82 509.5 82 c 129,-1,32 - 639 82 639 82 709.5 180.5 c 128,-1,33 - 780 279 780 279 780 430 c 2,18,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: r -Encoding: 114 114 18 -Width: 677 -VWidth: 0 -Flags: W -HStem: 0 43G<147 311> 819 102<356 647> 860 41G<147 311> -VStem: 147 164<0 774 874 901> -AnchorPoint: "horn" 647 856 basechar 0 -AnchorPoint: "ogonek" 246 0 basechar 0 -AnchorPoint: "bottom" 240 0 basechar 0 -AnchorPoint: "cedilla" 225 0 basechar 0 -AnchorPoint: "top" 397 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -672 741 m 1,0,1 - 631 819 631 819 511 819 c 128,-1,2 - 391 819 391 819 311 735 c 1,3,-1 - 311 0 l 1,4,-1 - 147 0 l 1,5,-1 - 147 901 l 1,6,-1 - 311 901 l 1,7,-1 - 311 874 l 1,8,9 - 390 922 390 922 490 922 c 128,-1,10 - 590 922 590 922 672 893 c 1,11,-1 - 672 741 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: u -Encoding: 117 117 19 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43G<780 944> 860 41G<143 307 780 944> -VStem: 143 164<204 901> 780 164<0 33 135 901> -AnchorPoint: "cedilla" 522 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "top" 549 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -780 172 m 1,0,-1 - 780 901 l 1,1,-1 - 944 901 l 1,2,-1 - 944 0 l 1,3,-1 - 780 0 l 1,4,-1 - 780 33 l 1,5,6 - 668 -20 668 -20 541 -20 c 0,7,8 - 329 -20 329 -20 236 84 c 128,-1,9 - 143 188 143 188 143 410 c 2,10,-1 - 143 901 l 1,11,-1 - 307 901 l 1,12,-1 - 307 434 l 2,13,14 - 307 227 307 227 386 150 c 0,15,16 - 456 82 456 82 571.5 82 c 128,-1,17 - 687 82 687 82 780 172 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: g -Encoding: 103 103 20 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<339 671> -20 102<393 705> 819 102<378 633> 860 41G<729 893> -VStem: 90 164<235 670> 729 164<-181 23 114 716 844 901> -AnchorPoint: "horn" 844 717 basechar 0 -AnchorPoint: "cedilla" 496 -319 basechar 0 -AnchorPoint: "ogonek" 639 -299 basechar 0 -AnchorPoint: "bottom" 492 -330 basechar 0 -AnchorPoint: "top" 506 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -893 901 m 1,0,-1 - 893 160 l 2,1,2 - 893 -54 893 -54 870 -134 c 128,-1,3 - 847 -214 847 -214 819 -248 c 0,4,5 - 790 -282 790 -282 742 -307 c 0,6,7 - 659 -348 659 -348 492.5 -348 c 128,-1,8 - 326 -348 326 -348 150 -256 c 1,9,-1 - 252 -150 l 1,10,11 - 389 -246 389 -246 504 -246 c 0,12,13 - 575 -246 575 -246 617.5 -233 c 128,-1,14 - 660 -220 660 -220 684 -186 c 0,15,16 - 725 -129 725 -129 729 23 c 1,17,18 - 632 -20 632 -20 522 -20 c 0,19,20 - 323 -20 323 -20 206.5 107.5 c 128,-1,21 - 90 235 90 235 90 447 c 128,-1,22 - 90 659 90 659 205.5 790.5 c 128,-1,23 - 321 922 321 922 470 922 c 128,-1,24 - 619 922 619 922 729 844 c 1,25,-1 - 729 901 l 1,26,-1 - 893 901 l 1,0,-1 -729 145 m 1,27,-1 - 729 608 l 1,28,29 - 703 705 703 705 648 762 c 128,-1,30 - 593 819 593 819 512 819 c 0,31,32 - 396 819 396 819 325 719 c 128,-1,33 - 254 619 254 619 254 449 c 128,-1,34 - 254 279 254 279 331.5 180.5 c 128,-1,35 - 409 82 409 82 553 82 c 0,36,37 - 660 82 660 82 729 145 c 1,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: v -Encoding: 118 118 21 -Width: 849 -VWidth: 0 -Flags: W -HStem: 0 43G<331 525> 860 41G<18 183 659 838> -AnchorPoint: "horn" 729 717 basechar 0 -AnchorPoint: "ogonek" 418 0 basechar 0 -AnchorPoint: "cedilla" 418 0 basechar 0 -AnchorPoint: "bottom" 424 0 basechar 0 -AnchorPoint: "top" 432 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -510 0 m 1,0,-1 - 346 0 l 1,1,-1 - 18 901 l 1,2,-1 - 168 901 l 1,3,-1 - 420 205 l 1,4,-1 - 674 901 l 1,5,-1 - 838 901 l 1,6,-1 - 510 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: w -Encoding: 119 119 22 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43G<341 519 1013 1190> 860 41G<29 193 669 848 1324 1503> -AnchorPoint: "horn" 1380 717 basechar 0 -AnchorPoint: "ogonek" 1110 0 basechar 0 -AnchorPoint: "cedilla" 766 0 basechar 0 -AnchorPoint: "bottom" 766 0 basechar 0 -AnchorPoint: "top" 760 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -430 205 m 1,0,-1 - 684 901 l 1,1,-1 - 834 901 l 1,2,-1 - 1085 205 l 1,3,-1 - 1339 901 l 1,4,-1 - 1503 901 l 1,5,-1 - 1176 0 l 1,6,-1 - 1028 0 l 1,7,-1 - 766 719 l 1,8,-1 - 504 0 l 1,9,-1 - 356 0 l 1,10,-1 - 29 901 l 1,11,-1 - 178 901 l 1,12,-1 - 430 205 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: x -Encoding: 120 120 23 -Width: 833 -VWidth: 0 -Flags: W -HStem: 0 43G<8 213 625 829> 860 41G<66 268 569 772> -AnchorPoint: "horn" 614 717 basechar 0 -AnchorPoint: "ogonek" 750 0 basechar 0 -AnchorPoint: "cedilla" 418 0 basechar 0 -AnchorPoint: "bottom" 416 0 basechar 0 -AnchorPoint: "top" 422 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -330 494 m 1,0,-1 - 66 901 l 1,1,-1 - 242 901 l 1,2,-1 - 418 629 l 1,3,-1 - 596 901 l 1,4,-1 - 772 901 l 1,5,-1 - 508 494 l 1,6,-1 - 829 0 l 1,7,-1 - 651 0 l 1,8,-1 - 418 358 l 1,9,-1 - 186 0 l 1,10,-1 - 8 0 l 1,11,-1 - 330 494 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: y -Encoding: 121 121 24 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 860 41G<45 209 685 864> -AnchorPoint: "horn" 762 717 basechar 0 -AnchorPoint: "cedilla" 242 -328 basechar 0 -AnchorPoint: "bottom" 365 -315 basechar 0 -AnchorPoint: "ogonek" 614 0 basechar 0 -AnchorPoint: "top" 461 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -201 -348 m 0,0,1 - 146 -348 146 -348 100 -315 c 128,-1,2 - 54 -282 54 -282 -10 -213 c 1,3,-1 - 121 -147 l 1,4,5 - 168 -211 168 -211 189.5 -228.5 c 128,-1,6 - 211 -246 211 -246 231 -246 c 0,7,8 - 271 -246 271 -246 304 -179 c 0,9,10 - 318 -151 318 -151 356 -45 c 1,11,-1 - 373 0 l 1,12,-1 - 45 901 l 1,13,-1 - 195 901 l 1,14,-1 - 446 205 l 1,15,-1 - 700 901 l 1,16,-1 - 864 901 l 1,17,-1 - 518 -49 l 2,18,19 - 464 -197 464 -197 389 -272.5 c 128,-1,20 - 314 -348 314 -348 201 -348 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: k -Encoding: 107 107 25 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43G<147 311 705 913> 860 41G<652 877> 1311 41G<147 311> -VStem: 147 164<0 268 477 1352> -AnchorPoint: "horn" 668 717 basechar 0 -AnchorPoint: "ogonek" 819 0 basechar 0 -AnchorPoint: "bottom" 508 0 basechar 0 -AnchorPoint: "cedilla" 508 0 basechar 0 -AnchorPoint: "top" 387 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -311 268 m 1,0,-1 - 311 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 1352 l 1,3,-1 - 311 1352 l 1,4,-1 - 311 477 l 1,5,-1 - 688 901 l 1,6,-1 - 877 901 l 1,7,-1 - 520 502 l 1,8,-1 - 913 0 l 1,9,-1 - 737 0 l 1,10,-1 - 424 395 l 1,11,-1 - 311 268 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: z -Encoding: 122 122 26 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 102<299 823> 799 102<74 573> -AnchorPoint: "horn" 651 717 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "cedilla" 442 0 basechar 0 -AnchorPoint: "bottom" 442 0 basechar 0 -AnchorPoint: "top" 438 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -573 799 m 1,0,-1 - 43 799 l 1,1,-1 - 74 901 l 1,2,-1 - 817 901 l 1,3,-1 - 299 102 l 1,4,-1 - 823 102 l 1,5,-1 - 823 0 l 1,6,-1 - 53 0 l 1,7,-1 - 573 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: A -Encoding: 65 65 27 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43G<39 218 1085 1264> 410 102<389 913> 1393 41G<546 756> -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "top" 651 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -39 0 m 5,0,-1 - 561 1434 l 5,1,-1 - 741 1434 l 1,2,-1 - 1264 0 l 1,3,-1 - 1100 0 l 1,4,-1 - 950 410 l 1,5,-1 - 352 410 l 5,6,-1 - 203 0 l 5,7,-1 - 39 0 l 5,0,-1 -651 1231 m 5,8,-1 - 389 512 l 5,9,-1 - 913 512 l 1,10,-1 - 651 1231 l 5,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: B -Encoding: 66 66 28 -Width: 1116 -VWidth: 0 -Flags: W -HStem: 0 102<348 758> 727 102<348 668> 1331 102<348 691> -VStem: 174 174<102 727 829 1331> 778 174<946 1243> 864 174<216 579> -AnchorPoint: "horn" 893 1085 basechar 0 -AnchorPoint: "ogonek" 524 0 basechar 0 -AnchorPoint: "cedilla" 524 0 basechar 0 -AnchorPoint: "bottom" 563 0 basechar 0 -AnchorPoint: "top" 502 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 727 m 1,0,-1 - 348 102 l 1,1,-1 - 614 102 l 2,2,3 - 736 102 736 102 800 185.5 c 128,-1,4 - 864 269 864 269 864 366.5 c 128,-1,5 - 864 464 864 464 839 539 c 128,-1,6 - 814 614 814 614 755 670.5 c 128,-1,7 - 696 727 696 727 614 727 c 2,8,-1 - 348 727 l 1,0,-1 -780 795 m 1,9,10 - 908 743 908 743 973 629.5 c 128,-1,11 - 1038 516 1038 516 1038 387 c 0,12,13 - 1038 226 1038 226 933 117 c 0,14,15 - 820 0 820 0 584 0 c 2,16,-1 - 174 0 l 1,17,-1 - 174 1434 l 1,18,-1 - 543 1434 l 2,19,20 - 812 1434 812 1434 902 1283 c 0,21,22 - 952 1199 952 1199 952 1075 c 0,23,24 - 952 1010 952 1010 910.5 929.5 c 128,-1,25 - 869 849 869 849 780 795 c 1,9,10 -348 1331 m 1,26,-1 - 348 829 l 1,27,-1 - 528 829 l 2,28,29 - 590 829 590 829 640 856 c 0,30,31 - 690 882 690 882 719 922 c 0,32,33 - 778 1002 778 1002 778 1075 c 0,34,35 - 778 1189 778 1189 720 1264 c 0,36,37 - 669 1331 669 1331 573 1331 c 2,38,-1 - 348 1331 l 1,26,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: P -Encoding: 80 80 29 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348> 655 102<348 755> 1331 102<348 757> -VStem: 174 174<0 655 758 1331> 864 174<872 1217> -AnchorPoint: "horn" 987 1085 basechar 0 -AnchorPoint: "ogonek" 254 0 basechar 0 -AnchorPoint: "cedilla" 254 0 basechar 0 -AnchorPoint: "bottom" 451 0 basechar 0 -AnchorPoint: "top" 561 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 655 m 1,0,-1 - 348 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 594 1434 l 2,4,5 - 857 1434 857 1434 976 1252 c 0,6,7 - 1038 1157 1038 1157 1038 1044 c 0,8,9 - 1038 932 1038 932 974 836 c 0,10,11 - 854 655 854 655 594 655 c 2,12,-1 - 348 655 l 1,0,-1 -348 1331 m 1,13,-1 - 348 758 l 1,14,-1 - 625 758 l 2,15,16 - 749 758 749 758 810 856 c 0,17,18 - 864 943 864 943 864 1044 c 0,19,20 - 864 1145 864 1145 810 1233 c 0,21,22 - 750 1331 750 1331 625 1331 c 2,23,-1 - 348 1331 l 1,13,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: C -Encoding: 67 67 30 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<600 974> 1352 102<556 933> -VStem: 102 174<451 1012> -AnchorPoint: "horn" 1143 1282 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "top" 717 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1249 209 m 1,0,1 - 1169 106 1169 106 1035.5 43 c 128,-1,2 - 902 -20 902 -20 741 -20 c 0,3,4 - 564 -20 564 -20 401 93 c 0,5,6 - 216 222 216 222 143 444 c 0,7,8 - 102 570 102 570 102 717.5 c 128,-1,9 - 102 865 102 865 139 989.5 c 128,-1,10 - 176 1114 176 1114 236 1198 c 128,-1,11 - 296 1282 296 1282 375 1341 c 0,12,13 - 526 1454 526 1454 702 1454 c 0,14,15 - 1075 1454 1075 1454 1243 1245 c 1,16,-1 - 1090 1178 l 1,17,18 - 1035 1256 1035 1256 945 1304 c 128,-1,19 - 855 1352 855 1352 748.5 1352 c 128,-1,20 - 642 1352 642 1352 561 1312.5 c 128,-1,21 - 480 1273 480 1273 415.5 1197 c 128,-1,22 - 351 1121 351 1121 313.5 997 c 128,-1,23 - 276 873 276 873 276 730 c 128,-1,24 - 276 587 276 587 309 478 c 0,25,26 - 342 370 342 370 394 298 c 0,27,28 - 448 226 448 226 514 176 c 0,29,30 - 684 90 684 90 772 82 c 1,31,32 - 1010 82 1010 82 1128 264 c 1,33,-1 - 1249 209 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: D -Encoding: 68 68 31 -Width: 1304 -VWidth: 0 -Flags: W -HStem: 0 102<348 826> 1331 102<348 841> -VStem: 174 174<102 1331> 1030 174<394 1073> -AnchorPoint: "cedilla" 549 0 basechar 0 -AnchorPoint: "ogonek" 549 0 basechar 0 -AnchorPoint: "horn" 1102 1085 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "top" 582 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -670 0 m 2,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 670 1434 l 2,3,4 - 1204 1434 1204 1434 1204 737 c 0,5,6 - 1204 376 1204 376 1061.5 188 c 128,-1,7 - 919 0 919 0 670 0 c 2,0,-1 -348 1331 m 1,8,-1 - 348 102 l 1,9,-1 - 700 102 l 2,10,11 - 837 102 837 102 930 249 c 0,12,13 - 1030 406 1030 406 1030 737 c 0,14,15 - 1030 1112 1030 1112 891 1252 c 0,16,17 - 813 1331 813 1331 703 1331 c 0,18,-1 - 700 1331 l 2,19,-1 - 348 1331 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: E -Encoding: 69 69 32 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> -VStem: 174 174<102 799 901 1331> -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 614 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1034 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 1001 1434 l 1,3,-1 - 1001 1331 l 1,4,-1 - 348 1331 l 1,5,-1 - 348 901 l 1,6,-1 - 817 901 l 1,7,-1 - 817 799 l 1,8,-1 - 348 799 l 1,9,-1 - 348 102 l 1,10,-1 - 1034 102 l 1,11,-1 - 1034 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: F -Encoding: 70 70 33 -Width: 1067 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348> 799 102<348 817> 1331 102<348 1001> -VStem: 174 174<0 799 901 1331> -AnchorPoint: "horn" 954 1384 basechar 0 -AnchorPoint: "ogonek" 258 0 basechar 0 -AnchorPoint: "cedilla" 258 0 basechar 0 -AnchorPoint: "bottom" 410 0 basechar 0 -AnchorPoint: "top" 604 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -174 0 m 1,0,-1 - 174 1434 l 1,1,-1 - 1001 1434 l 1,2,-1 - 1001 1331 l 1,3,-1 - 348 1331 l 1,4,-1 - 348 901 l 1,5,-1 - 817 901 l 1,6,-1 - 817 799 l 1,7,-1 - 348 799 l 1,8,-1 - 348 0 l 1,9,-1 - 174 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: G -Encoding: 71 71 34 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -20 102<600 973> 717 102<913 1085> 1331 102<549 954> -VStem: 102 174<451 1008> 1085 164<173 717> -AnchorPoint: "horn" 1143 1282 basechar 0 -AnchorPoint: "ogonek" 737 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "top" 717 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -913 819 m 1,0,-1 - 1249 819 l 1,1,-1 - 1249 209 l 1,2,3 - 1169 106 1169 106 1035.5 43 c 128,-1,4 - 902 -20 902 -20 741 -20 c 0,5,6 - 564 -20 564 -20 401 93 c 0,7,8 - 216 222 216 222 143 444 c 0,9,10 - 102 570 102 570 102 717 c 128,-1,11 - 102 864 102 864 139 986 c 128,-1,12 - 176 1108 176 1108 236 1190 c 128,-1,13 - 296 1272 296 1272 375 1328 c 0,14,15 - 524 1434 524 1434 702 1434 c 0,16,17 - 1091 1434 1091 1434 1243 1245 c 1,18,-1 - 1090 1178 l 1,19,20 - 982 1331 982 1331 733 1331 c 0,21,22 - 546 1331 546 1331 416 1186 c 0,23,24 - 276 1030 276 1030 276 717 c 0,25,26 - 276 587 276 587 309 478 c 0,27,28 - 342 370 342 370 394 298 c 0,29,30 - 448 226 448 226 514 176 c 0,31,32 - 684 90 684 90 772 82 c 1,33,34 - 967 82 967 82 1085 209 c 1,35,-1 - 1085 717 l 1,36,-1 - 913 717 l 1,37,-1 - 913 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: H -Encoding: 72 72 35 -Width: 1351 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348 1008 1182> 717 102<348 1008> 1393 41G<174 348 1008 1182> -VStem: 174 174<0 717 819 1434> 1008 174<0 717 819 1434> -AnchorPoint: "horn" 1147 1352 basechar 0 -AnchorPoint: "ogonek" 1102 0 basechar 0 -AnchorPoint: "cedilla" 651 0 basechar 0 -AnchorPoint: "bottom" 674 0 basechar 0 -AnchorPoint: "top" 686 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 1434 m 1,0,-1 - 348 819 l 1,1,-1 - 1008 819 l 1,2,-1 - 1008 1434 l 1,3,-1 - 1182 1434 l 1,4,-1 - 1182 0 l 1,5,-1 - 1008 0 l 1,6,-1 - 1008 717 l 1,7,-1 - 348 717 l 1,8,-1 - 348 0 l 1,9,-1 - 174 0 l 1,10,-1 - 174 1434 l 1,11,-1 - 348 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: I -Encoding: 73 73 36 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43G<172 346> 1393 41G<172 346> -VStem: 172 174<0 1434> -AnchorPoint: "horn" 291 1085 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "bottom" 252 0 basechar 0 -AnchorPoint: "ogonek" 236 0 basechar 0 -AnchorPoint: "top" 262 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -346 1434 m 25,0,-1 - 346 0 l 1,1,-1 - 172 0 l 1,2,-1 - 172 1434 l 1,3,-1 - 346 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: J -Encoding: 74 74 37 -Width: 954 -VWidth: 0 -Flags: W -HStem: -20 102<225 556> 1393 41G<614 788> -VStem: 614 174<147 1434> -AnchorPoint: "cedilla" 401 0 basechar 0 -AnchorPoint: "ogonek" 401 0 basechar 0 -AnchorPoint: "horn" 733 1085 basechar 0 -AnchorPoint: "bottom" 383 0 basechar 0 -AnchorPoint: "top" 705 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -788 487 m 18,0,1 - 788 276 788 276 763 195 c 128,-1,2 - 738 114 738 114 709 79.5 c 128,-1,3 - 680 45 680 45 630 21 c 0,4,5 - 545 -20 545 -20 378 -20 c 129,-1,6 - 211 -20 211 -20 35 72 c 1,7,-1 - 137 178 l 1,8,9 - 274 82 274 82 389 82 c 0,10,11 - 529 82 529 82 568 140 c 0,12,13 - 601 188 601 188 606 242 c 0,14,15 - 614 316 614 316 614 442 c 2,16,-1 - 614 1434 l 1,17,-1 - 788 1434 l 1,18,-1 - 788 487 l 18,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: K -Encoding: 75 75 38 -Width: 1243 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348 1008 1233> 1393 41G<174 348 967 1208> -VStem: 174 174<0 469 696 1434> -AnchorPoint: "horn" 1032 1352 basechar 0 -AnchorPoint: "ogonek" 1135 0 basechar 0 -AnchorPoint: "bottom" 635 0 basechar 0 -AnchorPoint: "cedilla" 655 0 basechar 0 -AnchorPoint: "top" 483 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 469 m 1,0,-1 - 348 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 348 1434 l 1,4,-1 - 348 696 l 1,5,-1 - 1004 1434 l 1,6,-1 - 1208 1434 l 1,7,-1 - 623 776 l 1,8,-1 - 1233 0 l 1,9,-1 - 1040 0 l 1,10,-1 - 520 662 l 1,11,-1 - 348 469 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: L -Encoding: 76 76 39 -Width: 1083 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 1393 41G<174 348> -VStem: 174 174<102 1434> -AnchorPoint: "horn" 283 1085 basechar 0 -AnchorPoint: "ogonek" 745 0 basechar 0 -AnchorPoint: "bottom" 604 0 basechar 0 -AnchorPoint: "cedilla" 596 0 basechar 0 -AnchorPoint: "top" 440 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 102 m 1,0,-1 - 1034 102 l 1,1,-1 - 1034 0 l 1,2,-1 - 174 0 l 1,3,-1 - 174 1434 l 1,4,-1 - 348 1434 l 1,5,-1 - 348 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: M -Encoding: 77 77 40 -Width: 1626 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348 1282 1456> 1393 41G<174 367 1263 1456> -VStem: 174 174<0 1098> 1282 174<0 1098> -AnchorPoint: "horn" 1393 1085 basechar 0 -AnchorPoint: "ogonek" 1389 0 basechar 0 -AnchorPoint: "cedilla" 840 0 basechar 0 -AnchorPoint: "bottom" 815 0 basechar 0 -AnchorPoint: "top" 815 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 1098 m 1,0,-1 - 348 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 348 1434 l 1,4,-1 - 815 432 l 1,5,-1 - 1282 1434 l 1,6,-1 - 1456 1434 l 1,7,-1 - 1456 0 l 1,8,-1 - 1282 0 l 1,9,-1 - 1282 1098 l 1,10,-1 - 815 102 l 1,11,-1 - 348 1098 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: N -Encoding: 78 78 41 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348 1034 1237> 1393 41G<174 375 1063 1237> -VStem: 174 174<0 1157> 1063 174<274 1434> -AnchorPoint: "horn" 1188 1085 basechar 0 -AnchorPoint: "ogonek" 1143 0 basechar 0 -AnchorPoint: "bottom" 694 0 basechar 0 -AnchorPoint: "cedilla" 696 0 basechar 0 -AnchorPoint: "top" 717 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1059 0 m 1,0,-1 - 348 1157 l 1,1,-1 - 348 0 l 1,2,-1 - 174 0 l 1,3,-1 - 174 1434 l 1,4,-1 - 350 1434 l 1,5,-1 - 1063 274 l 1,6,-1 - 1063 1434 l 1,7,-1 - 1237 1434 l 1,8,-1 - 1237 0 l 1,9,-1 - 1059 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: O -Encoding: 79 79 42 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> -VStem: 102 174<441 1012> 1163 174<438 1009> -AnchorPoint: "cedilla" 700 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "top" 707 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -946 24 m 128,-1,1 - 834 -20 834 -20 727.5 -20 c 128,-1,2 - 621 -20 621 -20 537.5 7 c 128,-1,3 - 454 34 454 34 375 93 c 128,-1,4 - 296 152 296 152 235.5 236 c 128,-1,5 - 175 320 175 320 138.5 444.5 c 128,-1,6 - 102 569 102 569 102 717 c 128,-1,7 - 102 865 102 865 136 990 c 0,8,9 - 170 1114 170 1114 228 1198 c 0,10,11 - 289 1286 289 1286 362 1342 c 0,12,13 - 508 1454 508 1454 686 1454 c 0,14,15 - 900 1454 900 1454 1060 1342 c 0,16,17 - 1337 1149 1337 1149 1337 720 c 0,18,19 - 1337 530 1337 530 1286 387 c 0,20,21 - 1235 243 1235 243 1146.5 155.5 c 128,-1,0 - 1058 68 1058 68 946 24 c 128,-1,1 -703 1352 m 0,22,23 - 641 1352 641 1352 583 1328 c 128,-1,24 - 525 1304 525 1304 470 1252 c 0,25,26 - 416 1200 416 1200 372 1127 c 0,27,28 - 276 967 276 967 276 717 c 0,29,30 - 276 588 276 588 306 478.5 c 128,-1,31 - 336 369 336 369 384 298 c 0,32,33 - 432 226 432 226 491 176 c 0,34,35 - 603 82 603 82 717 82 c 0,36,37 - 849 82 849 82 961 182 c 0,38,39 - 1163 363 1163 363 1163 717 c 0,40,41 - 1163 1087 1163 1087 954 1258 c 0,42,43 - 839 1352 839 1352 703 1352 c 0,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Q -Encoding: 81 81 43 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -348 102<985 1155> -14 96<554 634 801 882> 1352 102<525 883> -VStem: 102 174<429 1012> 1163 174<425 1009> -AnchorPoint: "horn" 1204 1085 basechar 0 -AnchorPoint: "cedilla" 844 -262 basechar 0 -AnchorPoint: "ogonek" 1004 -291 basechar 0 -AnchorPoint: "bottom" 696 -266 basechar 0 -AnchorPoint: "top" 690 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -391.5 1190 m 128,-1,1 - 276 1028 276 1028 276 717 c 0,2,3 - 276 348 276 348 475 176 c 0,4,5 - 584 82 584 82 717 82 c 0,6,7 - 888 82 888 82 1020 238 c 0,8,9 - 1084 314 1084 314 1123.5 438 c 128,-1,10 - 1163 562 1163 562 1163 721 c 128,-1,11 - 1163 880 1163 880 1124 1006 c 0,12,13 - 1084 1130 1084 1130 1018 1204 c 0,14,15 - 885 1352 885 1352 696 1352 c 128,-1,0 - 507 1352 507 1352 391.5 1190 c 128,-1,1 -625 -14 m 1,16,17 - 420 19 420 19 269 192 c 0,18,19 - 193 279 193 279 147.5 414.5 c 128,-1,20 - 102 550 102 550 102 707.5 c 128,-1,21 - 102 865 102 865 136 990 c 0,22,23 - 170 1114 170 1114 228 1198 c 0,24,25 - 289 1286 289 1286 362 1342 c 0,26,27 - 508 1454 508 1454 686 1454 c 0,28,29 - 900 1454 900 1454 1060 1342 c 0,30,31 - 1337 1149 1337 1149 1337 720 c 0,32,33 - 1337 377 1337 377 1179 192 c 0,34,35 - 1032 18 1032 18 801 -14 c 1,36,37 - 819 -79 819 -79 880 -134 c 128,-1,38 - 941 -189 941 -189 1015 -217.5 c 128,-1,39 - 1089 -246 1089 -246 1155 -246 c 1,40,-1 - 1155 -348 l 1,41,42 - 1022 -348 1022 -348 924 -312.5 c 128,-1,43 - 826 -277 826 -277 770 -240 c 128,-1,44 - 714 -203 714 -203 674 -144.5 c 128,-1,45 - 634 -86 634 -86 625 -14 c 1,16,17 -EndSplineSet -Validated: 1 -EndChar - -StartChar: R -Encoding: 82 82 44 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348 901 1069> 655 102<348 615> 1331 102<348 757> -VStem: 174 174<0 655 758 1331> 864 174<873 1217> 901 168<0 202> -AnchorPoint: "horn" 954 1085 basechar 0 -AnchorPoint: "ogonek" 975 0 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "cedilla" 590 0 basechar 0 -AnchorPoint: "top" 561 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 655 m 1,0,-1 - 348 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 594 1434 l 2,4,5 - 857 1434 857 1434 976 1252 c 0,6,7 - 1038 1157 1038 1157 1038 1044 c 0,8,9 - 1038 937 1038 937 976 836 c 0,10,11 - 907 725 907 725 762 680 c 1,12,13 - 866 576 866 576 967.5 358 c 128,-1,14 - 1069 140 1069 140 1069 0 c 1,15,-1 - 901 0 l 1,16,17 - 901 142 901 142 793 355 c 128,-1,18 - 685 568 685 568 571 655 c 1,19,-1 - 348 655 l 1,0,-1 -348 1331 m 1,20,-1 - 348 758 l 1,21,-1 - 625 758 l 2,22,23 - 749 758 749 758 810 856 c 0,24,25 - 864 943 864 943 864 1044 c 0,26,27 - 864 1145 864 1145 810 1233 c 0,28,29 - 750 1331 750 1331 625 1331 c 2,30,-1 - 348 1331 l 1,20,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: S -Encoding: 83 83 45 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -20 102<442 777> 1352 102<441 740> -VStem: 162 174<985 1247> 907 174<203 504> -AnchorPoint: "ogonek" 602 0 basechar 0 -AnchorPoint: "horn" 897 1290 basechar 0 -AnchorPoint: "bottom" 578 0 basechar 0 -AnchorPoint: "cedilla" 573 0 basechar 0 -AnchorPoint: "top" 569 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -102 350 m 1,0,-1 - 262 381 l 1,1,2 - 277 264 277 264 378 173 c 128,-1,3 - 479 82 479 82 580 82 c 0,4,5 - 737 82 737 82 822 157 c 128,-1,6 - 907 232 907 232 907 365 c 0,7,8 - 907 486 907 486 813 564 c 0,9,10 - 739 625 739 625 636.5 667.5 c 128,-1,11 - 534 710 534 710 472.5 736.5 c 128,-1,12 - 411 763 411 763 355 796.5 c 128,-1,13 - 299 830 299 830 256 870 c 0,14,15 - 162 959 162 959 162 1102 c 0,16,17 - 162 1198 162 1198 223.5 1280.5 c 128,-1,18 - 285 1363 285 1363 380.5 1408.5 c 128,-1,19 - 476 1454 476 1454 597 1454 c 128,-1,20 - 718 1454 718 1454 833 1390.5 c 128,-1,21 - 948 1327 948 1327 1012 1225 c 1,22,-1 - 860 1182 l 1,23,24 - 768 1352 768 1352 561 1352 c 0,25,26 - 445 1352 445 1352 373 1236 c 0,27,28 - 336 1176 336 1176 336 1112 c 128,-1,29 - 336 1048 336 1048 361.5 1004 c 128,-1,30 - 387 960 387 960 430 928.5 c 128,-1,31 - 473 897 473 897 529 869 c 128,-1,32 - 585 841 585 841 646.5 814.5 c 128,-1,33 - 708 788 708 788 770 760 c 128,-1,34 - 832 732 832 732 888 695 c 128,-1,35 - 944 658 944 658 987 614 c 0,36,37 - 1081 517 1081 517 1081 357 c 128,-1,38 - 1081 197 1081 197 939.5 88.5 c 128,-1,39 - 798 -20 798 -20 565 -20 c 0,40,41 - 416 -20 416 -20 277.5 91 c 128,-1,42 - 139 202 139 202 102 350 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: T -Encoding: 84 84 46 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 43G<553 727> 1331 102<41 553 727 1243> -VStem: 553 174<0 1331> -AnchorPoint: "horn" 1200 1389 basechar 0 -AnchorPoint: "ogonek" 659 0 basechar 0 -AnchorPoint: "bottom" 643 0 basechar 0 -AnchorPoint: "cedilla" 639 0 basechar 0 -AnchorPoint: "top" 643 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -41 1434 m 1,0,-1 - 1243 1434 l 1,1,-1 - 1243 1331 l 1,2,-1 - 727 1331 l 1,3,-1 - 727 0 l 1,4,-1 - 553 0 l 1,5,-1 - 553 1331 l 1,6,-1 - 41 1331 l 1,7,-1 - 41 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: U -Encoding: 85 85 47 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41G<156 330 1073 1247> -VStem: 156 174<328 1434> 1073 174<328 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1073 1434 m 1,0,-1 - 1247 1434 l 1,1,-1 - 1247 610 l 2,2,3 - 1247 190 1247 190 1017 55 c 0,4,5 - 890 -20 890 -20 696 -20 c 0,6,7 - 538 -20 538 -20 412 55 c 0,8,9 - 338 99 338 99 283 166.5 c 128,-1,10 - 228 234 228 234 192 348.5 c 128,-1,11 - 156 463 156 463 156 610 c 2,12,-1 - 156 1434 l 1,13,-1 - 330 1434 l 1,14,-1 - 330 610 l 2,15,16 - 330 203 330 203 574 108 c 0,17,18 - 641 82 641 82 700.5 82 c 128,-1,19 - 760 82 760 82 807 95 c 128,-1,20 - 854 108 854 108 904 144.5 c 128,-1,21 - 954 181 954 181 990 238 c 0,22,23 - 1073 369 1073 369 1073 610 c 2,24,-1 - 1073 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: V -Encoding: 86 86 48 -Width: 1153 -VWidth: 0 -Flags: W -HStem: 0 43G<476 683> 1393 41G<25 189 970 1135> -AnchorPoint: "cedilla" 578 0 basechar 0 -AnchorPoint: "ogonek" 578 0 basechar 0 -AnchorPoint: "horn" 983 1085 basechar 0 -AnchorPoint: "bottom" 578 0 basechar 0 -AnchorPoint: "top" 573 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -489 0 m 1,0,-1 - 25 1434 l 1,1,-1 - 176 1434 l 1,2,-1 - 580 195 l 1,3,-1 - 983 1434 l 1,4,-1 - 1135 1434 l 1,5,-1 - 670 0 l 1,6,-1 - 489 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: X -Encoding: 88 88 49 -Width: 1191 -VWidth: 0 -Flags: W -HStem: 0 43G<86 279 847 1042> 1393 41G<127 322 804 999> -AnchorPoint: "horn" 766 1085 basechar 0 -AnchorPoint: "ogonek" 553 0 basechar 0 -AnchorPoint: "cedilla" 553 0 basechar 0 -AnchorPoint: "bottom" 557 0 basechar 0 -AnchorPoint: "top" 557 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -258 0 m 1,0,-1 - 86 0 l 1,1,-1 - 477 758 l 1,2,-1 - 127 1434 l 1,3,-1 - 301 1434 l 1,4,-1 - 563 926 l 1,5,-1 - 825 1434 l 1,6,-1 - 999 1434 l 1,7,-1 - 651 758 l 1,8,-1 - 1042 0 l 1,9,-1 - 868 0 l 1,10,-1 - 563 590 l 1,11,-1 - 258 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: W -Encoding: 87 87 50 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43G<486 693 1087 1293> 860 41G<808 972> 1393 41G<35 200 1580 1745> -AnchorPoint: "horn" 1577 1085 basechar 0 -AnchorPoint: "ogonek" 1188 0 basechar 0 -AnchorPoint: "cedilla" 881 0 basechar 0 -AnchorPoint: "bottom" 899 0 basechar 0 -AnchorPoint: "top" 874 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -500 0 m 1,0,-1 - 35 1434 l 1,1,-1 - 186 1434 l 1,2,-1 - 590 193 l 1,3,-1 - 821 901 l 1,4,-1 - 958 901 l 1,5,-1 - 1190 193 l 1,6,-1 - 1593 1434 l 1,7,-1 - 1745 1434 l 1,8,-1 - 1280 0 l 1,9,-1 - 1100 0 l 1,10,-1 - 891 645 l 1,11,-1 - 680 0 l 1,12,-1 - 500 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Y -Encoding: 89 89 51 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43G<391 565> 1393 41G<23 228 731 936> -VStem: 391 174<0 709> -AnchorPoint: "horn" 725 1085 basechar 0 -AnchorPoint: "cedilla" 492 0 basechar 0 -AnchorPoint: "ogonek" 510 0 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "top" 477 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -479 899 m 1,0,-1 - 752 1434 l 1,1,-1 - 936 1434 l 1,2,-1 - 565 709 l 1,3,-1 - 565 0 l 1,4,-1 - 391 0 l 1,5,-1 - 391 711 l 1,6,-1 - 23 1434 l 1,7,-1 - 207 1434 l 1,8,-1 - 479 899 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Z -Encoding: 90 90 52 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<285 983> 1331 102<102 750> -AnchorPoint: "horn" 758 1085 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "ogonek" 799 0 basechar 0 -AnchorPoint: "bottom" 549 0 basechar 0 -AnchorPoint: "top" 512 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -750 1331 m 1,0,-1 - 72 1331 l 1,1,-1 - 102 1434 l 1,2,-1 - 975 1434 l 1,3,-1 - 285 102 l 1,4,-1 - 983 102 l 1,5,-1 - 983 0 l 1,6,-1 - 61 0 l 1,7,-1 - 750 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: exclam -Encoding: 33 33 53 -Width: 356 -VWidth: 0 -Flags: W -HStem: 0 164<92 256> 1393 41G<92 256> -VStem: 92 164<0 164 937 1434> 123 102<369 866> -LayerCount: 2 -Fore -SplineSet -92 164 m 1,0,-1 - 256 164 l 1,1,-1 - 256 0 l 1,2,-1 - 92 0 l 1,3,-1 - 92 164 l 1,0,-1 -256 1434 m 29,4,-1 - 225 369 l 1,5,-1 - 123 369 l 1,6,-1 - 92 1434 l 1,7,-1 - 256 1434 l 29,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: period -Encoding: 46 46 54 -Width: 356 -VWidth: 0 -Flags: W -HStem: 0 164<92 256> -VStem: 92 164<0 164> -LayerCount: 2 -Fore -SplineSet -92 164 m 1,0,-1 - 256 164 l 1,1,-1 - 256 0 l 1,2,-1 - 92 0 l 1,3,-1 - 92 164 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: comma -Encoding: 44 44 55 -Width: 356 -VWidth: 0 -Flags: W -HStem: -203 367<141 175> -VStem: 98 147<-48 164> -LayerCount: 2 -Fore -SplineSet -98 164 m 1,0,-1 - 246 164 l 1,1,2 - 246 -73 246 -73 182 -180 c 0,3,4 - 170 -199 170 -199 168 -203 c 1,5,-1 - 92 -203 l 1,6,7 - 141 -134 141 -134 141 -51 c 0,8,9 - 141 -26 141 -26 119.5 44 c 128,-1,10 - 98 114 98 114 98 164 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quotesingle -Encoding: 39 39 56 -Width: 335 -VWidth: 0 -Flags: W -HStem: 1024 410<123 205> -VStem: 123 82<1024 1215> -LayerCount: 2 -Fore -SplineSet -236 1434 m 25,0,-1 - 205 1024 l 1,1,-1 - 123 1024 l 1,2,-1 - 92 1434 l 1,3,-1 - 236 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quotedbl -Encoding: 34 34 57 -Width: 540 -VWidth: 0 -Flags: W -HStem: 1024 410<123 205 328 410> -VStem: 123 82<1024 1215> 328 82<1024 1215> -LayerCount: 2 -Fore -Refer: 56 39 N 1 0 0 1 0 0 2 -Refer: 56 39 N 1 0 0 1 205 0 2 -Validated: 1 -EndChar - -StartChar: dollar -Encoding: 36 36 58 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 43G<303 377 459 532> 150 102<377 459> 1112 102<377 459> 1311 41G<303 377 459 532> -VStem: 61 164<851 1058> 303 74<0 150 270 662 825 1085 1214 1352> 459 74<0 152 272 610 772 1077 1208 1352> 625 164<314 570> -LayerCount: 2 -Fore -SplineSet -729 1087 m 1,0,-1 - 610 1016 l 1,1,2 - 545 1069 545 1069 532 1077 c 1,3,-1 - 532 752 l 1,4,5 - 660 708 660 708 724 631 c 128,-1,6 - 788 554 788 554 788 451.5 c 128,-1,7 - 788 349 788 349 718.5 271 c 128,-1,8 - 649 193 649 193 532 164 c 1,9,-1 - 532 0 l 1,10,-1 - 459 0 l 1,11,-1 - 459 152 l 1,12,13 - 443 150 443 150 408 150 c 2,14,-1 - 377 150 l 1,15,-1 - 377 0 l 1,16,-1 - 303 0 l 1,17,-1 - 303 160 l 1,18,19 - 222 176 222 176 148 226 c 0,20,21 - 122 244 122 244 61 287 c 1,22,-1 - 150 362 l 1,23,24 - 158 357 158 357 178.5 342 c 128,-1,25 - 199 327 199 327 206 322.5 c 128,-1,26 - 213 318 213 318 229 307.5 c 128,-1,27 - 245 297 245 297 254 292 c 0,28,29 - 282 276 282 276 303 270 c 1,30,-1 - 303 682 l 1,31,32 - 190 720 190 720 125.5 789 c 128,-1,33 - 61 858 61 858 61 958 c 128,-1,34 - 61 1058 61 1058 127 1126.5 c 128,-1,35 - 193 1195 193 1195 303 1210 c 1,36,-1 - 303 1352 l 1,37,-1 - 377 1352 l 1,38,-1 - 377 1214 l 1,39,40 - 418 1214 418 1214 459 1208 c 1,41,-1 - 459 1352 l 1,42,-1 - 532 1352 l 1,43,-1 - 532 1192 l 1,44,45 - 620 1162 620 1162 729 1087 c 1,0,-1 -303 825 m 1,46,-1 - 303 1085 l 1,47,48 - 225 1038 225 1038 225 955.5 c 128,-1,49 - 225 873 225 873 303 825 c 1,46,-1 -377 662 m 1,50,-1 - 377 254 l 1,51,52 - 395 252 395 252 438 252 c 2,53,-1 - 459 252 l 1,54,-1 - 459 643 l 1,55,56 - 433 650 433 650 377 662 c 1,50,-1 -377 791 m 1,57,58 - 411 781 411 781 459 772 c 1,59,-1 - 459 1108 l 1,60,61 - 427 1112 427 1112 405 1112 c 128,-1,62 - 383 1112 383 1112 377 1110 c 1,63,-1 - 377 791 l 1,57,58 -532 272 m 1,64,65 - 625 321 625 321 625 463 c 0,66,67 - 625 551 625 551 532 610 c 1,68,-1 - 532 272 l 1,64,65 -EndSplineSet -Validated: 1 -EndChar - -StartChar: bar -Encoding: 124 124 59 -Width: 305 -VWidth: 0 -Flags: W -HStem: 0 43G<92 205> 1393 41G<92 205> -VStem: 92 113<0 1434> -LayerCount: 2 -Fore -SplineSet -205 1434 m 25,0,-1 - 205 0 l 1,1,-1 - 92 0 l 1,2,-1 - 92 1434 l 1,3,-1 - 205 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: slash -Encoding: 47 47 60 -Width: 831 -VWidth: 0 -Flags: W -HStem: 0 43G<61 199> 1393 41G<624 762> -LayerCount: 2 -Fore -SplineSet -762 1434 m 1,0,-1 - 182 0 l 1,1,-1 - 61 0 l 1,2,-1 - 641 1434 l 1,3,-1 - 762 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: backslash -Encoding: 92 92 61 -Width: 831 -VWidth: 0 -Flags: W -HStem: 0 43G<624 762> 1393 41G<61 199> -LayerCount: 2 -Fore -SplineSet -61 1434 m 1,0,-1 - 182 1434 l 1,1,-1 - 762 0 l 1,2,-1 - 641 0 l 1,3,-1 - 61 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: question -Encoding: 63 63 62 -Width: 882 -VWidth: 0 -Flags: W -HStem: 0 164<297 461> 369 215<328 430> 1270 102<226 519> -VStem: 297 164<0 164> 328 102<369 469> 657 164<716 1117> -LayerCount: 2 -Fore -SplineSet -297 164 m 1,0,-1 - 461 164 l 1,1,-1 - 461 0 l 1,2,-1 - 297 0 l 1,3,-1 - 297 164 l 1,0,-1 -446 483 m 1,4,-1 - 430 369 l 1,5,-1 - 328 369 l 1,6,-1 - 297 584 l 1,7,-1 - 369 584 l 2,8,9 - 494 584 494 584 575.5 663 c 128,-1,10 - 657 742 657 742 657 907.5 c 128,-1,11 - 657 1073 657 1073 579.5 1171.5 c 128,-1,12 - 502 1270 502 1270 358 1270 c 0,13,14 - 264 1270 264 1270 212 1214 c 0,15,16 - 190 1190 190 1190 164 1147 c 1,17,-1 - 41 1194 l 1,18,19 - 109 1280 109 1280 190 1326 c 128,-1,20 - 271 1372 271 1372 389 1372 c 0,21,22 - 588 1372 588 1372 704.5 1244.5 c 128,-1,23 - 821 1117 821 1117 821 901 c 0,24,25 - 821 626 821 626 585 520 c 0,26,27 - 519 490 519 490 446 483 c 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: colon -Encoding: 58 58 63 -Width: 356 -VWidth: 0 -Flags: W -HStem: 0 164<92 256> 614 164<92 256> -VStem: 92 164<0 164 614 778> -LayerCount: 2 -Fore -Refer: 54 46 N 1 0 0 1 0 0 2 -Refer: 54 46 N 1 0 0 1 0 614 2 -Validated: 1 -EndChar - -StartChar: semicolon -Encoding: 59 59 64 -Width: 356 -VWidth: 0 -Flags: W -HStem: -203 367<141 175> 614 164<92 256> -VStem: 92 164<614 778> 98 147<-48 164> -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 0 0 2 -Refer: 54 46 N 1 0 0 1 0 614 2 -Validated: 1 -EndChar - -StartChar: percent -Encoding: 37 37 65 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 156 109<702 871> 473 109<702 871> 729 109<211 379> 1047 109<211 379> -VStem: 82 109<858 1026> 399 109<858 1026> 573 109<284 453> 891 109<284 453> -LayerCount: 2 -Fore -SplineSet -682 369 m 128,-1,1 - 682 326 682 326 712.5 295 c 128,-1,2 - 743 264 743 264 786 264 c 128,-1,3 - 829 264 829 264 860 295 c 128,-1,4 - 891 326 891 326 891 369 c 128,-1,5 - 891 412 891 412 860 442.5 c 128,-1,6 - 829 473 829 473 786 473 c 128,-1,7 - 743 473 743 473 712.5 442.5 c 128,-1,0 - 682 412 682 412 682 369 c 128,-1,1 -573 369 m 128,-1,9 - 573 458 573 458 635 520 c 128,-1,10 - 697 582 697 582 786 582 c 128,-1,11 - 875 582 875 582 937 520 c 128,-1,12 - 999 458 999 458 999 369 c 128,-1,13 - 999 280 999 280 937 218 c 128,-1,14 - 875 156 875 156 786 156 c 128,-1,15 - 697 156 697 156 635 218 c 128,-1,8 - 573 280 573 280 573 369 c 128,-1,9 -190 942 m 128,-1,17 - 190 899 190 899 221 868.5 c 128,-1,18 - 252 838 252 838 295 838 c 128,-1,19 - 338 838 338 838 368.5 868.5 c 128,-1,20 - 399 899 399 899 399 942 c 128,-1,21 - 399 985 399 985 368.5 1016 c 128,-1,22 - 338 1047 338 1047 295 1047 c 128,-1,23 - 252 1047 252 1047 221 1016 c 128,-1,16 - 190 985 190 985 190 942 c 128,-1,17 -82 942 m 128,-1,25 - 82 1031 82 1031 144 1093 c 128,-1,26 - 206 1155 206 1155 295 1155 c 128,-1,27 - 384 1155 384 1155 446 1093 c 128,-1,28 - 508 1031 508 1031 508 942 c 128,-1,29 - 508 853 508 853 446 791 c 128,-1,30 - 384 729 384 729 295 729 c 128,-1,31 - 206 729 206 729 144 791 c 128,-1,24 - 82 853 82 853 82 942 c 128,-1,25 -82 264 m 5,32,-1 - 842 1047 l 1,33,-1 - 999 1047 l 1,34,-1 - 240 264 l 1,35,-1 - 82 264 l 5,32,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: numbersign -Encoding: 35 35 66 -Width: 991 -VWidth: 0 -Flags: W -HStem: 410 102<102 227 389 526 690 838> 840 102<154 303 465 602 766 889> -LayerCount: 2 -Fore -SplineSet -373 410 m 1,0,-1 - 322 123 l 1,1,-1 - 176 123 l 1,2,-1 - 227 410 l 1,3,-1 - 102 410 l 1,4,-1 - 102 512 l 1,5,-1 - 244 512 l 1,6,-1 - 303 840 l 1,7,-1 - 154 840 l 1,8,-1 - 154 942 l 1,9,-1 - 319 942 l 1,10,-1 - 371 1229 l 1,11,-1 - 516 1229 l 1,12,-1 - 465 942 l 1,13,-1 - 621 942 l 1,14,-1 - 670 1229 l 1,15,-1 - 815 1229 l 1,16,-1 - 766 942 l 1,17,-1 - 889 942 l 1,18,-1 - 889 840 l 1,19,-1 - 748 840 l 1,20,-1 - 690 512 l 1,21,-1 - 838 512 l 1,22,-1 - 838 410 l 1,23,-1 - 672 410 l 1,24,-1 - 623 123 l 1,25,-1 - 477 123 l 1,26,-1 - 526 410 l 1,27,-1 - 373 410 l 1,0,-1 -389 512 m 1,28,-1 - 545 512 l 1,29,-1 - 602 840 l 1,30,-1 - 449 840 l 1,31,-1 - 389 512 l 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: zero -Encoding: 48 48 67 -Width: 942 -VWidth: 0 -Flags: W -HStem: -20 102<357 586> 1004 102<375 586> -VStem: 31 164<287 766> 748 164<299 786> -LayerCount: 2 -Fore -SplineSet -748 543 m 128,-1,1 - 748 653 748 653 714 758 c 0,2,3 - 681 864 681 864 619 934 c 128,-1,4 - 557 1004 557 1004 482 1004 c 0,5,6 - 408 1004 408 1004 341 936 c 128,-1,7 - 274 868 274 868 234.5 761 c 128,-1,8 - 195 654 195 654 195 555 c 128,-1,9 - 195 456 195 456 213 375.5 c 128,-1,10 - 231 295 231 295 265.5 228.5 c 128,-1,11 - 300 162 300 162 356.5 122 c 128,-1,12 - 413 82 413 82 485 82 c 128,-1,13 - 557 82 557 82 619 152.5 c 128,-1,14 - 681 223 681 223 714.5 328 c 128,-1,0 - 748 433 748 433 748 543 c 128,-1,1 -911 543 m 128,-1,16 - 911 387 911 387 852.5 258.5 c 128,-1,17 - 794 130 794 130 688.5 55 c 128,-1,18 - 583 -20 583 -20 454 -20 c 128,-1,19 - 325 -20 325 -20 227 61.5 c 128,-1,20 - 129 143 129 143 80 270 c 128,-1,21 - 31 397 31 397 31 540 c 128,-1,22 - 31 683 31 683 93.5 814.5 c 128,-1,23 - 156 946 156 946 254 1026 c 128,-1,24 - 352 1106 352 1106 468 1106 c 128,-1,25 - 584 1106 584 1106 689 1031 c 128,-1,26 - 794 956 794 956 852.5 827.5 c 128,-1,15 - 911 699 911 699 911 543 c 128,-1,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: one -Encoding: 49 49 68 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 43G<410 573> 961 102<305 410> -VStem: 410 164<0 973> -LayerCount: 2 -Fore -SplineSet -573 1096 m 1,0,-1 - 573 0 l 1,1,-1 - 410 0 l 1,2,-1 - 410 973 l 1,3,-1 - 305 961 l 1,4,-1 - 305 1063 l 1,5,-1 - 573 1096 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: two -Encoding: 50 50 69 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<287 819> 983 102<331 582> -VStem: 123 164<102 201> 649 164<627 912> -LayerCount: 2 -Fore -SplineSet -123 0 m 1,0,1 - 124 184 124 184 228 302 c 0,2,3 - 302 385 302 385 400 452.5 c 128,-1,4 - 498 520 498 520 544 559 c 0,5,6 - 648 647 648 647 649 762 c 0,7,8 - 649 875 649 875 596 929 c 128,-1,9 - 543 983 543 983 472 983 c 0,10,11 - 313 983 313 983 252 827 c 1,12,-1 - 123 877 l 1,13,14 - 222 1085 222 1085 500 1085 c 0,15,16 - 633 1085 633 1085 722.5 993 c 128,-1,17 - 812 901 812 901 812 765.5 c 128,-1,18 - 812 630 812 630 708 536 c 0,19,20 - 649 483 649 483 543.5 413 c 128,-1,21 - 438 343 438 343 392 304 c 0,22,23 - 288 216 288 216 287 102 c 1,24,-1 - 819 102 l 1,25,-1 - 819 0 l 1,26,-1 - 123 0 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: three -Encoding: 51 51 70 -Width: 942 -VWidth: 0 -Flags: W -HStem: -258 102<316 565> 422 102<379 553> 983 102<332 572> -VStem: 639 164<606 912> 678 164<-36 295> -LayerCount: 2 -Fore -SplineSet -379 422 m 5,0,-1 - 379 524 l 1,1,2 - 639 524 639 524 639 760 c 0,3,4 - 639 872 639 872 585.5 927.5 c 128,-1,5 - 532 983 532 983 456.5 983 c 128,-1,6 - 381 983 381 983 337 945 c 128,-1,7 - 293 907 293 907 262 827 c 1,8,-1 - 133 877 l 1,9,10 - 180 975 180 975 262 1030 c 128,-1,11 - 344 1085 344 1085 483 1085 c 128,-1,12 - 622 1085 622 1085 712.5 992 c 128,-1,13 - 803 899 803 899 803 760 c 0,14,15 - 803 558 803 558 639 473 c 1,16,17 - 842 375 842 375 842 115 c 0,18,19 - 842 -33 842 -33 732.5 -145.5 c 128,-1,20 - 623 -258 623 -258 482 -258 c 128,-1,21 - 341 -258 341 -258 243 -198.5 c 128,-1,22 - 145 -139 145 -139 100 -45 c 1,23,-1 - 229 4 l 1,24,25 - 259 -72 259 -72 318.5 -114 c 128,-1,26 - 378 -156 378 -156 454.5 -156 c 128,-1,27 - 531 -156 531 -156 604.5 -76.5 c 128,-1,28 - 678 3 678 3 678 115 c 0,29,30 - 678 242 678 242 614 328 c 0,31,32 - 542 422 542 422 379 422 c 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: four -Encoding: 52 52 71 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<225 571 735 846> -VStem: 571 164<-238 0 102 844> -LayerCount: 2 -Fore -SplineSet -96 68 m 1,0,-1 - 571 1085 l 1,1,-1 - 735 1085 l 1,2,-1 - 735 102 l 1,3,-1 - 846 102 l 1,4,-1 - 846 0 l 1,5,-1 - 735 0 l 1,6,-1 - 735 -238 l 1,7,-1 - 571 -238 l 1,8,-1 - 571 0 l 1,9,-1 - 96 0 l 1,10,-1 - 96 68 l 1,0,-1 -571 102 m 1,11,-1 - 571 844 l 1,12,-1 - 225 102 l 1,13,-1 - 571 102 l 1,11,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: five -Encoding: 53 53 72 -Width: 942 -VWidth: 0 -Flags: W -HStem: -258 102<316 565> 983 102<422 733> -VStem: 678 164<-27 366> -LayerCount: 2 -Fore -SplineSet -182 555 m 1,0,-1 - 274 1085 l 1,1,-1 - 733 1085 l 1,2,-1 - 733 983 l 1,3,-1 - 422 983 l 1,4,-1 - 365 647 l 1,5,6 - 682 614 682 614 783 434 c 0,7,8 - 842 329 842 329 842 166 c 0,9,10 - 842 73 842 73 812 -8 c 0,11,12 - 782 -88 782 -88 732 -142 c 0,13,14 - 625 -258 625 -258 483 -258 c 128,-1,15 - 341 -258 341 -258 243 -198.5 c 128,-1,16 - 145 -139 145 -139 100 -45 c 1,17,-1 - 229 4 l 1,18,19 - 259 -72 259 -72 318.5 -114 c 128,-1,20 - 378 -156 378 -156 459 -156 c 0,21,22 - 532 -156 532 -156 600 -78 c 0,23,24 - 678 10 678 10 678 166 c 0,25,26 - 678 453 678 453 425 526 c 0,27,28 - 325 555 325 555 182 555 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: six -Encoding: 54 54 73 -Width: 942 -VWidth: 0 -Flags: W -HStem: -20 102<357 570> 586 102<311 581> -VStem: 111 164<186 545> 668 164<187 496> -LayerCount: 2 -Fore -SplineSet -285 555 m 1,0,1 - 274 458 274 458 274 385 c 0,2,3 - 274 240 274 240 326.5 161 c 128,-1,4 - 379 82 379 82 462.5 82 c 128,-1,5 - 546 82 546 82 607 162.5 c 128,-1,6 - 668 243 668 243 668 342.5 c 128,-1,7 - 668 442 668 442 611 514 c 128,-1,8 - 554 586 554 586 472 586 c 128,-1,9 - 390 586 390 586 285 555 c 1,0,1 -309 674 m 1,10,11 - 369 688 369 688 446 688 c 0,12,13 - 608 688 608 688 719.5 593.5 c 128,-1,14 - 831 499 831 499 831 351 c 128,-1,15 - 831 203 831 203 730.5 91.5 c 128,-1,16 - 630 -20 630 -20 478.5 -20 c 128,-1,17 - 327 -20 327 -20 219 90 c 128,-1,18 - 111 200 111 200 111 385 c 0,19,20 - 112 682 112 682 264 946 c 0,21,22 - 335 1069 335 1069 454 1191 c 0,23,24 - 520 1257 520 1257 590 1309 c 0,25,26 - 660 1360 660 1360 680 1372 c 2,27,-1 - 700 1384 l 1,28,-1 - 770 1323 l 1,29,30 - 717 1292 717 1292 646 1229.5 c 128,-1,31 - 575 1167 575 1167 518 1099 c 128,-1,32 - 461 1031 461 1031 400.5 916 c 128,-1,33 - 340 801 340 801 309 674 c 1,10,11 -EndSplineSet -Validated: 1 -EndChar - -StartChar: seven -Encoding: 55 55 74 -Width: 942 -VWidth: 0 -Flags: W -HStem: 983 102<170 637> -VStem: 139 664 -LayerCount: 2 -Fore -SplineSet -170 1085 m 1,0,-1 - 803 1085 l 1,1,-1 - 803 983 l 1,2,-1 - 475 -238 l 1,3,-1 - 309 -238 l 1,4,-1 - 637 983 l 1,5,-1 - 139 983 l 1,6,-1 - 170 1085 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: nine -Encoding: 57 57 75 -Width: 942 -VWidth: 0 -Flags: W -HStem: 397 102<361 631> 1004 102<338 565> -VStem: 111 164<590 910> 668 164<540 890> -LayerCount: 2 -Fore -SplineSet -657 530 m 1,0,1 - 668 627 668 627 668 700 c 0,2,3 - 668 841 668 841 602.5 922.5 c 128,-1,4 - 537 1004 537 1004 453 1004 c 0,5,6 - 274 1004 274 1004 274 733 c 0,7,8 - 274 644 274 644 331 572 c 128,-1,9 - 388 500 388 500 471.5 500 c 128,-1,10 - 555 500 555 500 657 530 c 1,0,1 -633 412 m 1,11,12 - 568 397 568 397 496 397 c 0,13,14 - 334 397 334 397 222.5 491.5 c 128,-1,15 - 111 586 111 586 111 736 c 128,-1,16 - 111 886 111 886 215 996 c 128,-1,17 - 319 1106 319 1106 483 1106 c 0,18,19 - 616 1106 616 1106 722 998 c 0,20,21 - 831 887 831 887 831 703 c 0,22,23 - 830 403 830 403 678 139 c 0,24,25 - 610 20 610 20 488 -106 c 0,26,27 - 424 -172 424 -172 353 -224 c 128,-1,28 - 282 -276 282 -276 262 -288 c 2,29,-1 - 242 -299 l 1,30,-1 - 172 -238 l 1,31,32 - 284 -172 284 -172 404 -34 c 0,33,34 - 570 160 570 160 633 412 c 1,11,12 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eight -Encoding: 56 56 76 -Width: 942 -VWidth: 0 -Flags: W -HStem: -20 102<342 623> 1352 102<368 575> -VStem: 61 174<198 550> 111 174<963 1265> 676 174<937 1242> 707 174<184 523> -LayerCount: 2 -Fore -SplineSet -520 821 m 1,0,1 - 676 936 676 936 676 1085 c 0,2,3 - 676 1196 676 1196 611.5 1274 c 128,-1,4 - 547 1352 547 1352 472.5 1352 c 128,-1,5 - 398 1352 398 1352 341.5 1284 c 128,-1,6 - 285 1216 285 1216 285 1102 c 0,7,8 - 286 998 286 998 358 932 c 0,9,10 - 416 878 416 878 520 821 c 1,0,1 -645 752 m 1,11,12 - 818 643 818 643 862 501 c 0,13,14 - 880 440 880 440 881 365 c 0,15,16 - 881 196 881 196 765.5 88 c 128,-1,17 - 650 -20 650 -20 468 -20 c 128,-1,18 - 286 -20 286 -20 173.5 93.5 c 128,-1,19 - 61 207 61 207 61 365 c 0,20,21 - 61 614 61 614 317 760 c 1,22,23 - 254 799 254 799 212 840 c 128,-1,24 - 170 881 170 881 140.5 948.5 c 128,-1,25 - 111 1016 111 1016 111 1107.5 c 128,-1,26 - 111 1199 111 1199 163.5 1280.5 c 128,-1,27 - 216 1362 216 1362 303.5 1408 c 128,-1,28 - 391 1454 391 1454 492 1454 c 0,29,30 - 641 1454 641 1454 745.5 1348.5 c 128,-1,31 - 850 1243 850 1243 850 1085 c 0,32,33 - 850 892 850 892 645 752 c 1,11,12 -430 698 m 1,34,35 - 236 589 236 589 236 365 c 0,36,37 - 236 246 236 246 303 164 c 128,-1,38 - 370 82 370 82 484 82 c 0,39,40 - 707 82 707 82 707 365 c 0,41,42 - 707 483 707 483 642 552 c 0,43,44 - 578 619 578 619 490 666 c 0,45,46 - 470 677 470 677 430 698 c 1,34,35 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ampersand -Encoding: 38 38 77 -Width: 1163 -VWidth: 0 -Flags: W -HStem: -20 102<390 735> 0 43G<901 1061> 1270 102<499 704> -VStem: 61 164<253 652> 311 139<913 1223> 963 123<452 829> -LayerCount: 2 -Fore -SplineSet -889 1208 m 1,0,-1 - 731 1174 l 1,1,2 - 707 1225 707 1225 689 1242 c 0,3,4 - 661 1270 661 1270 591.5 1270 c 128,-1,5 - 522 1270 522 1270 486.5 1212.5 c 128,-1,6 - 451 1155 451 1155 451 1090 c 0,7,8 - 451 1024 451 1024 484 942 c 0,9,10 - 528 832 528 832 598 725 c 2,11,-1 - 877 289 l 1,12,13 - 963 476 963 476 963 877 c 1,14,-1 - 1085 829 l 1,15,16 - 1085 425 1085 425 934 199 c 1,17,-1 - 1061 0 l 1,18,-1 - 928 0 l 1,19,-1 - 858 109 l 1,20,21 - 726 -20 726 -20 524 -20 c 128,-1,22 - 322 -20 322 -20 191.5 109.5 c 128,-1,23 - 61 239 61 239 61 451 c 0,24,25 - 61 615 61 615 147 735 c 128,-1,26 - 233 855 233 855 360 899 c 1,27,28 - 311 999 311 999 311 1081 c 0,29,30 - 311 1236 311 1236 382.5 1304 c 128,-1,31 - 454 1372 454 1372 618 1372 c 0,32,33 - 815 1372 815 1372 889 1208 c 1,0,-1 -418 799 m 1,34,35 - 332 762 332 762 278.5 670.5 c 128,-1,36 - 225 579 225 579 225 431 c 128,-1,37 - 225 283 225 283 316.5 182.5 c 128,-1,38 - 408 82 408 82 563 82 c 128,-1,39 - 718 82 718 82 809 184 c 1,40,-1 - 418 799 l 1,34,35 -EndSplineSet -Validated: 1 -EndChar - -StartChar: parenleft -Encoding: 40 40 78 -Width: 548 -VWidth: 0 -Flags: W -HStem: 0 43G<330 446> 1393 41G<330 446> -VStem: 102 164<373 1061> -LayerCount: 2 -Fore -SplineSet -128 446 m 128,-1,1 - 102 574 102 574 102 697.5 c 128,-1,2 - 102 821 102 821 115.5 917.5 c 128,-1,3 - 129 1014 129 1014 150 1083.5 c 128,-1,4 - 171 1153 171 1153 197 1213.5 c 128,-1,5 - 223 1274 223 1274 249 1314 c 0,6,7 - 304 1397 304 1397 344 1434 c 1,8,-1 - 446 1434 l 1,9,10 - 335 1273 335 1273 286 972 c 0,11,12 - 266 848 266 848 266 716 c 128,-1,13 - 266 584 266 584 284 462 c 0,14,15 - 300 351 300 351 330 260 c 0,16,17 - 386 92 386 92 428 28 c 2,18,-1 - 446 0 l 1,19,-1 - 344 0 l 1,20,21 - 314 24 314 24 266 96 c 128,-1,22 - 218 168 218 168 186 243 c 128,-1,0 - 154 318 154 318 128 446 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: parenright -Encoding: 41 41 79 -Width: 548 -VWidth: 0 -Flags: W -HStem: 0 43G<102 219> 1393 41G<102 219> -VStem: 283 164<373 1061> -LayerCount: 2 -Fore -SplineSet -420 988 m 128,-1,1 - 446 860 446 860 446 736.5 c 128,-1,2 - 446 613 446 613 432.5 516.5 c 128,-1,3 - 419 420 419 420 398 350 c 128,-1,4 - 377 280 377 280 351 220 c 0,5,6 - 323 155 323 155 300 120 c 0,7,8 - 247 38 247 38 205 0 c 1,9,-1 - 102 0 l 1,10,11 - 216 164 216 164 264 462 c 0,12,13 - 284 583 284 583 284 711 c 0,14,15 - 284 714 284 714 284 718 c 0,16,17 - 284 850 284 850 265 972 c 128,-1,18 - 246 1094 246 1094 219 1174 c 0,19,20 - 162 1344 162 1344 120 1406 c 2,21,-1 - 102 1434 l 1,22,-1 - 205 1434 l 1,23,24 - 235 1410 235 1410 282.5 1338 c 128,-1,25 - 330 1266 330 1266 362 1191 c 128,-1,0 - 394 1116 394 1116 420 988 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: asterisk -Encoding: 42 42 80 -Width: 864 -VWidth: 0 -Flags: W -HStem: 678 674 -LayerCount: 2 -Fore -SplineSet -391 1057 m 1,0,-1 - 369 1352 l 1,1,-1 - 496 1352 l 1,2,-1 - 473 1057 l 1,3,-1 - 748 1169 l 1,4,-1 - 786 1049 l 1,5,-1 - 498 979 l 1,6,-1 - 690 754 l 1,7,-1 - 588 678 l 1,8,-1 - 432 930 l 1,9,-1 - 276 678 l 1,10,-1 - 174 754 l 1,11,-1 - 367 979 l 1,12,-1 - 78 1049 l 1,13,-1 - 117 1169 l 1,14,-1 - 391 1057 l 1,0,-1 -391 1057 m 1,15,-1 -367 979 m 1,16,-1 -432 930 m 1,17,-1 -498 979 m 1,18,-1 -473 1057 m 1,19,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: plus -Encoding: 43 43 81 -Width: 856 -VWidth: 0 -Flags: W -HStem: 348 102<82 377 479 774> -VStem: 377 102<53 348 451 745> -LayerCount: 2 -Fore -SplineSet -479 348 m 1,0,-1 - 479 53 l 1,1,-1 - 377 53 l 1,2,-1 - 377 348 l 1,3,-1 - 82 348 l 1,4,-1 - 82 451 l 1,5,-1 - 377 451 l 1,6,-1 - 377 745 l 1,7,-1 - 479 745 l 1,8,-1 - 479 451 l 1,9,-1 - 774 451 l 1,10,-1 - 774 348 l 1,11,-1 - 479 348 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: hyphen -Encoding: 45 45 82 -Width: 649 -VWidth: 0 -Flags: W -HStem: 348 102<82 567> -VStem: 82 485<348 451> -LayerCount: 2 -Fore -SplineSet -82 451 m 1,0,-1 - 567 451 l 1,1,-1 - 567 348 l 1,2,-1 - 82 348 l 1,3,-1 - 82 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: less -Encoding: 60 60 83 -Width: 856 -VWidth: 0 -Flags: W -HStem: 860 41G<623 711> -VStem: 115 627 -LayerCount: 2 -Fore -SplineSet -115 504 m 1,0,-1 - 682 901 l 1,1,-1 - 741 817 l 1,2,-1 - 293 504 l 1,3,-1 - 741 193 l 1,4,-1 - 682 109 l 1,5,-1 - 115 504 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: greater -Encoding: 62 62 84 -Width: 856 -VWidth: 0 -Flags: W -HStem: 860 41G<145 233> -VStem: 115 627 -LayerCount: 2 -Fore -SplineSet -741 506 m 5,0,-1 - 174 109 l 1,1,-1 - 115 193 l 1,2,-1 - 563 506 l 1,3,-1 - 115 817 l 1,4,-1 - 174 901 l 1,5,-1 - 741 506 l 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: equal -Encoding: 61 61 85 -Width: 708 -VWidth: 0 -Flags: W -HStem: 348 102<82 627> 573 102<82 627> -VStem: 82 545<348 451 573 676> -LayerCount: 2 -Fore -SplineSet -82 676 m 1,0,-1 - 627 676 l 1,1,-1 - 627 573 l 1,2,-1 - 82 573 l 1,3,-1 - 82 676 l 1,0,-1 -82 451 m 1,4,-1 - 627 451 l 1,5,-1 - 627 348 l 1,6,-1 - 82 348 l 1,7,-1 - 82 451 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: at -Encoding: 64 64 86 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<562 954> 262 102<878 998> 279 66<595 758> 860 66<596 734> 1126 102<518 854> -VStem: 82 174<390 840> 426 104<400 801> 766 102<399 837> 1051 174<518 923> -LayerCount: 2 -Fore -SplineSet -872 745 m 1,0,1 - 868 512 l 1,2,3 - 868 426 868 426 882.5 395.5 c 128,-1,4 - 897 365 897 365 926 365 c 0,5,6 - 1051 365 1051 365 1051 723 c 0,7,8 - 1051 816 1051 816 1019 895 c 128,-1,9 - 987 974 987 974 937 1023 c 0,10,11 - 832 1126 832 1126 727 1126 c 128,-1,12 - 622 1126 622 1126 541 1093 c 128,-1,13 - 460 1060 460 1060 395.5 998 c 128,-1,14 - 331 936 331 936 293.5 836.5 c 128,-1,15 - 256 737 256 737 256 621 c 128,-1,16 - 256 505 256 505 289 413.5 c 128,-1,17 - 322 322 322 322 374 262 c 0,18,19 - 428 202 428 202 494 161 c 0,20,21 - 619 82 619 82 752 82 c 0,22,23 - 990 82 990 82 1108 264 c 1,24,-1 - 1229 209 l 1,25,26 - 1149 106 1149 106 1015.5 43 c 128,-1,27 - 882 -20 882 -20 721 -20 c 0,28,29 - 544 -20 544 -20 382 80 c 0,30,31 - 196 194 196 194 123 384 c 0,32,33 - 82 490 82 490 82 607 c 128,-1,34 - 82 724 82 724 118.5 823.5 c 128,-1,35 - 155 923 155 923 216 995.5 c 128,-1,36 - 277 1068 277 1068 355 1122 c 0,37,38 - 511 1229 511 1229 679 1229 c 0,39,-1 - 682 1229 l 0,40,41 - 926 1229 926 1229 1075.5 1092 c 128,-1,42 - 1225 955 1225 955 1225 723 c 0,43,44 - 1225 610 1225 610 1175.5 502 c 128,-1,45 - 1126 394 1126 394 1049 328 c 128,-1,46 - 972 262 972 262 901 262 c 128,-1,47 - 830 262 830 262 801 319 c 1,48,49 - 743 279 743 279 647 279 c 0,50,51 - 426 279 426 279 426 614 c 0,52,53 - 426 751 426 751 491 838.5 c 128,-1,54 - 556 926 556 926 650.5 926 c 128,-1,55 - 745 926 745 926 808.5 881 c 128,-1,56 - 872 836 872 836 872 745 c 1,0,1 -766 512 m 1,57,-1 - 770 745 l 2,58,59 - 770 783 770 783 739.5 821.5 c 128,-1,60 - 709 860 709 860 676 860 c 0,61,62 - 605 860 605 860 567.5 792.5 c 128,-1,63 - 530 725 530 725 530 611.5 c 128,-1,64 - 530 498 530 498 564 421 c 128,-1,65 - 598 344 598 344 666 344 c 0,66,67 - 710 344 710 344 731.5 355 c 128,-1,68 - 753 366 753 366 774 397 c 1,69,70 - 766 438 766 438 766 512 c 1,57,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: bracketleft -Encoding: 91 91 87 -Width: 432 -VWidth: 0 -Flags: W -HStem: 0 82<205 340> 1270 82<205 340> -VStem: 92 248<0 82 1270 1352> 92 113<82 1270> -LayerCount: 2 -Fore -SplineSet -340 0 m 1,0,-1 - 92 0 l 1,1,-1 - 92 1352 l 1,2,-1 - 340 1352 l 1,3,-1 - 340 1270 l 1,4,-1 - 205 1270 l 1,5,-1 - 205 82 l 1,6,-1 - 340 82 l 1,7,-1 - 340 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: bracketright -Encoding: 93 93 88 -Width: 432 -VWidth: 0 -Flags: W -HStem: 0 82<92 227> 1270 82<92 227> -VStem: 92 248<0 82 1270 1352> 227 113<82 1270> -LayerCount: 2 -Fore -SplineSet -92 1352 m 1,0,-1 - 340 1352 l 1,1,-1 - 340 0 l 1,2,-1 - 92 0 l 1,3,-1 - 92 82 l 1,4,-1 - 227 82 l 1,5,-1 - 227 1270 l 1,6,-1 - 92 1270 l 1,7,-1 - 92 1352 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: underscore -Encoding: 95 95 89 -Width: 692 -VWidth: 0 -Flags: W -HStem: -184 102<0 692> -LayerCount: 2 -Fore -SplineSet -0 -82 m 1,0,-1 - 692 -82 l 1,1,-1 - 692 -184 l 1,2,-1 - 0 -184 l 1,3,-1 - 0 -82 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: braceleft -Encoding: 123 123 90 -Width: 530 -VWidth: 0 -Flags: W -HStem: 0 43G<208 449> 1393 41G<208 449> -VStem: 82 367 -LayerCount: 2 -Fore -SplineSet -346 1434 m 1,0,-1 - 449 1434 l 1,1,2 - 346 1358 346 1358 338 1155 c 0,3,4 - 334 1072 334 1072 328 989 c 0,5,6 - 314 792 314 792 184 717 c 1,7,8 - 244 683 244 683 278 624 c 128,-1,9 - 312 565 312 565 320 500.5 c 128,-1,10 - 328 436 328 436 334 362 c 0,11,12 - 340 286 340 286 344 222 c 0,13,14 - 355 68 355 68 449 0 c 1,15,-1 - 346 0 l 1,16,17 - 236 63 236 63 206 187 c 0,18,19 - 185 274 185 274 181 380 c 0,20,21 - 176 486 176 486 170 540 c 0,22,23 - 155 664 155 664 82 717 c 1,24,25 - 156 770 156 770 170 894 c 0,26,27 - 176 948 176 948 179 1008.5 c 128,-1,28 - 182 1069 182 1069 188 1130 c 0,29,30 - 192 1191 192 1191 206 1247 c 0,31,32 - 236 1371 236 1371 346 1434 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: braceright -Encoding: 125 125 91 -Width: 530 -VWidth: 0 -Flags: W -HStem: 0 43G<82 323> 1393 41G<82 323> -VStem: 82 367 -LayerCount: 2 -Fore -SplineSet -184 0 m 1,0,-1 - 82 0 l 1,1,2 - 186 76 186 76 194 279 c 0,3,4 - 198 362 198 362 202 445 c 0,5,6 - 215 642 215 642 346 717 c 1,7,8 - 286 751 286 751 252 810 c 128,-1,9 - 218 869 218 869 210 933.5 c 128,-1,10 - 202 998 202 998 196 1072 c 0,11,12 - 190 1148 190 1148 186 1212 c 0,13,14 - 175 1366 175 1366 82 1434 c 1,15,-1 - 184 1434 l 1,16,17 - 249 1397 249 1397 286 1336 c 128,-1,18 - 323 1275 323 1275 332.5 1209.5 c 128,-1,19 - 342 1144 342 1144 347.5 1069 c 128,-1,20 - 353 994 353 994 356 930 c 0,21,22 - 363 780 363 780 449 717 c 1,23,24 - 363 654 363 654 356 504 c 0,25,26 - 348 330 348 330 335 245 c 0,27,28 - 310 72 310 72 184 0 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: gravecomb -Encoding: 768 768 92 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: -696 350 -AnchorPoint: "mktop" -453 1638 basemark 0 -AnchorPoint: "mktop" -455 1188 mark 0 -AnchorPoint: "top" -455 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --586 1642 m 25,0,-1 - -346 1309 l 1,1,-1 - -410 1255 l 1,2,-1 - -696 1550 l 1,3,-1 - -586 1642 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: acutecomb -Encoding: 769 769 93 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: -696 350 -AnchorPoint: "mktop" -586 1638 basemark 0 -AnchorPoint: "mktop" -588 1189 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --457 1642 m 25,0,-1 - -346 1550 l 1,1,-1 - -633 1255 l 1,2,-1 - -696 1309 l 1,3,-1 - -457 1642 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0302 -Encoding: 770 770 94 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1257 299 -VStem: -862 551 -AnchorPoint: "mktop" -586 1556 basemark 0 -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --311 1348 m 1,0,-1 - -403 1257 l 1,1,-1 - -586 1434 l 1,2,-1 - -770 1257 l 1,3,-1 - -862 1348 l 1,4,-1 - -586 1556 l 1,5,-1 - -311 1348 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tildecomb -Encoding: 771 771 95 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 117<-585 -386> 1335 117<-769 -570> -VStem: -860 84<1270 1320> -379 84<1402 1452> -AnchorPoint: "mktop" -586 1479 basemark 0 -AnchorPoint: "mktop" -586 1188 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --379 1452 m 1,0,-1 - -295 1452 l 1,1,2 - -304 1372 -304 1372 -357 1321 c 128,-1,3 - -410 1270 -410 1270 -496 1270 c 0,4,5 - -534 1270 -534 1270 -592.5 1302.5 c 128,-1,6 - -651 1335 -651 1335 -670 1335 c 0,7,8 - -767 1335 -767 1335 -776 1270 c 1,9,-1 - -860 1270 l 1,10,11 - -851 1350 -851 1350 -798 1401 c 128,-1,12 - -745 1452 -745 1452 -659 1452 c 0,13,14 - -621 1452 -621 1452 -562.5 1419 c 128,-1,15 - -504 1386 -504 1386 -485 1386 c 0,16,17 - -388 1386 -388 1386 -379 1452 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0304 -Encoding: 772 772 96 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 82<-834 -362> -VStem: -834 471<1270 1352> -AnchorPoint: "mktop" -587 1187 mark 0 -AnchorPoint: "mktop" -586 1352 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --834 1352 m 1,0,-1 - -362 1352 l 1,1,-1 - -362 1270 l 1,2,-1 - -834 1270 l 1,3,-1 - -834 1352 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0306 -Encoding: 774 774 97 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 117<-710 -466> -VStem: -819 78<1427 1464> -434 78<1427 1464> -AnchorPoint: "mktop" -586 1491 basemark 0 -AnchorPoint: "mktop" -586 1192 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --689.5 1416 m 128,-1,1 - -643 1386 -643 1386 -587.5 1386 c 128,-1,2 - -532 1386 -532 1386 -485.5 1416 c 128,-1,3 - -439 1446 -439 1446 -434 1481 c 1,4,-1 - -356 1460 l 1,5,6 - -365 1382 -365 1382 -432.5 1326 c 128,-1,7 - -500 1270 -500 1270 -588 1270 c 128,-1,8 - -676 1270 -676 1270 -743 1326 c 128,-1,9 - -810 1382 -810 1382 -819 1460 c 1,10,-1 - -741 1481 l 1,11,0 - -736 1446 -736 1446 -689.5 1416 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0307 -Encoding: 775 775 98 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 178<-674 -510> -VStem: -674 164<1270 1448> -AnchorPoint: "mktop" -586 1454 basemark 0 -AnchorPoint: "mktop" -586 1188 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --674 1448 m 1,0,-1 - -510 1448 l 1,1,-1 - -510 1270 l 1,2,-1 - -674 1270 l 1,3,-1 - -674 1448 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0308 -Encoding: 776 776 99 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 178<-856 -692 -487 -324> -VStem: -856 164<1270 1448> -487 164<1270 1448> -AnchorPoint: "mktop" -586 1475 basemark 0 -AnchorPoint: "mktop" -586 1188 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 186 0 2 -Refer: 98 775 N 1 0 0 1 -182 0 2 -Validated: 1 -EndChar - -StartChar: uni030A -Encoding: 778 778 100 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1167 61<-655 -520> 1417 61<-655 -520> -VStem: -743 61<1255 1391> -494 61<1255 1391> -AnchorPoint: "mktop" -588 1479 basemark 0 -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --682 1323 m 128,-1,1 - -682 1285 -682 1285 -654 1257 c 128,-1,2 - -626 1229 -626 1229 -588 1229 c 128,-1,3 - -550 1229 -550 1229 -522 1257 c 128,-1,4 - -494 1285 -494 1285 -494 1323 c 128,-1,5 - -494 1361 -494 1361 -522 1389 c 128,-1,6 - -550 1417 -550 1417 -588 1417 c 128,-1,7 - -626 1417 -626 1417 -654 1389 c 128,-1,0 - -682 1361 -682 1361 -682 1323 c 128,-1,1 --743 1323 m 128,-1,9 - -743 1388 -743 1388 -697.5 1433.5 c 128,-1,10 - -652 1479 -652 1479 -588 1479 c 128,-1,11 - -524 1479 -524 1479 -478 1433.5 c 128,-1,12 - -432 1388 -432 1388 -432 1323 c 128,-1,13 - -432 1258 -432 1258 -478 1212.5 c 128,-1,14 - -524 1167 -524 1167 -588 1167 c 128,-1,15 - -652 1167 -652 1167 -697.5 1212.5 c 128,-1,8 - -743 1258 -743 1258 -743 1323 c 128,-1,9 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni030B -Encoding: 779 779 101 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: -819 350 -573 350 -AnchorPoint: "mktop" -586 1638 basemark 0 -AnchorPoint: "mktop" -586 1188 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 123 0 2 -Refer: 93 769 N 1 0 0 1 -123 0 2 -Validated: 1 -EndChar - -StartChar: uni030C -Encoding: 780 780 102 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1139 387 -VStem: -827 479 -AnchorPoint: "mktop" -586 1526 basemark 0 -AnchorPoint: "mktop" -586 1188 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --588 1139 m 1,0,-1 - -827 1473 l 1,1,-1 - -764 1526 l 1,2,-1 - -588 1346 l 1,3,-1 - -412 1526 l 1,4,-1 - -348 1473 l 1,5,-1 - -588 1139 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni030F -Encoding: 783 783 103 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: -819 350 -573 350 -AnchorPoint: "top" -449 1188 mark 0 -AnchorPoint: "mktop" -446 1188 mark 0 -AnchorPoint: "mktop" -446 1638 basemark 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 -123 0 2 -Refer: 92 768 N 1 0 0 1 123 0 2 -Validated: 1 -EndChar - -StartChar: uni0311 -Encoding: 785 785 104 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1343 117<-710 -466> -VStem: -819 78<1266 1303> -434 78<1266 1303> -AnchorPoint: "mktop" -588 1460 basemark 0 -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --588 1343 m 128,-1,1 - -644 1343 -644 1343 -690 1313.5 c 128,-1,2 - -736 1284 -736 1284 -741 1249 c 1,3,-1 - -819 1270 l 1,4,5 - -810 1348 -810 1348 -743 1404 c 128,-1,6 - -676 1460 -676 1460 -588 1460 c 128,-1,7 - -500 1460 -500 1460 -432.5 1404 c 128,-1,8 - -365 1348 -365 1348 -356 1270 c 1,9,-1 - -434 1249 l 1,10,11 - -439 1284 -439 1284 -485.5 1313.5 c 128,-1,0 - -532 1343 -532 1343 -588 1343 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0312 -Encoding: 786 786 105 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 367<-597 -563> -VStem: -668 147<1270 1482> -AnchorPoint: "mktop" -582 1636 basemark 0 -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --520 1270 m 1,0,-1 - -668 1270 l 1,1,2 - -668 1472 -668 1472 -634 1554 c 0,3,4 - -619 1591 -619 1591 -605.5 1611.5 c 128,-1,5 - -592 1632 -592 1632 -590 1636 c 1,6,-1 - -514 1636 l 1,7,8 - -563 1567 -563 1567 -563 1485 c 0,9,10 - -563 1460 -563 1460 -541.5 1390 c 128,-1,11 - -520 1320 -520 1320 -520 1270 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0313 -Encoding: 787 787 106 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 367<-584 -550> -VStem: -627 147<1424 1636> -AnchorPoint: "mktop" -588 1636 basemark 0 -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --627 1636 m 1,0,-1 - -479 1636 l 1,1,2 - -480 1434 -480 1434 -514 1352 c 0,3,4 - -529 1315 -529 1315 -542 1294.5 c 128,-1,5 - -555 1274 -555 1274 -557 1270 c 1,6,-1 - -633 1270 l 1,7,8 - -584 1339 -584 1339 -584 1421 c 0,9,10 - -584 1446 -584 1446 -605.5 1516 c 128,-1,11 - -627 1586 -627 1586 -627 1636 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0314 -Encoding: 788 788 107 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 367<-632 -598> -VStem: -702 147<1424 1636> -AnchorPoint: "top" -588 1188 mark 0 -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "mktop" -588 1636 basemark 0 -LayerCount: 2 -Fore -SplineSet --555 1636 m 1,0,1 - -555 1586 -555 1586 -576.5 1516 c 128,-1,2 - -598 1446 -598 1446 -598 1421 c 0,3,4 - -598 1339 -598 1339 -549 1270 c 1,5,-1 - -625 1270 l 1,6,7 - -627 1274 -627 1274 -638.5 1293 c 128,-1,8 - -650 1312 -650 1312 -654 1321 c 2,9,-1 - -668 1352 l 2,10,11 - -678 1374 -678 1374 -682 1398 c 2,12,-1 - -692 1456 l 2,13,14 - -702 1514 -702 1514 -702 1636 c 1,15,-1 - -555 1636 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0326 -Encoding: 806 806 108 -Width: 0 -VWidth: 0 -Flags: W -HStem: -401 49<-745 -571> -164 57<-672 -562> -VStem: -524 127<-328 -188> -AnchorPoint: "cedilla" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --672 -106 m 17,0,1 - -554 -106 -554 -106 -475.5 -148 c 128,-1,2 - -397 -190 -397 -190 -397 -252 c 0,3,4 - -397 -314 -397 -314 -488.5 -357.5 c 128,-1,5 - -580 -401 -580 -401 -745 -401 c 1,6,-1 - -745 -352 l 1,7,8 - -634 -352 -634 -352 -579 -333 c 128,-1,9 - -524 -314 -524 -314 -524 -265 c 0,10,11 - -524 -216 -524 -216 -556.5 -194.5 c 128,-1,12 - -589 -173 -589 -173 -672 -164 c 1,13,-1 - -672 -106 l 17,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0327 -Encoding: 807 807 109 -Width: 0 -VWidth: 0 -Flags: W -HStem: -401 49<-745 -571> -164 164<-643 -550> -VStem: -643 106<-82 0> -524 127<-328 -188> -AnchorPoint: "cedilla" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --537 0 m 25,0,-1 - -549 -111 l 1,1,2 - -483 -122 -483 -122 -440 -157.5 c 128,-1,3 - -397 -193 -397 -193 -397 -254 c 0,4,5 - -397 -315 -397 -315 -488.5 -358 c 128,-1,6 - -580 -401 -580 -401 -745 -401 c 1,7,-1 - -745 -352 l 1,8,9 - -634 -352 -634 -352 -579 -333 c 128,-1,10 - -524 -314 -524 -314 -524 -265 c 0,11,12 - -524 -216 -524 -216 -556.5 -194.5 c 128,-1,13 - -589 -173 -589 -173 -672 -164 c 1,14,-1 - -643 0 l 1,15,-1 - -537 0 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0328 -Encoding: 808 808 110 -Width: 0 -VWidth: 0 -Flags: W -HStem: -319 37<-533 -430> -VStem: -713 115<-254 -86> -AnchorPoint: "ogonek" -483 0 mark 0 -LayerCount: 2 -Fore -SplineSet --483 25 m 9,0,1 - -483 0 l 1,2,3 - -530 -24 -530 -24 -564 -62.5 c 128,-1,4 - -598 -101 -598 -101 -598 -158.5 c 128,-1,5 - -598 -216 -598 -216 -561.5 -249.5 c 128,-1,6 - -525 -283 -525 -283 -430 -283 c 1,7,-1 - -430 -319 l 1,8,9 - -432 -319 -432 -319 -435 -319 c 0,10,11 - -651 -319 -651 -319 -700 -232 c 0,12,13 - -712 -210 -712 -210 -713 -186 c 0,14,15 - -713 -117 -713 -117 -641 -58.5 c 128,-1,16 - -569 0 -569 0 -483 25 c 9,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0237 -Encoding: 567 567 111 -Width: 536 -VWidth: 0 -Flags: W -HStem: -348 102<-3 219> 860 41G<252 416> -VStem: 252 164<-216 901> -AnchorPoint: "bottom" 129 -348 basechar 0 -AnchorPoint: "horn" 369 717 basechar 0 -AnchorPoint: "ogonek" 287 -266 basechar 0 -AnchorPoint: "cedilla" 139 -348 basechar 0 -AnchorPoint: "top" 334 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -33 -195 m 1,0,1 - 69 -246 69 -246 135 -246 c 128,-1,2 - 201 -246 201 -246 226.5 -187.5 c 128,-1,3 - 252 -129 252 -129 252 0 c 2,4,-1 - 252 901 l 1,5,-1 - 416 901 l 1,6,-1 - 416 -68 l 2,7,8 - 416 -272 416 -272 220 -332 c 0,9,10 - 168 -348 168 -348 111 -348 c 0,11,12 - -19 -348 -19 -348 -96 -256 c 1,13,-1 - 33 -195 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: dotlessi -Encoding: 305 305 112 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43G<123 287> 860 41G<123 287> -VStem: 123 164<0 901> -AnchorPoint: "horn" 250 717 basechar 0 -AnchorPoint: "cedilla" 209 0 basechar 0 -AnchorPoint: "bottom" 203 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -AnchorPoint: "top" 207 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 287 901 l 1,1,-1 - 287 0 l 1,2,-1 - 123 0 l 1,3,-1 - 123 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: agrave -Encoding: 224 224 113 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1071 387 -VStem: 94 164<178 440> 248 350 694 164<0 16 107 507 606 754> -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "top" 563 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 944 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: egrave -Encoding: 232 232 114 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1071 387 -VStem: 90 164<256 451> 289 350 -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "top" 530 1434 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 985 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: igrave -Encoding: 236 236 115 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1071 387 -VStem: -35 350 123 164<0 901> -AnchorPoint: "ogonek" 279 0 basechar 0 -AnchorPoint: "bottom" 203 0 basechar 0 -AnchorPoint: "cedilla" 209 0 basechar 0 -AnchorPoint: "horn" 250 717 basechar 0 -AnchorPoint: "top" 205 1432 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 S 1 0 0 1 662 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ograve -Encoding: 242 242 116 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1071 387 -VStem: 90 164<231 648> 293 350 807 164<241 660> -AnchorPoint: "top" 535 1434 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 989 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ugrave -Encoding: 249 249 117 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1071 387 -VStem: 143 164<204 901> 307 350 780 164<0 33 135 901> -AnchorPoint: "top" 549 1434 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1004 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: aacute -Encoding: 225 225 118 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1071 387 -VStem: 94 164<178 440> 381 350 694 164<0 16 107 507 606 754> -AnchorPoint: "top" 451 1434 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "horn" 811 717 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 S 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: eacute -Encoding: 233 233 119 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1071 387 -VStem: 90 164<256 451> 422 350 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "top" 530 1434 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: iacute -Encoding: 237 237 120 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1071 387 -VStem: 98 350 123 164<0 901> -AnchorPoint: "top" 205 1432 basechar 0 -AnchorPoint: "horn" 250 717 basechar 0 -AnchorPoint: "cedilla" 209 0 basechar 0 -AnchorPoint: "bottom" 203 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 S 1 0 0 1 795 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: oacute -Encoding: 243 243 121 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1071 387 -VStem: 90 164<231 648> 426 350 807 164<241 660> -AnchorPoint: "cedilla" 506 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "top" 535 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uacute -Encoding: 250 250 122 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1071 387 -VStem: 143 164<204 901> 440 350 780 164<0 33 135 901> -AnchorPoint: "cedilla" 522 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "top" 549 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: yacute -Encoding: 253 253 123 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 860 41<45 209 685 864> 1071 387 -VStem: 352 350 -AnchorPoint: "top" 461 1430 basechar 0 -AnchorPoint: "ogonek" 614 0 basechar 0 -AnchorPoint: "bottom" 365 -315 basechar 0 -AnchorPoint: "cedilla" 242 -328 basechar 0 -AnchorPoint: "horn" 762 717 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 S 1 0 0 1 1049 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: acircumflex -Encoding: 226 226 124 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1073 299 -VStem: 94 164<178 440> 215 551 694 164<0 16 107 507 606 754> -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "top" 489 1352 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ecircumflex -Encoding: 234 234 125 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1073 299 -VStem: 90 164<256 451> 256 551 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "top" 530 1434 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: icircumflex -Encoding: 238 238 126 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1073 299 -VStem: -68 551 123 164<0 901> -AnchorPoint: "top" 205 1432 basechar 0 -AnchorPoint: "horn" 250 717 basechar 0 -AnchorPoint: "cedilla" 209 0 basechar 0 -AnchorPoint: "bottom" 203 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 795 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ocircumflex -Encoding: 244 244 127 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1073 299 -VStem: 90 164<231 648> 260 551 807 164<241 660> -AnchorPoint: "cedilla" 506 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "top" 535 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ucircumflex -Encoding: 251 251 128 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1073 299 -VStem: 143 164<204 901> 274 551 780 164<0 33 135 901> -AnchorPoint: "cedilla" 522 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "top" 549 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: atilde -Encoding: 227 227 129 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1085 117<493 691> 1151 117<308 507> -VStem: 94 164<178 440> 217 84<1085 1136> 694 164<0 16 107 507 606 754> 698 84<1217 1268> -AnchorPoint: "top" 489 1276 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "horn" 811 717 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ntilde -Encoding: 241 241 130 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 784 948> 819 102<385 697> 860 41<147 311> 1085 117<552 751> 1151 117<368 566> -VStem: 147 164<0 756 870 901> 276 84<1085 1136> 758 84<1217 1268> 784 164<0 717> -AnchorPoint: "top" 549 1300 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "ogonek" 877 0 basechar 0 -AnchorPoint: "horn" 856 717 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1137 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: otilde -Encoding: 245 245 131 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1085 117<538 736> 1151 117<353 552> -VStem: 90 164<231 648> 262 84<1085 1136> 743 84<1217 1268> 807 164<241 660> -AnchorPoint: "cedilla" 506 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "top" 535 1290 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: adieresis -Encoding: 228 228 132 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1085 178<221 385 590 754> -VStem: 94 164<178 440> 221 164<1085 1264> 590 164<1085 1264> 694 164<0 16 107 507 606 754> -AnchorPoint: "top" 489 1278 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "horn" 811 717 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: aring -Encoding: 229 229 133 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 983 61<422 557> 1233 61<422 557> -VStem: 94 164<178 440> 334 61<1071 1206> 584 61<1071 1206> 694 164<0 16 107 507 606 754> -AnchorPoint: "top" 489 1348 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "horn" 811 717 basechar 0 -LayerCount: 2 -Fore -Refer: 100 778 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: edieresis -Encoding: 235 235 134 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1085 178<262 426 631 795> -VStem: 90 164<256 451> 262 164<1085 1264> 631 164<1085 1264> -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "top" 530 1298 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: idieresis -Encoding: 239 239 135 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1085 178<-61 102 307 471> -VStem: -61 164<1085 1264> 123 164<0 901> 307 164<1085 1264> -CounterMasks: 1 1c -AnchorPoint: "top" 205 1296 basechar 0 -AnchorPoint: "horn" 250 717 basechar 0 -AnchorPoint: "cedilla" 209 0 basechar 0 -AnchorPoint: "bottom" 203 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 795 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: odieresis -Encoding: 246 246 136 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1085 178<266 430 635 799> -VStem: 90 164<231 648> 266 164<1085 1264> 635 164<1085 1264> 807 164<241 660> -AnchorPoint: "cedilla" 506 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "top" 535 1290 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: udieresis -Encoding: 252 252 137 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1085 178<281 444 649 813> -VStem: 143 164<204 901> 281 164<1085 1264> 649 164<1085 1264> 780 164<0 33 135 901> -AnchorPoint: "cedilla" 522 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "top" 549 1290 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Agrave -Encoding: 192 192 138 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1501 387 -VStem: 410 350 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "top" 750 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1106 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Aacute -Encoding: 193 193 139 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1501 387 -VStem: 543 350 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "top" 545 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Acircumflex -Encoding: 194 194 140 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1503 299 -VStem: 377 551 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "top" 647 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Atilde -Encoding: 195 195 141 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1516 117<654 853> 1581 117<470 669> -VStem: 379 84<1516 1566> 860 84<1647 1698> -AnchorPoint: "top" 651 1786 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "horn" 819 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Adieresis -Encoding: 196 196 142 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1516 178<383 547 752 915> -VStem: 383 164<1516 1694> 752 164<1516 1694> -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "top" 647 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -Substitution2: "'ss01' Style Set 1 in Latin-1" Adieresislowered -EndChar - -StartChar: Aring -Encoding: 197 197 143 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 21G<39 210.268 1092.68 1264> 410 102<389 913> 1663 62<582.81 719.274> -VStem: 496 61<1501.43 1637.03> 745 62<1501.01 1637.45> -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "top" 647 1720 basechar 0 -LayerCount: 2 -Fore -SplineSet -573 1434 m 1,0,1 - 496 1480 496 1480 496 1557 c 128,-1,2 - 496 1634 496 1634 541.5 1679.5 c 128,-1,3 - 587 1725 587 1725 651 1725 c 128,-1,4 - 715 1725 715 1725 761 1679.5 c 128,-1,5 - 807 1634 807 1634 807 1557 c 128,-1,6 - 807 1480 807 1480 730 1434 c 1,7,-1 - 741 1434 l 1,8,-1 - 1264 0 l 1,9,-1 - 1100 0 l 1,10,-1 - 950 410 l 1,11,-1 - 352 410 l 1,12,-1 - 203 0 l 1,13,-1 - 39 0 l 1,14,-1 - 561 1434 l 1,15,-1 - 573 1434 l 1,0,1 -557 1569 m 128,-1,17 - 557 1531 557 1531 585 1503 c 128,-1,18 - 613 1475 613 1475 651 1475 c 128,-1,19 - 689 1475 689 1475 717 1503 c 128,-1,20 - 745 1531 745 1531 745 1569 c 128,-1,21 - 745 1607 745 1607 717 1635 c 128,-1,22 - 689 1663 689 1663 651 1663 c 128,-1,23 - 613 1663 613 1663 585 1635 c 128,-1,16 - 557 1607 557 1607 557 1569 c 128,-1,17 -651 1231 m 1,24,-1 - 389 512 l 1,25,-1 - 913 512 l 1,26,-1 - 651 1231 l 1,24,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Egrave -Encoding: 200 200 144 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1501 387 -VStem: 174 174<102 799 901 1331> 373 350 -AnchorPoint: "top" 614 1884 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "horn" 942 1384 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 S 1 0 0 1 1069 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Eacute -Encoding: 201 201 145 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1501 387 -VStem: 174 174<102 799 901 1331> 506 350 -AnchorPoint: "top" 614 1886 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "horn" 942 1384 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 S 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ecircumflex -Encoding: 202 202 146 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1503 299 -VStem: 174 174<102 799 901 1331> 340 551 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "top" 610 1862 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Edieresis -Encoding: 203 203 147 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1516 178<346 510 715 879> -VStem: 174 174<102 799 901 1331> 346 164<1516 1694> 715 164<1516 1694> -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "top" 616 1763 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Igrave -Encoding: 204 204 148 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1501 387 -VStem: 20 350 172 174<0 1434> -AnchorPoint: "top" 262 1886 basechar 0 -AnchorPoint: "ogonek" 236 0 basechar 0 -AnchorPoint: "bottom" 252 0 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "horn" 291 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 717 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Iacute -Encoding: 205 205 149 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1501 387 -VStem: 154 350 172 174<0 1434> -AnchorPoint: "top" 262 1886 basechar 0 -AnchorPoint: "ogonek" 236 0 basechar 0 -AnchorPoint: "bottom" 252 0 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "horn" 291 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 850 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Icircumflex -Encoding: 206 206 150 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1503 299 -VStem: -12 551 172 174<0 1434> -AnchorPoint: "ogonek" 236 0 basechar 0 -AnchorPoint: "bottom" 252 0 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "horn" 291 1085 basechar 0 -AnchorPoint: "top" 252 1839 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 850 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Idieresis -Encoding: 207 207 151 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1516 178<-6 158 362 526> -VStem: -6 164<1516 1694> 172 174<0 1434> 362 164<1516 1694> -AnchorPoint: "ogonek" 236 0 basechar 0 -AnchorPoint: "bottom" 252 0 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "horn" 291 1085 basechar 0 -AnchorPoint: "top" 262 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 850 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ntilde -Encoding: 209 209 152 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1034 1237> 1393 41<174 375 1063 1237> 1516 117<720 919> 1581 117<535 734> -VStem: 174 174<0 1157> 444 84<1516 1566> 926 84<1647 1698> 1063 174<274 1434> -AnchorPoint: "top" 717 1778 basechar 0 -AnchorPoint: "cedilla" 696 0 basechar 0 -AnchorPoint: "bottom" 694 0 basechar 0 -AnchorPoint: "ogonek" 1143 0 basechar 0 -AnchorPoint: "horn" 1188 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1305 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ograve -Encoding: 210 210 153 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1501 387 -VStem: 102 174<441 1012> 465 350 1163 174<438 1009> -AnchorPoint: "top" 707 1888 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1161 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Oacute -Encoding: 211 211 154 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1501 387 -VStem: 102 174<441 1012> 598 350 1163 174<438 1009> -AnchorPoint: "cedilla" 700 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "top" 707 1888 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ocircumflex -Encoding: 212 212 155 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1503 299 -VStem: 102 174<441 1012> 432 551 1163 174<438 1009> -AnchorPoint: "cedilla" 700 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "top" 709 1888 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Otilde -Encoding: 213 213 156 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1516 117<710 908> 1581 117<525 724> -VStem: 102 174<441 1012> 434 84<1516 1566> 915 84<1647 1698> 1163 174<438 1009> -AnchorPoint: "cedilla" 700 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "top" 707 1700 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 S 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Odieresis -Encoding: 214 214 157 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1516 178<438 602 807 971> -VStem: 102 174<441 1012> 438 164<1516 1694> 807 164<1516 1694> 1163 174<438 1009> -AnchorPoint: "cedilla" 700 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "top" 711 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -Substitution2: "'ss01' Style Set 1 in Latin-1" Odieresislowered -EndChar - -StartChar: Ugrave -Encoding: 217 217 158 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1501 387 -VStem: 156 174<328 1434> 479 350 1073 174<328 1434> -AnchorPoint: "top" 721 1884 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "cedilla" 692 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1176 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Uacute -Encoding: 218 218 159 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1501 387 -VStem: 156 174<328 1434> 612 350 1073 174<328 1434> -AnchorPoint: "top" 721 1888 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "cedilla" 692 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ucircumflex -Encoding: 219 219 160 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1503 299 -VStem: 156 174<328 1434> 446 551 1073 174<328 1434> -AnchorPoint: "top" 721 1847 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "cedilla" 692 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Udieresis -Encoding: 220 220 161 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1516 178<453 616 821 985> -VStem: 156 174<328 1434> 453 164<1516 1694> 821 164<1516 1694> 1073 174<328 1434> -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "top" 721 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -Substitution2: "'ss01' Style Set 1 in Latin-1" Udieresislowered -EndChar - -StartChar: Yacute -Encoding: 221 221 162 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<391 565> 1393 41<23 228 731 936> 1501 387 -VStem: 369 350 391 174<0 709> -AnchorPoint: "top" 477 1888 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "ogonek" 510 0 basechar 0 -AnchorPoint: "cedilla" 492 0 basechar 0 -AnchorPoint: "horn" 725 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1065 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Thorn -Encoding: 222 222 163 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348> 328 102<348 755> 1004 102<348 757> 1393 41G<174 348> -VStem: 174 174<0 328 430 1004 1106 1434> 864 174<545 889> -LayerCount: 2 -Fore -SplineSet -348 328 m 1,0,-1 - 348 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 348 1434 l 1,4,-1 - 348 1106 l 1,5,-1 - 594 1106 l 2,6,7 - 858 1106 858 1106 976 925 c 0,8,9 - 1038 830 1038 830 1038 717 c 0,10,11 - 1038 605 1038 605 974 509 c 0,12,13 - 854 328 854 328 594 328 c 2,14,-1 - 348 328 l 1,0,-1 -348 1004 m 1,15,-1 - 348 430 l 1,16,-1 - 625 430 l 2,17,18 - 796 430 796 430 850 620 c 0,19,20 - 864 668 864 668 864 717 c 128,-1,21 - 864 766 864 766 850.5 814 c 128,-1,22 - 837 862 837 862 810 906 c 0,23,24 - 750 1004 750 1004 625 1004 c 2,25,-1 - 348 1004 l 1,15,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: thorn -Encoding: 254 254 164 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 102<311 533> 823 102<421 747> 1311 41G<147 311> -VStem: 147 164<-410 0 102 710 866 1352> 838 164<380 734> -LayerCount: 2 -Fore -SplineSet -311 0 m 1,0,-1 - 311 -410 l 1,1,-1 - 147 -410 l 1,2,-1 - 147 1352 l 1,3,-1 - 311 1352 l 1,4,-1 - 311 866 l 1,5,6 - 406 926 406 926 588 926 c 128,-1,7 - 770 926 770 926 886 840 c 0,8,9 - 1001 754 1001 754 1001 566 c 0,10,11 - 1001 339 1001 339 820 178 c 0,12,13 - 734 100 734 100 602 52.5 c 128,-1,14 - 470 5 470 5 311 0 c 1,0,-1 -311 102 m 1,15,16 - 537 105 537 105 687.5 240.5 c 128,-1,17 - 838 376 838 376 838 569 c 0,18,19 - 838 695 838 695 773.5 759 c 128,-1,20 - 709 823 709 823 598 823 c 0,21,22 - 443 823 443 823 377 742.5 c 128,-1,23 - 311 662 311 662 311 508 c 2,24,-1 - 311 102 l 1,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: multiply -Encoding: 215 215 165 -Width: 856 -VWidth: 0 -Flags: W -HStem: 229 561 -VStem: 147 561 -LayerCount: 2 -Fore -SplineSet -500 510 m 1,0,-1 - 709 301 l 1,1,-1 - 637 229 l 1,2,-1 - 428 438 l 1,3,-1 - 219 229 l 1,4,-1 - 147 301 l 1,5,-1 - 356 510 l 1,6,-1 - 147 719 l 1,7,-1 - 219 791 l 1,8,-1 - 428 582 l 1,9,-1 - 637 791 l 1,10,-1 - 709 719 l 1,11,-1 - 500 510 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Oslash -Encoding: 216 216 166 -Width: 1435 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<564 877> 0 43G<373 502> 1352 102<551 881> 1393 41G<942 1073> -VStem: 102 174<433 1012> 1163 174<438 1008> -AnchorPoint: "top" 707 1434 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -470 1252 m 0,0,1 - 276 1069 276 1069 276 730.5 c 128,-1,2 - 276 392 276 392 457 207 c 1,3,-1 - 897 1298 l 1,4,5 - 805 1352 805 1352 690.5 1352 c 128,-1,6 - 576 1352 576 1352 470 1252 c 0,0,1 -989 1227 m 1,7,-1 - 549 135 l 1,8,9 - 634 82 634 82 706.5 82 c 128,-1,10 - 779 82 779 82 841 106 c 128,-1,11 - 903 130 903 130 961 182 c 128,-1,12 - 1019 234 1019 234 1064 307 c 0,13,14 - 1163 468 1163 468 1163 717 c 0,15,16 - 1163 1053 1163 1053 989 1227 c 1,7,-1 -942 1407 m 1,17,-1 - 952 1434 l 1,18,-1 - 1073 1434 l 1,19,-1 - 1040 1354 l 1,20,21 - 1178 1266 1178 1266 1257.5 1106 c 128,-1,22 - 1337 946 1337 946 1337 738.5 c 128,-1,23 - 1337 531 1337 531 1286 387 c 0,24,25 - 1234 244 1234 244 1146 156 c 0,26,27 - 968 -20 968 -20 705 -20 c 1,28,29 - 596 -20 596 -20 502 20 c 1,30,-1 - 494 0 l 1,31,-1 - 373 0 l 1,32,-1 - 401 72 l 1,33,34 - 266 162 266 162 184 324 c 128,-1,35 - 102 486 102 486 102 717 c 0,36,37 - 102 1142 102 1142 362 1342 c 0,38,39 - 508 1454 508 1454 686 1454 c 0,40,41 - 818 1454 818 1454 942 1407 c 1,17,-1 -EndSplineSet -EndChar - -StartChar: oslash -Encoding: 248 248 167 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<453 673> 819 102<404 618> -VStem: 90 164<225 648> 807 164<241 665> -AnchorPoint: "top" 535 1004 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -971 451 m 0,0,1 - 971 222 971 222 845 101 c 128,-1,2 - 719 -20 719 -20 512 -20 c 0,3,4 - 465 -20 465 -20 410 -10 c 1,5,-1 - 373 -102 l 1,6,-1 - 252 -102 l 1,7,-1 - 303 27 l 1,8,9 - 200 81 200 81 145 190.5 c 128,-1,10 - 90 300 90 300 90 427.5 c 128,-1,11 - 90 555 90 555 127 645 c 0,12,13 - 164 734 164 734 224 794 c 0,14,15 - 353 922 353 922 512 922 c 0,16,17 - 586 922 586 922 657 903 c 1,18,-1 - 698 1004 l 1,19,-1 - 819 1004 l 1,20,-1 - 762 862 l 1,21,22 - 971 745 971 745 971 451 c 0,0,1 -354 150 m 1,23,-1 - 618 807 l 1,24,25 - 581 819 581 819 543 819 c 0,26,27 - 423 819 423 819 338.5 717 c 128,-1,28 - 254 615 254 615 254 429 c 128,-1,29 - 254 243 254 243 354 150 c 1,23,-1 -453 94 m 1,30,31 - 493 82 493 82 543 82 c 0,32,33 - 659 82 659 82 733 185.5 c 128,-1,34 - 807 289 807 289 807 462.5 c 128,-1,35 - 807 636 807 636 713 741 c 1,36,-1 - 453 94 l 1,30,31 -EndSplineSet -Validated: 1 -EndChar - -StartChar: AE -Encoding: 198 198 168 -Width: 1730 -VWidth: 0 -Flags: W -HStem: 0 102<960 1647> 410 102<389 786> 799 102<960 1429> 1331 103<687 786 960 1614> -VStem: 786 174<102 410 512 799 901 1331> -AnchorPoint: "horn" 1569 1384 basechar 0 -AnchorPoint: "ogonek" 1515 0 basechar 0 -AnchorPoint: "cedilla" 1008 0 basechar 0 -AnchorPoint: "bottom" 983 0 basechar 0 -AnchorPoint: "top" 946 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -786 512 m 1,0,-1 - 786 1331 l 1,1,-1 - 687 1331 l 1,2,-1 - 389 512 l 1,3,-1 - 786 512 l 1,0,-1 -786 410 m 1,4,-1 - 352 410 l 1,5,-1 - 203 0 l 1,6,-1 - 39 0 l 1,7,-1 - 561 1434 l 1,8,-1 - 1614 1434 l 1,9,-1 - 1614 1331 l 1,10,-1 - 960 1331 l 1,11,-1 - 960 901 l 1,12,-1 - 1429 901 l 1,13,-1 - 1429 799 l 1,14,-1 - 960 799 l 1,15,-1 - 960 102 l 1,16,-1 - 1647 102 l 1,17,-1 - 1647 0 l 1,18,-1 - 786 0 l 1,19,-1 - 786 410 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ae -Encoding: 230 230 169 -Width: 1632 -VWidth: 0 -Flags: W -HStem: -20 102<356 690 1019 1337> 451 102<868 1374> 520 102<343 688> 819 102<304 637 1007 1266> -VStem: 94 164<178 440> 694 164<250 451> -AnchorPoint: "horn" 1438 717 basechar 0 -AnchorPoint: "cedilla" 1167 0 basechar 0 -AnchorPoint: "ogonek" 1167 0 basechar 0 -AnchorPoint: "bottom" 842 0 basechar 0 -AnchorPoint: "top" 823 997 basechar 0 -LayerCount: 2 -Fore -SplineSet -1536 158 m 1,0,1 - 1395 -20 1395 -20 1157 -20 c 0,2,3 - 969 -20 969 -20 844 90 c 1,4,5 - 767 38 767 38 666.5 9 c 128,-1,6 - 566 -20 566 -20 471 -20 c 0,7,8 - 297 -20 297 -20 195.5 58.5 c 128,-1,9 - 94 137 94 137 94 311 c 0,10,11 - 94 508 94 508 268 584 c 0,12,13 - 357 624 357 624 463 624 c 0,14,-1 - 466 624 l 0,15,16 - 574 624 574 624 690 606 c 1,17,18 - 684 726 684 726 638.5 772.5 c 128,-1,19 - 593 819 593 819 473.5 819 c 128,-1,20 - 354 819 354 819 217 723 c 1,21,-1 - 115 829 l 1,22,23 - 293 922 293 922 447.5 922 c 128,-1,24 - 602 922 602 922 688 889.5 c 128,-1,25 - 774 857 774 857 811 776 c 1,26,27 - 873 845 873 845 953 883.5 c 128,-1,28 - 1033 922 1033 922 1126 922 c 128,-1,29 - 1219 922 1219 922 1303 880 c 0,30,31 - 1386 838 1386 838 1438 770 c 0,32,33 - 1546 627 1546 627 1546 451 c 1,34,-1 - 858 451 l 1,35,36 - 858 283 858 283 949.5 182.5 c 128,-1,37 - 1041 82 1041 82 1189 82 c 128,-1,38 - 1337 82 1337 82 1413 205 c 1,39,-1 - 1536 158 l 1,0,1 -694 125 m 1,40,-1 - 694 498 l 1,41,42 - 601 520 601 520 501 520 c 128,-1,43 - 401 520 401 520 329.5 466 c 128,-1,44 - 258 412 258 412 258 310 c 128,-1,45 - 258 208 258 208 331 145 c 128,-1,46 - 404 82 404 82 504 82 c 128,-1,47 - 604 82 604 82 694 125 c 1,40,-1 -868 553 m 1,48,-1 - 1374 553 l 1,49,50 - 1356 673 1356 673 1298 746 c 128,-1,51 - 1240 819 1240 819 1144 819 c 128,-1,52 - 1048 819 1048 819 971 747 c 128,-1,53 - 894 675 894 675 868 553 c 1,48,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eth -Encoding: 240 240 170 -Width: 1034 -VWidth: 0 -Flags: W -HStem: -20 102<407 673> 819 102<406 682> 1311 41G<613 695> -VStem: 90 164<258 643> 780 164<212 701> -AnchorPoint: "top" 565 1434 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -612 1212 m 1,0,1 - 944 863 944 863 944 434 c 0,2,3 - 944 162 944 162 747 44 c 0,4,5 - 640 -19 640 -19 504 -20 c 0,6,7 - 331 -20 331 -20 210.5 118.5 c 128,-1,8 - 90 257 90 257 90 451 c 0,9,10 - 90 729 90 729 278 857 c 0,11,12 - 374 922 374 922 491.5 922 c 128,-1,13 - 609 922 609 922 694 883 c 1,14,15 - 628 1027 628 1027 516 1133 c 1,16,-1 - 410 1044 l 1,17,-1 - 362 1100 l 1,18,-1 - 461 1184 l 1,19,20 - 407 1230 407 1230 324 1286 c 1,21,-1 - 426 1380 l 1,22,23 - 499 1323 499 1323 559 1266 c 1,24,-1 - 662 1352 l 1,25,-1 - 709 1294 l 1,26,-1 - 612 1212 l 1,0,1 -780 369 m 1,27,28 - 780 621 780 621 728 720 c 128,-1,29 - 676 819 676 819 535 819 c 0,30,31 - 452 819 452 819 386 762.5 c 128,-1,32 - 320 706 320 706 287 623 c 128,-1,33 - 254 540 254 540 254 451 c 128,-1,34 - 254 362 254 362 287 278.5 c 128,-1,35 - 320 195 320 195 386 138.5 c 128,-1,36 - 452 82 452 82 547.5 82 c 128,-1,37 - 643 82 643 82 710 157 c 128,-1,38 - 777 232 777 232 780 369 c 1,27,28 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ccedilla -Encoding: 199 199 171 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -401 49<602 777> -164 164<705 797> -20 102<600 974> 1352 102<556 933> -VStem: 102 174<451 1012> 705 106<-82 0> 823 127<-328 -188> -AnchorPoint: "top" 717 1434 basechar 0 -AnchorPoint: "ogonek" 772 -369 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -AnchorPoint: "bottom" 717 -393 basechar 0 -LayerCount: 2 -Fore -SplineSet -701 -19 m 1,0,1 - 525 -4 525 -4 377 110 c 0,2,3 - 208 240 208 240 140 456 c 0,4,5 - 102 576 102 576 102 720.5 c 128,-1,6 - 102 865 102 865 139 989.5 c 128,-1,7 - 176 1114 176 1114 236 1198 c 128,-1,8 - 296 1282 296 1282 375 1341 c 0,9,10 - 526 1454 526 1454 702 1454 c 0,11,12 - 1075 1454 1075 1454 1243 1245 c 1,13,-1 - 1090 1178 l 1,14,15 - 1035 1256 1035 1256 945 1304 c 128,-1,16 - 855 1352 855 1352 748.5 1352 c 128,-1,17 - 642 1352 642 1352 561 1312.5 c 128,-1,18 - 480 1273 480 1273 415.5 1197 c 128,-1,19 - 351 1121 351 1121 313.5 997 c 128,-1,20 - 276 873 276 873 276 730 c 128,-1,21 - 276 587 276 587 309 478 c 0,22,23 - 342 370 342 370 394 298 c 0,24,25 - 448 226 448 226 514 176 c 0,26,27 - 684 90 684 90 772 82 c 1,28,29 - 1010 82 1010 82 1128 264 c 1,30,-1 - 1249 209 l 1,31,32 - 1178 117 1178 117 1063.5 56.5 c 128,-1,33 - 949 -4 949 -4 809 -17 c 1,34,-1 - 799 -111 l 1,35,36 - 865 -122 865 -122 907.5 -157.5 c 128,-1,37 - 950 -193 950 -193 950 -254 c 128,-1,38 - 950 -315 950 -315 858.5 -358 c 128,-1,39 - 767 -401 767 -401 602 -401 c 1,40,-1 - 602 -352 l 1,41,42 - 713 -352 713 -352 768 -333 c 128,-1,43 - 823 -314 823 -314 823 -265 c 128,-1,44 - 823 -216 823 -216 791 -194.5 c 128,-1,45 - 759 -173 759 -173 676 -164 c 1,46,-1 - 701 -19 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ccedilla -Encoding: 231 231 172 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -401 49<414 589> -164 164<516 609> -20 102<418 733> 819 102<404 664> -VStem: 90 164<253 648> 516 106<-82 0> 635 127<-328 -188> -AnchorPoint: "top" 532 1004 basechar 0 -AnchorPoint: "ogonek" 571 -375 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "bottom" 553 -393 basechar 0 -LayerCount: 2 -Fore -SplineSet -760 608 m 1,0,1 - 734 705 734 705 679 762 c 128,-1,2 - 624 819 624 819 543 819 c 0,3,4 - 423 819 423 819 338.5 717 c 128,-1,5 - 254 615 254 615 254 449 c 128,-1,6 - 254 283 254 283 345.5 182.5 c 128,-1,7 - 437 82 437 82 585 82 c 128,-1,8 - 733 82 733 82 809 205 c 1,9,-1 - 932 158 l 1,10,11 - 814 8 814 8 621 -16 c 1,12,-1 - 610 -111 l 1,13,14 - 676 -122 676 -122 719 -157.5 c 128,-1,15 - 762 -193 762 -193 762 -254 c 128,-1,16 - 762 -315 762 -315 670.5 -358 c 128,-1,17 - 579 -401 579 -401 414 -401 c 1,18,-1 - 414 -352 l 1,19,20 - 525 -352 525 -352 580 -333 c 128,-1,21 - 635 -314 635 -314 635 -265 c 128,-1,22 - 635 -216 635 -216 602.5 -194.5 c 128,-1,23 - 570 -173 570 -173 487 -164 c 1,24,-1 - 513 -19 l 1,25,26 - 326 -5 326 -5 208 122.5 c 128,-1,27 - 90 250 90 250 90 451 c 0,28,29 - 90 555 90 555 127 645 c 0,30,31 - 164 734 164 734 224 794 c 0,32,33 - 353 922 353 922 499.5 922 c 128,-1,34 - 646 922 646 922 743 854.5 c 128,-1,35 - 840 787 840 787 893 676 c 1,36,-1 - 760 608 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Eth -Encoding: 208 208 173 -Width: 1304 -VWidth: 0 -Flags: W -HStem: 0 102<348 826> 725 102<61 174 348 664> 1331 102<348 841> -VStem: 174 174<102 725 827 1331> 1030 174<394 1073> -AnchorPoint: "horn" 1102 1085 basechar 0 -AnchorPoint: "ogonek" 549 0 basechar 0 -AnchorPoint: "cedilla" 549 0 basechar 0 -AnchorPoint: "top" 582 1434 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -670 0 m 2,0,-1 - 174 0 l 1,1,-1 - 174 725 l 1,2,-1 - 61 725 l 1,3,-1 - 61 827 l 1,4,-1 - 174 827 l 1,5,-1 - 174 1434 l 1,6,-1 - 670 1434 l 2,7,8 - 1204 1434 1204 1434 1204 737 c 0,9,10 - 1204 376 1204 376 1061.5 188 c 128,-1,11 - 919 0 919 0 670 0 c 2,0,-1 -348 725 m 1,12,-1 - 348 102 l 1,13,-1 - 700 102 l 2,14,15 - 837 102 837 102 930 249 c 0,16,17 - 1030 406 1030 406 1030 737 c 0,18,19 - 1030 1112 1030 1112 891 1252 c 0,20,21 - 813 1331 813 1331 703 1331 c 0,22,-1 - 700 1331 l 2,23,-1 - 348 1331 l 1,24,-1 - 348 827 l 1,25,-1 - 664 827 l 1,26,-1 - 664 725 l 1,27,-1 - 348 725 l 1,12,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: germandbls -Encoding: 223 223 174 -Width: 919 -VWidth: 0 -Flags: W -HStem: 0 21G<139 303> 799 102<303 616> 1270 102<354.115 640.238> -VStem: 139 164<0 799 901 1217.92> 686 164<-12.6799 237.406> -LayerCount: 2 -Fore -SplineSet -571 502 m 1,0,1 - 850 280 850 280 850 102 c 0,2,3 - 850 16 850 16 774 -56 c 0,4,5 - 699 -127 699 -127 637 -157 c 0,6,7 - 533 -208 533 -208 486 -226 c 2,8,-1 - 465 -233 l 1,9,-1 - 414 -152 l 1,10,11 - 449 -143 449 -143 502.5 -116.5 c 128,-1,12 - 556 -90 556 -90 591.5 -63.5 c 128,-1,13 - 627 -37 627 -37 656.5 8 c 128,-1,14 - 686 53 686 53 686 102 c 128,-1,15 - 686 151 686 151 658 208 c 128,-1,16 - 630 265 630 265 590 311 c 0,17,18 - 508 405 508 405 442 457 c 2,19,-1 - 414 479 l 1,20,-1 - 616 799 l 1,21,-1 - 303 799 l 1,22,-1 - 303 0 l 1,23,-1 - 139 0 l 1,24,-1 - 139 864 l 2,25,26 - 139 1079 139 1079 150 1133 c 128,-1,27 - 161 1187 161 1187 172 1220 c 128,-1,28 - 183 1253 183 1253 197.5 1272.5 c 128,-1,29 - 212 1292 212 1292 234.5 1311 c 128,-1,30 - 257 1330 257 1330 284 1340 c 0,31,32 - 310 1350 310 1350 348 1358 c 0,33,34 - 414 1372 414 1372 498 1372 c 128,-1,35 - 582 1372 582 1372 636 1358 c 0,36,37 - 713 1338 713 1338 821 1280 c 1,38,-1 - 719 1174 l 1,39,40 - 644 1227 644 1227 596.5 1248.5 c 128,-1,41 - 549 1270 549 1270 506 1270 c 128,-1,42 - 463 1270 463 1270 436 1266 c 128,-1,43 - 409 1262 409 1262 388.5 1250 c 128,-1,44 - 368 1238 368 1238 354 1225 c 128,-1,45 - 340 1212 340 1212 330 1186 c 128,-1,46 - 320 1160 320 1160 315 1137 c 128,-1,47 - 310 1114 310 1114 307 1072 c 0,48,49 - 303 1016 303 1016 303 901 c 1,50,-1 - 823 901 l 1,51,-1 - 571 502 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Lcaron -Encoding: 317 317 175 -Width: 1083 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 1067 367<547 581> 1393 41<174 348> -VStem: 174 174<102 1434> 504 147<1221 1434> -AnchorPoint: "top" 440 1434 basechar 0 -AnchorPoint: "cedilla" 596 0 basechar 0 -AnchorPoint: "bottom" 604 0 basechar 0 -AnchorPoint: "ogonek" 745 0 basechar 0 -AnchorPoint: "horn" 283 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 406 1270 2 -Refer: 39 76 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Sacute -Encoding: 346 346 176 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -20 102<442 777> 1352 102<441 740> 1501 387 -VStem: 162 174<985 1247> 461 350 907 174<203 504> -AnchorPoint: "top" 569 1888 basechar 0 -AnchorPoint: "cedilla" 573 0 basechar 0 -AnchorPoint: "bottom" 578 0 basechar 0 -AnchorPoint: "horn" 897 1290 basechar 0 -AnchorPoint: "ogonek" 602 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1157 246 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Scaron -Encoding: 352 352 177 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -20 102<442 777> 1352 102<441 740> 1384 387 -VStem: 162 174<985 1247> 330 479 907 174<203 504> -AnchorPoint: "top" 569 1769 basechar 0 -AnchorPoint: "cedilla" 573 0 basechar 0 -AnchorPoint: "bottom" 578 0 basechar 0 -AnchorPoint: "horn" 897 1290 basechar 0 -AnchorPoint: "ogonek" 602 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -102 350 m 1,0,-1 - 262 381 l 1,1,2 - 277 264 277 264 378 173 c 128,-1,3 - 479 82 479 82 580 82 c 0,4,5 - 737 82 737 82 822 157 c 128,-1,6 - 907 232 907 232 907 365 c 0,7,8 - 907 486 907 486 813 564 c 0,9,10 - 739 625 739 625 636.5 667.5 c 128,-1,11 - 534 710 534 710 472.5 736.5 c 128,-1,12 - 411 763 411 763 355 796.5 c 128,-1,13 - 299 830 299 830 256 870 c 0,14,15 - 162 959 162 959 162 1096.5 c 128,-1,16 - 162 1234 162 1234 269.5 1332.5 c 128,-1,17 - 377 1431 377 1431 522 1450 c 1,18,-1 - 330 1718 l 1,19,-1 - 393 1772 l 1,20,-1 - 569 1591 l 1,21,-1 - 745 1772 l 1,22,-1 - 809 1718 l 1,23,-1 - 618 1453 l 1,24,25 - 745 1444 745 1444 849 1381.5 c 128,-1,26 - 953 1319 953 1319 1012 1225 c 1,27,-1 - 860 1182 l 1,28,29 - 768 1352 768 1352 561 1352 c 0,30,31 - 445 1352 445 1352 373 1236 c 0,32,33 - 336 1176 336 1176 336 1112 c 128,-1,34 - 336 1048 336 1048 361.5 1004 c 128,-1,35 - 387 960 387 960 430 928.5 c 128,-1,36 - 473 897 473 897 529 869 c 128,-1,37 - 585 841 585 841 646.5 814.5 c 128,-1,38 - 708 788 708 788 770 760 c 128,-1,39 - 832 732 832 732 888 695 c 128,-1,40 - 944 658 944 658 987 614 c 0,41,42 - 1081 517 1081 517 1081 357 c 128,-1,43 - 1081 197 1081 197 939.5 88.5 c 128,-1,44 - 798 -20 798 -20 565 -20 c 0,45,46 - 416 -20 416 -20 277.5 91 c 128,-1,47 - 139 202 139 202 102 350 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Scedilla -Encoding: 350 350 178 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -401 49<418 593> -164 164<520 613> -20 102<442 777> 1352 102<441 740> -VStem: 162 174<985 1247> 520 106<-82 0> 639 127<-328 -188> 907 174<203 504> -AnchorPoint: "top" 569 1434 basechar 0 -AnchorPoint: "horn" 897 1290 basechar 0 -LayerCount: 2 -Fore -SplineSet -102 350 m 1,0,-1 - 262 381 l 1,1,2 - 277 264 277 264 378 173 c 128,-1,3 - 479 82 479 82 580 82 c 0,4,5 - 737 82 737 82 822 157 c 128,-1,6 - 907 232 907 232 907 365 c 0,7,8 - 907 486 907 486 813 564 c 0,9,10 - 739 625 739 625 636.5 667.5 c 128,-1,11 - 534 710 534 710 472.5 736.5 c 128,-1,12 - 411 763 411 763 355 796.5 c 128,-1,13 - 299 830 299 830 256 870 c 0,14,15 - 162 959 162 959 162 1102 c 0,16,17 - 162 1198 162 1198 223.5 1280.5 c 128,-1,18 - 285 1363 285 1363 380.5 1408.5 c 128,-1,19 - 476 1454 476 1454 597 1454 c 128,-1,20 - 718 1454 718 1454 833 1390.5 c 128,-1,21 - 948 1327 948 1327 1012 1225 c 1,22,-1 - 860 1182 l 1,23,24 - 768 1352 768 1352 561 1352 c 0,25,26 - 445 1352 445 1352 373 1236 c 0,27,28 - 336 1176 336 1176 336 1112 c 128,-1,29 - 336 1048 336 1048 361.5 1004 c 128,-1,30 - 387 960 387 960 430 928.5 c 128,-1,31 - 473 897 473 897 529 869 c 128,-1,32 - 585 841 585 841 646.5 814.5 c 128,-1,33 - 708 788 708 788 770 760 c 128,-1,34 - 832 732 832 732 888 695 c 128,-1,35 - 944 658 944 658 987 614 c 0,36,37 - 1081 517 1081 517 1081 362.5 c 128,-1,38 - 1081 208 1081 208 957 102 c 128,-1,39 - 833 -4 833 -4 625 -18 c 1,40,-1 - 614 -111 l 1,41,42 - 680 -122 680 -122 723 -157.5 c 128,-1,43 - 766 -193 766 -193 766 -254 c 128,-1,44 - 766 -315 766 -315 674.5 -358 c 128,-1,45 - 583 -401 583 -401 418 -401 c 1,46,-1 - 418 -352 l 1,47,48 - 529 -352 529 -352 584 -333 c 128,-1,49 - 639 -314 639 -314 639 -265 c 128,-1,50 - 639 -216 639 -216 607 -194.5 c 128,-1,51 - 575 -173 575 -173 492 -164 c 1,52,-1 - 517 -17 l 1,53,54 - 378 2 378 2 257 108.5 c 128,-1,55 - 136 215 136 215 102 350 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Tcaron -Encoding: 356 356 179 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 43<553 727> 1331 102<41 553 727 1243> 1384 387 -VStem: 406 479 553 174<0 1331> -AnchorPoint: "top" 643 1765 basechar 0 -AnchorPoint: "cedilla" 639 0 basechar 0 -AnchorPoint: "bottom" 643 0 basechar 0 -AnchorPoint: "ogonek" 659 0 basechar 0 -AnchorPoint: "horn" 1200 1389 basechar 0 -LayerCount: 2 -Fore -SplineSet -610 1434 m 1,0,-1 - 406 1718 l 1,1,-1 - 469 1772 l 1,2,-1 - 645 1591 l 1,3,-1 - 821 1772 l 1,4,-1 - 885 1718 l 1,5,-1 - 680 1434 l 1,6,-1 - 1243 1434 l 1,7,-1 - 1243 1331 l 1,8,-1 - 727 1331 l 1,9,-1 - 727 0 l 1,10,-1 - 553 0 l 1,11,-1 - 553 1331 l 1,12,-1 - 41 1331 l 1,13,-1 - 41 1434 l 1,14,-1 - 610 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Zacute -Encoding: 377 377 180 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<285 983> 1331 102<102 750> 1501 387 -VStem: 403 350 -AnchorPoint: "top" 512 1884 basechar 0 -AnchorPoint: "bottom" 549 0 basechar 0 -AnchorPoint: "ogonek" 799 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 758 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1100 246 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Zcaron -Encoding: 381 381 181 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<285 983> 1331 102<102 750> 1384 387 -VStem: 272 479 -AnchorPoint: "horn" 758 1085 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "ogonek" 799 0 basechar 0 -AnchorPoint: "bottom" 549 0 basechar 0 -AnchorPoint: "top" 512 1767 basechar 0 -LayerCount: 2 -Fore -SplineSet -750 1331 m 1,0,-1 - 72 1331 l 1,1,-1 - 102 1434 l 1,2,-1 - 477 1434 l 1,3,-1 - 272 1718 l 1,4,-1 - 336 1772 l 1,5,-1 - 512 1591 l 1,6,-1 - 688 1772 l 1,7,-1 - 752 1718 l 1,8,-1 - 547 1434 l 1,9,-1 - 975 1434 l 1,10,-1 - 285 102 l 1,11,-1 - 983 102 l 1,12,-1 - 983 0 l 1,13,-1 - 61 0 l 1,14,-1 - 750 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Zdotaccent -Encoding: 379 379 182 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<285 983> 1331 102<102 750> 1516 178<426 590> -VStem: 426 164<1516 1694> -AnchorPoint: "horn" 758 1085 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "ogonek" 799 0 basechar 0 -AnchorPoint: "bottom" 549 0 basechar 0 -AnchorPoint: "top" 512 1700 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1100 246 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: lcaron -Encoding: 318 318 183 -Width: 620 -VWidth: 0 -Flags: W -HStem: 0 43<147 311> 985 367<516 550> 1311 41<147 311> -VStem: 147 164<0 1352> 473 147<1139 1352> -AnchorPoint: "top" 229 1434 basechar 0 -AnchorPoint: "cedilla" 223 0 basechar 0 -AnchorPoint: "bottom" 227 0 basechar 0 -AnchorPoint: "ogonek" 233 0 basechar 0 -AnchorPoint: "horn" 266 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 375 1188 2 -Refer: 15 108 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: sacute -Encoding: 347 347 184 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<276 603> 819 102<316 571> 1071 387 -VStem: 125 164<595 792> 307 350 651 164<128 358> -AnchorPoint: "top" 416 1434 basechar 0 -AnchorPoint: "cedilla" 449 0 basechar 0 -AnchorPoint: "bottom" 449 0 basechar 0 -AnchorPoint: "ogonek" 455 0 basechar 0 -AnchorPoint: "horn" 647 793 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1004 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scaron -Encoding: 353 353 185 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<276 603> 819 102<316 571> 954 387 -VStem: 125 164<595 792> 176 479 651 164<128 358> -AnchorPoint: "top" 416 1350 basechar 0 -AnchorPoint: "cedilla" 449 0 basechar 0 -AnchorPoint: "bottom" 449 0 basechar 0 -AnchorPoint: "ogonek" 455 0 basechar 0 -AnchorPoint: "horn" 647 793 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1004 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scedilla -Encoding: 351 351 186 -Width: 897 -VWidth: 0 -Flags: W -HStem: -401 49<293 468> -164 164<395 488> -20 102<276 603> 819 102<316 571> -VStem: 125 164<595 792> 395 106<-82 0> 514 127<-328 -188> 651 164<128 358> -AnchorPoint: "top" 416 1004 basechar 0 -AnchorPoint: "horn" 647 793 basechar 0 -LayerCount: 2 -Fore -SplineSet -756 795 m 1,0,-1 - 637 723 l 1,1,2 - 555 795 555 795 536.5 800 c 128,-1,3 - 518 805 518 805 500 811 c 0,4,5 - 477 819 477 819 418 819 c 128,-1,6 - 359 819 359 819 324 785 c 128,-1,7 - 289 751 289 751 289 688 c 0,8,9 - 289 576 289 576 453 547 c 1,10,11 - 815 480 815 480 815 262 c 0,12,13 - 815 135 815 135 729.5 65 c 128,-1,14 - 644 -5 644 -5 500 -18 c 1,15,-1 - 489 -111 l 1,16,17 - 555 -122 555 -122 598 -157.5 c 128,-1,18 - 641 -193 641 -193 641 -254 c 128,-1,19 - 641 -315 641 -315 549.5 -358 c 128,-1,20 - 458 -401 458 -401 293 -401 c 1,21,-1 - 293 -352 l 1,22,23 - 404 -352 404 -352 459 -333 c 128,-1,24 - 514 -314 514 -314 514 -265 c 128,-1,25 - 514 -216 514 -216 482 -194.5 c 128,-1,26 - 450 -173 450 -173 367 -164 c 1,27,-1 - 392 -19 l 1,28,29 - 280 -12 280 -12 191 45 c 0,30,31 - 158 66 158 66 88 117 c 1,32,-1 - 176 193 l 1,33,34 - 267 129 267 129 315.5 105.5 c 128,-1,35 - 364 82 364 82 464 82 c 128,-1,36 - 564 82 564 82 607.5 128 c 128,-1,37 - 651 174 651 174 651 262 c 0,38,39 - 651 388 651 388 434 424 c 1,40,41 - 284 452 284 452 204.5 520.5 c 128,-1,42 - 125 589 125 589 125 684 c 128,-1,43 - 125 779 125 779 197 850.5 c 128,-1,44 - 269 922 269 922 383 922 c 128,-1,45 - 497 922 497 922 580.5 891.5 c 128,-1,46 - 664 861 664 861 756 795 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tcaron -Encoding: 357 357 187 -Width: 567 -VWidth: 0 -Flags: W -HStem: 0 43<188 352> 799 102<84 188 352 514> 985 367<449 483> -VStem: 188 164<0 799 901 1198> 406 147<1139 1352> -AnchorPoint: "top" 272 1352 basechar 0 -AnchorPoint: "cedilla" 264 0 basechar 0 -AnchorPoint: "bottom" 264 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -AnchorPoint: "horn" 319 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 307 1188 2 -Refer: 10 116 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: zacute -Encoding: 378 378 188 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 102<299 823> 799 102<74 573> 1071 387 -VStem: 330 350 -AnchorPoint: "top" 438 1430 basechar 0 -AnchorPoint: "bottom" 442 0 basechar 0 -AnchorPoint: "cedilla" 442 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "horn" 651 717 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1026 -184 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: zcaron -Encoding: 382 382 189 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 102<299 823> 799 102<74 573> 954 387 -VStem: 199 479 -AnchorPoint: "horn" 651 717 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "cedilla" 442 0 basechar 0 -AnchorPoint: "bottom" 442 0 basechar 0 -AnchorPoint: "top" 438 1348 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1026 -184 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: zdotaccent -Encoding: 380 380 190 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 102<299 823> 799 102<74 573> 1085 178<352 516> -VStem: 352 164<1085 1264> -AnchorPoint: "horn" 651 717 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "cedilla" 442 0 basechar 0 -AnchorPoint: "bottom" 442 0 basechar 0 -AnchorPoint: "top" 438 1266 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1026 -184 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Racute -Encoding: 340 340 191 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 901 1069> 655 102<348 615> 1331 102<348 757> 1501 387 -VStem: 174 174<0 655 758 1331> 453 350 864 174<873 1217> 901 168<0 202> -AnchorPoint: "top" 561 1888 basechar 0 -AnchorPoint: "cedilla" 590 0 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "ogonek" 975 0 basechar 0 -AnchorPoint: "horn" 954 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1149 246 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Abreve -Encoding: 258 258 192 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1516 117<529 773> -VStem: 420 78<1673 1710> 805 78<1673 1710> -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "top" 657 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Lacute -Encoding: 313 313 193 -Width: 1083 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 1393 41<174 348> 1501 387 -VStem: 174 174<102 1434> 332 350 -AnchorPoint: "top" 440 1884 basechar 0 -AnchorPoint: "cedilla" 596 0 basechar 0 -AnchorPoint: "bottom" 604 0 basechar 0 -AnchorPoint: "ogonek" 745 0 basechar 0 -AnchorPoint: "horn" 283 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1028 246 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Cacute -Encoding: 262 262 194 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<600 974> 1352 102<556 933> 1501 387 -VStem: 102 174<451 1012> 608 350 -AnchorPoint: "top" 717 1888 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1305 246 2 -Refer: 30 67 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ccaron -Encoding: 268 268 195 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<600 974> 1352 102<556 933> 1384 387 -VStem: 102 174<451 1012> 477 479 -AnchorPoint: "horn" 1143 1282 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "top" 717 1769 basechar 0 -LayerCount: 2 -Fore -SplineSet -1249 209 m 1,0,1 - 1169 106 1169 106 1035.5 43 c 128,-1,2 - 902 -20 902 -20 741 -20 c 0,3,4 - 564 -20 564 -20 401 93 c 0,5,6 - 216 222 216 222 143 444 c 0,7,8 - 102 570 102 570 102 714.5 c 128,-1,9 - 102 859 102 859 136 979.5 c 128,-1,10 - 170 1100 170 1100 226 1183 c 128,-1,11 - 282 1266 282 1266 356 1326 c 0,12,13 - 497 1440 497 1440 668 1453 c 1,14,-1 - 477 1718 l 1,15,-1 - 541 1772 l 1,16,-1 - 717 1591 l 1,17,-1 - 893 1772 l 1,18,-1 - 956 1718 l 1,19,-1 - 766 1452 l 1,20,21 - 1090 1435 1090 1435 1243 1245 c 1,22,-1 - 1090 1178 l 1,23,24 - 1035 1256 1035 1256 945 1304 c 128,-1,25 - 855 1352 855 1352 748.5 1352 c 128,-1,26 - 642 1352 642 1352 561 1312.5 c 128,-1,27 - 480 1273 480 1273 415.5 1197 c 128,-1,28 - 351 1121 351 1121 313.5 997 c 128,-1,29 - 276 873 276 873 276 730 c 128,-1,30 - 276 587 276 587 309 478 c 0,31,32 - 342 370 342 370 394 298 c 0,33,34 - 448 226 448 226 514 176 c 0,35,36 - 684 90 684 90 772 82 c 1,37,38 - 1010 82 1010 82 1128 264 c 1,39,-1 - 1249 209 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ecaron -Encoding: 282 282 196 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1384 387 -VStem: 174 174<102 799 901 1331> 375 479 -AnchorPoint: "top" 614 1761 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "horn" 942 1384 basechar 0 -LayerCount: 2 -Fore -SplineSet -1034 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 579 1434 l 1,3,-1 - 375 1718 l 1,4,-1 - 438 1772 l 1,5,-1 - 614 1591 l 1,6,-1 - 791 1772 l 1,7,-1 - 854 1718 l 1,8,-1 - 650 1434 l 1,9,-1 - 1001 1434 l 1,10,-1 - 1001 1331 l 1,11,-1 - 348 1331 l 1,12,-1 - 348 901 l 1,13,-1 - 817 901 l 1,14,-1 - 817 799 l 1,15,-1 - 348 799 l 1,16,-1 - 348 102 l 1,17,-1 - 1034 102 l 1,18,-1 - 1034 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Dcaron -Encoding: 270 270 197 -Width: 1304 -VWidth: 0 -Flags: W -HStem: 0 102<348 826> 1331 102<348 841> 1384 387 -VStem: 174 174<102 1331> 342 479 1030 174<394 1073> -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "top" 582 1769 basechar 0 -AnchorPoint: "cedilla" 549 0 basechar 0 -AnchorPoint: "ogonek" 549 0 basechar 0 -AnchorPoint: "horn" 1102 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 1331 m 1,0,-1 - 348 102 l 1,1,-1 - 700 102 l 2,2,3 - 837 102 837 102 930 249 c 0,4,5 - 1030 406 1030 406 1030 737 c 0,6,7 - 1030 1112 1030 1112 891 1252 c 0,8,9 - 813 1331 813 1331 703 1331 c 0,10,-1 - 700 1331 l 2,11,-1 - 348 1331 l 1,0,-1 -670 0 m 2,12,-1 - 174 0 l 1,13,-1 - 174 1434 l 1,14,-1 - 546 1434 l 1,15,-1 - 342 1718 l 1,16,-1 - 406 1772 l 1,17,-1 - 582 1591 l 1,18,-1 - 758 1772 l 1,19,-1 - 821 1718 l 1,20,-1 - 617 1434 l 1,21,-1 - 670 1434 l 2,22,23 - 1204 1434 1204 1434 1204 737 c 0,24,25 - 1204 376 1204 376 1061.5 188 c 128,-1,26 - 919 0 919 0 670 0 c 2,12,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Dcroat -Encoding: 272 272 198 -Width: 1304 -VWidth: 0 -Flags: W -HStem: 0 102<348 826> 725 102<61 174 348 664> 1331 102<348 841> -VStem: 174 174<102 725 827 1331> 1030 174<394 1073> -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "top" 582 1434 basechar 0 -AnchorPoint: "cedilla" 549 0 basechar 0 -AnchorPoint: "ogonek" 549 0 basechar 0 -AnchorPoint: "horn" 1102 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 173 208 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Nacute -Encoding: 323 323 199 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1034 1237> 1393 41<174 375 1063 1237> 1501 387 -VStem: 174 174<0 1157> 608 350 1063 174<274 1434> -AnchorPoint: "horn" 1188 1085 basechar 0 -AnchorPoint: "ogonek" 1143 0 basechar 0 -AnchorPoint: "bottom" 694 0 basechar 0 -AnchorPoint: "cedilla" 696 0 basechar 0 -AnchorPoint: "top" 717 1888 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1305 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ncaron -Encoding: 327 327 200 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1034 1237> 1384 387 1393 41<174 375 1063 1237> -VStem: 174 174<0 1157> 477 479 1063 174<274 1434> -AnchorPoint: "top" 717 1888 basechar 0 -AnchorPoint: "cedilla" 696 0 basechar 0 -AnchorPoint: "bottom" 694 0 basechar 0 -AnchorPoint: "ogonek" 1143 0 basechar 0 -AnchorPoint: "horn" 1188 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1305 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ohungarumlaut -Encoding: 336 336 201 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1501 387 -VStem: 102 174<441 1012> 475 350 721 350 1163 174<438 1009> -AnchorPoint: "top" 707 1884 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Rcaron -Encoding: 344 344 202 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 901 1069> 655 102<348 615> 1331 102<348 757> 1384 387 -VStem: 174 174<0 655 758 1331> 322 479 864 174<873 1217> 901 168<0 202> -AnchorPoint: "horn" 954 1085 basechar 0 -AnchorPoint: "ogonek" 975 0 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "cedilla" 590 0 basechar 0 -AnchorPoint: "top" 561 1888 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 1331 m 1,0,-1 - 348 758 l 1,1,-1 - 625 758 l 2,2,3 - 749 758 749 758 810 856 c 0,4,5 - 864 943 864 943 864 1044 c 0,6,7 - 864 1145 864 1145 810 1233 c 0,8,9 - 750 1331 750 1331 625 1331 c 2,10,-1 - 348 1331 l 1,0,-1 -348 655 m 1,11,-1 - 348 0 l 1,12,-1 - 174 0 l 1,13,-1 - 174 1434 l 1,14,-1 - 526 1434 l 1,15,-1 - 322 1718 l 1,16,-1 - 385 1772 l 1,17,-1 - 561 1591 l 1,18,-1 - 737 1772 l 1,19,-1 - 801 1718 l 1,20,-1 - 596 1434 l 1,21,22 - 856 1434 856 1434 976 1251 c 0,23,24 - 1038 1156 1038 1156 1038 1044 c 0,25,26 - 1038 937 1038 937 976 836 c 0,27,28 - 907 725 907 725 762 680 c 1,29,30 - 866 576 866 576 967.5 358 c 128,-1,31 - 1069 140 1069 140 1069 0 c 1,32,-1 - 901 0 l 1,33,34 - 901 142 901 142 793 355 c 128,-1,35 - 685 568 685 568 571 655 c 1,36,-1 - 348 655 l 1,11,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Uring -Encoding: 366 366 203 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1413 61<653 789> 1663 61<653 789> -VStem: 156 174<328 1434> 565 61<1501 1636> 815 61<1501 1636> 1073 174<328 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1847 basechar 0 -LayerCount: 2 -Fore -Refer: 100 778 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Uhungarumlaut -Encoding: 368 368 204 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1501 387 -VStem: 156 174<328 1434> 489 350 735 350 1073 174<328 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1886 basechar 0 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Tcommaaccent -Encoding: 354 354 205 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -401 49<504 679> -164 164<606 699> 0 43<553 727> 1331 102<41 553 727 1243> -VStem: 553 174<0 1331> 606 106<-82 0> 725 127<-328 -188> -AnchorPoint: "top" 643 1434 basechar 0 -AnchorPoint: "horn" 1200 1389 basechar 0 -LayerCount: 2 -Fore -SplineSet -41 1434 m 1,0,-1 - 1243 1434 l 1,1,-1 - 1243 1331 l 1,2,-1 - 727 1331 l 1,3,-1 - 727 0 l 1,4,-1 - 713 0 l 1,5,-1 - 700 -111 l 1,6,7 - 766 -122 766 -122 809 -157.5 c 128,-1,8 - 852 -193 852 -193 852 -254 c 0,9,10 - 852 -315 852 -315 760.5 -358 c 128,-1,11 - 669 -401 669 -401 504 -401 c 1,12,-1 - 504 -352 l 1,13,14 - 615 -352 615 -352 670 -333 c 128,-1,15 - 725 -314 725 -314 725 -265 c 0,16,17 - 725 -216 725 -216 693 -194.5 c 128,-1,18 - 661 -173 661 -173 578 -164 c 1,19,-1 - 606 0 l 1,20,-1 - 553 0 l 1,21,-1 - 553 1331 l 1,22,-1 - 41 1331 l 1,23,-1 - 41 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: racute -Encoding: 341 341 206 -Width: 677 -VWidth: 0 -Flags: W -HStem: 0 43<147 311> 819 102<356 647> 860 41<147 311> 1071 387 -VStem: 147 164<0 774 874 901> 289 350 -AnchorPoint: "top" 397 1432 basechar 0 -AnchorPoint: "cedilla" 225 0 basechar 0 -AnchorPoint: "bottom" 240 0 basechar 0 -AnchorPoint: "ogonek" 246 0 basechar 0 -AnchorPoint: "horn" 647 856 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 985 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: abreve -Encoding: 259 259 207 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1085 117<367 612> -VStem: 94 164<178 440> 258 78<1243 1280> 643 78<1243 1280> 694 164<0 16 107 507 606 754> -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "top" 494 1303 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: lacute -Encoding: 314 314 208 -Width: 456 -VWidth: 0 -Flags: W -HStem: 0 43<147 311> 1311 41<147 311> 1501 387 -VStem: 121 350 147 164<0 1352> -AnchorPoint: "top" 229 1888 basechar 0 -AnchorPoint: "cedilla" 223 0 basechar 0 -AnchorPoint: "bottom" 227 0 basechar 0 -AnchorPoint: "ogonek" 233 0 basechar 0 -AnchorPoint: "horn" 266 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 817 246 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: cacute -Encoding: 263 263 209 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 819 102<404 664> 1071 387 -VStem: 90 164<253 648> 424 350 -AnchorPoint: "top" 532 1434 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "bottom" 569 0 basechar 0 -AnchorPoint: "ogonek" 571 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1120 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ccaron -Encoding: 269 269 210 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 819 102<404 664> 954 387 -VStem: 90 164<253 648> 293 479 -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "ogonek" 571 0 basechar 0 -AnchorPoint: "bottom" 569 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "top" 532 1352 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1120 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ecaron -Encoding: 283 283 211 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 954 387 -VStem: 90 164<256 451> 291 479 -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "top" 530 1352 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: dcaron -Encoding: 271 271 212 -Width: 1191 -VWidth: 0 -Flags: W -HStem: -20 102<403 666> 0 43<780 944> 819 102<403 659> 985 367<1087 1122> 1311 41<780 944> -VStem: 90 164<258 643> 780 164<0 47 208 666 823 1352> 1044 147<1139 1352> -AnchorPoint: "top" 532 1004 basechar 0 -AnchorPoint: "bottom" 514 0 basechar 0 -AnchorPoint: "cedilla" 512 0 basechar 0 -AnchorPoint: "ogonek" 864 0 basechar 0 -AnchorPoint: "horn" 885 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 946 1188 2 -Refer: 0 100 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: nacute -Encoding: 324 324 213 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 784 948> 819 102<385 697> 860 41<147 311> 1071 387 -VStem: 147 164<0 756 870 901> 440 350 784 164<0 717> -AnchorPoint: "horn" 856 717 basechar 0 -AnchorPoint: "ogonek" 877 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "top" 549 1354 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1137 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ncaron -Encoding: 328 328 214 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 784 948> 819 102<385 697> 860 41<147 311> 954 387 -VStem: 147 164<0 756 870 901> 309 479 784 164<0 717> -AnchorPoint: "horn" 856 717 basechar 0 -AnchorPoint: "ogonek" 877 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "top" 549 1354 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1137 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ohungarumlaut -Encoding: 337 337 215 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1071 387 -VStem: 90 164<231 648> 303 350 549 350 807 164<241 660> -AnchorPoint: "top" 535 1479 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: rcaron -Encoding: 345 345 216 -Width: 677 -VWidth: 0 -Flags: W -HStem: 0 43<147 311> 819 102<356 647> 860 41<147 311> 954 387 -VStem: 147 164<0 774 874 901> 158 479 -AnchorPoint: "top" 397 1356 basechar 0 -AnchorPoint: "cedilla" 225 0 basechar 0 -AnchorPoint: "bottom" 240 0 basechar 0 -AnchorPoint: "ogonek" 246 0 basechar 0 -AnchorPoint: "horn" 647 856 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 985 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uring -Encoding: 367 367 217 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 983 61<481 617> 1233 61<481 617> -VStem: 143 164<204 901> 393 61<1071 1206> 643 61<1071 1206> 780 164<0 33 135 901> -AnchorPoint: "top" 549 1352 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 100 778 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uhungarumlaut -Encoding: 369 369 218 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1071 387 -VStem: 143 164<204 901> 317 350 563 350 780 164<0 33 135 901> -AnchorPoint: "top" 549 1458 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: tcommaaccent -Encoding: 355 355 219 -Width: 567 -VWidth: 0 -Flags: W -HStem: -401 49<109 283> -164 164<211 304> 0 43<188 352> 799 102<84 188 352 514> -VStem: 188 164<0 799 901 1198> 211 106<-82 0> 330 127<-328 -188> -AnchorPoint: "top" 272 1352 basechar 0 -AnchorPoint: "horn" 319 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -352 799 m 1,0,-1 - 352 0 l 1,1,-1 - 317 0 l 1,2,-1 - 305 -111 l 1,3,4 - 371 -122 371 -122 414 -157.5 c 128,-1,5 - 457 -193 457 -193 457 -254 c 0,6,7 - 457 -315 457 -315 365.5 -358 c 128,-1,8 - 274 -401 274 -401 109 -401 c 1,9,-1 - 109 -352 l 1,10,11 - 220 -352 220 -352 275 -333 c 128,-1,12 - 330 -314 330 -314 330 -265 c 0,13,14 - 330 -216 330 -216 297.5 -194.5 c 128,-1,15 - 265 -173 265 -173 182 -164 c 1,16,-1 - 211 0 l 1,17,-1 - 188 0 l 1,18,-1 - 188 799 l 1,19,-1 - 53 799 l 1,20,-1 - 84 901 l 1,21,-1 - 188 901 l 1,22,-1 - 188 1198 l 1,23,-1 - 352 1229 l 1,24,-1 - 352 901 l 1,25,-1 - 514 901 l 1,26,-1 - 514 799 l 1,27,-1 - 352 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Aogonek -Encoding: 260 260 220 -Width: 1298 -VWidth: 0 -Flags: W -HStem: -319 37<1050 1153> 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> -VStem: 870 115<-254 -86> -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "top" 657 1720 basechar 0 -LayerCount: 2 -Fore -SplineSet -651 1231 m 1,0,-1 - 389 512 l 1,1,-1 - 913 512 l 1,2,-1 - 651 1231 l 1,0,-1 -39 0 m 1,3,-1 - 561 1434 l 1,4,-1 - 741 1434 l 1,5,-1 - 1264 0 l 1,6,-1 - 1100 0 l 1,7,8 - 1053 -24 1053 -24 1019 -62.5 c 128,-1,9 - 985 -101 985 -101 985 -158.5 c 128,-1,10 - 985 -216 985 -216 1021.5 -249.5 c 128,-1,11 - 1058 -283 1058 -283 1153 -283 c 1,12,-1 - 1153 -319 l 1,13,14 - 1151 -319 1151 -319 1148 -319 c 0,15,16 - 931 -319 931 -319 882 -232 c 0,17,18 - 870 -210 870 -210 870 -186 c 0,19,20 - 870 -118 870 -118 938.5 -61.5 c 128,-1,21 - 1007 -5 1007 -5 1092 22 c 1,22,-1 - 950 410 l 1,23,-1 - 352 410 l 1,24,-1 - 203 0 l 1,25,-1 - 39 0 l 1,3,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Eogonek -Encoding: 280 280 221 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -319 37<796 899> 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> -VStem: 174 174<102 799 901 1331> 616 115<-254 -86> -AnchorPoint: "top" 614 1434 basechar 0 -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -846 0 m 1,0,1 - 799 -24 799 -24 765 -62.5 c 128,-1,2 - 731 -101 731 -101 731 -158.5 c 128,-1,3 - 731 -216 731 -216 767.5 -249.5 c 128,-1,4 - 804 -283 804 -283 899 -283 c 1,5,-1 - 899 -319 l 1,6,7 - 897 -319 897 -319 894 -319 c 0,8,9 - 677 -319 677 -319 628 -232 c 0,10,11 - 616 -210 616 -210 616 -186 c 0,12,13 - 616 -131 616 -131 663.5 -82 c 128,-1,14 - 711 -33 711 -33 781 0 c 1,15,-1 - 174 0 l 1,16,-1 - 174 1434 l 1,17,-1 - 1001 1434 l 1,18,-1 - 1001 1331 l 1,19,-1 - 348 1331 l 1,20,-1 - 348 901 l 1,21,-1 - 817 901 l 1,22,-1 - 817 799 l 1,23,-1 - 348 799 l 1,24,-1 - 348 102 l 1,25,-1 - 1034 102 l 1,26,-1 - 1034 0 l 1,27,-1 - 846 0 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: aogonek -Encoding: 261 261 222 -Width: 974 -VWidth: 0 -Flags: W -HStem: -319 37<796 899> -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> -VStem: 94 164<178 440> 616 115<-254 -86> 694 164<0 16 107 507 606 754> -AnchorPoint: "top" 489 1004 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "horn" 811 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -694 125 m 1,0,-1 - 694 498 l 1,1,2 - 601 520 601 520 501 520 c 128,-1,3 - 401 520 401 520 329.5 466 c 128,-1,4 - 258 412 258 412 258 310 c 128,-1,5 - 258 208 258 208 331 145 c 128,-1,6 - 404 82 404 82 504 82 c 128,-1,7 - 604 82 604 82 694 125 c 1,0,-1 -115 829 m 1,8,9 - 293 922 293 922 438 922 c 0,10,11 - 626 922 626 922 708 881 c 0,12,13 - 756 857 756 857 784 822.5 c 128,-1,14 - 812 788 812 788 830 727 c 0,15,16 - 858 628 858 628 858 414 c 2,17,-1 - 858 0 l 1,18,-1 - 846 0 l 1,19,20 - 799 -24 799 -24 765 -62.5 c 128,-1,21 - 731 -101 731 -101 731 -158.5 c 128,-1,22 - 731 -216 731 -216 767.5 -249.5 c 128,-1,23 - 804 -283 804 -283 899 -283 c 1,24,-1 - 899 -319 l 1,25,26 - 897 -319 897 -319 894 -319 c 0,27,28 - 677 -319 677 -319 628 -232 c 0,29,30 - 616 -210 616 -210 616 -186 c 0,31,32 - 616 -131 616 -131 663.5 -82 c 128,-1,33 - 711 -33 711 -33 781 0 c 1,34,-1 - 694 0 l 1,35,-1 - 694 16 l 1,36,37 - 581 -20 581 -20 471 -20 c 0,38,39 - 297 -20 297 -20 195.5 58.5 c 128,-1,40 - 94 137 94 137 94 311 c 0,41,42 - 94 508 94 508 268 584 c 0,43,44 - 357 624 357 624 463 624 c 0,45,-1 - 466 624 l 0,46,47 - 574 624 574 624 690 606 c 1,48,49 - 684 726 684 726 638.5 772.5 c 128,-1,50 - 593 819 593 819 473.5 819 c 128,-1,51 - 354 819 354 819 217 723 c 1,52,-1 - 115 829 l 1,8,9 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eogonek -Encoding: 281 281 223 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -319 37<538 641> -20 102<418 733> 451 102<264 770> 819 102<404 661> -VStem: 90 164<256 451> 358 115<-254 -86> -AnchorPoint: "top" 530 1004 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "bottom" 532 -287 basechar 0 -LayerCount: 2 -Fore -SplineSet -264 553 m 1,0,-1 - 770 553 l 1,1,2 - 752 673 752 673 694 746 c 128,-1,3 - 636 819 636 819 540 819 c 128,-1,4 - 444 819 444 819 367 747 c 128,-1,5 - 290 675 290 675 264 553 c 1,0,-1 -358 -186 m 0,6,7 - 358 -92 358 -92 490 -17 c 1,8,9 - 312 4 312 4 201 130 c 128,-1,10 - 90 256 90 256 90 451 c 0,11,12 - 90 555 90 555 127 645 c 0,13,14 - 164 734 164 734 224 794 c 0,15,16 - 353 922 353 922 512 922 c 0,17,18 - 615 922 615 922 699 880 c 0,19,20 - 782 838 782 838 834 770 c 0,21,22 - 942 627 942 627 942 451 c 1,23,-1 - 254 451 l 1,24,25 - 254 283 254 283 345.5 182.5 c 128,-1,26 - 437 82 437 82 585 82 c 128,-1,27 - 733 82 733 82 809 205 c 1,28,-1 - 932 158 l 1,29,30 - 791 -20 791 -20 553 -20 c 1,31,32 - 473 -75 473 -75 473 -145.5 c 128,-1,33 - 473 -216 473 -216 509.5 -249.5 c 128,-1,34 - 546 -283 546 -283 641 -283 c 1,35,-1 - 641 -319 l 1,36,37 - 639 -319 639 -319 636 -319 c 0,38,39 - 419 -319 419 -319 370 -232 c 0,40,41 - 358 -210 358 -210 358 -186 c 0,6,7 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Lslash -Encoding: 321 321 224 -Width: 1083 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 102<348 1034> 1393 41G<174 348> -VStem: 174 174<102 705 840 850 985 1434> -AnchorPoint: "top" 440 1434 basechar 0 -AnchorPoint: "cedilla" 596 0 basechar 0 -AnchorPoint: "bottom" 604 0 basechar 0 -AnchorPoint: "ogonek" 745 0 basechar 0 -AnchorPoint: "horn" 283 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 102 m 1,0,-1 - 1034 102 l 1,1,-1 - 1034 0 l 1,2,-1 - 174 0 l 1,3,-1 - 174 705 l 1,4,-1 - 74 621 l 1,5,-1 - 8 700 l 1,6,-1 - 174 840 l 1,7,-1 - 174 1434 l 1,8,-1 - 348 1434 l 1,9,-1 - 348 985 l 1,10,-1 - 461 1079 l 1,11,-1 - 526 999 l 1,12,-1 - 348 850 l 1,13,-1 - 348 102 l 1,0,-1 -EndSplineSet -EndChar - -StartChar: lslash -Encoding: 322 322 225 -Width: 456 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 43G<147 311> 1311 41G<147 311> -VStem: 147 164<0 713 848 850 985 1352> -AnchorPoint: "top" 229 1434 basechar 0 -AnchorPoint: "cedilla" 223 0 basechar 0 -AnchorPoint: "bottom" 227 0 basechar 0 -AnchorPoint: "ogonek" 233 0 basechar 0 -AnchorPoint: "horn" 266 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -147 713 m 1,0,-1 - 37 621 l 1,1,-1 - -29 700 l 1,2,-1 - 147 848 l 1,3,-1 - 147 1352 l 1,4,-1 - 311 1352 l 1,5,-1 - 311 985 l 1,6,-1 - 424 1079 l 1,7,-1 - 489 999 l 1,8,-1 - 311 850 l 1,9,-1 - 311 0 l 1,10,-1 - 147 0 l 1,11,-1 - 147 713 l 1,0,-1 -EndSplineSet -EndChar - -StartChar: dcroat -Encoding: 273 273 226 -Width: 1089 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<403 666> 0 43G<780 944> 819 102<403 659> 1085 102<590 780 944 1012> 1311 41G<780 944> -VStem: 90 164<258 643> 780 164<0 47 207 666 823 1085 1188 1352> -AnchorPoint: "top" 532 1004 basechar 0 -AnchorPoint: "bottom" 514 0 basechar 0 -AnchorPoint: "cedilla" 512 0 basechar 0 -AnchorPoint: "ogonek" 864 0 basechar 0 -AnchorPoint: "horn" 975 1135 basechar 0 -LayerCount: 2 -Fore -SplineSet -780 397 m 2,0,-1 - 780 401 l 2,1,2 - 780 558 780 558 730 680 c 0,3,4 - 704 744 704 744 653.5 781.5 c 128,-1,5 - 603 819 603 819 527.5 819 c 128,-1,6 - 452 819 452 819 386 762.5 c 128,-1,7 - 320 706 320 706 287 623 c 128,-1,8 - 254 540 254 540 254 451 c 128,-1,9 - 254 362 254 362 287 278.5 c 128,-1,10 - 320 195 320 195 386 138.5 c 128,-1,11 - 452 82 452 82 546.5 82 c 128,-1,12 - 641 82 641 82 710.5 168.5 c 128,-1,13 - 780 255 780 255 780 397 c 2,0,-1 -944 1085 m 1,14,-1 - 944 0 l 1,15,-1 - 780 0 l 1,16,-1 - 780 47 l 1,17,18 - 675 -20 675 -20 504 -20 c 0,19,20 - 314 -20 314 -20 200 120 c 0,21,22 - 90 256 90 256 90 451 c 0,23,24 - 90 580 90 580 139.5 686.5 c 128,-1,25 - 189 793 189 793 285 857.5 c 128,-1,26 - 381 922 381 922 520.5 922 c 128,-1,27 - 660 922 660 922 780 823 c 1,28,-1 - 780 1085 l 1,29,-1 - 590 1085 l 1,30,-1 - 590 1188 l 1,31,-1 - 780 1188 l 1,32,-1 - 780 1352 l 1,33,-1 - 944 1352 l 1,34,-1 - 944 1188 l 1,35,-1 - 1012 1188 l 1,36,-1 - 1012 1085 l 1,37,-1 - 944 1085 l 1,14,-1 -EndSplineSet -EndChar - -StartChar: Hcircumflex -Encoding: 292 292 227 -Width: 1351 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1008 1182> 717 102<348 1008> 1393 41<174 348 1008 1182> 1503 299 -VStem: 174 174<0 717 819 1434> 412 551 1008 174<0 717 819 1434> -AnchorPoint: "top" 686 1796 basechar 0 -AnchorPoint: "bottom" 674 0 basechar 0 -AnchorPoint: "cedilla" 651 0 basechar 0 -AnchorPoint: "ogonek" 1102 0 basechar 0 -AnchorPoint: "horn" 1147 1352 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1274 246 2 -Refer: 35 72 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Idotaccent -Encoding: 304 304 228 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1516 178<176 340> -VStem: 172 174<0 1434> 176 164<1516 1694> -AnchorPoint: "top" 262 1696 basechar 0 -AnchorPoint: "ogonek" 236 0 basechar 0 -AnchorPoint: "bottom" 252 0 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "horn" 291 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 850 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gbreve -Encoding: 286 286 229 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -20 102<600 973> 717 102<913 1085> 1331 102<549 954> 1516 117<595 839> -VStem: 102 174<451 1008> 485 78<1673 1710> 870 78<1673 1710> 1085 164<173 717> -AnchorPoint: "horn" 1143 1282 basechar 0 -AnchorPoint: "ogonek" 737 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "top" 717 1726 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1305 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Jcircumflex -Encoding: 308 308 230 -Width: 954 -VWidth: 0 -Flags: W -HStem: -20 102<225 556> 1393 41<614 788> 1503 299 -VStem: 430 551 614 174<147 1434> -AnchorPoint: "top" 705 1800 basechar 0 -AnchorPoint: "bottom" 383 0 basechar 0 -AnchorPoint: "horn" 733 1085 basechar 0 -AnchorPoint: "ogonek" 401 0 basechar 0 -AnchorPoint: "cedilla" 401 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1292 246 2 -Refer: 37 74 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: hcircumflex -Encoding: 293 293 231 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 784 948> 819 102<385 697> 1311 41<147 311> 1503 299 -VStem: 113 551 147 164<0 756 870 1352> 784 164<0 717> -AnchorPoint: "top" 387 1802 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "cedilla" 532 0 basechar 0 -AnchorPoint: "ogonek" 860 0 basechar 0 -AnchorPoint: "horn" 856 717 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 975 246 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gbreve -Encoding: 287 287 232 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<339 671> -20 102<393 705> 819 102<378 633> 860 41<729 893> 1085 117<384 628> -VStem: 90 164<235 670> 274 78<1243 1280> 659 78<1243 1280> 729 164<-181 23 114 716 844 901> -AnchorPoint: "horn" 844 717 basechar 0 -AnchorPoint: "cedilla" 496 -319 basechar 0 -AnchorPoint: "ogonek" 639 -299 basechar 0 -AnchorPoint: "bottom" 492 -330 basechar 0 -AnchorPoint: "top" 506 1303 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1094 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: jcircumflex -Encoding: 309 309 233 -Width: 536 -VWidth: 0 -Flags: W -HStem: -348 102<-3 219> 860 41<252 416> 1073 299 -VStem: 59 551 252 164<-216 901> -AnchorPoint: "bottom" 129 -348 basechar 0 -AnchorPoint: "top" 334 1350 basechar 0 -AnchorPoint: "horn" 369 717 basechar 0 -AnchorPoint: "ogonek" 287 -266 basechar 0 -AnchorPoint: "cedilla" 139 -348 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 922 -184 2 -Refer: 111 567 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Cdotaccent -Encoding: 266 266 234 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<600 974> 1352 102<556 933> 1516 178<631 795> -VStem: 102 174<451 1012> 631 164<1516 1694> -AnchorPoint: "top" 717 1700 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1305 246 2 -Refer: 30 67 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ccircumflex -Encoding: 264 264 235 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<600 974> 1352 102<556 933> 1503 299 -VStem: 102 174<451 1012> 442 551 -AnchorPoint: "horn" 1143 1282 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "top" 725 1888 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1305 246 2 -Refer: 30 67 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gdotaccent -Encoding: 288 288 236 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -20 102<600 973> 717 102<913 1085> 1331 102<549 954> 1516 178<631 795> -VStem: 102 174<451 1008> 631 164<1516 1694> 1085 164<173 717> -AnchorPoint: "horn" 1143 1282 basechar 0 -AnchorPoint: "ogonek" 737 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "top" 717 1698 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1305 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gcircumflex -Encoding: 284 284 237 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -20 102<600 973> 717 102<913 1085> 1331 102<549 954> 1503 299 -VStem: 102 174<451 1008> 442 551 1085 164<173 717> -AnchorPoint: "top" 717 1800 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "ogonek" 737 0 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1305 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ubreve -Encoding: 364 364 238 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1516 117<599 843> -VStem: 156 174<328 1434> 489 78<1673 1710> 874 78<1673 1710> 1073 174<328 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1761 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Scircumflex -Encoding: 348 348 239 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -20 102<442 777> 1352 102<441 740> 1503 299 -VStem: 162 174<985 1247> 295 551 907 174<203 504> -AnchorPoint: "top" 569 1802 basechar 0 -AnchorPoint: "cedilla" 573 0 basechar 0 -AnchorPoint: "bottom" 578 0 basechar 0 -AnchorPoint: "horn" 897 1290 basechar 0 -AnchorPoint: "ogonek" 602 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1157 246 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: cdotaccent -Encoding: 267 267 240 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 819 102<404 664> 1085 178<446 610> -VStem: 90 164<253 648> 446 164<1085 1264> -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "ogonek" 571 0 basechar 0 -AnchorPoint: "bottom" 569 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "top" 532 1307 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1120 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ccircumflex -Encoding: 265 265 241 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 819 102<404 664> 1073 299 -VStem: 90 164<253 648> 258 551 -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "ogonek" 571 0 basechar 0 -AnchorPoint: "bottom" 569 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "top" 532 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1120 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gdotaccent -Encoding: 289 289 242 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<339 671> -20 102<393 705> 819 102<378 633> 860 41<729 893> 1085 178<420 584> -VStem: 90 164<235 670> 420 164<1085 1264> 729 164<-181 23 114 716 844 901> -AnchorPoint: "horn" 844 717 basechar 0 -AnchorPoint: "cedilla" 496 -319 basechar 0 -AnchorPoint: "ogonek" 639 -299 basechar 0 -AnchorPoint: "bottom" 492 -330 basechar 0 -AnchorPoint: "top" 506 1270 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1094 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gcircumflex -Encoding: 285 285 243 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<339 671> -20 102<393 705> 819 102<378 633> 860 41<729 893> 1073 299 -VStem: 90 164<235 670> 231 551 729 164<-181 23 114 716 844 901> -AnchorPoint: "top" 506 1430 basechar 0 -AnchorPoint: "bottom" 492 -330 basechar 0 -AnchorPoint: "ogonek" 639 -299 basechar 0 -AnchorPoint: "cedilla" 496 -319 basechar 0 -AnchorPoint: "horn" 844 717 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1094 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ubreve -Encoding: 365 365 244 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1085 117<427 671> -VStem: 143 164<204 901> 317 78<1243 1280> 702 78<1243 1280> 780 164<0 33 135 901> -AnchorPoint: "top" 549 1303 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scircumflex -Encoding: 349 349 245 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<276 603> 819 102<316 571> 1073 299 -VStem: 125 164<595 792> 141 551 651 164<128 358> -AnchorPoint: "top" 416 1350 basechar 0 -AnchorPoint: "cedilla" 449 0 basechar 0 -AnchorPoint: "bottom" 449 0 basechar 0 -AnchorPoint: "ogonek" 455 0 basechar 0 -AnchorPoint: "horn" 647 793 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1004 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Hbar -Encoding: 294 294 246 -Width: 1351 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 43G<174 348 1008 1182> 717 102<348 1008> 1159 102<92 174 348 1008 1182 1264> 1393 41G<174 348 1008 1182> -VStem: 174 174<0 717 819 1159 1262 1434> 1008 174<0 717 819 1159 1262 1434> -AnchorPoint: "top" 686 1434 basechar 0 -AnchorPoint: "bottom" 674 0 basechar 0 -AnchorPoint: "cedilla" 651 0 basechar 0 -AnchorPoint: "ogonek" 1102 0 basechar 0 -AnchorPoint: "horn" 1147 1352 basechar 0 -LayerCount: 2 -Fore -SplineSet -174 1159 m 1,0,-1 - 92 1159 l 1,1,-1 - 92 1262 l 1,2,-1 - 174 1262 l 1,3,-1 - 174 1434 l 1,4,-1 - 348 1434 l 1,5,-1 - 348 1262 l 1,6,-1 - 1008 1262 l 1,7,-1 - 1008 1434 l 1,8,-1 - 1182 1434 l 1,9,-1 - 1182 1262 l 1,10,-1 - 1264 1262 l 1,11,-1 - 1264 1159 l 1,12,-1 - 1182 1159 l 1,13,-1 - 1182 0 l 1,14,-1 - 1008 0 l 1,15,-1 - 1008 717 l 1,16,-1 - 348 717 l 1,17,-1 - 348 0 l 1,18,-1 - 174 0 l 1,19,-1 - 174 1159 l 1,0,-1 -1008 1159 m 1,20,-1 - 348 1159 l 1,21,-1 - 348 819 l 1,22,-1 - 1008 819 l 1,23,-1 - 1008 1159 l 1,20,-1 -EndSplineSet -EndChar - -StartChar: hbar -Encoding: 295 295 247 -Width: 1087 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 43G<147 311 784 948> 819 102<385 697> 1085 102<66 147 311 487> 1311 41G<147 311> -VStem: 147 164<0 756 870 1085 1188 1352> 784 164<0 717> -AnchorPoint: "top" 387 1434 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "cedilla" 532 0 basechar 0 -AnchorPoint: "ogonek" 860 0 basechar 0 -AnchorPoint: "horn" 856 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -311 723 m 1,0,-1 - 311 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 1085 l 1,3,-1 - 66 1085 l 1,4,-1 - 66 1188 l 1,5,-1 - 147 1188 l 1,6,-1 - 147 1352 l 1,7,-1 - 311 1352 l 1,8,-1 - 311 1188 l 1,9,-1 - 487 1188 l 1,10,-1 - 487 1085 l 1,11,-1 - 311 1085 l 1,12,-1 - 311 870 l 1,13,14 - 410 922 410 922 520 922 c 0,15,16 - 736 922 736 922 842 816 c 128,-1,17 - 948 710 948 710 948 492 c 2,18,-1 - 948 0 l 1,19,-1 - 784 0 l 1,20,-1 - 784 467 l 2,21,22 - 784 677 784 677 720 751 c 0,23,24 - 662 819 662 819 542 819 c 128,-1,25 - 422 819 422 819 311 723 c 1,0,-1 -EndSplineSet -EndChar - -StartChar: Iogonek -Encoding: 302 302 248 -Width: 514 -VWidth: 0 -Flags: W -HStem: -319 37<185 289> 0 43<172 346> 1393 41<172 346> -VStem: 6 115<-254 -86> 172 174<0 1434> -AnchorPoint: "top" 262 1434 basechar 0 -AnchorPoint: "horn" 291 1085 basechar 0 -AnchorPoint: "bottom" 178 -287 basechar 0 -LayerCount: 2 -Fore -SplineSet -346 1434 m 1,0,-1 - 346 0 l 1,1,-1 - 236 0 l 1,2,3 - 189 -24 189 -24 155 -62.5 c 128,-1,4 - 121 -101 121 -101 121 -158.5 c 128,-1,5 - 121 -216 121 -216 157.5 -249.5 c 128,-1,6 - 194 -283 194 -283 289 -283 c 1,7,-1 - 289 -319 l 1,8,9 - 287 -319 287 -319 284 -319 c 0,10,11 - 67 -319 67 -319 18 -232 c 0,12,13 - 6 -210 6 -210 6 -186 c 0,14,15 - 6 -130 6 -130 54 -81 c 128,-1,16 - 102 -32 102 -32 172 1 c 1,17,-1 - 172 1434 l 1,18,-1 - 346 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Uogonek -Encoding: 370 370 249 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -319 37<736 840> -20 102<539 873> 1393 41<156 330 1073 1247> -VStem: 156 174<328 1434> 557 115<-254 -86> 1073 174<328 1434> -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "top" 700 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -557 -186 m 0,0,1 - 557 -94 557 -94 683 -20 c 1,2,3 - 528 -16 528 -16 404 60 c 0,4,5 - 332 104 332 104 278.5 172 c 128,-1,6 - 225 240 225 240 190.5 353 c 128,-1,7 - 156 466 156 466 156 610 c 2,8,-1 - 156 1434 l 1,9,-1 - 330 1434 l 1,10,-1 - 330 610 l 2,11,12 - 330 203 330 203 574 108 c 0,13,14 - 641 82 641 82 700.5 82 c 128,-1,15 - 760 82 760 82 807 95 c 128,-1,16 - 854 108 854 108 904 144.5 c 128,-1,17 - 954 181 954 181 990 238 c 0,18,19 - 1073 369 1073 369 1073 610 c 2,20,-1 - 1073 1434 l 1,21,-1 - 1247 1434 l 1,22,-1 - 1247 610 l 2,23,24 - 1247 110 1247 110 910 6 c 0,25,26 - 845 -14 845 -14 754 -19 c 1,27,28 - 672 -74 672 -74 672 -145 c 128,-1,29 - 672 -216 672 -216 708.5 -249.5 c 128,-1,30 - 745 -283 745 -283 840 -283 c 1,31,-1 - 840 -319 l 1,32,33 - 838 -319 838 -319 835 -319 c 0,34,35 - 619 -319 619 -319 570 -232 c 0,36,37 - 558 -210 558 -210 557 -186 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: iogonek -Encoding: 303 303 250 -Width: 407 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -319 37<228 332> 0 43<123 287> 860 41<123 287> 1085 164<123 287> -VStem: 49 115<-254 -86> 123 164<0 901 1085 1249> -AnchorPoint: "horn" 250 717 basechar 0 -AnchorPoint: "top" 205 1167 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 287 901 l 1,1,-1 - 287 0 l 1,2,-1 - 279 0 l 1,3,4 - 232 -24 232 -24 198 -62.5 c 128,-1,5 - 164 -101 164 -101 164 -158.5 c 128,-1,6 - 164 -216 164 -216 200.5 -249.5 c 128,-1,7 - 237 -283 237 -283 332 -283 c 1,8,-1 - 332 -319 l 1,9,10 - 330 -319 330 -319 327 -319 c 0,11,12 - 111 -319 111 -319 62 -232 c 0,13,14 - 50 -210 50 -210 49 -186 c 0,15,16 - 49 -131 49 -131 96.5 -82 c 128,-1,17 - 144 -33 144 -33 213 0 c 1,18,-1 - 123 0 l 1,19,-1 - 123 901 l 1,0,-1 -123 1249 m 1,20,-1 - 287 1249 l 1,21,-1 - 287 1085 l 1,22,-1 - 123 1085 l 1,23,-1 - 123 1249 l 1,20,-1 -EndSplineSet -EndChar - -StartChar: uogonek -Encoding: 371 371 251 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -319 37<886 989> -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> -VStem: 143 164<204 901> 707 115<-254 -86> 780 164<0 33 135 901> -AnchorPoint: "top" 549 1004 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -780 172 m 1,0,-1 - 780 901 l 1,1,-1 - 944 901 l 1,2,-1 - 944 0 l 1,3,-1 - 936 0 l 1,4,5 - 889 -24 889 -24 855 -62.5 c 128,-1,6 - 821 -101 821 -101 821 -158.5 c 128,-1,7 - 821 -216 821 -216 857.5 -249.5 c 128,-1,8 - 894 -283 894 -283 989 -283 c 1,9,-1 - 989 -319 l 1,10,11 - 987 -319 987 -319 984 -319 c 0,12,13 - 769 -319 769 -319 720 -232 c 0,14,15 - 708 -210 708 -210 707 -186 c 0,16,17 - 707 -131 707 -131 754.5 -82 c 128,-1,18 - 802 -33 802 -33 871 0 c 1,19,-1 - 780 0 l 1,20,-1 - 780 33 l 1,21,22 - 668 -20 668 -20 541 -20 c 0,23,24 - 329 -20 329 -20 236 84 c 128,-1,25 - 143 188 143 188 143 410 c 2,26,-1 - 143 901 l 1,27,-1 - 307 901 l 1,28,-1 - 307 434 l 2,29,30 - 307 227 307 227 386 150 c 0,31,32 - 456 82 456 82 571.5 82 c 128,-1,33 - 687 82 687 82 780 172 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Amacron -Encoding: 256 256 252 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1556 82<406 877> -VStem: 406 471<1556 1638> -AnchorPoint: "top" 657 1640 basechar 0 -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1239 287 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Emacron -Encoding: 274 274 253 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1556 82<369 840> -VStem: 174 174<102 799 901 1331> 369 471<1556 1638> -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 614 1638 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1202 287 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Edotaccent -Encoding: 278 278 254 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1516 178<528 692> -VStem: 174 174<102 799 901 1331> 528 164<1516 1694> -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 614 1700 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Imacron -Encoding: 298 298 255 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1556 82<16 487> -VStem: 16 471<1556 1638> 172 174<0 1434> -AnchorPoint: "horn" 291 1085 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "bottom" 252 0 basechar 0 -AnchorPoint: "ogonek" 236 0 basechar 0 -AnchorPoint: "top" 262 1640 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 850 287 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Omacron -Encoding: 332 332 256 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1556 82<461 932> -VStem: 102 174<441 1012> 461 471<1556 1638> 1163 174<438 1009> -AnchorPoint: "cedilla" 700 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "top" 707 1638 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1294 287 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Umacron -Encoding: 362 362 257 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1556 82<475 946> -VStem: 156 174<328 1434> 475 471<1556 1638> 1073 174<328 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1640 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1309 287 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: amacron -Encoding: 257 257 258 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1126 82<244 715> -VStem: 94 164<178 440> 244 471<1126 1208> 694 164<0 16 107 507 606 754> -AnchorPoint: "top" 494 1208 basechar 0 -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1077 -143 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: emacron -Encoding: 275 275 259 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1126 82<285 756> -VStem: 90 164<256 451> 285 471<1126 1208> -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "top" 530 1208 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1118 -143 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: edotaccent -Encoding: 279 279 260 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1085 178<444 608> -VStem: 90 164<256 451> 444 164<1085 1264> -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "top" 530 1282 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gcommaaccent -Encoding: 291 291 261 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<339 671> -20 102<393 705> 819 102<378 633> 860 41<729 893> 1085 367<496 530> -VStem: 90 164<235 670> 426 147<1085 1298> 729 164<-181 23 114 716 844 901> -AnchorPoint: "horn" 844 717 basechar 0 -AnchorPoint: "cedilla" 496 -319 basechar 0 -AnchorPoint: "ogonek" 639 -299 basechar 0 -AnchorPoint: "bottom" 492 -330 basechar 0 -AnchorPoint: "top" 506 1430 basechar 0 -LayerCount: 2 -Fore -Refer: 105 786 N 1 0 0 1 1094 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: imacron -Encoding: 299 299 262 -Width: 471 -VWidth: 0 -Flags: W -HStem: 0 43<174 338> 860 41<174 338> 1126 82<0 471> -VStem: 0 471<1126 1208> 174 164<0 901> -AnchorPoint: "top" 254 1214 basechar 0 -AnchorPoint: "horn" 299 717 basechar 0 -AnchorPoint: "cedilla" 258 0 basechar 0 -AnchorPoint: "bottom" 252 0 basechar 0 -AnchorPoint: "ogonek" 328 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 834 -143 2 -Refer: 112 305 N 1 0 0 1 51 0 2 -Validated: 1 -EndChar - -StartChar: omacron -Encoding: 333 333 263 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1126 82<289 760> -VStem: 90 164<231 648> 289 471<1126 1208> 807 164<241 660> -AnchorPoint: "cedilla" 506 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "top" 535 1208 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1122 -143 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: umacron -Encoding: 363 363 264 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1126 82<303 774> -VStem: 143 164<204 901> 303 471<1126 1208> 780 164<0 33 135 901> -AnchorPoint: "cedilla" 522 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "top" 549 1208 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1137 -143 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E02 -Encoding: 7682 7682 265 -Width: 1116 -VWidth: 0 -Flags: W -HStem: 0 102<348 758> 727 102<348 668> 1331 102<348 691> 1516 178<416 580> -VStem: 174 174<102 727 829 1331> 416 164<1516 1694> 778 174<946 1243> 864 174<216 579> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1090 246 2 -Refer: 28 66 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E03 -Encoding: 7683 7683 266 -Width: 1079 -VWidth: 0 -Flags: W -HStem: -20 102<387 701> 819 102<430 702> 1085 178<492 655> 1311 41<139 303> -VStem: 139 164<166 678 852 1352> 492 164<1085 1264> 829 164<237 664> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1165 -184 2 -Refer: 6 98 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0A -Encoding: 7690 7690 267 -Width: 1304 -VWidth: 0 -Flags: W -HStem: 0 102<348 826> 1331 102<348 841> 1516 178<496 659> -VStem: 174 174<102 1331> 496 164<1516 1694> 1030 174<394 1073> -AnchorPoint: "bottom" 512 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1169 246 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wgrave -Encoding: 7808 7808 268 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43<486 693 1087 1293> 860 41<808 972> 1085 387 1393 41<35 200 1580 1745> -VStem: 633 350 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1329 -170 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wacute -Encoding: 7810 7810 269 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43<486 693 1087 1293> 860 41<808 972> 1085 387 1393 41<35 200 1580 1745> -VStem: 766 350 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1462 -170 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0B -Encoding: 7691 7691 270 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -20 102<403 666> 0 43<780 944> 819 102<403 659> 1085 178<446 610> 1311 41<780 944> -VStem: 90 164<258 643> 446 164<1085 1264> 780 164<0 47 208 666 823 1352> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1120 -184 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ygrave -Encoding: 7922 7922 271 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<391 565> 1393 41<23 228 731 936> 1501 387 -VStem: 236 350 391 174<0 709> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 932 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ydieresis -Encoding: 376 376 272 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<391 565> 1393 41<23 228 731 936> 1516 178<209 373 578 741> -VStem: 209 164<1516 1694> 391 174<0 709> 578 164<1516 1694> -AnchorPoint: "horn" 725 1085 basechar 0 -AnchorPoint: "cedilla" 492 0 basechar 0 -AnchorPoint: "ogonek" 510 0 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "top" 477 1765 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1065 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1E -Encoding: 7710 7710 273 -Width: 1067 -VWidth: 0 -Flags: W -HStem: 0 43<174 348> 799 102<348 817> 1331 102<348 1001> 1516 178<518 682> -VStem: 174 174<0 799 901 1331> 518 164<1516 1694> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1192 246 2 -Refer: 33 70 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1F -Encoding: 7711 7711 274 -Width: 559 -VWidth: 0 -Flags: W -HStem: 0 43<166 330> 799 102<61 166 330 492> 1270 102<363 538> 1516 178<254 418> -VStem: 166 164<0 799 901 1238> 254 164<1516 1694> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 928 246 2 -Refer: 12 102 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E40 -Encoding: 7744 7744 275 -Width: 1626 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1282 1456> 1393 41<174 367 1263 1456> 1434 178<729 893> -VStem: 174 174<0 1098> 729 164<1434 1612> 1282 174<0 1098> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1403 164 2 -Refer: 40 77 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E41 -Encoding: 7745 7745 276 -Width: 1605 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 725 889 1303 1466> 819 102<367 664 944 1231> 860 41<147 311> 1085 178<721 885> -VStem: 147 164<0 766 874 901> 721 164<1085 1264> 725 164<0 753> 1303 164<0 726> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1395 -184 2 -Refer: 11 109 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E56 -Encoding: 7766 7766 277 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 43<174 348> 655 102<348 755> 1331 102<348 757> 1516 178<475 639> -VStem: 174 174<0 655 758 1331> 475 164<1516 1694> 864 174<872 1217> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1149 246 2 -Refer: 29 80 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wgrave -Encoding: 7809 7809 278 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43<341 519 1013 1190> 860 41<29 193 669 848 1324 1503> 1071 387 -VStem: 518 350 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1214 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E57 -Encoding: 7767 7767 279 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -16 102<439 692> 823 102<421 705> 864 41<147 311> 1085 178<496 659> -VStem: 147 164<-410 59 240 710 866 905> 496 164<1085 1264> 838 164<262 660> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1169 -184 2 -Refer: 16 112 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wacute -Encoding: 7811 7811 280 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43<341 519 1013 1190> 860 41<29 193 669 848 1324 1503> 1071 387 -VStem: 651 350 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1348 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E60 -Encoding: 7776 7776 281 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -20 102<442 777> 1352 102<441 740> 1516 178<483 647> -VStem: 162 174<985 1247> 483 164<1516 1694> 907 174<203 504> -AnchorPoint: "bottom" 602 0 basechar 0 -AnchorPoint: "cedilla" 598 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1157 246 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ygrave -Encoding: 7923 7923 282 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 860 41<45 209 685 864> 1071 387 -VStem: 219 350 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 915 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wdieresis -Encoding: 7812 7812 283 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43<486 693 1087 1293> 860 41<808 972> 1249 178<606 770 975 1139> 1393 41<35 200 1580 1745> -VStem: 606 164<1249 1427> 975 164<1249 1427> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1462 -20 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wdieresis -Encoding: 7813 7813 284 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43<341 519 1013 1190> 860 41<29 193 669 848 1324 1503> 1085 178<492 655 860 1024> -VStem: 492 164<1085 1264> 860 164<1085 1264> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1348 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E61 -Encoding: 7777 7777 285 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<276 603> 819 102<316 571> 1085 178<330 494> -VStem: 125 164<595 792> 330 164<1085 1264> 651 164<128 358> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1004 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wcircumflex -Encoding: 372 372 286 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43<486 693 1087 1293> 860 41<808 972> 1108 299 1393 41<35 200 1580 1745> -VStem: 600 551 -AnchorPoint: "top" 874 1434 basechar 0 -AnchorPoint: "bottom" 899 0 basechar 0 -AnchorPoint: "cedilla" 881 0 basechar 0 -AnchorPoint: "ogonek" 1188 0 basechar 0 -AnchorPoint: "horn" 1577 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1462 -150 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6A -Encoding: 7786 7786 287 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 43<553 727> 1331 102<41 553 727 1243> 1516 178<578 741> -VStem: 553 174<0 1331> 578 164<1516 1694> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1251 246 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ycircumflex -Encoding: 374 374 288 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<391 565> 1393 41<23 228 731 936> 1503 299 -VStem: 203 551 391 174<0 709> -AnchorPoint: "horn" 725 1085 basechar 0 -AnchorPoint: "cedilla" 492 0 basechar 0 -AnchorPoint: "ogonek" 510 0 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "top" 477 1888 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1065 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wcircumflex -Encoding: 373 373 289 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43<341 519 1013 1190> 860 41<29 193 669 848 1324 1503> 1073 299 -VStem: 485 551 -AnchorPoint: "top" 760 1376 basechar 0 -AnchorPoint: "bottom" 766 0 basechar 0 -AnchorPoint: "cedilla" 766 0 basechar 0 -AnchorPoint: "ogonek" 1110 0 basechar 0 -AnchorPoint: "horn" 1380 717 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1348 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6B -Encoding: 7787 7787 290 -Width: 567 -VWidth: 0 -Flags: W -HStem: 0 43<188 352> 799 102<84 188 352 514> 1434 178<186 350> -VStem: 186 164<1434 1612> 188 164<0 799 901 1198> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 860 164 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ycircumflex -Encoding: 375 375 291 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 860 41<45 209 685 864> 1073 299 -VStem: 186 551 -AnchorPoint: "horn" 762 717 basechar 0 -AnchorPoint: "cedilla" 242 -328 basechar 0 -AnchorPoint: "bottom" 365 -315 basechar 0 -AnchorPoint: "ogonek" 614 0 basechar 0 -AnchorPoint: "top" 461 1430 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1049 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Rcommaaccent -Encoding: 342 342 292 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -401 49<434 609> -164 57<508 617> 0 43<174 348 901 1069> 655 102<348 615> 1331 102<348 757> -VStem: 174 174<0 655 758 1331> 655 127<-328 -188> 864 174<873 1217> 901 168<0 202> -AnchorPoint: "top" 561 1434 basechar 0 -AnchorPoint: "cedilla" 590 0 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "ogonek" 975 0 basechar 0 -AnchorPoint: "horn" 954 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1180 0 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Itilde -Encoding: 296 296 293 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1516 117<265 464> 1581 117<81 279> -VStem: -10 84<1516 1566> 172 174<0 1434> 471 84<1647 1698> -AnchorPoint: "horn" 291 1085 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "bottom" 252 0 basechar 0 -AnchorPoint: "ogonek" 236 0 basechar 0 -AnchorPoint: "top" 262 1726 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 850 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Lcommaaccent -Encoding: 315 315 294 -Width: 1083 -VWidth: 0 -Flags: W -HStem: -401 49<440 615> -164 57<514 623> 0 102<348 1034> 1393 41<174 348> -VStem: 174 174<102 1434> 662 127<-328 -188> -AnchorPoint: "top" 440 1434 basechar 0 -AnchorPoint: "cedilla" 596 0 basechar 0 -AnchorPoint: "bottom" 604 0 basechar 0 -AnchorPoint: "ogonek" 745 0 basechar 0 -AnchorPoint: "horn" 283 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1186 0 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gcommaaccent -Encoding: 290 290 295 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -401 49<602 777> -164 57<676 785> -20 102<600 973> 717 102<913 1085> 1331 102<549 954> -VStem: 102 174<451 1008> 823 127<-328 -188> 1085 164<173 717> -AnchorPoint: "top" 717 1434 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "ogonek" 737 0 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1348 0 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: rcommaaccent -Encoding: 343 343 296 -Width: 677 -VWidth: 0 -Flags: W -HStem: -401 49<70 244> -164 57<143 253> 0 43<147 311> 819 102<356 647> 860 41<147 311> -VStem: 147 164<0 774 874 901> 291 127<-328 -188> -AnchorPoint: "top" 397 1004 basechar 0 -AnchorPoint: "cedilla" 225 0 basechar 0 -AnchorPoint: "bottom" 240 0 basechar 0 -AnchorPoint: "ogonek" 246 0 basechar 0 -AnchorPoint: "horn" 647 856 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 815 0 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: itilde -Encoding: 297 297 297 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1085 117<210 409> 1151 117<25 224> -VStem: -66 84<1085 1136> 123 164<0 901> 416 84<1217 1268> -AnchorPoint: "top" 205 1288 basechar 0 -AnchorPoint: "horn" 250 717 basechar 0 -AnchorPoint: "cedilla" 209 0 basechar 0 -AnchorPoint: "bottom" 203 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 795 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: lcommaaccent -Encoding: 316 316 298 -Width: 456 -VWidth: 0 -Flags: W -HStem: -401 49<68 242> -164 57<141 251> 0 43<147 311> 1311 41<147 311> -VStem: 147 164<0 1352> 289 127<-328 -188> -AnchorPoint: "top" 229 1434 basechar 0 -AnchorPoint: "cedilla" 223 0 basechar 0 -AnchorPoint: "bottom" 227 0 basechar 0 -AnchorPoint: "ogonek" 233 0 basechar 0 -AnchorPoint: "horn" 266 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 813 0 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ncommaaccent -Encoding: 325 325 299 -Width: 1406 -VWidth: 0 -Flags: W -HStem: -401 49<541 716> -164 57<614 724> 0 43<174 348 1034 1237> 1393 41<174 375 1063 1237> -VStem: 174 174<0 1157> 762 127<-328 -188> 1063 174<274 1434> -AnchorPoint: "top" 717 1438 basechar 0 -AnchorPoint: "cedilla" 696 0 basechar 0 -AnchorPoint: "bottom" 694 0 basechar 0 -AnchorPoint: "ogonek" 1143 0 basechar 0 -AnchorPoint: "horn" 1188 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1286 0 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Kcommaaccent -Encoding: 310 310 300 -Width: 1243 -VWidth: 0 -Flags: W -HStem: -401 49<500 675> -164 57<573 683> 0 43<174 348 1008 1233> 1393 41<174 348 967 1208> -VStem: 174 174<0 469 696 1434> 721 127<-328 -188> -AnchorPoint: "top" 483 1434 basechar 0 -AnchorPoint: "cedilla" 655 0 basechar 0 -AnchorPoint: "bottom" 635 0 basechar 0 -AnchorPoint: "ogonek" 1135 0 basechar 0 -AnchorPoint: "horn" 1032 1352 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1245 0 2 -Refer: 38 75 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Utilde -Encoding: 360 360 301 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1516 117<724 923> 1581 117<540 738> -VStem: 156 174<328 1434> 449 84<1516 1566> 930 84<1647 1698> 1073 174<328 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1729 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ncommaaccent -Encoding: 326 326 302 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -401 49<385 560> -164 57<459 568> 0 43<147 311 784 948> 819 102<385 697> 860 41<147 311> -VStem: 147 164<0 756 870 901> 606 127<-328 -188> 784 164<0 717> -AnchorPoint: "horn" 856 717 basechar 0 -AnchorPoint: "ogonek" 877 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "top" 561 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1130 0 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: kcommaaccent -Encoding: 311 311 303 -Width: 980 -VWidth: 0 -Flags: W -HStem: -401 49<352 527> -164 57<426 535> 0 43<147 311 705 913> 860 41<652 877> 1311 41<147 311> -VStem: 147 164<0 268 477 1352> 573 127<-328 -188> -AnchorPoint: "top" 387 1434 basechar 0 -AnchorPoint: "cedilla" 508 0 basechar 0 -AnchorPoint: "bottom" 508 0 basechar 0 -AnchorPoint: "ogonek" 819 0 basechar 0 -AnchorPoint: "horn" 668 717 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1098 0 2 -Refer: 25 107 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: utilde -Encoding: 361 361 304 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1085 117<552 751> 1151 117<368 566> -VStem: 143 164<204 901> 276 84<1085 1136> 758 84<1217 1268> 780 164<0 33 135 901> -AnchorPoint: "cedilla" 522 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "top" 549 1294 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: kgreenlandic -Encoding: 312 312 305 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43G<147 311 705 913> 860 41G<147 311 652 877> -VStem: 147 164<0 268 477 901> -AnchorPoint: "top" 387 901 basechar 0 -AnchorPoint: "cedilla" 508 0 basechar 0 -AnchorPoint: "bottom" 508 0 basechar 0 -AnchorPoint: "ogonek" 819 0 basechar 0 -AnchorPoint: "horn" 668 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -311 268 m 1,0,-1 - 311 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 901 l 1,3,-1 - 311 901 l 1,4,-1 - 311 477 l 1,5,-1 - 688 901 l 1,6,-1 - 877 901 l 1,7,-1 - 520 502 l 1,8,-1 - 913 0 l 1,9,-1 - 737 0 l 1,10,-1 - 424 395 l 1,11,-1 - 311 268 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Tbar -Encoding: 358 358 306 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 43G<553 727> 901 102<348 553 727 932> 1331 102<41 553 727 1243> -VStem: 553 174<0 901 1004 1331> -AnchorPoint: "horn" 1200 1389 basechar 0 -AnchorPoint: "ogonek" 659 0 basechar 0 -AnchorPoint: "bottom" 643 0 basechar 0 -AnchorPoint: "cedilla" 639 0 basechar 0 -AnchorPoint: "top" 643 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -41 1434 m 1,0,-1 - 1243 1434 l 1,1,-1 - 1243 1331 l 1,2,-1 - 727 1331 l 1,3,-1 - 727 1004 l 1,4,-1 - 932 1004 l 1,5,-1 - 932 901 l 1,6,-1 - 727 901 l 1,7,-1 - 727 0 l 1,8,-1 - 553 0 l 1,9,-1 - 553 901 l 1,10,-1 - 348 901 l 1,11,-1 - 348 1004 l 1,12,-1 - 553 1004 l 1,13,-1 - 553 1331 l 1,14,-1 - 41 1331 l 1,15,-1 - 41 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tbar -Encoding: 359 359 307 -Width: 567 -VWidth: 0 -Flags: W -HStem: 0 43G<186 350> 500 102<31 186 350 528> 799 102<82 186 350 512> -VStem: 186 164<0 500 602 799 901 1198> -AnchorPoint: "top" 272 1352 basechar 0 -AnchorPoint: "cedilla" 264 0 basechar 0 -AnchorPoint: "bottom" 264 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -AnchorPoint: "horn" 319 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -186 500 m 1,0,-1 - 31 500 l 1,1,-1 - 31 602 l 1,2,-1 - 186 602 l 1,3,-1 - 186 799 l 1,4,-1 - 51 799 l 1,5,-1 - 82 901 l 1,6,-1 - 186 901 l 1,7,-1 - 186 1198 l 1,8,-1 - 350 1229 l 1,9,-1 - 350 901 l 1,10,-1 - 512 901 l 1,11,-1 - 512 799 l 1,12,-1 - 350 799 l 1,13,-1 - 350 602 l 1,14,-1 - 528 602 l 1,15,-1 - 528 500 l 1,16,-1 - 350 500 l 1,17,-1 - 350 0 l 1,18,-1 - 186 0 l 1,19,-1 - 186 500 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Eng -Encoding: 330 330 308 -Width: 1251 -VWidth: 0 -Flags: W -HStem: -20 102<609 862> 0 43G<147 322> 1270 102<464 826> 1311 41G<147 322> -VStem: 147 174<0 1169 1282 1352> 946 174<237 1132> -AnchorPoint: "horn" 1053 1085 basechar 0 -AnchorPoint: "ogonek" 715 0 basechar 0 -AnchorPoint: "bottom" 688 0 basechar 0 -AnchorPoint: "cedilla" 688 0 basechar 0 -AnchorPoint: "top" 672 1354 basechar 0 -LayerCount: 2 -Fore -SplineSet -528 178 m 1,0,1 - 663 82 663 82 756 82 c 0,2,3 - 853 82 853 82 890 157 c 0,4,5 - 910 198 910 198 922 234 c 0,6,7 - 934 272 934 272 939 344 c 0,8,9 - 946 446 946 446 946 594 c 2,10,-1 - 946 918 l 2,11,12 - 946 1270 946 1270 659 1270 c 0,13,14 - 560 1270 560 1270 472.5 1230 c 128,-1,15 - 385 1190 385 1190 322 1135 c 1,16,-1 - 322 0 l 1,17,-1 - 147 0 l 1,18,-1 - 147 1352 l 1,19,-1 - 322 1352 l 1,20,-1 - 322 1282 l 1,21,22 - 324 1283 324 1283 343.5 1293.5 c 128,-1,23 - 363 1304 363 1304 369.5 1307 c 128,-1,24 - 376 1310 376 1310 395.5 1319.5 c 128,-1,25 - 415 1329 415 1329 427 1333 c 128,-1,26 - 439 1337 439 1337 459.5 1345 c 128,-1,27 - 480 1353 480 1353 497 1356.5 c 128,-1,28 - 514 1360 514 1360 536 1364 c 0,29,30 - 573 1372 573 1372 629 1372 c 0,31,32 - 853 1372 853 1372 986.5 1262.5 c 128,-1,33 - 1120 1153 1120 1153 1120 942 c 2,34,-1 - 1120 639 l 2,35,36 - 1120 235 1120 235 1002 93 c 0,37,38 - 908 -20 908 -20 725 -20 c 1,39,40 - 648 -20 648 -20 580 3.5 c 128,-1,41 - 512 27 512 27 426 72 c 1,42,-1 - 528 178 l 1,0,1 -EndSplineSet -Validated: 1 -Substitution2: "'locl' Localized Forms for Sami-1" Engsami -EndChar - -StartChar: eng -Encoding: 331 331 309 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -348 102<530 751> 0 43G<147 311> 819 102<385 697> 860 41G<147 311> -VStem: 147 164<0 756 870 901> 784 164<-216 717> -AnchorPoint: "top" 561 1004 basechar 0 -AnchorPoint: "cedilla" 598 -311 basechar 0 -AnchorPoint: "bottom" 598 -311 basechar 0 -AnchorPoint: "ogonek" 598 -311 basechar 0 -AnchorPoint: "horn" 856 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -948 492 m 2,0,-1 - 948 -68 l 2,1,2 - 948 -272 948 -272 752 -332 c 0,3,4 - 700 -348 700 -348 643 -348 c 0,5,6 - 513 -348 513 -348 436 -256 c 1,7,-1 - 565 -195 l 1,8,9 - 601 -246 601 -246 667.5 -246 c 128,-1,10 - 734 -246 734 -246 759 -187.5 c 128,-1,11 - 784 -129 784 -129 784 0 c 2,12,-1 - 784 467 l 2,13,14 - 784 677 784 677 720 751 c 0,15,16 - 662 819 662 819 542 819 c 128,-1,17 - 422 819 422 819 311 723 c 1,18,-1 - 311 0 l 1,19,-1 - 147 0 l 1,20,-1 - 147 901 l 1,21,-1 - 311 901 l 1,22,-1 - 311 870 l 1,23,24 - 410 922 410 922 520 922 c 0,25,26 - 736 922 736 922 842 816 c 128,-1,27 - 948 710 948 710 948 492 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: asciicircum -Encoding: 94 94 310 -Width: 856 -VWidth: 0 -Flags: W -HStem: 193 627 -LayerCount: 2 -Fore -SplineSet -426 819 m 1,0,-1 - 823 250 l 1,1,-1 - 741 193 l 1,2,-1 - 426 639 l 1,3,-1 - 115 193 l 1,4,-1 - 33 250 l 1,5,-1 - 426 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: grave -Encoding: 96 96 311 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: 74 350 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 770 0 2 -Validated: 1 -EndChar - -StartChar: asciitilde -Encoding: 126 126 312 -Width: 831 -VWidth: 0 -Flags: W -HStem: 420 117<397 657> 485 117<175 435> -VStem: 82 84<420 466> 666 84<556 602> -LayerCount: 2 -Fore -SplineSet -666 602 m 1,0,-1 - 750 602 l 1,1,2 - 741 524 741 524 678.5 472 c 128,-1,3 - 616 420 616 420 528 420 c 0,4,5 - 490 420 490 420 401 452.5 c 128,-1,6 - 312 485 312 485 278 485 c 0,7,8 - 244 485 244 485 207 468.5 c 128,-1,9 - 170 452 170 452 166 420 c 1,10,-1 - 82 420 l 1,11,12 - 91 498 91 498 153 550 c 128,-1,13 - 215 602 215 602 303 602 c 0,14,15 - 341 602 341 602 430.5 569.5 c 128,-1,16 - 520 537 520 537 554 537 c 0,17,18 - 588 537 588 537 625 553.5 c 128,-1,19 - 662 570 662 570 666 602 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: exclamdown -Encoding: 161 161 313 -Width: 356 -VWidth: 0 -Flags: W -HStem: 1032 164<92 256> -VStem: 92 164<-238 259 1032 1196> 123 102<330 827> -LayerCount: 2 -Fore -SplineSet -256 1032 m 1,0,-1 - 92 1032 l 1,1,-1 - 92 1196 l 1,2,-1 - 256 1196 l 1,3,-1 - 256 1032 l 1,0,-1 -92 -238 m 25,4,-1 - 123 827 l 1,5,-1 - 225 827 l 1,6,-1 - 256 -238 l 1,7,-1 - 92 -238 l 25,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: questiondown -Encoding: 191 191 314 -Width: 882 -VWidth: 0 -Flags: W -HStem: -238 102<343 636> -53 41G<675 805> 551 215<432 535> 971 164<401 565> -VStem: 41 164<18 419> 401 164<971 1135> 432 102<666 766> -LayerCount: 2 -Fore -SplineSet -565 971 m 1,0,-1 - 401 971 l 1,1,-1 - 401 1135 l 1,2,-1 - 565 1135 l 1,3,-1 - 565 971 l 1,0,-1 -416 651 m 1,4,-1 - 432 766 l 1,5,-1 - 535 766 l 1,6,-1 - 565 551 l 1,7,-1 - 494 551 l 2,8,9 - 369 551 369 551 287 471.5 c 128,-1,10 - 205 392 205 392 205 226.5 c 128,-1,11 - 205 61 205 61 282.5 -37 c 128,-1,12 - 360 -135 360 -135 504 -135 c 0,13,14 - 598 -135 598 -135 650 -79 c 0,15,16 - 672 -55 672 -55 698 -12 c 1,17,-1 - 821 -59 l 1,18,19 - 753 -146 753 -146 672 -192 c 128,-1,20 - 591 -238 591 -238 473 -238 c 0,21,22 - 274 -238 274 -238 157.5 -110.5 c 128,-1,23 - 41 17 41 17 41 233 c 0,24,25 - 41 508 41 508 277 614 c 0,26,27 - 343 644 343 644 416 651 c 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: cent -Encoding: 162 162 315 -Width: 944 -VWidth: 0 -Flags: W -HStem: 20 102<446 526 600 678> 778 102<444 526> -VStem: 102 164<241 665> 371 74<-102 25 172 735 879 1004> 526 74<-102 20 127 754 879 1004> -LayerCount: 2 -Fore -SplineSet -371 39 m 1,0,1 - 102 115 102 115 102 451 c 0,2,3 - 102 618 102 618 176 724 c 128,-1,4 - 250 830 250 830 371 864 c 1,5,-1 - 371 1004 l 1,6,-1 - 444 1004 l 1,7,-1 - 444 879 l 1,8,9 - 456 881 456 881 484 881 c 128,-1,10 - 512 881 512 881 526 879 c 1,11,-1 - 526 1004 l 1,12,-1 - 600 1004 l 1,13,-1 - 600 864 l 1,14,15 - 678 840 678 840 730 782 c 128,-1,16 - 782 724 782 724 823 635 c 1,17,-1 - 690 567 l 1,18,19 - 669 645 669 645 650.5 687.5 c 128,-1,20 - 632 730 632 730 600 754 c 1,21,-1 - 600 127 l 1,22,23 - 648 135 648 135 676 162 c 128,-1,24 - 704 189 704 189 739 246 c 1,25,-1 - 862 199 l 1,26,27 - 802 124 802 124 743 81.5 c 128,-1,28 - 684 39 684 39 600 27 c 1,29,-1 - 600 -102 l 1,30,-1 - 526 -102 l 1,31,-1 - 526 20 l 1,32,-1 - 524 20 l 2,33,34 - 507 20 507 20 444 25 c 1,35,-1 - 444 -102 l 1,36,-1 - 371 -102 l 1,37,-1 - 371 39 l 1,0,1 -371 172 m 1,38,-1 - 371 735 l 1,39,40 - 266 659 266 659 266 453.5 c 128,-1,41 - 266 248 266 248 371 172 c 1,38,-1 -444 137 m 1,42,43 - 478 126 478 126 526 123 c 1,44,-1 - 526 778 l 1,45,-1 - 514 778 l 2,46,47 - 475 778 475 778 444 770 c 1,48,-1 - 444 137 l 1,42,43 -EndSplineSet -Validated: 1 -EndChar - -StartChar: brokenbar -Encoding: 166 166 316 -Width: 305 -VWidth: 0 -Flags: W -HStem: 0 43G<92 205> 1393 41G<92 205> -VStem: 92 113<0 655 778 1434> -LayerCount: 2 -Fore -SplineSet -205 1434 m 25,0,-1 - 205 778 l 1,1,-1 - 92 778 l 1,2,-1 - 92 1434 l 1,3,-1 - 205 1434 l 25,0,-1 -205 655 m 25,4,-1 - 205 0 l 1,5,-1 - 92 0 l 1,6,-1 - 92 655 l 1,7,-1 - 205 655 l 25,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: OE -Encoding: 338 338 317 -Width: 1955 -VWidth: 0 -Flags: W -HStem: -20 102<572 883> 0 102<1186 1872> 799 102<1186 1655> 1331 102<1186 1839> 1352 102<551 876> -VStem: 102 174<441 1012> 1012 174<189 799 901 1246> -AnchorPoint: "top" 948 1432 basechar 0 -AnchorPoint: "ogonek" 1591 0 basechar 0 -AnchorPoint: "bottom" 975 0 basechar 0 -AnchorPoint: "horn" 1798 1380 basechar 0 -AnchorPoint: "cedilla" 1100 -2 basechar 0 -LayerCount: 2 -Fore -SplineSet -1872 0 m 1,0,-1 - 1012 0 l 1,1,-1 - 1012 53 l 1,2,3 - 875 -20 875 -20 705 -20 c 0,4,5 - 526 -20 526 -20 375 93 c 0,6,7 - 204 220 204 220 138 444 c 0,8,9 - 102 568 102 568 102 716.5 c 128,-1,10 - 102 865 102 865 136 990 c 0,11,12 - 170 1114 170 1114 228 1198 c 0,13,14 - 289 1286 289 1286 362 1342 c 0,15,16 - 508 1454 508 1454 687 1454 c 128,-1,17 - 866 1454 866 1454 1012 1372 c 1,18,-1 - 1012 1434 l 1,19,-1 - 1839 1434 l 1,20,-1 - 1839 1331 l 1,21,-1 - 1186 1331 l 1,22,-1 - 1186 901 l 1,23,-1 - 1655 901 l 1,24,-1 - 1655 799 l 1,25,-1 - 1186 799 l 1,26,-1 - 1186 102 l 1,27,-1 - 1872 102 l 1,28,-1 - 1872 0 l 1,0,-1 -1012 1202 m 1,29,30 - 878 1352 878 1352 698 1352 c 0,31,32 - 576 1352 576 1352 470 1252 c 0,33,34 - 276 1069 276 1069 276 717 c 0,35,36 - 276 588 276 588 306 478.5 c 128,-1,37 - 336 369 336 369 384 298 c 0,38,39 - 432 226 432 226 491 176 c 0,40,41 - 603 82 603 82 717 82 c 0,42,43 - 793 82 793 82 871.5 120.5 c 128,-1,44 - 950 159 950 159 1012 233 c 1,45,-1 - 1012 1202 l 1,29,30 -EndSplineSet -Validated: 1 -EndChar - -StartChar: oe -Encoding: 339 339 318 -Width: 1746 -VWidth: 0 -Flags: W -HStem: -20 102<384 672 1135 1452> 451 102<983 1489> 819 102<404 672 1121 1380> -VStem: 90 164<231 648> 807 166<253 451> -AnchorPoint: "ogonek" 1311 0 basechar 0 -AnchorPoint: "horn" 1573 635 basechar 0 -AnchorPoint: "cedilla" 932 -4 basechar 0 -AnchorPoint: "top" 901 1004 basechar 0 -AnchorPoint: "bottom" 895 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -807 451 m 128,-1,1 - 807 613 807 613 733 716 c 128,-1,2 - 659 819 659 819 541 819 c 128,-1,3 - 423 819 423 819 338.5 717 c 128,-1,4 - 254 615 254 615 254 446.5 c 128,-1,5 - 254 278 254 278 327 180 c 128,-1,6 - 400 82 400 82 529.5 82 c 128,-1,7 - 659 82 659 82 733 185.5 c 128,-1,0 - 807 289 807 289 807 451 c 128,-1,1 -895 162 m 1,8,9 - 777 -20 777 -20 512 -20 c 0,10,11 - 314 -20 314 -20 202 107 c 128,-1,12 - 90 234 90 234 90 451 c 0,13,14 - 90 555 90 555 127 645 c 0,15,16 - 164 734 164 734 224 794 c 0,17,18 - 353 922 353 922 512 922 c 0,19,20 - 638 922 638 922 738 875 c 128,-1,21 - 838 828 838 828 897 737 c 1,22,23 - 958 824 958 824 1047 873 c 128,-1,24 - 1136 922 1136 922 1235 922 c 128,-1,25 - 1334 922 1334 922 1418 880 c 128,-1,26 - 1502 838 1502 838 1554 770 c 0,27,28 - 1661 627 1661 627 1661 451 c 1,29,-1 - 973 451 l 1,30,31 - 973 283 973 283 1064.5 182.5 c 128,-1,32 - 1156 82 1156 82 1304 82 c 128,-1,33 - 1452 82 1452 82 1528 205 c 1,34,-1 - 1651 158 l 1,35,36 - 1510 -20 1510 -20 1272 -20 c 0,37,38 - 1153 -20 1153 -20 1055 27.5 c 128,-1,39 - 957 75 957 75 895 162 c 1,8,9 -983 553 m 1,40,-1 - 1489 553 l 1,41,42 - 1471 673 1471 673 1413 746 c 128,-1,43 - 1355 819 1355 819 1259 819 c 128,-1,44 - 1163 819 1163 819 1086 747 c 128,-1,45 - 1009 675 1009 675 983 553 c 1,40,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Euro -Encoding: 8364 8364 319 -Width: 1204 -VWidth: 0 -Flags: W -HStem: -20 102<592 884> 512 102<102 176 354 729> 819 102<102 176 352 729> 1331 102<552 879> -VStem: 172 164<614 819> -LayerCount: 2 -Fore -SplineSet -733 82 m 0,0,1 - 907 82 907 82 1001 264 c 1,2,-1 - 1122 209 l 1,3,4 - 1058 107 1058 107 948 43.5 c 128,-1,5 - 838 -20 838 -20 709 -20 c 0,6,7 - 590 -20 590 -20 469 62 c 0,8,9 - 334 154 334 154 254 316 c 0,10,11 - 210 406 210 406 190 512 c 1,12,-1 - 72 512 l 1,13,-1 - 102 614 l 1,14,-1 - 176 614 l 1,15,16 - 172 680 172 680 172 716.5 c 128,-1,17 - 172 753 172 753 176 819 c 1,18,-1 - 72 819 l 1,19,-1 - 102 922 l 1,20,-1 - 190 922 l 1,21,22 - 244 1218 244 1218 446 1358 c 0,23,24 - 556 1434 556 1434 676 1434 c 0,25,26 - 995 1434 995 1434 1118 1245 c 1,27,-1 - 987 1178 l 1,28,29 - 899 1331 899 1331 700 1331 c 0,30,31 - 575 1331 575 1331 479.5 1228 c 128,-1,32 - 384 1125 384 1125 352 922 c 1,33,-1 - 729 922 l 1,34,-1 - 729 819 l 1,35,-1 - 340 819 l 1,36,37 - 336 753 336 753 336 716.5 c 128,-1,38 - 336 680 336 680 340 614 c 1,39,-1 - 729 614 l 1,40,-1 - 729 512 l 1,41,-1 - 354 512 l 1,42,43 - 375 404 375 404 419.5 318 c 128,-1,44 - 464 232 464 232 518 182 c 0,45,46 - 628 82 628 82 733 82 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: yen -Encoding: 165 165 320 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43G<451 625> 258 102<262 451 625 805> 479 102<262 451 625 805> 1393 41G<82 287 790 995> -VStem: 451 174<0 258 360 479 582 709> -LayerCount: 2 -Fore -SplineSet -539 899 m 1,0,-1 - 811 1434 l 1,1,-1 - 995 1434 l 1,2,-1 - 625 709 l 1,3,-1 - 625 582 l 1,4,-1 - 805 582 l 1,5,-1 - 805 479 l 1,6,-1 - 625 479 l 1,7,-1 - 625 360 l 1,8,-1 - 805 360 l 1,9,-1 - 805 258 l 1,10,-1 - 625 258 l 1,11,-1 - 625 0 l 1,12,-1 - 451 0 l 1,13,-1 - 451 258 l 1,14,-1 - 262 258 l 1,15,-1 - 262 360 l 1,16,-1 - 451 360 l 1,17,-1 - 451 479 l 1,18,-1 - 262 479 l 1,19,-1 - 262 582 l 1,20,-1 - 451 582 l 1,21,-1 - 451 711 l 1,22,-1 - 82 1434 l 1,23,-1 - 266 1434 l 1,24,-1 - 539 899 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: sterling -Encoding: 163 163 321 -Width: 903 -VWidth: 0 -Flags: W -HStem: 0 102<51 100 205 821> 696 102<147 199 352 567> 1169 102<393 616> -VStem: 199 154<251 696 799 1133> -LayerCount: 2 -Fore -SplineSet -473 1169 m 0,0,1 - 352 1169 352 1169 352 924 c 2,2,-1 - 352 799 l 1,3,-1 - 567 799 l 1,4,-1 - 567 696 l 1,5,-1 - 352 696 l 1,6,-1 - 352 446 l 2,7,8 - 352 272 352 272 236 134 c 0,9,10 - 216 110 216 110 205 102 c 1,11,-1 - 821 102 l 1,12,-1 - 821 0 l 1,13,-1 - 51 0 l 1,14,-1 - 51 102 l 1,15,16 - 71 102 71 102 106 154 c 128,-1,17 - 141 206 141 206 170 290 c 128,-1,18 - 199 374 199 374 199 446 c 2,19,-1 - 199 696 l 1,20,-1 - 117 696 l 1,21,-1 - 147 799 l 1,22,-1 - 199 799 l 1,23,-1 - 199 991 l 2,24,25 - 199 1196 199 1196 394 1256 c 0,26,27 - 446 1272 446 1272 502 1272 c 0,28,29 - 634 1272 634 1272 711 1180 c 1,30,-1 - 580 1118 l 1,31,32 - 544 1169 544 1169 473 1169 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: section -Encoding: 167 167 322 -Width: 808 -VWidth: 0 -Flags: W -HStem: -18 102<246 477> 1268 102<322 553> -VStem: 127 152<592 842 986 1226> 516 152<121 370 510 763> -LayerCount: 2 -Fore -SplineSet -294 97 m 0,0,1 - 330 84 330 84 380 84 c 0,2,3 - 432 84 432 84 464 114 c 0,4,5 - 516 162 516 162 516 262 c 0,6,7 - 516 383 516 383 354 436 c 1,8,9 - 246 473 246 473 186.5 552 c 128,-1,10 - 127 631 127 631 127 738 c 128,-1,11 - 127 845 127 845 203 926 c 1,12,13 - 131 1004 131 1004 131 1098 c 0,14,15 - 131 1190 131 1190 194 1274 c 0,16,17 - 226 1316 226 1316 286 1343 c 128,-1,18 - 346 1370 346 1370 406 1370 c 0,19,20 - 464 1370 464 1370 500 1360 c 0,21,22 - 542 1348 542 1348 575 1328 c 0,23,24 - 656 1279 656 1279 709 1135 c 1,25,-1 - 616 1114 l 1,26,27 - 584 1204 584 1204 542 1234 c 0,28,29 - 494 1268 494 1268 431 1268 c 128,-1,30 - 368 1268 368 1268 336 1238 c 0,31,32 - 284 1190 284 1190 283 1090 c 0,33,34 - 283 968 283 968 444 915 c 1,35,36 - 552 877 552 877 612 799 c 128,-1,37 - 672 721 672 721 672 614 c 128,-1,38 - 672 507 672 507 596 426 c 1,39,40 - 668 348 668 348 668 254 c 0,41,42 - 668 162 668 162 605 78 c 0,43,44 - 573 36 573 36 513 9 c 128,-1,45 - 453 -18 453 -18 393.5 -18 c 128,-1,46 - 334 -18 334 -18 298 -8 c 0,47,48 - 262 0 262 0 224 24 c 0,49,50 - 143 73 143 73 90 217 c 1,51,-1 - 182 238 l 1,52,53 - 226 122 226 122 294 97 c 0,0,1 -307 844 m 1,54,55 - 279 798 279 798 279 735 c 128,-1,56 - 279 672 279 672 289 641 c 128,-1,57 - 299 610 299 610 322 591.5 c 128,-1,58 - 345 573 345 573 366.5 563 c 128,-1,59 - 388 553 388 553 426.5 538 c 128,-1,60 - 465 523 465 523 492 508 c 1,61,62 - 520 554 520 554 520 617 c 128,-1,63 - 520 680 520 680 510 711 c 128,-1,64 - 500 742 500 742 477 760.5 c 128,-1,65 - 454 779 454 779 432.5 789 c 128,-1,66 - 411 799 411 799 372.5 814 c 128,-1,67 - 334 829 334 829 307 844 c 1,54,55 -EndSplineSet -Validated: 1 -EndChar - -StartChar: copyright -Encoding: 169 169 323 -Width: 1101 -VWidth: 0 -Flags: W -HStem: -20 82<424 665> 193 61<473 660> 733 61<458 655> 946 82<424 665> -VStem: 119 115<283 725> 285 90<339 666> 856 115<283 725> -LayerCount: 2 -Fore -SplineSet -233 504 m 128,-1,1 - 233 318 233 318 328.5 189.5 c 128,-1,2 - 424 61 424 61 545 61 c 128,-1,3 - 666 61 666 61 761 189.5 c 128,-1,4 - 856 318 856 318 856 504 c 128,-1,5 - 856 690 856 690 761 818 c 128,-1,6 - 666 946 666 946 545 946 c 128,-1,7 - 424 946 424 946 328.5 818 c 128,-1,0 - 233 690 233 690 233 504 c 128,-1,1 -119 504 m 128,-1,9 - 119 619 119 619 158.5 719.5 c 128,-1,10 - 198 820 198 820 260 886 c 128,-1,11 - 322 952 322 952 397 990 c 128,-1,12 - 472 1028 472 1028 545 1028 c 128,-1,13 - 618 1028 618 1028 693 990 c 128,-1,14 - 768 952 768 952 830 886 c 128,-1,15 - 892 820 892 820 931.5 719.5 c 128,-1,16 - 971 619 971 619 971 504 c 128,-1,17 - 971 389 971 389 931.5 288.5 c 128,-1,18 - 892 188 892 188 830 122 c 128,-1,19 - 768 56 768 56 693 18 c 128,-1,20 - 618 -20 618 -20 545 -20 c 128,-1,21 - 472 -20 472 -20 397 18 c 128,-1,22 - 322 56 322 56 260 122 c 128,-1,23 - 198 188 198 188 158.5 288.5 c 128,-1,8 - 119 389 119 389 119 504 c 128,-1,9 -686 670 m 1,24,25 - 642 733 642 733 558.5 733 c 128,-1,26 - 475 733 475 733 425 674 c 128,-1,27 - 375 615 375 615 375 497 c 128,-1,28 - 375 379 375 379 436 316.5 c 128,-1,29 - 497 254 497 254 574 254 c 128,-1,30 - 651 254 651 254 702 330 c 1,31,-1 - 770 299 l 1,32,33 - 690 193 690 193 551 193 c 0,34,35 - 458 194 458 194 376 266 c 0,36,37 - 336 302 336 302 310.5 362.5 c 128,-1,38 - 285 423 285 423 285 498.5 c 128,-1,39 - 285 574 285 574 308 633 c 128,-1,40 - 331 692 331 692 368 726 c 0,41,42 - 443 795 443 795 535 795 c 128,-1,43 - 627 795 627 795 679.5 773 c 128,-1,44 - 732 751 732 751 768 705 c 1,45,-1 - 686 670 l 1,24,25 -EndSplineSet -Validated: 1 -EndChar - -StartChar: registered -Encoding: 174 174 324 -Width: 1101 -VWidth: 0 -Flags: W -HStem: -20 82<424 665> 469 61<455 558> 739 61<455 617> 946 82<424 665> -VStem: 119 115<283 725> 365 90<207 469 530 739> 641 90<542 727> 655 88<207 355> 856 115<283 725> -LayerCount: 2 -Fore -SplineSet -233 504 m 128,-1,1 - 233 318 233 318 328.5 189.5 c 128,-1,2 - 424 61 424 61 545 61 c 128,-1,3 - 666 61 666 61 761 189.5 c 128,-1,4 - 856 318 856 318 856 504 c 128,-1,5 - 856 690 856 690 761 818 c 128,-1,6 - 666 946 666 946 545 946 c 128,-1,7 - 424 946 424 946 328.5 818 c 128,-1,0 - 233 690 233 690 233 504 c 128,-1,1 -119 504 m 128,-1,9 - 119 619 119 619 158.5 719.5 c 128,-1,10 - 198 820 198 820 260 886 c 128,-1,11 - 322 952 322 952 397 990 c 128,-1,12 - 472 1028 472 1028 545 1028 c 128,-1,13 - 618 1028 618 1028 693 990 c 128,-1,14 - 768 952 768 952 830 886 c 128,-1,15 - 892 820 892 820 931.5 719.5 c 128,-1,16 - 971 619 971 619 971 504 c 128,-1,17 - 971 389 971 389 931.5 288.5 c 128,-1,18 - 892 188 892 188 830 122 c 128,-1,19 - 768 56 768 56 693 18 c 128,-1,20 - 618 -20 618 -20 545 -20 c 128,-1,21 - 472 -20 472 -20 397 18 c 128,-1,22 - 322 56 322 56 260 122 c 128,-1,23 - 198 188 198 188 158.5 288.5 c 128,-1,8 - 119 389 119 389 119 504 c 128,-1,9 -455 469 m 1,24,-1 - 455 207 l 1,25,-1 - 365 207 l 1,26,-1 - 365 801 l 1,27,-1 - 543 801 l 2,28,29 - 638 801 638 801 684.5 748.5 c 128,-1,30 - 731 696 731 696 731 644 c 0,31,32 - 731 592 731 592 705 548.5 c 128,-1,33 - 679 505 679 505 629 485 c 1,34,35 - 662 447 662 447 702.5 363.5 c 128,-1,36 - 743 280 743 280 743 207 c 1,37,-1 - 655 207 l 1,38,39 - 655 277 655 277 611.5 357.5 c 128,-1,40 - 568 438 568 438 530 469 c 1,41,-1 - 455 469 l 1,24,-1 -455 739 m 1,42,-1 - 455 530 l 1,43,-1 - 555 530 l 2,44,45 - 597 530 597 530 619 562 c 128,-1,46 - 641 594 641 594 641 634 c 0,47,48 - 641 674 641 674 619 706.5 c 128,-1,49 - 597 739 597 739 555 739 c 2,50,-1 - 455 739 l 1,42,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ordfeminine -Encoding: 170 170 325 -Width: 620 -VWidth: 0 -Flags: W -HStem: 348 61<72 549> 516 61<235 404> 786 61<228 402> 938 61<204 385> -VStem: 106 92<601 767> 406 92<528 535 583 785 842 927> -LayerCount: 2 -Fore -SplineSet -72 410 m 1,0,-1 - 549 410 l 1,1,-1 - 549 348 l 1,2,-1 - 72 348 l 1,3,-1 - 72 410 l 1,0,-1 -299 516 m 0,4,5 - 106 516 106 516 106 688 c 0,6,7 - 106 810 106 810 232 840 c 0,8,9 - 264 848 264 848 309 848 c 128,-1,10 - 354 848 354 848 403 842 c 1,11,12 - 400 896 400 896 378 917 c 128,-1,13 - 356 938 356 938 300 938 c 128,-1,14 - 244 938 244 938 172 887 c 1,15,-1 - 113 948 l 1,16,17 - 206 999 206 999 280.5 999 c 128,-1,18 - 355 999 355 999 395.5 988.5 c 128,-1,19 - 436 978 436 978 460 946 c 128,-1,20 - 484 914 484 914 491 868 c 128,-1,21 - 498 822 498 822 498 739 c 2,22,-1 - 498 528 l 1,23,-1 - 406 528 l 1,24,-1 - 406 535 l 1,25,26 - 354 516 354 516 299 516 c 0,4,5 -406 598 m 1,27,-1 - 406 778 l 1,28,29 - 367 786 367 786 316.5 786 c 128,-1,30 - 266 786 266 786 232.5 761 c 128,-1,31 - 199 736 199 736 199 687.5 c 128,-1,32 - 199 639 199 639 233.5 608.5 c 128,-1,33 - 268 578 268 578 313 578 c 128,-1,34 - 358 578 358 578 406 598 c 1,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ordmasculine -Encoding: 186 186 326 -Width: 620 -VWidth: 0 -Flags: W -HStem: 348 61<72 549> 516 61<230 390> 938 61<240 390> -VStem: 84 94<616 890> 444 90<620 896> -LayerCount: 2 -Fore -SplineSet -72 410 m 1,0,-1 - 549 410 l 1,1,-1 - 549 348 l 1,2,-1 - 72 348 l 1,3,-1 - 72 410 l 1,0,-1 -444 758 m 128,-1,5 - 444 837 444 837 407.5 887.5 c 128,-1,6 - 371 938 371 938 315 938 c 128,-1,7 - 259 938 259 938 218.5 888.5 c 128,-1,8 - 178 839 178 839 178 756 c 128,-1,9 - 178 673 178 673 213 625.5 c 128,-1,10 - 248 578 248 578 309.5 578 c 128,-1,11 - 371 578 371 578 407.5 628.5 c 128,-1,4 - 444 679 444 679 444 758 c 128,-1,5 -471 578.5 m 128,-1,13 - 407 516 407 516 303.5 516 c 128,-1,14 - 200 516 200 516 142 581.5 c 128,-1,15 - 84 647 84 647 84 754.5 c 128,-1,16 - 84 862 84 862 151 930.5 c 128,-1,17 - 218 999 218 999 312.5 999 c 128,-1,18 - 407 999 407 999 471 937 c 128,-1,19 - 535 875 535 875 535 758 c 128,-1,12 - 535 641 535 641 471 578.5 c 128,-1,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: guilsinglright -Encoding: 8250 8250 327 -Width: 589 -VWidth: 0 -Flags: W -VStem: 102 385 -LayerCount: 2 -Fore -SplineSet -377 451 m 1,0,-1 - 102 778 l 1,1,-1 - 180 817 l 1,2,-1 - 487 451 l 1,3,-1 - 180 86 l 1,4,-1 - 102 125 l 1,5,-1 - 377 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: guilsinglleft -Encoding: 8249 8249 328 -Width: 589 -VWidth: 0 -Flags: W -VStem: 102 385 -LayerCount: 2 -Fore -SplineSet -213 453 m 1,0,-1 - 487 125 l 1,1,-1 - 410 86 l 1,2,-1 - 102 453 l 1,3,-1 - 410 817 l 1,4,-1 - 487 778 l 1,5,-1 - 213 453 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: guillemotleft -Encoding: 171 171 329 -Width: 856 -VWidth: 0 -Flags: W -VStem: 102 385 369 385 -LayerCount: 2 -Fore -Refer: 328 8249 N 1 0 0 1 266 0 2 -Refer: 328 8249 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: guillemotright -Encoding: 187 187 330 -Width: 856 -VWidth: 0 -Flags: W -VStem: 102 385 369 385 -LayerCount: 2 -Fore -Refer: 327 8250 N 1 0 0 1 266 0 2 -Refer: 327 8250 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: quoteleft -Encoding: 8216 8216 331 -Width: 356 -VWidth: 0 -Flags: W -HStem: 985 367<163 197> -VStem: 92 147<985 1197> -LayerCount: 2 -Fore -SplineSet -240 985 m 1,0,-1 - 92 985 l 1,1,2 - 92 1222 92 1222 156 1329 c 0,3,4 - 168 1348 168 1348 170 1352 c 1,5,-1 - 246 1352 l 1,6,7 - 197 1283 197 1283 197 1200 c 0,8,9 - 197 1175 197 1175 218.5 1105 c 128,-1,10 - 240 1035 240 1035 240 985 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quoteright -Encoding: 8217 8217 332 -Width: 356 -VWidth: 0 -Flags: W -HStem: 985 367<141 175> -VStem: 98 147<1139 1352> -LayerCount: 2 -Fore -SplineSet -98 1352 m 1,0,-1 - 246 1352 l 1,1,2 - 246 1115 246 1115 182 1008 c 0,3,4 - 170 989 170 989 168 985 c 1,5,-1 - 92 985 l 1,6,7 - 141 1054 141 1054 141 1137 c 0,8,9 - 141 1162 141 1162 119.5 1232 c 128,-1,10 - 98 1302 98 1302 98 1352 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quotedblleft -Encoding: 8220 8220 333 -Width: 602 -VWidth: 0 -Flags: W -HStem: 985 367<163 197 408 442> -VStem: 92 147<985 1197> 338 147<985 1197> -LayerCount: 2 -Fore -Refer: 331 8216 N 1 0 0 1 246 0 2 -Refer: 331 8216 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: quotedblright -Encoding: 8221 8221 334 -Width: 602 -VWidth: 0 -Flags: W -HStem: 985 367<141 175 387 421> -VStem: 98 147<1139 1352> 344 147<1139 1352> -LayerCount: 2 -Fore -Refer: 332 8217 N 1 0 0 1 246 0 2 -Refer: 332 8217 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: quotesinglbase -Encoding: 8218 8218 335 -Width: 356 -VWidth: 0 -Flags: W -HStem: -203 367<141 175> -VStem: 98 147<-48 164> -LayerCount: 2 -Fore -Refer: 332 8217 N 1 0 0 1 0 -1188 2 -Validated: 1 -EndChar - -StartChar: quotedblbase -Encoding: 8222 8222 336 -Width: 602 -VWidth: 0 -Flags: W -HStem: -203 367<141 175 387 421> -VStem: 98 147<-48 164> 344 147<-48 164> -LayerCount: 2 -Fore -Refer: 334 8221 N 1 0 0 1 0 -1188 2 -Validated: 1 -EndChar - -StartChar: ellipsis -Encoding: 8230 8230 337 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 164<92 256 440 604 788 952> -VStem: 92 164<0 164> 440 164<0 164> 788 164<0 164> -CounterMasks: 1 70 -LayerCount: 2 -Fore -Refer: 54 46 N 1 0 0 1 696 0 2 -Refer: 54 46 N 1 0 0 1 348 0 2 -Refer: 54 46 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: bullet -Encoding: 8226 8226 338 -Width: 620 -VWidth: 0 -Flags: W -HStem: 287 483<178 449> -VStem: 84 451<373 670> -LayerCount: 2 -Fore -SplineSet -471 349 m 128,-1,1 - 407 287 407 287 303.5 287 c 128,-1,2 - 200 287 200 287 142 352 c 128,-1,3 - 84 417 84 417 84 524.5 c 128,-1,4 - 84 632 84 632 151 701 c 128,-1,5 - 218 770 218 770 312.5 770 c 128,-1,6 - 407 770 407 770 471 707.5 c 128,-1,7 - 535 645 535 645 535 528 c 128,-1,0 - 535 411 535 411 471 349 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: endash -Encoding: 8211 8211 339 -Width: 802 -VWidth: 0 -Flags: W -HStem: 348 102<82 721> -VStem: 82 639<348 451> -LayerCount: 2 -Fore -SplineSet -82 451 m 1,0,-1 - 721 451 l 1,1,-1 - 721 348 l 1,2,-1 - 82 348 l 1,3,-1 - 82 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: emdash -Encoding: 8212 8212 340 -Width: 1110 -VWidth: 0 -Flags: W -HStem: 348 102<82 1028> -LayerCount: 2 -Fore -SplineSet -82 451 m 1,0,-1 - 1028 451 l 1,1,-1 - 1028 348 l 1,2,-1 - 82 348 l 1,3,-1 - 82 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00AD -Encoding: 173 173 341 -Width: 649 -VWidth: 0 -Flags: W -HStem: 348 102<82 567> -VStem: 82 485<348 451> -LayerCount: 2 -Fore -Refer: 82 45 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: degree -Encoding: 176 176 342 -Width: 577 -VWidth: 0 -Flags: W -HStem: 1010 96<212 365> 1286 96<212 365> -VStem: 102 96<1119 1273> 379 96<1119 1273> -LayerCount: 2 -Fore -SplineSet -199 1196 m 128,-1,1 - 199 1159 199 1159 225.5 1132.5 c 128,-1,2 - 252 1106 252 1106 289 1106 c 128,-1,3 - 326 1106 326 1106 352.5 1132.5 c 128,-1,4 - 379 1159 379 1159 379 1196 c 128,-1,5 - 379 1233 379 1233 352.5 1259.5 c 128,-1,6 - 326 1286 326 1286 289 1286 c 128,-1,7 - 252 1286 252 1286 225.5 1259.5 c 128,-1,0 - 199 1233 199 1233 199 1196 c 128,-1,1 -102 1196 m 128,-1,9 - 102 1272 102 1272 157 1327 c 128,-1,10 - 212 1382 212 1382 289 1382 c 128,-1,11 - 366 1382 366 1382 420.5 1327 c 128,-1,12 - 475 1272 475 1272 475 1196 c 128,-1,13 - 475 1120 475 1120 420.5 1065 c 128,-1,14 - 366 1010 366 1010 289 1010 c 128,-1,15 - 212 1010 212 1010 157 1065 c 128,-1,8 - 102 1120 102 1120 102 1196 c 128,-1,9 -EndSplineSet -Validated: 1 -EndChar - -StartChar: currency -Encoding: 164 164 343 -Width: 724 -VWidth: 0 -Flags: W -HStem: 248 96<276 449> 561 96<276 449> -VStem: 158 96<366 539> 471 96<366 539> -LayerCount: 2 -Fore -SplineSet -254 453 m 128,-1,1 - 254 409 254 409 286 376.5 c 128,-1,2 - 318 344 318 344 362 344 c 128,-1,3 - 406 344 406 344 438.5 376.5 c 128,-1,4 - 471 409 471 409 471 453 c 128,-1,5 - 471 497 471 497 438.5 529 c 128,-1,6 - 406 561 406 561 362 561 c 128,-1,7 - 318 561 318 561 286 529 c 128,-1,0 - 254 497 254 497 254 453 c 128,-1,1 -186 348 m 1,8,9 - 158 396 158 396 158 452 c 0,10,11 - 158 508 158 508 186 557 c 1,12,-1 - 82 662 l 1,13,-1 - 154 733 l 1,14,-1 - 258 629 l 1,15,16 - 306 657 306 657 362 657 c 0,17,18 - 418 657 418 657 467 629 c 1,19,-1 - 571 733 l 1,20,-1 - 643 662 l 1,21,-1 - 539 557 l 1,22,23 - 567 508 567 508 567 452 c 0,24,25 - 567 396 567 396 539 348 c 1,26,-1 - 643 244 l 1,27,-1 - 571 172 l 1,28,-1 - 467 276 l 1,29,30 - 418 248 418 248 362 248 c 0,31,32 - 306 248 306 248 258 276 c 1,33,-1 - 154 172 l 1,34,-1 - 82 244 l 1,35,-1 - 186 348 l 1,8,9 -EndSplineSet -Validated: 1 -EndChar - -StartChar: dieresis -Encoding: 168 168 344 -Width: 559 -VWidth: 0 -Flags: W -HStem: 1270 178<12 176 381 545> -VStem: 12 164<1270 1448> 381 164<1270 1448> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 868 0 2 -Validated: 1 -EndChar - -StartChar: macron -Encoding: 175 175 345 -Width: 593 -VWidth: 0 -Flags: W -HStem: 1270 82<61 532> -VStem: 61 471<1270 1352> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 895 0 2 -Validated: 1 -EndChar - -StartChar: acute -Encoding: 180 180 346 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: 74 350 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 770 0 2 -Validated: 1 -EndChar - -StartChar: periodcentered -Encoding: 183 183 347 -Width: 272 -VWidth: 0 -Flags: W -HStem: 414 178<53 217> -VStem: 53 164<414 592> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 727 -856 2 -Validated: 1 -EndChar - -StartChar: cedilla -Encoding: 184 184 348 -Width: 471 -VWidth: 0 -Flags: W -HStem: -401 49<61 236> -164 164<164 256> -VStem: 164 106<-82 0> 283 127<-328 -188> -LayerCount: 2 -Fore -Refer: 109 807 N 1 0 0 1 807 0 2 -Validated: 1 -EndChar - -StartChar: logicalnot -Encoding: 172 172 349 -Width: 696 -VWidth: 0 -Flags: W -HStem: 348 102<82 532> -VStem: 532 82<195 348> -LayerCount: 2 -Fore -SplineSet -82 451 m 1,0,-1 - 614 451 l 1,1,-1 - 614 195 l 1,2,-1 - 532 195 l 1,3,-1 - 532 348 l 1,4,-1 - 82 348 l 1,5,-1 - 82 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: plusminus -Encoding: 177 177 350 -Width: 856 -VWidth: 0 -Flags: W -HStem: 53 102<82 774> 453 102<82 377 479 774> -VStem: 377 102<260 453 555 748> -LayerCount: 2 -Fore -SplineSet -82 156 m 1,0,-1 - 774 156 l 1,1,-1 - 774 53 l 1,2,-1 - 82 53 l 1,3,-1 - 82 156 l 1,0,-1 -479 453 m 1,4,-1 - 479 260 l 1,5,-1 - 377 260 l 1,6,-1 - 377 453 l 1,7,-1 - 82 453 l 1,8,-1 - 82 555 l 1,9,-1 - 377 555 l 1,10,-1 - 377 748 l 1,11,-1 - 479 748 l 1,12,-1 - 479 555 l 1,13,-1 - 774 555 l 1,14,-1 - 774 453 l 1,15,-1 - 479 453 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B5 -Encoding: 181 181 351 -Width: 972 -VWidth: 0 -Flags: W -HStem: -20 102<368 654> 0 43G<719 883> 860 41G<82 246 719 883> -VStem: 82 164<-293 37 227 901> 719 164<0 49 142 901> -LayerCount: 2 -Fore -SplineSet -719 186 m 1,0,-1 - 719 901 l 1,1,-1 - 883 901 l 1,2,-1 - 883 0 l 1,3,-1 - 719 0 l 1,4,-1 - 719 49 l 1,5,6 - 606 -20 606 -20 472 -20 c 0,7,8 - 338 -20 338 -20 246 37 c 1,9,-1 - 246 -293 l 1,10,-1 - 82 -293 l 1,11,-1 - 82 901 l 1,12,-1 - 246 901 l 1,13,-1 - 246 467 l 2,14,15 - 246 265 246 265 319 173.5 c 128,-1,16 - 392 82 392 82 510 82 c 0,17,18 - 628 82 628 82 719 186 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: divide -Encoding: 247 247 352 -Width: 710 -VWidth: 0 -Flags: W -HStem: 117 150<274 424> 348 102<82 629> 532 150<274 424> -VStem: 274 150<117 266 532 682> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -SplineSet -274 266 m 1,0,-1 - 424 266 l 1,1,-1 - 424 117 l 1,2,-1 - 274 117 l 1,3,-1 - 274 266 l 1,0,-1 -274 682 m 1,4,-1 - 424 682 l 1,5,-1 - 424 532 l 1,6,-1 - 274 532 l 1,7,-1 - 274 682 l 1,4,-1 -82 451 m 1,8,-1 - 629 451 l 1,9,-1 - 629 348 l 1,10,-1 - 82 348 l 1,11,-1 - 82 451 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: paragraph -Encoding: 182 182 353 -Width: 995 -VWidth: 0 -Flags: W -HStem: 0 43G<518 641 772 895> 655 102<372 518> 1331 102<370 518 641 772> -VStem: 82 174<874 1217> 518 123<0 655 758 1331> 772 123<0 1331> -LayerCount: 2 -Fore -SplineSet -772 1331 m 1,0,-1 - 641 1331 l 1,1,-1 - 641 0 l 1,2,-1 - 518 0 l 1,3,-1 - 518 655 l 1,4,5 - 262 658 262 658 144 838 c 0,6,7 - 82 934 82 934 82 1044 c 0,8,9 - 82 1155 82 1155 143 1251 c 0,10,11 - 259 1434 259 1434 518 1434 c 2,12,-1 - 895 1434 l 1,13,-1 - 895 0 l 1,14,-1 - 772 0 l 1,15,-1 - 772 1331 l 1,0,-1 -518 758 m 1,16,-1 - 518 1331 l 1,17,18 - 346 1331 346 1331 284 1188 c 0,19,20 - 256 1121 256 1121 256 1066.5 c 128,-1,21 - 256 1012 256 1012 261 979 c 128,-1,22 - 266 946 266 946 283 904.5 c 128,-1,23 - 300 863 300 863 328 832 c 0,24,25 - 394 758 394 758 518 758 c 1,16,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B9 -Encoding: 185 185 354 -Width: 321 -VWidth: 0 -Flags: W -HStem: 1282 66<82 139> -VStem: 82 158<1288 1348> 139 100<754 1288> -LayerCount: 2 -Fore -SplineSet -240 1366 m 1,0,-1 - 240 754 l 1,1,-1 - 139 754 l 1,2,-1 - 139 1288 l 1,3,-1 - 82 1282 l 1,4,-1 - 82 1348 l 1,5,-1 - 240 1366 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B2 -Encoding: 178 178 355 -Width: 559 -VWidth: 0 -Flags: W -HStem: 752 66<184 477> 1292 66<195 346> -VStem: 84 100<817 900> 373 100<1081 1276> -LayerCount: 2 -Fore -SplineSet -82 1235 m 1,0,1 - 142 1358 142 1358 297 1358 c 0,2,3 - 371 1358 371 1358 422 1305.5 c 128,-1,4 - 473 1253 473 1253 473 1172 c 0,5,6 - 473 1090 473 1090 400 1035 c 0,7,8 - 343 992 343 992 286.5 954 c 128,-1,9 - 230 916 230 916 207.5 884.5 c 128,-1,10 - 185 853 185 853 184 817 c 1,11,-1 - 477 817 l 1,12,-1 - 477 752 l 1,13,-1 - 84 752 l 1,14,15 - 84 858 84 858 142 924 c 0,16,17 - 184 972 184 972 237 1008 c 0,18,19 - 290 1046 290 1046 316 1066 c 0,20,21 - 374 1112 374 1112 374 1172 c 0,22,23 - 374 1234 374 1234 345 1263 c 0,24,25 - 317 1292 317 1292 279 1292 c 0,26,27 - 194 1292 194 1292 164 1204 c 1,28,-1 - 82 1235 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B3 -Encoding: 179 179 356 -Width: 583 -VWidth: 0 -Flags: W -HStem: 741 68<199 368> 1034 66<238 354> 1290 68<210 361> -VStem: 381 100<1119 1278> 401 100<835 1004> -LayerCount: 2 -Fore -SplineSet -100 1235 m 5,0,1 - 128 1294 128 1294 174 1326 c 0,2,3 - 220 1358 220 1358 298 1358 c 128,-1,4 - 376 1358 376 1358 428.5 1307 c 128,-1,5 - 481 1256 481 1256 481 1202 c 128,-1,6 - 481 1148 481 1148 464 1120 c 128,-1,7 - 447 1092 447 1092 406 1067 c 1,8,9 - 502 1016 502 1016 502 927 c 128,-1,10 - 502 838 502 838 442.5 789.5 c 128,-1,11 - 383 741 383 741 303 741 c 0,12,13 - 143 741 143 741 82 866 c 1,14,-1 - 164 897 l 1,15,16 - 194 809 194 809 287 809 c 0,17,18 - 326 809 326 809 363.5 838.5 c 128,-1,19 - 401 868 401 868 401 916 c 128,-1,20 - 401 964 401 964 364 999 c 128,-1,21 - 327 1034 327 1034 238 1034 c 1,22,-1 - 238 1100 l 1,23,24 - 381 1100 381 1100 381 1194 c 0,25,26 - 381 1242 381 1242 353 1266 c 0,27,28 - 326 1290 326 1290 284 1290 c 128,-1,29 - 242 1290 242 1290 220 1269 c 128,-1,30 - 198 1248 198 1248 180 1204 c 1,31,-1 - 100 1235 l 5,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: threequarters -Encoding: 190 190 357 -Width: 1081 -VWidth: 0 -Flags: W -HStem: 0 43G<731 831> 131 66<565 731 831 893> 741 68<199 368> 1034 66<238 354> 1290 68<210 361> -VStem: 381 100<1119 1278> 401 100<835 1004> 731 100<0 131 197 473> -LayerCount: 2 -Fore -SplineSet -100 1235 m 1,0,1 - 128 1294 128 1294 174 1326 c 0,2,3 - 220 1358 220 1358 298 1358 c 128,-1,4 - 376 1358 376 1358 428.5 1307 c 128,-1,5 - 481 1256 481 1256 481 1202 c 128,-1,6 - 481 1148 481 1148 464 1120 c 128,-1,7 - 447 1092 447 1092 406 1067 c 1,8,9 - 502 1016 502 1016 502 927 c 128,-1,10 - 502 838 502 838 442.5 789.5 c 128,-1,11 - 383 741 383 741 303 741 c 0,12,13 - 143 741 143 741 82 866 c 1,14,-1 - 164 897 l 1,15,16 - 194 809 194 809 287 809 c 0,17,18 - 326 809 326 809 363.5 838.5 c 128,-1,19 - 401 868 401 868 401 916 c 128,-1,20 - 401 964 401 964 364 999 c 128,-1,21 - 327 1034 327 1034 238 1034 c 1,22,-1 - 238 1100 l 1,23,24 - 381 1100 381 1100 381 1194 c 0,25,26 - 381 1242 381 1242 353 1266 c 0,27,28 - 326 1290 326 1290 284 1290 c 128,-1,29 - 242 1290 242 1290 220 1269 c 128,-1,30 - 198 1248 198 1248 180 1204 c 1,31,-1 - 100 1235 l 1,0,1 -82 264 m 1,32,-1 - 842 1047 l 1,33,-1 - 999 1047 l 1,34,-1 - 240 264 l 1,35,-1 - 82 264 l 1,32,-1 -471 174 m 1,36,-1 - 733 606 l 1,37,-1 - 831 606 l 1,38,-1 - 831 197 l 1,39,-1 - 893 197 l 1,40,-1 - 893 131 l 1,41,-1 - 831 131 l 1,42,-1 - 831 0 l 1,43,-1 - 731 0 l 1,44,-1 - 731 131 l 1,45,-1 - 471 131 l 1,46,-1 - 471 174 l 1,36,-1 -731 473 m 1,47,-1 - 565 197 l 1,48,-1 - 731 197 l 1,49,-1 - 731 473 l 1,47,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: onequarter -Encoding: 188 188 358 -Width: 1081 -VWidth: 0 -Flags: W -HStem: 0 43G<731 831> 131 66<565 731 831 893> 1282 66<260 317> -VStem: 260 158<1288 1348> 317 100<754 1288> 731 100<0 131 197 473> -LayerCount: 2 -Fore -SplineSet -418 1366 m 1,0,-1 - 418 754 l 1,1,-1 - 317 754 l 1,2,-1 - 317 1288 l 1,3,-1 - 260 1282 l 1,4,-1 - 260 1348 l 1,5,-1 - 418 1366 l 1,0,-1 -82 264 m 1,6,-1 - 842 1047 l 1,7,-1 - 999 1047 l 1,8,-1 - 240 264 l 1,9,-1 - 82 264 l 1,6,-1 -471 174 m 1,10,-1 - 733 606 l 1,11,-1 - 831 606 l 1,12,-1 - 831 197 l 1,13,-1 - 893 197 l 1,14,-1 - 893 131 l 1,15,-1 - 831 131 l 1,16,-1 - 831 0 l 1,17,-1 - 731 0 l 1,18,-1 - 731 131 l 1,19,-1 - 471 131 l 1,20,-1 - 471 174 l 1,10,-1 -731 473 m 1,21,-1 - 565 197 l 1,22,-1 - 731 197 l 1,23,-1 - 731 473 l 1,21,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: onehalf -Encoding: 189 189 359 -Width: 1085 -VWidth: 0 -Flags: W -HStem: 0 66<711 1004> 541 66<722 873> 1282 66<260 317> -VStem: 260 158<1288 1348> 317 100<754 1288> 610 100<66 148> 899 100<329 525> -LayerCount: 2 -Fore -SplineSet -418 1366 m 1,0,-1 - 418 754 l 1,1,-1 - 317 754 l 1,2,-1 - 317 1288 l 1,3,-1 - 260 1282 l 1,4,-1 - 260 1348 l 1,5,-1 - 418 1366 l 1,0,-1 -82 264 m 1,6,-1 - 842 1047 l 1,7,-1 - 999 1047 l 1,8,-1 - 240 264 l 1,9,-1 - 82 264 l 1,6,-1 -608 483 m 1,10,11 - 668 606 668 606 823 606 c 0,12,13 - 897 606 897 606 948 553.5 c 128,-1,14 - 999 501 999 501 999 436.5 c 128,-1,15 - 999 372 999 372 970 331 c 128,-1,16 - 941 290 941 290 899 261.5 c 128,-1,17 - 857 233 857 233 815 206 c 0,18,19 - 715 141 715 141 711 66 c 1,20,-1 - 1004 66 l 1,21,-1 - 1004 0 l 1,22,-1 - 610 0 l 1,23,24 - 610 106 610 106 668 172 c 0,25,26 - 710 220 710 220 763 256 c 0,27,28 - 816 294 816 294 842 314 c 0,29,30 - 900 360 900 360 900 420 c 0,31,32 - 900 482 900 482 871 512 c 0,33,34 - 843 541 843 541 805 541 c 0,35,36 - 720 541 720 541 690 453 c 1,37,-1 - 608 483 l 1,10,11 -EndSplineSet -Validated: 1 -EndChar - -StartChar: breve -Encoding: 728 728 360 -Width: 585 -VWidth: 0 -Flags: W -HStem: 1270 117<171 415> -VStem: 61 78<1427 1464> 446 78<1427 1464> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 881 0 2 -Validated: 1 -EndChar - -StartChar: ogonek -Encoding: 731 731 361 -Width: 405 -VWidth: 0 -Flags: W -HStem: -319 37<241 344> -VStem: 61 115<-254 -86> -LayerCount: 2 -Fore -Refer: 110 808 N 1 0 0 1 774 0 2 -Validated: 1 -EndChar - -StartChar: caron -Encoding: 711 711 362 -Width: 602 -VWidth: 0 -Flags: W -HStem: 1139 387 -VStem: 61 479 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 889 0 2 -Validated: 1 -EndChar - -StartChar: hungarumlaut -Encoding: 733 733 363 -Width: 718 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: 61 350 307 350 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 881 0 2 -Validated: 1 -EndChar - -StartChar: dotaccent -Encoding: 729 729 364 -Width: 272 -VWidth: 0 -Flags: W -HStem: 1270 178<53 217> -VStem: 53 164<1270 1448> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 727 0 2 -Validated: 1 -EndChar - -StartChar: afii00208 -Encoding: 8213 8213 365 -Width: 1384 -VWidth: 0 -Flags: W -HStem: 348 102<82 1303> -LayerCount: 2 -Fore -SplineSet -82 451 m 1,0,-1 - 1303 451 l 1,1,-1 - 1303 348 l 1,2,-1 - 82 348 l 1,3,-1 - 82 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Scommaaccent -Encoding: 536 536 366 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -401 49<418 593> -164 57<492 601> -20 102<442 777> 1352 102<441 740> -VStem: 162 174<985 1247> 639 127<-328 -188> 907 174<203 504> -AnchorPoint: "bottom" 594 -393 basechar 0 -AnchorPoint: "top" 594 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1163 0 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scommaaccent -Encoding: 537 537 367 -Width: 897 -VWidth: 0 -Flags: W -HStem: -401 49<293 468> -164 57<367 476> -20 102<276 603> 819 102<316 571> -VStem: 125 164<595 792> 514 127<-328 -188> 651 164<128 358> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1038 0 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021A -Encoding: 538 538 368 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -401 49<504 679> -164 57<578 687> 0 43<553 727> 1331 102<41 553 727 1243> -VStem: 553 174<0 1331> 725 127<-328 -188> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1249 0 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021B -Encoding: 539 539 369 -Width: 567 -VWidth: 0 -Flags: W -HStem: -401 49<109 283> -164 57<182 292> 0 43<188 352> 799 102<84 188 352 514> -VStem: 188 164<0 799 901 1198> 330 127<-328 -188> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 854 0 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: longs -Encoding: 383 383 370 -Width: 731 -VWidth: 0 -Flags: W -HStem: 0 43G<139 303> 1270 102<355 638> -VStem: 139 164<0 1214> -AnchorPoint: "top" 469 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -139 0 m 1,0,-1 - 139 864 l 2,1,2 - 139 1079 139 1079 150 1133 c 128,-1,3 - 161 1187 161 1187 172 1220 c 128,-1,4 - 183 1253 183 1253 197.5 1272.5 c 128,-1,5 - 212 1292 212 1292 234.5 1311 c 128,-1,6 - 257 1330 257 1330 284 1340 c 0,7,8 - 310 1350 310 1350 348 1358 c 0,9,10 - 414 1372 414 1372 498 1372 c 0,11,12 - 582 1372 582 1372 636 1358 c 0,13,14 - 713 1338 713 1338 821 1280 c 1,15,-1 - 719 1174 l 1,16,17 - 644 1227 644 1227 596.5 1248.5 c 128,-1,18 - 549 1270 549 1270 509 1270 c 128,-1,19 - 469 1270 469 1270 445.5 1267.5 c 128,-1,20 - 422 1265 422 1265 403.5 1257.5 c 128,-1,21 - 385 1250 385 1250 371 1243.5 c 128,-1,22 - 357 1237 357 1237 346 1220 c 128,-1,23 - 335 1203 335 1203 328 1191 c 128,-1,24 - 321 1179 321 1179 316 1152 c 128,-1,25 - 311 1125 311 1125 308.5 1106.5 c 128,-1,26 - 306 1088 306 1088 304.5 1049.5 c 128,-1,27 - 303 1011 303 1011 303 985 c 2,28,-1 - 303 0 l 1,29,-1 - 139 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ydieresis -Encoding: 255 255 371 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 860 41<45 209 685 864> 1085 178<193 356 561 725> -VStem: 193 164<1085 1264> 561 164<1085 1264> -AnchorPoint: "horn" 762 717 basechar 0 -AnchorPoint: "cedilla" 242 -328 basechar 0 -AnchorPoint: "bottom" 365 -315 basechar 0 -AnchorPoint: "ogonek" 614 0 basechar 0 -AnchorPoint: "top" 461 1282 basechar 0 -LayerCount: 2 -Fore -Refer: 24 121 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1049 -184 2 -Validated: 1 -EndChar - -StartChar: uniFB00 -Encoding: 64256 64256 372 -Width: 1134 -VWidth: 0 -Flags: W -HStem: 0 43G<166 330 741 905> 799 102<61 166 330 741 905 1067> 1270 102<363 538 939 1113> -VStem: 166 164<0 799 901 1238> 741 164<0 799 901 1238> -LayerCount: 2 -Fore -SplineSet -524 1239 m 1,0,1 - 500 1270 500 1270 444 1270 c 0,2,3 - 388 1270 388 1270 359 1221 c 128,-1,4 - 330 1172 330 1172 330 1042 c 2,5,-1 - 330 901 l 1,6,-1 - 741 901 l 1,7,-1 - 741 1096 l 2,8,9 - 741 1221 741 1221 808.5 1296.5 c 128,-1,10 - 876 1372 876 1372 997 1372 c 0,11,12 - 1082 1372 1082 1372 1143 1350 c 1,13,-1 - 1100 1239 l 1,14,15 - 1075 1270 1075 1270 1019 1270 c 0,16,17 - 963 1270 963 1270 934 1221 c 128,-1,18 - 905 1172 905 1172 905 1042 c 2,19,-1 - 905 901 l 1,20,-1 - 1067 901 l 1,21,-1 - 1067 799 l 1,22,-1 - 905 799 l 1,23,-1 - 905 0 l 1,24,-1 - 741 0 l 1,25,-1 - 741 799 l 1,26,-1 - 330 799 l 1,27,-1 - 330 0 l 1,28,-1 - 166 0 l 1,29,-1 - 166 799 l 1,30,-1 - 31 799 l 1,31,-1 - 61 901 l 1,32,-1 - 166 901 l 1,33,-1 - 166 1096 l 2,34,35 - 166 1221 166 1221 233.5 1296.5 c 128,-1,36 - 301 1372 301 1372 422 1372 c 0,37,38 - 506 1372 506 1372 567 1350 c 1,39,-1 - 524 1239 l 1,0,1 -EndSplineSet -Validated: 1 -LCarets2: 1 590 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f f -EndChar - -StartChar: fi -Encoding: 64257 64257 373 -Width: 985 -VWidth: 0 -Flags: W -HStem: 0 43G<166 330 700 864> 799 102<61 166 330 700> 1065 164<700 864> 1270 102<363 538> -VStem: 166 164<0 799 901 1238> 700 164<0 799 1065 1229> -LayerCount: 2 -Fore -SplineSet -524 1239 m 1,0,1 - 500 1270 500 1270 444 1270 c 0,2,3 - 388 1270 388 1270 359 1221 c 128,-1,4 - 330 1172 330 1172 330 1042 c 2,5,-1 - 330 901 l 1,6,-1 - 864 901 l 1,7,-1 - 864 0 l 1,8,-1 - 700 0 l 1,9,-1 - 700 799 l 1,10,-1 - 330 799 l 1,11,-1 - 330 0 l 1,12,-1 - 166 0 l 1,13,-1 - 166 799 l 1,14,-1 - 31 799 l 1,15,-1 - 61 901 l 1,16,-1 - 166 901 l 1,17,-1 - 166 1096 l 2,18,19 - 166 1221 166 1221 233.5 1296.5 c 128,-1,20 - 301 1372 301 1372 422 1372 c 0,21,22 - 506 1372 506 1372 567 1350 c 1,23,-1 - 524 1239 l 1,0,1 -700 1229 m 1,24,-1 - 864 1229 l 1,25,-1 - 864 1065 l 1,26,-1 - 700 1065 l 1,27,-1 - 700 1229 l 1,24,-1 -EndSplineSet -Validated: 1 -LCarets2: 1 639 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f i -EndChar - -StartChar: fl -Encoding: 64258 64258 374 -Width: 985 -VWidth: 0 -Flags: W -HStem: 0 43G<166 330 651 815> 799 102<61 166 330 492> 1270 102<373 625> 1311 41G<651 815> -VStem: 166 164<0 799 901 1226> 651 164<0 1238 1335 1352> -LayerCount: 2 -Fore -SplineSet -815 1352 m 1,0,-1 - 815 0 l 1,1,-1 - 651 0 l 1,2,-1 - 651 1194 l 1,3,4 - 633 1228 633 1228 586 1249 c 128,-1,5 - 539 1270 539 1270 471 1270 c 128,-1,6 - 403 1270 403 1270 366.5 1219.5 c 128,-1,7 - 330 1169 330 1169 330 1042 c 2,8,-1 - 330 901 l 1,9,-1 - 492 901 l 1,10,-1 - 492 799 l 1,11,-1 - 330 799 l 1,12,-1 - 330 0 l 1,13,-1 - 166 0 l 1,14,-1 - 166 799 l 1,15,-1 - 31 799 l 1,16,-1 - 61 901 l 1,17,-1 - 166 901 l 1,18,-1 - 166 1096 l 2,19,20 - 166 1220 166 1220 243 1296 c 128,-1,21 - 320 1372 320 1372 452 1372 c 0,22,23 - 584 1372 584 1372 651 1335 c 1,24,-1 - 651 1352 l 1,25,-1 - 815 1352 l 1,0,-1 -EndSplineSet -Validated: 1 -LCarets2: 1 602 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f l -EndChar - -StartChar: uniFB03 -Encoding: 64259 64259 375 -Width: 1560 -VWidth: 0 -Flags: W -HStem: 0 43G<166 330 741 905 1276 1440> 799 102<61 166 330 741 905 1276> 1065 164<1276 1440> 1270 102<363 538 939 1113> -VStem: 166 164<0 799 901 1238> 741 164<0 799 901 1238> 1276 164<0 799 1065 1229> -LayerCount: 2 -Fore -SplineSet -1276 1229 m 1,0,-1 - 1440 1229 l 1,1,-1 - 1440 1065 l 1,2,-1 - 1276 1065 l 1,3,-1 - 1276 1229 l 1,0,-1 -524 1239 m 1,4,5 - 500 1270 500 1270 444 1270 c 0,6,7 - 388 1270 388 1270 359 1221 c 128,-1,8 - 330 1172 330 1172 330 1042 c 2,9,-1 - 330 901 l 1,10,-1 - 741 901 l 1,11,-1 - 741 1096 l 2,12,13 - 741 1221 741 1221 808.5 1296.5 c 128,-1,14 - 876 1372 876 1372 997 1372 c 0,15,16 - 1082 1372 1082 1372 1143 1350 c 1,17,-1 - 1100 1239 l 1,18,19 - 1075 1270 1075 1270 1019 1270 c 0,20,21 - 963 1270 963 1270 934 1221 c 128,-1,22 - 905 1172 905 1172 905 1042 c 2,23,-1 - 905 901 l 1,24,-1 - 1440 901 l 1,25,-1 - 1440 0 l 1,26,-1 - 1276 0 l 1,27,-1 - 1276 799 l 1,28,-1 - 905 799 l 1,29,-1 - 905 0 l 1,30,-1 - 741 0 l 1,31,-1 - 741 799 l 1,32,-1 - 330 799 l 1,33,-1 - 330 0 l 1,34,-1 - 166 0 l 1,35,-1 - 166 799 l 1,36,-1 - 31 799 l 1,37,-1 - 61 901 l 1,38,-1 - 166 901 l 1,39,-1 - 166 1096 l 2,40,41 - 166 1221 166 1221 233.5 1296.5 c 128,-1,42 - 301 1372 301 1372 422 1372 c 0,43,44 - 506 1372 506 1372 567 1350 c 1,45,-1 - 524 1239 l 1,4,5 -EndSplineSet -Validated: 1 -LCarets2: 2 635 1159 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f f i -EndChar - -StartChar: uniFB04 -Encoding: 64260 64260 376 -Width: 1511 -VWidth: 0 -Flags: W -HStem: 0 43G<166 330 741 905 1227 1391> 799 102<61 166 330 741 905 1067> 1270 102<363 538 948 1201> 1311 41G<1227 1391> -VStem: 166 164<0 799 901 1238> 741 164<0 799 901 1226> 1227 164<0 1238 1335 1352> -LayerCount: 2 -Fore -SplineSet -330 799 m 1,0,-1 - 330 0 l 1,1,-1 - 166 0 l 1,2,-1 - 166 799 l 1,3,-1 - 31 799 l 1,4,-1 - 61 901 l 1,5,-1 - 166 901 l 1,6,-1 - 166 1096 l 2,7,8 - 166 1221 166 1221 233.5 1296.5 c 128,-1,9 - 301 1372 301 1372 422 1372 c 0,10,11 - 506 1372 506 1372 567 1350 c 1,12,-1 - 524 1239 l 1,13,14 - 500 1270 500 1270 444 1270 c 0,15,16 - 388 1270 388 1270 359 1221 c 128,-1,17 - 330 1172 330 1172 330 1042 c 2,18,-1 - 330 901 l 1,19,-1 - 741 901 l 1,20,-1 - 741 1096 l 2,21,22 - 741 1220 741 1220 818 1296 c 128,-1,23 - 895 1372 895 1372 1027 1372 c 0,24,25 - 1159 1372 1159 1372 1227 1335 c 1,26,-1 - 1227 1352 l 1,27,-1 - 1391 1352 l 1,28,-1 - 1391 0 l 1,29,-1 - 1227 0 l 1,30,-1 - 1227 1194 l 1,31,32 - 1209 1228 1209 1228 1162 1249 c 128,-1,33 - 1115 1270 1115 1270 1047 1270 c 128,-1,34 - 979 1270 979 1270 942 1219.5 c 128,-1,35 - 905 1169 905 1169 905 1042 c 2,36,-1 - 905 901 l 1,37,-1 - 1067 901 l 1,38,-1 - 1067 799 l 1,39,-1 - 905 799 l 1,40,-1 - 905 0 l 1,41,-1 - 741 0 l 1,42,-1 - 741 799 l 1,43,-1 - 330 799 l 1,0,-1 -EndSplineSet -Validated: 1 -LCarets2: 2 627 1114 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f f l -EndChar - -StartChar: circumflex -Encoding: 710 710 377 -Width: 602 -VWidth: 0 -Flags: W -HStem: 1257 299 -VStem: 25 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 887 0 2 -Validated: 1 -EndChar - -StartChar: uni00A0 -Encoding: 160 160 378 -Width: 409 -VWidth: 0 -Flags: W -LayerCount: 2 -EndChar - -StartChar: ring -Encoding: 730 730 379 -Width: 434 -VWidth: 0 -Flags: W -HStem: 1167 61<149 285> 1417 61<149 285> -VStem: 61 61<1255 1391> 311 61<1255 1391> -LayerCount: 2 -Fore -Refer: 100 778 N 1 0 0 1 805 0 2 -Validated: 1 -EndChar - -StartChar: uni01EA -Encoding: 490 490 380 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -319 37<820 924> -20 102<572 877> 1352 102<551 871> -VStem: 102 174<441 1012> 641 115<-254 -86> 1163 174<438 1009> -AnchorPoint: "top" 707 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -703 1352 m 0,0,1 - 641 1352 641 1352 583 1328 c 128,-1,2 - 525 1304 525 1304 470 1252 c 0,3,4 - 416 1200 416 1200 372 1127 c 0,5,6 - 276 967 276 967 276 717 c 0,7,8 - 276 588 276 588 306 478.5 c 128,-1,9 - 336 369 336 369 384 298 c 0,10,11 - 432 226 432 226 491 176 c 0,12,13 - 603 82 603 82 717 82 c 0,14,15 - 849 82 849 82 961 182 c 0,16,17 - 1163 363 1163 363 1163 717 c 0,18,19 - 1163 1087 1163 1087 954 1258 c 0,20,21 - 839 1352 839 1352 703 1352 c 0,0,1 -641 -186 m 0,22,23 - 641 -92 641 -92 772 -17 c 1,24,25 - 739 -20 739 -20 680 -20 c 128,-1,26 - 621 -20 621 -20 537.5 7 c 128,-1,27 - 454 34 454 34 375 93 c 128,-1,28 - 296 152 296 152 235.5 236 c 128,-1,29 - 175 320 175 320 138.5 444.5 c 128,-1,30 - 102 569 102 569 102 717 c 128,-1,31 - 102 865 102 865 136 990 c 0,32,33 - 170 1114 170 1114 228 1198 c 0,34,35 - 289 1286 289 1286 362 1342 c 0,36,37 - 508 1454 508 1454 686 1454 c 0,38,39 - 900 1454 900 1454 1060 1342 c 0,40,41 - 1337 1149 1337 1149 1337 720 c 0,42,43 - 1337 355 1337 355 1146 156 c 0,44,45 - 1034 39 1034 39 867 -2 c 1,46,47 - 821 -26 821 -26 788.5 -64 c 128,-1,48 - 756 -102 756 -102 756 -159 c 128,-1,49 - 756 -216 756 -216 792.5 -249.5 c 128,-1,50 - 829 -283 829 -283 924 -283 c 1,51,-1 - 924 -319 l 1,52,53 - 922 -319 922 -319 919 -319 c 0,54,55 - 703 -319 703 -319 654 -232 c 0,56,57 - 642 -210 642 -210 641 -186 c 0,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01EB -Encoding: 491 491 381 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -319 37<556 659> -20 102<384 673> 819 102<404 673> -VStem: 90 164<231 648> 377 115<-254 -86> 807 164<241 660> -AnchorPoint: "top" 535 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -807 451 m 128,-1,1 - 807 613 807 613 733 716 c 128,-1,2 - 659 819 659 819 541 819 c 128,-1,3 - 423 819 423 819 338.5 717 c 128,-1,4 - 254 615 254 615 254 446.5 c 128,-1,5 - 254 278 254 278 327 180 c 128,-1,6 - 400 82 400 82 529.5 82 c 128,-1,7 - 659 82 659 82 733 185.5 c 128,-1,0 - 807 289 807 289 807 451 c 128,-1,1 -502 -20 m 1,8,9 - 309 -17 309 -17 199.5 110 c 128,-1,10 - 90 237 90 237 90 451 c 0,11,12 - 90 555 90 555 127 645 c 0,13,14 - 164 734 164 734 224 794 c 0,15,16 - 353 922 353 922 512 922 c 0,17,18 - 719 922 719 922 845 801 c 128,-1,19 - 971 680 971 680 971 460.5 c 128,-1,20 - 971 241 971 241 864 121.5 c 128,-1,21 - 757 2 757 2 576 -17 c 1,22,23 - 492 -72 492 -72 492 -144 c 128,-1,24 - 492 -216 492 -216 528 -249.5 c 128,-1,25 - 564 -283 564 -283 659 -283 c 1,26,-1 - 659 -319 l 1,27,28 - 657 -319 657 -319 654 -319 c 0,29,30 - 439 -319 439 -319 390 -232 c 0,31,32 - 378 -210 378 -210 377 -186 c 0,33,34 - 377 -94 377 -94 502 -20 c 1,8,9 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10017 -Encoding: 1040 1040 382 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> -AnchorPoint: "top" 643 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10019 -Encoding: 1042 1042 383 -Width: 1116 -VWidth: 0 -Flags: W -HStem: 0 102<348 758> 727 102<348 668> 1331 102<348 691> -VStem: 174 174<102 727 829 1331> 778 174<946 1243> 864 174<216 579> -AnchorPoint: "top" 410 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 28 66 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10022 -Encoding: 1045 1045 384 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> -VStem: 174 174<102 799 901 1331> -AnchorPoint: "top" 522 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10030 -Encoding: 1052 1052 385 -Width: 1626 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1282 1456> 1393 41<174 367 1263 1456> -VStem: 174 174<0 1098> 1282 174<0 1098> -AnchorPoint: "top" 733 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 40 77 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10031 -Encoding: 1053 1053 386 -Width: 1351 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1008 1182> 717 102<348 1008> 1393 41<174 348 1008 1182> -VStem: 174 174<0 717 819 1434> 1008 174<0 717 819 1434> -AnchorPoint: "top" 680 1430 basechar 0 -LayerCount: 2 -Fore -Refer: 35 72 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10032 -Encoding: 1054 1054 387 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> -VStem: 102 174<441 1012> 1163 174<438 1009> -AnchorPoint: "top" 666 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10034 -Encoding: 1056 1056 388 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 43<174 348> 655 102<348 755> 1331 102<348 757> -VStem: 174 174<0 655 758 1331> 864 174<872 1217> -AnchorPoint: "top" 479 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 29 80 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10035 -Encoding: 1057 1057 389 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<600 974> 1352 102<556 933> -VStem: 102 174<451 1012> -AnchorPoint: "top" 676 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 30 67 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10036 -Encoding: 1058 1058 390 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 43<553 727> 1331 102<41 553 727 1243> -VStem: 553 174<0 1331> -AnchorPoint: "top" 623 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 46 84 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10039 -Encoding: 1061 1061 391 -Width: 1191 -VWidth: 0 -Flags: W -HStem: 0 43<86 279 847 1042> 1393 41<127 322 804 999> -AnchorPoint: "top" 512 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 49 88 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0400 -Encoding: 1024 1024 392 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1501 387 -VStem: 174 174<102 799 901 1331> 373 350 -LayerCount: 2 -Fore -Refer: 144 200 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10023 -Encoding: 1025 1025 393 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1516 178<346 510 715 879> -VStem: 174 174<102 799 901 1331> 346 164<1516 1694> 715 164<1516 1694> -LayerCount: 2 -Fore -Refer: 147 203 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10054 -Encoding: 1029 1029 394 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -20 102<442 777> 1352 102<441 740> -VStem: 162 174<985 1247> 907 174<203 504> -LayerCount: 2 -Fore -Refer: 45 83 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10055 -Encoding: 1030 1030 395 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> -VStem: 172 174<0 1434> -AnchorPoint: "top" 182 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10056 -Encoding: 1031 1031 396 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1516 178<-6 158 362 526> -VStem: -6 164<1516 1694> 172 174<0 1434> 362 164<1516 1694> -LayerCount: 2 -Fore -Refer: 151 207 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10057 -Encoding: 1032 1032 397 -Width: 954 -VWidth: 0 -Flags: W -HStem: -20 102<225 556> 1393 41<614 788> -VStem: 614 174<147 1434> -AnchorPoint: "top" 711 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 37 74 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10065 -Encoding: 1072 1072 398 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> -VStem: 94 164<178 440> 694 164<0 16 107 507 606 754> -AnchorPoint: "top" 463 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10070 -Encoding: 1077 1077 399 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> -VStem: 90 164<256 451> -AnchorPoint: "top" 502 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10028 -Encoding: 1050 1050 400 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 119<1091 1192> 1393 41G<174 348 967 1208> -VStem: 174 174<0 469 696 1434> -AnchorPoint: "top" 606 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1192 119 m 1,0,-1 - 1192 0 l 1,1,2 - 1042 0 1042 0 943 82 c 0,3,4 - 850 160 850 160 792 274 c 0,5,6 - 746 366 746 366 710 457 c 128,-1,7 - 674 548 674 548 654 591 c 0,8,9 - 610 685 610 685 557 705 c 1,10,-1 - 348 469 l 1,11,-1 - 348 0 l 1,12,-1 - 174 0 l 1,13,-1 - 174 1434 l 1,14,-1 - 348 1434 l 1,15,-1 - 348 696 l 1,16,-1 - 1004 1434 l 1,17,-1 - 1208 1434 l 1,18,-1 - 647 805 l 1,19,20 - 758 756 758 756 832 615 c 0,21,22 - 864 553 864 553 894 483.5 c 128,-1,23 - 924 414 924 414 952 350 c 0,24,25 - 982 286 982 286 1014 234 c 0,26,27 - 1086 119 1086 119 1192 119 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10076 -Encoding: 1082 1082 401 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 705 913> 860 41<147 311 652 877> -VStem: 147 164<0 268 477 901> -AnchorPoint: "top" 422 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 305 312 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10080 -Encoding: 1086 1086 402 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> -VStem: 90 164<231 648> 807 164<241 660> -AnchorPoint: "top" 506 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10082 -Encoding: 1088 1088 403 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -16 102<439 692> 823 102<421 705> 864 41<147 311> -VStem: 147 164<-410 59 240 710 866 905> 838 164<262 660> -AnchorPoint: "top" 516 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 16 112 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10083 -Encoding: 1089 1089 404 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 819 102<404 664> -VStem: 90 164<253 648> -AnchorPoint: "top" 504 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 5 99 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10087 -Encoding: 1093 1093 405 -Width: 833 -VWidth: 0 -Flags: W -HStem: 0 43<8 213 625 829> 860 41<66 268 569 772> -AnchorPoint: "top" 414 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 23 120 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0450 -Encoding: 1104 1104 406 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1071 387 -VStem: 90 164<256 451> 289 350 -LayerCount: 2 -Fore -Refer: 114 232 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10071 -Encoding: 1105 1105 407 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1085 178<262 426 631 795> -VStem: 90 164<256 451> 262 164<1085 1264> 631 164<1085 1264> -LayerCount: 2 -Fore -Refer: 134 235 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10102 -Encoding: 1109 1109 408 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<276 603> 819 102<316 571> -VStem: 125 164<595 792> 651 164<128 358> -AnchorPoint: "top" 389 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 7 115 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10103 -Encoding: 1110 1110 409 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1085 164<123 287> -VStem: 123 164<0 901 1085 1249> -LayerCount: 2 -Fore -Refer: 8 105 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10104 -Encoding: 1111 1111 410 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1085 178<-61 102 307 471> -VStem: -61 164<1085 1264> 123 164<0 901> 307 164<1085 1264> -CounterMasks: 1 1c -LayerCount: 2 -Fore -Refer: 135 239 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10105 -Encoding: 1112 1112 411 -Width: 536 -VWidth: 0 -Flags: W -HStem: -348 102<-3 219> 860 41<252 416> 1085 164<252 416> -VStem: 252 164<-216 901 1085 1249> -LayerCount: 2 -Fore -Refer: 13 106 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10051 -Encoding: 1026 1026 412 -Width: 1503 -VWidth: 0 -Flags: W -HStem: -348 102<810 1141> 0 43G<553 727> 819 102<801 1113> 1331 102<41 553 727 1239> -VStem: 553 174<0 756 870 1331> 1200 164<-181 717> -AnchorPoint: "top" 643 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -41 1434 m 1,0,-1 - 1243 1434 l 1,1,-1 - 1239 1331 l 1,2,-1 - 727 1331 l 1,3,-1 - 727 870 l 1,4,5 - 826 922 826 922 936 922 c 0,6,7 - 1152 922 1152 922 1258 816 c 128,-1,8 - 1364 710 1364 710 1364 492 c 2,9,-1 - 1364 160 l 2,10,11 - 1364 -54 1364 -54 1341 -134 c 128,-1,12 - 1318 -214 1318 -214 1290 -248.5 c 128,-1,13 - 1262 -283 1262 -283 1214 -307 c 0,14,15 - 1131 -348 1131 -348 964 -348 c 128,-1,16 - 797 -348 797 -348 621 -256 c 1,17,-1 - 723 -150 l 1,18,19 - 860 -246 860 -246 975 -246 c 0,20,21 - 1060 -246 1060 -246 1092.5 -231 c 128,-1,22 - 1125 -216 1125 -216 1141 -203.5 c 128,-1,23 - 1157 -191 1157 -191 1168 -166 c 128,-1,24 - 1179 -141 1179 -141 1185.5 -118.5 c 128,-1,25 - 1192 -96 1192 -96 1195 -55 c 0,26,27 - 1200 13 1200 13 1200 115 c 2,28,-1 - 1200 467 l 2,29,30 - 1200 677 1200 677 1136 751 c 0,31,32 - 1078 819 1078 819 958 819 c 128,-1,33 - 838 819 838 819 727 723 c 1,34,-1 - 727 0 l 1,35,-1 - 553 0 l 1,36,-1 - 553 1331 l 1,37,-1 - 41 1331 l 1,38,-1 - 41 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10052 -Encoding: 1027 1027 413 -Width: 1038 -VWidth: 0 -Flags: W -HStem: 0 43<174 348> 1331 102<348 1001> 1501 387 -VStem: 174 174<0 1331> 496 350 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1192 246 2 -Refer: 423 1043 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10053 -Encoding: 1028 1028 414 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<600 974> 713 102<281 938> 1352 102<558 933> -VStem: 102 174<459 713 815 1012> -AnchorPoint: "top" 717 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1249 209 m 1,0,1 - 1169 106 1169 106 1035.5 43 c 128,-1,2 - 902 -20 902 -20 741 -20 c 0,3,4 - 564 -20 564 -20 401 93 c 0,5,6 - 216 222 216 222 143 444 c 0,7,8 - 102 570 102 570 102 717.5 c 128,-1,9 - 102 865 102 865 139 989.5 c 128,-1,10 - 176 1114 176 1114 236 1198 c 128,-1,11 - 296 1282 296 1282 375 1341 c 0,12,13 - 526 1454 526 1454 702 1454 c 0,14,15 - 1075 1454 1075 1454 1243 1245 c 1,16,-1 - 1090 1178 l 1,17,18 - 1035 1256 1035 1256 945 1304 c 128,-1,19 - 855 1352 855 1352 752 1352 c 128,-1,20 - 649 1352 649 1352 574 1318.5 c 128,-1,21 - 499 1285 499 1285 437 1220 c 0,22,23 - 303 1080 303 1080 281 815 c 1,24,-1 - 938 815 l 1,25,-1 - 938 713 l 1,26,-1 - 276 713 l 1,27,28 - 277 584 277 584 310 475.5 c 128,-1,29 - 343 367 343 367 395 296 c 0,30,31 - 448 226 448 226 514 176 c 0,32,33 - 640 83 640 83 772 82 c 0,34,35 - 1010 82 1010 82 1128 264 c 1,36,-1 - 1249 209 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10058 -Encoding: 1033 1033 415 -Width: 1792 -VWidth: 0 -Flags: W -HStem: -20 102<129 347> 0 102<1071 1436> 799 102<1071 1440> 1331 102<557 897> -VStem: 383 174<111 1331> 897 174<102 799 901 1331> 1567 174<260 638> -AnchorPoint: "top" 723 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1708 614.5 m 128,-1,1 - 1741 536 1741 536 1741 464.5 c 128,-1,2 - 1741 393 1741 393 1725 330 c 0,3,4 - 1710 268 1710 268 1674 208 c 128,-1,5 - 1638 148 1638 148 1586 102 c 0,6,7 - 1471 0 1471 0 1286 0 c 2,8,-1 - 897 0 l 1,9,-1 - 897 1331 l 1,10,-1 - 557 1331 l 1,11,-1 - 557 260 l 2,12,13 - 556 57 556 57 352 -4 c 0,14,15 - 298 -20 298 -20 242 -20 c 0,16,17 - 112 -20 112 -20 35 72 c 1,18,-1 - 164 133 l 1,19,20 - 200 82 200 82 266 82 c 128,-1,21 - 332 82 332 82 357.5 140.5 c 128,-1,22 - 383 199 383 199 383 328 c 2,23,-1 - 383 1434 l 1,24,-1 - 1071 1434 l 1,25,-1 - 1071 901 l 1,26,-1 - 1282 901 l 2,27,28 - 1383 901 1383 901 1471.5 861 c 128,-1,29 - 1560 821 1560 821 1617.5 757 c 128,-1,0 - 1675 693 1675 693 1708 614.5 c 128,-1,1 -1071 799 m 1,30,-1 - 1071 102 l 1,31,-1 - 1317 102 l 2,32,33 - 1379 102 1379 102 1429 137 c 128,-1,34 - 1479 172 1479 172 1508 226 c 0,35,36 - 1567 337 1567 337 1567 435.5 c 128,-1,37 - 1567 534 1567 534 1542 609.5 c 128,-1,38 - 1517 685 1517 685 1458 742 c 128,-1,39 - 1399 799 1399 799 1317 799 c 2,40,-1 - 1071 799 l 1,30,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10059 -Encoding: 1034 1034 416 -Width: 1820 -VWidth: 0 -Flags: W -HStem: 0 102<1100 1465> 799 102<348 926 1100 1468> 1393 41G<174 348 926 1100> -VStem: 174 174<0 799 901 1434> 926 174<102 799 901 1434> 1595 174<260 638> -AnchorPoint: "top" 645 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 1434 m 1,0,-1 - 348 901 l 1,1,-1 - 926 901 l 1,2,-1 - 926 1434 l 1,3,-1 - 1100 1434 l 1,4,-1 - 1100 901 l 1,5,-1 - 1311 901 l 2,6,7 - 1412 901 1412 901 1500 861 c 128,-1,8 - 1588 821 1588 821 1646 757 c 0,9,10 - 1769 621 1769 621 1769 457 c 0,11,12 - 1768 322 1768 322 1702 208 c 0,13,14 - 1580 0 1580 0 1315 0 c 2,15,-1 - 926 0 l 1,16,-1 - 926 799 l 1,17,-1 - 348 799 l 1,18,-1 - 348 0 l 1,19,-1 - 174 0 l 1,20,-1 - 174 1434 l 1,21,-1 - 348 1434 l 1,0,-1 -1100 102 m 1,22,-1 - 1346 102 l 2,23,24 - 1408 102 1408 102 1458 137 c 128,-1,25 - 1508 172 1508 172 1536 226 c 0,26,27 - 1594 338 1594 338 1595 457 c 0,28,29 - 1594 574 1594 574 1536 681 c 0,30,31 - 1508 733 1508 733 1458 766 c 128,-1,32 - 1408 799 1408 799 1346 799 c 2,33,-1 - 1100 799 l 1,34,-1 - 1100 102 l 1,22,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10060 -Encoding: 1035 1035 417 -Width: 1503 -VWidth: 0 -Flags: W -HStem: 0 43G<553 727 1200 1364> 819 102<801 1113> 1331 102<41 553 727 1239> -VStem: 553 174<0 756 870 1331> 1200 164<0 717> -AnchorPoint: "top" 643 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -41 1434 m 1,0,-1 - 1243 1434 l 1,1,-1 - 1239 1331 l 1,2,-1 - 727 1331 l 1,3,-1 - 727 870 l 1,4,5 - 826 922 826 922 936 922 c 0,6,7 - 1152 922 1152 922 1258 816 c 128,-1,8 - 1364 710 1364 710 1364 492 c 2,9,-1 - 1364 0 l 1,10,-1 - 1200 0 l 1,11,-1 - 1200 467 l 2,12,13 - 1200 677 1200 677 1136 751 c 0,14,15 - 1078 819 1078 819 958 819 c 128,-1,16 - 838 819 838 819 727 723 c 1,17,-1 - 727 0 l 1,18,-1 - 553 0 l 1,19,-1 - 553 1331 l 1,20,-1 - 41 1331 l 1,21,-1 - 41 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10061 -Encoding: 1036 1036 418 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 119<1091 1192> 1393 41<174 348 967 1208> 1501 387 -VStem: 174 174<0 469 696 1434> 498 350 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1194 246 2 -Refer: 400 1050 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni040D -Encoding: 1037 1037 419 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1063 1237> 1393 41<174 348 1063 1237> 1501 387 -VStem: 174 174<0 61 309 1434> 453 350 1063 174<0 1122 1372 1434> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1149 246 2 -Refer: 427 1048 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10062 -Encoding: 1038 1038 420 -Width: 1081 -VWidth: 0 -Flags: W -HStem: -20 102<277 402> 1393 41<82 246 874 1063> 1436 117<414 733> -VStem: 336 76<1558 1644> 735 76<1558 1644> -LayerCount: 2 -Fore -Refer: 1101 57420 S 1 0 0 1 1161 166 2 -Refer: 431 1059 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10145 -Encoding: 1039 1039 421 -Width: 1413 -VWidth: 0 -Flags: W -HStem: 0 102<266 487 672 893> 1393 41G<92 266 893 1067> -VStem: 92 174<102 1434> 530 98<-315 -38> 893 174<102 1434> -CounterMasks: 1 38 -AnchorPoint: "top" 565 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -92 0 m 1,0,-1 - 92 1434 l 1,1,-1 - 266 1434 l 1,2,-1 - 266 102 l 1,3,-1 - 893 102 l 1,4,-1 - 893 1434 l 1,5,-1 - 1067 1434 l 1,6,-1 - 1067 0 l 1,7,-1 - 694 0 l 1,8,9 - 655 -39 655 -39 636 -193 c 0,10,11 - 629 -250 629 -250 629 -315 c 1,12,-1 - 530 -315 l 1,13,14 - 530 -211 530 -211 513.5 -132.5 c 128,-1,15 - 497 -54 497 -54 481 -27 c 2,16,-1 - 465 0 l 1,17,-1 - 92 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10018 -Encoding: 1041 1041 422 -Width: 1116 -VWidth: 0 -Flags: W -HStem: 0 102<348 734> 799 102<348 737> 1331 102<348 858> -VStem: 174 174<102 799 901 1331> 864 174<260 638> -AnchorPoint: "top" 604 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 799 m 1,0,-1 - 348 102 l 1,1,-1 - 614 102 l 2,2,3 - 676 102 676 102 726 137 c 128,-1,4 - 776 172 776 172 805 226 c 0,5,6 - 864 337 864 337 864 435.5 c 128,-1,7 - 864 534 864 534 839 609.5 c 128,-1,8 - 814 685 814 685 755 742 c 128,-1,9 - 696 799 696 799 614 799 c 2,10,-1 - 348 799 l 1,0,-1 -348 901 m 1,11,-1 - 580 901 l 2,12,13 - 681 901 681 901 769 861 c 128,-1,14 - 857 821 857 821 915 757 c 0,15,16 - 1038 621 1038 621 1038 457 c 0,17,18 - 1038 322 1038 322 972 208 c 0,19,20 - 850 0 850 0 584 0 c 2,21,-1 - 174 0 l 1,22,-1 - 174 1434 l 1,23,-1 - 858 1434 l 1,24,-1 - 858 1331 l 1,25,-1 - 348 1331 l 1,26,-1 - 348 901 l 1,11,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10020 -Encoding: 1043 1043 423 -Width: 1038 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348> 1331 102<348 1001> -VStem: 174 174<0 1331> -AnchorPoint: "top" 604 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 1001 1434 l 1,3,-1 - 1001 1331 l 1,4,-1 - 348 1331 l 1,5,-1 - 348 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10021 -Encoding: 1044 1044 424 -Width: 1310 -VWidth: 0 -Flags: W -HStem: -141 244<66 202 1024 1178> 0 102<360 850> 1331 102<440 479 642 850 1024 1067> -VStem: 66 164<-141 0> 479 166<1016 1331> 850 174<102 1331> 1014 164<-141 0> -AnchorPoint: "top" 748 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 1434 m 1,0,-1 - 1067 1434 l 1,1,-1 - 1067 1331 l 1,2,-1 - 1024 1331 l 1,3,-1 - 1024 102 l 1,4,-1 - 1178 102 l 1,5,-1 - 1178 -141 l 1,6,-1 - 1014 -141 l 1,7,-1 - 1014 0 l 1,8,-1 - 229 0 l 1,9,-1 - 229 -141 l 1,10,-1 - 66 -141 l 1,11,-1 - 66 102 l 1,12,-1 - 184 102 l 1,13,14 - 250 243 250 243 314 461 c 0,15,16 - 435 872 435 872 479 1331 c 1,17,-1 - 440 1331 l 1,18,-1 - 440 1434 l 1,0,-1 -850 1331 m 1,19,-1 - 645 1331 l 1,20,21 - 594 804 594 804 428 293 c 0,22,23 - 394 187 394 187 360 102 c 1,24,-1 - 850 102 l 1,25,-1 - 850 1331 l 1,19,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10024 -Encoding: 1046 1046 425 -Width: 1560 -VWidth: 0 -Flags: W -HStem: 0 43G<86 260 721 895 1356 1530> 1331 102<106 189 1427 1509> -VStem: 86 174<0 96> 721 174<0 666 778 1434> 1356 174<0 96> -CounterMasks: 1 38 -AnchorPoint: "top" 811 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -895 666 m 1,0,-1 - 895 0 l 1,1,-1 - 721 0 l 1,2,-1 - 721 666 l 1,3,4 - 662 642 662 642 578 539 c 128,-1,5 - 494 436 494 436 426 321.5 c 128,-1,6 - 358 207 358 207 309 111.5 c 128,-1,7 - 260 16 260 16 260 0 c 1,8,-1 - 86 0 l 1,9,10 - 86 27 86 27 129 118 c 128,-1,11 - 172 209 172 209 238.5 320 c 128,-1,12 - 305 431 305 431 401 544.5 c 128,-1,13 - 497 658 497 658 586 717 c 1,14,15 - 461 798 461 798 357 1003 c 0,16,17 - 316 1084 316 1084 277 1160 c 0,18,19 - 189 1331 189 1331 106 1331 c 1,20,-1 - 106 1434 l 1,21,22 - 257 1434 257 1434 363 1320 c 0,23,24 - 455 1222 455 1222 528 1076 c 0,25,26 - 621 892 621 892 654.5 844.5 c 128,-1,27 - 688 797 688 797 721 778 c 1,28,-1 - 721 1434 l 1,29,-1 - 895 1434 l 1,30,-1 - 895 778 l 1,31,32 - 953 810 953 810 1024 950 c 0,33,34 - 1054 1008 1054 1008 1088 1076 c 128,-1,35 - 1122 1144 1122 1144 1163 1206 c 0,36,37 - 1204 1268 1204 1268 1252 1320 c 0,38,39 - 1358 1434 1358 1434 1509 1434 c 1,40,-1 - 1509 1331 l 1,41,42 - 1426 1331 1426 1331 1338 1160 c 0,43,44 - 1298 1084 1298 1084 1258 1003 c 0,45,46 - 1156 799 1156 799 1030 717 c 1,47,48 - 1119 658 1119 658 1215 544.5 c 128,-1,49 - 1311 431 1311 431 1377.5 320 c 128,-1,50 - 1444 209 1444 209 1487 118 c 128,-1,51 - 1530 27 1530 27 1530 0 c 1,52,-1 - 1356 0 l 1,53,54 - 1356 16 1356 16 1307 111.5 c 128,-1,55 - 1258 207 1258 207 1190 321.5 c 128,-1,56 - 1122 436 1122 436 1038 539 c 128,-1,57 - 954 642 954 642 895 666 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10025 -Encoding: 1047 1047 426 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -20 102<332 660> 799 102<373 641> 1352 102<345 676> -VStem: 752 174<1000 1276> 813 174<263 622> -AnchorPoint: "top" 532 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -233 285 m 1,0,1 - 256 177 256 177 324 129.5 c 128,-1,2 - 392 82 392 82 524 82 c 0,3,4 - 595 82 595 82 653 120 c 0,5,6 - 710 158 710 158 744 216 c 0,7,8 - 812 334 812 334 813 440 c 0,9,10 - 813 505 813 505 791 567 c 128,-1,11 - 769 629 769 629 743.5 666 c 128,-1,12 - 718 703 718 703 686 733 c 0,13,14 - 614 799 614 799 506 799 c 2,15,-1 - 373 799 l 1,16,-1 - 373 901 l 1,17,-1 - 444 901 l 2,18,19 - 602 901 602 901 677 968 c 128,-1,20 - 752 1035 752 1035 752 1133 c 128,-1,21 - 752 1231 752 1231 696 1291.5 c 128,-1,22 - 640 1352 640 1352 532 1352 c 128,-1,23 - 424 1352 424 1352 358 1317 c 128,-1,24 - 292 1282 292 1282 281 1198 c 1,25,-1 - 129 1239 l 1,26,27 - 185 1342 185 1342 293 1398 c 128,-1,28 - 401 1454 401 1454 514 1454 c 0,29,30 - 707 1454 707 1454 816.5 1361 c 128,-1,31 - 926 1268 926 1268 926 1137 c 0,32,33 - 926 1047 926 1047 878 970.5 c 128,-1,34 - 830 894 830 894 725 850 c 1,35,36 - 920 760 920 760 974 544 c 0,37,38 - 988 492 988 492 988 443 c 0,39,40 - 988 390 988 390 971 329 c 0,41,42 - 955 270 955 270 916.5 207.5 c 128,-1,43 - 878 145 878 145 823.5 95 c 128,-1,44 - 769 45 769 45 683 12.5 c 128,-1,45 - 597 -20 597 -20 494 -20 c 0,46,47 - 336 -20 336 -20 231.5 52 c 128,-1,48 - 127 124 127 124 82 244 c 1,49,-1 - 233 285 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10026 -Encoding: 1048 1048 427 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348 1063 1237> 1393 41G<174 348 1063 1237> -VStem: 174 174<0 61 309 1434> 1063 174<0 1122 1372 1434> -AnchorPoint: "top" 694 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1063 1434 m 1,0,-1 - 1237 1434 l 1,1,-1 - 1237 0 l 1,2,-1 - 1063 0 l 1,3,-1 - 1063 1122 l 1,4,-1 - 348 61 l 1,5,-1 - 348 0 l 1,6,-1 - 174 0 l 1,7,-1 - 174 1434 l 1,8,-1 - 348 1434 l 1,9,-1 - 348 309 l 1,10,-1 - 1063 1372 l 1,11,-1 - 1063 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10027 -Encoding: 1049 1049 428 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1063 1237> 1393 41<174 348 1063 1237> 1436 117<545 864> -VStem: 174 174<0 61 309 1434> 467 76<1558 1644> 866 76<1558 1644> 1063 174<0 1122 1372 1434> -LayerCount: 2 -Fore -Refer: 1101 57420 S 1 0 0 1 1292 166 2 -Refer: 427 1048 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10029 -Encoding: 1051 1051 429 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -20 102<129 347> 0 43G<938 1112> 1331 102<557 938> -VStem: 383 174<111 1331> 938 174<0 1331> -AnchorPoint: "top" 743 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -938 0 m 1,0,-1 - 938 1331 l 1,1,-1 - 557 1331 l 1,2,-1 - 557 260 l 2,3,4 - 556 57 556 57 352 -4 c 0,5,6 - 298 -20 298 -20 242 -20 c 0,7,8 - 112 -20 112 -20 35 72 c 1,9,-1 - 164 133 l 1,10,11 - 200 82 200 82 266 82 c 128,-1,12 - 332 82 332 82 357.5 140.5 c 128,-1,13 - 383 199 383 199 383 328 c 2,14,-1 - 383 1434 l 1,15,-1 - 1112 1434 l 1,16,-1 - 1112 0 l 1,17,-1 - 938 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10033 -Encoding: 1055 1055 430 -Width: 1318 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348 975 1149> 1331 102<348 975> -VStem: 174 174<0 1331> 975 174<0 1331> -AnchorPoint: "top" 657 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -174 0 m 9,0,-1 - 174 1434 l 1,1,-1 - 1149 1434 l 1,2,-1 - 1149 0 l 1,3,-1 - 975 0 l 1,4,-1 - 975 1331 l 1,5,-1 - 348 1331 l 1,6,-1 - 348 0 l 1,7,-1 - 174 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10037 -Encoding: 1059 1059 431 -Width: 1081 -VWidth: 0 -Flags: W -HStem: -20 102<277 402> 1393 41G<82 246 874 1063> -AnchorPoint: "top" 571 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -313 -20 m 0,0,1 - 258 -20 258 -20 212 13 c 128,-1,2 - 166 46 166 46 102 115 c 1,3,-1 - 233 180 l 1,4,5 - 292 98 292 98 320 86 c 0,6,7 - 330 82 330 82 344 82 c 0,8,9 - 384 82 384 82 417 149 c 0,10,11 - 431 177 431 177 469 283 c 1,12,-1 - 485 328 l 1,13,-1 - 82 1434 l 1,14,-1 - 231 1434 l 1,15,-1 - 559 532 l 1,16,-1 - 889 1434 l 1,17,-1 - 1063 1434 l 1,18,-1 - 641 279 l 2,19,20 - 584 121 584 121 509.5 50.5 c 128,-1,21 - 435 -20 435 -20 313 -20 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10038 -Encoding: 1060 1060 432 -Width: 1435 -VWidth: 0 -Flags: W -HStem: 0 43G<633 807> 188 106<513 633 807 926> 1143 104<499 633 807 911> 1393 41G<633 807> -VStem: 102 174<523 915> 633 174<0 194 295 1137 1243 1434> 1163 174<526 905> -CounterMasks: 1 0e -AnchorPoint: "top" 723 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -633 295 m 1,0,-1 - 633 1143 l 1,1,2 - 477 1121 477 1121 376.5 1006.5 c 128,-1,3 - 276 892 276 892 276 720.5 c 128,-1,4 - 276 549 276 549 378.5 436 c 128,-1,5 - 481 323 481 323 633 295 c 1,0,-1 -633 1247 m 1,6,-1 - 633 1434 l 1,7,-1 - 807 1434 l 1,8,-1 - 807 1241 l 1,9,10 - 1117 1194 1117 1194 1263 970 c 0,11,12 - 1337 856 1337 856 1337 715.5 c 128,-1,13 - 1337 575 1337 575 1264.5 460 c 128,-1,14 - 1192 345 1192 345 1073 277 c 128,-1,15 - 954 209 954 209 807 190 c 1,16,-1 - 807 0 l 1,17,-1 - 633 0 l 1,18,-1 - 633 188 l 1,19,20 - 472 208 472 208 336 302 c 0,21,22 - 102 464 102 464 102 717 c 0,23,24 - 102 828 102 828 148 925 c 128,-1,25 - 194 1022 194 1022 270 1088 c 0,26,27 - 427 1226 427 1226 633 1247 c 1,6,-1 -807 1137 m 1,28,-1 - 807 295 l 1,29,30 - 958 324 958 324 1060.5 437.5 c 128,-1,31 - 1163 551 1163 551 1163 716.5 c 128,-1,32 - 1163 882 1163 882 1063.5 993.5 c 128,-1,33 - 964 1105 964 1105 807 1137 c 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10040 -Encoding: 1062 1062 433 -Width: 1413 -VWidth: 0 -Flags: W -HStem: 0 102<348 975> 1393 41G<174 348 975 1149> -VStem: 174 174<102 1434> 975 174<102 1434> 1182 98<-315 -38> -AnchorPoint: "top" 647 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1182 -315 m 1,0,1 - 1182 -94 1182 -94 1116 0 c 1,2,-1 - 174 0 l 1,3,-1 - 174 1434 l 1,4,-1 - 348 1434 l 1,5,-1 - 348 102 l 1,6,-1 - 975 102 l 1,7,-1 - 975 1434 l 1,8,-1 - 1149 1434 l 1,9,-1 - 1149 102 l 5,10,-1 - 1280 102 l 1,11,-1 - 1280 -315 l 1,12,-1 - 1182 -315 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10041 -Encoding: 1063 1063 434 -Width: 1165 -VWidth: 0 -Flags: W -HStem: 0 43G<821 995> 522 102<425 746> 1393 41G<123 297 821 995> -VStem: 123 174<791 1434> 821 174<0 573 688 1434> -AnchorPoint: "top" 565 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -821 721 m 1,0,-1 - 821 1434 l 1,1,-1 - 995 1434 l 1,2,-1 - 995 0 l 1,3,-1 - 821 0 l 1,4,-1 - 821 573 l 1,5,6 - 777 550 777 550 696 536 c 128,-1,7 - 615 522 615 522 551 522 c 0,8,9 - 333 522 333 522 228 656.5 c 128,-1,10 - 123 791 123 791 123 1085 c 2,11,-1 - 123 1434 l 1,12,-1 - 297 1434 l 1,13,-1 - 297 1110 l 2,14,15 - 297 710 297 710 463 644 c 0,16,17 - 509 625 509 625 575 625 c 0,18,19 - 578 625 578 625 582 625 c 0,20,21 - 710 625 710 625 821 721 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10042 -Encoding: 1064 1064 435 -Width: 1656 -VWidth: 0 -Flags: W -HStem: 0 102<348 743 918 1313> 1393 41G<174 348 743 918 1313 1487> -VStem: 174 174<102 1434> 743 174<102 1434> 1313 174<102 1434> -CounterMasks: 1 38 -AnchorPoint: "top" 834 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1487 1434 m 1,0,-1 - 1487 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 348 1434 l 1,4,-1 - 348 102 l 1,5,-1 - 743 102 l 1,6,-1 - 743 1434 l 1,7,-1 - 918 1434 l 1,8,-1 - 918 102 l 1,9,-1 - 1313 102 l 1,10,-1 - 1313 1434 l 1,11,-1 - 1487 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10043 -Encoding: 1065 1065 436 -Width: 1751 -VWidth: 0 -Flags: W -HStem: 0 102<348 743 918 1313> 1393 41G<174 348 743 918 1313 1487> -VStem: 174 174<102 1434> 743 174<102 1434> 1313 174<102 1434> 1520 98<-315 -38> -AnchorPoint: "top" 834 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1520 -315 m 1,0,1 - 1520 -94 1520 -94 1454 0 c 5,2,-1 - 174 0 l 1,3,-1 - 174 1434 l 1,4,-1 - 348 1434 l 1,5,-1 - 348 102 l 1,6,-1 - 743 102 l 1,7,-1 - 743 1434 l 1,8,-1 - 918 1434 l 1,9,-1 - 918 102 l 1,10,-1 - 1313 102 l 1,11,-1 - 1313 1434 l 1,12,-1 - 1487 1434 l 1,13,-1 - 1487 102 l 1,14,-1 - 1618 102 l 1,15,-1 - 1618 -315 l 1,16,-1 - 1520 -315 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10044 -Encoding: 1066 1066 437 -Width: 1271 -VWidth: 0 -Flags: W -HStem: 0 102<530 916> 799 102<530 920> 1331 102<41 356> -VStem: 356 174<102 799 901 1331> 1047 174<260 638> -AnchorPoint: "top" 444 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1188 614.5 m 128,-1,1 - 1221 536 1221 536 1221 464.5 c 128,-1,2 - 1221 393 1221 393 1205 330 c 0,3,4 - 1190 268 1190 268 1154 208 c 128,-1,5 - 1118 148 1118 148 1066 102 c 0,6,7 - 951 0 951 0 766 0 c 2,8,-1 - 356 0 l 1,9,-1 - 356 1331 l 1,10,-1 - 41 1331 l 1,11,-1 - 41 1434 l 1,12,-1 - 530 1434 l 1,13,-1 - 530 901 l 1,14,-1 - 762 901 l 2,15,16 - 863 901 863 901 951.5 861 c 128,-1,17 - 1040 821 1040 821 1097.5 757 c 128,-1,0 - 1155 693 1155 693 1188 614.5 c 128,-1,1 -530 799 m 1,18,-1 - 530 102 l 1,19,-1 - 797 102 l 2,20,21 - 859 102 859 102 909 137 c 128,-1,22 - 959 172 959 172 988 226 c 0,23,24 - 1047 337 1047 337 1047 435.5 c 128,-1,25 - 1047 534 1047 534 1022 609.5 c 128,-1,26 - 997 685 997 685 938 742 c 128,-1,27 - 879 799 879 799 797 799 c 2,28,-1 - 530 799 l 1,18,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10045 -Encoding: 1067 1067 438 -Width: 1505 -VWidth: 0 -Flags: W -HStem: 0 43<1161 1335> 0 102<348 734> 799 102<348 737> 1393 41<174 348 1161 1335> -VStem: 174 174<102 799 901 1434> 864 174<260 638> 1161 174<0 1434> -AnchorPoint: "top" 731 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 989 0 2 -Refer: 439 1068 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10046 -Encoding: 1068 1068 439 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 102<348 734> 799 102<348 737> 1393 41G<174 348> -VStem: 174 174<102 799 901 1434> 864 174<260 638> -AnchorPoint: "top" 506 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 799 m 1,0,-1 - 348 102 l 1,1,-1 - 614 102 l 2,2,3 - 676 102 676 102 726 137 c 128,-1,4 - 776 172 776 172 805 226 c 0,5,6 - 864 337 864 337 864 435.5 c 128,-1,7 - 864 534 864 534 839 609.5 c 128,-1,8 - 814 685 814 685 755 742 c 128,-1,9 - 696 799 696 799 614 799 c 2,10,-1 - 348 799 l 1,0,-1 -1005.5 614.5 m 128,-1,12 - 1038 536 1038 536 1038 464.5 c 128,-1,13 - 1038 393 1038 393 1022 330 c 0,14,15 - 1008 268 1008 268 972 208 c 128,-1,16 - 936 148 936 148 884 102 c 0,17,18 - 769 0 769 0 584 0 c 2,19,-1 - 174 0 l 1,20,-1 - 174 1434 l 1,21,-1 - 348 1434 l 1,22,-1 - 348 901 l 1,23,-1 - 580 901 l 2,24,25 - 681 901 681 901 769 861 c 128,-1,26 - 857 821 857 821 915 757 c 128,-1,11 - 973 693 973 693 1005.5 614.5 c 128,-1,12 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10047 -Encoding: 1069 1069 440 -Width: 1347 -VWidth: 0 -Flags: W -HStem: -20 102<364 772> 713 102<569 1071> 1352 102<416 820> -VStem: 1075 174<440 713 815 1026> -AnchorPoint: "top" 635 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -102 209 m 1,0,-1 - 223 264 l 1,1,2 - 265 199 265 199 306 163 c 0,3,4 - 398 82 398 82 610 82 c 0,5,6 - 742 82 742 82 858 176 c 0,7,8 - 1073 349 1073 349 1075 713 c 1,9,-1 - 569 713 l 1,10,-1 - 569 815 l 1,11,-1 - 1071 815 l 1,12,13 - 1051 1077 1051 1077 936 1214.5 c 128,-1,14 - 821 1352 821 1352 660.5 1352 c 128,-1,15 - 500 1352 500 1352 410 1306 c 128,-1,16 - 320 1260 320 1260 262 1178 c 1,17,-1 - 109 1245 l 1,18,19 - 161 1309 161 1309 221 1352 c 128,-1,20 - 281 1395 281 1395 383 1424.5 c 128,-1,21 - 485 1454 485 1454 617 1454 c 128,-1,22 - 749 1454 749 1454 860.5 1410 c 128,-1,23 - 972 1366 972 1366 1060 1278.5 c 128,-1,24 - 1148 1191 1148 1191 1198.5 1047 c 128,-1,25 - 1249 903 1249 903 1249 735.5 c 128,-1,26 - 1249 568 1249 568 1212.5 444.5 c 128,-1,27 - 1176 321 1176 321 1113 236 c 0,28,29 - 1050 150 1050 150 964 92 c 0,30,31 - 800 -20 800 -20 580 -20 c 1,32,33 - 280 -20 280 -20 102 209 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10048 -Encoding: 1070 1070 441 -Width: 1722 -VWidth: 0 -Flags: W -HStem: -20 102<905 1199> 0 43G<174 348> 713 102<348 471> 1352 102<882 1193> 1393 41G<174 348> -VStem: 174 174<0 713 815 1434> 471 174<419 713 815 1022> 1450 174<414 1026> -AnchorPoint: "top" 664 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1152.5 1329.5 m 128,-1,1 - 1092 1352 1092 1352 1031 1352 c 128,-1,2 - 970 1352 970 1352 916 1327.5 c 128,-1,3 - 862 1303 862 1303 812.5 1251.5 c 128,-1,4 - 763 1200 763 1200 726 1126 c 0,5,6 - 645 965 645 965 645 717 c 0,7,8 - 645 353 645 353 833 176 c 0,9,10 - 968 91 968 91 1044 82 c 1,11,12 - 1204 82 1204 82 1322 237 c 0,13,14 - 1380 313 1380 313 1415 437.5 c 128,-1,15 - 1450 562 1450 562 1450 705 c 128,-1,16 - 1450 848 1450 848 1426.5 955.5 c 128,-1,17 - 1403 1063 1403 1063 1363 1135.5 c 128,-1,18 - 1323 1208 1323 1208 1268 1257.5 c 128,-1,0 - 1213 1307 1213 1307 1152.5 1329.5 c 128,-1,1 -475 815 m 1,19,20 - 504 1188 504 1188 724 1356 c 0,21,22 - 852 1454 852 1454 997 1454 c 128,-1,23 - 1142 1454 1142 1454 1250.5 1410 c 128,-1,24 - 1359 1366 1359 1366 1443.5 1278.5 c 128,-1,25 - 1528 1191 1528 1191 1576 1047 c 128,-1,26 - 1624 903 1624 903 1624 716.5 c 128,-1,27 - 1624 530 1624 530 1579 386 c 0,28,29 - 1534 244 1534 244 1454 156 c 0,30,31 - 1293 -19 1293 -19 1032 -20 c 0,32,33 - 856 -20 856 -20 718 92 c 0,34,35 - 474 289 474 289 471 713 c 1,36,-1 - 348 713 l 1,37,-1 - 348 0 l 1,38,-1 - 174 0 l 1,39,-1 - 174 1434 l 1,40,-1 - 348 1434 l 1,41,-1 - 348 815 l 1,42,-1 - 475 815 l 1,19,20 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10049 -Encoding: 1071 1071 442 -Width: 1228 -VWidth: 0 -Flags: W -HStem: 0 119<86 161> 655 102<625 885> 1331 102<476 885> -VStem: 195 174<873 1217> 885 174<0 655 758 1331> -AnchorPoint: "top" 672 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -885 1331 m 1,0,-1 - 608 1331 l 2,1,2 - 436 1331 436 1331 382 1141 c 0,3,4 - 368 1095 368 1095 368 1047 c 0,5,6 - 368 996 368 996 382 947 c 0,7,8 - 396 900 396 900 423 856 c 0,9,10 - 484 758 484 758 608 758 c 2,11,-1 - 885 758 l 1,12,-1 - 885 1331 l 1,0,-1 -469 680 m 1,13,14 - 376 710 376 710 312 774 c 0,15,16 - 195 890 195 890 195 1046 c 0,17,18 - 195 1226 195 1226 340 1344 c 0,19,20 - 451 1434 451 1434 639 1434 c 2,21,-1 - 1059 1434 l 1,22,-1 - 1059 0 l 1,23,-1 - 885 0 l 1,24,-1 - 885 655 l 1,25,-1 - 657 655 l 1,26,27 - 614 604 614 604 564 499.5 c 128,-1,28 - 514 395 514 395 481 329 c 128,-1,29 - 448 263 448 263 409 206 c 128,-1,30 - 370 149 370 149 324 102 c 0,31,32 - 224 0 224 0 86 0 c 1,33,-1 - 86 119 l 1,34,35 - 136 120 136 120 184 180 c 0,36,37 - 230 240 230 240 266 320 c 0,38,39 - 378 570 378 570 469 680 c 1,13,14 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10066 -Encoding: 1073 1073 443 -Width: 1030 -VWidth: 0 -Flags: W -HStem: -20 102<393 652> 819 102<342 652> 1202 102<408 709> -VStem: 90 164<261 735> 758 68<1358 1376> 780 164<240 664> -AnchorPoint: "top" 539 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -639 1192 m 1,0,-1 - 506 1202 l 1,1,2 - 433 1202 433 1202 374 1120.5 c 128,-1,3 - 315 1039 315 1039 283 866 c 1,4,5 - 392 922 392 922 505 922 c 128,-1,6 - 618 922 618 922 705.5 885 c 128,-1,7 - 793 848 793 848 844 782 c 0,8,9 - 944 653 944 653 944 451 c 0,10,11 - 944 323 944 323 889.5 216 c 128,-1,12 - 835 109 835 109 732.5 44.5 c 128,-1,13 - 630 -20 630 -20 500 -20 c 0,14,15 - 388 -20 388 -20 312 29 c 128,-1,16 - 236 78 236 78 192.5 139 c 128,-1,17 - 149 200 149 200 119.5 311 c 128,-1,18 - 90 422 90 422 90 596.5 c 128,-1,19 - 90 771 90 771 143 939 c 128,-1,20 - 196 1107 196 1107 292 1206 c 128,-1,21 - 388 1305 388 1305 506 1305 c 2,22,-1 - 557 1305 l 2,23,24 - 618 1305 618 1305 679 1331.5 c 128,-1,25 - 740 1358 740 1358 758 1397 c 1,26,-1 - 825 1370 l 1,27,28 - 809 1261 809 1261 718 1211 c 0,29,30 - 683 1192 683 1192 639 1192 c 1,0,-1 -258 657 m 1,31,32 - 254 563 254 563 254 504 c 0,33,34 - 254 290 254 290 334 186 c 128,-1,35 - 414 82 414 82 530 82 c 0,36,37 - 709 82 709 82 765 320 c 0,38,39 - 780 384 780 384 780 463.5 c 128,-1,40 - 780 543 780 543 755 624 c 128,-1,41 - 730 705 730 705 671 762 c 128,-1,42 - 612 819 612 819 530 819 c 0,43,44 - 526 819 l 0,45,46 - 359 819 359 819 290 734 c 0,47,48 - 264 702 264 702 258 657 c 1,31,32 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10067 -Encoding: 1074 1074 444 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<287 643> 440 102<287 569> 799 102<287 575> -VStem: 123 164<102 440 543 799> 610 164<583 761> 696 164<151 369> -AnchorPoint: "top" 438 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -287 440 m 1,0,-1 - 287 102 l 1,1,-1 - 506 102 l 2,2,3 - 600 102 600 102 648 145 c 128,-1,4 - 696 188 696 188 696 264 c 128,-1,5 - 696 340 696 340 628.5 390 c 128,-1,6 - 561 440 561 440 446 440 c 2,7,-1 - 287 440 l 1,0,-1 -631 508 m 1,8,9 - 741 489 741 489 800.5 415 c 128,-1,10 - 860 341 860 341 860 276.5 c 128,-1,11 - 860 212 860 212 843 169 c 128,-1,12 - 826 126 826 126 785 86 c 0,13,14 - 697 0 697 0 465 0 c 2,15,-1 - 123 0 l 1,16,-1 - 123 901 l 1,17,-1 - 375 901 l 2,18,19 - 774 901 774 901 774 666 c 0,20,21 - 774 574 774 574 709 538 c 0,22,23 - 679 522 679 522 631 508 c 1,8,9 -287 799 m 1,24,-1 - 287 543 l 1,25,-1 - 422 543 l 2,26,27 - 564 543 564 543 602 628 c 0,28,29 - 610 647 610 647 610 669 c 128,-1,30 - 610 691 610 691 604 711 c 0,31,32 - 598 730 598 730 579 752 c 0,33,34 - 540 798 540 798 416 799 c 2,35,-1 - 287 799 l 1,24,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10068 -Encoding: 1075 1075 445 -Width: 768 -VWidth: 0 -Flags: W -HStem: 0 43G<123 287> 799 102<287 715> -VStem: 123 164<0 799> -AnchorPoint: "top" 422 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -287 0 m 1,0,-1 - 123 0 l 1,1,-1 - 123 901 l 1,2,-1 - 715 901 l 1,3,-1 - 715 799 l 1,4,-1 - 287 799 l 1,5,-1 - 287 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10069 -Encoding: 1076 1076 446 -Width: 1097 -VWidth: 0 -Flags: W -HStem: -141 244<82 218 862 1016> 0 102<377 698> 799 102<332 416 573 698 862 899> -VStem: 82 164<-141 0> 416 164<613 799> 698 164<102 799> 852 164<-141 0> -AnchorPoint: "top" 618 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -332 901 m 1,0,-1 - 899 901 l 1,1,-1 - 899 799 l 1,2,-1 - 862 799 l 1,3,-1 - 862 102 l 1,4,-1 - 1016 102 l 1,5,-1 - 1016 -141 l 1,6,-1 - 852 -141 l 1,7,-1 - 852 0 l 1,8,-1 - 246 0 l 1,9,-1 - 246 -141 l 1,10,-1 - 82 -141 l 1,11,-1 - 82 102 l 1,12,-1 - 201 102 l 1,13,14 - 329 385 329 385 416 799 c 1,15,-1 - 332 799 l 1,16,-1 - 332 901 l 1,0,-1 -698 799 m 1,17,-1 - 580 799 l 1,18,19 - 497 412 497 412 377 102 c 1,20,-1 - 698 102 l 1,21,-1 - 698 799 l 1,17,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10072 -Encoding: 1078 1078 447 -Width: 1286 -VWidth: 0 -Flags: W -HStem: 0 43G<80 254 561 725 1032 1206> 799 102<70 178 1108 1217> -VStem: 80 174<0 111> 561 164<0 384 489 901> 1032 174<0 111> -CounterMasks: 1 38 -AnchorPoint: "top" 645 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -725 379 m 1,0,-1 - 725 0 l 1,1,-1 - 561 0 l 1,2,-1 - 561 379 l 1,3,4 - 516 383 516 383 496 389 c 1,5,6 - 412 317 412 317 333 188 c 128,-1,7 - 254 59 254 59 254 0 c 1,8,-1 - 80 0 l 1,9,10 - 80 49 80 49 171 195.5 c 128,-1,11 - 262 342 262 342 377 453 c 1,12,13 - 315 506 315 506 259 628 c 0,14,15 - 239 672 239 672 216 712 c 0,16,17 - 167 799 167 799 72 799 c 0,18,-1 - 70 799 l 1,19,-1 - 70 901 l 1,20,21 - 220 901 220 901 306 830 c 0,22,23 - 378 770 378 770 424 678 c 0,24,25 - 481 566 481 566 506.5 533.5 c 128,-1,26 - 532 501 532 501 561 489 c 1,27,-1 - 561 901 l 1,28,-1 - 725 901 l 1,29,-1 - 725 489 l 1,30,31 - 775 510 775 510 821 598 c 0,32,33 - 840 634 840 634 861.5 677 c 128,-1,34 - 883 720 883 720 913 759 c 0,35,36 - 944 798 944 798 982 830 c 0,37,38 - 1067 901 1067 901 1217 901 c 1,39,-1 - 1217 799 l 1,40,-1 - 1215 799 l 0,41,42 - 1120 799 1120 799 1070 712 c 0,43,44 - 1046 672 1046 672 1028 628 c 0,45,46 - 974 508 974 508 909 453 c 1,47,48 - 1024 342 1024 342 1115 195.5 c 128,-1,49 - 1206 49 1206 49 1206 0 c 1,50,-1 - 1032 0 l 1,51,52 - 1032 60 1032 60 953 188.5 c 128,-1,53 - 874 317 874 317 791 389 c 1,54,55 - 771 383 771 383 725 379 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10073 -Encoding: 1079 1079 448 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<259 582> 451 102<295 543> 819 102<261 562> -VStem: 598 164<604 783> 647 164<145 379> -AnchorPoint: "top" 430 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -182 203 m 1,0,1 - 206 150 206 150 278.5 116 c 128,-1,2 - 351 82 351 82 420 82 c 0,3,4 - 488 82 488 82 532 98 c 0,5,6 - 576 116 576 116 600 142 c 0,7,8 - 647 194 647 194 647 256 c 0,9,10 - 647 451 647 451 367 451 c 2,11,-1 - 295 451 l 1,12,-1 - 295 553 l 1,13,-1 - 352 553 l 2,14,15 - 478 553 478 553 538 593 c 128,-1,16 - 598 633 598 633 598 691.5 c 128,-1,17 - 598 750 598 750 553 784.5 c 128,-1,18 - 508 819 508 819 424.5 819 c 128,-1,19 - 341 819 341 819 285.5 791 c 128,-1,20 - 230 763 230 763 221 711 c 1,21,-1 - 100 735 l 1,22,23 - 128 814 128 814 204.5 868 c 128,-1,24 - 281 922 281 922 435 922 c 128,-1,25 - 589 922 589 922 675.5 860.5 c 128,-1,26 - 762 799 762 799 762 694 c 0,27,28 - 762 647 762 647 727.5 597.5 c 128,-1,29 - 693 548 693 548 625 512 c 1,30,31 - 720 474 720 474 765.5 406.5 c 128,-1,32 - 811 339 811 339 811 256 c 0,33,34 - 811 127 811 127 713 53.5 c 128,-1,35 - 615 -20 615 -20 408 -20 c 0,36,37 - 287 -20 287 -20 194.5 40.5 c 128,-1,38 - 102 101 102 101 61 178 c 1,39,-1 - 182 203 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10074 -Encoding: 1080 1080 449 -Width: 1054 -VWidth: 0 -Flags: W -HStem: 0 43G<123 316 770 934> 860 41G<123 287 741 934> -VStem: 123 164<227 901> 770 164<0 668> -AnchorPoint: "top" 535 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 287 901 l 1,1,-1 - 287 227 l 1,2,-1 - 770 901 l 1,3,-1 - 934 901 l 1,4,-1 - 934 0 l 1,5,-1 - 770 0 l 1,6,-1 - 770 668 l 1,7,-1 - 287 0 l 1,8,-1 - 123 0 l 1,9,-1 - 123 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10075 -Encoding: 1081 1081 450 -Width: 1054 -VWidth: 0 -Flags: W -HStem: 0 43<123 316 770 934> 860 41<123 287 741 934> 1085 117<367 685> -VStem: 123 164<227 901> 289 76<1208 1293> 688 76<1208 1293> 770 164<0 668> -LayerCount: 2 -Fore -Refer: 1101 57420 S 1 0 0 1 1114 -184 2 -Refer: 449 1080 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10077 -Encoding: 1083 1083 451 -Width: 1183 -VWidth: 0 -Flags: W -HStem: -20 102<155 376> 0 43G<899 1063> 799 102<573 899> -VStem: 410 164<111 799> 899 164<0 799> -AnchorPoint: "top" 688 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -899 0 m 1,0,-1 - 899 799 l 1,1,-1 - 573 799 l 1,2,-1 - 573 260 l 2,3,4 - 572 56 572 56 376 -4 c 0,5,6 - 324 -20 324 -20 268 -20 c 0,7,8 - 138 -20 138 -20 61 72 c 1,9,-1 - 190 133 l 1,10,11 - 226 82 226 82 292.5 82 c 128,-1,12 - 359 82 359 82 384.5 140.5 c 128,-1,13 - 410 199 410 199 410 328 c 2,14,-1 - 410 901 l 1,15,-1 - 1063 901 l 1,16,-1 - 1063 0 l 1,17,-1 - 899 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10078 -Encoding: 1084 1084 452 -Width: 1177 -VWidth: 0 -Flags: W -HStem: 0 43G<123 287 893 1057> 860 41G<123 308 872 1057> -VStem: 123 164<0 614> 893 164<0 614> -AnchorPoint: "top" 596 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -893 614 m 1,0,-1 - 590 25 l 1,1,-1 - 287 614 l 1,2,-1 - 287 0 l 1,3,-1 - 123 0 l 1,4,-1 - 123 901 l 1,5,-1 - 287 901 l 1,6,-1 - 590 311 l 1,7,-1 - 893 901 l 1,8,-1 - 1057 901 l 1,9,-1 - 1057 0 l 1,10,-1 - 893 0 l 1,11,-1 - 893 614 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10079 -Encoding: 1085 1085 453 -Width: 1054 -VWidth: 0 -Flags: W -HStem: 0 43G<123 287 770 934> 440 102<287 770> 860 41G<123 287 770 934> -VStem: 123 164<0 440 543 901> 770 164<0 440 543 901> -AnchorPoint: "top" 535 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 287 901 l 1,1,-1 - 287 543 l 1,2,-1 - 770 543 l 1,3,-1 - 770 901 l 1,4,-1 - 934 901 l 1,5,-1 - 934 0 l 1,6,-1 - 770 0 l 1,7,-1 - 770 440 l 1,8,-1 - 287 440 l 1,9,-1 - 287 0 l 1,10,-1 - 123 0 l 1,11,-1 - 123 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10081 -Encoding: 1087 1087 454 -Width: 1054 -VWidth: 0 -Flags: W -HStem: 0 43G<123 287 770 934> 799 102<287 770> -VStem: 123 164<0 799> 770 164<0 799> -AnchorPoint: "top" 535 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -934 901 m 1,0,-1 - 934 0 l 1,1,-1 - 770 0 l 1,2,-1 - 770 799 l 1,3,-1 - 287 799 l 1,4,-1 - 287 0 l 1,5,-1 - 123 0 l 1,6,-1 - 123 901 l 1,7,-1 - 934 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10084 -Encoding: 1090 1090 455 -Width: 937 -VWidth: 0 -Flags: W -HStem: 0 43G<391 555> 799 102<53 391 555 893> -VStem: 391 164<0 799> -AnchorPoint: "top" 477 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -555 799 m 1,0,-1 - 555 0 l 1,1,-1 - 391 0 l 1,2,-1 - 391 799 l 1,3,-1 - 53 799 l 1,4,-1 - 53 901 l 1,5,-1 - 893 901 l 1,6,-1 - 893 799 l 1,7,-1 - 555 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10085 -Encoding: 1091 1091 456 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 860 41<45 209 685 864> -AnchorPoint: "top" 477 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 24 121 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10086 -Encoding: 1092 1092 457 -Width: 1495 -VWidth: 0 -Flags: W -HStem: -16 102<352 587 918 1156> 823 102<333 566 918 1174> 1311 41G<668 831> -VStem: 90 164<201 735> 668 164<-410 59 183 699 866 1352> 1245 164<220 734> -CounterMasks: 1 1c -AnchorPoint: "top" 748 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -612 722 m 128,-1,1 - 556 823 556 823 453 823 c 0,2,3 - 451 823 l 0,4,5 - 283 823 283 823 260 604 c 0,6,7 - 254 544 254 544 254 455 c 0,8,9 - 254 86 254 86 473 86 c 0,10,11 - 559 86 559 86 601 146 c 0,12,13 - 643 205 643 205 653 271 c 0,14,15 - 668 371 668 371 668 496 c 128,-1,0 - 668 621 668 621 612 722 c 128,-1,1 -668 -410 m 1,16,-1 - 668 59 l 1,17,18 - 571 -16 571 -16 460.5 -16 c 128,-1,19 - 350 -16 350 -16 280 21 c 0,20,21 - 210 58 210 58 170 124 c 0,22,23 - 90 255 90 255 90 455 c 0,24,25 - 90 926 90 926 422 926 c 0,26,27 - 573 926 573 926 668 866 c 1,28,-1 - 668 1352 l 1,29,-1 - 831 1352 l 1,30,-1 - 831 866 l 1,31,32 - 884 900 884 900 929.5 913 c 128,-1,33 - 975 926 975 926 1047 926 c 0,34,35 - 1236 926 1236 926 1322 810 c 0,36,37 - 1408 695 1408 695 1409 451 c 0,38,39 - 1409 256 1409 256 1314 124 c 0,40,41 - 1214 -16 1214 -16 1026 -16 c 0,42,43 - 961 -16 961 -16 923 1 c 128,-1,44 - 885 18 885 18 831 59 c 1,45,-1 - 831 -410 l 1,46,-1 - 668 -410 l 1,16,-1 -832.5 552 m 128,-1,48 - 831 520 831 520 831 473 c 128,-1,49 - 831 426 831 426 832 393.5 c 128,-1,50 - 833 361 833 361 838 316.5 c 128,-1,51 - 843 272 843 272 851.5 242.5 c 128,-1,52 - 860 213 860 213 877 180.5 c 128,-1,53 - 894 148 894 148 918 130 c 0,54,55 - 996 90 996 90 1040 86 c 1,56,57 - 1108 86 1108 86 1146 118.5 c 128,-1,58 - 1184 151 1184 151 1205 206 c 0,59,60 - 1245 311 1245 311 1245 455 c 0,61,62 - 1245 823 1245 823 1077 823 c 0,63,64 - 937 823 937 823 884 743 c 0,65,66 - 849 691 849 691 841.5 637.5 c 128,-1,47 - 834 584 834 584 832.5 552 c 128,-1,48 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10088 -Encoding: 1094 1094 458 -Width: 1114 -VWidth: 0 -Flags: W -HStem: 0 102<287 729> 860 41G<123 287 729 893> -VStem: 123 164<102 901> 729 164<102 901> 926 98<-315 -38> -AnchorPoint: "top" 516 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -926 -315 m 1,0,1 - 926 -94 926 -94 860 0 c 5,2,-1 - 123 0 l 1,3,-1 - 123 901 l 1,4,-1 - 287 901 l 1,5,-1 - 287 102 l 1,6,-1 - 729 102 l 1,7,-1 - 729 901 l 1,8,-1 - 893 901 l 1,9,-1 - 893 102 l 1,10,-1 - 1024 102 l 1,11,-1 - 1024 -315 l 1,12,-1 - 926 -315 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10089 -Encoding: 1095 1095 459 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 43G<657 821> 313 102<332 610> 860 41G<82 246 657 821> -VStem: 82 164<531 901> 657 164<0 365 461 901> -AnchorPoint: "top" 457 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -657 512 m 1,0,-1 - 657 901 l 1,1,-1 - 821 901 l 1,2,-1 - 821 0 l 1,3,-1 - 657 0 l 1,4,-1 - 657 365 l 1,5,6 - 558 313 558 313 464.5 313 c 128,-1,7 - 371 313 371 313 320 324 c 128,-1,8 - 269 335 269 335 230.5 355.5 c 128,-1,9 - 192 376 192 376 166 413 c 128,-1,10 - 140 450 140 450 123.5 493 c 128,-1,11 - 107 536 107 536 98 602 c 0,12,13 - 82 718 82 718 82 901 c 1,14,-1 - 246 901 l 1,15,16 - 246 538 246 538 329 461 c 0,17,18 - 359 433 359 433 390 424.5 c 128,-1,19 - 421 416 421 416 469 416 c 0,20,21 - 594 416 594 416 657 512 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10090 -Encoding: 1096 1096 460 -Width: 1361 -VWidth: 0 -Flags: W -HStem: 0 102<287 600 764 1077> 860 41G<123 287 600 764 1077 1241> -VStem: 123 164<102 901> 600 164<102 901> 1077 164<102 901> -CounterMasks: 1 38 -AnchorPoint: "top" 684 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1241 901 m 1,0,-1 - 1241 0 l 1,1,-1 - 123 0 l 1,2,-1 - 123 901 l 1,3,-1 - 287 901 l 1,4,-1 - 287 102 l 1,5,-1 - 600 102 l 1,6,-1 - 600 901 l 1,7,-1 - 764 901 l 1,8,-1 - 764 102 l 1,9,-1 - 1077 102 l 1,10,-1 - 1077 901 l 1,11,-1 - 1241 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10091 -Encoding: 1097 1097 461 -Width: 1462 -VWidth: 0 -Flags: W -HStem: 0 102<287 600 764 1077> 860 41G<123 287 600 764 1077 1241> -VStem: 123 164<102 901> 600 164<102 901> 1077 164<102 901> 1274 98<-315 -38> -AnchorPoint: "top" 684 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1274 -315 m 1,0,1 - 1274 -94 1274 -94 1208 0 c 5,2,-1 - 123 0 l 1,3,-1 - 123 901 l 1,4,-1 - 287 901 l 1,5,-1 - 287 102 l 1,6,-1 - 600 102 l 1,7,-1 - 600 901 l 1,8,-1 - 764 901 l 1,9,-1 - 764 102 l 1,10,-1 - 1077 102 l 1,11,-1 - 1077 901 l 1,12,-1 - 1241 901 l 1,13,-1 - 1241 102 l 1,14,-1 - 1372 102 l 1,15,-1 - 1372 -315 l 1,16,-1 - 1274 -315 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10092 -Encoding: 1098 1098 462 -Width: 1128 -VWidth: 0 -Flags: W -HStem: 0 102<489 846> 440 102<489 843> 799 102<53 326> -VStem: 326 164<102 440 543 799> 899 164<151 385> -AnchorPoint: "top" 414 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1063 264 m 0,0,1 - 1063 159 1063 159 988 86 c 0,2,3 - 900 0 900 0 668 0 c 2,4,-1 - 326 0 l 1,5,-1 - 326 799 l 1,6,-1 - 53 799 l 1,7,-1 - 53 901 l 1,8,-1 - 489 901 l 1,9,-1 - 489 543 l 1,10,-1 - 664 543 l 2,11,12 - 877 543 877 543 970 478 c 128,-1,13 - 1063 413 1063 413 1063 264 c 0,0,1 -489 440 m 1,14,-1 - 489 102 l 1,15,-1 - 709 102 l 2,16,17 - 803 102 803 102 851 145 c 128,-1,18 - 899 188 899 188 899 266 c 128,-1,19 - 899 344 899 344 849 392 c 128,-1,20 - 799 440 799 440 688 440 c 2,21,-1 - 489 440 l 1,14,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10093 -Encoding: 1099 1099 463 -Width: 1226 -VWidth: 0 -Flags: W -HStem: 0 43<942 1106> 0 102<287 643> 440 102<287 640> 860 41<123 287 942 1106> -VStem: 123 164<102 440 543 901> 696 164<151 385> 942 164<0 901> -AnchorPoint: "top" 616 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 112 305 N 1 0 0 1 819 0 2 -Refer: 464 1100 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10094 -Encoding: 1100 1100 464 -Width: 925 -VWidth: 0 -Flags: W -HStem: 0 102<287 643> 440 102<287 640> 860 41G<123 287> -VStem: 123 164<102 440 543 901> 696 164<151 385> -AnchorPoint: "top" 438 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -287 440 m 1,0,-1 - 287 102 l 1,1,-1 - 506 102 l 2,2,3 - 600 102 600 102 648 145 c 128,-1,4 - 696 188 696 188 696 266 c 128,-1,5 - 696 344 696 344 646 392 c 128,-1,6 - 596 440 596 440 485 440 c 2,7,-1 - 287 440 l 1,0,-1 -860 264 m 0,8,9 - 860 159 860 159 785 86 c 0,10,11 - 697 0 697 0 465 0 c 2,12,-1 - 123 0 l 1,13,-1 - 123 901 l 1,14,-1 - 287 901 l 1,15,-1 - 287 543 l 1,16,-1 - 461 543 l 2,17,18 - 674 543 674 543 767 478 c 128,-1,19 - 860 413 860 413 860 264 c 0,8,9 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10095 -Encoding: 1101 1101 465 -Width: 989 -VWidth: 0 -Flags: W -HStem: -20 102<258 567> 430 102<358 733> 819 102<301 598> -VStem: 739 164<270 430 532 652> -AnchorPoint: "top" 461 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -84 709 m 1,0,1 - 186 922 186 922 451 922 c 0,2,3 - 662 922 662 922 782.5 795 c 128,-1,4 - 903 668 903 668 903 448.5 c 128,-1,5 - 903 229 903 229 779.5 104.5 c 128,-1,6 - 656 -20 656 -20 410 -20 c 0,7,8 - 292 -20 292 -20 210.5 26 c 128,-1,9 - 129 72 129 72 61 158 c 1,10,-1 - 184 205 l 1,11,12 - 223 142 223 142 279 112 c 128,-1,13 - 335 82 335 82 410.5 82 c 128,-1,14 - 486 82 486 82 536.5 107 c 128,-1,15 - 587 132 587 132 631 175.5 c 128,-1,16 - 675 219 675 219 705 286.5 c 128,-1,17 - 735 354 735 354 739 430 c 1,18,-1 - 358 430 l 1,19,-1 - 358 532 l 1,20,-1 - 733 532 l 1,21,22 - 712 660 712 660 637.5 739.5 c 128,-1,23 - 563 819 563 819 481 819 c 0,24,25 - 361 819 361 819 301.5 777.5 c 128,-1,26 - 242 736 242 736 217 641 c 1,27,-1 - 84 709 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10096 -Encoding: 1102 1102 466 -Width: 1308 -VWidth: 0 -Flags: W -HStem: -20 102<688 942> 0 43G<123 287> 430 102<287 403> 819 102<700 940> 860 41G<123 287> -VStem: 123 164<0 430 532 901> 403 164<224 430 532 657> 1059 164<223 678> -AnchorPoint: "top" 494 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 287 901 l 1,1,-1 - 287 532 l 1,2,-1 - 410 532 l 1,3,4 - 433 708 433 708 543 815 c 128,-1,5 - 653 922 653 922 795 922 c 0,6,7 - 993 922 993 922 1108 801.5 c 128,-1,8 - 1223 681 1223 681 1223 450 c 128,-1,9 - 1223 219 1223 219 1110.5 99.5 c 128,-1,10 - 998 -20 998 -20 802 -20 c 128,-1,11 - 606 -20 606 -20 507 99 c 128,-1,12 - 408 218 408 218 403 430 c 1,13,-1 - 287 430 l 1,14,-1 - 287 0 l 1,15,-1 - 123 0 l 1,16,-1 - 123 901 l 1,0,-1 -1059 451 m 128,-1,18 - 1059 614 1059 614 994 716.5 c 128,-1,19 - 929 819 929 819 824 819 c 128,-1,20 - 719 819 719 819 643 717 c 0,21,22 - 567 614 567 614 567 446 c 128,-1,23 - 567 278 567 278 633 180 c 0,24,25 - 700 82 700 82 814 82 c 128,-1,26 - 928 82 928 82 993.5 185 c 128,-1,17 - 1059 288 1059 288 1059 451 c 128,-1,18 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10097 -Encoding: 1103 1103 467 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 102<70 155> 358 102<431 686> 799 102<339 686> -VStem: 113 164<528 739> 686 164<0 358 461 799> -AnchorPoint: "top" 535 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -113 637 m 0,0,1 - 113 736 113 736 205 816 c 0,2,3 - 302 901 302 901 473 901 c 0,4,-1 - 477 901 l 2,5,-1 - 850 901 l 1,6,-1 - 850 0 l 1,7,-1 - 686 0 l 1,8,-1 - 686 358 l 1,9,-1 - 541 358 l 2,10,11 - 447 358 447 358 411 287 c 0,12,13 - 395 255 395 255 382 217 c 128,-1,14 - 369 179 369 179 349.5 141 c 128,-1,15 - 330 103 330 103 300 71 c 0,16,17 - 233 0 233 0 70 0 c 1,18,-1 - 70 102 l 1,19,20 - 120 102 120 102 151 132 c 0,21,22 - 182 164 182 164 196 204 c 0,23,24 - 238 331 238 331 299 385 c 1,25,26 - 113 450 113 450 113 637 c 0,0,1 -686 461 m 1,27,-1 - 686 799 l 1,28,-1 - 498 799 l 2,29,30 - 400 799 400 799 338 754.5 c 128,-1,31 - 276 710 276 710 276 635 c 128,-1,32 - 276 560 276 560 340 510.5 c 128,-1,33 - 404 461 404 461 518 461 c 2,34,-1 - 686 461 l 1,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10099 -Encoding: 1106 1106 468 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -348 102<395 725> 0 43G<147 311> 819 102<385 697> 1085 102<66 147 311 487> 1311 41G<147 311> -VStem: 147 164<0 756 870 1085 1188 1352> 784 164<-181 717> -LayerCount: 2 -Fore -SplineSet -948 160 m 2,0,1 - 948 -54 948 -54 925 -134 c 128,-1,2 - 902 -214 902 -214 874 -248.5 c 128,-1,3 - 846 -283 846 -283 798 -307 c 0,4,5 - 715 -348 715 -348 548 -348 c 128,-1,6 - 381 -348 381 -348 205 -256 c 1,7,-1 - 307 -150 l 1,8,9 - 444 -246 444 -246 559 -246 c 0,10,11 - 644 -246 644 -246 676.5 -231 c 128,-1,12 - 709 -216 709 -216 725 -203.5 c 128,-1,13 - 741 -191 741 -191 752 -166 c 128,-1,14 - 763 -141 763 -141 769.5 -118.5 c 128,-1,15 - 776 -96 776 -96 779 -55 c 0,16,17 - 784 13 784 13 784 115 c 2,18,-1 - 784 467 l 2,19,20 - 784 677 784 677 720 751 c 0,21,22 - 662 819 662 819 542 819 c 128,-1,23 - 422 819 422 819 311 723 c 1,24,-1 - 311 0 l 1,25,-1 - 147 0 l 1,26,-1 - 147 1085 l 1,27,-1 - 66 1085 l 1,28,-1 - 66 1188 l 1,29,-1 - 147 1188 l 1,30,-1 - 147 1352 l 1,31,-1 - 311 1352 l 1,32,-1 - 311 1188 l 1,33,-1 - 487 1188 l 1,34,-1 - 487 1085 l 1,35,-1 - 311 1085 l 1,36,-1 - 311 870 l 1,37,38 - 410 922 410 922 520 922 c 0,39,40 - 736 922 736 922 842 816 c 128,-1,41 - 948 710 948 710 948 492 c 2,42,-1 - 948 160 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10100 -Encoding: 1107 1107 469 -Width: 768 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 799 102<287 715> 1071 387 -VStem: 123 164<0 799> 313 350 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1010 -184 2 -Refer: 445 1075 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10101 -Encoding: 1108 1108 470 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<421 733> 430 102<260 657> 819 102<404 689> -VStem: 90 164<256 430 532 645> -AnchorPoint: "top" 532 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -932 158 m 1,0,1 - 791 -20 791 -20 553 -20 c 0,2,3 - 351 -20 351 -20 220.5 109.5 c 128,-1,4 - 90 239 90 239 90 451 c 0,5,6 - 90 555 90 555 127 645 c 0,7,8 - 164 734 164 734 224 794 c 0,9,10 - 353 922 353 922 503 922 c 0,11,12 - 805 922 805 922 905 711 c 1,13,-1 - 772 643 l 1,14,15 - 725 819 725 819 543 819 c 0,16,17 - 441 819 441 819 361 741 c 128,-1,18 - 281 663 281 663 260 532 c 1,19,-1 - 657 532 l 1,20,-1 - 657 430 l 1,21,-1 - 254 430 l 1,22,23 - 260 271 260 271 351 176.5 c 128,-1,24 - 442 82 442 82 587.5 82 c 128,-1,25 - 733 82 733 82 809 205 c 1,26,-1 - 932 158 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10106 -Encoding: 1113 1113 471 -Width: 1499 -VWidth: 0 -Flags: W -HStem: -20 102<155 376> 0 102<922 1216> 440 102<922 1214> 799 102<573 758> -VStem: 410 164<111 799> 758 164<102 440 543 799> 1270 164<151 385> -AnchorPoint: "top" 668 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1434 264 m 4,0,1 - 1434 159 1434 159 1358 86 c 0,2,3 - 1269 0 1269 0 1038 0 c 2,4,-1 - 758 0 l 1,5,-1 - 758 799 l 1,6,-1 - 573 799 l 1,7,-1 - 573 260 l 2,8,9 - 572 56 572 56 376 -4 c 0,10,11 - 324 -20 324 -20 268 -20 c 0,12,13 - 138 -20 138 -20 61 72 c 1,14,-1 - 190 133 l 1,15,16 - 226 82 226 82 292.5 82 c 128,-1,17 - 359 82 359 82 384.5 140.5 c 128,-1,18 - 410 199 410 199 410 328 c 2,19,-1 - 410 901 l 1,20,-1 - 922 901 l 1,21,-1 - 922 543 l 1,22,-1 - 1034 543 l 2,23,24 - 1247 543 1247 543 1340.5 478 c 128,-1,25 - 1434 413 1434 413 1434 264 c 4,0,1 -922 102 m 5,26,-1 - 1079 102 l 2,27,28 - 1173 102 1173 102 1221.5 145 c 128,-1,29 - 1270 188 1270 188 1270 266 c 128,-1,30 - 1270 344 1270 344 1220 392 c 128,-1,31 - 1170 440 1170 440 1059 440 c 2,32,-1 - 922 440 l 1,33,-1 - 922 102 l 5,26,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10107 -Encoding: 1114 1114 472 -Width: 1429 -VWidth: 0 -Flags: W -HStem: 0 102<852 1147> 440 102<287 688 852 1144> 860 41G<123 287 688 852> -VStem: 123 164<0 440 543 901> 688 164<102 440 543 901> 1200 164<151 385> -AnchorPoint: "top" 494 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 287 901 l 1,1,-1 - 287 543 l 1,2,-1 - 688 543 l 1,3,-1 - 688 901 l 1,4,-1 - 852 901 l 1,5,-1 - 852 543 l 1,6,-1 - 965 543 l 2,7,8 - 1178 543 1178 543 1271 478 c 128,-1,9 - 1364 413 1364 413 1364 264 c 0,10,11 - 1364 159 1364 159 1289 86 c 0,12,13 - 1201 0 1201 0 969 0 c 2,14,-1 - 688 0 l 1,15,-1 - 688 440 l 1,16,-1 - 287 440 l 1,17,-1 - 287 0 l 1,18,-1 - 123 0 l 1,19,-1 - 123 901 l 1,0,-1 -852 440 m 1,20,-1 - 852 102 l 1,21,-1 - 1010 102 l 2,22,23 - 1104 102 1104 102 1152 145 c 128,-1,24 - 1200 188 1200 188 1200 266 c 128,-1,25 - 1200 344 1200 344 1150 392 c 128,-1,26 - 1100 440 1100 440 989 440 c 2,27,-1 - 852 440 l 1,20,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10108 -Encoding: 1115 1115 473 -Width: 1087 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 43G<147 311 784 948> 819 102<385 697> 1085 102<66 147 311 487> 1311 41G<147 311> -VStem: 147 164<0 756 870 1085 1188 1352> 784 164<0 717> -LayerCount: 2 -Fore -SplineSet -311 723 m 1,0,-1 - 311 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 1085 l 1,3,-1 - 66 1085 l 1,4,-1 - 66 1188 l 1,5,-1 - 147 1188 l 1,6,-1 - 147 1352 l 1,7,-1 - 311 1352 l 1,8,-1 - 311 1188 l 1,9,-1 - 487 1188 l 1,10,-1 - 487 1085 l 1,11,-1 - 311 1085 l 1,12,-1 - 311 870 l 1,13,14 - 410 922 410 922 520 922 c 0,15,16 - 736 922 736 922 842 816 c 128,-1,17 - 948 710 948 710 948 492 c 2,18,-1 - 948 0 l 1,19,-1 - 784 0 l 1,20,-1 - 784 467 l 2,21,22 - 784 677 784 677 720 751 c 0,23,24 - 662 819 662 819 542 819 c 128,-1,25 - 422 819 422 819 311 723 c 1,0,-1 -EndSplineSet -EndChar - -StartChar: afii10109 -Encoding: 1116 1116 474 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 705 913> 860 41<147 311 652 877> 1071 387 -VStem: 147 164<0 268 477 901> 379 350 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1075 -184 2 -Refer: 401 1082 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni045D -Encoding: 1117 1117 475 -Width: 1054 -VWidth: 0 -Flags: W -HStem: 0 43<123 316 770 934> 860 41<123 287 741 934> 1071 387 -VStem: 123 164<227 901> 293 350 770 164<0 668> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 989 -184 2 -Refer: 449 1080 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10110 -Encoding: 1118 1118 476 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 860 41<45 209 685 864> 1085 117<291 610> -VStem: 213 76<1208 1293> 612 76<1208 1293> -LayerCount: 2 -Fore -Refer: 1101 57420 S 1 0 0 1 1038 -184 2 -Refer: 456 1091 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10193 -Encoding: 1119 1119 477 -Width: 1013 -VWidth: 0 -Flags: W -HStem: 0 102<287 422 607 729> 860 41G<123 287 729 893> -VStem: 123 164<102 901> 465 98<-315 -38> 729 164<102 901> -AnchorPoint: "top" 516 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -465 -315 m 1,0,1 - 465 -94 465 -94 399 0 c 1,2,-1 - 123 0 l 1,3,-1 - 123 901 l 1,4,-1 - 287 901 l 1,5,-1 - 287 102 l 1,6,-1 - 729 102 l 1,7,-1 - 729 901 l 1,8,-1 - 893 901 l 1,9,-1 - 893 0 l 1,10,-1 - 629 0 l 1,11,12 - 589 -40 589 -40 570 -193 c 0,13,14 - 563 -250 563 -250 563 -315 c 1,15,-1 - 465 -315 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii61352 -Encoding: 8470 8470 478 -Width: 2086 -VWidth: 0 -Flags: W -HStem: -20 102<105 324> 0 43G<1218 1421> 348 61<1518 1995> 516 61<1676 1835> 938 61<1686 1835> 1352 102<1456 1675> 1393 41G<358 560> -VStem: 358 174<112 1137> 1247 174<295 1322> 1530 94<616 890> 1890 90<620 896> -LayerCount: 2 -Fore -SplineSet -1518 410 m 1,0,-1 - 1995 410 l 1,1,-1 - 1995 348 l 1,2,-1 - 1518 348 l 1,3,-1 - 1518 410 l 1,0,-1 -1890 758 m 128,-1,5 - 1890 837 1890 837 1853.5 887.5 c 128,-1,6 - 1817 938 1817 938 1761 938 c 128,-1,7 - 1705 938 1705 938 1664.5 888.5 c 128,-1,8 - 1624 839 1624 839 1624 756 c 128,-1,9 - 1624 673 1624 673 1659 625.5 c 128,-1,10 - 1694 578 1694 578 1755.5 578 c 128,-1,11 - 1817 578 1817 578 1853.5 628.5 c 128,-1,4 - 1890 679 1890 679 1890 758 c 128,-1,5 -1916.5 578.5 m 128,-1,13 - 1853 516 1853 516 1749.5 516 c 128,-1,14 - 1646 516 1646 516 1588 581.5 c 128,-1,15 - 1530 647 1530 647 1530 754.5 c 128,-1,16 - 1530 862 1530 862 1597 930.5 c 128,-1,17 - 1664 999 1664 999 1758.5 999 c 128,-1,18 - 1853 999 1853 999 1916.5 937 c 128,-1,19 - 1980 875 1980 875 1980 758 c 128,-1,12 - 1980 641 1980 641 1916.5 578.5 c 128,-1,13 -1421 0 m 1,20,-1 - 1243 0 l 1,21,-1 - 532 1137 l 1,22,-1 - 532 262 l 2,23,24 - 532 56 532 56 336 -4 c 0,25,26 - 284 -20 284 -20 224.5 -20 c 128,-1,27 - 165 -20 165 -20 106.5 3.5 c 128,-1,28 - 48 27 48 27 10 72 c 1,29,-1 - 139 133 l 1,30,31 - 175 82 175 82 241.5 82 c 128,-1,32 - 308 82 308 82 333 140.5 c 128,-1,33 - 358 199 358 199 358 328 c 2,34,-1 - 358 1434 l 1,35,-1 - 535 1434 l 1,36,-1 - 1247 295 l 1,37,-1 - 1247 1171 l 2,38,39 - 1247 1338 1247 1338 1383 1413 c 0,40,41 - 1458 1454 1458 1454 1536 1454 c 0,42,43 - 1692 1454 1692 1454 1769 1362 c 1,44,-1 - 1640 1300 l 1,45,46 - 1603 1352 1603 1352 1537.5 1352 c 128,-1,47 - 1472 1352 1472 1352 1446.5 1293.5 c 128,-1,48 - 1421 1235 1421 1235 1421 1106 c 2,49,-1 - 1421 0 l 1,20,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10050 -Encoding: 1168 1168 479 -Width: 1038 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348> 1331 274<866 1001> 1331 102<348 866> -VStem: 174 174<0 1331> 866 135<1434 1606> -AnchorPoint: "top" 604 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 866 1434 l 1,3,-1 - 866 1606 l 1,4,-1 - 1001 1606 l 1,5,-1 - 1001 1331 l 1,6,-1 - 348 1331 l 1,7,-1 - 348 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10098 -Encoding: 1169 1169 480 -Width: 768 -VWidth: 0 -Flags: W -HStem: 0 43G<123 287> 799 287<580 715> 799 102<287 580> -VStem: 123 164<0 799> 580 135<901 1085> -AnchorPoint: "top" 422 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -287 0 m 1,0,-1 - 123 0 l 1,1,-1 - 123 901 l 1,2,-1 - 580 901 l 1,3,-1 - 580 1085 l 1,4,-1 - 715 1085 l 1,5,-1 - 715 799 l 1,6,-1 - 287 799 l 1,7,-1 - 287 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: hookabovecomb -Encoding: 777 777 481 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1438 61<-673 -546> -VStem: -614 51<1227 1292> -543 115<1334 1437> -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --543 1391 m 0,0,1 - -543 1438 -543 1438 -591.5 1438 c 128,-1,2 - -640 1438 -640 1438 -680 1421 c 1,3,-1 - -680 1464 l 1,4,5 - -624 1499 -624 1499 -557.5 1499 c 128,-1,6 - -491 1499 -491 1499 -459.5 1467.5 c 128,-1,7 - -428 1436 -428 1436 -428 1404.5 c 128,-1,8 - -428 1373 -428 1373 -442 1356.5 c 128,-1,9 - -456 1340 -456 1340 -475.5 1331 c 128,-1,10 - -495 1322 -495 1322 -515 1312 c 0,11,12 - -563 1287 -563 1287 -563 1227 c 9,13,-1 - -614 1227 l 1,14,15 - -614 1290 -614 1290 -596 1310 c 0,16,17 - -578 1328 -578 1328 -568 1338 c 0,18,19 - -543 1362 -543 1362 -543 1391 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni031B -Encoding: 795 795 482 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1055 43<-213 -149> -VStem: -96 63<1167 1336> -AnchorPoint: "horn" -213 1075 mark 0 -LayerCount: 2 -Fore -SplineSet --94 1475 m 0,0,1 - -33 1474 -33 1474 -33 1352 c 2,2,-1 - -33 1313 l 2,3,4 - -33 1195 -33 1195 -88.5 1125 c 128,-1,5 - -144 1055 -144 1055 -213 1055 c 1,6,-1 - -213 1098 l 1,7,8 - -168 1098 -168 1098 -132 1132.5 c 128,-1,9 - -96 1167 -96 1167 -96 1197 c 0,10,11 - -96 1228 -96 1228 -112 1254 c 128,-1,12 - -128 1280 -128 1280 -146 1302 c 0,13,14 - -195 1359 -195 1359 -195 1415 c 0,15,16 - -195 1439 -195 1439 -161.5 1457 c 128,-1,17 - -128 1475 -128 1475 -94 1475 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ohorn -Encoding: 416 416 483 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 874> -VStem: 102 174<441 1012> 1163 174<438 1008> 1333 63<1174 1347> -AnchorPoint: "top" 707 1434 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1259.5 1348.5 m 128,-1,1 - 1235 1387 1235 1387 1235 1418 c 128,-1,2 - 1235 1449 1235 1449 1268 1467 c 128,-1,3 - 1301 1485 1301 1485 1329 1485 c 128,-1,4 - 1357 1485 1357 1485 1371 1470.5 c 128,-1,5 - 1385 1456 1385 1456 1390 1427 c 0,6,7 - 1397 1386 1397 1386 1397 1307.5 c 128,-1,8 - 1397 1229 1397 1229 1361.5 1165.5 c 128,-1,9 - 1326 1102 1326 1102 1272 1077 c 1,10,11 - 1337 929 1337 929 1337 730 c 128,-1,12 - 1337 531 1337 531 1286 387 c 0,13,14 - 1234 244 1234 244 1146 156 c 0,15,16 - 968 -20 968 -20 705 -20 c 1,17,18 - 526 -20 526 -20 375 93 c 0,19,20 - 204 220 204 220 138 444 c 0,21,22 - 102 568 102 568 102 716.5 c 128,-1,23 - 102 865 102 865 136 990 c 0,24,25 - 170 1114 170 1114 228 1198 c 0,26,27 - 289 1286 289 1286 362 1342 c 0,28,29 - 508 1454 508 1454 687 1454 c 128,-1,30 - 866 1454 866 1454 1017 1368 c 128,-1,31 - 1168 1282 1168 1282 1253 1114 c 1,32,33 - 1286 1126 1286 1126 1309.5 1156 c 128,-1,34 - 1333 1186 1333 1186 1333 1214.5 c 128,-1,35 - 1333 1243 1333 1243 1308.5 1276.5 c 128,-1,0 - 1284 1310 1284 1310 1259.5 1348.5 c 128,-1,1 -703 1352 m 0,36,37 - 641 1352 641 1352 583 1328 c 128,-1,38 - 525 1304 525 1304 470 1252 c 0,39,40 - 416 1200 416 1200 372 1127 c 0,41,42 - 276 967 276 967 276 717 c 0,43,44 - 276 588 276 588 306 478.5 c 128,-1,45 - 336 369 336 369 384 298 c 0,46,47 - 432 226 432 226 491 176 c 0,48,49 - 603 82 603 82 717 82 c 0,50,51 - 849 82 849 82 961 182 c 0,52,53 - 1163 363 1163 363 1163 717 c 0,54,55 - 1163 1087 1163 1087 954 1258 c 0,56,57 - 839 1352 839 1352 703 1352 c 0,36,37 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ohorn -Encoding: 417 417 484 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> -VStem: 90 164<231 648> 807 164<241 645> 997 63<724 896> -AnchorPoint: "top" 535 1004 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -914.5 914 m 128,-1,1 - 899 945 899 945 899 972 c 128,-1,2 - 899 999 899 999 932 1016.5 c 128,-1,3 - 965 1034 965 1034 993 1034 c 128,-1,4 - 1021 1034 1021 1034 1035 1019.5 c 128,-1,5 - 1049 1005 1049 1005 1054 976 c 0,6,7 - 1061 935 1061 935 1061 859 c 128,-1,8 - 1061 783 1061 783 1028 720.5 c 128,-1,9 - 995 658 995 658 946 631 c 1,10,11 - 971 548 971 548 971 451 c 0,12,13 - 971 222 971 222 845 101 c 128,-1,14 - 719 -20 719 -20 516.5 -20 c 128,-1,15 - 314 -20 314 -20 202 107 c 128,-1,16 - 90 234 90 234 90 451 c 0,17,18 - 90 555 90 555 127 645 c 0,19,20 - 164 734 164 734 224 794 c 0,21,22 - 353 922 353 922 507 922 c 128,-1,23 - 661 922 661 922 770.5 858 c 128,-1,24 - 880 794 880 794 932 670 c 1,25,26 - 961 685 961 685 979 712 c 128,-1,27 - 997 739 997 739 997 763 c 128,-1,28 - 997 787 997 787 981.5 813.5 c 128,-1,29 - 966 840 966 840 948 861.5 c 128,-1,0 - 930 883 930 883 914.5 914 c 128,-1,1 -807 451 m 128,-1,31 - 807 613 807 613 733 716 c 128,-1,32 - 659 819 659 819 541 819 c 128,-1,33 - 423 819 423 819 338.5 717 c 128,-1,34 - 254 615 254 615 254 446.5 c 128,-1,35 - 254 278 254 278 327 180 c 128,-1,36 - 400 82 400 82 529.5 82 c 128,-1,37 - 659 82 659 82 733 185.5 c 128,-1,30 - 807 289 807 289 807 451 c 128,-1,31 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Uhorn -Encoding: 431 431 485 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1065 43<1247 1372> 1393 41G<156 330 1073 1247> -VStem: 156 174<328 1434> 1073 174<328 1065 1108 1434> 1425 63<1177 1347> -AnchorPoint: "top" 721 1434 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "cedilla" 692 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1073 1434 m 1,0,-1 - 1247 1434 l 1,1,-1 - 1247 1108 l 1,2,-1 - 1309 1108 l 2,3,4 - 1354 1108 1354 1108 1389.5 1142.5 c 128,-1,5 - 1425 1177 1425 1177 1425 1210 c 128,-1,6 - 1425 1243 1425 1243 1400.5 1276.5 c 128,-1,7 - 1376 1310 1376 1310 1351.5 1348.5 c 128,-1,8 - 1327 1387 1327 1387 1327 1418 c 128,-1,9 - 1327 1449 1327 1449 1360 1467 c 128,-1,10 - 1393 1485 1393 1485 1421 1485 c 128,-1,11 - 1449 1485 1449 1485 1463 1470.5 c 128,-1,12 - 1477 1456 1477 1456 1482 1427 c 0,13,14 - 1489 1387 1489 1387 1489 1356 c 2,15,-1 - 1489 1323 l 2,16,17 - 1489 1205 1489 1205 1433.5 1135 c 128,-1,18 - 1378 1065 1378 1065 1309 1065 c 2,19,-1 - 1247 1065 l 1,20,-1 - 1247 610 l 2,21,22 - 1247 190 1247 190 1017 55 c 0,23,24 - 890 -20 890 -20 696 -20 c 0,25,26 - 538 -20 538 -20 412 55 c 0,27,28 - 338 99 338 99 283 166.5 c 128,-1,29 - 228 234 228 234 192 348.5 c 128,-1,30 - 156 463 156 463 156 610 c 2,31,-1 - 156 1434 l 1,32,-1 - 330 1434 l 1,33,-1 - 330 610 l 2,34,35 - 330 203 330 203 574 108 c 0,36,37 - 641 82 641 82 700.5 82 c 128,-1,38 - 760 82 760 82 807 95 c 128,-1,39 - 854 108 854 108 904 144.5 c 128,-1,40 - 954 181 954 181 990 238 c 0,41,42 - 1073 369 1073 369 1073 610 c 2,43,-1 - 1073 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uhorn -Encoding: 432 432 486 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43G<780 944> 614 43<944 1067> 860 41G<143 307 780 944> -VStem: 143 164<204 901> 780 164<0 33 135 614 657 901> 1120 63<726 896> -AnchorPoint: "top" 549 1004 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -780 172 m 1,0,-1 - 780 901 l 1,1,-1 - 944 901 l 1,2,-1 - 944 657 l 1,3,-1 - 1004 657 l 2,4,5 - 1049 657 1049 657 1084.5 692 c 128,-1,6 - 1120 727 1120 727 1120 760 c 128,-1,7 - 1120 793 1120 793 1095.5 826.5 c 128,-1,8 - 1071 860 1071 860 1046.5 898.5 c 128,-1,9 - 1022 937 1022 937 1022 968 c 128,-1,10 - 1022 999 1022 999 1055 1016.5 c 128,-1,11 - 1088 1034 1088 1034 1116 1034 c 128,-1,12 - 1144 1034 1144 1034 1158 1019.5 c 128,-1,13 - 1172 1005 1172 1005 1177 976 c 0,14,15 - 1184 935 1184 935 1184 872 c 0,16,17 - 1184 754 1184 754 1128.5 684 c 128,-1,18 - 1073 614 1073 614 1004 614 c 2,19,-1 - 944 614 l 1,20,-1 - 944 0 l 1,21,-1 - 780 0 l 1,22,-1 - 780 33 l 1,23,24 - 668 -20 668 -20 541 -20 c 0,25,26 - 329 -20 329 -20 236 84 c 128,-1,27 - 143 188 143 188 143 410 c 2,28,-1 - 143 901 l 1,29,-1 - 307 901 l 1,30,-1 - 307 434 l 2,31,32 - 307 227 307 227 386 150 c 0,33,34 - 456 82 456 82 571.5 82 c 128,-1,35 - 687 82 687 82 780 172 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: dotbelowcomb -Encoding: 803 803 487 -Width: 0 -VWidth: 0 -Flags: W -HStem: -272 150<-666 -516> -VStem: -666 150<-272 -123> -AnchorPoint: "bottom" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --666 -123 m 1,0,-1 - -516 -123 l 1,1,-1 - -516 -272 l 1,2,-1 - -666 -272 l 1,3,-1 - -666 -123 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0324 -Encoding: 804 804 488 -Width: 0 -VWidth: 0 -Flags: W -HStem: -272 178<-815 -651 -528 -365> -VStem: -815 164<-272 -94> -528 164<-272 -94> -AnchorPoint: "bottom" -586 0 mark 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 -141 -1542 2 -Refer: 98 775 N 1 0 0 1 145 -1542 2 -Validated: 1 -EndChar - -StartChar: uni0325 -Encoding: 805 805 489 -Width: 0 -VWidth: 0 -Flags: W -HStem: -393 61<-655 -520> -143 61<-655 -520> -VStem: -743 61<-305 -170> -494 61<-305 -170> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --682 -238 m 128,-1,1 - -682 -276 -682 -276 -654 -304 c 128,-1,2 - -626 -332 -626 -332 -588 -332 c 128,-1,3 - -550 -332 -550 -332 -522 -304 c 128,-1,4 - -494 -276 -494 -276 -494 -238 c 128,-1,5 - -494 -200 -494 -200 -522 -171.5 c 128,-1,6 - -550 -143 -550 -143 -588 -143 c 128,-1,7 - -626 -143 -626 -143 -654 -171.5 c 128,-1,0 - -682 -200 -682 -200 -682 -238 c 128,-1,1 --697.5 -347.5 m 128,-1,9 - -743 -302 -743 -302 -743 -237.5 c 128,-1,10 - -743 -173 -743 -173 -697.5 -127.5 c 128,-1,11 - -652 -82 -652 -82 -588 -82 c 128,-1,12 - -524 -82 -524 -82 -478 -128 c 128,-1,13 - -432 -174 -432 -174 -432 -238 c 128,-1,14 - -432 -302 -432 -302 -477.5 -347.5 c 128,-1,15 - -523 -393 -523 -393 -587.5 -393 c 128,-1,8 - -652 -393 -652 -393 -697.5 -347.5 c 128,-1,9 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032C -Encoding: 812 812 490 -Width: 0 -VWidth: 0 -Flags: W -HStem: -449 387 -VStem: -825 479 -AnchorPoint: "bottom" -586 0 mark 0 -LayerCount: 2 -Fore -SplineSet --586 -449 m 1,0,-1 - -825 -115 l 1,1,-1 - -762 -61 l 1,2,-1 - -586 -242 l 1,3,-1 - -410 -61 l 1,4,-1 - -346 -115 l 1,5,-1 - -586 -449 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032D -Encoding: 813 813 491 -Width: 0 -VWidth: 0 -Flags: W -HStem: -449 387 -VStem: -825 479 -AnchorPoint: "bottom" -586 0 mark 0 -LayerCount: 2 -Fore -SplineSet --586 -61 m 1,0,-1 - -346 -395 l 1,1,-1 - -410 -449 l 1,2,-1 - -586 -268 l 1,3,-1 - -762 -449 l 1,4,-1 - -825 -395 l 1,5,-1 - -586 -61 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032E -Encoding: 814 814 492 -Width: 0 -VWidth: 0 -Flags: W -HStem: -272 117<-710 -466> -VStem: -819 78<-115 -78> -434 78<-115 -78> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --689.5 -126 m 128,-1,1 - -643 -156 -643 -156 -587.5 -156 c 128,-1,2 - -532 -156 -532 -156 -485.5 -126 c 128,-1,3 - -439 -96 -439 -96 -434 -61 c 1,4,-1 - -356 -82 l 1,5,6 - -365 -160 -365 -160 -432.5 -216 c 128,-1,7 - -500 -272 -500 -272 -588 -272 c 128,-1,8 - -676 -272 -676 -272 -743 -216 c 128,-1,9 - -810 -160 -810 -160 -819 -82 c 1,10,-1 - -741 -61 l 1,11,0 - -736 -96 -736 -96 -689.5 -126 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032F -Encoding: 815 815 493 -Width: 0 -VWidth: 0 -Flags: W -HStem: -199 117<-710 -466> -VStem: -819 78<-276 -239> -434 78<-276 -239> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --588 -199 m 128,-1,1 - -644 -199 -644 -199 -690 -228.5 c 128,-1,2 - -736 -258 -736 -258 -741 -293 c 1,3,-1 - -819 -272 l 1,4,5 - -810 -194 -810 -194 -743 -138 c 128,-1,6 - -676 -82 -676 -82 -588 -82 c 128,-1,7 - -500 -82 -500 -82 -432.5 -138 c 128,-1,8 - -365 -194 -365 -194 -356 -272 c 1,9,-1 - -434 -293 l 1,10,11 - -439 -258 -439 -258 -485.5 -228.5 c 128,-1,0 - -532 -199 -532 -199 -588 -199 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0330 -Encoding: 816 816 494 -Width: 0 -VWidth: 0 -Flags: W -HStem: -285 117<-605 -406> -219 117<-790 -591> -VStem: -881 84<-285 -234> -399 84<-153 -102> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --399 -102 m 1,0,-1 - -315 -102 l 1,1,2 - -324 -182 -324 -182 -377 -233.5 c 128,-1,3 - -430 -285 -430 -285 -516 -285 c 0,4,5 - -554 -285 -554 -285 -612.5 -252 c 128,-1,6 - -671 -219 -671 -219 -690 -219 c 0,7,8 - -788 -219 -788 -219 -797 -285 c 1,9,-1 - -881 -285 l 1,10,11 - -872 -205 -872 -205 -819 -153.5 c 128,-1,12 - -766 -102 -766 -102 -680 -102 c 0,13,14 - -642 -102 -642 -102 -583.5 -135 c 128,-1,15 - -525 -168 -525 -168 -506 -168 c 0,16,17 - -408 -168 -408 -168 -399 -102 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0331 -Encoding: 817 817 495 -Width: 0 -VWidth: 0 -Flags: W -HStem: -205 82<-834 -362> -VStem: -834 471<-205 -123> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --834 -123 m 1,0,-1 - -362 -123 l 1,1,-1 - -362 -205 l 1,2,-1 - -834 -205 l 1,3,-1 - -834 -123 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ebreve -Encoding: 276 276 496 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1516 117<492 737> -VStem: 174 174<102 799 901 1331> 383 78<1673 1710> 768 78<1673 1710> -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 614 1743 basechar 0 -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 3 -Refer: 97 774 N 1 0 0 1 1202 246 2 -Validated: 1 -EndChar - -StartChar: ebreve -Encoding: 277 277 497 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1085 117<408 653> -VStem: 90 164<256 451> 299 78<1243 1280> 684 78<1243 1280> -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "top" 530 1294 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 3 -Refer: 97 774 N 1 0 0 1 1118 -184 2 -Validated: 1 -EndChar - -StartChar: Ibreve -Encoding: 300 300 498 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1516 117<140 384> -VStem: 31 78<1673 1710> 172 174<0 1434> 416 78<1673 1710> -AnchorPoint: "horn" 291 1085 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "bottom" 252 0 basechar 0 -AnchorPoint: "ogonek" 236 0 basechar 0 -AnchorPoint: "top" 262 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 3 -Refer: 97 774 N 1 0 0 1 850 246 2 -Validated: 1 -EndChar - -StartChar: ibreve -Encoding: 301 301 499 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1085 117<85 329> -VStem: -25 78<1243 1280> 123 164<0 901> 360 78<1243 1280> -AnchorPoint: "top" 205 1296 basechar 0 -AnchorPoint: "horn" 250 717 basechar 0 -AnchorPoint: "cedilla" 209 0 basechar 0 -AnchorPoint: "bottom" 203 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -LayerCount: 2 -Fore -Refer: 112 305 N 1 0 0 1 0 0 3 -Refer: 97 774 N 1 0 0 1 795 -184 2 -Validated: 1 -EndChar - -StartChar: Obreve -Encoding: 334 334 500 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1516 117<584 829> -VStem: 102 174<441 1012> 475 78<1673 1710> 860 78<1673 1710> 1163 174<438 1009> -AnchorPoint: "cedilla" 700 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "top" 707 1737 basechar 0 -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 3 -Refer: 97 774 N 1 0 0 1 1294 246 2 -Validated: 1 -EndChar - -StartChar: obreve -Encoding: 335 335 501 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1085 117<412 657> -VStem: 90 164<231 648> 303 78<1243 1280> 688 78<1243 1280> 807 164<241 660> -AnchorPoint: "cedilla" 506 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "top" 535 1303 basechar 0 -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 3 -Refer: 97 774 N 1 0 0 1 1122 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EA0 -Encoding: 7840 7840 502 -Width: 1298 -VWidth: 0 -Flags: W -HStem: -272 150<571 721> 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> -VStem: 571 150<-272 -123> -AnchorPoint: "top" 651 1434 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "horn" 819 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1237 0 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EA1 -Encoding: 7841 7841 503 -Width: 974 -VWidth: 0 -Flags: W -HStem: -272 150<397 547> -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> -VStem: 94 164<178 440> 397 150<-272 -123> 694 164<0 16 107 507 606 754> -AnchorPoint: "top" 489 1004 basechar 0 -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1063 0 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EB8 -Encoding: 7864 7864 504 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -272 150<553 702> 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> -VStem: 174 174<102 799 901 1331> 553 150<-272 -123> -AnchorPoint: "top" 614 1434 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "horn" 942 1384 basechar 0 -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1219 0 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EB9 -Encoding: 7865 7865 505 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -272 150<463 612> -20 102<418 733> 451 102<264 770> 819 102<404 661> -VStem: 90 164<256 451> 463 150<-272 -123> -AnchorPoint: "top" 530 1004 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1128 0 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECA -Encoding: 7882 7882 506 -Width: 514 -VWidth: 0 -Flags: W -HStem: -272 150<176 326> 0 43<172 346> 1393 41<172 346> -VStem: 172 174<0 1434> 176 150<-272 -123> -AnchorPoint: "top" 262 1434 basechar 0 -AnchorPoint: "ogonek" 236 0 basechar 0 -AnchorPoint: "bottom" 252 0 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "horn" 291 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 842 0 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECB -Encoding: 7883 7883 507 -Width: 407 -VWidth: 0 -Flags: W -HStem: -272 150<127 276> 0 43<123 287> 860 41<123 287> 1085 164<123 287> -VStem: 123 164<0 901 1085 1249> 127 150<-272 -123> -AnchorPoint: "ogonek" 279 0 basechar 0 -AnchorPoint: "bottom" 203 0 basechar 0 -AnchorPoint: "cedilla" 209 0 basechar 0 -AnchorPoint: "horn" 250 717 basechar 0 -AnchorPoint: "top" 205 1167 basechar 0 -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 793 0 2 -Refer: 8 105 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECC -Encoding: 7884 7884 508 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -272 150<645 795> -20 102<572 877> 1352 102<551 871> -VStem: 102 174<441 1012> 645 150<-272 -123> 1163 174<438 1009> -CounterMasks: 1 1c -AnchorPoint: "top" 707 1434 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1311 0 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECD -Encoding: 7885 7885 509 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -272 150<440 590> -20 102<384 673> 819 102<404 673> -VStem: 90 164<231 648> 440 150<-272 -123> 807 164<241 660> -AnchorPoint: "top" 535 1004 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1106 0 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE2 -Encoding: 7906 7906 510 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -272 150<645 795> -20 102<572 877> 1352 102<551 874> -VStem: 102 174<441 1012> 645 150<-272 -123> 1163 174<438 1008> 1333 63<1174 1347> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1311 0 2 -Refer: 483 416 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE3 -Encoding: 7907 7907 511 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -272 150<432 582> -20 102<384 673> 819 102<404 673> -VStem: 90 164<231 648> 432 150<-272 -123> 807 164<241 645> 997 63<724 896> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1098 0 2 -Refer: 484 417 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE4 -Encoding: 7908 7908 512 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -272 150<645 795> -20 102<539 873> 1393 41<156 330 1073 1247> -VStem: 156 174<328 1434> 645 150<-272 -123> 1073 174<328 1434> -AnchorPoint: "top" 721 1434 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "cedilla" 692 0 basechar 0 -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1311 0 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE5 -Encoding: 7909 7909 513 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -272 150<457 606> -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> -VStem: 143 164<204 901> 457 150<-272 -123> 780 164<0 33 135 901> -AnchorPoint: "top" 549 1004 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1122 0 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF0 -Encoding: 7920 7920 514 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -272 150<625 774> -20 102<539 873> 1065 43<1247 1372> 1393 41<156 330 1073 1247> -VStem: 156 174<328 1434> 625 150<-272 -123> 1073 174<328 1065 1108 1434> 1425 63<1177 1347> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1290 0 2 -Refer: 485 431 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF1 -Encoding: 7921 7921 515 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -270 150<455 604> -20 102<417 723> 0 43<780 944> 614 43<944 1067> 860 41<143 307 780 944> -VStem: 143 164<204 901> 455 150<-270 -121> 780 164<0 33 135 614 657 901> 1120 63<726 896> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1120 2 2 -Refer: 486 432 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF4 -Encoding: 7924 7924 516 -Width: 952 -VWidth: 0 -Flags: W -HStem: -272 150<401 551> 0 43<391 565> 1393 41<23 228 731 936> -VStem: 391 174<0 709> 401 150<-272 -123> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1067 0 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF5 -Encoding: 7925 7925 517 -Width: 880 -VWidth: 0 -Flags: W -HStem: -410 150<526 676> -348 102<164 291> 860 41<45 209 685 864> -VStem: 526 150<-410 -260> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1192 -137 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EA2 -Encoding: 7842 7842 518 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1683 61<567 693> -VStem: 625 51<1473 1538> 696 115<1579 1683> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EA3 -Encoding: 7843 7843 519 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1253 61<405 531> -VStem: 94 164<178 440> 463 51<1042 1108> 535 115<1149 1253> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EBA -Encoding: 7866 7866 520 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1683 61<530 656> -VStem: 174 174<102 799 901 1331> 588 51<1473 1538> 659 115<1579 1683> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EBB -Encoding: 7867 7867 521 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1253 61<446 572> -VStem: 90 164<256 451> 504 51<1042 1108> 575 115<1149 1253> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1118 -184 2 -Refer: 3 101 S 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EBC -Encoding: 7868 7868 522 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1516 117<618 816> 1581 117<433 632> -VStem: 174 174<102 799 901 1331> 342 84<1516 1566> 823 84<1647 1698> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EBD -Encoding: 7869 7869 523 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1085 117<534 732> 1151 117<349 548> -VStem: 90 164<256 451> 258 84<1085 1136> 739 84<1217 1268> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EC8 -Encoding: 7880 7880 524 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1683 61<177 304> -VStem: 172 174<0 1434> 236 51<1473 1538> 307 115<1579 1683> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 850 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EC9 -Encoding: 7881 7881 525 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1253 61<122 249> -VStem: 123 164<0 901> 180 51<1042 1108> 252 115<1149 1253> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 795 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECE -Encoding: 7886 7886 526 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1683 61<622 748> -VStem: 102 174<441 1012> 680 51<1473 1538> 752 115<1579 1683> 1163 174<438 1009> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECF -Encoding: 7887 7887 527 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1253 61<450 576> -VStem: 90 164<231 648> 508 51<1042 1108> 580 115<1149 1253> 807 164<241 660> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EDA -Encoding: 7898 7898 528 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 874> 1501 387 -VStem: 102 174<441 1012> 598 350 1163 174<438 1008> 1333 63<1174 1347> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1294 246 2 -Refer: 483 416 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EDB -Encoding: 7899 7899 529 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1071 387 -VStem: 90 164<231 648> 418 350 807 164<241 645> 997 63<724 896> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1114 -184 2 -Refer: 484 417 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EDC -Encoding: 7900 7900 530 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 874> 1501 387 -VStem: 102 174<441 1012> 465 350 1163 174<438 1008> 1333 63<1174 1347> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1161 246 2 -Refer: 483 416 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EDD -Encoding: 7901 7901 531 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1071 387 -VStem: 90 164<231 648> 285 350 807 164<241 645> 997 63<724 896> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 981 -184 2 -Refer: 484 417 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EDE -Encoding: 7902 7902 532 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 874> 1683 61<622 748> -VStem: 102 174<441 1012> 680 51<1473 1538> 752 115<1579 1683> 1163 174<438 1008> 1333 63<1174 1347> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1294 246 2 -Refer: 483 416 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EDF -Encoding: 7903 7903 533 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1253 61<442 568> -VStem: 90 164<231 648> 500 51<1042 1108> 571 115<1149 1253> 807 164<241 645> 997 63<724 896> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1114 -184 2 -Refer: 484 417 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE0 -Encoding: 7904 7904 534 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 874> 1516 117<710 908> 1581 117<525 724> -VStem: 102 174<441 1012> 434 84<1516 1566> 915 84<1647 1698> 1163 174<438 1008> 1333 63<1174 1347> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1294 246 2 -Refer: 483 416 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE1 -Encoding: 7905 7905 535 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1085 117<529 728> 1151 117<345 544> -VStem: 90 164<231 648> 254 84<1085 1136> 735 84<1217 1268> 807 164<241 645> 997 63<724 896> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1114 -184 2 -Refer: 484 417 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE6 -Encoding: 7910 7910 536 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1683 61<636 763> -VStem: 156 174<328 1434> 694 51<1473 1538> 766 115<1579 1683> 1073 174<328 1434> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE7 -Encoding: 7911 7911 537 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1253 61<464 591> -VStem: 143 164<204 901> 522 51<1042 1108> 594 115<1149 1253> 780 164<0 33 135 901> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE8 -Encoding: 7912 7912 538 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1065 43<1247 1372> 1393 41<156 330 1073 1247> 1501 387 -VStem: 156 174<328 1434> 592 350 1073 174<328 1065 1108 1434> 1425 63<1177 1347> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1288 246 2 -Refer: 485 431 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE9 -Encoding: 7913 7913 539 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 614 43<944 1067> 860 41<143 307 780 944> 1073 387 -VStem: 143 164<204 901> 438 350 780 164<0 33 135 614 657 901> 1120 63<726 896> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1135 -182 2 -Refer: 486 432 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EEA -Encoding: 7914 7914 540 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1065 43<1247 1372> 1393 41<156 330 1073 1247> 1501 387 -VStem: 156 174<328 1434> 459 350 1073 174<328 1065 1108 1434> 1425 63<1177 1347> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1155 246 2 -Refer: 485 431 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EEB -Encoding: 7915 7915 541 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 614 43<944 1067> 860 41<143 307 780 944> 1073 387 -VStem: 143 164<204 901> 305 350 780 164<0 33 135 614 657 901> 1120 63<726 896> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1001 -182 2 -Refer: 486 432 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EEC -Encoding: 7916 7916 542 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1065 43<1247 1372> 1393 41<156 330 1073 1247> 1683 61<616 742> -VStem: 156 174<328 1434> 674 51<1473 1538> 745 115<1579 1683> 1073 174<328 1065 1108 1434> 1425 63<1177 1347> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1288 246 2 -Refer: 485 431 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EED -Encoding: 7917 7917 543 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 614 43<944 1067> 860 41<143 307 780 944> 1255 61<462 589> -VStem: 143 164<204 901> 520 51<1044 1110> 592 115<1151 1255> 780 164<0 33 135 614 657 901> 1120 63<726 896> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1135 -182 2 -Refer: 486 432 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EEE -Encoding: 7918 7918 544 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1065 43<1247 1372> 1393 41<156 330 1073 1247> 1516 117<704 902> 1581 117<519 718> -VStem: 156 174<328 1434> 428 84<1516 1566> 909 84<1647 1698> 1073 174<328 1065 1108 1434> 1425 63<1177 1347> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1288 246 2 -Refer: 485 431 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EEF -Encoding: 7919 7919 545 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 614 43<944 1067> 860 41<143 307 780 944> 1087 117<550 749> 1153 117<365 564> -VStem: 143 164<204 901> 274 84<1087 1138> 756 84<1219 1270> 780 164<0 33 135 614 657 901> 1120 63<726 896> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1135 -182 2 -Refer: 486 432 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF6 -Encoding: 7926 7926 546 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<391 565> 1393 41<23 228 731 936> 1683 61<392 519> -VStem: 391 174<0 709> 451 51<1473 1538> 522 115<1579 1683> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1065 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF7 -Encoding: 7927 7927 547 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 860 41<45 209 685 864> 1253 61<376 503> -VStem: 434 51<1042 1108> 506 115<1149 1253> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1049 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF8 -Encoding: 7928 7928 548 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<391 565> 1393 41<23 228 731 936> 1516 117<480 679> 1581 117<296 495> -VStem: 205 84<1516 1566> 391 174<0 709> 686 84<1647 1698> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1065 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF9 -Encoding: 7929 7929 549 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 860 41<45 209 685 864> 1085 117<464 663> 1151 117<279 478> -VStem: 188 84<1085 1136> 670 84<1217 1268> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1049 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EA4 -Encoding: 7844 7844 550 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<49 232 1074 1255> 391 102<424 883> 1227 299 1481 279 -VStem: 381 551 782 276 -LayerCount: 2 -Fore -Refer: 593 58624 S 1 0 0 1 635 0 2 -Refer: 94 770 N 1 0 0 1 1243 -31 2 -Refer: 590 57344 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EBE -Encoding: 7870 7870 551 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 655 102<348 817> 1126 102<348 1001> 1264 299 1481 279 -VStem: 174 174<102 655 758 1126> 324 551 741 276 -LayerCount: 2 -Fore -Refer: 593 58624 S 1 0 0 1 594 0 2 -Refer: 94 770 S 1 0 0 1 1186 6 2 -Refer: 591 57371 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1ED0 -Encoding: 7888 7888 552 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<550 894> 1147 102<529 896> 1257 299 1481 279 -VStem: 102 174<378 860> 442 551 872 276 1163 174<375 857> -LayerCount: 2 -Fore -Refer: 593 58624 N 1 0 0 1 725 0 2 -Refer: 94 770 N 1 0 0 1 1305 0 2 -Refer: 592 57441 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA5 -Encoding: 7845 7845 553 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1022 299 1276 279 -VStem: 94 164<178 440> 211 551 612 276 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 593 58624 S 1 0 0 1 465 -205 2 -Refer: 94 770 S 1 0 0 1 1073 -236 2 -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EBF -Encoding: 7871 7871 554 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1022 299 1239 279 -VStem: 90 164<256 451> 242 551 659 276 -LayerCount: 2 -Fore -Refer: 593 58624 S 1 0 0 1 512 -242 2 -Refer: 94 770 S 1 0 0 1 1104 -236 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED1 -Encoding: 7889 7889 555 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1022 299 1245 279 -VStem: 90 164<231 648> 258 551 688 276 807 164<241 660> -LayerCount: 2 -Fore -Refer: 593 58624 N 1 0 0 1 541 -236 2 -Refer: 94 770 N 1 0 0 1 1120 -236 2 -Refer: 9 111 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA6 -Encoding: 7846 7846 556 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<49 232 1074 1255> 391 102<424 883> 1227 299 1493 279 -VStem: 381 551 657 276 -LayerCount: 2 -Fore -Refer: 594 58625 N 1 0 0 1 510 12 2 -Refer: 94 770 N 1 0 0 1 1243 -31 2 -Refer: 590 57344 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EC0 -Encoding: 7872 7872 557 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 655 102<348 817> 1126 102<348 1001> 1264 299 1493 279 -VStem: 174 174<102 655 758 1126> 324 551 600 276 -LayerCount: 2 -Fore -Refer: 594 58625 N 1 0 0 1 453 12 2 -Refer: 94 770 N 1 0 0 1 1186 6 2 -Refer: 591 57371 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1ED2 -Encoding: 7890 7890 558 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<550 894> 1147 102<529 896> 1257 299 1493 279 -VStem: 102 174<378 860> 442 551 719 276 1163 174<375 857> -LayerCount: 2 -Fore -Refer: 594 58625 N 1 0 0 1 571 12 2 -Refer: 94 770 N 1 0 0 1 1305 0 2 -Refer: 592 57441 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA7 -Encoding: 7847 7847 559 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1022 299 1272 279 -VStem: 94 164<178 440> 211 551 487 276 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 594 58625 N 1 0 0 1 340 -209 2 -Refer: 94 770 N 1 0 0 1 1073 -236 2 -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EC1 -Encoding: 7873 7873 560 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1022 299 1239 279 -VStem: 90 164<256 451> 233 551 510 276 -LayerCount: 2 -Fore -Refer: 594 58625 N 1 0 0 1 362 -242 2 -Refer: 94 770 N 1 0 0 1 1096 -236 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED3 -Encoding: 7891 7891 561 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1032 299 1255 279 -VStem: 90 164<231 648> 254 551 530 276 807 164<241 660> -LayerCount: 2 -Fore -Refer: 594 58625 N 1 0 0 1 383 -225 2 -Refer: 94 770 N 1 0 0 1 1116 -225 2 -Refer: 9 111 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA8 -Encoding: 7848 7848 562 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<49 232 1074 1255> 391 102<424 883> 1227 299 1688 61<775 902> -VStem: 381 551 834 51<1477 1542> 905 115<1583 1687> -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1243 -31 2 -Refer: 590 57344 N 1 0 0 1 0 0 2 -Refer: 481 777 S 1 0 0 1 1448 250 2 -Validated: 1 -EndChar - -StartChar: uni1EA9 -Encoding: 7849 7849 563 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1022 299 1483 61<605 732> -VStem: 94 164<178 440> 211 551 664 51<1272 1337> 694 164<0 16 107 507 606 754> 735 115<1379 1482> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1073 -236 2 -Refer: 481 777 N 1 0 0 1 1278 45 2 -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EC2 -Encoding: 7874 7874 564 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 655 102<348 817> 1126 102<348 1001> 1264 299 1706 61<737 863> -VStem: 174 174<102 655 758 1126> 324 551 795 51<1495 1561> 866 115<1602 1706> -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1186 6 2 -Refer: 591 57371 N 1 0 0 1 0 0 2 -Refer: 481 777 S 1 0 0 1 1409 268 2 -Validated: 1 -EndChar - -StartChar: uni1ED4 -Encoding: 7892 7892 565 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<550 894> 1147 102<529 896> 1257 299 1737 61<829 955> -VStem: 102 174<378 860> 442 551 887 51<1526 1591> 958 115<1633 1736> 1163 174<375 857> -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1305 0 2 -Refer: 592 57441 N 1 0 0 1 0 0 2 -Refer: 481 777 S 1 0 0 1 1501 299 2 -Validated: 1 -EndChar - -StartChar: uni1EC3 -Encoding: 7875 7875 566 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1022 299 1464 61<667 794> -VStem: 90 164<256 451> 254 551 725 51<1253 1319> 797 115<1360 1464> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1116 -236 2 -Refer: 481 777 N 1 0 0 1 1339 27 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED5 -Encoding: 7893 7893 567 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1032 299 1511 61<640 767> -VStem: 90 164<231 648> 254 551 698 51<1300 1366> 770 115<1407 1511> 807 164<241 660> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1116 -225 2 -Refer: 481 777 N 1 0 0 1 1313 74 2 -Refer: 9 111 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EAA -Encoding: 7850 7850 568 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<49 232 1074 1255> 391 102<424 883> 1227 299 1550 117<659 857> 1616 117<474 673> -VStem: 381 551 383 84<1550 1601> 864 84<1682 1733> -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1243 -31 2 -Refer: 590 57344 N 1 0 0 1 0 0 2 -Refer: 95 771 S 1 0 0 1 1243 281 2 -Validated: 1 -EndChar - -StartChar: uni1EAB -Encoding: 7851 7851 569 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1022 299 1346 117<486 685> 1411 117<302 501> -VStem: 94 164<178 440> 209 551 211 84<1346 1396> 692 84<1477 1528> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1071 -236 2 -Refer: 95 771 N 1 0 0 1 1071 76 2 -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EC4 -Encoding: 7876 7876 570 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 655 102<348 817> 1126 102<348 1001> 1264 299 1599 117<620 818> 1665 117<435 634> -VStem: 174 174<102 655 758 1126> 324 551 344 84<1599 1650> 825 84<1731 1782> -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1186 6 2 -Refer: 591 57371 N 1 0 0 1 0 0 2 -Refer: 95 771 S 1 0 0 1 1204 330 2 -Validated: 1 -EndChar - -StartChar: uni1EC5 -Encoding: 7877 7877 571 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1022 299 1358 117<552 751> 1423 117<368 566> -VStem: 90 164<256 451> 256 551 276 84<1358 1408> 758 84<1490 1540> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1118 -236 2 -Refer: 95 771 N 1 0 0 1 1137 88 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED6 -Encoding: 7894 7894 572 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<550 894> 1147 102<529 896> 1257 299 1614 117<712 910> 1679 117<527 726> -VStem: 102 174<378 860> 436 84<1614 1664> 442 551 918 84<1746 1796> 1163 174<375 857> -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1305 0 2 -Refer: 592 57441 N 1 0 0 1 0 0 2 -Refer: 95 771 S 1 0 0 1 1296 344 2 -Validated: 1 -EndChar - -StartChar: uni1ED7 -Encoding: 7895 7895 573 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1032 299 1389 117<523 722> 1454 117<339 538> -VStem: 90 164<231 648> 248 84<1389 1439> 254 551 729 84<1520 1571> 807 164<241 660> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1116 -225 2 -Refer: 95 771 N 1 0 0 1 1108 119 2 -Refer: 9 111 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EAC -Encoding: 7852 7852 574 -Width: 1298 -VWidth: 0 -Flags: W -HStem: -272 150<571 721> 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1503 299 -VStem: 377 551 571 150<-272 -123> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1239 246 2 -Refer: 502 7840 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EAD -Encoding: 7853 7853 575 -Width: 974 -VWidth: 0 -Flags: W -HStem: -272 150<397 547> -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1073 299 -VStem: 94 164<178 440> 215 551 397 150<-272 -123> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1077 -184 2 -Refer: 503 7841 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EAE -Encoding: 7854 7854 576 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<49 232 1074 1255> 391 102<424 883> 1294 117<529 773> 1481 279 -VStem: 420 78<1452 1489> 598 276 805 78<1452 1489> -LayerCount: 2 -Fore -Refer: 593 58624 S 1 0 0 1 451 0 2 -Refer: 97 774 S 1 0 0 1 1239 25 2 -Refer: 590 57344 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EAF -Encoding: 7855 7855 577 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1090 117<367 612> 1276 279 -VStem: 94 164<178 440> 258 78<1247 1284> 436 276 643 78<1247 1284> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 593 58624 N 1 0 0 1 289 -205 2 -Refer: 97 774 N 1 0 0 1 1077 -180 2 -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EB0 -Encoding: 7856 7856 578 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<49 232 1074 1255> 391 102<424 883> 1294 117<529 773> 1481 279 -VStem: 420 78<1452 1489> 434 276 805 78<1452 1489> -LayerCount: 2 -Fore -Refer: 594 58625 S 1 0 0 1 287 0 2 -Refer: 97 774 S 1 0 0 1 1239 25 2 -Refer: 590 57344 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EB1 -Encoding: 7857 7857 579 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1090 117<367 612> 1276 279 -VStem: 94 164<178 440> 258 78<1247 1284> 272 276 643 78<1247 1284> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 594 58625 N 1 0 0 1 125 -205 2 -Refer: 97 774 N 1 0 0 1 1077 -180 2 -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EB2 -Encoding: 7858 7858 580 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<49 232 1074 1255> 391 102<424 883> 1294 117<529 773> 1712 61<571 697> -VStem: 420 78<1452 1489> 629 51<1501 1567> 700 115<1608 1712> 805 78<1452 1489> -LayerCount: 2 -Fore -Refer: 97 774 S 1 0 0 1 1239 25 2 -Refer: 590 57344 N 1 0 0 1 0 0 2 -Refer: 481 777 S 1 0 0 1 1243 274 2 -Validated: 1 -EndChar - -StartChar: uni1EB3 -Encoding: 7859 7859 581 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1090 117<367 612> 1507 61<409 535> -VStem: 94 164<178 440> 258 78<1247 1284> 467 51<1296 1362> 539 115<1403 1507> 643 78<1247 1284> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1077 -180 2 -Refer: 481 777 N 1 0 0 1 1081 70 2 -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EB4 -Encoding: 7860 7860 582 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<49 232 1074 1255> 391 102<424 883> 1294 117<529 773> 1575 117<659 857> 1640 117<474 673> -VStem: 383 84<1575 1625> 420 78<1452 1489> 805 78<1452 1489> 864 84<1707 1757> -LayerCount: 2 -Fore -Refer: 97 774 S 1 0 0 1 1239 25 2 -Refer: 590 57344 N 1 0 0 1 0 0 2 -Refer: 95 771 S 1 0 0 1 1243 305 2 -Validated: 1 -EndChar - -StartChar: uni1EB5 -Encoding: 7861 7861 583 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1090 117<367 612> 1370 117<497 695> 1436 117<312 511> -VStem: 94 164<178 440> 221 84<1370 1421> 258 78<1247 1284> 643 78<1247 1284> 694 164<0 16 107 507 606 754> 702 84<1502 1552> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1077 -180 2 -Refer: 95 771 N 1 0 0 1 1081 100 2 -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EB6 -Encoding: 7862 7862 584 -Width: 1298 -VWidth: 0 -Flags: W -HStem: -272 150<571 721> 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1516 117<529 773> -VStem: 420 78<1673 1710> 571 150<-272 -123> 805 78<1673 1710> -LayerCount: 2 -Fore -Refer: 97 774 S 1 0 0 1 1239 246 2 -Refer: 502 7840 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EB7 -Encoding: 7863 7863 585 -Width: 974 -VWidth: 0 -Flags: W -HStem: -272 150<397 547> -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1085 117<367 612> -VStem: 94 164<178 440> 258 78<1243 1280> 397 150<-272 -123> 643 78<1243 1280> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1077 -184 2 -Refer: 503 7841 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EC6 -Encoding: 7878 7878 586 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -272 150<553 702> 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1503 299 -VStem: 174 174<102 799 901 1331> 340 551 553 150<-272 -123> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1202 246 2 -Refer: 504 7864 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EC7 -Encoding: 7879 7879 587 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -272 150<463 612> -20 102<418 733> 451 102<264 770> 819 102<404 661> 1073 299 -VStem: 90 164<256 451> 256 551 463 150<-272 -123> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1118 -184 2 -Refer: 505 7865 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED8 -Encoding: 7896 7896 588 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -272 150<645 795> -20 102<572 877> 1352 102<551 871> 1503 299 -VStem: 102 174<441 1012> 432 551 645 150<-272 -123> 1163 174<438 1009> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1294 246 2 -Refer: 508 7884 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED9 -Encoding: 7897 7897 589 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -272 150<440 590> -20 102<384 673> 819 102<404 673> 1073 299 -VStem: 90 164<231 648> 260 551 440 150<-272 -123> 807 164<241 660> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1122 -184 2 -Refer: 509 7885 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: a.sc -Encoding: 57344 57344 590 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43G<49 232 1074 1255> 391 102<424 883> -LayerCount: 2 -Fore -SplineSet -1092 0 m 1,0,-1 - 926 391 l 1,1,-1 - 381 391 l 1,2,-1 - 215 0 l 1,3,-1 - 49 0 l 1,4,-1 - 571 1229 l 1,5,-1 - 735 1229 l 1,6,-1 - 1255 0 l 1,7,-1 - 1092 0 l 1,0,-1 -424 494 m 1,8,-1 - 883 494 l 1,9,-1 - 653 1034 l 1,10,-1 - 424 494 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: e.sc -Encoding: 57371 57371 591 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 655 102<348 817> 1126 102<348 1001> -VStem: 174 174<102 655 758 1126> -LayerCount: 2 -Fore -SplineSet -1034 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1229 l 1,2,-1 - 1001 1229 l 1,3,-1 - 1001 1126 l 1,4,-1 - 348 1126 l 1,5,-1 - 348 758 l 1,6,-1 - 817 758 l 1,7,-1 - 817 655 l 1,8,-1 - 348 655 l 1,9,-1 - 348 102 l 1,10,-1 - 1034 102 l 1,11,-1 - 1034 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: o.sc -Encoding: 57441 57441 592 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<550 894> 1147 102<529 896> -VStem: 102 174<378 860> 1163 174<375 857> -LayerCount: 2 -Fore -SplineSet -714 -20 m 0,0,1 - 620 -20 620 -20 537 3 c 128,-1,2 - 454 26 454 26 375 77 c 128,-1,3 - 296 128 296 128 235.5 200.5 c 128,-1,4 - 175 273 175 273 138.5 380 c 128,-1,5 - 102 487 102 487 102 614 c 128,-1,6 - 102 741 102 741 136 848 c 128,-1,7 - 170 955 170 955 228 1028 c 0,8,9 - 288 1103 288 1103 362 1152 c 0,10,11 - 508 1249 508 1249 682 1249 c 0,12,-1 - 686 1249 l 0,13,-1 - 690 1249 l 0,14,15 - 899 1249 899 1249 1060 1152 c 0,16,17 - 1337 985 1337 985 1337 617 c 0,18,19 - 1336 242 1336 242 1072 77 c 0,20,21 - 916 -20 916 -20 714 -20 c 0,0,1 -703 1147 m 0,22,23 - 641 1147 641 1147 583.5 1127.5 c 128,-1,24 - 526 1108 526 1108 470 1066 c 0,25,26 - 414 1022 414 1022 372 962 c 0,27,28 - 276 826 276 826 276 614 c 0,29,30 - 276 503 276 503 306.5 410.5 c 128,-1,31 - 337 318 337 318 384 259 c 128,-1,32 - 431 200 431 200 491 158 c 0,33,34 - 642 87 642 87 717 82 c 1,35,36 - 850 82 850 82 960 162 c 0,37,38 - 1162 309 1162 309 1163 614 c 0,39,40 - 1162 931 1162 931 954 1070 c 0,41,42 - 838 1147 838 1147 703 1147 c 0,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: stackingacute -Encoding: 58624 58624 593 -Width: 571 -VWidth: 0 -Flags: W -HStem: 1481 279 -VStem: 147 276 -LayerCount: 2 -Fore -SplineSet -313 1759 m 25,0,-1 - 424 1667 l 1,1,-1 - 211 1481 l 1,2,-1 - 147 1534 l 1,3,-1 - 313 1759 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: stackinggrave -Encoding: 58625 58625 594 -Width: 571 -VWidth: 0 -Flags: W -HStem: 1481 279 -VStem: 147 276 -LayerCount: 2 -Fore -SplineSet -258 1759 m 25,0,-1 - 424 1534 l 1,1,-1 - 360 1481 l 1,2,-1 - 147 1667 l 1,3,-1 - 258 1759 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E62 -Encoding: 7778 7778 595 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -272 150<502 651> -20 102<442 777> 1352 102<441 740> -VStem: 162 174<985 1247> 502 150<-272 -123> 907 174<203 504> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1167 0 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E63 -Encoding: 7779 7779 596 -Width: 897 -VWidth: 0 -Flags: W -HStem: -272 150<373 522> -20 102<276 603> 819 102<316 571> -VStem: 125 164<595 792> 373 150<-272 -123> 651 164<128 358> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1038 0 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0181 -Encoding: 385 385 597 -Width: 1341 -VWidth: 0 -Flags: W -HStem: 0 102<573 983> 727 102<573 893> 918 43G<201 252> 1331 102<301 399 573 916> -VStem: 41 180<1018 1259> 399 174<102 727 829 1325> 1004 174<946 1243> 1090 174<216 579> -LayerCount: 2 -Fore -SplineSet -573 1331 m 1,0,-1 - 573 829 l 1,1,-1 - 754 829 l 2,2,3 - 816 829 816 829 866 856 c 0,4,5 - 916 882 916 882 945 922 c 0,6,7 - 1004 1002 1004 1002 1004 1075 c 0,8,9 - 1004 1189 1004 1189 946 1264 c 0,10,11 - 895 1331 895 1331 799 1331 c 2,12,-1 - 573 1331 l 1,0,-1 -1006 795 m 1,13,14 - 1134 743 1134 743 1199 629.5 c 128,-1,15 - 1264 516 1264 516 1264 387 c 0,16,17 - 1264 226 1264 226 1159 117 c 0,18,19 - 1046 0 1046 0 809 0 c 2,20,-1 - 399 0 l 1,21,-1 - 399 1325 l 1,22,23 - 312 1311 312 1311 266.5 1260.5 c 128,-1,24 - 221 1210 221 1210 221 1153.5 c 128,-1,25 - 221 1097 221 1097 228 1072.5 c 128,-1,26 - 235 1048 235 1048 242.5 1041.5 c 128,-1,27 - 250 1035 250 1035 268 1024 c 1,28,-1 - 242 918 l 1,29,30 - 98 969 98 969 60 1044 c 0,31,32 - 42 1081 42 1081 41 1128 c 0,33,34 - 41 1262 41 1262 143 1348 c 128,-1,35 - 245 1434 245 1434 399 1434 c 2,36,-1 - 768 1434 l 2,37,38 - 1036 1434 1036 1434 1128 1283 c 0,39,40 - 1178 1200 1178 1200 1178 1075 c 0,41,42 - 1178 1010 1178 1010 1136.5 929.5 c 128,-1,43 - 1095 849 1095 849 1006 795 c 1,13,14 -573 727 m 1,44,-1 - 573 102 l 1,45,-1 - 840 102 l 2,46,47 - 962 102 962 102 1026 185.5 c 128,-1,48 - 1090 269 1090 269 1090 366.5 c 128,-1,49 - 1090 464 1090 464 1065 539 c 128,-1,50 - 1040 614 1040 614 981 670.5 c 128,-1,51 - 922 727 922 727 840 727 c 2,52,-1 - 573 727 l 1,44,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0253 -Encoding: 595 595 598 -Width: 1079 -VWidth: 0 -Flags: W -HStem: -20 102<387 701> 819 102<430 702> 1270 102<336 558> -VStem: 139 164<166 678 852 1240> 829 164<237 664> -LayerCount: 2 -Fore -SplineSet -303 852 m 1,0,1 - 409 922 409 922 538.5 922 c 128,-1,2 - 668 922 668 922 756 885 c 128,-1,3 - 844 848 844 848 894.5 782 c 128,-1,4 - 945 716 945 716 969 633.5 c 128,-1,5 - 993 551 993 551 993 451 c 128,-1,6 - 993 351 993 351 968.5 268.5 c 128,-1,7 - 944 186 944 186 893 120 c 0,8,9 - 785 -20 785 -20 549 -20 c 1,10,11 - 320 -20 320 -20 224 86 c 0,12,13 - 140 180 140 180 139 369 c 2,14,-1 - 139 1092 l 2,15,16 - 140 1296 140 1296 336 1356 c 0,17,18 - 388 1372 388 1372 444 1372 c 0,19,20 - 574 1372 574 1372 651 1280 c 1,21,-1 - 522 1219 l 1,22,23 - 486 1270 486 1270 420 1270 c 128,-1,24 - 354 1270 354 1270 328.5 1211.5 c 128,-1,25 - 303 1153 303 1153 303 1024 c 2,26,-1 - 303 852 l 1,0,1 -303 471 m 2,27,-1 - 303 303 l 2,28,29 - 304 114 304 114 498 87 c 0,30,31 - 534 82 534 82 588.5 82 c 128,-1,32 - 643 82 643 82 692 115 c 128,-1,33 - 741 148 741 148 770 202 c 128,-1,34 - 799 256 799 256 814 319.5 c 128,-1,35 - 829 383 829 383 829 451 c 128,-1,36 - 829 519 829 519 814 582.5 c 128,-1,37 - 799 646 799 646 770 700 c 0,38,39 - 706 819 706 819 580 819 c 0,40,41 - 489 818 489 818 425 770 c 0,42,43 - 303 678 303 678 303 471 c 2,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni018A -Encoding: 394 394 599 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 102<573 1051> 918 43G<201 252> 1331 102<301 399 573 1066> -VStem: 41 180<1018 1259> 399 174<102 1325> 1255 174<394 1073> -LayerCount: 2 -Fore -SplineSet -573 1331 m 1,0,-1 - 573 102 l 1,1,-1 - 926 102 l 2,2,3 - 1064 102 1064 102 1156 249 c 0,4,5 - 1255 405 1255 405 1255 730 c 0,6,-1 - 1255 737 l 0,7,8 - 1254 1110 1254 1110 1116 1252 c 0,9,10 - 1039 1331 1039 1331 929 1331 c 0,11,-1 - 926 1331 l 2,12,-1 - 573 1331 l 1,0,-1 -895 0 m 2,13,-1 - 399 0 l 1,14,-1 - 399 1325 l 1,15,16 - 312 1311 312 1311 266.5 1260.5 c 128,-1,17 - 221 1210 221 1210 221 1153.5 c 128,-1,18 - 221 1097 221 1097 228 1072.5 c 128,-1,19 - 235 1048 235 1048 242.5 1041.5 c 128,-1,20 - 250 1035 250 1035 268 1024 c 1,21,-1 - 242 918 l 1,22,23 - 98 969 98 969 60 1044 c 0,24,25 - 42 1081 42 1081 41 1128 c 0,26,27 - 41 1262 41 1262 143 1348 c 128,-1,28 - 245 1434 245 1434 399 1434 c 2,29,-1 - 895 1434 l 2,30,31 - 1151 1434 1151 1434 1290.5 1265.5 c 128,-1,32 - 1430 1097 1430 1097 1430 736.5 c 128,-1,33 - 1430 376 1430 376 1287 188 c 128,-1,34 - 1144 0 1144 0 895 0 c 2,13,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0257 -Encoding: 599 599 600 -Width: 1191 -VWidth: 0 -Flags: W -HStem: -20 102<403 666> 0 43G<780 944> 819 102<403 659> 1270 102<977 1199> -VStem: 90 164<258 643> 780 164<0 47 208 666 823 1240> -LayerCount: 2 -Fore -SplineSet -944 0 m 1,0,-1 - 780 0 l 1,1,-1 - 780 47 l 1,2,3 - 675 -20 675 -20 504 -20 c 0,4,5 - 314 -20 314 -20 200 120 c 0,6,7 - 90 256 90 256 90 451 c 0,8,9 - 90 580 90 580 139.5 686.5 c 128,-1,10 - 189 793 189 793 285 857.5 c 128,-1,11 - 381 922 381 922 520.5 922 c 128,-1,12 - 660 922 660 922 780 823 c 1,13,-1 - 780 1092 l 2,14,15 - 780 1296 780 1296 976 1356 c 0,16,17 - 1028 1372 1028 1372 1085 1372 c 0,18,19 - 1215 1372 1215 1372 1292 1280 c 1,20,-1 - 1163 1219 l 1,21,22 - 1127 1270 1127 1270 1061 1270 c 128,-1,23 - 995 1270 995 1270 969.5 1211.5 c 128,-1,24 - 944 1153 944 1153 944 1024 c 2,25,-1 - 944 0 l 1,0,-1 -780 398 m 0,26,27 - 780 476 780 476 768 546 c 128,-1,28 - 756 616 756 616 729.5 679.5 c 128,-1,29 - 703 743 703 743 653 781 c 128,-1,30 - 603 819 603 819 527.5 819 c 128,-1,31 - 452 819 452 819 386 762.5 c 128,-1,32 - 320 706 320 706 287 623 c 128,-1,33 - 254 540 254 540 254 451 c 128,-1,34 - 254 362 254 362 287 278.5 c 128,-1,35 - 320 195 320 195 386 138.5 c 128,-1,36 - 452 82 452 82 535 82 c 0,37,38 - 628 82 628 82 701 157 c 0,39,40 - 780 238 780 238 780 398 c 0,26,27 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01DD -Encoding: 477 477 601 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<371 628> 348 102<262 768> 819 102<299 614> -VStem: 778 164<451 645> -AnchorPoint: "cedilla" 485 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "bottom" 496 0 basechar 0 -AnchorPoint: "ogonek" 516 0 basechar 0 -AnchorPoint: "top" 477 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -100 743 m 1,0,1 - 242 922 242 922 479 922 c 0,2,3 - 681 922 681 922 811.5 792.5 c 128,-1,4 - 942 663 942 663 942 451 c 0,5,6 - 942 347 942 347 905 257 c 0,7,8 - 868 168 868 168 808 108 c 0,9,10 - 679 -19 679 -19 520 -20 c 0,11,12 - 417 -20 417 -20 333 22 c 0,13,14 - 250 64 250 64 198 132 c 0,15,16 - 90 275 90 275 90 451 c 1,17,-1 - 778 451 l 1,18,19 - 778 619 778 619 687 719 c 128,-1,20 - 596 819 596 819 447.5 819 c 128,-1,21 - 299 819 299 819 223 696 c 1,22,-1 - 100 743 l 1,0,1 -768 348 m 1,23,-1 - 262 348 l 1,24,25 - 280 228 280 228 338 155 c 128,-1,26 - 396 82 396 82 492 82 c 128,-1,27 - 588 82 588 82 665 154 c 128,-1,28 - 742 226 742 226 768 348 c 1,23,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0259 -Encoding: 601 601 602 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<371 628> 348 102<262 768> 819 102<299 614> -VStem: 778 164<451 645> -AnchorPoint: "top" 477 1004 basechar 0 -AnchorPoint: "ogonek" 516 0 basechar 0 -AnchorPoint: "bottom" 496 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 485 0 basechar 0 -LayerCount: 2 -Fore -Refer: 601 477 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni018E -Encoding: 398 398 603 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<96 782> 799 102<313 782> 1331 102<129 782> -VStem: 782 174<102 799 901 1331> -AnchorPoint: "top" 530 1434 basechar 0 -AnchorPoint: "ogonek" 762 0 basechar 0 -AnchorPoint: "bottom" 545 0 basechar 0 -AnchorPoint: "cedilla" 557 0 basechar 0 -AnchorPoint: "horn" 903 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -96 0 m 1,0,-1 - 96 102 l 1,1,-1 - 782 102 l 1,2,-1 - 782 799 l 1,3,-1 - 313 799 l 1,4,-1 - 313 901 l 1,5,-1 - 782 901 l 1,6,-1 - 782 1331 l 1,7,-1 - 129 1331 l 1,8,-1 - 129 1434 l 1,9,-1 - 956 1434 l 1,10,-1 - 956 0 l 1,11,-1 - 96 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0198 -Encoding: 408 408 604 -Width: 1374 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348 1008 1233> 1341 113<1094 1273> 1393 41G<174 348> -VStem: 174 174<0 469 696 1434> 1303 143<1103 1313> -LayerCount: 2 -Fore -SplineSet -623 776 m 1,0,-1 - 1233 0 l 1,1,-1 - 1040 0 l 1,2,-1 - 520 662 l 1,3,-1 - 348 469 l 1,4,-1 - 348 0 l 1,5,-1 - 174 0 l 1,6,-1 - 174 1434 l 1,7,-1 - 348 1434 l 1,8,-1 - 348 696 l 1,9,-1 - 856 1266 l 2,10,11 - 937 1356 937 1356 1009 1405 c 128,-1,12 - 1081 1454 1081 1454 1181 1454 c 128,-1,13 - 1281 1454 1281 1454 1363.5 1384 c 128,-1,14 - 1446 1314 1446 1314 1446 1194 c 128,-1,15 - 1446 1074 1446 1074 1329 988 c 0,16,17 - 1305 970 1305 970 1290 967 c 1,18,-1 - 1229 1081 l 1,19,20 - 1269 1107 1269 1107 1286 1135 c 128,-1,21 - 1303 1163 1303 1163 1303 1214.5 c 128,-1,22 - 1303 1266 1303 1266 1269.5 1303.5 c 128,-1,23 - 1236 1341 1236 1341 1193 1341 c 128,-1,24 - 1150 1341 1150 1341 1114 1314 c 128,-1,25 - 1078 1287 1078 1287 999 1198 c 2,26,-1 - 623 776 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0199 -Encoding: 409 409 605 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43G<147 311 705 913> 860 41G<652 877> 1270 102<345 566> -VStem: 147 164<0 268 477 1240> -LayerCount: 2 -Fore -SplineSet -311 477 m 1,0,-1 - 688 901 l 1,1,-1 - 877 901 l 1,2,-1 - 520 502 l 1,3,-1 - 913 0 l 1,4,-1 - 737 0 l 1,5,-1 - 424 395 l 1,6,-1 - 311 268 l 1,7,-1 - 311 0 l 1,8,-1 - 147 0 l 1,9,-1 - 147 1092 l 2,10,11 - 148 1260 148 1260 284 1332 c 0,12,13 - 360 1372 360 1372 453 1372 c 0,14,15 - 582 1372 582 1372 659 1280 c 1,16,-1 - 530 1219 l 1,17,18 - 494 1270 494 1270 428 1270 c 128,-1,19 - 362 1270 362 1270 336.5 1211.5 c 128,-1,20 - 311 1153 311 1153 311 1024 c 2,21,-1 - 311 477 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Engsami -Encoding: 58626 58626 606 -Width: 1406 -VWidth: 0 -Flags: W -HStem: -348 102<673 1005> 0 43G<174 348> 1393 41G<174 376 1063 1237> -VStem: 174 174<0 1137> 1063 174<-181 0 295 1434> -AnchorPoint: "bottom" 717 -328 basechar 0 -AnchorPoint: "top" 717 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1063 1434 m 1,0,-1 - 1237 1434 l 1,1,-1 - 1237 160 l 2,2,3 - 1237 -51 1237 -51 1212 -132 c 128,-1,4 - 1187 -213 1187 -213 1158 -248 c 128,-1,5 - 1129 -283 1129 -283 1079 -307 c 0,6,7 - 994 -348 994 -348 826.5 -348 c 128,-1,8 - 659 -348 659 -348 483 -256 c 1,9,-1 - 586 -150 l 1,10,11 - 723 -246 723 -246 838 -246 c 0,12,13 - 972 -246 972 -246 1016 -190 c 0,14,15 - 1058 -136 1058 -136 1061 0 c 1,16,-1 - 1059 0 l 1,17,-1 - 348 1137 l 1,18,-1 - 348 0 l 1,19,-1 - 174 0 l 1,20,-1 - 174 1434 l 1,21,-1 - 350 1434 l 1,22,-1 - 1063 295 l 1,23,-1 - 1063 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019D -Encoding: 413 413 607 -Width: 1275 -VWidth: 0 -Flags: W -HStem: -348 102<-107 112> 0 43G<946 1120> 1270 102<464 826> 1311 41G<147 322> -VStem: 147 174<-216 1169 1282 1352> 946 174<0 1132> -LayerCount: 2 -Fore -SplineSet -147 1352 m 1,0,-1 - 322 1352 l 1,1,-1 - 322 1282 l 1,2,3 - 324 1283 324 1283 343.5 1293.5 c 128,-1,4 - 363 1304 363 1304 369.5 1307 c 128,-1,5 - 376 1310 376 1310 395.5 1319.5 c 128,-1,6 - 415 1329 415 1329 427 1333 c 128,-1,7 - 439 1337 439 1337 459.5 1345 c 128,-1,8 - 480 1353 480 1353 497 1356.5 c 128,-1,9 - 514 1360 514 1360 536 1364 c 0,10,11 - 573 1372 573 1372 629 1372 c 0,12,13 - 853 1372 853 1372 986.5 1262.5 c 128,-1,14 - 1120 1153 1120 1153 1120 942 c 2,15,-1 - 1120 0 l 1,16,-1 - 946 0 l 1,17,-1 - 946 918 l 2,18,19 - 946 1270 946 1270 659 1270 c 0,20,21 - 560 1270 560 1270 472.5 1230 c 128,-1,22 - 385 1190 385 1190 322 1135 c 1,23,-1 - 322 -68 l 2,24,25 - 322 -271 322 -271 116 -332 c 0,26,27 - 62 -348 62 -348 6 -348 c 0,28,29 - -124 -348 -124 -348 -201 -256 c 1,30,-1 - -72 -195 l 1,31,32 - -36 -246 -36 -246 30.5 -246 c 128,-1,33 - 97 -246 97 -246 122 -187.5 c 128,-1,34 - 147 -129 147 -129 147 0 c 2,35,-1 - 147 1352 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0272 -Encoding: 626 626 608 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -348 102<-107 114> 0 43G<784 948> 819 102<385 697> 860 41G<147 311> -VStem: 147 164<-216 756 870 901> 784 164<0 717> -LayerCount: 2 -Fore -SplineSet -311 -68 m 2,0,1 - 310 -272 310 -272 114 -332 c 0,2,3 - 62 -348 62 -348 6 -348 c 0,4,5 - -124 -348 -124 -348 -201 -256 c 1,6,-1 - -72 -195 l 1,7,8 - -36 -246 -36 -246 30.5 -246 c 128,-1,9 - 97 -246 97 -246 122 -187.5 c 128,-1,10 - 147 -129 147 -129 147 0 c 2,11,-1 - 147 901 l 1,12,-1 - 311 901 l 1,13,-1 - 311 870 l 1,14,15 - 410 922 410 922 520 922 c 0,16,17 - 736 922 736 922 842 816 c 128,-1,18 - 948 710 948 710 948 492 c 2,19,-1 - 948 0 l 1,20,-1 - 784 0 l 1,21,-1 - 784 467 l 2,22,23 - 784 677 784 677 720 751 c 0,24,25 - 662 819 662 819 542 819 c 128,-1,26 - 422 819 422 819 311 723 c 1,27,-1 - 311 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0193 -Encoding: 403 403 609 -Width: 1523 -VWidth: 0 -Flags: W -HStem: -20 102<600 973> 717 102<913 1085> 1331 102<549 953 1296 1530> -VStem: 102 174<451 1009> 1085 164<173 717> 1114 154<1096 1192> -LayerCount: 2 -Fore -SplineSet -702 1434 m 0,0,1 - 994 1434 994 1434 1151 1325 c 1,2,3 - 1193 1385 1193 1385 1262.5 1414.5 c 128,-1,4 - 1332 1444 1332 1444 1409 1444 c 0,5,6 - 1539 1444 1539 1444 1616 1352 c 1,7,-1 - 1487 1290 l 1,8,9 - 1451 1341 1451 1341 1384.5 1341 c 128,-1,10 - 1318 1341 1318 1341 1293 1283 c 128,-1,11 - 1268 1225 1268 1225 1268 1096 c 5,12,-1 - 1114 1028 l 1,13,14 - 1114 1222 1114 1222 942 1294 c 0,15,16 - 853 1332 853 1332 749 1332 c 0,17,-1 - 746 1332 l 0,18,19 - 640 1332 640 1332 560 1295 c 128,-1,20 - 480 1258 480 1258 416 1186 c 0,21,22 - 276 1030 276 1030 276 717 c 0,23,24 - 276 587 276 587 309 478 c 0,25,26 - 342 370 342 370 394 298 c 0,27,28 - 448 226 448 226 514 176 c 0,29,30 - 684 90 684 90 772 82 c 1,31,32 - 967 82 967 82 1085 209 c 1,33,-1 - 1085 717 l 1,34,-1 - 913 717 l 1,35,-1 - 913 819 l 1,36,-1 - 1249 819 l 1,37,-1 - 1249 209 l 1,38,39 - 1169 106 1169 106 1035.5 43 c 128,-1,40 - 902 -20 902 -20 741 -20 c 0,41,42 - 564 -20 564 -20 401 93 c 0,43,44 - 216 222 216 222 143 444 c 0,45,46 - 102 570 102 570 102 717.5 c 128,-1,47 - 102 865 102 865 139 987.5 c 128,-1,48 - 176 1110 176 1110 236 1191 c 128,-1,49 - 296 1272 296 1272 375 1328 c 0,50,51 - 525 1434 525 1434 702 1434 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0260 -Encoding: 608 608 610 -Width: 1140 -VWidth: 0 -Flags: W -HStem: -348 102<339 671> -20 102<393 705> 819 102<378 633> 1022 102<926 1147> -VStem: 90 164<235 670> 729 164<-181 23 114 716 844 992> -LayerCount: 2 -Fore -SplineSet -729 145 m 1,0,-1 - 729 608 l 1,1,2 - 703 705 703 705 648 762 c 128,-1,3 - 593 819 593 819 512 819 c 0,4,5 - 396 819 396 819 325 719 c 128,-1,6 - 254 619 254 619 254 449 c 128,-1,7 - 254 279 254 279 331.5 180.5 c 128,-1,8 - 409 82 409 82 553 82 c 0,9,10 - 660 82 660 82 729 145 c 1,0,-1 -1004 1022 m 4,11,12 - 970 1022 970 1022 947 1003 c 0,13,14 - 893 958 893 958 893 788 c 2,15,-1 - 893 160 l 2,16,17 - 893 -54 893 -54 870 -134 c 128,-1,18 - 847 -214 847 -214 819 -248 c 0,19,20 - 790 -282 790 -282 742 -307 c 0,21,22 - 659 -348 659 -348 492.5 -348 c 128,-1,23 - 326 -348 326 -348 150 -256 c 1,24,-1 - 252 -150 l 1,25,26 - 389 -246 389 -246 504 -246 c 0,27,28 - 575 -246 575 -246 617.5 -233 c 128,-1,29 - 660 -220 660 -220 684 -186 c 0,30,31 - 725 -129 725 -129 729 23 c 1,32,33 - 632 -20 632 -20 522 -20 c 0,34,35 - 323 -20 323 -20 206.5 107.5 c 128,-1,36 - 90 235 90 235 90 447 c 128,-1,37 - 90 659 90 659 205.5 790.5 c 128,-1,38 - 321 922 321 922 470 922 c 128,-1,39 - 619 922 619 922 729 844 c 1,40,41 - 730 1048 730 1048 926 1108 c 0,42,43 - 978 1124 978 1124 1034 1124 c 0,44,45 - 1164 1124 1164 1124 1241 1032 c 1,46,-1 - 1112 971 l 1,47,48 - 1076 1022 1076 1022 1004 1022 c 4,11,12 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B3 -Encoding: 435 435 611 -Width: 1189 -VWidth: 0 -Flags: W -HStem: 0 43G<391 565> 1346 113<879 1050> 1393 41G<23 228> -VStem: 391 174<0 709> 1087 143<1210 1310> -LayerCount: 2 -Fore -SplineSet -1087 1198 m 1,0,1 - 1087 1261 1087 1261 1050.5 1303.5 c 128,-1,2 - 1014 1346 1014 1346 963.5 1346 c 128,-1,3 - 913 1346 913 1346 880.5 1306.5 c 128,-1,4 - 848 1267 848 1267 822.5 1215 c 128,-1,5 - 797 1163 797 1163 793 1155 c 2,6,-1 - 565 709 l 1,7,-1 - 565 0 l 1,8,-1 - 391 0 l 1,9,-1 - 391 711 l 1,10,-1 - 23 1434 l 1,11,-1 - 207 1434 l 1,12,-1 - 479 899 l 1,13,-1 - 625 1184 l 1,14,15 - 697 1329 697 1329 781 1393.5 c 128,-1,16 - 865 1458 865 1458 976 1458 c 128,-1,17 - 1087 1458 1087 1458 1159 1382.5 c 128,-1,18 - 1231 1307 1231 1307 1231 1210 c 1,19,-1 - 1087 1198 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B4 -Encoding: 436 436 612 -Width: 1116 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 819 102<825 952> 860 41G<45 209> -LayerCount: 2 -Fore -SplineSet -598 623 m 6,0,1 - 652 771 652 771 727 846.5 c 128,-1,2 - 802 922 802 922 915 922 c 0,3,4 - 970 922 970 922 1015.5 889 c 128,-1,5 - 1061 856 1061 856 1126 786 c 1,6,-1 - 995 721 l 1,7,8 - 938 802 938 802 909 814 c 0,9,10 - 899 818 899 818 885 819 c 0,11,12 - 845 819 845 819 812 752 c 0,13,14 - 798 724 798 724 760 618 c 2,15,-1 - 518 -49 l 2,16,17 - 464 -197 464 -197 389 -272.5 c 128,-1,18 - 314 -348 314 -348 201 -348 c 0,19,20 - 146 -348 146 -348 100 -315 c 128,-1,21 - 54 -282 54 -282 -10 -213 c 1,22,-1 - 121 -147 l 1,23,24 - 168 -211 168 -211 189.5 -228.5 c 128,-1,25 - 211 -246 211 -246 231 -246 c 0,26,27 - 271 -246 271 -246 304 -179 c 0,28,29 - 318 -151 318 -151 356 -45 c 1,30,-1 - 373 0 l 1,31,-1 - 45 901 l 1,32,-1 - 195 901 l 1,33,-1 - 446 205 l 1,34,-1 - 598 623 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0186 -Encoding: 390 390 613 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<377 752> 1352 102<419 796> -VStem: 1075 174<451 1012> -AnchorPoint: "top" 614 1434 basechar 0 -AnchorPoint: "ogonek" 633 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "horn" 1124 1085 basechar 0 -AnchorPoint: "cedilla" 608 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -618 1352 m 0,0,1 - 387 1352 387 1352 262 1178 c 1,2,-1 - 109 1245 l 1,3,4 - 277 1454 277 1454 649 1454 c 0,5,6 - 825 1454 825 1454 976 1341 c 0,7,8 - 1145 1216 1145 1216 1212 990 c 0,9,10 - 1249 866 1249 866 1249 718 c 128,-1,11 - 1249 570 1249 570 1208 444.5 c 128,-1,12 - 1167 319 1167 319 1101 235.5 c 128,-1,13 - 1035 152 1035 152 950 93 c 0,14,15 - 695 -21 695 -21 627 -21 c 0,16,17 - 622 -21 622 -21 618 -20 c 1,18,19 - 449 -20 449 -20 315.5 43 c 128,-1,20 - 182 106 182 106 102 209 c 1,21,-1 - 223 264 l 1,22,23 - 341 82 341 82 580 82 c 0,24,25 - 712 82 712 82 838 176 c 0,26,27 - 983 285 983 285 1042 478 c 0,28,29 - 1075 587 1075 587 1075 730 c 128,-1,30 - 1075 873 1075 873 1037.5 997 c 128,-1,31 - 1000 1121 1000 1121 936 1197 c 0,32,33 - 804 1352 804 1352 618 1352 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0254 -Encoding: 596 596 614 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<289 604> 819 102<358 618> -VStem: 768 164<253 648> -AnchorPoint: "top" 489 1004 basechar 0 -AnchorPoint: "ogonek" 475 0 basechar 0 -AnchorPoint: "bottom" 455 0 basechar 0 -AnchorPoint: "horn" 862 635 basechar 0 -AnchorPoint: "cedilla" 444 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -262 608 m 1,0,-1 - 129 676 l 1,1,2 - 182 787 182 787 279 854.5 c 128,-1,3 - 376 922 376 922 510 922 c 0,4,5 - 669 922 669 922 798 794 c 0,6,7 - 858 734 858 734 895 644.5 c 128,-1,8 - 932 555 932 555 932 451 c 0,9,10 - 932 239 932 239 801.5 109.5 c 128,-1,11 - 671 -20 671 -20 469 -20 c 0,12,13 - 231 -20 231 -20 90 158 c 1,14,-1 - 213 205 l 1,15,16 - 289 82 289 82 437 82 c 128,-1,17 - 585 82 585 82 676.5 182.5 c 128,-1,18 - 768 283 768 283 768 449 c 128,-1,19 - 768 615 768 615 683.5 717 c 128,-1,20 - 599 819 599 819 479 819 c 0,21,22 - 398 819 398 819 343 762 c 128,-1,23 - 288 705 288 705 262 608 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0190 -Encoding: 400 400 615 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -20 102<409 737> 799 102<428 696> 1352 102<393 724> -VStem: 82 174<263 622> 143 174<1000 1276> -AnchorPoint: "cedilla" 555 0 basechar 0 -AnchorPoint: "horn" 856 1257 basechar 0 -AnchorPoint: "bottom" 575 0 basechar 0 -AnchorPoint: "ogonek" 580 0 basechar 0 -AnchorPoint: "top" 561 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -836 285 m 1,0,-1 - 987 244 l 1,1,2 - 942 124 942 124 837.5 52 c 128,-1,3 - 733 -20 733 -20 575 -20 c 0,4,5 - 472 -20 472 -20 386 12.5 c 128,-1,6 - 300 45 300 45 246 95 c 0,7,8 - 190 146 190 146 152 208 c 0,9,10 - 82 322 82 322 82 440 c 0,11,12 - 82 544 82 544 138 656 c 0,13,14 - 201 784 201 784 344 850 c 1,15,16 - 239 894 239 894 191 970.5 c 128,-1,17 - 143 1047 143 1047 143 1137 c 0,18,19 - 143 1268 143 1268 252.5 1361 c 128,-1,20 - 362 1454 362 1454 555 1454 c 0,21,22 - 668 1454 668 1454 776 1398 c 128,-1,23 - 884 1342 884 1342 940 1239 c 1,24,-1 - 788 1198 l 1,25,26 - 777 1282 777 1282 711 1317 c 128,-1,27 - 645 1352 645 1352 537 1352 c 128,-1,28 - 429 1352 429 1352 373 1291.5 c 128,-1,29 - 317 1231 317 1231 317 1133 c 128,-1,30 - 317 1035 317 1035 392 968 c 128,-1,31 - 467 901 467 901 625 901 c 2,32,-1 - 696 901 l 1,33,-1 - 696 799 l 1,34,-1 - 563 799 l 2,35,36 - 418 799 418 799 326 666 c 0,37,38 - 283 603 283 603 269.5 537.5 c 128,-1,39 - 256 472 256 472 256 431 c 128,-1,40 - 256 390 256 390 273.5 331.5 c 128,-1,41 - 291 273 291 273 324.5 215.5 c 128,-1,42 - 358 158 358 158 416 120 c 128,-1,43 - 474 82 474 82 545 82 c 0,44,45 - 677 82 677 82 745 129.5 c 128,-1,46 - 813 177 813 177 836 285 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni025B -Encoding: 603 603 616 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<290 614> 451 102<330 578> 819 102<310 611> -VStem: 61 164<145 379> 111 164<604 783> -AnchorPoint: "cedilla" 418 0 basechar 0 -AnchorPoint: "horn" 702 770 basechar 0 -AnchorPoint: "bottom" 428 0 basechar 0 -AnchorPoint: "ogonek" 449 0 basechar 0 -AnchorPoint: "top" 457 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -690 203 m 1,0,-1 - 811 178 l 1,1,2 - 770 101 770 101 678 40.5 c 128,-1,3 - 586 -20 586 -20 465 -20 c 0,4,5 - 257 -20 257 -20 159 54 c 128,-1,6 - 61 128 61 128 61 256 c 0,7,8 - 61 339 61 339 107 406.5 c 128,-1,9 - 153 474 153 474 248 512 c 1,10,11 - 180 548 180 548 145.5 597.5 c 128,-1,12 - 111 647 111 647 111 694 c 0,13,14 - 111 799 111 799 197.5 860.5 c 128,-1,15 - 284 922 284 922 438 922 c 0,16,17 - 706 922 706 922 772 735 c 1,18,-1 - 651 711 l 1,19,20 - 642 763 642 763 586.5 791 c 128,-1,21 - 531 819 531 819 447.5 819 c 128,-1,22 - 364 819 364 819 319 784.5 c 128,-1,23 - 274 750 274 750 274 691.5 c 128,-1,24 - 274 633 274 633 334 593 c 128,-1,25 - 394 553 394 553 520 553 c 2,26,-1 - 578 553 l 1,27,-1 - 578 451 l 1,28,-1 - 506 451 l 2,29,30 - 225 451 225 451 225 256 c 0,31,32 - 225 194 225 194 272 142 c 0,33,34 - 326 82 326 82 424 82 c 1,35,36 - 425 82 425 82 426 82 c 0,37,38 - 522 82 522 82 594 116 c 0,39,40 - 666 150 666 150 690 203 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0189 -Encoding: 393 393 617 -Width: 1304 -VWidth: 0 -Flags: W -HStem: 0 102<348 826> 725 102<61 174 348 664> 1331 102<348 841> -VStem: 174 174<102 725 827 1331> 1030 174<394 1073> -LayerCount: 2 -Fore -Refer: 198 272 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0256 -Encoding: 598 598 618 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -348 102<977 1199> -20 102<403 666> 819 102<403 659> 1311 41G<780 944> -VStem: 90 164<258 643> 780 164<-216 47 208 666 823 1352> -LayerCount: 2 -Fore -SplineSet -780 -68 m 6,0,-1 - 780 47 l 1,1,2 - 675 -20 675 -20 504 -20 c 0,3,4 - 314 -20 314 -20 200 120 c 0,5,6 - 90 256 90 256 90 451 c 0,7,8 - 90 580 90 580 139.5 686.5 c 128,-1,9 - 189 793 189 793 285 857.5 c 128,-1,10 - 381 922 381 922 520.5 922 c 128,-1,11 - 660 922 660 922 780 823 c 1,12,-1 - 780 1352 l 1,13,-1 - 944 1352 l 1,14,-1 - 944 0 l 2,15,16 - 944 -129 944 -129 969.5 -187.5 c 128,-1,17 - 995 -246 995 -246 1061 -246 c 128,-1,18 - 1127 -246 1127 -246 1163 -195 c 1,19,-1 - 1292 -256 l 1,20,21 - 1215 -348 1215 -348 1085 -348 c 0,22,23 - 970 -348 970 -348 879 -284 c 0,24,25 - 780 -214 780 -214 780 -68 c 6,0,-1 -780 398 m 0,26,27 - 780 476 780 476 768 546 c 128,-1,28 - 756 616 756 616 729.5 679.5 c 128,-1,29 - 703 743 703 743 653 781 c 128,-1,30 - 603 819 603 819 527.5 819 c 128,-1,31 - 452 819 452 819 386 762.5 c 128,-1,32 - 320 706 320 706 287 623 c 128,-1,33 - 254 540 254 540 254 451 c 128,-1,34 - 254 362 254 362 287 278.5 c 128,-1,35 - 320 195 320 195 386 138.5 c 128,-1,36 - 452 82 452 82 535 82 c 0,37,38 - 628 82 628 82 701 157 c 0,39,40 - 780 238 780 238 780 398 c 0,26,27 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0191 -Encoding: 401 401 619 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -348 102<-80 138> 799 102<348 817> 1331 102<348 1001> -VStem: 174 174<-216 799 901 1331> -LayerCount: 2 -Fore -SplineSet -348 -68 m 6,0,1 - 348 -271 348 -271 144 -332 c 0,2,3 - 90 -348 90 -348 33 -348 c 0,4,5 - -97 -348 -97 -348 -174 -256 c 1,6,-1 - -45 -195 l 1,7,8 - -9 -246 -9 -246 57 -246 c 128,-1,9 - 123 -246 123 -246 148.5 -187.5 c 128,-1,10 - 174 -129 174 -129 174 0 c 2,11,-1 - 174 1434 l 1,12,-1 - 1001 1434 l 1,13,-1 - 1001 1331 l 1,14,-1 - 348 1331 l 1,15,-1 - 348 901 l 1,16,-1 - 817 901 l 1,17,-1 - 817 799 l 1,18,-1 - 348 799 l 1,19,-1 - 348 -68 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: florin -Encoding: 402 402 620 -Width: 559 -VWidth: 0 -Flags: W -HStem: -348 102<-89 133> 799 102<61 166 330 492> 1270 102<363 538> -VStem: 166 164<-216 799 901 1238> -LayerCount: 2 -Fore -SplineSet -330 -68 m 6,0,1 - 330 -272 330 -272 134 -332 c 0,2,3 - 82 -348 82 -348 25 -348 c 0,4,5 - -105 -348 -105 -348 -182 -256 c 1,6,-1 - -53 -195 l 1,7,8 - -17 -246 -17 -246 49 -246 c 128,-1,9 - 115 -246 115 -246 140.5 -187.5 c 128,-1,10 - 166 -129 166 -129 166 0 c 2,11,-1 - 166 799 l 1,12,-1 - 31 799 l 1,13,-1 - 61 901 l 1,14,-1 - 166 901 l 1,15,-1 - 166 1096 l 2,16,17 - 166 1221 166 1221 233.5 1296.5 c 128,-1,18 - 301 1372 301 1372 422 1372 c 0,19,20 - 506 1372 506 1372 567 1350 c 1,21,-1 - 524 1239 l 1,22,23 - 499 1270 499 1270 443.5 1270 c 128,-1,24 - 388 1270 388 1270 359 1221 c 128,-1,25 - 330 1172 330 1172 330 1042 c 2,26,-1 - 330 901 l 1,27,-1 - 492 901 l 1,28,-1 - 492 799 l 1,29,-1 - 330 799 l 1,30,-1 - 330 -68 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0194 -Encoding: 404 404 621 -Width: 1153 -VWidth: 0 -Flags: W -HStem: -418 102<547 612> 1393 41G<25 201 960 1135> -VStem: 401 145<-315 -126> 612 143<-315 -125> -LayerCount: 2 -Fore -SplineSet -578 -123 m 1,0,1 - 547 -228 547 -228 547 -271.5 c 128,-1,2 - 547 -315 547 -315 579.5 -315 c 128,-1,3 - 612 -315 612 -315 612 -276.5 c 128,-1,4 - 612 -238 612 -238 578 -123 c 1,0,1 -451 -379 m 128,-1,6 - 401 -340 401 -340 401 -251.5 c 128,-1,7 - 401 -163 401 -163 502 106 c 1,8,-1 - 25 1434 l 1,9,-1 - 186 1434 l 1,10,-1 - 580 324 l 1,11,-1 - 975 1434 l 1,12,-1 - 1135 1434 l 1,13,-1 - 655 109 l 1,14,15 - 756 -179 756 -179 756 -259.5 c 128,-1,16 - 756 -340 756 -340 707 -379 c 128,-1,17 - 658 -418 658 -418 579.5 -418 c 128,-1,5 - 501 -418 501 -418 451 -379 c 128,-1,6 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0263 -Encoding: 611 611 622 -Width: 823 -VWidth: 0 -Flags: W -HStem: -418 102<377 456> 860 41G<18 187 645 811> -VStem: 238 137<-315 -97> 457 135<-315 -99> -LayerCount: 2 -Fore -SplineSet -489 117 m 1,0,1 - 520 40 520 40 556 -86 c 0,2,3 - 592 -212 592 -212 592 -276 c 128,-1,4 - 592 -340 592 -340 543 -379 c 128,-1,5 - 494 -418 494 -418 416 -418 c 128,-1,6 - 338 -418 338 -418 288 -379 c 128,-1,7 - 238 -340 238 -340 238 -274 c 128,-1,8 - 238 -208 238 -208 277.5 -78 c 128,-1,9 - 317 52 317 52 342 115 c 1,10,-1 - 18 901 l 1,11,-1 - 170 901 l 1,12,-1 - 416 297 l 1,13,-1 - 662 901 l 1,14,-1 - 811 901 l 1,15,-1 - 489 117 l 1,0,1 -416 -94 m 1,16,17 - 375 -242 375 -242 375 -264 c 128,-1,18 - 375 -286 375 -286 387 -300.5 c 128,-1,19 - 399 -315 399 -315 416 -315 c 128,-1,20 - 433 -315 433 -315 445 -300.5 c 128,-1,21 - 457 -286 457 -286 457 -254 c 128,-1,22 - 457 -222 457 -222 416 -94 c 1,16,17 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B2 -Encoding: 434 434 623 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<516 843> 1393 41G<156 330 827 1087> -VStem: 156 174<305 1434> 1073 174<368 1005> -AnchorPoint: "top" 600 1434 basechar 0 -AnchorPoint: "ogonek" 676 0 basechar 0 -AnchorPoint: "bottom" 672 0 basechar 0 -AnchorPoint: "horn" 1126 1085 basechar 0 -AnchorPoint: "cedilla" 651 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -827 1434 m 1,0,-1 - 1022 1434 l 1,1,2 - 1114 1278 1114 1278 1125.5 1249 c 128,-1,3 - 1137 1220 1137 1220 1157 1175.5 c 128,-1,4 - 1177 1131 1177 1131 1184 1102.5 c 128,-1,5 - 1191 1074 1191 1074 1205 1026.5 c 128,-1,6 - 1219 979 1219 979 1224 937.5 c 128,-1,7 - 1229 896 1229 896 1236 841 c 0,8,9 - 1247 755 1247 755 1247 607 c 128,-1,10 - 1247 459 1247 459 1198 340 c 128,-1,11 - 1149 221 1149 221 1069.5 144 c 128,-1,12 - 990 67 990 67 892.5 23.5 c 128,-1,13 - 795 -20 795 -20 719 -20 c 128,-1,14 - 643 -20 643 -20 597.5 -15.5 c 128,-1,15 - 552 -11 552 -11 494.5 5 c 128,-1,16 - 437 21 437 21 391.5 47.5 c 128,-1,17 - 346 74 346 74 300 122 c 0,18,19 - 254 170 254 170 224 235 c 0,20,21 - 156 381 156 381 156 614 c 2,22,-1 - 156 1434 l 1,23,-1 - 330 1434 l 1,24,-1 - 330 614 l 2,25,26 - 330 170 330 170 574 100 c 0,27,28 - 636 82 636 82 721 82 c 128,-1,29 - 806 82 806 82 891 159 c 128,-1,30 - 976 236 976 236 1024.5 354.5 c 128,-1,31 - 1073 473 1073 473 1073 569.5 c 128,-1,32 - 1073 666 1073 666 1069 728.5 c 128,-1,33 - 1065 791 1065 791 1060.5 840 c 128,-1,34 - 1056 889 1056 889 1044 941 c 128,-1,35 - 1032 993 1032 993 1024.5 1026.5 c 128,-1,36 - 1017 1060 1017 1060 998.5 1106.5 c 128,-1,37 - 980 1153 980 1153 971 1175.5 c 128,-1,38 - 962 1198 962 1198 938 1243 c 0,39,40 - 914 1288 914 1288 904 1304 c 0,41,42 - 876 1354 876 1354 827 1434 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni028B -Encoding: 651 651 624 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 671> 793 121<600 657> -VStem: 143 164<204 901> 782 164<230 651> -AnchorPoint: "top" 449 1004 basechar 0 -AnchorPoint: "ogonek" 475 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 877 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -567 793 m 1,0,-1 - 604 913 l 1,1,2 - 736 882 736 882 834 774 c 0,3,4 - 946 651 946 651 946 434 c 0,5,6 - 946 274 946 274 848 133 c 0,7,8 - 800 65 800 65 720 22.5 c 128,-1,9 - 640 -20 640 -20 541 -20 c 0,10,11 - 329 -20 329 -20 236 84 c 128,-1,12 - 143 188 143 188 143 410 c 2,13,-1 - 143 901 l 1,14,-1 - 307 901 l 1,15,-1 - 307 434 l 2,16,17 - 307 227 307 227 386 150 c 0,18,19 - 456 82 456 82 571 82 c 0,20,21 - 659 82 659 82 720.5 184.5 c 128,-1,22 - 782 287 782 287 782 432 c 0,23,24 - 782 729 782 729 567 793 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01E8 -Encoding: 488 488 625 -Width: 1243 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1008 1233> 1384 387 1393 41<174 348 967 1208> -VStem: 174 174<0 469 696 1434> 404 479 -LayerCount: 2 -Fore -Refer: 362 711 S 1 0 0 1 343 246 2 -Refer: 38 75 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01E9 -Encoding: 489 489 626 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 705 913> 860 41<652 877> 1309 387 1311 41<147 311> -VStem: 147 164<0 268 477 1352> 231 479 -LayerCount: 2 -Fore -Refer: 362 711 S 1 0 0 1 170 170 2 -Refer: 25 107 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0292 -Encoding: 658 658 627 -Width: 940 -VWidth: 0 -Flags: W -HStem: -410 102<262 579> 270 102<508 568> 799 102<90 590> -VStem: 694 164<-190 144> -AnchorPoint: "top" 438 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -385 270 m 2,0,-1 - 262 270 l 1,1,-1 - 590 799 l 1,2,-1 - 59 799 l 1,3,-1 - 90 901 l 1,4,-1 - 834 901 l 1,5,-1 - 508 373 l 1,6,7 - 610 373 610 373 698 313 c 0,8,9 - 858 203 858 203 858 -37 c 0,10,11 - 858 -192 858 -192 744.5 -301 c 128,-1,12 - 631 -410 631 -410 466 -410 c 128,-1,13 - 301 -410 301 -410 189 -349 c 128,-1,14 - 77 -288 77 -288 33 -197 c 1,15,-1 - 162 -147 l 1,16,17 - 191 -220 191 -220 263.5 -263.5 c 128,-1,18 - 336 -307 336 -307 420 -307 c 0,19,20 - 542 -307 542 -307 618 -232 c 128,-1,21 - 694 -157 694 -157 694 -37 c 0,22,23 - 694 270 694 270 385 270 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B7 -Encoding: 439 439 628 -Width: 1030 -VWidth: 0 -Flags: W -HStem: -20 102<322 620> 782 102<575 613> 1331 102<158 657> -VStem: 61 137<202 327> 762 174<241 621> -AnchorPoint: "top" 512 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -453 782 m 2,0,-1 - 330 782 l 1,1,-1 - 657 1331 l 1,2,-1 - 158 1331 l 1,3,-1 - 158 1434 l 1,4,-1 - 901 1434 l 1,5,-1 - 575 885 l 1,6,7 - 700 885 700 885 814 761 c 0,8,9 - 868 703 868 703 902 611.5 c 128,-1,10 - 936 520 936 520 936 416 c 128,-1,11 - 936 312 936 312 884 213 c 128,-1,12 - 832 114 832 114 734 47 c 128,-1,13 - 636 -20 636 -20 518 -20 c 0,14,15 - 301 -20 301 -20 190 72 c 128,-1,16 - 79 164 79 164 61 326 c 1,17,-1 - 199 340 l 1,18,19 - 211 221 211 221 284.5 151.5 c 128,-1,20 - 358 82 358 82 487 82 c 0,21,22 - 565 82 565 82 629.5 132 c 128,-1,23 - 694 182 694 182 728 257.5 c 128,-1,24 - 762 333 762 333 762 407.5 c 128,-1,25 - 762 482 762 482 746 544 c 128,-1,26 - 730 606 730 606 695.5 661 c 128,-1,27 - 661 716 661 716 598.5 749 c 128,-1,28 - 536 782 536 782 453 782 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01EE -Encoding: 494 494 629 -Width: 1030 -VWidth: 0 -Flags: W -HStem: -20 102<322 620> 782 102<575 613> 1331 102<158 657> 1384 387 -VStem: 61 137<202 327> 272 479 762 174<241 621> -LayerCount: 2 -Fore -SplineSet -453 782 m 2,0,-1 - 330 782 l 1,1,-1 - 657 1331 l 1,2,-1 - 158 1331 l 1,3,-1 - 158 1434 l 1,4,-1 - 477 1434 l 1,5,-1 - 272 1718 l 1,6,-1 - 336 1772 l 1,7,-1 - 512 1591 l 1,8,-1 - 688 1772 l 1,9,-1 - 752 1718 l 1,10,-1 - 547 1434 l 1,11,-1 - 901 1434 l 1,12,-1 - 575 885 l 1,13,14 - 700 885 700 885 814 761 c 0,15,16 - 868 703 868 703 902 611.5 c 128,-1,17 - 936 520 936 520 936 416 c 128,-1,18 - 936 312 936 312 884 213 c 128,-1,19 - 832 114 832 114 734 47 c 128,-1,20 - 636 -20 636 -20 518 -20 c 0,21,22 - 301 -20 301 -20 190 72 c 128,-1,23 - 79 164 79 164 61 326 c 1,24,-1 - 199 340 l 1,25,26 - 211 221 211 221 284.5 151.5 c 128,-1,27 - 358 82 358 82 487 82 c 0,28,29 - 565 82 565 82 629.5 132 c 128,-1,30 - 694 182 694 182 728 257.5 c 128,-1,31 - 762 333 762 333 762 407.5 c 128,-1,32 - 762 482 762 482 746 544 c 128,-1,33 - 730 606 730 606 695.5 661 c 128,-1,34 - 661 716 661 716 598.5 749 c 128,-1,35 - 536 782 536 782 453 782 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01EF -Encoding: 495 495 630 -Width: 940 -VWidth: 0 -Flags: W -HStem: -410 102<262 579> 270 102<508 568> 799 102<90 590> 954 387 -VStem: 199 479 694 164<-190 144> -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1026 -184 2 -Refer: 627 658 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni01E4 -Encoding: 484 484 631 -Width: 1458 -VWidth: 0 -Flags: W -HStem: -20 102<600 973> 451 102<901 1386> 717 102<913 1085> 1331 102<549 954> -VStem: 102 174<451 1008> 901 485<451 553> 1085 164<173 717> -LayerCount: 2 -Fore -SplineSet -913 819 m 1,0,-1 - 1249 819 l 1,1,-1 - 1249 553 l 1,2,-1 - 1386 553 l 1,3,-1 - 1386 451 l 1,4,-1 - 1249 451 l 1,5,-1 - 1249 209 l 1,6,7 - 1169 106 1169 106 1035.5 43 c 128,-1,8 - 902 -20 902 -20 741 -20 c 0,9,10 - 564 -20 564 -20 401 93 c 0,11,12 - 216 222 216 222 143 444 c 0,13,14 - 102 570 102 570 102 717 c 128,-1,15 - 102 864 102 864 139 986 c 128,-1,16 - 176 1108 176 1108 236 1190 c 128,-1,17 - 296 1272 296 1272 375 1328 c 0,18,19 - 524 1434 524 1434 702 1434 c 0,20,21 - 1091 1434 1091 1434 1243 1245 c 1,22,-1 - 1090 1178 l 1,23,24 - 982 1331 982 1331 733 1331 c 0,25,26 - 546 1331 546 1331 416 1186 c 0,27,28 - 276 1030 276 1030 276 717 c 0,29,30 - 276 587 276 587 309 478 c 0,31,32 - 342 370 342 370 394 298 c 0,33,34 - 448 226 448 226 514 176 c 0,35,36 - 684 90 684 90 772 82 c 1,37,38 - 967 82 967 82 1085 209 c 1,39,-1 - 1085 451 l 1,40,-1 - 901 451 l 1,41,-1 - 901 553 l 1,42,-1 - 1085 553 l 1,43,-1 - 1085 717 l 1,44,-1 - 913 717 l 1,45,-1 - 913 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01E5 -Encoding: 485 485 632 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -348 102<339 654> -164 102<543 686 881 1028> 20 102<384 705> 819 102<376 633> 860 41G<729 893> -VStem: 90 164<261 685> 729 164<-61 63 155 716 844 901> -LayerCount: 2 -Fore -SplineSet -729 186 m 1,0,-1 - 729 608 l 1,1,2 - 703 705 703 705 648 762 c 128,-1,3 - 593 819 593 819 512 819 c 0,4,5 - 394 819 394 819 324 728 c 128,-1,6 - 254 637 254 637 254 469.5 c 128,-1,7 - 254 302 254 302 330.5 212.5 c 128,-1,8 - 407 123 407 123 553 123 c 0,9,10 - 660 123 660 123 729 186 c 1,0,-1 -893 901 m 1,11,-1 - 893 180 l 2,12,13 - 893 18 893 18 881 -61 c 1,14,-1 - 1028 -61 l 1,15,-1 - 1028 -164 l 1,16,-1 - 856 -164 l 1,17,18 - 820 -266 820 -266 732.5 -307 c 128,-1,19 - 645 -348 645 -348 485.5 -348 c 128,-1,20 - 326 -348 326 -348 150 -256 c 1,21,-1 - 252 -150 l 1,22,23 - 389 -246 389 -246 512 -246 c 128,-1,24 - 635 -246 635 -246 686 -164 c 1,25,-1 - 543 -164 l 1,26,-1 - 543 -61 l 1,27,-1 - 719 -61 l 1,28,29 - 725 -22 725 -22 729 63 c 1,30,31 - 632 20 632 20 522 20 c 0,32,33 - 321 20 321 20 205.5 138.5 c 128,-1,34 - 90 257 90 257 90 471 c 0,35,36 - 90 683 90 683 208 805 c 0,37,38 - 322 922 322 922 470.5 922 c 128,-1,39 - 619 922 619 922 729 844 c 1,40,-1 - 729 901 l 1,41,-1 - 893 901 l 1,11,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0187 -Encoding: 391 391 633 -Width: 1523 -VWidth: 0 -Flags: W -HStem: -20 102<600 974> 1331 102<549 953 1296 1530> -VStem: 102 174<451 1009> 1114 154<1096 1192> -LayerCount: 2 -Fore -SplineSet -702 1434 m 0,0,1 - 994 1434 994 1434 1151 1325 c 1,2,3 - 1193 1385 1193 1385 1262.5 1414.5 c 128,-1,4 - 1332 1444 1332 1444 1409 1444 c 0,5,6 - 1539 1444 1539 1444 1616 1352 c 1,7,-1 - 1487 1290 l 1,8,9 - 1451 1341 1451 1341 1384.5 1341 c 128,-1,10 - 1318 1341 1318 1341 1293 1283 c 128,-1,11 - 1268 1225 1268 1225 1268 1096 c 1,12,-1 - 1114 1028 l 1,13,14 - 1114 1222 1114 1222 942 1294 c 0,15,16 - 853 1332 853 1332 749 1332 c 0,17,-1 - 746 1332 l 0,18,19 - 640 1332 640 1332 560 1295 c 128,-1,20 - 480 1258 480 1258 416 1186 c 0,21,22 - 276 1030 276 1030 276 717 c 0,23,24 - 276 587 276 587 309 478 c 0,25,26 - 342 370 342 370 394 298 c 0,27,28 - 448 226 448 226 514 176 c 0,29,30 - 684 90 684 90 772 82 c 1,31,32 - 1010 82 1010 82 1128 264 c 1,33,-1 - 1249 209 l 1,34,35 - 1169 106 1169 106 1035.5 43 c 128,-1,36 - 902 -20 902 -20 741 -20 c 0,37,38 - 564 -20 564 -20 401 93 c 0,39,40 - 216 222 216 222 143 444 c 0,41,42 - 102 570 102 570 102 717.5 c 128,-1,43 - 102 865 102 865 139 987.5 c 128,-1,44 - 176 1110 176 1110 236 1191 c 128,-1,45 - 296 1272 296 1272 375 1328 c 0,46,47 - 525 1434 525 1434 702 1434 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0188 -Encoding: 392 392 634 -Width: 1140 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 819 102<404 663> 1022 102<928 1147> -VStem: 90 164<253 648> 760 133<676 716> -LayerCount: 2 -Fore -SplineSet -932 158 m 1,0,1 - 791 -20 791 -20 553 -20 c 0,2,3 - 351 -20 351 -20 220.5 109.5 c 128,-1,4 - 90 239 90 239 90 451 c 0,5,6 - 90 555 90 555 127 645 c 0,7,8 - 164 734 164 734 224 794 c 0,9,10 - 353 922 353 922 512 922 c 0,11,12 - 637 922 637 922 729 864 c 1,13,14 - 740 1056 740 1056 928 1110 c 0,15,16 - 978 1124 978 1124 1034 1124 c 0,17,18 - 1164 1124 1164 1124 1241 1032 c 1,19,-1 - 1112 971 l 1,20,21 - 1076 1022 1076 1022 1004 1022 c 0,22,23 - 970 1022 970 1022 947 1003 c 0,24,25 - 893 958 893 958 893 788 c 2,26,-1 - 893 676 l 1,27,-1 - 760 608 l 1,28,29 - 734 705 734 705 679 762 c 128,-1,30 - 624 819 624 819 543 819 c 0,31,32 - 423 819 423 819 338.5 717 c 128,-1,33 - 254 615 254 615 254 449 c 128,-1,34 - 254 283 254 283 345.5 182.5 c 128,-1,35 - 437 82 437 82 585 82 c 128,-1,36 - 733 82 733 82 809 205 c 1,37,-1 - 932 158 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0196 -Encoding: 406 406 635 -Width: 641 -VWidth: 0 -Flags: W -HStem: -20 102<361 538> 1393 41G<172 346> -VStem: 172 174<93 1434> -AnchorPoint: "top" 262 1434 basechar 0 -AnchorPoint: "ogonek" 436 4 basechar 0 -AnchorPoint: "bottom" 453 4 basechar 0 -AnchorPoint: "cedilla" 471 4 basechar 0 -AnchorPoint: "horn" 291 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -172 1434 m 25,0,-1 - 346 1434 l 1,1,-1 - 346 328 l 2,2,3 - 346 173 346 173 354 149 c 0,4,5 - 362 125 362 125 370 109 c 0,6,7 - 384 82 384 82 417 82 c 128,-1,8 - 450 82 450 82 463.5 91.5 c 128,-1,9 - 477 101 477 101 500 133 c 1,10,-1 - 629 72 l 1,11,12 - 588 23 588 23 549 1.5 c 128,-1,13 - 510 -20 510 -20 453.5 -20 c 128,-1,14 - 397 -20 397 -20 348.5 -4.5 c 128,-1,15 - 300 11 300 11 260 43 c 0,16,17 - 172 112 172 112 172 260 c 2,18,-1 - 172 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0269 -Encoding: 617 617 636 -Width: 630 -VWidth: 0 -Flags: W -HStem: -20 102<356 472> 799 102<90 172> -VStem: 172 164<91 799> 492 115<95 236> -AnchorPoint: "top" 256 1004 basechar 0 -AnchorPoint: "ogonek" 385 0 basechar 0 -AnchorPoint: "bottom" 354 0 basechar 0 -AnchorPoint: "cedilla" 360 0 basechar 0 -AnchorPoint: "horn" 299 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -391 -20 m 0,0,1 - 228 -20 228 -20 188 149 c 0,2,3 - 172 215 172 215 172 311 c 2,4,-1 - 172 799 l 1,5,-1 - 90 799 l 1,6,-1 - 90 901 l 1,7,-1 - 336 901 l 1,8,-1 - 336 328 l 2,9,10 - 336 198 336 198 351 140 c 128,-1,11 - 366 82 366 82 410 82 c 0,12,13 - 492 82 492 82 492 236 c 1,14,-1 - 606 236 l 1,15,16 - 606 111 606 111 549.5 45.5 c 128,-1,17 - 493 -20 493 -20 391 -20 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0197 -Encoding: 407 407 637 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43G<172 346> 799 102<47 172 346 471> 1393 41G<172 346> -VStem: 172 174<0 799 901 1434> -AnchorPoint: "top" 262 1434 basechar 0 -AnchorPoint: "ogonek" 236 0 basechar 0 -AnchorPoint: "bottom" 252 0 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "horn" 291 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -47 799 m 1,0,-1 - 47 901 l 1,1,-1 - 172 901 l 1,2,-1 - 172 1434 l 1,3,-1 - 346 1434 l 1,4,-1 - 346 901 l 1,5,-1 - 471 901 l 1,6,-1 - 471 799 l 1,7,-1 - 346 799 l 1,8,-1 - 346 0 l 1,9,-1 - 172 0 l 1,10,-1 - 172 799 l 1,11,-1 - 47 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0268 -Encoding: 616 616 638 -Width: 512 -VWidth: 0 -Flags: W -HStem: 0 43G<178 342> 518 102<45 178 342 469> 860 41G<178 342> 1085 164<178 342> -VStem: 178 164<0 518 621 901 1085 1249> -AnchorPoint: "ogonek" 340 0 basechar 0 -AnchorPoint: "bottom" 264 0 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "horn" 311 717 basechar 0 -AnchorPoint: "top" 266 1167 basechar 0 -LayerCount: 2 -Fore -SplineSet -178 901 m 1,0,-1 - 342 901 l 1,1,-1 - 342 621 l 1,2,-1 - 469 621 l 1,3,-1 - 469 518 l 1,4,-1 - 342 518 l 1,5,-1 - 342 0 l 1,6,-1 - 178 0 l 1,7,-1 - 178 518 l 1,8,-1 - 45 518 l 1,9,-1 - 45 621 l 1,10,-1 - 178 621 l 1,11,-1 - 178 901 l 1,0,-1 -178 1249 m 1,12,-1 - 342 1249 l 1,13,-1 - 342 1085 l 1,14,-1 - 178 1085 l 1,15,-1 - 178 1249 l 1,12,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019F -Encoding: 415 415 639 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<571 874> 666 102<279 1161> 1352 102<554 872> -VStem: 102 176<440 666 768 1012> 1161 176<440 666 768 1005> -CounterMasks: 1 e0 -AnchorPoint: "top" 707 1434 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -946 24 m 128,-1,1 - 834 -20 834 -20 727.5 -20 c 128,-1,2 - 621 -20 621 -20 537.5 7 c 128,-1,3 - 454 34 454 34 375 93 c 128,-1,4 - 296 152 296 152 235.5 236 c 128,-1,5 - 175 320 175 320 138.5 444.5 c 128,-1,6 - 102 569 102 569 102 717 c 128,-1,7 - 102 865 102 865 136 990 c 0,8,9 - 170 1114 170 1114 228 1198 c 0,10,11 - 289 1286 289 1286 362 1342 c 0,12,13 - 508 1454 508 1454 686 1454 c 0,14,15 - 900 1454 900 1454 1060 1342 c 0,16,17 - 1337 1149 1337 1149 1337 720 c 0,18,19 - 1337 530 1337 530 1286 387 c 0,20,21 - 1235 243 1235 243 1146.5 155.5 c 128,-1,0 - 1058 68 1058 68 946 24 c 128,-1,1 -1161 666 m 1,22,-1 - 279 666 l 1,23,24 - 296 333 296 333 500 169 c 0,25,26 - 609 82 609 82 717 82 c 0,27,28 - 842 82 842 82 952 174 c 0,29,30 - 1072 276 1072 276 1126 454 c 0,31,32 - 1156 552 1156 552 1161 666 c 1,22,-1 -1161 768 m 1,33,34 - 1147 1108 1147 1108 945 1265 c 0,35,36 - 833 1352 833 1352 698 1352 c 0,37,38 - 584 1352 584 1352 480 1260 c 0,39,40 - 294 1095 294 1095 279 768 c 1,41,-1 - 1161 768 l 1,33,34 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0275 -Encoding: 629 629 640 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<386 674> 399 102<256 805> 819 102<406 674> -VStem: 90 166<226 399 502 655> 805 166<236 399 502 666> -CounterMasks: 1 e0 -AnchorPoint: "top" 535 1004 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -971 451 m 128,-1,1 - 971 222 971 222 845 101 c 128,-1,2 - 719 -20 719 -20 516.5 -20 c 128,-1,3 - 314 -20 314 -20 202 107 c 128,-1,4 - 90 234 90 234 90 451 c 0,5,6 - 90 555 90 555 127 645 c 0,7,8 - 164 734 164 734 224 794 c 0,9,10 - 353 922 353 922 512 922 c 0,11,12 - 719 922 719 922 845 801 c 128,-1,0 - 971 680 971 680 971 451 c 128,-1,1 -805 399 m 1,13,-1 - 256 399 l 1,14,15 - 267 249 267 249 339 165.5 c 128,-1,16 - 411 82 411 82 529.5 82 c 128,-1,17 - 648 82 648 82 720.5 170 c 128,-1,18 - 793 258 793 258 805 399 c 1,13,-1 -256 502 m 1,19,-1 - 805 502 l 1,20,21 - 793 643 793 643 720.5 731 c 128,-1,22 - 648 819 648 819 541 819 c 128,-1,23 - 434 819 434 819 351.5 732 c 128,-1,24 - 269 645 269 645 256 502 c 1,19,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A4 -Encoding: 420 420 641 -Width: 1314 -VWidth: 0 -Flags: W -HStem: 0 43G<399 573> 655 102<573 980> 918 43G<201 252> 1331 102<301 399 573 982> -VStem: 41 180<1018 1259> 399 174<0 655 758 1325> 1090 174<872 1217> -LayerCount: 2 -Fore -SplineSet -573 1331 m 1,0,-1 - 573 758 l 1,1,-1 - 850 758 l 2,2,3 - 912 758 912 758 960.5 785 c 128,-1,4 - 1009 812 1009 812 1036 856 c 0,5,6 - 1090 943 1090 943 1090 1044 c 0,7,8 - 1090 1178 1090 1178 1010 1266 c 0,9,10 - 951 1331 951 1331 853 1331 c 0,11,-1 - 850 1331 l 2,12,-1 - 573 1331 l 1,0,-1 -573 655 m 1,13,-1 - 573 0 l 1,14,-1 - 399 0 l 1,15,-1 - 399 1325 l 1,16,17 - 312 1311 312 1311 266.5 1260.5 c 128,-1,18 - 221 1210 221 1210 221 1153.5 c 128,-1,19 - 221 1097 221 1097 228 1072.5 c 128,-1,20 - 235 1048 235 1048 242.5 1041.5 c 128,-1,21 - 250 1035 250 1035 268 1024 c 1,22,-1 - 242 918 l 1,23,24 - 98 969 98 969 60 1044 c 0,25,26 - 42 1081 42 1081 41 1128 c 0,27,28 - 41 1262 41 1262 143 1348 c 128,-1,29 - 245 1434 245 1434 399 1434 c 2,30,-1 - 819 1434 l 2,31,32 - 1082 1434 1082 1434 1201 1252 c 0,33,34 - 1264 1156 1264 1156 1264 1044 c 128,-1,35 - 1264 932 1264 932 1200 836 c 0,36,37 - 1080 655 1080 655 819 655 c 2,38,-1 - 573 655 l 1,13,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A5 -Encoding: 421 421 642 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -16 102<439 692> 823 102<421 705> 1151 102<345 566> -VStem: 147 164<-410 59 240 710 866 1122> 838 164<262 660> -LayerCount: 2 -Fore -SplineSet -147 973 m 6,0,1 - 148 1140 148 1140 284 1212 c 0,2,3 - 360 1252 360 1252 453 1253 c 0,4,5 - 582 1253 582 1253 659 1161 c 1,6,-1 - 530 1100 l 1,7,8 - 494 1151 494 1151 428 1151 c 128,-1,9 - 362 1151 362 1151 336.5 1092.5 c 128,-1,10 - 311 1034 311 1034 311 905 c 2,11,-1 - 311 866 l 1,12,13 - 406 926 406 926 549 926 c 128,-1,14 - 692 926 692 926 792 861.5 c 128,-1,15 - 892 797 892 797 946.5 690 c 128,-1,16 - 1001 583 1001 583 1001 455 c 0,17,18 - 1001 262 1001 262 868.5 123 c 128,-1,19 - 736 -16 736 -16 547 -16 c 0,20,21 - 408 -16 408 -16 311 59 c 1,22,-1 - 311 -410 l 1,23,-1 - 147 -410 l 1,24,-1 - 147 973 l 6,0,1 -311 508 m 2,25,-1 - 311 504 l 2,26,27 - 311 196 311 196 467 112 c 0,28,29 - 515 86 515 86 581 86 c 128,-1,30 - 647 86 647 86 708 142 c 128,-1,31 - 769 198 769 198 803.5 283 c 128,-1,32 - 838 368 838 368 838 455.5 c 128,-1,33 - 838 543 838 543 808.5 627 c 128,-1,34 - 779 711 779 711 722.5 767 c 128,-1,35 - 666 823 666 823 598 823 c 0,36,37 - 443 823 443 823 377 742.5 c 128,-1,38 - 311 662 311 662 311 508 c 2,25,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A9 -Encoding: 425 425 643 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<307 983> 1331 102<317 942> -LayerCount: 2 -Fore -SplineSet -317 1331 m 1,0,-1 - 733 725 l 1,1,-1 - 307 102 l 1,2,-1 - 983 102 l 1,3,-1 - 983 0 l 1,4,-1 - 61 0 l 1,5,-1 - 549 725 l 1,6,-1 - 70 1434 l 1,7,-1 - 942 1434 l 1,8,-1 - 973 1331 l 1,9,-1 - 317 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0283 -Encoding: 643 643 644 -Width: 722 -VWidth: 0 -Flags: W -HStem: -20 102<75 296> 1270 102<527 702> -VStem: 330 164<111 1238> -LayerCount: 2 -Fore -SplineSet -494 260 m 2,0,1 - 494 92 494 92 358 20 c 0,2,3 - 282 -20 282 -20 188 -20 c 1,4,5 - 59 -20 59 -20 -18 72 c 1,6,-1 - 111 133 l 1,7,8 - 147 82 147 82 213 82 c 128,-1,9 - 279 82 279 82 304.5 140.5 c 128,-1,10 - 330 199 330 199 330 328 c 2,11,-1 - 330 1096 l 2,12,13 - 330 1221 330 1221 397.5 1296.5 c 128,-1,14 - 465 1372 465 1372 586 1372 c 0,15,16 - 670 1372 670 1372 731 1350 c 1,17,-1 - 688 1239 l 1,18,19 - 663 1270 663 1270 607.5 1270 c 128,-1,20 - 552 1270 552 1270 523 1221 c 128,-1,21 - 494 1172 494 1172 494 1042 c 2,22,-1 - 494 260 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B1 -Encoding: 433 433 645 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<533 863> 1188 246<497 578 817 897> 1331 102<250 403 991 1145> -VStem: 143 174<362 893> 403 174<1192 1331> 817 174<1192 1331> 1077 174<362 893> -AnchorPoint: "top" 707 1434 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1081 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -698 -20 m 128,-1,1 - 617 -20 617 -20 539.5 3.5 c 128,-1,2 - 462 27 462 27 390 80 c 0,3,4 - 316 133 316 133 262 209 c 0,5,6 - 143 375 143 375 143 646 c 0,7,8 - 143 822 143 822 222 981.5 c 128,-1,9 - 301 1141 301 1141 403 1239 c 1,10,-1 - 403 1331 l 1,11,-1 - 250 1331 l 1,12,-1 - 250 1434 l 1,13,-1 - 578 1434 l 1,14,-1 - 578 1188 l 1,15,16 - 504 1168 504 1168 443.5 1087.5 c 128,-1,17 - 383 1007 383 1007 350 891.5 c 128,-1,18 - 317 776 317 776 317 651 c 0,19,20 - 317 374 317 374 421 228 c 128,-1,21 - 525 82 525 82 697.5 82 c 128,-1,22 - 870 82 870 82 973.5 228 c 128,-1,23 - 1077 374 1077 374 1077 651 c 0,24,25 - 1077 918 1077 918 951 1088 c 0,26,27 - 891 1168 891 1168 817 1188 c 1,28,-1 - 817 1434 l 1,29,-1 - 1145 1434 l 1,30,-1 - 1145 1331 l 1,31,-1 - 991 1331 l 1,32,-1 - 991 1239 l 1,33,34 - 1093 1141 1093 1141 1172 981.5 c 128,-1,35 - 1251 822 1251 822 1251 667.5 c 128,-1,36 - 1251 513 1251 513 1218.5 399 c 128,-1,37 - 1186 285 1186 285 1132 209 c 128,-1,38 - 1078 133 1078 133 1006 80 c 128,-1,39 - 934 27 934 27 856.5 3.5 c 128,-1,0 - 779 -20 779 -20 698 -20 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni028A -Encoding: 650 650 646 -Width: 1054 -VWidth: 0 -Flags: W -HStem: -20 102<385 671> 668 233<406 467 590 651> 799 102<186 303 754 870> -VStem: 123 164<178 525> 303 164<667 799> 590 164<667 799> 770 164<178 525> -AnchorPoint: "top" 528 1004 basechar 0 -AnchorPoint: "ogonek" 475 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 805 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -528 -20 m 128,-1,1 - 429 -20 429 -20 349 14 c 0,2,3 - 270 48 270 48 222 102 c 0,4,5 - 124 213 124 213 123 334 c 0,6,7 - 123 486 123 486 194 586 c 0,8,9 - 250 666 250 666 303 705 c 1,10,-1 - 303 799 l 1,11,-1 - 186 799 l 1,12,-1 - 186 901 l 1,13,-1 - 467 901 l 1,14,-1 - 467 668 l 1,15,16 - 442 656 442 656 408 626 c 128,-1,17 - 374 596 374 596 350 561 c 0,18,19 - 287 468 287 468 287 342 c 0,20,21 - 287 218 287 218 352 150 c 0,22,23 - 418 82 418 82 528 82 c 128,-1,24 - 638 82 638 82 704 150.5 c 128,-1,25 - 770 219 770 219 770 332 c 0,26,27 - 770 476 770 476 706 562 c 0,28,29 - 652 635 652 635 608 658 c 2,30,-1 - 590 668 l 1,31,-1 - 590 901 l 1,32,-1 - 870 901 l 1,33,-1 - 870 799 l 1,34,-1 - 754 799 l 1,35,-1 - 754 705 l 1,36,37 - 807 666 807 666 851 604 c 0,38,39 - 934 486 934 486 934 334 c 0,40,41 - 934 212 934 212 836 102 c 0,42,43 - 788 48 788 48 707.5 14 c 128,-1,0 - 627 -20 627 -20 528 -20 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: IJ -Encoding: 306 306 647 -Width: 1392 -VWidth: 0 -Flags: W -HStem: -20 102<663 994> 0 43<172 346> 1393 41<172 346 1053 1227> -VStem: 172 174<0 1434> 1053 174<147 1434> -LayerCount: 2 -Fore -Refer: 37 74 N 1 0 0 1 438 0 2 -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: ij -Encoding: 307 307 648 -Width: 843 -VWidth: 0 -Flags: W -HStem: -348 102<305 526> 0 43<123 287> 860 41<123 287 559 723> 1085 164<123 287 559 723> -VStem: 123 164<0 901 1085 1249> 559 164<-216 901 1085 1249> -LayerCount: 2 -Fore -Refer: 13 106 N 1 0 0 1 307 0 2 -Refer: 8 105 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Ldot -Encoding: 319 319 649 -Width: 1083 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 639 178<522 686> 1393 41<174 348> -VStem: 174 174<102 1434> 522 164<639 817> -AnchorPoint: "top" 440 1434 basechar 0 -AnchorPoint: "cedilla" 596 0 basechar 0 -AnchorPoint: "bottom" 604 0 basechar 0 -AnchorPoint: "ogonek" 745 0 basechar 0 -AnchorPoint: "horn" 283 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 347 183 N 1 0 0 1 469 225 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ldot -Encoding: 320 320 650 -Width: 729 -VWidth: 0 -Flags: W -HStem: 0 43<147 311> 639 178<449 612> 1311 41<147 311> -VStem: 147 164<0 1352> 449 164<639 817> -AnchorPoint: "top" 229 1434 basechar 0 -AnchorPoint: "cedilla" 223 0 basechar 0 -AnchorPoint: "bottom" 227 0 basechar 0 -AnchorPoint: "ogonek" 233 0 basechar 0 -AnchorPoint: "horn" 266 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 347 183 N 1 0 0 1 395 225 2 -Refer: 15 108 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: napostrophe -Encoding: 329 329 651 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43<258 422 895 1059> 819 102<496 808> 860 41<258 422> 987 367<111 145> -VStem: 68 147<1141 1354> 258 164<0 756 870 901> 895 164<0 717> -LayerCount: 2 -Fore -Refer: 4 110 N 1 0 0 1 111 0 2 -Refer: 106 787 N 1 0 0 1 694 -283 2 -Validated: 1 -EndChar - -StartChar: uni018F -Encoding: 399 399 652 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<542 855> 614 102<262 1143> 1352 102<490 863> -VStem: 1143 178<427 614 717 1012> -AnchorPoint: "cedilla" 690 0 basechar 0 -AnchorPoint: "horn" 1206 1085 basechar 0 -AnchorPoint: "bottom" 711 0 basechar 0 -AnchorPoint: "ogonek" 715 0 basechar 0 -AnchorPoint: "top" 696 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1143 614 m 1,0,-1 - 262 614 l 1,1,2 - 292 318 292 318 490 162 c 0,3,4 - 617 89 617 89 674 82 c 1,5,6 - 757 82 757 82 829.5 113 c 128,-1,7 - 902 144 902 144 968.5 205.5 c 128,-1,8 - 1035 267 1035 267 1082.5 373 c 128,-1,9 - 1130 479 1130 479 1143 614 c 1,0,-1 -690 1352 m 0,10,11 - 459 1352 459 1352 334 1178 c 1,12,-1 - 180 1245 l 1,13,14 - 348 1454 348 1454 721 1454 c 0,15,16 - 892 1454 892 1454 1044 1341 c 0,17,18 - 1216 1214 1216 1214 1284 990 c 0,19,20 - 1322 868 1322 868 1322 716 c 0,21,22 - 1322 560 1322 560 1283 432 c 0,23,24 - 1245 304 1245 304 1182.5 221.5 c 128,-1,25 - 1120 139 1120 139 1036 83 c 0,26,27 - 882 -20 882 -20 684 -20 c 0,28,29 - 545 -20 545 -20 407 57 c 0,30,31 - 270 133 270 133 178 298 c 0,32,33 - 82 468 82 468 82 717 c 1,34,-1 - 1147 717 l 1,35,36 - 1147 874 1147 874 1107.5 997 c 128,-1,37 - 1068 1120 1068 1120 1002 1196 c 0,38,39 - 866 1352 866 1352 690 1352 c 0,10,11 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019E -Encoding: 414 414 653 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43G<147 311> 819 102<385 697> 860 41G<147 311> -VStem: 147 164<0 756 870 901> 784 164<-408 717> -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "top" 549 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -311 723 m 1,0,-1 - 311 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 901 l 1,3,-1 - 311 901 l 1,4,-1 - 311 870 l 1,5,6 - 410 922 410 922 520 922 c 0,7,8 - 736 922 736 922 842 816 c 128,-1,9 - 948 710 948 710 948 492 c 2,10,-1 - 948 -408 l 1,11,-1 - 784 -408 l 1,12,-1 - 784 467 l 2,13,14 - 784 677 784 677 720 751 c 0,15,16 - 662 819 662 819 542 819 c 128,-1,17 - 422 819 422 819 311 723 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0220 -Encoding: 544 544 654 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43G<147 322> 1352 102<464 826> 1393 41G<147 322> -VStem: 147 174<0 1251 1364 1434> 946 174<-412 1214> -LayerCount: 2 -Fore -SplineSet -147 0 m 9,0,-1 - 147 1434 l 1,1,-1 - 322 1434 l 1,2,-1 - 322 1364 l 1,3,4 - 324 1365 324 1365 343.5 1375.5 c 128,-1,5 - 363 1386 363 1386 369.5 1389 c 128,-1,6 - 376 1392 376 1392 395.5 1401.5 c 128,-1,7 - 415 1411 415 1411 427 1415 c 128,-1,8 - 439 1419 439 1419 459.5 1427 c 128,-1,9 - 480 1435 480 1435 497 1438.5 c 128,-1,10 - 514 1442 514 1442 536 1446 c 0,11,12 - 573 1454 573 1454 629 1454 c 0,13,14 - 853 1454 853 1454 986.5 1344.5 c 128,-1,15 - 1120 1235 1120 1235 1120 1024 c 2,16,-1 - 1120 -412 l 1,17,-1 - 946 -412 l 1,18,-1 - 946 999 l 2,19,20 - 946 1352 946 1352 659 1352 c 0,21,22 - 560 1352 560 1352 472.5 1312 c 128,-1,23 - 385 1272 385 1272 322 1217 c 1,24,-1 - 322 0 l 1,25,-1 - 147 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A2 -Encoding: 418 418 655 -Width: 1765 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1135 102<1272 1406> 1352 102<551 875> -VStem: 102 174<441 1012> 1163 174<438 1008> 1421 174<-412 1123> -LayerCount: 2 -Fore -SplineSet -1595 -412 m 1,0,-1 - 1421 -412 l 1,1,-1 - 1421 889 l 2,2,3 - 1421 1044 1421 1044 1414 1068 c 0,4,5 - 1406 1092 1406 1092 1398 1108 c 0,6,7 - 1384 1135 1384 1135 1351 1135 c 128,-1,8 - 1318 1135 1318 1135 1304.5 1125.5 c 128,-1,9 - 1291 1116 1291 1116 1268 1083 c 1,10,11 - 1337 923 1337 923 1337 727 c 128,-1,12 - 1337 531 1337 531 1286 387 c 0,13,14 - 1234 244 1234 244 1146 156 c 0,15,16 - 968 -20 968 -20 705 -20 c 1,17,18 - 526 -20 526 -20 375 93 c 0,19,20 - 204 220 204 220 138 444 c 0,21,22 - 102 568 102 568 102 716.5 c 128,-1,23 - 102 865 102 865 136 990 c 0,24,25 - 170 1114 170 1114 228 1198 c 0,26,27 - 289 1286 289 1286 362 1342 c 0,28,29 - 508 1454 508 1454 675 1454 c 0,30,31 - 1022 1454 1022 1454 1200 1204 c 1,32,33 - 1247 1237 1247 1237 1315 1237 c 0,34,35 - 1434 1237 1434 1237 1514.5 1167.5 c 128,-1,36 - 1595 1098 1595 1098 1595 956 c 2,37,-1 - 1595 -412 l 1,0,-1 -703 1352 m 0,38,39 - 641 1352 641 1352 583 1328 c 128,-1,40 - 525 1304 525 1304 470 1252 c 0,41,42 - 416 1200 416 1200 372 1127 c 0,43,44 - 276 967 276 967 276 717 c 0,45,46 - 276 588 276 588 306 478.5 c 128,-1,47 - 336 369 336 369 384 298 c 0,48,49 - 432 226 432 226 491 176 c 0,50,51 - 603 82 603 82 717 82 c 0,52,53 - 849 82 849 82 961 182 c 0,54,55 - 1163 363 1163 363 1163 717 c 0,56,57 - 1163 1087 1163 1087 954 1258 c 0,58,59 - 839 1352 839 1352 703 1352 c 0,38,39 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A3 -Encoding: 419 419 656 -Width: 1392 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 745 102<925 1058> 819 102<404 673> -VStem: 90 164<231 648> 807 164<241 664> 1073 174<-410 734> -LayerCount: 2 -Fore -SplineSet -1247 -410 m 1,0,-1 - 1073 -410 l 1,1,-1 - 1073 500 l 2,2,3 - 1073 656 1073 656 1065.5 679 c 128,-1,4 - 1058 702 1058 702 1050 718 c 0,5,6 - 1036 745 1036 745 1002.5 745 c 128,-1,7 - 969 745 969 745 956 736 c 128,-1,8 - 943 727 943 727 920 694 c 1,9,10 - 971 589 971 589 971 451 c 0,11,12 - 971 222 971 222 845 101 c 128,-1,13 - 719 -20 719 -20 516.5 -20 c 128,-1,14 - 314 -20 314 -20 202 107 c 128,-1,15 - 90 234 90 234 90 451 c 0,16,17 - 90 555 90 555 127 645 c 0,18,19 - 164 734 164 734 224 794 c 0,20,21 - 353 922 353 922 512 922 c 0,22,23 - 717 922 717 922 840 805 c 1,24,25 - 892 848 892 848 967 848 c 0,26,27 - 1086 848 1086 848 1166.5 778.5 c 128,-1,28 - 1247 709 1247 709 1247 567 c 2,29,-1 - 1247 -410 l 1,0,-1 -807 451 m 128,-1,31 - 807 613 807 613 733 716 c 128,-1,32 - 659 819 659 819 541 819 c 128,-1,33 - 423 819 423 819 338.5 717 c 128,-1,34 - 254 615 254 615 254 446.5 c 128,-1,35 - 254 278 254 278 327 180 c 128,-1,36 - 400 82 400 82 529.5 82 c 128,-1,37 - 659 82 659 82 733 185.5 c 128,-1,30 - 807 289 807 289 807 451 c 128,-1,31 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01AC -Encoding: 428 428 657 -Width: 1314 -VWidth: 0 -Flags: W -HStem: 0 43G<553 727> 918 43G<201 252> 1331 102<293 553 727 1243> -VStem: 41 180<1018 1259> 553 174<0 1331> -LayerCount: 2 -Fore -SplineSet -1243 1434 m 1,0,-1 - 1243 1331 l 1,1,-1 - 727 1331 l 1,2,-1 - 727 0 l 1,3,-1 - 553 0 l 1,4,-1 - 553 1331 l 1,5,-1 - 414 1331 l 2,6,7 - 329 1331 329 1331 275 1271.5 c 128,-1,8 - 221 1212 221 1212 221 1154.5 c 128,-1,9 - 221 1097 221 1097 228 1072.5 c 128,-1,10 - 235 1048 235 1048 242.5 1041.5 c 128,-1,11 - 250 1035 250 1035 268 1024 c 1,12,-1 - 242 918 l 1,13,14 - 98 969 98 969 60 1044 c 0,15,16 - 42 1081 42 1081 41 1128 c 0,17,18 - 41 1262 41 1262 143 1348 c 128,-1,19 - 245 1434 245 1434 399 1434 c 2,20,-1 - 1243 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01AD -Encoding: 429 429 658 -Width: 669 -VWidth: 0 -Flags: W -HStem: -20 102<368 545> 799 102<84 188 352 514> 1270 102<386 607> -VStem: 188 164<93 799 901 1240> -LayerCount: 2 -Fore -SplineSet -352 328 m 2,0,1 - 352 173 352 173 360 149 c 0,2,3 - 368 125 368 125 376 109 c 0,4,5 - 390 82 390 82 423 82 c 128,-1,6 - 456 82 456 82 469.5 91.5 c 128,-1,7 - 483 101 483 101 506 133 c 1,8,-1 - 635 72 l 1,9,10 - 594 23 594 23 555 1.5 c 128,-1,11 - 516 -20 516 -20 459.5 -20 c 128,-1,12 - 403 -20 403 -20 356 -4 c 0,13,14 - 308 12 308 12 270 44 c 0,15,16 - 188 114 188 114 188 260 c 2,17,-1 - 188 799 l 1,18,-1 - 53 799 l 1,19,-1 - 84 901 l 1,20,-1 - 188 901 l 1,21,-1 - 188 1092 l 2,22,23 - 188 1260 188 1260 324 1332 c 0,24,25 - 400 1372 400 1372 494 1372 c 0,26,27 - 623 1372 623 1372 700 1280 c 1,28,-1 - 571 1219 l 1,29,30 - 535 1270 535 1270 469 1270 c 128,-1,31 - 403 1270 403 1270 377.5 1211.5 c 128,-1,32 - 352 1153 352 1153 352 1024 c 2,33,-1 - 352 901 l 1,34,-1 - 514 901 l 1,35,-1 - 514 799 l 1,36,-1 - 352 799 l 1,37,-1 - 352 328 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01AE -Encoding: 430 430 659 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -348 102<763 982> 1331 102<41 553 727 1243> -VStem: 553 174<-216 1331> -LayerCount: 2 -Fore -SplineSet -727 0 m 2,0,1 - 727 -129 727 -129 752.5 -187.5 c 128,-1,2 - 778 -246 778 -246 844 -246 c 128,-1,3 - 910 -246 910 -246 946 -195 c 1,4,-1 - 1075 -256 l 1,5,6 - 998 -348 998 -348 868 -348 c 0,7,8 - 752 -348 752 -348 657 -284 c 0,9,10 - 553 -214 553 -214 553 -68 c 2,11,-1 - 553 1331 l 1,12,-1 - 41 1331 l 1,13,-1 - 41 1434 l 1,14,-1 - 1243 1434 l 1,15,-1 - 1243 1331 l 1,16,-1 - 727 1331 l 1,17,-1 - 727 0 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0288 -Encoding: 648 648 660 -Width: 567 -VWidth: 0 -Flags: W -HStem: -348 102<386 607> 799 102<84 188 352 514> -VStem: 188 164<-216 799 901 1198> -LayerCount: 2 -Fore -SplineSet -188 799 m 1,0,-1 - 53 799 l 1,1,-1 - 84 901 l 1,2,-1 - 188 901 l 1,3,-1 - 188 1198 l 1,4,-1 - 352 1229 l 1,5,-1 - 352 901 l 1,6,-1 - 514 901 l 1,7,-1 - 514 799 l 1,8,-1 - 352 799 l 1,9,-1 - 352 0 l 2,10,11 - 352 -129 352 -129 377.5 -187.5 c 128,-1,12 - 403 -246 403 -246 469 -246 c 128,-1,13 - 535 -246 535 -246 571 -195 c 1,14,-1 - 700 -256 l 1,15,16 - 623 -348 623 -348 494 -348 c 0,17,18 - 343 -348 343 -348 254 -254 c 0,19,20 - 188 -185 188 -185 188 -68 c 2,21,-1 - 188 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B5 -Encoding: 437 437 661 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<285 983> 696 102<246 422 645 813> 1331 102<102 750> -LayerCount: 2 -Fore -SplineSet -750 1331 m 1,0,-1 - 72 1331 l 1,1,-1 - 102 1434 l 1,2,-1 - 975 1434 l 1,3,-1 - 645 799 l 1,4,-1 - 813 799 l 1,5,-1 - 813 696 l 1,6,-1 - 592 696 l 1,7,-1 - 285 102 l 1,8,-1 - 983 102 l 1,9,-1 - 983 0 l 1,10,-1 - 61 0 l 1,11,-1 - 422 696 l 1,12,-1 - 246 696 l 1,13,-1 - 246 799 l 1,14,-1 - 475 799 l 1,15,-1 - 750 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B6 -Encoding: 438 438 662 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 102<299 823> 416 102<195 324 569 680> 799 102<74 573> -LayerCount: 2 -Fore -SplineSet -573 799 m 1,0,-1 - 43 799 l 1,1,-1 - 74 901 l 1,2,-1 - 817 901 l 1,3,-1 - 569 518 l 1,4,-1 - 680 518 l 1,5,-1 - 680 416 l 1,6,-1 - 502 416 l 1,7,-1 - 299 102 l 1,8,-1 - 823 102 l 1,9,-1 - 823 0 l 1,10,-1 - 53 0 l 1,11,-1 - 324 416 l 1,12,-1 - 195 416 l 1,13,-1 - 195 518 l 1,14,-1 - 391 518 l 1,15,-1 - 573 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01C0 -Encoding: 448 448 663 -Width: 456 -VWidth: 0 -Flags: W -HStem: 0 43<174 287> 1393 41<174 287> -VStem: 174 113<0 1434> -LayerCount: 2 -Fore -Refer: 59 124 N 1 0 0 1 82 0 2 -Validated: 1 -EndChar - -StartChar: uni01C1 -Encoding: 449 449 664 -Width: 722 -VWidth: 0 -Flags: W -HStem: 0 43<174 287 440 553> 1393 41<174 287 440 553> -VStem: 174 113<0 1434> 440 113<0 1434> -LayerCount: 2 -Fore -Refer: 59 124 N 1 0 0 1 348 0 2 -Refer: 59 124 N 1 0 0 1 82 0 2 -Validated: 1 -EndChar - -StartChar: uni01C2 -Encoding: 450 450 665 -Width: 708 -VWidth: 0 -Flags: W -HStem: 0 43G<303 416> 573 102<82 303 416 627> 799 102<82 303 416 627> 1393 41G<303 416> -VStem: 303 113<0 573 676 799 901 1434> -LayerCount: 2 -Fore -SplineSet -303 573 m 1,0,-1 - 82 573 l 1,1,-1 - 82 676 l 1,2,-1 - 303 676 l 1,3,-1 - 303 799 l 1,4,-1 - 82 799 l 1,5,-1 - 82 901 l 1,6,-1 - 303 901 l 1,7,-1 - 303 1434 l 1,8,-1 - 416 1434 l 1,9,-1 - 416 901 l 1,10,-1 - 627 901 l 1,11,-1 - 627 799 l 1,12,-1 - 416 799 l 1,13,-1 - 416 676 l 1,14,-1 - 627 676 l 1,15,-1 - 627 573 l 1,16,-1 - 416 573 l 1,17,-1 - 416 0 l 1,18,-1 - 303 0 l 1,19,-1 - 303 573 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01C3 -Encoding: 451 451 666 -Width: 356 -VWidth: 0 -Flags: W -HStem: 0 164<92 256> 1393 41<92 256> -VStem: 92 164<0 164 937 1434> 123 102<369 866> -LayerCount: 2 -Fore -Refer: 53 33 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Gcaron -Encoding: 486 486 667 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -20 102<600 973> 717 102<913 1085> 1331 102<549 954> 1384 387 -VStem: 102 174<451 1008> 477 479 1085 164<173 717> -LayerCount: 2 -Fore -SplineSet -913 819 m 1,0,-1 - 1249 819 l 1,1,-1 - 1249 209 l 1,2,3 - 1169 106 1169 106 1035.5 43 c 128,-1,4 - 902 -20 902 -20 741 -20 c 0,5,6 - 564 -20 564 -20 401 93 c 0,7,8 - 216 222 216 222 143 444 c 0,9,10 - 102 570 102 570 102 715 c 128,-1,11 - 102 860 102 860 137 980 c 128,-1,12 - 172 1100 172 1100 230 1180 c 128,-1,13 - 288 1260 288 1260 364 1318 c 0,14,15 - 507 1426 507 1426 682 1433 c 1,16,-1 - 477 1718 l 1,17,-1 - 541 1772 l 1,18,-1 - 717 1591 l 1,19,-1 - 893 1772 l 1,20,-1 - 956 1718 l 1,21,-1 - 752 1433 l 1,22,23 - 1100 1422 1100 1422 1243 1245 c 1,24,-1 - 1090 1178 l 1,25,26 - 982 1331 982 1331 733 1331 c 0,27,28 - 546 1331 546 1331 416 1186 c 0,29,30 - 276 1030 276 1030 276 717 c 0,31,32 - 276 587 276 587 309 478 c 0,33,34 - 342 370 342 370 394 298 c 0,35,36 - 448 226 448 226 514 176 c 0,37,38 - 684 90 684 90 772 82 c 1,39,40 - 967 82 967 82 1085 209 c 1,41,-1 - 1085 717 l 1,42,-1 - 913 717 l 1,43,-1 - 913 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: gcaron -Encoding: 487 487 668 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<339 671> -20 102<393 705> 819 102<378 633> 860 41<729 893> 954 387 -VStem: 90 164<235 670> 293 479 729 164<-181 23 114 716 844 901> -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1120 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01DE -Encoding: 478 478 669 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1516 178<383 547 752 915> 1802 82<401 872> -VStem: 383 164<1516 1694> 401 471<1802 1884> 752 164<1516 1694> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1235 532 2 -Refer: 142 196 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01DF -Encoding: 479 479 670 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1085 178<221 385 590 754> 1360 82<244 715> -VStem: 94 164<178 440> 221 164<1085 1264> 244 471<1360 1442> 590 164<1085 1264> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1077 90 2 -Refer: 132 228 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01F4 -Encoding: 500 500 671 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -20 102<600 973> 717 102<913 1085> 1331 102<549 954> 1501 387 -VStem: 102 174<451 1008> 608 350 1085 164<173 717> -LayerCount: 2 -Fore -Refer: 93 769 S 1 0 0 1 1305 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01F5 -Encoding: 501 501 672 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<339 671> -20 102<393 705> 819 102<378 633> 860 41<729 893> 1071 387 -VStem: 90 164<235 670> 397 350 729 164<-181 23 114 716 844 901> -LayerCount: 2 -Fore -Refer: 93 769 S 1 0 0 1 1094 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0200 -Encoding: 512 512 673 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1577 387 -VStem: 242 350 487 350 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1061 322 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0201 -Encoding: 513 513 674 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1044 387 -VStem: 29 350 94 164<178 440> 274 350 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 848 -211 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0202 -Encoding: 514 514 675 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1589 117<529 773> -VStem: 420 78<1512 1549> 805 78<1512 1549> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0203 -Encoding: 515 515 676 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1159 117<367 612> -VStem: 94 164<178 440> 258 78<1082 1118> 643 78<1082 1118> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0204 -Encoding: 516 516 677 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1577 387 -VStem: 174 174<102 799 901 1331> 178 350 424 350 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 997 322 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0205 -Encoding: 517 517 678 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1044 387 -VStem: 90 164<256 451> 102 350 348 350 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 922 -211 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0206 -Encoding: 518 518 679 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1589 117<492 737> -VStem: 174 174<102 799 901 1331> 383 78<1512 1549> 768 78<1512 1549> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0207 -Encoding: 519 519 680 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1159 117<408 653> -VStem: 90 164<256 451> 299 78<1082 1118> 684 78<1082 1118> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0208 -Encoding: 520 520 681 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1577 387 -VStem: -151 350 95 350 172 174<0 1434> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 669 322 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0209 -Encoding: 521 521 682 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1044 387 -VStem: -205 350 41 350 123 164<0 901> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 614 -211 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020A -Encoding: 522 522 683 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1589 117<140 384> -VStem: 31 78<1512 1549> 172 174<0 1434> 416 78<1512 1549> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 850 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020B -Encoding: 523 523 684 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1159 117<85 329> -VStem: -25 78<1082 1118> 123 164<0 901> 360 78<1082 1118> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 795 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020C -Encoding: 524 524 685 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1577 387 -VStem: 102 174<441 1012> 276 350 522 350 1163 174<438 1009> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1096 322 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020D -Encoding: 525 525 686 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1044 387 -VStem: 90 164<231 648> 102 350 348 350 807 164<241 660> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 922 -211 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020E -Encoding: 526 526 687 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1589 117<584 829> -VStem: 102 174<441 1012> 475 78<1512 1549> 860 78<1512 1549> 1163 174<438 1009> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020F -Encoding: 527 527 688 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1159 117<412 657> -VStem: 90 164<231 648> 303 78<1082 1118> 688 78<1082 1118> 807 164<241 660> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0210 -Encoding: 528 528 689 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 901 1069> 655 102<348 615> 1331 102<348 757> 1577 387 -VStem: -26 350 174 174<0 655 758 1331> 220 350 864 174<873 1217> 901 168<0 202> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 794 322 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0211 -Encoding: 529 529 690 -Width: 677 -VWidth: 0 -Flags: W -HStem: 0 43<147 311> 819 102<356 647> 860 41<147 311> 1044 387 -VStem: 0 350 147 164<0 774 874 901> 246 350 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 819 -211 2 -Refer: 18 114 S 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0212 -Encoding: 530 530 691 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 901 1069> 655 102<348 615> 1331 102<348 757> 1589 117<439 683> -VStem: 174 174<0 655 758 1331> 330 78<1512 1549> 715 78<1512 1549> 864 174<873 1217> 901 168<0 202> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1149 246 2 -Refer: 44 82 S 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0213 -Encoding: 531 531 692 -Width: 677 -VWidth: 0 -Flags: W -HStem: 0 43<147 311> 819 102<356 647> 860 41<147 311> 1159 117<275 520> -VStem: 147 164<0 774 874 901> 166 78<1082 1118> 551 78<1082 1118> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 985 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0214 -Encoding: 532 532 693 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1577 387 -VStem: 156 174<328 1434> 292 350 538 350 1073 174<328 1434> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1111 322 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0215 -Encoding: 533 533 694 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1044 387 -VStem: 134 350 143 164<204 901> 380 350 780 164<0 33 135 901> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 953 -211 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0216 -Encoding: 534 534 695 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1589 117<599 843> -VStem: 156 174<328 1434> 489 78<1512 1549> 874 78<1512 1549> 1073 174<328 1434> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0217 -Encoding: 535 535 696 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1159 117<427 671> -VStem: 143 164<204 901> 317 78<1082 1118> 702 78<1082 1118> 780 164<0 33 135 901> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021E -Encoding: 542 542 697 -Width: 1351 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1008 1182> 717 102<348 1008> 1384 387 1393 41<174 348 1008 1182> -VStem: 174 174<0 717 819 1434> 445 479 1008 174<0 717 819 1434> -LayerCount: 2 -Fore -Refer: 362 711 N 1 0 0 1 384 246 2 -Refer: 35 72 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021F -Encoding: 543 543 698 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 784 948> 819 102<385 697> 1309 387 1311 41<147 311> -VStem: 147 164<0 756 870 1352> 231 479 784 164<0 717> -LayerCount: 2 -Fore -Refer: 362 711 N 1 0 0 1 170 170 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0222 -Encoding: 546 546 699 -Width: 1126 -VWidth: 0 -Flags: W -HStem: -20 102<403 741> 1352 102<401 496 639 734> -VStem: 92 174<215 539> 141 174<984 1262> 829 174<949 1239> 860 174<196 504> -LayerCount: 2 -Fore -SplineSet -639 1454 m 1,0,1 - 783 1454 783 1454 893.5 1345 c 128,-1,2 - 1004 1236 1004 1236 1004 1085 c 0,3,4 - 1004 944 1004 944 924 872 c 0,5,6 - 853 807 853 807 737 766 c 1,7,8 - 957 653 957 653 1011 504 c 0,9,10 - 1034 441 1034 441 1034 365 c 0,11,12 - 1034 197 1034 197 901 88.5 c 128,-1,13 - 768 -20 768 -20 559 -20 c 128,-1,14 - 350 -20 350 -20 221 93.5 c 128,-1,15 - 92 207 92 207 92 365 c 0,16,17 - 92 592 92 592 306 704 c 0,18,19 - 347 726 347 726 401 748 c 1,20,21 - 284 808 284 808 233 866 c 0,22,23 - 141 969 141 969 141 1103.5 c 128,-1,24 - 141 1238 141 1238 248.5 1346 c 128,-1,25 - 356 1454 356 1454 496 1454 c 1,26,-1 - 496 1352 l 1,27,28 - 424 1352 424 1352 369.5 1278.5 c 128,-1,29 - 315 1205 315 1205 315 1100 c 0,30,31 - 315 994 315 994 438 917 c 0,32,33 - 493 882 493 882 606 829 c 1,34,35 - 714 875 714 875 771.5 932.5 c 128,-1,36 - 829 990 829 990 829 1087.5 c 128,-1,37 - 829 1185 829 1185 768.5 1268.5 c 128,-1,38 - 708 1352 708 1352 639 1352 c 1,39,-1 - 639 1454 l 1,0,1 -522 692 m 1,40,41 - 332 620 332 620 286 490 c 0,42,43 - 266 435 266 435 266 365 c 0,44,45 - 266 247 266 247 350.5 164.5 c 128,-1,46 - 435 82 435 82 572 82 c 128,-1,47 - 709 82 709 82 784.5 156.5 c 128,-1,48 - 860 231 860 231 860 365 c 0,49,50 - 860 502 860 502 720 591 c 0,51,52 - 657 631 657 631 591.5 660.5 c 128,-1,53 - 526 690 526 690 522 692 c 1,40,41 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0223 -Encoding: 547 547 700 -Width: 1003 -VWidth: 0 -Flags: W -HStem: -20 102<374 633> 1126 100<328 466> 1229 102<557 665> -VStem: 92 174<202 525> 141 174<894 1121> 707 174<907 1187> 737 174<193 514> -LayerCount: 2 -Fore -SplineSet -389 1126 m 0,0,1 - 315 1126 315 1126 315 999 c 0,2,3 - 316 922 316 922 378 876 c 0,4,5 - 429 838 429 838 524 799 c 1,6,7 - 611 846 611 846 659 902 c 128,-1,8 - 707 958 707 958 707 1040 c 0,9,10 - 707 1229 707 1229 557 1229 c 1,11,-1 - 557 1331 l 1,12,13 - 706 1331 706 1331 793.5 1259 c 128,-1,14 - 881 1187 881 1187 881 1040 c 0,15,16 - 881 923 881 923 811 853 c 0,17,18 - 751 793 751 793 651 745 c 1,19,20 - 842 650 842 650 890 506 c 0,21,22 - 910 444 910 444 911 365 c 0,23,24 - 911 169 911 169 805.5 74.5 c 128,-1,25 - 700 -20 700 -20 502.5 -20 c 128,-1,26 - 305 -20 305 -20 198.5 77.5 c 128,-1,27 - 92 175 92 175 92 365 c 0,28,29 - 92 500 92 500 174 586 c 0,30,31 - 241 657 241 657 356 715 c 1,32,33 - 254 763 254 763 197.5 827.5 c 128,-1,34 - 141 892 141 892 141 998.5 c 128,-1,35 - 141 1105 141 1105 210 1166 c 128,-1,36 - 279 1227 279 1227 385 1227 c 0,37,38 - 433 1227 433 1227 485 1212 c 1,39,-1 - 459 1114 l 1,40,41 - 418 1126 418 1126 389 1126 c 0,0,1 -475 662 m 1,42,43 - 321 583 321 583 282 470 c 0,44,45 - 266 423 266 423 266 365 c 0,46,47 - 266 247 266 247 334.5 164.5 c 128,-1,48 - 403 82 403 82 503.5 82 c 128,-1,49 - 604 82 604 82 670.5 159 c 128,-1,50 - 737 236 737 236 737 365 c 0,51,52 - 737 534 737 534 555 625 c 0,53,54 - 523 641 523 641 475 662 c 1,42,43 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni022A -Encoding: 554 554 701 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1516 178<438 602 807 971> 1802 82<465 936> -VStem: 102 174<441 1012> 438 164<1516 1694> 465 471<1802 1884> 807 164<1516 1694> 1163 174<438 1009> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1298 532 2 -Refer: 157 214 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni022B -Encoding: 555 555 702 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1085 178<266 430 635 799> 1372 82<289 760> -VStem: 90 164<231 648> 266 164<1085 1264> 289 471<1372 1454> 635 164<1085 1264> 807 164<241 660> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1122 102 2 -Refer: 136 246 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni022C -Encoding: 556 556 703 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1516 117<710 908> 1581 117<525 724> 1782 82<461 932> -VStem: 102 174<441 1012> 434 84<1516 1566> 461 471<1782 1864> 915 84<1647 1698> 1163 174<438 1009> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1294 512 2 -Refer: 156 213 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni022D -Encoding: 557 557 704 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1085 117<538 736> 1151 117<353 552> 1372 82<289 760> -VStem: 90 164<231 648> 262 84<1085 1136> 289 471<1372 1454> 743 84<1217 1268> 807 164<241 660> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1122 102 2 -Refer: 131 245 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni022E -Encoding: 558 558 705 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1516 178<623 786> -VStem: 102 174<441 1012> 623 164<1516 1694> 1163 174<438 1009> -AnchorPoint: "top" 707 1700 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1296 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni022F -Encoding: 559 559 706 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1085 178<467 631> -VStem: 90 164<231 648> 467 164<1085 1264> 807 164<241 660> -AnchorPoint: "top" 549 1264 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1141 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0230 -Encoding: 560 560 707 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1516 178<623 786> 1782 82<461 932> -VStem: 102 174<441 1012> 461 471<1782 1864> 623 164<1516 1694> 1163 174<438 1009> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1294 512 2 -Refer: 705 558 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0231 -Encoding: 561 561 708 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1085 178<467 631> 1346 82<303 774> -VStem: 90 164<231 648> 303 471<1346 1427> 467 164<1085 1264> 807 164<241 660> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1137 76 2 -Refer: 706 559 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0232 -Encoding: 562 562 709 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<391 565> 1393 41<23 228 731 936> 1516 82<231 702> -VStem: 231 471<1516 1597> 391 174<0 709> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1065 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0233 -Encoding: 563 563 710 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 860 41<45 209 685 864> 1085 82<215 686> -VStem: 215 471<1085 1167> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1049 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0241 -Encoding: 577 577 711 -Width: 933 -VWidth: 0 -Flags: W -HStem: 0 43G<225 389> 557 98<389 531> 1270 102<247 562> -VStem: 225 164<0 557> 678 164<792 1152> -LayerCount: 2 -Fore -SplineSet -389 0 m 1,0,-1 - 225 0 l 1,1,-1 - 225 655 l 1,2,-1 - 344 655 l 2,3,4 - 472 656 472 656 568 720 c 0,5,6 - 678 794 678 794 678 956.5 c 128,-1,7 - 678 1119 678 1119 603.5 1194.5 c 128,-1,8 - 529 1270 529 1270 379 1270 c 0,9,10 - 307 1270 307 1270 265.5 1240.5 c 128,-1,11 - 224 1211 224 1211 184 1147 c 1,12,-1 - 61 1194 l 1,13,14 - 129 1280 129 1280 210.5 1326 c 128,-1,15 - 292 1372 292 1372 410 1372 c 0,16,17 - 615 1372 615 1372 728.5 1268 c 128,-1,18 - 842 1164 842 1164 842 954 c 0,19,20 - 842 861 842 861 803 784 c 0,21,22 - 764 706 764 706 700 658 c 0,23,24 - 566 557 566 557 392 557 c 0,25,26 - 390 557 390 557 389 557 c 1,27,-1 - 389 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0242 -Encoding: 578 578 712 -Width: 872 -VWidth: 0 -Flags: W -HStem: 0 246<225 387> 147 98<389 507> 819 102<260 531> -VStem: 225 164<0 147> 627 164<363 717> -LayerCount: 2 -Fore -SplineSet -389 0 m 1,0,-1 - 225 0 l 1,1,-1 - 225 246 l 1,2,-1 - 307 246 l 2,3,4 - 546 246 546 246 608 409 c 0,5,6 - 627 459 627 459 627 524 c 0,7,8 - 627 819 627 819 379 819 c 0,9,10 - 304 818 304 818 259 774 c 0,11,12 - 222 738 222 738 184 676 c 1,13,-1 - 61 723 l 1,14,15 - 135 817 135 817 215 869.5 c 128,-1,16 - 295 922 295 922 392.5 922 c 128,-1,17 - 490 922 490 922 556 900 c 0,18,19 - 622 878 622 878 676 831 c 0,20,21 - 790 733 790 733 791 524 c 0,22,23 - 790 314 790 314 606 206 c 0,24,25 - 505 148 505 148 389 147 c 1,26,-1 - 389 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0251 -Encoding: 593 593 713 -Width: 1126 -VWidth: 0 -Flags: W -HStem: -20 102<418 735 920 1040> 819 102<404 664> 860 41G<733 897> -VStem: 90 164<253 648> 733 164<134 750 860 901> 1040 70<91 131> -AnchorPoint: "top" 535 1004 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -897 901 m 1,0,-1 - 897 276 l 2,1,2 - 897 82 897 82 973 82 c 0,3,4 - 999 82 999 82 1019.5 95.5 c 128,-1,5 - 1040 109 1040 109 1040 131 c 1,6,-1 - 1110 131 l 1,7,8 - 1110 71 1110 71 1061 25.5 c 128,-1,9 - 1012 -20 1012 -20 938 -20 c 128,-1,10 - 864 -20 864 -20 801 43 c 1,11,12 - 693 -20 693 -20 553 -20 c 0,13,14 - 351 -20 351 -20 220.5 109.5 c 128,-1,15 - 90 239 90 239 90 451 c 0,16,17 - 90 555 90 555 127 645 c 0,18,19 - 164 734 164 734 224 794 c 0,20,21 - 353 922 353 922 512 922 c 0,22,23 - 636 922 636 922 733 860 c 1,24,-1 - 733 901 l 1,25,-1 - 897 901 l 1,0,-1 -733 682 m 1,26,27 - 668 819 668 819 545.5 819 c 128,-1,28 - 423 819 423 819 338.5 717 c 128,-1,29 - 254 615 254 615 254 449 c 128,-1,30 - 254 283 254 283 345.5 182.5 c 128,-1,31 - 437 82 437 82 584 82 c 0,32,33 - 679 82 679 82 745 133 c 1,34,35 - 733 170 733 170 733 213 c 2,36,-1 - 733 682 l 1,26,27 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C6D -Encoding: 11373 11373 714 -Width: 1445 -VWidth: 0 -Flags: W -HStem: -20 102<600 976 1161 1337> 1352 102<556 936> 1393 41G<971 1145> -VStem: 102 174<451 1012> 971 174<137 1312 1419 1434> -AnchorPoint: "top" 707 1434 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1110 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -971 1434 m 1,0,-1 - 1145 1434 l 1,1,-1 - 1145 328 l 2,2,3 - 1145 173 1145 173 1152.5 149 c 128,-1,4 - 1160 125 1160 125 1168 109 c 0,5,6 - 1182 82 1182 82 1215.5 82 c 128,-1,7 - 1249 82 1249 82 1262 91 c 128,-1,8 - 1275 100 1275 100 1298 133 c 1,9,-1 - 1427 72 l 1,10,11 - 1386 23 1386 23 1347 1.5 c 128,-1,12 - 1308 -20 1308 -20 1251 -20 c 0,13,14 - 1126 -20 1126 -20 1051 49 c 1,15,16 - 910 -20 910 -20 741 -20 c 0,17,18 - 564 -20 564 -20 401 93 c 0,19,20 - 216 222 216 222 143 444 c 0,21,22 - 102 570 102 570 102 717.5 c 128,-1,23 - 102 865 102 865 139 989.5 c 128,-1,24 - 176 1114 176 1114 236 1198 c 128,-1,25 - 296 1282 296 1282 375 1341 c 0,26,27 - 526 1454 526 1454 690.5 1454 c 128,-1,28 - 855 1454 855 1454 971 1419 c 1,29,-1 - 971 1434 l 1,0,-1 -971 1288 m 1,30,31 - 868 1352 868 1352 755 1352 c 128,-1,32 - 642 1352 642 1352 561 1312.5 c 128,-1,33 - 480 1273 480 1273 415.5 1197 c 128,-1,34 - 351 1121 351 1121 313.5 997 c 128,-1,35 - 276 873 276 873 276 730 c 128,-1,36 - 276 587 276 587 309 478 c 0,37,38 - 342 370 342 370 394 298 c 0,39,40 - 448 226 448 226 514 176 c 0,41,42 - 683 90 683 90 770 82 c 1,43,44 - 901 82 901 82 993 135 c 1,45,46 - 971 190 971 190 971 260 c 2,47,-1 - 971 1288 l 1,30,31 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni026F -Encoding: 623 623 715 -Width: 1605 -VWidth: 0 -Flags: W -HStem: -20 102<383 670 950 1247> 0 43G<1303 1466> 860 41G<147 311 725 889 1303 1466> -VStem: 147 164<175 901> 725 164<149 901> 1303 164<0 27 135 901> -CounterMasks: 1 1c -LayerCount: 2 -Fore -SplineSet -1303 172 m 1,0,-1 - 1303 901 l 1,1,-1 - 1466 901 l 1,2,-1 - 1466 0 l 1,3,-1 - 1303 0 l 1,4,-1 - 1303 27 l 1,5,6 - 1223 -20 1223 -20 1124 -20 c 0,7,8 - 908 -20 908 -20 815 86 c 1,9,10 - 757 41 757 41 680 10.5 c 128,-1,11 - 603 -20 603 -20 541 -20 c 0,12,13 - 350 -20 350 -20 248.5 87.5 c 128,-1,14 - 147 195 147 195 147 410 c 2,15,-1 - 147 901 l 1,16,-1 - 311 901 l 1,17,-1 - 311 401 l 2,18,19 - 311 204 311 204 370 138 c 0,20,21 - 420 82 420 82 498 82 c 1,22,23 - 664 82 664 82 725 182 c 1,24,-1 - 725 901 l 1,25,-1 - 889 901 l 1,26,-1 - 889 401 l 2,27,28 - 889 202 889 202 939 139 c 0,29,30 - 966 105 966 105 1001 93.5 c 128,-1,31 - 1036 82 1036 82 1094 82 c 0,32,33 - 1210 82 1210 82 1303 172 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019C -Encoding: 412 412 716 -Width: 1871 -VWidth: 0 -Flags: W -HStem: -20 102<434 726 1115 1387> 0 43G<1530 1704> 1311 41G<172 346 854 1028 1530 1704> -VStem: 172 174<181 1352> 854 174<215 1352> 1530 174<0 102 228 1352> -LayerCount: 2 -Fore -SplineSet -602 -20 m 0,0,1 - 172 -20 172 -20 172 410 c 2,2,-1 - 172 1352 l 1,3,-1 - 346 1352 l 1,4,-1 - 346 434 l 2,5,6 - 346 230 346 230 405 153 c 0,7,8 - 460 82 460 82 571 82 c 1,9,10 - 688 84 688 84 768 157 c 0,11,12 - 854 236 854 236 854 410 c 2,13,-1 - 854 1352 l 1,14,-1 - 1028 1352 l 1,15,-1 - 1028 434 l 2,16,17 - 1028 230 1028 230 1087 153 c 0,18,19 - 1142 82 1142 82 1253 82 c 0,20,21 - 1394 82 1394 82 1494 242 c 0,22,23 - 1518 280 1518 280 1530 315 c 1,24,-1 - 1530 1352 l 1,25,-1 - 1704 1352 l 1,26,-1 - 1704 0 l 1,27,-1 - 1530 0 l 1,28,-1 - 1530 102 l 1,29,30 - 1444 -20 1444 -20 1292.5 -20 c 129,-1,31 - 1141 -20 1141 -20 1062 15 c 128,-1,32 - 983 50 983 50 928 127 c 1,33,34 - 864 51 864 51 773.5 15.5 c 128,-1,35 - 683 -20 683 -20 602 -20 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0271 -Encoding: 625 625 717 -Width: 1605 -VWidth: 0 -Flags: W -HStem: -348 102<1048 1269> 0 43G<147 311 725 889> 819 102<367 664 944 1231> 860 41G<147 311> -VStem: 147 164<0 766 874 901> 725 164<0 753> 1303 164<-216 726> -CounterMasks: 1 0e -LayerCount: 2 -Fore -SplineSet -1466 -68 m 18,0,1 - 1466 -272 1466 -272 1270 -332 c 0,2,3 - 1218 -348 1218 -348 1161 -348 c 0,4,5 - 1031 -348 1031 -348 954 -256 c 1,6,-1 - 1083 -195 l 1,7,8 - 1119 -246 1119 -246 1185.5 -246 c 128,-1,9 - 1252 -246 1252 -246 1277.5 -187.5 c 128,-1,10 - 1303 -129 1303 -129 1303 0 c 2,11,-1 - 1303 500 l 2,12,13 - 1303 696 1303 696 1244 762 c 0,14,15 - 1194 818 1194 818 1116 819 c 0,16,17 - 950 819 950 819 889 719 c 1,18,-1 - 889 0 l 1,19,-1 - 725 0 l 1,20,-1 - 725 500 l 2,21,22 - 725 699 725 699 675 762 c 0,23,24 - 648 796 648 796 613 807.5 c 128,-1,25 - 578 819 578 819 520 819 c 0,26,27 - 404 819 404 819 311 729 c 1,28,-1 - 311 0 l 1,29,-1 - 147 0 l 1,30,-1 - 147 901 l 1,31,-1 - 311 901 l 1,32,-1 - 311 874 l 1,33,34 - 393 922 393 922 489 922 c 0,35,36 - 705 922 705 922 799 815 c 1,37,38 - 857 860 857 860 934 891 c 128,-1,39 - 1011 922 1011 922 1073 922 c 0,40,41 - 1264 922 1264 922 1365 814.5 c 128,-1,42 - 1466 707 1466 707 1466 492 c 2,43,-1 - 1466 -68 l 18,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C6E -Encoding: 11374 11374 718 -Width: 1626 -VWidth: 0 -Flags: W -HStem: -348 102<1028 1246> 0 43G<174 348> 1393 41G<174 367 1263 1456> -VStem: 174 174<0 1098> 1282 174<-216 1098> -LayerCount: 2 -Fore -SplineSet -1456 -68 m 2,0,1 - 1456 -271 1456 -271 1252 -332 c 0,2,3 - 1198 -348 1198 -348 1141 -348 c 0,4,5 - 1011 -348 1011 -348 934 -256 c 1,6,-1 - 1063 -195 l 1,7,8 - 1099 -246 1099 -246 1165 -246 c 128,-1,9 - 1231 -246 1231 -246 1256.5 -187.5 c 128,-1,10 - 1282 -129 1282 -129 1282 0 c 2,11,-1 - 1282 1098 l 1,12,-1 - 815 102 l 1,13,-1 - 348 1098 l 1,14,-1 - 348 0 l 1,15,-1 - 174 0 l 1,16,-1 - 174 1434 l 1,17,-1 - 348 1434 l 1,18,-1 - 815 432 l 1,19,-1 - 1282 1434 l 1,20,-1 - 1456 1434 l 1,21,-1 - 1456 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni027D -Encoding: 637 637 719 -Width: 677 -VWidth: 0 -Flags: W -HStem: -348 102<345 566> 819 102<356 647> 860 41G<147 311> -VStem: 147 164<-216 774 874 901> -LayerCount: 2 -Fore -SplineSet -672 741 m 1,0,1 - 631 819 631 819 511 819 c 128,-1,2 - 391 819 391 819 311 735 c 1,3,-1 - 311 0 l 2,4,5 - 311 -129 311 -129 336.5 -187.5 c 128,-1,6 - 362 -246 362 -246 428 -246 c 128,-1,7 - 494 -246 494 -246 530 -195 c 1,8,-1 - 659 -256 l 1,9,10 - 582 -348 582 -348 453 -348 c 0,11,12 - 302 -348 302 -348 213 -254 c 0,13,14 - 147 -185 147 -185 147 -68 c 2,15,-1 - 147 901 l 1,16,-1 - 311 901 l 1,17,-1 - 311 874 l 1,18,19 - 390 922 390 922 490 922 c 128,-1,20 - 590 922 590 922 672 893 c 1,21,-1 - 672 741 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0244 -Encoding: 580 580 720 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 696 102<57 156 330 1073 1247 1346> 1393 41G<156 330 1073 1247> -VStem: 156 174<328 696 799 1434> 1073 174<328 696 799 1434> -AnchorPoint: "top" 721 1434 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "cedilla" 692 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -57 696 m 1,0,-1 - 57 799 l 1,1,-1 - 156 799 l 1,2,-1 - 156 1434 l 1,3,-1 - 330 1434 l 1,4,-1 - 330 799 l 1,5,-1 - 1073 799 l 1,6,-1 - 1073 1434 l 1,7,-1 - 1247 1434 l 1,8,-1 - 1247 799 l 1,9,-1 - 1346 799 l 1,10,-1 - 1346 696 l 1,11,-1 - 1247 696 l 1,12,-1 - 1247 610 l 2,13,14 - 1247 190 1247 190 1017 55 c 0,15,16 - 890 -20 890 -20 696 -20 c 0,17,18 - 538 -20 538 -20 412 55 c 0,19,20 - 338 99 338 99 283 166.5 c 128,-1,21 - 228 234 228 234 192 348.5 c 128,-1,22 - 156 463 156 463 156 610 c 2,23,-1 - 156 696 l 1,24,-1 - 57 696 l 1,0,-1 -1073 696 m 1,25,-1 - 330 696 l 1,26,-1 - 330 610 l 2,27,28 - 330 203 330 203 574 108 c 0,29,30 - 641 82 641 82 700.5 82 c 128,-1,31 - 760 82 760 82 807 95 c 128,-1,32 - 854 108 854 108 904 144.5 c 128,-1,33 - 954 181 954 181 990 238 c 0,34,35 - 1073 369 1073 369 1073 610 c 2,36,-1 - 1073 696 l 1,25,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0289 -Encoding: 649 649 721 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<416 723> 0 43G<780 944> 416 102<68 143 307 780 944 1020> 860 41G<143 307 780 944> -VStem: 143 164<204 416 518 901> 780 164<0 33 135 416 518 901> -AnchorPoint: "top" 549 1004 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -68 416 m 1,0,-1 - 68 518 l 1,1,-1 - 143 518 l 1,2,-1 - 143 901 l 1,3,-1 - 307 901 l 1,4,-1 - 307 518 l 1,5,-1 - 780 518 l 1,6,-1 - 780 901 l 1,7,-1 - 944 901 l 1,8,-1 - 944 518 l 1,9,-1 - 1020 518 l 1,10,-1 - 1020 416 l 1,11,-1 - 944 416 l 1,12,-1 - 944 0 l 1,13,-1 - 780 0 l 1,14,-1 - 780 33 l 1,15,16 - 668 -20 668 -20 546.5 -20 c 128,-1,17 - 425 -20 425 -20 345.5 10.5 c 128,-1,18 - 266 41 266 41 222 101 c 0,19,20 - 143 210 143 210 143 411 c 0,21,22 - 143 414 143 414 143 416 c 1,23,-1 - 68 416 l 1,0,-1 -307 416 m 1,24,25 - 310 82 310 82 571 82 c 0,26,27 - 687 82 687 82 780 172 c 1,28,-1 - 780 416 l 1,29,-1 - 307 416 l 1,24,25 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni028C -Encoding: 652 652 722 -Width: 849 -VWidth: 0 -Flags: W -HStem: 0 43G<18 197 673 838> 860 41G<331 525> -AnchorPoint: "bottom" 424 0 basechar 0 -AnchorPoint: "cedilla" 418 0 basechar 0 -AnchorPoint: "ogonek" 418 0 basechar 0 -AnchorPoint: "horn" 545 717 basechar 0 -AnchorPoint: "top" 432 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -346 901 m 1,0,-1 - 510 901 l 1,1,-1 - 838 0 l 1,2,-1 - 688 0 l 1,3,-1 - 436 696 l 1,4,-1 - 182 0 l 1,5,-1 - 18 0 l 1,6,-1 - 346 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0245 -Encoding: 581 581 723 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43G<39 218 1085 1264> 1393 41G<546 756> -AnchorPoint: "top" 651 1434 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "horn" 819 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -1100 0 m 1,0,-1 - 651 1231 l 1,1,-1 - 203 0 l 1,2,-1 - 39 0 l 1,3,-1 - 561 1434 l 1,4,-1 - 741 1434 l 1,5,-1 - 1264 0 l 1,6,-1 - 1100 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0294 -Encoding: 660 660 724 -Width: 933 -VWidth: 0 -Flags: W -HStem: 0 43<225 389> 557 98<389 531> 1270 102<247 562> -VStem: 225 164<0 557> 678 164<792 1152> -LayerCount: 2 -Fore -Refer: 711 577 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni2C64 -Encoding: 11364 11364 725 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -348 102<384 603> 0 43G<901 1069> 655 102<348 615> 1331 102<348 757> -VStem: 174 174<-216 655 758 1331> 864 174<873 1217> 901 168<0 202> -LayerCount: 2 -Fore -SplineSet -174 -68 m 2,0,-1 - 174 1434 l 1,1,-1 - 594 1434 l 2,2,3 - 857 1434 857 1434 976 1252 c 0,4,5 - 1038 1157 1038 1157 1038 1044 c 0,6,7 - 1038 937 1038 937 976 836 c 0,8,9 - 907 725 907 725 762 680 c 1,10,11 - 866 576 866 576 967.5 358 c 128,-1,12 - 1069 140 1069 140 1069 0 c 1,13,-1 - 901 0 l 1,14,15 - 901 142 901 142 793 355 c 128,-1,16 - 685 568 685 568 571 655 c 1,17,-1 - 348 655 l 1,18,-1 - 348 0 l 2,19,20 - 348 -129 348 -129 373.5 -187.5 c 128,-1,21 - 399 -246 399 -246 465 -246 c 128,-1,22 - 531 -246 531 -246 567 -195 c 1,23,-1 - 696 -256 l 1,24,25 - 619 -348 619 -348 489 -348 c 0,26,27 - 373 -348 373 -348 278 -284 c 0,28,29 - 174 -214 174 -214 174 -68 c 2,0,-1 -348 1331 m 1,30,-1 - 348 758 l 1,31,-1 - 625 758 l 2,32,33 - 749 758 749 758 810 856 c 0,34,35 - 864 943 864 943 864 1044 c 0,36,37 - 864 1145 864 1145 810 1233 c 0,38,39 - 750 1331 750 1331 625 1331 c 2,40,-1 - 348 1331 l 1,30,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01CD -Encoding: 461 461 726 -Width: 1298 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1516 387 -VStem: 412 479 -LayerCount: 2 -Fore -Refer: 362 711 N 1 0 0 1 350 377 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -EndChar - -StartChar: uni01CE -Encoding: 462 462 727 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1044 387 -VStem: 94 164<178 440> 199 479 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 362 711 N 1 0 0 1 137 -94 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01CF -Encoding: 463 463 728 -Width: 514 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1516 387 -VStem: 18 479 172 174<0 1434> -LayerCount: 2 -Fore -Refer: 362 711 N 1 0 0 1 -43 377 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -EndChar - -StartChar: uni01D0 -Encoding: 464 464 729 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1044 387 -VStem: -35 479 123 164<0 901> -LayerCount: 2 -Fore -Refer: 362 711 S 1 0 0 1 -96 -94 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D1 -Encoding: 465 465 730 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1516 387 -VStem: 102 174<441 1012> 473 479 1163 174<438 1009> -LayerCount: 2 -Fore -Refer: 362 711 N 1 0 0 1 412 377 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D2 -Encoding: 466 466 731 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1044 387 -VStem: 90 164<231 648> 272 479 807 164<241 660> -LayerCount: 2 -Fore -Refer: 362 711 N 1 0 0 1 211 -94 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D3 -Encoding: 467 467 732 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1434 387 -VStem: 156 174<328 1434> 461 479 1073 174<328 1434> -LayerCount: 2 -Fore -Refer: 362 711 N 1 0 0 1 399 295 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D4 -Encoding: 468 468 733 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1044 387 -VStem: 143 164<204 901> 304 479 780 164<0 33 135 901> -LayerCount: 2 -Fore -Refer: 362 711 N 1 0 0 1 243 -94 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D5 -Encoding: 469 469 734 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1516 178<453 616 821 985> 1802 82<475 946> -VStem: 156 174<328 1434> 453 164<1516 1694> 475 471<1802 1884> 821 164<1516 1694> 1073 174<328 1434> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1309 532 2 -Refer: 161 220 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D6 -Encoding: 470 470 735 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1085 178<281 444 649 813> 1372 82<303 774> -VStem: 143 164<204 901> 281 164<1085 1264> 303 471<1372 1454> 649 164<1085 1264> 780 164<0 33 135 901> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1137 102 2 -Refer: 137 252 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D7 -Encoding: 471 471 736 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1434 178<453 616 821 985> 1700 279 -VStem: 156 174<328 1434> 453 164<1434 1612> 688 276 821 164<1434 1612> 1073 174<328 1434> -LayerCount: 2 -Fore -Refer: 593 58624 S 1 0 0 1 541 219 2 -Refer: 99 776 N 1 0 0 1 1309 164 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D8 -Encoding: 472 472 737 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1085 178<281 444 649 813> 1386 387 -VStem: 143 164<204 901> 281 164<1085 1264> 483 350 649 164<1085 1264> 780 164<0 33 135 901> -LayerCount: 2 -Fore -Refer: 882 714 N 1 0 0 1 410 131 2 -Refer: 137 252 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D9 -Encoding: 473 473 738 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1434 178<453 616 821 985> 1612 387 -VStem: 156 174<328 1434> 453 164<1434 1612> 475 479 821 164<1434 1612> 1073 174<328 1434> -LayerCount: 2 -Fore -Refer: 362 711 N 1 0 0 1 414 473 2 -Refer: 99 776 N 1 0 0 1 1309 164 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01DA -Encoding: 474 474 739 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1085 178<281 444 649 813> 1257 387 -VStem: 143 164<204 901> 281 164<1085 1264> 307 479 649 164<1085 1264> 780 164<0 33 135 901> -LayerCount: 2 -Fore -Refer: 362 711 N 1 0 0 1 246 119 2 -Refer: 137 252 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01DB -Encoding: 475 475 740 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1393 41<156 330 1073 1247> 1434 178<453 616 821 985> 1700 279 -VStem: 156 174<328 1434> 453 164<1434 1612> 494 276 821 164<1434 1612> 1073 174<328 1434> -LayerCount: 2 -Fore -Refer: 594 58625 S 1 0 0 1 346 219 2 -Refer: 99 776 N 1 0 0 1 1309 164 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01DC -Encoding: 476 476 741 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 0 43<780 944> 860 41<143 307 780 944> 1085 178<281 444 649 813> 1386 387 -VStem: 143 164<204 901> 260 350 281 164<1085 1264> 649 164<1085 1264> 780 164<0 33 135 901> -LayerCount: 2 -Fore -Refer: 883 715 N 1 0 0 1 186 131 2 -Refer: 137 252 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni048A -Encoding: 1162 1162 742 -Width: 1542 -VWidth: 0 -Flags: W -HStem: 0 102<1237 1290> 1393 41G<174 348 1063 1237> 1436 117<545 864> -VStem: 174 174<0 61 309 1434> 467 76<1558 1644> 866 76<1558 1644> 1063 174<102 1122 1372 1434> -LayerCount: 2 -Fore -SplineSet -551 1624 m 1,0,-1 - 543 1581 l 1,1,2 - 543 1552 543 1552 653 1552 c 2,3,-1 - 756 1552 l 2,4,5 - 866 1552 866 1552 866 1581 c 1,6,-1 - 858 1624 l 1,7,8 - 858 1647 858 1647 885 1647 c 128,-1,9 - 912 1647 912 1647 927 1626.5 c 128,-1,10 - 942 1606 942 1606 942 1573 c 0,11,12 - 942 1515 942 1515 870 1475.5 c 128,-1,13 - 798 1436 798 1436 705 1436 c 128,-1,14 - 612 1436 612 1436 539.5 1475.5 c 128,-1,15 - 467 1515 467 1515 467 1573 c 0,16,17 - 467 1606 467 1606 482 1626.5 c 128,-1,18 - 497 1647 497 1647 524 1647 c 128,-1,19 - 551 1647 551 1647 551 1624 c 1,0,-1 -1063 1434 m 1,20,-1 - 1237 1434 l 1,21,-1 - 1237 102 l 1,22,-1 - 1483 102 l 1,23,-1 - 1331 -254 l 1,24,-1 - 1237 -254 l 1,25,-1 - 1290 0 l 1,26,-1 - 1063 0 l 1,27,-1 - 1063 1122 l 1,28,-1 - 348 61 l 1,29,-1 - 348 0 l 1,30,-1 - 174 0 l 1,31,-1 - 174 1434 l 1,32,-1 - 348 1434 l 1,33,-1 - 348 309 l 1,34,-1 - 1063 1372 l 1,35,-1 - 1063 1434 l 1,20,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048B -Encoding: 1163 1163 743 -Width: 1214 -VWidth: 0 -Flags: W -HStem: 0 102<934 963> 860 41G<123 287 741 934> 1085 117<367 685> -VStem: 123 164<227 901> 289 76<1208 1293> 688 76<1208 1293> 770 164<102 668> -LayerCount: 2 -Fore -SplineSet -373 1274 m 1,0,-1 - 365 1231 l 1,1,2 - 365 1202 365 1202 475 1202 c 2,3,-1 - 578 1202 l 2,4,5 - 688 1202 688 1202 688 1231 c 1,6,-1 - 680 1274 l 1,7,8 - 680 1296 680 1296 708 1296 c 0,9,10 - 764 1296 764 1296 764 1230.5 c 128,-1,11 - 764 1165 764 1165 691.5 1125 c 128,-1,12 - 619 1085 619 1085 526.5 1085 c 128,-1,13 - 434 1085 434 1085 361.5 1125 c 128,-1,14 - 289 1165 289 1165 289 1223 c 0,15,16 - 289 1256 289 1256 303.5 1276 c 128,-1,17 - 318 1296 318 1296 345.5 1296 c 128,-1,18 - 373 1296 373 1296 373 1274 c 1,0,-1 -123 901 m 1,19,-1 - 287 901 l 1,20,-1 - 287 227 l 1,21,-1 - 770 901 l 1,22,-1 - 934 901 l 1,23,-1 - 934 102 l 1,24,-1 - 1155 102 l 1,25,-1 - 1004 -254 l 1,26,-1 - 909 -254 l 1,27,-1 - 963 0 l 1,28,-1 - 770 0 l 1,29,-1 - 770 668 l 1,30,-1 - 287 0 l 1,31,-1 - 123 0 l 1,32,-1 - 123 901 l 1,19,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048C -Encoding: 1164 1164 744 -Width: 1171 -VWidth: 0 -Flags: W -HStem: 0 102<430 816> 799 102<430 819> 1085 102<82 256 430 655> 1393 41G<256 430> -VStem: 256 174<102 799 901 1085 1188 1434> 946 174<260 638> -LayerCount: 2 -Fore -SplineSet -1087.5 614.5 m 128,-1,1 - 1120 536 1120 536 1120 464.5 c 128,-1,2 - 1120 393 1120 393 1104 330 c 0,3,4 - 1090 268 1090 268 1054 208 c 128,-1,5 - 1018 148 1018 148 966 102 c 0,6,7 - 851 0 851 0 666 0 c 2,8,-1 - 256 0 l 1,9,-1 - 256 1085 l 1,10,-1 - 82 1085 l 1,11,-1 - 82 1188 l 1,12,-1 - 256 1188 l 1,13,-1 - 256 1434 l 1,14,-1 - 430 1434 l 1,15,-1 - 430 1188 l 1,16,-1 - 655 1188 l 1,17,-1 - 655 1085 l 1,18,-1 - 430 1085 l 1,19,-1 - 430 901 l 1,20,-1 - 662 901 l 2,21,22 - 763 901 763 901 851 861 c 128,-1,23 - 939 821 939 821 997 757 c 128,-1,0 - 1055 693 1055 693 1087.5 614.5 c 128,-1,1 -430 799 m 1,24,-1 - 430 102 l 1,25,-1 - 696 102 l 2,26,27 - 758 102 758 102 808 137 c 128,-1,28 - 858 172 858 172 887 226 c 0,29,30 - 946 337 946 337 946 435.5 c 128,-1,31 - 946 534 946 534 921 609.5 c 128,-1,32 - 896 685 896 685 837 742 c 128,-1,33 - 778 799 778 799 696 799 c 2,34,-1 - 430 799 l 1,24,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048D -Encoding: 1165 1165 745 -Width: 1046 -VWidth: 0 -Flags: W -HStem: 0 102<408 764> 440 102<408 761> 651 102<51 244 408 625> 860 41G<244 408> -VStem: 244 164<102 440 543 651 754 901> 817 164<151 385> -LayerCount: 2 -Fore -SplineSet -981 264 m 0,0,1 - 981 159 981 159 906 86 c 0,2,3 - 818 0 818 0 586 0 c 2,4,-1 - 244 0 l 1,5,-1 - 244 651 l 1,6,-1 - 51 651 l 1,7,-1 - 51 754 l 1,8,-1 - 244 754 l 1,9,-1 - 244 901 l 1,10,-1 - 408 901 l 1,11,-1 - 408 754 l 1,12,-1 - 625 754 l 1,13,-1 - 625 651 l 1,14,-1 - 408 651 l 1,15,-1 - 408 543 l 1,16,-1 - 582 543 l 2,17,18 - 795 543 795 543 888 478 c 128,-1,19 - 981 413 981 413 981 264 c 0,0,1 -408 440 m 1,20,-1 - 408 102 l 1,21,-1 - 627 102 l 2,22,23 - 721 102 721 102 769 145 c 128,-1,24 - 817 188 817 188 817 266 c 128,-1,25 - 817 344 817 344 767 392 c 128,-1,26 - 717 440 717 440 606 440 c 2,27,-1 - 408 440 l 1,20,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048E -Encoding: 1166 1166 746 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348> 655 102<348 663> 1331 102<348 757> -VStem: 174 174<0 655 758 1331> 864 174<873 1217> -LayerCount: 2 -Fore -SplineSet -774 813 m 1,0,1 - 864 897 864 897 864 1044 c 0,2,3 - 864 1145 864 1145 810 1233 c 0,4,5 - 750 1331 750 1331 625 1331 c 2,6,-1 - 348 1331 l 1,7,-1 - 348 758 l 1,8,-1 - 625 758 l 2,9,10 - 652 758 652 758 664 760 c 1,11,-1 - 557 870 l 1,12,-1 - 668 963 l 1,13,-1 - 774 813 l 1,0,1 -348 655 m 1,14,-1 - 348 0 l 1,15,-1 - 174 0 l 1,16,-1 - 174 1434 l 1,17,-1 - 594 1434 l 2,18,19 - 857 1434 857 1434 976 1252 c 0,20,21 - 1038 1157 1038 1157 1038 1054.5 c 128,-1,22 - 1038 952 1038 952 990 861 c 128,-1,23 - 942 770 942 770 846 715 c 1,24,-1 - 907 629 l 1,25,-1 - 844 575 l 1,26,-1 - 748 676 l 1,27,28 - 680 655 680 655 594 655 c 2,29,-1 - 348 655 l 1,14,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048F -Encoding: 1167 1167 747 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -16 102<439 692> 823 102<421 705> 864 41G<147 311> -VStem: 147 164<-410 59 240 710 866 905> 838 164<260 660> -LayerCount: 2 -Fore -SplineSet -311 508 m 2,0,-1 - 311 504 l 2,1,2 - 311 196 311 196 467 112 c 0,3,4 - 515 86 515 86 575.5 86 c 128,-1,5 - 636 86 636 86 696 133 c 1,6,-1 - 582 252 l 1,7,-1 - 692 344 l 1,8,-1 - 776 227 l 1,9,10 - 838 335 838 335 838 439 c 128,-1,11 - 838 543 838 543 808.5 627 c 128,-1,12 - 779 711 779 711 722.5 767 c 128,-1,13 - 666 823 666 823 598 823 c 0,14,15 - 443 823 443 823 377 742.5 c 128,-1,16 - 311 662 311 662 311 508 c 2,0,-1 -1001 455 m 0,17,18 - 1001 254 1001 254 858 113 c 1,19,-1 - 932 10 l 1,20,-1 - 868 -43 l 1,21,-1 - 778 49 l 1,22,23 - 670 -16 670 -16 539 -16 c 128,-1,24 - 408 -16 408 -16 311 59 c 1,25,-1 - 311 -410 l 1,26,-1 - 147 -410 l 1,27,-1 - 147 905 l 1,28,-1 - 311 905 l 1,29,-1 - 311 866 l 1,30,31 - 406 926 406 926 549 926 c 128,-1,32 - 692 926 692 926 792 861.5 c 128,-1,33 - 892 797 892 797 946.5 690 c 128,-1,34 - 1001 583 1001 583 1001 455 c 0,17,18 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0492 -Encoding: 1170 1170 748 -Width: 1136 -VWidth: 0 -Flags: W -HStem: 0 43G<272 446> 799 102<82 272 446 655> 1331 102<446 1100> -VStem: 272 174<0 799 901 1331> -LayerCount: 2 -Fore -SplineSet -82 799 m 5,0,-1 - 82 901 l 1,1,-1 - 272 901 l 1,2,-1 - 272 1434 l 1,3,-1 - 1100 1434 l 1,4,-1 - 1100 1331 l 1,5,-1 - 446 1331 l 1,6,-1 - 446 901 l 1,7,-1 - 655 901 l 1,8,-1 - 655 799 l 1,9,-1 - 446 799 l 1,10,-1 - 446 0 l 1,11,-1 - 272 0 l 1,12,-1 - 272 799 l 1,13,-1 - 82 799 l 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0493 -Encoding: 1171 1171 749 -Width: 892 -VWidth: 0 -Flags: W -HStem: 0 43G<248 412> 479 102<51 248 412 625> 799 102<412 840> -VStem: 248 164<0 479 582 799> -LayerCount: 2 -Fore -SplineSet -51 479 m 1,0,-1 - 51 582 l 1,1,-1 - 248 582 l 1,2,-1 - 248 901 l 1,3,-1 - 840 901 l 1,4,-1 - 840 799 l 1,5,-1 - 412 799 l 1,6,-1 - 412 582 l 1,7,-1 - 625 582 l 1,8,-1 - 625 479 l 1,9,-1 - 412 479 l 1,10,-1 - 412 0 l 1,11,-1 - 248 0 l 1,12,-1 - 248 479 l 1,13,-1 - 51 479 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0494 -Encoding: 1172 1172 750 -Width: 1167 -VWidth: 0 -Flags: W -HStem: -217 102<586 790> -59 41G<501 563> 0 43G<174 348> 819 102<425 755> 1331 102<348 1001> -VStem: 174 174<0 756 870 1331> 854 174<-7 711> -LayerCount: 2 -Fore -SplineSet -348 723 m 1,0,-1 - 348 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 1001 1434 l 1,4,-1 - 1001 1331 l 1,5,-1 - 348 1331 l 1,6,-1 - 348 870 l 1,7,8 - 447 922 447 922 573 922 c 0,9,10 - 792 922 792 922 910 814.5 c 128,-1,11 - 1028 707 1028 707 1028 492 c 2,12,-1 - 1028 291 l 2,13,14 - 1028 -45 1028 -45 882 -156 c 0,15,16 - 802 -217 802 -217 680 -217 c 1,17,18 - 622 -217 622 -217 552 -191.5 c 128,-1,19 - 482 -166 482 -166 438 -125 c 1,20,-1 - 541 -18 l 1,21,22 - 607 -115 607 -115 711 -115 c 0,23,24 - 854 -115 854 -115 854 246 c 2,25,-1 - 854 467 l 2,26,27 - 854 676 854 676 782 752 c 0,28,29 - 718 820 718 820 589 820 c 0,30,-1 - 588 820 l 0,31,32 - 458 820 458 820 348 723 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0495 -Encoding: 1173 1173 751 -Width: 952 -VWidth: 0 -Flags: W -HStem: -236 102<483 661> 0 43G<123 287> 487 102<352 637> 799 102<287 715> -VStem: 123 164<0 429 541 799> 698 164<-78 417> -LayerCount: 2 -Fore -SplineSet -620 458 m 0,0,1 - 580 486 580 486 510 486 c 0,2,3 - 509 486 509 486 508 487 c 0,4,5 - 440 487 440 487 392 464 c 0,6,7 - 343 441 343 441 287 393 c 1,8,-1 - 287 0 l 1,9,-1 - 123 0 l 1,10,-1 - 123 901 l 1,11,-1 - 715 901 l 1,12,-1 - 715 799 l 1,13,-1 - 287 799 l 1,14,-1 - 287 541 l 1,15,16 - 381 590 381 590 475 590 c 0,17,18 - 686 590 686 590 774 487 c 128,-1,19 - 862 384 862 384 862 179 c 0,20,21 - 862 -236 862 -236 565 -236 c 0,22,23 - 496 -236 496 -236 435.5 -211.5 c 128,-1,24 - 375 -187 375 -187 344 -143 c 1,25,-1 - 446 -37 l 1,26,27 - 476 -92 476 -92 508.5 -112.5 c 128,-1,28 - 541 -133 541 -133 596 -133 c 0,29,30 - 698 -133 698 -133 698 134.5 c 132,-1,31 - 698 402 698 402 620 458 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0496 -Encoding: 1174 1174 752 -Width: 1796 -VWidth: 0 -Flags: W -HStem: 0 102<1475 1521> 1331 102<106 189 1427 1509> -VStem: 86 174<0 96> 721 174<0 666 778 1434> 1565 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -1565 -315 m 1,0,1 - 1565 -94 1565 -94 1499 0 c 1,2,-1 - 1356 0 l 1,3,4 - 1356 16 1356 16 1307 111.5 c 128,-1,5 - 1258 207 1258 207 1190 321.5 c 128,-1,6 - 1122 436 1122 436 1038 539 c 128,-1,7 - 954 642 954 642 895 666 c 1,8,-1 - 895 0 l 1,9,-1 - 721 0 l 1,10,-1 - 721 666 l 1,11,12 - 662 642 662 642 578 539 c 128,-1,13 - 494 436 494 436 426 321.5 c 128,-1,14 - 358 207 358 207 309 111.5 c 128,-1,15 - 260 16 260 16 260 0 c 1,16,-1 - 86 0 l 1,17,18 - 86 27 86 27 129 118 c 128,-1,19 - 172 209 172 209 238.5 320 c 128,-1,20 - 305 431 305 431 401 544.5 c 128,-1,21 - 497 658 497 658 586 717 c 1,22,23 - 461 798 461 798 357 1003 c 0,24,25 - 316 1084 316 1084 277 1160 c 0,26,27 - 189 1331 189 1331 106 1331 c 1,28,-1 - 106 1434 l 1,29,30 - 257 1434 257 1434 363 1320 c 0,31,32 - 455 1222 455 1222 528 1076 c 0,33,34 - 621 892 621 892 654.5 844.5 c 128,-1,35 - 688 797 688 797 721 778 c 1,36,-1 - 721 1434 l 1,37,-1 - 895 1434 l 1,38,-1 - 895 778 l 1,39,40 - 953 810 953 810 1024 950 c 0,41,42 - 1054 1008 1054 1008 1088 1076 c 128,-1,43 - 1122 1144 1122 1144 1163 1206 c 0,44,45 - 1204 1268 1204 1268 1252 1320 c 0,46,47 - 1358 1434 1358 1434 1509 1434 c 1,48,-1 - 1509 1331 l 1,49,50 - 1426 1331 1426 1331 1338 1160 c 0,51,52 - 1298 1084 1298 1084 1258 1003 c 0,53,54 - 1156 799 1156 799 1030 717 c 1,55,56 - 1223 590 1223 590 1417 252 c 0,57,58 - 1464 170 1464 170 1495 102 c 1,59,-1 - 1663 102 l 1,60,-1 - 1663 -315 l 1,61,-1 - 1565 -315 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0497 -Encoding: 1175 1175 753 -Width: 1421 -VWidth: 0 -Flags: W -HStem: 0 43G<80 254 561 725> 799 102<70 178 1108 1217> -VStem: 80 174<0 111> 561 164<0 384 489 901> 1233 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -1233 -315 m 1,0,1 - 1233 -94 1233 -94 1167 0 c 1,2,-1 - 1032 0 l 1,3,4 - 1032 60 1032 60 953 188.5 c 128,-1,5 - 874 317 874 317 791 389 c 1,6,7 - 771 383 771 383 725 379 c 1,8,-1 - 725 0 l 1,9,-1 - 561 0 l 1,10,-1 - 561 379 l 1,11,12 - 516 383 516 383 496 389 c 1,13,14 - 412 317 412 317 333 188 c 128,-1,15 - 254 59 254 59 254 0 c 1,16,-1 - 80 0 l 1,17,18 - 80 49 80 49 171 195.5 c 128,-1,19 - 262 342 262 342 377 453 c 1,20,21 - 315 506 315 506 259 628 c 0,22,23 - 239 672 239 672 216 712 c 0,24,25 - 167 799 167 799 72 799 c 0,26,-1 - 70 799 l 1,27,-1 - 70 901 l 1,28,29 - 220 901 220 901 306 830 c 0,30,31 - 378 770 378 770 424 678 c 0,32,33 - 481 566 481 566 506.5 533.5 c 128,-1,34 - 532 501 532 501 561 489 c 1,35,-1 - 561 901 l 1,36,-1 - 725 901 l 1,37,-1 - 725 489 l 1,38,39 - 775 510 775 510 821 598 c 0,40,41 - 840 634 840 634 861.5 677 c 128,-1,42 - 883 720 883 720 913 759 c 0,43,44 - 944 798 944 798 982 830 c 0,45,46 - 1067 901 1067 901 1217 901 c 1,47,-1 - 1217 799 l 1,48,-1 - 1215 799 l 0,49,50 - 1120 799 1120 799 1070 712 c 0,51,52 - 1046 672 1046 672 1028 628 c 0,53,54 - 974 508 974 508 909 453 c 1,55,56 - 1065 303 1065 303 1169 102 c 1,57,-1 - 1331 102 l 1,58,-1 - 1331 -315 l 1,59,-1 - 1233 -315 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0498 -Encoding: 1176 1176 754 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -360 49<385 560> -20 102<334 477 588 652> 799 102<373 641> 1352 102<345 676> -VStem: 606 127<-287 -147> 752 174<1000 1276> 813 174<263 622> -LayerCount: 2 -Fore -SplineSet -233 285 m 1,0,1 - 256 177 256 177 324 129.5 c 128,-1,2 - 392 82 392 82 524 82 c 0,3,4 - 595 82 595 82 653 120 c 0,5,6 - 710 158 710 158 744 216 c 0,7,8 - 812 334 812 334 813 440 c 0,9,10 - 813 505 813 505 791 567 c 128,-1,11 - 769 629 769 629 743.5 666 c 128,-1,12 - 718 703 718 703 686 733 c 0,13,14 - 614 799 614 799 506 799 c 2,15,-1 - 373 799 l 1,16,-1 - 373 901 l 1,17,-1 - 444 901 l 2,18,19 - 602 901 602 901 677 968 c 128,-1,20 - 752 1035 752 1035 752 1133 c 128,-1,21 - 752 1231 752 1231 696 1291.5 c 128,-1,22 - 640 1352 640 1352 532 1352 c 128,-1,23 - 424 1352 424 1352 358 1317 c 128,-1,24 - 292 1282 292 1282 281 1198 c 1,25,-1 - 129 1239 l 1,26,27 - 185 1342 185 1342 293 1398 c 128,-1,28 - 401 1454 401 1454 514 1454 c 0,29,30 - 707 1454 707 1454 816.5 1361 c 128,-1,31 - 926 1268 926 1268 926 1137 c 0,32,33 - 926 1047 926 1047 878 970.5 c 128,-1,34 - 830 894 830 894 725 850 c 1,35,36 - 920 760 920 760 974 544 c 0,37,38 - 988 492 988 492 988 445 c 0,39,40 - 988 395 988 395 974 340 c 0,41,42 - 960 287 960 287 929 229.5 c 128,-1,43 - 898 172 898 172 854 124 c 0,44,45 - 752 14 752 14 588 -12 c 1,46,-1 - 582 -70 l 1,47,48 - 648 -81 648 -81 690.5 -116.5 c 128,-1,49 - 733 -152 733 -152 733 -213 c 128,-1,50 - 733 -274 733 -274 641.5 -317 c 128,-1,51 - 550 -360 550 -360 385 -360 c 1,52,-1 - 385 -311 l 1,53,54 - 496 -311 496 -311 551 -292 c 128,-1,55 - 606 -273 606 -273 606 -224 c 128,-1,56 - 606 -175 606 -175 574 -153.5 c 128,-1,57 - 542 -132 542 -132 459 -123 c 1,58,-1 - 477 -20 l 1,59,60 - 326 -16 326 -16 226 56 c 128,-1,61 - 126 128 126 128 82 244 c 1,62,-1 - 233 285 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0499 -Encoding: 1177 1177 755 -Width: 897 -VWidth: 0 -Flags: W -HStem: -360 49<270 445> -18 100<259 362 473 576> 451 102<295 543> 819 102<261 562> -VStem: 492 127<-287 -147> 598 164<604 783> 647 164<146 379> -LayerCount: 2 -Fore -SplineSet -182 203 m 1,0,1 - 206 150 206 150 278.5 116 c 128,-1,2 - 351 82 351 82 420 82 c 0,3,4 - 488 82 488 82 532 98 c 0,5,6 - 576 116 576 116 600 142 c 0,7,8 - 647 194 647 194 647 256 c 0,9,10 - 647 451 647 451 367 451 c 2,11,-1 - 295 451 l 1,12,-1 - 295 553 l 1,13,-1 - 352 553 l 2,14,15 - 478 553 478 553 538 593 c 128,-1,16 - 598 633 598 633 598 691.5 c 128,-1,17 - 598 750 598 750 553 784.5 c 128,-1,18 - 508 819 508 819 424.5 819 c 128,-1,19 - 341 819 341 819 285.5 791 c 128,-1,20 - 230 763 230 763 221 711 c 1,21,-1 - 100 735 l 1,22,23 - 128 814 128 814 204.5 868 c 128,-1,24 - 281 922 281 922 435 922 c 128,-1,25 - 589 922 589 922 675.5 860.5 c 128,-1,26 - 762 799 762 799 762 694 c 0,27,28 - 762 647 762 647 727.5 597.5 c 128,-1,29 - 693 548 693 548 625 512 c 1,30,31 - 720 474 720 474 765.5 406.5 c 128,-1,32 - 811 339 811 339 811 256 c 0,33,34 - 811 138 811 138 729 66 c 128,-1,35 - 647 -6 647 -6 473 -18 c 1,36,-1 - 467 -70 l 1,37,38 - 533 -81 533 -81 575.5 -116.5 c 128,-1,39 - 618 -152 618 -152 618 -213 c 128,-1,40 - 618 -274 618 -274 526.5 -317 c 128,-1,41 - 435 -360 435 -360 270 -360 c 1,42,-1 - 270 -311 l 1,43,44 - 381 -311 381 -311 436.5 -292 c 128,-1,45 - 492 -273 492 -273 492 -224 c 128,-1,46 - 492 -175 492 -175 459.5 -153.5 c 128,-1,47 - 427 -132 427 -132 344 -123 c 1,48,-1 - 362 -18 l 1,49,50 - 257 -7 257 -7 177.5 51 c 128,-1,51 - 98 109 98 109 61 178 c 1,52,-1 - 182 203 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049A -Encoding: 1178 1178 756 -Width: 1488 -VWidth: 0 -Flags: W -HStem: 0 102<1091 1214> 1393 41G<174 348 967 1208> -VStem: 174 174<0 469 696 1434> 1257 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -1257 -315 m 5,0,1 - 1257 -211 1257 -211 1240.5 -132.5 c 128,-1,2 - 1224 -54 1224 -54 1208 -27 c 2,3,-1 - 1192 0 l 1,4,5 - 1042 0 1042 0 943 82 c 0,6,7 - 850 160 850 160 792 274 c 0,8,9 - 746 366 746 366 710 457 c 128,-1,10 - 674 548 674 548 654 591 c 0,11,12 - 610 685 610 685 557 705 c 1,13,-1 - 348 469 l 1,14,-1 - 348 0 l 1,15,-1 - 174 0 l 1,16,-1 - 174 1434 l 1,17,-1 - 348 1434 l 1,18,-1 - 348 696 l 1,19,-1 - 1004 1434 l 1,20,-1 - 1208 1434 l 1,21,-1 - 647 805 l 1,22,23 - 758 756 758 756 832 612 c 0,24,25 - 864 548 864 548 894 477 c 128,-1,26 - 924 406 924 406 952 340 c 0,27,28 - 982 274 982 274 1014 220 c 0,29,30 - 1085 102 1085 102 1192 102 c 2,31,-1 - 1356 102 l 1,32,-1 - 1356 -315 l 1,33,-1 - 1257 -315 l 5,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049B -Encoding: 1179 1179 757 -Width: 1093 -VWidth: 0 -Flags: W -HStem: 0 102<834 862> 860 41G<147 311 652 877> -VStem: 147 164<0 268 477 901> 905 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -311 268 m 1,0,-1 - 311 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 901 l 1,3,-1 - 311 901 l 1,4,-1 - 311 477 l 1,5,-1 - 688 901 l 1,6,-1 - 877 901 l 1,7,-1 - 520 502 l 1,8,-1 - 834 102 l 1,9,-1 - 1004 102 l 1,10,-1 - 1004 -315 l 1,11,-1 - 905 -315 l 1,12,13 - 905 -211 905 -211 888.5 -132.5 c 128,-1,14 - 872 -54 872 -54 856 -27 c 2,15,-1 - 840 0 l 1,16,-1 - 737 0 l 1,17,-1 - 424 395 l 1,18,-1 - 311 268 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049C -Encoding: 1180 1180 758 -Width: 1357 -VWidth: 0 -Flags: W -HStem: 0 119<1210 1311> 717 119<348 463> 1393 41G<174 348 943 1327> -VStem: 174 174<0 717 836 1434> 463 115<455 717 856 1085> -LayerCount: 2 -Fore -SplineSet -348 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 348 1434 l 1,3,-1 - 348 836 l 1,4,-1 - 463 836 l 1,5,-1 - 463 1085 l 1,6,-1 - 578 1085 l 1,7,-1 - 578 856 l 1,8,9 - 623 885 623 885 719.5 987.5 c 128,-1,10 - 816 1090 816 1090 960 1252 c 128,-1,11 - 1104 1414 1104 1414 1122 1434 c 1,12,-1 - 1327 1434 l 1,13,-1 - 766 805 l 1,14,15 - 878 756 878 756 952 615 c 0,16,17 - 984 553 984 553 1013.5 483.5 c 128,-1,18 - 1043 414 1043 414 1071.5 350 c 128,-1,19 - 1100 286 1100 286 1132 234 c 0,20,21 - 1204 119 1204 119 1311 119 c 1,22,-1 - 1311 0 l 1,23,24 - 1216 0 1216 0 1138 39.5 c 128,-1,25 - 1060 79 1060 79 1008.5 142.5 c 128,-1,26 - 957 206 957 206 914 282 c 128,-1,27 - 871 358 871 358 838 434 c 0,28,29 - 805 510 805 510 773 574 c 0,30,31 - 701 716 701 716 616 717 c 2,32,-1 - 578 717 l 1,33,-1 - 578 455 l 1,34,-1 - 463 455 l 1,35,-1 - 463 717 l 1,36,-1 - 348 717 l 1,37,-1 - 348 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049D -Encoding: 1181 1181 759 -Width: 1120 -VWidth: 0 -Flags: W -HStem: 0 43G<147 311 844 1053> 451 102<311 385 500 518> 860 41G<147 311 792 1016> -VStem: 147 164<0 451 553 901> 385 115<184 451 553 815> -LayerCount: 2 -Fore -SplineSet -311 0 m 1,0,-1 - 147 0 l 1,1,-1 - 147 901 l 1,2,-1 - 311 901 l 1,3,-1 - 311 553 l 1,4,-1 - 385 553 l 1,5,-1 - 385 815 l 1,6,-1 - 500 815 l 1,7,-1 - 500 553 l 1,8,-1 - 526 553 l 1,9,-1 - 827 901 l 1,10,-1 - 1016 901 l 1,11,-1 - 659 502 l 1,12,-1 - 1053 0 l 1,13,-1 - 877 0 l 1,14,-1 - 518 451 l 1,15,-1 - 500 451 l 1,16,-1 - 500 184 l 1,17,-1 - 385 184 l 1,18,-1 - 385 451 l 1,19,-1 - 311 451 l 1,20,-1 - 311 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049E -Encoding: 1182 1182 760 -Width: 1316 -VWidth: 0 -Flags: W -HStem: 0 119<1169 1270> 1085 102<61 252 426 635> 1393 41G<252 426 1045 1286> -VStem: 252 174<0 469 696 1085 1188 1434> -LayerCount: 2 -Fore -SplineSet -61 1085 m 5,0,-1 - 61 1188 l 1,1,-1 - 252 1188 l 1,2,-1 - 252 1434 l 1,3,-1 - 426 1434 l 1,4,-1 - 426 1188 l 1,5,-1 - 635 1188 l 1,6,-1 - 635 1085 l 1,7,-1 - 426 1085 l 1,8,-1 - 426 696 l 1,9,-1 - 1081 1434 l 1,10,-1 - 1286 1434 l 1,11,-1 - 725 805 l 1,12,13 - 836 756 836 756 910 615 c 0,14,15 - 942 553 942 553 972 483.5 c 128,-1,16 - 1002 414 1002 414 1030 350 c 0,17,18 - 1060 286 1060 286 1092 234 c 0,19,20 - 1164 119 1164 119 1270 119 c 1,21,-1 - 1270 0 l 1,22,23 - 1120 0 1120 0 1021 82 c 0,24,25 - 928 160 928 160 870 274 c 0,26,27 - 824 366 824 366 788 457 c 128,-1,28 - 752 548 752 548 732 591 c 0,29,30 - 688 685 688 685 635 705 c 1,31,-1 - 426 469 l 1,32,-1 - 426 0 l 1,33,-1 - 252 0 l 1,34,-1 - 252 1085 l 1,35,-1 - 61 1085 l 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049F -Encoding: 1183 1183 761 -Width: 1099 -VWidth: 0 -Flags: W -HStem: 0 43G<266 430 824 1032> 860 41G<771 995> 983 102<61 266 430 635> 1311 41G<266 430> -VStem: 266 164<0 268 477 983 1085 1352> -LayerCount: 2 -Fore -SplineSet -635 1085 m 1,0,-1 - 635 983 l 1,1,-1 - 430 983 l 1,2,-1 - 430 477 l 1,3,-1 - 807 901 l 1,4,-1 - 995 901 l 1,5,-1 - 639 502 l 1,6,-1 - 1032 0 l 1,7,-1 - 856 0 l 1,8,-1 - 543 395 l 1,9,-1 - 430 268 l 1,10,-1 - 430 0 l 1,11,-1 - 266 0 l 1,12,-1 - 266 983 l 1,13,-1 - 61 983 l 1,14,-1 - 61 1085 l 1,15,-1 - 266 1085 l 1,16,-1 - 266 1352 l 1,17,-1 - 430 1352 l 1,18,-1 - 430 1085 l 1,19,-1 - 635 1085 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A0 -Encoding: 1184 1184 762 -Width: 1546 -VWidth: 0 -Flags: W -HStem: 0 119<1398 1499> 1331 102<20 481> -VStem: 481 174<0 469 696 1331> -LayerCount: 2 -Fore -SplineSet -1499 119 m 1,0,-1 - 1499 0 l 1,1,2 - 1349 0 1349 0 1250 82 c 0,3,4 - 1157 160 1157 160 1099 274 c 0,5,6 - 1053 366 1053 366 1017 457 c 128,-1,7 - 981 548 981 548 961 591 c 0,8,9 - 917 685 917 685 864 705 c 1,10,-1 - 655 469 l 1,11,-1 - 655 0 l 1,12,-1 - 481 0 l 1,13,-1 - 481 1331 l 1,14,-1 - 20 1331 l 1,15,-1 - 20 1434 l 1,16,-1 - 655 1434 l 1,17,-1 - 655 696 l 1,18,-1 - 1311 1434 l 1,19,-1 - 1516 1434 l 1,20,-1 - 954 805 l 1,21,22 - 1066 756 1066 756 1140 615 c 0,23,24 - 1172 553 1172 553 1201.5 483.5 c 128,-1,25 - 1231 414 1231 414 1259.5 350 c 128,-1,26 - 1288 286 1288 286 1320 234 c 0,27,28 - 1392 119 1392 119 1499 119 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A1 -Encoding: 1185 1185 763 -Width: 1163 -VWidth: 0 -Flags: W -HStem: 0 43G<330 494 887 1096> 799 102<31 330> -VStem: 330 164<0 268 477 799> -LayerCount: 2 -Fore -SplineSet -494 268 m 1,0,-1 - 494 0 l 1,1,-1 - 330 0 l 1,2,-1 - 330 799 l 1,3,-1 - 31 799 l 1,4,-1 - 31 901 l 1,5,-1 - 494 901 l 1,6,-1 - 494 477 l 1,7,-1 - 870 901 l 1,8,-1 - 1059 901 l 1,9,-1 - 702 502 l 1,10,-1 - 1096 0 l 1,11,-1 - 920 0 l 1,12,-1 - 606 395 l 1,13,-1 - 494 268 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A2 -Encoding: 1186 1186 764 -Width: 1505 -VWidth: 0 -Flags: W -HStem: 0 102<1182 1231> 717 102<348 1008> 1393 41G<174 348 1008 1182> -VStem: 174 174<0 717 819 1434> 1008 174<102 717 819 1434> 1274 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -1274 -315 m 1,0,1 - 1274 -94 1274 -94 1208 0 c 1,2,-1 - 1008 0 l 1,3,-1 - 1008 717 l 1,4,-1 - 348 717 l 1,5,-1 - 348 0 l 1,6,-1 - 174 0 l 1,7,-1 - 174 1434 l 1,8,-1 - 348 1434 l 1,9,-1 - 348 819 l 1,10,-1 - 1008 819 l 1,11,-1 - 1008 1434 l 1,12,-1 - 1182 1434 l 1,13,-1 - 1182 102 l 1,14,-1 - 1372 102 l 1,15,-1 - 1372 -315 l 1,16,-1 - 1274 -315 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A3 -Encoding: 1187 1187 765 -Width: 1228 -VWidth: 0 -Flags: W -HStem: 0 102<934 997> 440 102<287 770> 860 41G<123 287 770 934> -VStem: 123 164<0 440 543 901> 770 164<102 440 543 901> 1040 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -1040 -315 m 1,0,1 - 1040 -100 1040 -100 975 0 c 1,2,-1 - 770 0 l 1,3,-1 - 770 440 l 1,4,-1 - 287 440 l 1,5,-1 - 287 0 l 1,6,-1 - 123 0 l 1,7,-1 - 123 901 l 1,8,-1 - 287 901 l 1,9,-1 - 287 543 l 1,10,-1 - 770 543 l 1,11,-1 - 770 901 l 1,12,-1 - 934 901 l 1,13,-1 - 934 102 l 1,14,-1 - 1139 102 l 1,15,-1 - 1139 -315 l 1,16,-1 - 1040 -315 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A4 -Encoding: 1188 1188 766 -Width: 1871 -VWidth: 0 -Flags: W -HStem: 0 43G<174 348 1008 1182> 717 102<348 1008> 1331 102<1182 1835> -VStem: 174 174<0 717 819 1434> 1008 174<0 717 819 1331> -LayerCount: 2 -Fore -SplineSet -348 1434 m 1,0,-1 - 348 819 l 1,1,-1 - 1008 819 l 1,2,-1 - 1008 1434 l 1,3,-1 - 1835 1434 l 1,4,-1 - 1835 1331 l 1,5,-1 - 1182 1331 l 1,6,-1 - 1182 0 l 1,7,-1 - 1008 0 l 1,8,-1 - 1008 717 l 1,9,-1 - 348 717 l 1,10,-1 - 348 0 l 1,11,-1 - 174 0 l 1,12,-1 - 174 1434 l 1,13,-1 - 348 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A5 -Encoding: 1189 1189 767 -Width: 1415 -VWidth: 0 -Flags: W -HStem: 0 43G<123 287 770 934> 440 102<287 770> 799 102<934 1362> -VStem: 123 164<0 440 543 901> 770 164<0 440 543 799> -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 287 901 l 1,1,-1 - 287 543 l 1,2,-1 - 770 543 l 1,3,-1 - 770 901 l 1,4,-1 - 1362 901 l 1,5,-1 - 1362 799 l 1,6,-1 - 934 799 l 1,7,-1 - 934 0 l 1,8,-1 - 770 0 l 1,9,-1 - 770 440 l 1,10,-1 - 287 440 l 1,11,-1 - 287 0 l 1,12,-1 - 123 0 l 1,13,-1 - 123 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A6 -Encoding: 1190 1190 768 -Width: 1968 -VWidth: 0 -Flags: W -HStem: -217 102<1387 1591> -59 41G<1302 1364> 0 43G<174 348 975 1149> 819 102<1226 1556> 1331 102<348 975> -VStem: 174 174<0 1331> 975 174<0 756 870 1331> 1655 174<-7 711> -LayerCount: 2 -Fore -SplineSet -1149 723 m 1,0,-1 - 1149 0 l 1,1,-1 - 975 0 l 1,2,-1 - 975 1331 l 1,3,-1 - 348 1331 l 1,4,-1 - 348 0 l 1,5,-1 - 174 0 l 1,6,-1 - 174 1434 l 1,7,-1 - 1149 1434 l 1,8,-1 - 1149 870 l 1,9,10 - 1248 922 1248 922 1374 922 c 0,11,12 - 1593 922 1593 922 1711 814.5 c 128,-1,13 - 1829 707 1829 707 1829 492 c 2,14,-1 - 1829 291 l 2,15,16 - 1829 -45 1829 -45 1683 -156 c 0,17,18 - 1603 -217 1603 -217 1481 -217 c 0,19,20 - 1423 -217 1423 -217 1353 -191.5 c 128,-1,21 - 1283 -166 1283 -166 1239 -125 c 1,22,-1 - 1341 -18 l 1,23,24 - 1407 -115 1407 -115 1511 -115 c 0,25,26 - 1577 -115 1577 -115 1616 -29.5 c 128,-1,27 - 1655 56 1655 56 1655 246 c 2,28,-1 - 1655 467 l 2,29,30 - 1654 676 1654 676 1582 752 c 0,31,32 - 1518 820 1518 820 1390 820 c 0,33,-1 - 1388 820 l 0,34,35 - 1258 820 1258 820 1149 723 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A7 -Encoding: 1191 1191 769 -Width: 1599 -VWidth: 0 -Flags: W -HStem: -236 102<1130 1308> 0 43G<123 287 770 934> 487 102<999 1284> 799 102<287 770> -VStem: 123 164<0 799> 770 164<0 429 541 799> 1346 164<-78 417> -LayerCount: 2 -Fore -SplineSet -1268 458 m 0,0,1 - 1228 486 1228 486 1158 486 c 0,2,3 - 1157 486 1157 486 1155 487 c 0,4,5 - 1087 487 1087 487 1039 464 c 0,6,7 - 990 441 990 441 934 393 c 1,8,-1 - 934 0 l 1,9,-1 - 770 0 l 1,10,-1 - 770 799 l 1,11,-1 - 287 799 l 1,12,-1 - 287 0 l 1,13,-1 - 123 0 l 1,14,-1 - 123 901 l 1,15,-1 - 934 901 l 1,16,-1 - 934 541 l 1,17,18 - 1028 590 1028 590 1122 590 c 0,19,20 - 1333 590 1333 590 1421 487 c 128,-1,21 - 1509 384 1509 384 1509 179 c 0,22,23 - 1509 -236 1509 -236 1212 -236 c 0,24,25 - 1143 -236 1143 -236 1082.5 -211.5 c 128,-1,26 - 1022 -187 1022 -187 991 -143 c 1,27,-1 - 1094 -37 l 1,28,29 - 1125 -92 1125 -92 1157 -112.5 c 128,-1,30 - 1189 -133 1189 -133 1243 -133 c 0,31,32 - 1346 -133 1346 -133 1346 134 c 132,-1,33 - 1346 401 1346 401 1268 458 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A8 -Encoding: 1192 1192 770 -Width: 1658 -VWidth: 0 -Flags: W -HStem: -20 102<600 892 1107 1359> 1268 84<931 1076> 1352 84<547 702> -VStem: 102 174<451 1011> 631 174<422 1030> 1190 174<434 1030> -LayerCount: 2 -Fore -SplineSet -1561 145 m 1,0,1 - 1504 67 1504 67 1428.5 23.5 c 128,-1,2 - 1353 -20 1353 -20 1276 -20 c 0,3,4 - 1119 -20 1119 -20 997 35 c 1,5,6 - 884 -20 884 -20 771.5 -20 c 128,-1,7 - 659 -20 659 -20 572.5 7 c 128,-1,8 - 486 34 486 34 401 93 c 128,-1,9 - 316 152 316 152 250 235.5 c 128,-1,10 - 184 319 184 319 143 444.5 c 128,-1,11 - 102 570 102 570 102 717.5 c 128,-1,12 - 102 865 102 865 139 988 c 128,-1,13 - 176 1111 176 1111 236 1192 c 0,14,15 - 296 1274 296 1274 375 1330 c 0,16,17 - 524 1436 524 1436 702 1436 c 1,18,-1 - 705 1352 l 1,19,20 - 528 1352 528 1352 406 1196 c 0,21,22 - 276 1031 276 1031 276 717 c 0,23,24 - 276 587 276 587 309 478 c 0,25,26 - 342 370 342 370 394 298 c 0,27,28 - 448 226 448 226 514 176 c 0,29,30 - 684 90 684 90 772 82 c 1,31,32 - 838 82 838 82 893 96 c 1,33,34 - 767 190 767 190 699 351.5 c 128,-1,35 - 631 513 631 513 631 759.5 c 128,-1,36 - 631 1006 631 1006 740.5 1179 c 128,-1,37 - 850 1352 850 1352 1000.5 1352 c 128,-1,38 - 1151 1352 1151 1352 1257.5 1178 c 128,-1,39 - 1364 1004 1364 1004 1364 733 c 0,40,41 - 1364 529 1364 529 1296 363.5 c 128,-1,42 - 1228 198 1228 198 1104 100 c 1,43,44 - 1162 82 1162 82 1232 82 c 0,45,46 - 1363 82 1363 82 1442 229 c 1,47,-1 - 1561 145 l 1,0,1 -1004 150 m 1,48,49 - 1190 284 1190 284 1190 700 c 0,50,51 - 1190 1036 1190 1036 1102 1193 c 0,52,53 - 1060 1268 1060 1268 1008 1268 c 0,54,55 - 920 1268 920 1268 862.5 1105 c 128,-1,56 - 805 942 805 942 805 700 c 0,57,58 - 805 288 805 288 1004 150 c 1,48,49 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A9 -Encoding: 1193 1193 771 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -20 102<421 610 885 1016> 715 102<663 809> 799 102<375 514> -VStem: 90 164<259 672> 442 164<239 641> 858 164<215 644> -LayerCount: 2 -Fore -SplineSet -610 82 m 1,0,1 - 442 214 442 214 442 455 c 0,2,3 - 442 595 442 595 526.5 706 c 128,-1,4 - 611 817 611 817 734 817 c 128,-1,5 - 857 817 857 817 939.5 706.5 c 128,-1,6 - 1022 596 1022 596 1022 455 c 0,7,8 - 1022 202 1022 202 883 82 c 1,9,-1 - 903 82 l 2,10,11 - 960 82 960 82 1011.5 121 c 128,-1,12 - 1063 160 1063 160 1100 229 c 1,13,-1 - 1219 145 l 1,14,15 - 1162 67 1162 67 1086.5 23.5 c 128,-1,16 - 1011 -20 1011 -20 923.5 -20 c 128,-1,17 - 836 -20 836 -20 750 8 c 1,18,19 - 661 -20 661 -20 574.5 -20 c 128,-1,20 - 488 -20 488 -20 423 -1 c 128,-1,21 - 358 18 358 18 298 58.5 c 128,-1,22 - 238 99 238 99 192 156 c 0,23,24 - 90 280 90 280 90 471 c 128,-1,25 - 90 662 90 662 203.5 781.5 c 128,-1,26 - 317 901 317 901 514 901 c 1,27,-1 - 514 799 l 1,28,29 - 391 799 391 799 322.5 712 c 128,-1,30 - 254 625 254 625 254 471 c 0,31,32 - 254 265 254 265 362 168 c 0,33,34 - 458 82 458 82 584 82 c 2,35,-1 - 610 82 l 1,0,1 -745 123 m 1,36,37 - 858 197 858 197 858 422 c 0,38,39 - 858 561 858 561 826 638 c 128,-1,40 - 794 715 794 715 735.5 715 c 128,-1,41 - 677 715 677 715 641.5 642 c 128,-1,42 - 606 569 606 569 606 422 c 0,43,44 - 606 204 606 204 745 123 c 1,36,37 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AA -Encoding: 1194 1194 772 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -360 49<602 777> -18 100<602 694 805 975> 1352 102<556 933> -VStem: 102 174<448 1012> 823 127<-287 -147> -LayerCount: 2 -Fore -Refer: 171 199 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04AB -Encoding: 1195 1195 773 -Width: 1017 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -360 49<414 589> -18 100<419 506 616 735> 819 102<404 664> -VStem: 90 164<253 648> 635 127<-287 -147> -LayerCount: 2 -Fore -Refer: 172 231 N 1 0 0 1 0 0 2 -EndChar - -StartChar: uni04AC -Encoding: 1196 1196 774 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 102<727 788> 1331 102<41 553 727 1243> -VStem: 553 174<102 1331> 831 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -41 1434 m 1,0,-1 - 1243 1434 l 1,1,-1 - 1243 1331 l 1,2,-1 - 727 1331 l 1,3,-1 - 727 102 l 1,4,-1 - 930 102 l 1,5,-1 - 930 -315 l 1,6,-1 - 831 -315 l 1,7,8 - 831 -211 831 -211 814.5 -132.5 c 128,-1,9 - 798 -54 798 -54 782 -27 c 2,10,-1 - 766 0 l 1,11,-1 - 553 0 l 1,12,-1 - 553 1331 l 1,13,-1 - 41 1331 l 1,14,-1 - 41 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AD -Encoding: 1197 1197 775 -Width: 937 -VWidth: 0 -Flags: W -HStem: 0 102<555 612> 799 102<53 391 555 893> -VStem: 391 164<102 799> 655 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -590 0 m 5,0,-1 - 391 0 l 1,1,-1 - 391 799 l 1,2,-1 - 53 799 l 1,3,-1 - 53 901 l 1,4,-1 - 893 901 l 1,5,-1 - 893 799 l 1,6,-1 - 555 799 l 1,7,-1 - 555 102 l 1,8,-1 - 754 102 l 1,9,-1 - 754 -315 l 1,10,-1 - 655 -315 l 1,11,12 - 655 -211 655 -211 638.5 -132.5 c 128,-1,13 - 622 -54 622 -54 606 -27 c 2,14,-1 - 590 0 l 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AE -Encoding: 1198 1198 776 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<391 565> 1393 41<23 228 731 936> -VStem: 391 174<0 709> -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04AF -Encoding: 1199 1199 777 -Width: 849 -VWidth: 0 -Flags: W -HStem: 860 41G<18 183 659 838> -VStem: 346 164<-410 0> -LayerCount: 2 -Fore -SplineSet -346 0 m 1,0,-1 - 18 901 l 1,1,-1 - 168 901 l 1,2,-1 - 420 205 l 1,3,-1 - 674 901 l 1,4,-1 - 838 901 l 1,5,-1 - 510 0 l 1,6,-1 - 510 -410 l 1,7,-1 - 346 -410 l 1,8,-1 - 346 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B0 -Encoding: 1200 1200 778 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43G<391 565> 418 102<193 391 565 766> 1393 41G<23 228 731 936> -VStem: 391 174<0 418 520 709> -LayerCount: 2 -Fore -SplineSet -193 418 m 1,0,-1 - 193 520 l 1,1,-1 - 391 520 l 1,2,-1 - 391 711 l 1,3,-1 - 23 1434 l 1,4,-1 - 207 1434 l 1,5,-1 - 479 899 l 1,6,-1 - 752 1434 l 1,7,-1 - 936 1434 l 1,8,-1 - 565 709 l 1,9,-1 - 565 520 l 1,10,-1 - 766 520 l 1,11,-1 - 766 418 l 1,12,-1 - 565 418 l 1,13,-1 - 565 0 l 1,14,-1 - 391 0 l 1,15,-1 - 391 418 l 1,16,-1 - 193 418 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B1 -Encoding: 1201 1201 779 -Width: 849 -VWidth: 0 -Flags: W -HStem: -102 102<141 346 510 715> 860 41G<18 183 659 838> -VStem: 346 164<-410 -102> -LayerCount: 2 -Fore -SplineSet -141 -102 m 1,0,-1 - 141 0 l 1,1,-1 - 346 0 l 1,2,-1 - 18 901 l 1,3,-1 - 168 901 l 1,4,-1 - 420 205 l 1,5,-1 - 674 901 l 1,6,-1 - 838 901 l 1,7,-1 - 510 0 l 1,8,-1 - 715 0 l 1,9,-1 - 715 -102 l 1,10,-1 - 510 -102 l 1,11,-1 - 510 -410 l 1,12,-1 - 346 -410 l 1,13,-1 - 346 -102 l 1,14,-1 - 141 -102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B2 -Encoding: 1202 1202 780 -Width: 1349 -VWidth: 0 -Flags: W -HStem: 0 102<989 1075> 1393 41G<127 322 804 999> -VStem: 1118 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -1118 -315 m 1,0,1 - 1118 -100 1118 -100 1053 0 c 1,2,-1 - 868 0 l 1,3,-1 - 563 590 l 1,4,-1 - 258 0 l 1,5,-1 - 86 0 l 1,6,-1 - 477 758 l 1,7,-1 - 127 1434 l 1,8,-1 - 301 1434 l 1,9,-1 - 563 926 l 1,10,-1 - 825 1434 l 1,11,-1 - 999 1434 l 1,12,-1 - 651 758 l 1,13,-1 - 989 102 l 1,14,-1 - 1217 102 l 1,15,-1 - 1217 -315 l 1,16,-1 - 1118 -315 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B3 -Encoding: 1203 1203 781 -Width: 1093 -VWidth: 0 -Flags: W -HStem: 0 102<762 862> 860 41G<66 268 569 772> -VStem: 905 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -330 494 m 1,0,-1 - 66 901 l 1,1,-1 - 242 901 l 1,2,-1 - 418 629 l 1,3,-1 - 596 901 l 1,4,-1 - 772 901 l 1,5,-1 - 508 494 l 1,6,-1 - 762 102 l 1,7,-1 - 1004 102 l 1,8,-1 - 1004 -315 l 1,9,-1 - 905 -315 l 1,10,11 - 905 -211 905 -211 888.5 -132.5 c 128,-1,12 - 872 -54 872 -54 856 -27 c 2,13,-1 - 840 0 l 1,14,-1 - 651 0 l 1,15,-1 - 418 358 l 1,16,-1 - 186 0 l 1,17,-1 - 8 0 l 1,18,-1 - 330 494 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B4 -Encoding: 1204 1204 782 -Width: 1732 -VWidth: 0 -Flags: W -HStem: 0 102<668 1294> 1331 102<41 492 668 1120> -VStem: 492 176<102 1331> 1294 174<102 1434> 1501 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -1436 0 m 1,0,-1 - 492 0 l 1,1,-1 - 492 1331 l 1,2,-1 - 41 1331 l 1,3,-1 - 41 1434 l 1,4,-1 - 1120 1434 l 1,5,-1 - 1120 1331 l 1,6,-1 - 668 1331 l 1,7,-1 - 668 102 l 1,8,-1 - 1294 102 l 1,9,-1 - 1294 1434 l 1,10,-1 - 1468 1434 l 1,11,-1 - 1468 102 l 1,12,-1 - 1599 102 l 1,13,-1 - 1599 -315 l 1,14,-1 - 1501 -315 l 1,15,16 - 1501 -211 1501 -211 1484.5 -132.5 c 128,-1,17 - 1468 -54 1468 -54 1452 -27 c 2,18,-1 - 1436 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B5 -Encoding: 1205 1205 783 -Width: 1341 -VWidth: 0 -Flags: W -HStem: 0 102<514 956> 799 102<53 350 514 811> -VStem: 350 164<102 799> 956 164<102 901> 1153 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -1153 -315 m 1,0,1 - 1153 -94 1153 -94 1087 0 c 1,2,-1 - 350 0 l 1,3,-1 - 350 799 l 1,4,-1 - 53 799 l 1,5,-1 - 53 901 l 1,6,-1 - 811 901 l 1,7,-1 - 811 799 l 1,8,-1 - 514 799 l 1,9,-1 - 514 102 l 1,10,-1 - 956 102 l 1,11,-1 - 956 901 l 1,12,-1 - 1120 901 l 1,13,-1 - 1120 102 l 1,14,-1 - 1251 102 l 1,15,-1 - 1251 -315 l 1,16,-1 - 1153 -315 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B6 -Encoding: 1206 1206 784 -Width: 1331 -VWidth: 0 -Flags: W -HStem: 0 102<995 1056> 522 102<425 746> 1393 41G<123 297 821 995> -VStem: 123 174<791 1434> 821 174<102 573 688 1434> 1100 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -1100 -315 m 1,0,1 - 1100 -94 1100 -94 1034 0 c 1,2,-1 - 821 0 l 1,3,-1 - 821 573 l 1,4,5 - 777 550 777 550 696 536 c 128,-1,6 - 615 522 615 522 551 522 c 0,7,8 - 333 522 333 522 228 656.5 c 128,-1,9 - 123 791 123 791 123 1085 c 2,10,-1 - 123 1434 l 1,11,-1 - 297 1434 l 1,12,-1 - 297 1110 l 2,13,14 - 297 710 297 710 463 644 c 0,15,16 - 509 625 509 625 575 625 c 0,17,18 - 578 625 578 625 582 625 c 0,19,20 - 710 625 710 625 821 721 c 1,21,-1 - 821 1434 l 1,22,-1 - 995 1434 l 1,23,-1 - 995 102 l 1,24,-1 - 1198 102 l 1,25,-1 - 1198 -315 l 1,26,-1 - 1100 -315 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B7 -Encoding: 1207 1207 785 -Width: 1110 -VWidth: 0 -Flags: W -HStem: 0 102<821 878> 313 102<332 610> 860 41G<82 246 657 821> -VStem: 82 164<531 901> 657 164<102 365 461 901> 922 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -922 -315 m 5,0,1 - 922 -94 922 -94 856 0 c 5,2,-1 - 657 0 l 5,3,-1 - 657 365 l 1,4,5 - 558 313 558 313 464.5 313 c 128,-1,6 - 371 313 371 313 320 324 c 128,-1,7 - 269 335 269 335 230.5 355.5 c 128,-1,8 - 192 376 192 376 166 413 c 128,-1,9 - 140 450 140 450 123.5 493 c 128,-1,10 - 107 536 107 536 98 602 c 0,11,12 - 82 718 82 718 82 901 c 1,13,-1 - 246 901 l 1,14,15 - 246 538 246 538 329 461 c 0,16,17 - 359 433 359 433 390 424.5 c 128,-1,18 - 421 416 421 416 469 416 c 0,19,20 - 594 416 594 416 657 512 c 1,21,-1 - 657 901 l 1,22,-1 - 821 901 l 1,23,-1 - 821 102 l 5,24,-1 - 1020 102 l 5,25,-1 - 1020 -315 l 5,26,-1 - 922 -315 l 5,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B8 -Encoding: 1208 1208 786 -Width: 1165 -VWidth: 0 -Flags: W -HStem: 0 43G<821 995> 524 111<415 492 606 764> 864 41G<492 606> 1393 41G<123 297 821 995> -VStem: 123 174<785 1434> 492 115<274 528 635 905> 821 174<0 573 686 1434> -LayerCount: 2 -Fore -SplineSet -492 905 m 1,0,-1 - 606 905 l 1,1,-1 - 606 625 l 1,2,3 - 720 633 720 633 821 721 c 1,4,-1 - 821 1434 l 1,5,-1 - 995 1434 l 1,6,-1 - 995 0 l 1,7,-1 - 821 0 l 1,8,-1 - 821 573 l 1,9,10 - 754 536 754 536 606 524 c 1,11,-1 - 606 274 l 1,12,-1 - 492 274 l 1,13,-1 - 492 524 l 1,14,15 - 304 541 304 541 213.5 676 c 128,-1,16 - 123 811 123 811 123 1085 c 2,17,-1 - 123 1434 l 1,18,-1 - 297 1434 l 1,19,-1 - 297 1110 l 2,20,21 - 297 1107 297 1107 297 1104 c 0,22,23 - 297 772 297 772 416 674 c 0,24,25 - 448 647 448 647 492 635 c 1,26,-1 - 492 905 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B9 -Encoding: 1209 1209 787 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 43G<657 821> 319 98<329 397 512 613> 860 41G<82 246 657 821> -VStem: 82 164<523 901> 397 115<135 318 422 612> 657 164<0 365 462 901> -LayerCount: 2 -Fore -SplineSet -397 612 m 1,0,-1 - 512 612 l 1,1,-1 - 512 418 l 1,2,3 - 603 431 603 431 657 512 c 1,4,-1 - 657 901 l 1,5,-1 - 821 901 l 1,6,-1 - 821 0 l 1,7,-1 - 657 0 l 1,8,-1 - 657 365 l 1,9,10 - 595 332 595 332 512 319 c 1,11,-1 - 512 135 l 1,12,-1 - 397 135 l 1,13,-1 - 397 315 l 1,14,15 - 241 322 241 322 167 410 c 0,16,17 - 104 485 104 485 88 686 c 0,18,19 - 82 770 82 770 82 901 c 1,20,-1 - 246 901 l 1,21,22 - 246 568 246 568 314 476 c 0,23,24 - 346 434 346 434 397 422 c 1,25,-1 - 397 612 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BA -Encoding: 1210 1210 788 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43G<147 322 946 1120> 819 102<464 826> 1393 41G<147 322> -VStem: 147 174<0 719 831 1434> 946 174<0 681> -LayerCount: 2 -Fore -SplineSet -147 0 m 9,0,-1 - 147 1434 l 1,1,-1 - 322 1434 l 1,2,-1 - 322 831 l 1,3,4 - 324 832 324 832 346.5 844 c 128,-1,5 - 369 856 369 856 376 859.5 c 128,-1,6 - 383 863 383 863 406.5 874 c 128,-1,7 - 430 885 430 885 443.5 889.5 c 128,-1,8 - 457 894 457 894 482 902 c 0,9,10 - 508 908 508 908 528 912 c 0,11,12 - 584 922 584 922 629 922 c 0,13,14 - 853 922 853 922 986.5 812.5 c 128,-1,15 - 1120 703 1120 703 1120 492 c 2,16,-1 - 1120 0 l 1,17,-1 - 946 0 l 1,18,-1 - 946 467 l 2,19,20 - 946 819 946 819 659 819 c 0,21,22 - 560 819 560 819 472.5 779 c 128,-1,23 - 385 739 385 739 322 684 c 1,24,-1 - 322 0 l 1,25,-1 - 147 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BB -Encoding: 1211 1211 789 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 784 948> 819 102<385 697> 1311 41<147 311> -VStem: 147 164<0 756 870 1352> 784 164<0 717> -LayerCount: 2 -Fore -Refer: 2 104 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04BC -Encoding: 1212 1212 790 -Width: 1742 -VWidth: 0 -Flags: W -HStem: -20 102<880 1252> 717 102<300 422 600 1481> 1352 102<887 1201> -VStem: 66 184<885 1085> 422 174<421 717 819 999> -LayerCount: 2 -Fore -SplineSet -1053 82 m 0,0,1 - 1284 82 1284 82 1409 256 c 1,2,-1 - 1563 188 l 1,3,4 - 1396 -20 1396 -20 1022 -20 c 0,5,6 - 850 -20 850 -20 698 93 c 0,7,8 - 528 220 528 220 460 444 c 0,9,10 - 422 568 422 568 422 717 c 1,11,12 - 178 717 178 717 106 889 c 0,13,14 - 66 986 66 986 66 1143 c 1,15,-1 - 250 1085 l 1,16,17 - 250 924 250 924 296 868 c 0,18,19 - 334 822 334 822 392 820 c 0,20,21 - 404 820 404 820 426 819 c 1,22,23 - 460 1200 460 1200 728 1364 c 0,24,25 - 875 1454 875 1454 1059 1454 c 0,26,27 - 1198 1454 1198 1454 1336 1377 c 0,28,29 - 1474 1301 1474 1301 1566 1136 c 0,30,31 - 1661 968 1661 968 1661 722 c 0,32,-1 - 1661 717 l 1,33,-1 - 596 717 l 1,34,35 - 596 562 596 562 636 438 c 0,36,37 - 676 314 676 314 741 238 c 0,38,39 - 877 82 877 82 1053 82 c 0,0,1 -600 819 m 1,40,-1 - 1481 819 l 1,41,42 - 1451 1116 1451 1116 1253 1272 c 0,43,44 - 1152 1352 1152 1352 1059 1352 c 0,45,46 - 938 1352 938 1352 828 1272 c 0,47,48 - 632 1129 632 1129 600 819 c 1,40,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BD -Encoding: 1213 1213 791 -Width: 1359 -VWidth: 0 -Flags: W -HStem: -20 102<750 1065> 451 102<311 422 596 1102> 819 102<734 993> -VStem: 66 184<619 819> 422 164<256 451 553 652> -LayerCount: 2 -Fore -SplineSet -596 553 m 1,0,-1 - 1102 553 l 1,1,2 - 1084 673 1084 673 1025.5 746 c 128,-1,3 - 967 819 967 819 871.5 819 c 128,-1,4 - 776 819 776 819 699 747 c 128,-1,5 - 622 675 622 675 596 553 c 1,0,-1 -1264 158 m 1,6,7 - 1123 -20 1123 -20 885 -20 c 0,8,9 - 683 -20 683 -20 552.5 109.5 c 128,-1,10 - 422 239 422 239 422 451 c 1,11,12 - 178 451 178 451 106 623 c 0,13,14 - 66 720 66 720 66 877 c 1,15,-1 - 250 819 l 1,16,17 - 250 587 250 587 366 560 c 0,18,19 - 396 553 396 553 432 553 c 1,20,21 - 465 718 465 718 584.5 820 c 128,-1,22 - 704 922 704 922 844 922 c 0,23,24 - 947 922 947 922 1031 880 c 0,25,26 - 1114 838 1114 838 1166 770 c 0,27,28 - 1274 627 1274 627 1274 451 c 1,29,-1 - 586 451 l 1,30,31 - 586 283 586 283 677 182.5 c 128,-1,32 - 768 82 768 82 916.5 82 c 128,-1,33 - 1065 82 1065 82 1141 205 c 1,34,-1 - 1264 158 l 1,6,7 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BE -Encoding: 1214 1214 792 -Width: 1742 -VWidth: 0 -Flags: W -HStem: 717 102<300 422 600 1481> 1352 102<887 1201> -VStem: 66 184<885 1085> 422 174<437 717 819 999> 1028 98<-315 -41> -LayerCount: 2 -Fore -SplineSet -600 819 m 1,0,-1 - 1481 819 l 1,1,2 - 1451 1116 1451 1116 1253 1272 c 0,3,4 - 1152 1352 1152 1352 1059 1352 c 0,5,6 - 938 1352 938 1352 828 1272 c 0,7,8 - 632 1129 632 1129 600 819 c 1,0,-1 -1053 82 m 0,9,10 - 1284 82 1284 82 1409 256 c 1,11,-1 - 1563 188 l 1,12,13 - 1418 11 1418 11 1126 -16 c 1,14,-1 - 1126 -315 l 1,15,-1 - 1028 -315 l 1,16,17 - 1028 -125 1028 -125 973 -18 c 1,18,19 - 808 -2 808 -2 670 114 c 0,20,21 - 516 243 516 243 456 459 c 0,22,23 - 422 578 422 578 422 717 c 1,24,25 - 178 717 178 717 106 889 c 0,26,27 - 66 986 66 986 66 1143 c 1,28,-1 - 250 1085 l 1,29,30 - 250 924 250 924 296 868 c 0,31,32 - 334 822 334 822 392 820 c 0,33,34 - 404 820 404 820 426 819 c 1,35,36 - 460 1200 460 1200 728 1364 c 0,37,38 - 875 1454 875 1454 1059 1454 c 0,39,40 - 1198 1454 1198 1454 1336 1377 c 0,41,42 - 1474 1301 1474 1301 1566 1136 c 0,43,44 - 1661 968 1661 968 1661 722 c 0,45,-1 - 1661 717 l 1,46,-1 - 596 717 l 1,47,48 - 596 562 596 562 636 438 c 0,49,50 - 676 314 676 314 741 238 c 0,51,52 - 877 82 877 82 1053 82 c 0,9,10 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BF -Encoding: 1215 1215 793 -Width: 1359 -VWidth: 0 -Flags: W -HStem: 451 102<311 422 596 1102> 819 102<734 993> -VStem: 66 184<619 819> 422 164<254 451 553 652> 862 98<-315 -36> -LayerCount: 2 -Fore -SplineSet -586 451 m 1,0,1 - 586 283 586 283 677 182.5 c 128,-1,2 - 768 82 768 82 916.5 82 c 128,-1,3 - 1065 82 1065 82 1141 205 c 1,4,-1 - 1264 158 l 1,5,6 - 1148 12 1148 12 961 -14 c 1,7,-1 - 961 -315 l 1,8,-1 - 862 -315 l 1,9,10 - 862 -115 862 -115 807 -14 c 1,11,12 - 635 11 635 11 528.5 136 c 128,-1,13 - 422 261 422 261 422 451 c 1,14,15 - 178 451 178 451 106 623 c 0,16,17 - 66 720 66 720 66 877 c 1,18,-1 - 250 819 l 1,19,20 - 250 662 250 662 300 604 c 0,21,22 - 332 568 332 568 359 562 c 0,23,24 - 395 553 395 553 432 553 c 1,25,26 - 465 718 465 718 584.5 820 c 128,-1,27 - 704 922 704 922 844 922 c 0,28,29 - 947 922 947 922 1031 880 c 0,30,31 - 1114 838 1114 838 1166 770 c 0,32,33 - 1274 627 1274 627 1274 451 c 1,34,-1 - 586 451 l 1,0,1 -596 553 m 1,35,-1 - 1102 553 l 1,36,37 - 1084 673 1084 673 1025.5 746 c 128,-1,38 - 967 819 967 819 871.5 819 c 128,-1,39 - 776 819 776 819 699 747 c 128,-1,40 - 622 675 622 675 596 553 c 1,35,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C0 -Encoding: 1216 1216 794 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> -VStem: 172 174<0 1434> -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04C1 -Encoding: 1217 1217 795 -Width: 1560 -VWidth: 0 -Flags: W -HStem: 0 43<86 260 721 895 1356 1530> 1331 102<106 189 1427 1509> 1522 117<650 968> -VStem: 86 174<0 96> 571 76<1644 1730> 721 174<0 666 778 1434> 971 76<1644 1730> 1356 174<0 96> -LayerCount: 2 -Fore -Refer: 1101 57420 N 1 0 0 1 1397 252 2 -Refer: 425 1046 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04C2 -Encoding: 1218 1218 796 -Width: 1286 -VWidth: 0 -Flags: W -HStem: 0 43<80 254 561 725 1032 1206> 799 102<70 178 1108 1217> 1085 117<484 802> -VStem: 80 174<0 111> 406 76<1208 1293> 561 164<0 384 489 901> 805 76<1208 1293> 1032 174<0 111> -LayerCount: 2 -Fore -Refer: 1101 57420 S 1 0 0 1 1231 -184 2 -Refer: 447 1078 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04C3 -Encoding: 1219 1219 797 -Width: 1347 -VWidth: 0 -Flags: W -HStem: -217 102<763 966> -59 41G<677 739> 0 43G<174 348> 819 102<753 932> 1393 41G<174 348 967 1208> -VStem: 174 174<0 469 696 1434> 1030 174<-7 711> -LayerCount: 2 -Fore -SplineSet -348 469 m 1,0,-1 - 348 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 348 1434 l 1,4,-1 - 348 696 l 1,5,-1 - 1004 1434 l 1,6,-1 - 1208 1434 l 1,7,-1 - 752 922 l 1,8,9 - 970 922 970 922 1087 814.5 c 128,-1,10 - 1204 707 1204 707 1204 492 c 2,11,-1 - 1204 291 l 2,12,13 - 1204 -45 1204 -45 1058 -156 c 0,14,15 - 978 -217 978 -217 856 -217 c 1,16,17 - 798 -217 798 -217 728 -191.5 c 128,-1,18 - 658 -166 658 -166 614 -125 c 1,19,-1 - 717 -18 l 1,20,21 - 783 -115 783 -115 887 -115 c 0,22,23 - 1030 -115 1030 -115 1030 246 c 2,24,-1 - 1030 467 l 2,25,26 - 1030 676 1030 676 958 752 c 0,27,28 - 895 819 895 819 783 819 c 0,29,30 - 781 819 781 819 780 819 c 0,31,32 - 708 819 708 819 635 791 c 1,33,-1 - 348 469 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C4 -Encoding: 1220 1220 798 -Width: 1042 -VWidth: 0 -Flags: W -HStem: -236 102<573 751> 0 43G<147 311> 487 102<598 727> 860 41G<147 311 652 877> -VStem: 147 164<0 268 477 901> 788 164<-78 417> -LayerCount: 2 -Fore -SplineSet -311 268 m 1,0,-1 - 311 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 901 l 1,3,-1 - 311 901 l 1,4,-1 - 311 477 l 1,5,-1 - 688 901 l 1,6,-1 - 877 901 l 1,7,-1 - 598 590 l 1,8,9 - 790 583 790 583 871 479 c 0,10,11 - 952 374 952 374 952 174 c 0,12,13 - 952 -236 952 -236 655 -236 c 0,14,15 - 586 -236 586 -236 525.5 -211.5 c 128,-1,16 - 465 -187 465 -187 434 -143 c 1,17,-1 - 537 -37 l 1,18,19 - 568 -92 568 -92 600 -112.5 c 128,-1,20 - 632 -133 632 -133 686 -133 c 0,21,22 - 788 -133 788 -133 788 135 c 0,23,24 - 788 402 788 402 710 458 c 0,25,26 - 670 486 670 486 603 486 c 0,27,28 - 601 486 601 486 599 487 c 0,29,30 - 534 487 534 487 489 469 c 1,31,-1 - 311 268 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C5 -Encoding: 1221 1221 799 -Width: 1413 -VWidth: 0 -Flags: W -HStem: -20 102<129 347> 0 102<1112 1165> 1331 102<557 938> -VStem: 383 174<111 1331> 938 174<102 1331> -LayerCount: 2 -Fore -SplineSet -1165 0 m 5,0,-1 - 938 0 l 1,1,-1 - 938 1331 l 1,2,-1 - 557 1331 l 1,3,-1 - 557 260 l 2,4,5 - 556 57 556 57 352 -4 c 0,6,7 - 298 -20 298 -20 242 -20 c 0,8,9 - 112 -20 112 -20 35 72 c 1,10,-1 - 164 133 l 1,11,12 - 200 82 200 82 266 82 c 128,-1,13 - 332 82 332 82 357.5 140.5 c 128,-1,14 - 383 199 383 199 383 328 c 2,15,-1 - 383 1434 l 1,16,-1 - 1112 1434 l 1,17,-1 - 1112 102 l 1,18,-1 - 1358 102 l 1,19,-1 - 1206 -254 l 1,20,-1 - 1112 -254 l 1,21,-1 - 1165 0 l 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C6 -Encoding: 1222 1222 800 -Width: 1368 -VWidth: 0 -Flags: W -HStem: -20 102<155 376> 0 102<1063 1116> 799 102<573 899> -VStem: 410 164<111 799> 899 164<102 799> -LayerCount: 2 -Fore -SplineSet -899 0 m 1,0,-1 - 899 799 l 1,1,-1 - 573 799 l 1,2,-1 - 573 260 l 2,3,4 - 572 56 572 56 376 -4 c 0,5,6 - 324 -20 324 -20 268 -20 c 0,7,8 - 138 -20 138 -20 61 72 c 1,9,-1 - 190 133 l 1,10,11 - 226 82 226 82 292.5 82 c 128,-1,12 - 359 82 359 82 384.5 140.5 c 128,-1,13 - 410 199 410 199 410 328 c 2,14,-1 - 410 901 l 1,15,-1 - 1063 901 l 1,16,-1 - 1063 102 l 1,17,-1 - 1309 102 l 1,18,-1 - 1157 -254 l 1,19,-1 - 1063 -254 l 1,20,-1 - 1116 0 l 1,21,-1 - 899 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C7 -Encoding: 1223 1223 801 -Width: 1351 -VWidth: 0 -Flags: W -HStem: -217 102<740 943> -59 41G<655 717> 0 43G<174 348> 717 102<348 1008> 1393 41G<174 348 1008 1182> -VStem: 174 174<0 717 819 1434> 1008 174<-7 717 819 1434> -LayerCount: 2 -Fore -SplineSet -1182 291 m 2,0,1 - 1182 -45 1182 -45 1036 -156 c 0,2,3 - 956 -217 956 -217 834 -217 c 1,4,5 - 776 -217 776 -217 706 -191.5 c 128,-1,6 - 636 -166 636 -166 592 -125 c 1,7,-1 - 694 -18 l 1,8,9 - 760 -115 760 -115 864 -115 c 0,10,11 - 930 -115 930 -115 969 -29.5 c 128,-1,12 - 1008 56 1008 56 1008 246 c 2,13,-1 - 1008 717 l 1,14,-1 - 348 717 l 1,15,-1 - 348 0 l 1,16,-1 - 174 0 l 1,17,-1 - 174 1434 l 1,18,-1 - 348 1434 l 1,19,-1 - 348 819 l 1,20,-1 - 1008 819 l 1,21,-1 - 1008 1434 l 1,22,-1 - 1182 1434 l 1,23,-1 - 1182 291 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C8 -Encoding: 1224 1224 802 -Width: 1054 -VWidth: 0 -Flags: W -HStem: -236 102<555 733> 0 43G<123 287> 440 102<287 770> 860 41G<123 287 770 934> -VStem: 123 164<0 440 543 901> 770 164<-78 440 543 901> -LayerCount: 2 -Fore -SplineSet -934 160 m 2,0,1 - 934 -26 934 -26 860 -131 c 128,-1,2 - 786 -236 786 -236 637 -236 c 0,3,4 - 568 -236 568 -236 507.5 -211.5 c 128,-1,5 - 447 -187 447 -187 416 -143 c 1,6,-1 - 518 -37 l 1,7,8 - 548 -92 548 -92 580.5 -112.5 c 128,-1,9 - 613 -133 613 -133 668 -133 c 0,10,11 - 770 -133 770 -133 770 135 c 2,12,-1 - 770 440 l 1,13,-1 - 287 440 l 1,14,-1 - 287 0 l 1,15,-1 - 123 0 l 1,16,-1 - 123 901 l 1,17,-1 - 287 901 l 1,18,-1 - 287 543 l 1,19,-1 - 770 543 l 1,20,-1 - 770 901 l 1,21,-1 - 934 901 l 1,22,-1 - 934 160 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C9 -Encoding: 1225 1225 803 -Width: 1486 -VWidth: 0 -Flags: W -HStem: 0 102<1182 1235> 717 102<348 1008> 1393 41G<174 348 1008 1182> -VStem: 174 174<0 717 819 1434> 1008 174<102 717 819 1434> -LayerCount: 2 -Fore -SplineSet -1182 102 m 1,0,-1 - 1427 102 l 1,1,-1 - 1276 -254 l 1,2,-1 - 1182 -254 l 1,3,-1 - 1235 0 l 1,4,-1 - 1008 0 l 1,5,-1 - 1008 717 l 1,6,-1 - 348 717 l 1,7,-1 - 348 0 l 1,8,-1 - 174 0 l 1,9,-1 - 174 1434 l 1,10,-1 - 348 1434 l 1,11,-1 - 348 819 l 1,12,-1 - 1008 819 l 1,13,-1 - 1008 1434 l 1,14,-1 - 1182 1434 l 1,15,-1 - 1182 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CA -Encoding: 1226 1226 804 -Width: 1214 -VWidth: 0 -Flags: W -HStem: 0 102<934 963> 440 102<287 770> 860 41G<123 287 770 934> -VStem: 123 164<0 440 543 901> 770 164<102 440 543 901> -LayerCount: 2 -Fore -SplineSet -934 102 m 1,0,-1 - 1155 102 l 1,1,-1 - 1004 -254 l 1,2,-1 - 909 -254 l 1,3,-1 - 963 0 l 1,4,-1 - 770 0 l 1,5,-1 - 770 440 l 1,6,-1 - 287 440 l 1,7,-1 - 287 0 l 1,8,-1 - 123 0 l 1,9,-1 - 123 901 l 1,10,-1 - 287 901 l 1,11,-1 - 287 543 l 1,12,-1 - 770 543 l 1,13,-1 - 770 901 l 1,14,-1 - 934 901 l 1,15,-1 - 934 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CB -Encoding: 1227 1227 805 -Width: 1165 -VWidth: 0 -Flags: W -HStem: 0 102<760 821> 522 102<425 746> 1393 41G<123 297 821 995> -VStem: 123 174<791 1434> 618 98<-315 -38> 821 174<102 573 688 1434> -LayerCount: 2 -Fore -SplineSet -995 1434 m 1,0,-1 - 995 0 l 1,1,-1 - 782 0 l 1,2,3 - 743 -39 743 -39 724 -193 c 0,4,5 - 717 -250 717 -250 717 -315 c 1,6,-1 - 618 -315 l 1,7,-1 - 618 102 l 1,8,-1 - 821 102 l 1,9,-1 - 821 573 l 1,10,11 - 777 550 777 550 696 536 c 128,-1,12 - 615 522 615 522 551 522 c 0,13,14 - 333 522 333 522 228 656.5 c 128,-1,15 - 123 791 123 791 123 1085 c 2,16,-1 - 123 1434 l 1,17,-1 - 297 1434 l 1,18,-1 - 297 1110 l 2,19,20 - 297 710 297 710 463 644 c 0,21,22 - 509 625 509 625 575 625 c 0,23,24 - 578 625 578 625 582 625 c 0,25,26 - 710 625 710 625 821 721 c 1,27,-1 - 821 1434 l 1,28,-1 - 995 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CC -Encoding: 1228 1228 806 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<600 657> 313 102<332 610> 860 41G<82 246 657 821> -VStem: 82 164<531 901> 459 98<-315 -38> 657 164<102 365 461 901> -LayerCount: 2 -Fore -SplineSet -821 901 m 1,0,-1 - 821 0 l 1,1,-1 - 623 0 l 1,2,3 - 583 -40 583 -40 564 -193 c 0,4,5 - 557 -250 557 -250 557 -315 c 1,6,-1 - 459 -315 l 1,7,-1 - 459 102 l 1,8,-1 - 657 102 l 1,9,-1 - 657 365 l 1,10,11 - 558 313 558 313 464.5 313 c 128,-1,12 - 371 313 371 313 320 324 c 128,-1,13 - 269 335 269 335 230.5 355.5 c 128,-1,14 - 192 376 192 376 166 413 c 128,-1,15 - 140 450 140 450 123.5 493 c 128,-1,16 - 107 536 107 536 98 602 c 0,17,18 - 82 718 82 718 82 901 c 1,19,-1 - 246 901 l 1,20,21 - 246 538 246 538 329 461 c 0,22,23 - 359 433 359 433 390 424.5 c 128,-1,24 - 421 416 421 416 469 416 c 0,25,26 - 594 416 594 416 657 512 c 1,27,-1 - 657 901 l 1,28,-1 - 821 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CD -Encoding: 1229 1229 807 -Width: 1761 -VWidth: 0 -Flags: W -HStem: 0 102<1456 1509> 1393 41G<174 367 1263 1456> -VStem: 174 174<0 1098> 1282 174<102 1098> -LayerCount: 2 -Fore -SplineSet -1456 102 m 1,0,-1 - 1702 102 l 1,1,-1 - 1550 -254 l 1,2,-1 - 1456 -254 l 1,3,-1 - 1509 0 l 1,4,-1 - 1282 0 l 1,5,-1 - 1282 1098 l 1,6,-1 - 815 102 l 1,7,-1 - 348 1098 l 1,8,-1 - 348 0 l 1,9,-1 - 174 0 l 1,10,-1 - 174 1434 l 1,11,-1 - 348 1434 l 1,12,-1 - 815 432 l 1,13,-1 - 1282 1434 l 1,14,-1 - 1456 1434 l 1,15,-1 - 1456 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CE -Encoding: 1230 1230 808 -Width: 1337 -VWidth: 0 -Flags: W -HStem: 0 102<1057 1085> 860 41G<123 308 872 1057> -VStem: 123 164<0 614> 893 164<102 614> -LayerCount: 2 -Fore -SplineSet -1057 102 m 1,0,-1 - 1278 102 l 1,1,-1 - 1126 -254 l 1,2,-1 - 1032 -254 l 1,3,-1 - 1085 0 l 1,4,-1 - 893 0 l 1,5,-1 - 893 614 l 1,6,-1 - 590 25 l 1,7,-1 - 287 614 l 1,8,-1 - 287 0 l 1,9,-1 - 123 0 l 1,10,-1 - 123 901 l 1,11,-1 - 287 901 l 1,12,-1 - 590 311 l 1,13,-1 - 893 901 l 1,14,-1 - 1057 901 l 1,15,-1 - 1057 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CF -Encoding: 1231 1231 809 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> -VStem: 123 164<0 901> -LayerCount: 2 -Fore -Refer: 112 305 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D0 -Encoding: 1232 1232 810 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1522 117<492 810> -VStem: 414 76<1644 1730> 813 76<1644 1730> -LayerCount: 2 -Fore -Refer: 1101 57420 S 1 0 0 1 1239 252 2 -Refer: 382 1040 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D1 -Encoding: 1233 1233 811 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1085 117<320 638> -VStem: 94 164<178 440> 242 76<1208 1293> 641 76<1208 1293> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 1101 57420 N 1 0 0 1 1067 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D2 -Encoding: 1234 1234 812 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1516 178<383 547 752 915> -VStem: 383 164<1516 1694> 752 164<1516 1694> -LayerCount: 2 -Fore -Refer: 142 196 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D3 -Encoding: 1235 1235 813 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1085 178<221 385 590 754> -VStem: 94 164<178 440> 221 164<1085 1264> 590 164<1085 1264> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 132 228 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D4 -Encoding: 1236 1236 814 -Width: 1730 -VWidth: 0 -Flags: W -HStem: 0 102<960 1647> 410 102<561 786> 799 102<960 1429> 1331 102<960 1614> -VStem: 786 174<102 410 512 799 901 1130> -LayerCount: 2 -Fore -Refer: 168 198 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D5 -Encoding: 1237 1237 815 -Width: 1632 -VWidth: 0 -Flags: W -HStem: -20 102<356 690 1019 1337> 451 102<868 1374> 520 102<343 688> 819 102<304 637 1007 1266> -VStem: 94 164<178 440> 694 164<250 451> -LayerCount: 2 -Fore -Refer: 169 230 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D6 -Encoding: 1238 1238 816 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> 1522 117<369 687> -VStem: 174 174<102 799 901 1331> 291 76<1644 1730> 690 76<1644 1730> -LayerCount: 2 -Fore -Refer: 1101 57420 N 1 0 0 1 1116 252 2 -Refer: 32 69 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D7 -Encoding: 1239 1239 817 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1085 117<375 694> -VStem: 90 164<256 451> 297 76<1208 1293> 696 76<1208 1293> -LayerCount: 2 -Fore -Refer: 1101 57420 N 1 0 0 1 1122 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D8 -Encoding: 1240 1240 818 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<542 855> 614 102<262 1143> 1352 102<490 863> -VStem: 1143 178<427 614 717 1012> -LayerCount: 2 -Fore -Refer: 652 399 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10846 -Encoding: 1241 1241 819 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<371 628> 348 102<262 768> 819 102<299 614> -VStem: 778 164<451 645> -LayerCount: 2 -Fore -Refer: 601 477 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04DA -Encoding: 1242 1242 820 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<542 855> 614 102<262 1143> 1352 102<490 863> 1516 178<438 602 807 971> -VStem: 438 164<1516 1694> 807 164<1516 1694> 1143 178<427 614 717 1012> -LayerCount: 2 -Fore -Refer: 99 776 S 1 0 0 1 1294 246 2 -Refer: 652 399 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04DB -Encoding: 1243 1243 821 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<371 628> 348 102<262 768> 819 102<299 614> 1085 178<213 377 582 745> -VStem: 213 164<1085 1264> 582 164<1085 1264> 778 164<451 645> -LayerCount: 2 -Fore -Refer: 99 776 S 1 0 0 1 1069 -184 2 -Refer: 601 477 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04DC -Encoding: 1244 1244 822 -Width: 1560 -VWidth: 0 -Flags: W -HStem: 0 43<86 260 721 895 1356 1530> 1331 102<106 189 1427 1509> 1516 178<541 705 909 1073> -VStem: 86 174<0 96> 541 164<1516 1694> 721 174<0 666 778 1434> 909 164<1516 1694> 1356 174<0 96> -LayerCount: 2 -Fore -Refer: 99 776 S 1 0 0 1 1397 246 2 -Refer: 425 1046 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04DD -Encoding: 1245 1245 823 -Width: 1286 -VWidth: 0 -Flags: W -HStem: 0 43<80 254 561 725 1032 1206> 799 102<70 178 1108 1217> 1085 178<377 541 745 909> -VStem: 80 174<0 111> 377 164<1085 1264> 561 164<0 384 489 901> 745 164<1085 1264> 1032 174<0 111> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1233 -184 2 -Refer: 447 1078 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04DE -Encoding: 1246 1246 824 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -20 102<332 660> 799 102<373 641> 1352 102<345 676> 1516 178<246 410 614 778> -VStem: 246 164<1516 1694> 614 164<1516 1694> 752 174<1000 1276> 813 174<263 622> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1102 246 2 -Refer: 426 1047 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04DF -Encoding: 1247 1247 825 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<259 582> 451 102<295 543> 819 102<261 562> 1085 178<160 324 528 692> -VStem: 160 164<1085 1264> 528 164<1085 1264> 598 164<604 783> 647 164<145 379> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1016 -184 2 -Refer: 448 1079 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04E0 -Encoding: 1248 1248 826 -Width: 1030 -VWidth: 0 -Flags: W -HStem: -20 102<322 620> 782 102<575 613> 1331 102<158 657> -VStem: 61 137<202 327> 762 174<241 621> -LayerCount: 2 -Fore -Refer: 628 439 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E1 -Encoding: 1249 1249 827 -Width: 940 -VWidth: 0 -Flags: W -HStem: -410 102<262 579> 270 102<508 568> 799 102<90 590> -VStem: 694 164<-190 144> -LayerCount: 2 -Fore -Refer: 627 658 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E2 -Encoding: 1250 1250 828 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1063 1237> 1393 41<174 348 1063 1237> 1556 82<475 946> -VStem: 174 174<0 61 309 1434> 475 471<1556 1638> 1063 174<0 1122 1372 1434> -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1309 287 2 -Refer: 427 1048 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E4 -Encoding: 1252 1252 829 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1063 1237> 1393 41<174 348 1063 1237> 1516 178<438 602 807 971> -VStem: 174 174<0 61 309 1434> 438 164<1516 1694> 807 164<1516 1694> 1063 174<0 1122 1372 1434> -LayerCount: 2 -Fore -Refer: 99 776 S 1 0 0 1 1294 246 2 -Refer: 427 1048 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E3 -Encoding: 1251 1251 830 -Width: 1054 -VWidth: 0 -Flags: W -HStem: 0 43<123 316 770 934> 860 41<123 287 741 934> 1126 82<293 764> -VStem: 123 164<227 901> 293 471<1126 1208> 770 164<0 668> -CounterMasks: 1 1c -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1126 -143 2 -Refer: 449 1080 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E5 -Encoding: 1253 1253 831 -Width: 1054 -VWidth: 0 -Flags: W -HStem: 0 43<123 316 770 934> 860 41<123 287 741 934> 1085 178<260 424 629 793> -VStem: 123 164<227 901> 260 164<1085 1264> 629 164<1085 1264> 770 164<0 668> -LayerCount: 2 -Fore -Refer: 99 776 S 1 0 0 1 1116 -184 2 -Refer: 449 1080 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E6 -Encoding: 1254 1254 832 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> 1516 178<438 602 807 971> -VStem: 102 174<441 1012> 438 164<1516 1694> 807 164<1516 1694> 1163 174<438 1009> -LayerCount: 2 -Fore -Refer: 157 214 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E7 -Encoding: 1255 1255 833 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1085 178<266 430 635 799> -VStem: 90 164<231 648> 266 164<1085 1264> 635 164<1085 1264> 807 164<241 660> -LayerCount: 2 -Fore -Refer: 136 246 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E8 -Encoding: 1256 1256 834 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<571 874> 666 102<279 1161> 1352 102<554 872> -VStem: 102 176<440 666 768 1012> 1161 176<440 666 768 1005> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -Refer: 639 415 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E9 -Encoding: 1257 1257 835 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<386 674> 399 102<256 805> 819 102<406 674> -VStem: 90 166<226 399 502 655> 805 166<236 399 502 666> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -Refer: 640 629 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04EA -Encoding: 1258 1258 836 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<571 874> 666 102<279 1161> 1352 102<554 872> 1516 178<438 602 807 971> -VStem: 102 176<440 666 768 1012> 438 164<1516 1694> 807 164<1516 1694> 1161 176<440 666 768 1005> -LayerCount: 2 -Fore -Refer: 639 415 N 1 0 0 1 0 0 2 -Refer: 99 776 S 1 0 0 1 1294 246 2 -Validated: 1 -EndChar - -StartChar: uni04EB -Encoding: 1259 1259 837 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<386 674> 399 102<256 805> 819 102<406 674> 1085 178<264 428 633 797> -VStem: 90 166<226 399 502 655> 264 164<1085 1264> 633 164<1085 1264> 805 166<236 399 502 666> -LayerCount: 2 -Fore -Refer: 640 629 N 1 0 0 1 0 0 2 -Refer: 99 776 N 1 0 0 1 1120 -184 2 -Validated: 1 -EndChar - -StartChar: uni04EC -Encoding: 1260 1260 838 -Width: 1347 -VWidth: 0 -Flags: W -HStem: -20 102<364 772> 713 102<569 1071> 1352 102<416 820> 1516 178<356 520 725 889> -VStem: 356 164<1516 1694> 725 164<1516 1694> 1075 174<440 713 815 1026> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1212 246 2 -Refer: 440 1069 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04ED -Encoding: 1261 1261 839 -Width: 989 -VWidth: 0 -Flags: W -HStem: -20 102<258 567> 430 102<358 733> 819 102<301 598> 1085 178<211 375 580 743> -VStem: 211 164<1085 1264> 580 164<1085 1264> 739 164<270 430 532 652> -LayerCount: 2 -Fore -Refer: 99 776 S 1 0 0 1 1067 -184 2 -Refer: 465 1101 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04EE -Encoding: 1262 1262 840 -Width: 1081 -VWidth: 0 -Flags: W -HStem: -20 102<277 402> 1393 41<82 246 874 1063> 1556 82<338 809> -VStem: 338 471<1556 1638> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1171 287 2 -Refer: 431 1059 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F0 -Encoding: 1264 1264 841 -Width: 1081 -VWidth: 0 -Flags: W -HStem: -20 102<277 402> 1393 41<82 246 874 1063> 1516 178<307 471 676 840> -VStem: 307 164<1516 1694> 676 164<1516 1694> -LayerCount: 2 -Fore -Refer: 99 776 S 1 0 0 1 1163 246 2 -Refer: 431 1059 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F2 -Encoding: 1266 1266 842 -Width: 1081 -VWidth: 0 -Flags: W -HStem: -20 102<277 402> 1393 41<82 246 874 1063> 1501 387 -VStem: 387 350 633 350 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1206 246 2 -Refer: 431 1059 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04EF -Encoding: 1263 1263 843 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 860 41<45 209 685 864> 1126 82<227 698> -VStem: 227 471<1126 1208> -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1061 -143 2 -Refer: 456 1091 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F1 -Encoding: 1265 1265 844 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 860 41<45 209 685 864> 1085 178<193 356 561 725> -VStem: 193 164<1085 1264> 561 164<1085 1264> -LayerCount: 2 -Fore -Refer: 371 255 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F3 -Encoding: 1267 1267 845 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<164 291> 860 41<45 209 685 864> 1071 387 -VStem: 254 350 500 350 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1073 -184 2 -Refer: 456 1091 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F4 -Encoding: 1268 1268 846 -Width: 1165 -VWidth: 0 -Flags: W -HStem: 0 43<821 995> 522 102<425 746> 1393 41<123 297 821 995> 1516 178<291 455 659 823> -VStem: 123 174<791 1434> 291 164<1516 1694> 659 164<1516 1694> 821 174<0 573 688 1434> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1147 246 2 -Refer: 434 1063 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F5 -Encoding: 1269 1269 847 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 43<657 821> 313 102<332 610> 860 41<82 246 657 821> 1085 178<184 348 553 717> -VStem: 82 164<531 901> 184 164<1085 1264> 553 164<1085 1264> 657 164<0 365 461 901> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1040 -184 2 -Refer: 459 1095 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F8 -Encoding: 1272 1272 848 -Width: 1505 -VWidth: 0 -Flags: W -HStem: 0 43<1161 1335> 0 102<348 734> 799 102<348 737> 1393 41<174 348 1161 1335> 1516 178<506 670 874 1038> -VStem: 174 174<102 799 901 1434> 506 164<1516 1694> 864 174<260 638> 874 164<1516 1694> 1161 174<0 1434> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1362 246 2 -Refer: 438 1067 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F9 -Encoding: 1273 1273 849 -Width: 1226 -VWidth: 0 -Flags: W -HStem: 0 43<942 1106> 0 102<287 643> 440 102<287 640> 860 41<123 287 942 1106> 1085 178<344 508 713 877> -VStem: 123 164<102 440 543 901> 344 164<1085 1264> 696 164<151 385> 713 164<1085 1264> 942 164<0 901> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1200 -184 2 -Refer: 463 1099 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F6 -Encoding: 1270 1270 850 -Width: 1038 -VWidth: 0 -Flags: W -HStem: 0 102<348 409> 1331 102<348 1001> -VStem: 174 174<102 1331> 453 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -453 -315 m 1,0,1 - 453 -94 453 -94 387 0 c 1,2,-1 - 174 0 l 1,3,-1 - 174 1434 l 1,4,-1 - 1001 1434 l 1,5,-1 - 1001 1331 l 1,6,-1 - 348 1331 l 1,7,-1 - 348 102 l 1,8,-1 - 551 102 l 1,9,-1 - 551 -315 l 1,10,-1 - 453 -315 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04F7 -Encoding: 1271 1271 851 -Width: 768 -VWidth: 0 -Flags: W -HStem: 0 102<287 344> 799 102<287 715> -VStem: 123 164<102 799> 387 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -287 102 m 1,0,-1 - 485 102 l 1,1,-1 - 485 -315 l 1,2,-1 - 387 -315 l 1,3,4 - 387 -211 387 -211 370.5 -132.5 c 128,-1,5 - 354 -54 354 -54 338 -27 c 2,6,-1 - 322 0 l 1,7,-1 - 123 0 l 1,8,-1 - 123 901 l 1,9,-1 - 715 901 l 1,10,-1 - 715 799 l 1,11,-1 - 287 799 l 1,12,-1 - 287 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FA -Encoding: 1274 1274 852 -Width: 1136 -VWidth: 0 -Flags: W -HStem: -348 102<192 413> 799 102<82 272 446 655> 1331 102<446 1100> -VStem: 272 174<102 799 901 1331> 446 164<-216 0> -LayerCount: 2 -Fore -SplineSet -82 799 m 1,0,-1 - 82 901 l 1,1,-1 - 272 901 l 1,2,-1 - 272 1434 l 1,3,-1 - 1100 1434 l 1,4,-1 - 1100 1331 l 1,5,-1 - 446 1331 l 1,6,-1 - 446 901 l 1,7,-1 - 655 901 l 1,8,-1 - 655 799 l 1,9,-1 - 446 799 l 1,10,-1 - 446 102 l 1,11,-1 - 610 102 l 1,12,-1 - 610 -68 l 2,13,14 - 610 -272 610 -272 414 -332 c 0,15,16 - 362 -348 362 -348 305 -348 c 0,17,18 - 175 -348 175 -348 98 -256 c 1,19,-1 - 227 -195 l 1,20,21 - 263 -246 263 -246 329.5 -246 c 128,-1,22 - 396 -246 396 -246 421 -187.5 c 128,-1,23 - 446 -129 446 -129 446 0 c 1,24,-1 - 272 0 l 1,25,-1 - 272 799 l 1,26,-1 - 82 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FB -Encoding: 1275 1275 853 -Width: 892 -VWidth: 0 -Flags: W -HStem: -348 102<157 378> 479 102<51 248 412 625> 799 102<412 840> -VStem: 248 164<102 479 582 799> 412 164<-216 0> -LayerCount: 2 -Fore -SplineSet -51 479 m 1,0,-1 - 51 582 l 1,1,-1 - 248 582 l 1,2,-1 - 248 901 l 1,3,-1 - 840 901 l 1,4,-1 - 840 799 l 1,5,-1 - 412 799 l 1,6,-1 - 412 582 l 1,7,-1 - 625 582 l 1,8,-1 - 625 479 l 1,9,-1 - 412 479 l 1,10,-1 - 412 102 l 1,11,-1 - 575 102 l 1,12,-1 - 575 -68 l 2,13,14 - 574 -272 574 -272 378 -332 c 0,15,16 - 326 -348 326 -348 270 -348 c 0,17,18 - 140 -348 140 -348 63 -256 c 1,19,-1 - 193 -195 l 1,20,21 - 229 -246 229 -246 295 -246 c 128,-1,22 - 361 -246 361 -246 386.5 -187.5 c 128,-1,23 - 412 -129 412 -129 412 0 c 1,24,-1 - 248 0 l 1,25,-1 - 248 479 l 1,26,-1 - 51 479 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FC -Encoding: 1276 1276 854 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -217 102<599 804> -59 41G<514 575> 0 43G<86 279> 1393 41G<127 322 804 999> -VStem: 821 174<-102 163> -LayerCount: 2 -Fore -SplineSet -995 41 m 0,0,1 - 995 -86 995 -86 914.5 -151.5 c 128,-1,2 - 834 -217 834 -217 692 -217 c 0,3,4 - 634 -217 634 -217 564.5 -191.5 c 128,-1,5 - 495 -166 495 -166 451 -125 c 1,6,-1 - 553 -18 l 1,7,8 - 619 -115 619 -115 723 -115 c 0,9,10 - 780 -115 780 -115 800.5 -79.5 c 128,-1,11 - 821 -44 821 -44 821 14 c 0,12,13 - 821 72 821 72 768 184.5 c 128,-1,14 - 715 297 715 297 563 590 c 1,15,-1 - 258 0 l 1,16,-1 - 86 0 l 1,17,-1 - 477 758 l 1,18,-1 - 127 1434 l 1,19,-1 - 301 1434 l 1,20,-1 - 563 926 l 1,21,-1 - 825 1434 l 1,22,-1 - 999 1434 l 1,23,-1 - 651 758 l 1,24,25 - 846 383 846 383 920.5 230 c 128,-1,26 - 995 77 995 77 995 41 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FD -Encoding: 1277 1277 855 -Width: 849 -VWidth: 0 -Flags: W -HStem: -258 102<356 545> 0 43G<8 213> 860 41G<66 268 569 772> -VStem: 571 164<-138 175> -LayerCount: 2 -Fore -SplineSet -735 47 m 0,0,1 - 735 -127 735 -127 666.5 -192.5 c 128,-1,2 - 598 -258 598 -258 438 -258 c 0,3,4 - 369 -258 369 -258 308.5 -234 c 128,-1,5 - 248 -210 248 -210 217 -166 c 1,6,-1 - 319 -59 l 1,7,8 - 350 -114 350 -114 382.5 -135 c 128,-1,9 - 415 -156 415 -156 467 -156 c 0,10,11 - 519 -156 519 -156 545 -117 c 128,-1,12 - 571 -78 571 -78 571 5 c 0,13,14 - 571 88 571 88 533.5 164.5 c 128,-1,15 - 496 241 496 241 418 358 c 1,16,-1 - 186 0 l 1,17,-1 - 8 0 l 1,18,-1 - 330 494 l 1,19,-1 - 66 901 l 1,20,-1 - 242 901 l 1,21,-1 - 418 629 l 1,22,-1 - 596 901 l 1,23,-1 - 772 901 l 1,24,-1 - 508 494 l 1,25,26 - 735 149 735 149 735 47 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FE -Encoding: 1278 1278 856 -Width: 1191 -VWidth: 0 -Flags: W -HStem: 0 43G<86 279 847 1042> 719 82<205 455 674 909> 1393 41G<127 322 804 999> -LayerCount: 2 -Fore -SplineSet -258 0 m 1,0,-1 - 86 0 l 1,1,-1 - 457 719 l 1,2,-1 - 205 719 l 1,3,-1 - 205 801 l 1,4,-1 - 455 801 l 1,5,-1 - 127 1434 l 1,6,-1 - 301 1434 l 1,7,-1 - 563 926 l 1,8,-1 - 825 1434 l 1,9,-1 - 999 1434 l 1,10,-1 - 674 801 l 1,11,-1 - 909 801 l 1,12,-1 - 909 719 l 1,13,-1 - 672 719 l 1,14,-1 - 1042 0 l 1,15,-1 - 868 0 l 1,16,-1 - 563 590 l 1,17,-1 - 258 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FF -Encoding: 1279 1279 857 -Width: 833 -VWidth: 0 -Flags: W -HStem: 0 43G<8 213 625 829> 455 82<66 301 537 770> 860 41G<66 268 569 772> -LayerCount: 2 -Fore -SplineSet -305 455 m 1,0,-1 - 66 455 l 1,1,-1 - 66 537 l 1,2,-1 - 301 537 l 1,3,-1 - 66 901 l 1,4,-1 - 242 901 l 1,5,-1 - 418 629 l 1,6,-1 - 596 901 l 1,7,-1 - 772 901 l 1,8,-1 - 537 537 l 1,9,-1 - 770 537 l 1,10,-1 - 770 455 l 1,11,-1 - 532 455 l 1,12,-1 - 829 0 l 1,13,-1 - 651 0 l 1,14,-1 - 418 358 l 1,15,-1 - 186 0 l 1,16,-1 - 8 0 l 1,17,-1 - 305 455 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0510 -Encoding: 1296 1296 858 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -20 102<409 737> 799 102<428 696> 1352 102<393 724> -VStem: 82 174<263 622> 143 174<1000 1276> -LayerCount: 2 -Fore -Refer: 615 400 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0511 -Encoding: 1297 1297 859 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<290 614> 451 102<330 578> 819 102<310 611> -VStem: 61 164<145 379> 111 164<604 783> -LayerCount: 2 -Fore -Refer: 616 603 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0512 -Encoding: 1298 1298 860 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -348 102<684 902> -20 102<129 347> 1331 102<557 938> -VStem: 383 174<111 1331> 938 174<-216 1331> -LayerCount: 2 -Fore -SplineSet -1112 -68 m 6,0,1 - 1112 -271 1112 -271 908 -332 c 4,2,3 - 854 -348 854 -348 797 -348 c 4,4,5 - 667 -348 667 -348 590 -256 c 5,6,-1 - 719 -195 l 5,7,8 - 755 -246 755 -246 821 -246 c 132,-1,9 - 887 -246 887 -246 912.5 -187.5 c 132,-1,10 - 938 -129 938 -129 938 0 c 6,11,-1 - 938 1331 l 1,12,-1 - 557 1331 l 1,13,-1 - 557 260 l 2,14,15 - 556 57 556 57 352 -4 c 0,16,17 - 298 -20 298 -20 242 -20 c 0,18,19 - 112 -20 112 -20 35 72 c 1,20,-1 - 164 133 l 1,21,22 - 200 82 200 82 266 82 c 128,-1,23 - 332 82 332 82 357.5 140.5 c 128,-1,24 - 383 199 383 199 383 328 c 2,25,-1 - 383 1434 l 1,26,-1 - 1112 1434 l 1,27,-1 - 1112 -68 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0513 -Encoding: 1299 1299 861 -Width: 1183 -VWidth: 0 -Flags: W -HStem: -348 102<645 866> -20 102<155 376> 799 102<573 899> -VStem: 410 164<111 799> 899 164<-216 799> -LayerCount: 2 -Fore -SplineSet -1063 -68 m 2,0,1 - 1062 -272 1062 -272 866 -332 c 0,2,3 - 814 -348 814 -348 758 -348 c 0,4,5 - 628 -348 628 -348 551 -256 c 1,6,-1 - 680 -195 l 1,7,8 - 716 -246 716 -246 782 -246 c 128,-1,9 - 848 -246 848 -246 873.5 -187.5 c 128,-1,10 - 899 -129 899 -129 899 0 c 2,11,-1 - 899 799 l 1,12,-1 - 573 799 l 1,13,-1 - 573 260 l 2,14,15 - 572 56 572 56 376 -4 c 0,16,17 - 324 -20 324 -20 268 -20 c 0,18,19 - 138 -20 138 -20 61 72 c 1,20,-1 - 190 133 l 1,21,22 - 226 82 226 82 292.5 82 c 128,-1,23 - 359 82 359 82 384.5 140.5 c 128,-1,24 - 410 199 410 199 410 328 c 2,25,-1 - 410 901 l 1,26,-1 - 1063 901 l 1,27,-1 - 1063 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni051A -Encoding: 1306 1306 862 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -348 102<985 1155> -14 96<554 634 801 882> 1352 102<525 883> -VStem: 102 174<429 1012> 1163 174<425 1009> -LayerCount: 2 -Fore -Refer: 43 81 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051B -Encoding: 1307 1307 863 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -20 102<382 654> 819 102<382 696> -VStem: 90 164<237 664> 780 164<-410 49 223 735> -LayerCount: 2 -Fore -Refer: 17 113 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051C -Encoding: 1308 1308 864 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43<486 693 1087 1293> 860 41<808 972> 1393 41<35 200 1580 1745> -LayerCount: 2 -Fore -Refer: 50 87 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051D -Encoding: 1309 1309 865 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43<341 519 1013 1190> 860 41<29 193 669 848 1324 1503> -LayerCount: 2 -Fore -Refer: 22 119 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051E -Encoding: 1310 1310 866 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 119<1091 1192> 909 43G<978 1060> 1311 41G<594 677> 1393 41G<174 348 967 1208> -VStem: 174 174<0 469 696 1434> -LayerCount: 2 -Fore -SplineSet -1192 119 m 1,0,-1 - 1192 0 l 1,1,2 - 1042 0 1042 0 943 82 c 0,3,4 - 850 160 850 160 792 274 c 0,5,6 - 746 366 746 366 710 457 c 128,-1,7 - 674 548 674 548 654 591 c 0,8,9 - 610 685 610 685 557 705 c 1,10,-1 - 348 469 l 1,11,-1 - 348 0 l 1,12,-1 - 174 0 l 1,13,-1 - 174 1434 l 1,14,-1 - 348 1434 l 1,15,-1 - 348 696 l 1,16,-1 - 748 1145 l 1,17,-1 - 575 1288 l 1,18,-1 - 629 1352 l 1,19,-1 - 801 1206 l 1,20,-1 - 1004 1434 l 1,21,-1 - 1208 1434 l 1,22,-1 - 918 1108 l 1,23,-1 - 1079 973 l 1,24,-1 - 1026 909 l 1,25,-1 - 864 1047 l 1,26,-1 - 647 805 l 1,27,28 - 758 756 758 756 832 615 c 0,29,30 - 864 553 864 553 894 483.5 c 128,-1,31 - 924 414 924 414 952 350 c 0,32,33 - 982 286 982 286 1014 234 c 0,34,35 - 1086 119 1086 119 1192 119 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni051F -Encoding: 1311 1311 867 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43G<147 311 705 913> 860 41G<147 311 427 512 652 877> -VStem: 147 164<0 268 477 901> -LayerCount: 2 -Fore -SplineSet -311 268 m 1,0,-1 - 311 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 901 l 1,3,-1 - 311 901 l 1,4,-1 - 311 477 l 1,5,-1 - 537 731 l 1,6,-1 - 410 840 l 1,7,-1 - 463 901 l 1,8,-1 - 592 793 l 1,9,-1 - 688 901 l 1,10,-1 - 877 901 l 1,11,-1 - 700 702 l 1,12,-1 - 823 598 l 1,13,-1 - 770 537 l 1,14,-1 - 645 641 l 1,15,-1 - 520 502 l 1,16,-1 - 913 0 l 1,17,-1 - 737 0 l 1,18,-1 - 424 395 l 1,19,-1 - 311 268 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0243 -Encoding: 579 579 868 -Width: 1157 -VWidth: 0 -Flags: W -HStem: 0 102<389 799> 389 102<82 567> 727 102<389 709> 1331 102<389 732> -VStem: 82 485<389 492> 215 174<102 727 829 1331> 819 174<946 1243> 905 174<216 579> -LayerCount: 2 -Fore -SplineSet -389 1331 m 1,0,-1 - 389 829 l 1,1,-1 - 569 829 l 2,2,3 - 630 829 630 829 680 856 c 0,4,5 - 730 882 730 882 760 922 c 0,6,7 - 819 1002 819 1002 819 1079 c 0,8,9 - 819 1190 819 1190 762 1264 c 0,10,11 - 711 1331 711 1331 614 1331 c 2,12,-1 - 389 1331 l 1,0,-1 -821 795 m 1,13,14 - 949 743 949 743 1014 629.5 c 128,-1,15 - 1079 516 1079 516 1079 387 c 0,16,17 - 1079 226 1079 226 974 117 c 0,18,19 - 861 0 861 0 625 0 c 2,20,-1 - 215 0 l 1,21,-1 - 215 389 l 1,22,-1 - 82 389 l 1,23,-1 - 82 492 l 1,24,-1 - 215 492 l 1,25,-1 - 215 1434 l 1,26,-1 - 584 1434 l 2,27,28 - 853 1434 853 1434 943 1283 c 0,29,30 - 993 1199 993 1199 993 1075 c 0,31,32 - 993 1010 993 1010 951.5 929.5 c 128,-1,33 - 910 849 910 849 821 795 c 1,13,14 -389 492 m 1,34,-1 - 567 492 l 1,35,-1 - 567 389 l 1,36,-1 - 389 389 l 1,37,-1 - 389 102 l 1,38,-1 - 655 102 l 2,39,40 - 777 102 777 102 841 185.5 c 128,-1,41 - 905 269 905 269 905 366.5 c 128,-1,42 - 905 464 905 464 880 539 c 128,-1,43 - 855 614 855 614 796 670.5 c 128,-1,44 - 737 727 737 727 655 727 c 2,45,-1 - 389 727 l 1,46,-1 - 389 492 l 1,34,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024A -Encoding: 586 586 869 -Width: 1290 -VWidth: 0 -Flags: W -HStem: -412 102<1181 1399> -20 102<600 968> 1352 102<556 936> 1393 41G<971 1145> -VStem: 102 174<451 1012> 971 174<-280 16 105 1312 1419 1434> -LayerCount: 2 -Fore -SplineSet -1145 -63 m 2,0,1 - 1145 -192 1145 -192 1170 -250.5 c 128,-1,2 - 1195 -309 1195 -309 1261.5 -309 c 128,-1,3 - 1328 -309 1328 -309 1364 -258 c 1,4,-1 - 1493 -319 l 1,5,6 - 1415 -412 1415 -412 1286 -412 c 0,7,8 - 1169 -412 1169 -412 1075 -348 c 0,9,10 - 971 -277 971 -277 971 -131 c 2,11,-1 - 971 16 l 1,12,13 - 861 -20 861 -20 760 -20 c 128,-1,14 - 659 -20 659 -20 572.5 7 c 128,-1,15 - 486 34 486 34 401 93 c 128,-1,16 - 316 152 316 152 250 235.5 c 128,-1,17 - 184 319 184 319 143 444.5 c 128,-1,18 - 102 570 102 570 102 717.5 c 128,-1,19 - 102 865 102 865 139 989.5 c 128,-1,20 - 176 1114 176 1114 236 1198 c 128,-1,21 - 296 1282 296 1282 375 1341 c 0,22,23 - 526 1454 526 1454 690.5 1454 c 128,-1,24 - 855 1454 855 1454 971 1419 c 1,25,-1 - 971 1434 l 1,26,-1 - 1145 1434 l 1,27,-1 - 1145 -63 l 2,0,1 -971 123 m 1,28,-1 - 971 1288 l 1,29,30 - 868 1352 868 1352 755 1352 c 128,-1,31 - 642 1352 642 1352 561 1312.5 c 128,-1,32 - 480 1273 480 1273 415.5 1197 c 128,-1,33 - 351 1121 351 1121 313.5 997 c 128,-1,34 - 276 873 276 873 276 730 c 128,-1,35 - 276 587 276 587 309 478 c 0,36,37 - 342 370 342 370 394 298 c 0,38,39 - 448 226 448 226 514 176 c 0,40,41 - 680 90 680 90 761 82 c 1,42,43 - 884 82 884 82 971 123 c 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024B -Encoding: 587 587 870 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -410 102<977 1199> -20 102<382 654> 819 102<382 696> -VStem: 90 164<237 664> 780 164<-278 49 223 735> -LayerCount: 2 -Fore -SplineSet -944 -61 m 6,0,1 - 944 -190 944 -190 969.5 -248.5 c 128,-1,2 - 995 -307 995 -307 1061 -307 c 128,-1,3 - 1127 -307 1127 -307 1163 -256 c 1,4,-1 - 1292 -317 l 1,5,6 - 1214 -410 1214 -410 1085 -410 c 0,7,8 - 969 -410 969 -410 879 -346 c 0,9,10 - 780 -276 780 -276 780 -129 c 2,11,-1 - 780 49 l 1,12,13 - 676 -20 676 -20 546 -20 c 128,-1,14 - 416 -20 416 -20 328 17 c 128,-1,15 - 240 54 240 54 189 120 c 128,-1,16 - 138 186 138 186 114 268.5 c 128,-1,17 - 90 351 90 351 90 451 c 0,18,19 - 90 552 90 552 114 634 c 128,-1,20 - 138 716 138 716 190 782 c 0,21,22 - 299 922 299 922 535 922 c 0,23,24 - 764 922 764 922 860 814 c 0,25,26 - 944 720 944 720 944 532 c 2,27,-1 - 944 -61 l 6,0,1 -780 430 m 2,28,-1 - 780 598 l 2,29,30 - 780 734 780 734 693 780 c 0,31,32 - 620 820 620 820 523 820 c 0,33,-1 - 520 820 l 0,34,35 - 422 820 422 820 363 762 c 0,36,37 - 254 657 254 657 254 451 c 0,38,39 - 254 311 254 311 314 202 c 0,40,41 - 380 82 380 82 509.5 82 c 129,-1,42 - 639 82 639 82 709.5 180.5 c 128,-1,43 - 780 279 780 279 780 430 c 2,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0180 -Encoding: 384 384 871 -Width: 1120 -VWidth: 0 -Flags: W -HStem: -20 102<428 742> 819 102<471 743> 1085 102<82 180 344 567> 1311 41G<180 344> -VStem: 180 164<166 678 852 1085 1188 1352> 870 164<237 664> -LayerCount: 2 -Fore -SplineSet -344 471 m 2,0,-1 - 344 303 l 2,1,2 - 344 114 344 114 538 87 c 0,3,4 - 574 82 574 82 629 82 c 128,-1,5 - 684 82 684 82 733 115 c 128,-1,6 - 782 148 782 148 811 202 c 128,-1,7 - 840 256 840 256 855 319.5 c 128,-1,8 - 870 383 870 383 870 451 c 128,-1,9 - 870 519 870 519 855 582.5 c 128,-1,10 - 840 646 840 646 811 700 c 0,11,12 - 747 819 747 819 621 819 c 0,13,14 - 530 818 530 818 466 770 c 0,15,16 - 344 678 344 678 344 471 c 2,0,-1 -344 852 m 1,17,18 - 450 922 450 922 579.5 922 c 128,-1,19 - 709 922 709 922 797 885 c 128,-1,20 - 885 848 885 848 935.5 782 c 128,-1,21 - 986 716 986 716 1010 633.5 c 128,-1,22 - 1034 551 1034 551 1034 451 c 128,-1,23 - 1034 351 1034 351 1009.5 268.5 c 128,-1,24 - 985 186 985 186 934 120 c 0,25,26 - 826 -20 826 -20 590 -20 c 1,27,28 - 360 -20 360 -20 264 86 c 0,29,30 - 180 180 180 180 180 369 c 2,31,-1 - 180 1085 l 1,32,-1 - 82 1085 l 1,33,-1 - 82 1188 l 1,34,-1 - 180 1188 l 1,35,-1 - 180 1352 l 1,36,-1 - 344 1352 l 1,37,-1 - 344 1188 l 1,38,-1 - 567 1188 l 1,39,-1 - 567 1085 l 1,40,-1 - 344 1085 l 1,41,-1 - 344 852 l 1,17,18 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024C -Encoding: 588 588 872 -Width: 1189 -VWidth: 0 -Flags: W -HStem: 0 43<246 420 973 1141> 655 102<82 567 420 686> 1331 102<420 828> -VStem: 82 485<655 758> 246 174<0 655 758 1331> 936 174<873 1217> 973 168<0 202> -LayerCount: 2 -Fore -SplineSet -420 758 m 1,0,-1 - 696 758 l 2,1,2 - 758 758 758 758 806.5 785 c 128,-1,3 - 855 812 855 812 882 856 c 0,4,5 - 936 943 936 943 936 1044 c 0,6,7 - 936 1178 936 1178 856 1266 c 0,8,9 - 797 1331 797 1331 699 1331 c 0,10,-1 - 696 1331 l 2,11,-1 - 420 1331 l 1,12,-1 - 420 758 l 1,0,-1 -643 655 m 1,13,-1 - 420 655 l 1,14,-1 - 420 0 l 1,15,-1 - 246 0 l 1,16,-1 - 246 655 l 1,17,-1 - 82 655 l 1,18,-1 - 82 758 l 1,19,-1 - 246 758 l 1,20,-1 - 246 1434 l 1,21,-1 - 666 1434 l 2,22,23 - 929 1434 929 1434 1048 1252 c 0,24,25 - 1110 1157 1110 1157 1110 1044 c 0,26,27 - 1110 937 1110 937 1048 836 c 0,28,29 - 979 725 979 725 834 680 c 1,30,31 - 938 576 938 576 1039.5 358 c 128,-1,32 - 1141 140 1141 140 1141 0 c 1,33,-1 - 973 0 l 1,34,35 - 973 142 973 142 865 355 c 128,-1,36 - 757 568 757 568 643 655 c 1,13,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024D -Encoding: 589 589 873 -Width: 770 -VWidth: 0 -Flags: W -HStem: 0 43<240 403> 389 102<82 567> 819 102<448 739> 860 41<240 403> -VStem: 82 485<389 492> 240 164<0 774 874 901> -LayerCount: 2 -Fore -SplineSet -764 741 m 1,0,1 - 723 819 723 819 603 819 c 128,-1,2 - 483 819 483 819 403 735 c 1,3,-1 - 403 492 l 1,4,-1 - 567 492 l 1,5,-1 - 567 389 l 1,6,-1 - 403 389 l 1,7,-1 - 403 0 l 1,8,-1 - 240 0 l 1,9,-1 - 240 389 l 1,10,-1 - 82 389 l 1,11,-1 - 82 492 l 1,12,-1 - 240 492 l 1,13,-1 - 240 901 l 1,14,-1 - 403 901 l 1,15,-1 - 403 874 l 1,16,17 - 482 922 482 922 582 922 c 128,-1,18 - 682 922 682 922 764 893 c 1,19,-1 - 764 741 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0266 -Encoding: 614 614 874 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43G<147 311 784 948> 819 102<385 697> 1270 102<345 566> -VStem: 147 164<0 756 870 1240> 784 164<0 717> -LayerCount: 2 -Fore -SplineSet -147 1092 m 6,0,1 - 148 1260 148 1260 284 1332 c 0,2,3 - 360 1372 360 1372 453 1372 c 0,4,5 - 582 1372 582 1372 659 1280 c 1,6,-1 - 530 1219 l 1,7,8 - 494 1270 494 1270 428 1270 c 128,-1,9 - 362 1270 362 1270 336.5 1211.5 c 128,-1,10 - 311 1153 311 1153 311 1024 c 2,11,-1 - 311 870 l 1,12,13 - 410 922 410 922 520 922 c 0,14,15 - 736 922 736 922 842 816 c 128,-1,16 - 948 710 948 710 948 492 c 2,17,-1 - 948 0 l 1,18,-1 - 784 0 l 1,19,-1 - 784 467 l 2,20,21 - 784 677 784 677 720 751 c 0,22,23 - 662 819 662 819 542 819 c 128,-1,24 - 422 819 422 819 311 723 c 1,25,-1 - 311 0 l 1,26,-1 - 147 0 l 1,27,-1 - 147 1092 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA7AA -Encoding: 42922 42922 875 -Width: 1634 -VWidth: 0 -Flags: W -HStem: 0 43G<457 631 1290 1464> 717 102<631 1290> 918 43G<201 252> 1331 102<293 457> -VStem: 41 180<1018 1259> 457 174<0 717 819 1331> 1290 174<0 717 819 1434> -LayerCount: 2 -Fore -SplineSet -631 1434 m 1,0,-1 - 631 819 l 1,1,-1 - 1290 819 l 1,2,-1 - 1290 1434 l 1,3,-1 - 1464 1434 l 1,4,-1 - 1464 0 l 1,5,-1 - 1290 0 l 1,6,-1 - 1290 717 l 1,7,-1 - 631 717 l 1,8,-1 - 631 0 l 1,9,-1 - 457 0 l 1,10,-1 - 457 1331 l 1,11,-1 - 414 1331 l 2,12,13 - 329 1331 329 1331 275 1271.5 c 128,-1,14 - 221 1212 221 1212 221 1154.5 c 128,-1,15 - 221 1097 221 1097 228 1072.5 c 128,-1,16 - 235 1048 235 1048 242.5 1041.5 c 128,-1,17 - 250 1035 250 1035 268 1024 c 1,18,-1 - 242 918 l 1,19,20 - 98 969 98 969 60 1044 c 0,21,22 - 42 1081 42 1081 41 1128 c 0,23,24 - 41 1262 41 1262 143 1348 c 128,-1,25 - 245 1434 245 1434 399 1434 c 2,26,-1 - 631 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni027E -Encoding: 638 638 876 -Width: 729 -VWidth: 0 -Flags: W -HStem: -2 43G<150 313> 799 102<347 568> -VStem: 150 164<0 769> -LayerCount: 2 -Fore -SplineSet -313 -2 m 17,0,-1 - 150 0 l 1,1,-1 - 150 621 l 2,2,3 - 150 825 150 825 346 885 c 0,4,5 - 398 901 398 901 455 901 c 0,6,7 - 585 901 585 901 662 809 c 1,8,-1 - 532 748 l 1,9,10 - 496 799 496 799 430 799 c 128,-1,11 - 364 799 364 799 338.5 740.5 c 128,-1,12 - 313 682 313 682 313 553 c 2,13,-1 - 313 -2 l 17,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0295 -Encoding: 661 661 877 -Width: 933 -VWidth: 0 -Flags: W -HStem: 0 43G<545 709> 557 98<403 545> 1270 102<372 687> -VStem: 92 164<792 1152> 545 164<0 557> -LayerCount: 2 -Fore -SplineSet -545 0 m 1,0,-1 - 545 557 l 1,1,2 - 543 557 543 557 542 557 c 0,3,4 - 367 557 367 557 234 658 c 0,5,6 - 170 706 170 706 131 783.5 c 128,-1,7 - 92 861 92 861 92 954 c 0,8,9 - 92 1164 92 1164 205.5 1268 c 128,-1,10 - 319 1372 319 1372 524 1372 c 0,11,12 - 642 1372 642 1372 723 1326 c 128,-1,13 - 804 1280 804 1280 872 1194 c 1,14,-1 - 750 1147 l 1,15,16 - 710 1211 710 1211 668.5 1240.5 c 128,-1,17 - 627 1270 627 1270 555 1270 c 0,18,19 - 405 1270 405 1270 330.5 1194.5 c 128,-1,20 - 256 1119 256 1119 256 954 c 0,21,22 - 256 794 256 794 366 720 c 0,23,24 - 462 656 462 656 590 655 c 2,25,-1 - 709 655 l 1,26,-1 - 709 0 l 1,27,-1 - 545 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C72 -Encoding: 11378 11378 878 -Width: 2052 -VWidth: 0 -Flags: W -HStem: 0 43G<486 693 1087 1293> 860 41G<808 972> 1346 113<1734 1913> 1393 41G<35 200> -VStem: 1950 143<1210 1310> -LayerCount: 2 -Fore -SplineSet -1280 0 m 1,0,-1 - 1100 0 l 1,1,-1 - 891 645 l 1,2,-1 - 680 0 l 1,3,-1 - 500 0 l 1,4,-1 - 35 1434 l 1,5,-1 - 186 1434 l 1,6,-1 - 590 193 l 1,7,-1 - 821 901 l 1,8,-1 - 958 901 l 1,9,-1 - 1190 193 l 1,10,-1 - 1501 1155 l 1,11,12 - 1547 1291 1547 1291 1600 1351.5 c 128,-1,13 - 1653 1412 1653 1412 1708 1435 c 128,-1,14 - 1763 1458 1763 1458 1833 1458 c 0,15,16 - 1949 1458 1949 1458 2021 1382.5 c 128,-1,17 - 2093 1307 2093 1307 2093 1210 c 1,18,-1 - 1950 1198 l 1,19,20 - 1950 1260 1950 1260 1913.5 1303 c 128,-1,21 - 1877 1346 1877 1346 1825 1346 c 0,22,23 - 1718 1346 1718 1346 1655 1155 c 2,24,-1 - 1280 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C73 -Encoding: 11379 11379 879 -Width: 1757 -VWidth: 0 -Flags: W -HStem: 0 43G<341 519 1013 1190> 819 102<1466 1593> 860 41G<29 193 669 848> -LayerCount: 2 -Fore -SplineSet -1176 0 m 1,0,-1 - 1028 0 l 1,1,-1 - 766 719 l 1,2,-1 - 504 0 l 1,3,-1 - 356 0 l 1,4,-1 - 29 901 l 1,5,-1 - 178 901 l 1,6,-1 - 430 205 l 1,7,-1 - 684 901 l 1,8,-1 - 834 901 l 1,9,-1 - 1085 205 l 1,10,-1 - 1239 623 l 2,11,12 - 1293 771 1293 771 1368 846.5 c 128,-1,13 - 1443 922 1443 922 1556 922 c 0,14,15 - 1611 922 1611 922 1656.5 889 c 128,-1,16 - 1702 856 1702 856 1767 786 c 1,17,-1 - 1636 721 l 1,18,19 - 1579 802 1579 802 1550 814 c 0,20,21 - 1540 818 1540 818 1526 819 c 0,22,23 - 1486 819 1486 819 1453 752 c 0,24,25 - 1439 724 1439 724 1401 618 c 2,26,-1 - 1176 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57929 -Encoding: 700 700 880 -Width: 356 -VWidth: 0 -Flags: W -HStem: 985 367<141 175> -VStem: 98 147<1139 1352> -LayerCount: 2 -Fore -Refer: 332 8217 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni02C0 -Encoding: 704 704 881 -Width: 557 -VWidth: 0 -Flags: W -HStem: 901 199<152 253> 1030 70<254 329> 1386 68<173 341> -VStem: 152 102<901 1030> 373 102<1133 1363> -LayerCount: 2 -Fore -SplineSet -373 1239 m 0,0,1 - 373 1386 373 1386 254 1386 c 0,2,3 - 170 1386 170 1386 152 1313 c 1,4,-1 - 70 1337 l 1,5,6 - 93 1383 93 1383 148.5 1418.5 c 128,-1,7 - 204 1454 204 1454 279 1454 c 128,-1,8 - 354 1454 354 1454 414.5 1397.5 c 128,-1,9 - 475 1341 475 1341 475 1244.5 c 128,-1,10 - 475 1148 475 1148 404 1089 c 128,-1,11 - 333 1030 333 1030 254 1030 c 1,12,-1 - 254 901 l 1,13,-1 - 152 901 l 1,14,-1 - 152 1100 l 1,15,-1 - 213 1100 l 2,16,17 - 373 1100 373 1100 373 1239 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni02CA -Encoding: 714 714 882 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: 74 350 -LayerCount: 2 -Fore -Refer: 346 180 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni02CB -Encoding: 715 715 883 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: 74 350 -LayerCount: 2 -Fore -Refer: 311 96 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni030D -Encoding: 781 781 884 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1257 328<-631 -549> -VStem: -631 82<1257 1585> -AnchorPoint: "mktop" -588 1597 basemark 0 -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --631 1257 m 1,0,-1 - -631 1585 l 1,1,-1 - -549 1585 l 1,2,-1 - -549 1257 l 1,3,-1 - -631 1257 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC4 -Encoding: 7620 7620 885 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 82<-834 -406> -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --260 1548 m 1,0,-1 - -150 1456 l 1,1,-1 - -362 1270 l 1,2,-1 - -834 1270 l 1,3,-1 - -834 1352 l 1,4,-1 - -406 1352 l 1,5,-1 - -260 1548 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC5 -Encoding: 7621 7621 886 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 82<-791 -362> -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --834 1270 m 1,0,-1 - -1047 1456 l 1,1,-1 - -936 1548 l 1,2,-1 - -791 1352 l 1,3,-1 - -362 1352 l 1,4,-1 - -362 1270 l 1,5,-1 - -834 1270 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC6 -Encoding: 7622 7622 887 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1331 82<-834 -406> -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --406 1331 m 1,0,-1 - -834 1331 l 1,1,-1 - -834 1413 l 1,2,-1 - -362 1413 l 1,3,-1 - -150 1227 l 1,4,-1 - -260 1135 l 1,5,-1 - -406 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC7 -Encoding: 7623 7623 888 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1331 82<-791 -362> -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --936 1135 m 1,0,-1 - -1047 1227 l 1,1,-1 - -834 1413 l 1,2,-1 - -362 1413 l 1,3,-1 - -362 1331 l 1,4,-1 - -791 1331 l 1,5,-1 - -936 1135 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0329 -Encoding: 809 809 889 -Width: 0 -VWidth: 0 -Flags: W -HStem: -410 328<-631 -549> -VStem: -631 82<-410 -82> -AnchorPoint: "bottom" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --631 -410 m 1,0,-1 - -631 -82 l 1,1,-1 - -549 -82 l 1,2,-1 - -549 -410 l 1,3,-1 - -631 -410 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E2E -Encoding: 7726 7726 890 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1516 178<-6 158 362 526> 1714 279 -VStem: -6 164<1516 1694> 172 174<0 1434> 197 276 362 164<1516 1694> -LayerCount: 2 -Fore -Refer: 593 58624 S 1 0 0 1 49 233 2 -Refer: 151 207 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1E2F -Encoding: 7727 7727 891 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1085 178<-61 102 307 471> 1386 387 -VStem: -61 164<1085 1264> 123 164<0 901> 141 350 307 164<1085 1264> -LayerCount: 2 -Fore -Refer: 882 714 N 1 0 0 1 68 131 2 -Refer: 135 239 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0228 -Encoding: 552 552 892 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -399 49<449 623> -162 164<551 644> 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> -VStem: 174 174<102 799 901 1331> 551 106<-80 2> 670 127<-326 -186> -AnchorPoint: "top" 614 1434 basechar 0 -AnchorPoint: "horn" 942 1384 basechar 0 -LayerCount: 2 -Fore -SplineSet -657 0 m 1,0,-1 - 645 -109 l 1,1,2 - 711 -120 711 -120 754 -155.5 c 128,-1,3 - 797 -191 797 -191 797 -252 c 0,4,5 - 797 -313 797 -313 705.5 -356 c 128,-1,6 - 614 -399 614 -399 449 -399 c 1,7,-1 - 449 -350 l 1,8,9 - 560 -350 560 -350 615 -331 c 128,-1,10 - 670 -312 670 -312 670 -263 c 0,11,12 - 670 -214 670 -214 637.5 -192.5 c 128,-1,13 - 605 -171 605 -171 522 -162 c 1,14,-1 - 551 0 l 1,15,-1 - 174 0 l 1,16,-1 - 174 1434 l 1,17,-1 - 1001 1434 l 1,18,-1 - 1001 1331 l 1,19,-1 - 348 1331 l 1,20,-1 - 348 901 l 1,21,-1 - 817 901 l 1,22,-1 - 817 799 l 1,23,-1 - 348 799 l 1,24,-1 - 348 102 l 1,25,-1 - 1034 102 l 1,26,-1 - 1034 0 l 1,27,-1 - 657 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0229 -Encoding: 553 553 893 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -401 49<397 572> -164 164<500 592> -20 102<418 733> 451 102<264 770> 819 102<404 661> -VStem: 90 164<256 451> 500 106<-82 0> 618 127<-328 -188> -AnchorPoint: "top" 530 1004 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -264 553 m 1,0,-1 - 770 553 l 1,1,2 - 752 673 752 673 694 746 c 128,-1,3 - 636 819 636 819 540 819 c 128,-1,4 - 444 819 444 819 367 747 c 128,-1,5 - 290 675 290 675 264 553 c 1,0,-1 -254 451 m 1,6,7 - 254 283 254 283 345.5 182.5 c 128,-1,8 - 437 82 437 82 585 82 c 128,-1,9 - 733 82 733 82 809 205 c 1,10,-1 - 932 158 l 1,11,12 - 810 1 810 1 604 -18 c 1,13,-1 - 594 -111 l 1,14,15 - 660 -122 660 -122 702.5 -157.5 c 128,-1,16 - 745 -193 745 -193 745 -254 c 128,-1,17 - 745 -315 745 -315 653.5 -358 c 128,-1,18 - 562 -401 562 -401 397 -401 c 1,19,-1 - 397 -352 l 1,20,21 - 508 -352 508 -352 563 -333 c 128,-1,22 - 618 -314 618 -314 618 -265 c 128,-1,23 - 618 -216 618 -216 586 -194.5 c 128,-1,24 - 554 -173 554 -173 471 -164 c 1,25,-1 - 497 -18 l 1,26,27 - 316 0 316 0 203 127 c 128,-1,28 - 90 254 90 254 90 451 c 0,29,30 - 90 555 90 555 127 645 c 0,31,32 - 164 734 164 734 224 794 c 0,33,34 - 353 922 353 922 512 922 c 0,35,36 - 615 922 615 922 699 880 c 0,37,38 - 782 838 782 838 834 770 c 0,39,40 - 942 627 942 627 942 451 c 1,41,-1 - 254 451 l 1,6,7 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E04 -Encoding: 7684 7684 894 -Width: 1116 -VWidth: 0 -Flags: W -HStem: -272 150<487 637> 0 102<348 758> 727 102<348 668> 1331 102<348 691> -VStem: 174 174<102 727 829 1331> 487 150<-272 -123> 778 174<946 1243> 864 174<216 579> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1153 0 2 -Refer: 28 66 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E05 -Encoding: 7685 7685 895 -Width: 1079 -VWidth: 0 -Flags: W -HStem: -272 150<475 625> -20 102<387 701> 819 102<430 702> 1311 41<139 303> -VStem: 139 164<166 678 852 1352> 475 150<-272 -123> 829 164<237 664> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1141 0 2 -Refer: 6 98 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0C -Encoding: 7692 7692 896 -Width: 1304 -VWidth: 0 -Flags: W -HStem: -272 150<518 668> 0 102<348 826> 1331 102<348 841> -VStem: 174 174<102 1331> 518 150<-272 -123> 1030 174<394 1073> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1184 0 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0D -Encoding: 7693 7693 897 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -272 150<438 588> -20 102<403 666> 0 43<780 944> 819 102<403 659> 1311 41<780 944> -VStem: 90 164<258 643> 438 150<-272 -123> 780 164<0 47 208 666 823 1352> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1104 0 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0E -Encoding: 7694 7694 898 -Width: 1304 -VWidth: 0 -Flags: W -HStem: -205 82<348 819> 0 102<348 826> 1331 102<348 841> -VStem: 174 174<102 1331> 348 471<-205 -123> 1030 174<394 1073> -LayerCount: 2 -Fore -Refer: 495 817 N 1 0 0 1 1182 0 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0F -Encoding: 7695 7695 899 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -205 82<268 739> -20 102<403 666> 0 43<780 944> 819 102<403 659> 1311 41<780 944> -VStem: 90 164<258 643> 268 471<-205 -123> 780 164<0 47 208 666 823 1352> -LayerCount: 2 -Fore -Refer: 495 817 N 1 0 0 1 1102 0 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E12 -Encoding: 7698 7698 900 -Width: 1304 -VWidth: 0 -Flags: W -HStem: -449 387 0 102<348 826> 1331 102<348 841> -VStem: 174 174<102 1331> 354 479 1030 174<394 1073> -LayerCount: 2 -Fore -Refer: 491 813 N 1 0 0 1 1180 0 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E13 -Encoding: 7699 7699 901 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -449 387 -20 102<403 666> 0 43<780 944> 819 102<403 659> 1311 41<780 944> -VStem: 90 164<258 643> 274 479 780 164<0 47 208 666 823 1352> -LayerCount: 2 -Fore -Refer: 491 813 N 1 0 0 1 1100 0 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E24 -Encoding: 7716 7716 902 -Width: 1351 -VWidth: 0 -Flags: W -HStem: -272 150<598 748> 0 43<174 348 1008 1182> 717 102<348 1008> 1393 41<174 348 1008 1182> -VStem: 174 174<0 717 819 1434> 598 150<-272 -123> 1008 174<0 717 819 1434> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1264 0 2 -Refer: 35 72 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E25 -Encoding: 7717 7717 903 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -272 150<457 606> 0 43<147 311 784 948> 819 102<385 697> 1311 41<147 311> -VStem: 147 164<0 756 870 1352> 457 150<-272 -123> 784 164<0 717> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1122 0 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E36 -Encoding: 7734 7734 904 -Width: 1083 -VWidth: 0 -Flags: W -HStem: -272 150<528 678> 0 102<348 1034> 1393 41<174 348> -VStem: 174 174<102 1434> 528 150<-272 -123> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1194 0 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E37 -Encoding: 7735 7735 905 -Width: 456 -VWidth: 0 -Flags: W -HStem: -272 150<152 301> 0 43<147 311> 1311 41<147 311> -VStem: 147 164<0 1352> 152 150<-272 -123> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 817 0 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3C -Encoding: 7740 7740 906 -Width: 1083 -VWidth: 0 -Flags: W -HStem: -449 387 0 102<348 1034> 1393 41<174 348> -VStem: 174 174<102 1434> 365 479 -LayerCount: 2 -Fore -Refer: 491 813 N 1 0 0 1 1190 0 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3D -Encoding: 7741 7741 907 -Width: 456 -VWidth: 0 -Flags: W -HStem: -449 387 0 43<147 311> 1311 41<147 311> -VStem: -12 479 147 164<0 1352> -LayerCount: 2 -Fore -Refer: 491 813 N 1 0 0 1 813 0 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3E -Encoding: 7742 7742 908 -Width: 1626 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1282 1456> 1393 41<174 367 1263 1456> 1454 387 -VStem: 174 174<0 1098> 752 350 1282 174<0 1098> -LayerCount: 2 -Fore -Refer: 882 714 S 1 0 0 1 678 199 2 -Refer: 40 77 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3F -Encoding: 7743 7743 909 -Width: 1605 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 725 889 1303 1466> 819 102<367 664 944 1231> 860 41<147 311> 1044 387 -VStem: 147 164<0 766 874 901> 718 350 725 164<0 753> 1303 164<0 726> -LayerCount: 2 -Fore -Refer: 882 714 N 1 0 0 1 644 -211 2 -Refer: 11 109 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E44 -Encoding: 7748 7748 910 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1034 1237> 1393 41<174 375 1063 1237> 1577 178<624 787> -VStem: 174 174<0 1157> 624 164<1577 1755> 1063 174<274 1434> -CounterMasks: 1 1c -LayerCount: 2 -Fore -Refer: 364 729 N 1 0 0 1 570 307 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E45 -Encoding: 7749 7749 911 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 784 948> 819 102<385 697> 860 41<147 311> 1044 178<466 630> -VStem: 147 164<0 756 870 901> 466 164<1044 1223> 784 164<0 717> -CounterMasks: 1 0e -LayerCount: 2 -Fore -Refer: 364 729 N 1 0 0 1 413 -225 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E46 -Encoding: 7750 7750 912 -Width: 1406 -VWidth: 0 -Flags: W -HStem: -272 150<618 768> 0 43<174 348 1034 1237> 1393 41<174 375 1063 1237> -VStem: 174 174<0 1157> 618 150<-272 -123> 1063 174<274 1434> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1284 0 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E47 -Encoding: 7751 7751 913 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -272 150<465 614> 0 43<147 311 784 948> 819 102<385 697> 860 41<147 311> -VStem: 147 164<0 756 870 901> 465 150<-272 -123> 784 164<0 717> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1130 0 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E4A -Encoding: 7754 7754 914 -Width: 1406 -VWidth: 0 -Flags: W -HStem: -449 387 0 43<174 348 1034 1237> 1393 41<174 375 1063 1237> -VStem: 174 174<0 1157> 455 479 1063 174<274 1434> -LayerCount: 2 -Fore -Refer: 491 813 N 1 0 0 1 1280 0 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E4B -Encoding: 7755 7755 915 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -449 387 0 43<147 311 784 948> 819 102<385 697> 860 41<147 311> -VStem: 147 164<0 756 870 901> 301 479 784 164<0 717> -LayerCount: 2 -Fore -Refer: 491 813 N 1 0 0 1 1126 0 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E4C -Encoding: 7756 7756 916 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<550 894> 1147 102<529 896> 1296 117<710 908> 1362 117<525 724> 1501 279 -VStem: 102 174<378 860> 434 84<1296 1347> 664 276 915 84<1428 1479> 1163 174<375 857> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1294 27 2 -Refer: 592 57441 N 1 0 0 1 0 0 2 -Refer: 593 58624 N 1 0 0 1 516 20 2 -Validated: 1 -EndChar - -StartChar: uni1E4D -Encoding: 7757 7757 917 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1085 117<538 736> 1151 117<353 552> 1321 387 -VStem: 90 164<231 648> 262 84<1085 1136> 496 350 743 84<1217 1268> 807 164<241 660> -LayerCount: 2 -Fore -Refer: 882 714 N 1 0 0 1 422 66 2 -Refer: 131 245 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E50 -Encoding: 7760 7760 918 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<550 894> 1147 102<529 896> 1352 82<461 932> 1501 279 -VStem: 102 174<378 860> 461 471<1352 1434> 475 276 1163 174<375 857> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1294 82 2 -Refer: 592 57441 S 1 0 0 1 0 0 2 -Refer: 594 58625 N 1 0 0 1 328 20 2 -Validated: 1 -EndChar - -StartChar: uni1E51 -Encoding: 7761 7761 919 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1126 82<289 760> 1278 387 -VStem: 90 164<231 648> 238 350 289 471<1126 1208> 807 164<241 660> -LayerCount: 2 -Fore -Refer: 883 715 N 1 0 0 1 164 23 2 -Refer: 263 333 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E52 -Encoding: 7762 7762 920 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<550 894> 1147 102<529 896> 1352 82<461 932> 1501 279 -VStem: 102 174<378 860> 461 471<1352 1434> 664 276 1163 174<375 857> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1294 82 2 -Refer: 592 57441 N 1 0 0 1 0 0 2 -Refer: 593 58624 N 1 0 0 1 516 20 2 -Validated: 1 -EndChar - -StartChar: uni1E53 -Encoding: 7763 7763 921 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1126 82<289 760> 1278 387 -VStem: 90 164<231 648> 289 471<1126 1208> 461 350 807 164<241 660> -LayerCount: 2 -Fore -Refer: 882 714 N 1 0 0 1 387 23 2 -Refer: 263 333 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6C -Encoding: 7788 7788 922 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -272 150<567 717> 0 43<553 727> 1331 102<41 553 727 1243> -VStem: 553 174<0 1331> 567 150<-272 -123> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1233 0 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6D -Encoding: 7789 7789 923 -Width: 567 -VWidth: 0 -Flags: W -HStem: -272 150<188 338> 0 43<188 352> 799 102<84 188 352 514> -VStem: 188 150<-272 -123> 188 164<0 799 901 1198> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 854 0 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6E -Encoding: 7790 7790 924 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -205 82<397 868> 0 43<553 727> 1331 102<41 553 727 1243> -VStem: 397 471<-205 -123> 553 174<0 1331> -LayerCount: 2 -Fore -Refer: 495 817 N 1 0 0 1 1231 0 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6F -Encoding: 7791 7791 925 -Width: 567 -VWidth: 0 -Flags: W -HStem: -205 82<18 489> 0 43<188 352> 799 102<84 188 352 514> -VStem: 18 471<-205 -123> 188 164<0 799 901 1198> -LayerCount: 2 -Fore -Refer: 495 817 N 1 0 0 1 852 0 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E70 -Encoding: 7792 7792 926 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -449 387 0 43<553 727> 1331 102<41 553 727 1243> -VStem: 403 479 553 174<0 1331> -LayerCount: 2 -Fore -Refer: 491 813 N 1 0 0 1 1229 0 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E71 -Encoding: 7793 7793 927 -Width: 567 -VWidth: 0 -Flags: W -HStem: -449 387 0 43<188 352> 799 102<84 188 352 514> -VStem: 25 479 188 164<0 799 901 1198> -LayerCount: 2 -Fore -Refer: 491 813 N 1 0 0 1 850 0 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E92 -Encoding: 7826 7826 928 -Width: 1040 -VWidth: 0 -Flags: W -HStem: -272 150<473 623> 0 102<285 983> 1331 102<102 750> -VStem: 473 150<-272 -123> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1139 0 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E93 -Encoding: 7827 7827 929 -Width: 860 -VWidth: 0 -Flags: W -HStem: -272 150<367 516> 0 102<299 823> 799 102<74 573> -VStem: 367 150<-272 -123> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1032 0 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Oslashacute -Encoding: 510 510 930 -Width: 1435 -VWidth: 0 -Flags: HW -HStem: -20 102<564 877> 0 43<373 502> 1352 102<551 881> 1393 41<942 1073> 1577 387 -VStem: 102 174<433 1012> 656 350 1163 174<438 1008> -LayerCount: 2 -Fore -Refer: 882 714 N 1 0 0 1 583 322 2 -Refer: 166 216 N 1 0 0 1 0 0 3 -EndChar - -StartChar: oslashacute -Encoding: 511 511 931 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<453 673> 819 102<404 618> 1126 387 -VStem: 90 164<225 648> 467 350 807 164<241 665> -LayerCount: 2 -Fore -Refer: 882 714 N 1 0 0 1 393 -129 2 -Refer: 167 248 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: dotlessistroke -Encoding: 58627 58627 932 -Width: 512 -VWidth: 0 -GlyphClass: 5 -Flags: W -HStem: 0 43G<178 342> 518 102<45 178 342 469> 860 41G<178 342> -VStem: 178 164<0 518 621 901> -AnchorPoint: "top" 266 1004 basechar 0 -AnchorPoint: "ogonek" 340 0 basechar 0 -AnchorPoint: "bottom" 264 0 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "horn" 311 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -178 901 m 1,0,-1 - 342 901 l 1,1,-1 - 342 621 l 1,2,-1 - 469 621 l 1,3,-1 - 469 518 l 1,4,-1 - 342 518 l 1,5,-1 - 342 0 l 1,6,-1 - 178 0 l 1,7,-1 - 178 518 l 1,8,-1 - 45 518 l 1,9,-1 - 45 621 l 1,10,-1 - 178 621 l 1,11,-1 - 178 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: istrokegrave -Encoding: 58628 58628 933 -Width: 512 -VWidth: 0 -Flags: W -HStem: 0 43<178 342> 518 102<45 178 342 469> 860 41<178 342> 1071 387 -VStem: 20 350 178 164<0 518 621 901> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 717 -184 2 -Refer: 932 58627 N 1 0 0 1 0 0 2 -Validated: 1 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" uni0268 gravecomb -EndChar - -StartChar: istrokeacute -Encoding: 58629 58629 934 -Width: 512 -VWidth: 0 -Flags: W -HStem: 0 43<178 342> 518 102<45 178 342 469> 860 41<178 342> 1071 387 -VStem: 154 350 178 164<0 518 621 901> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 850 -184 2 -Refer: 932 58627 N 1 0 0 1 0 0 2 -Validated: 1 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" uni0268 acutecomb -EndChar - -StartChar: istrokecircumflex -Encoding: 58630 58630 935 -Width: 512 -VWidth: 0 -Flags: W -HStem: 0 43<178 342> 518 102<45 178 342 469> 860 41<178 342> 1073 299 -VStem: -12 551 178 164<0 518 621 901> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 850 -184 2 -Refer: 932 58627 N 1 0 0 1 0 0 2 -Validated: 1 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" uni0268 uni0302 -EndChar - -StartChar: istrokecaron -Encoding: 58631 58631 936 -Width: 512 -VWidth: 0 -Flags: W -HStem: 0 43<178 342> 518 102<45 178 342 469> 860 41<178 342> 1044 387 -VStem: 20 479 178 164<0 518 621 901> -LayerCount: 2 -Fore -Refer: 362 711 N 1 0 0 1 -41 -94 2 -Refer: 932 58627 N 1 0 0 1 0 0 2 -Validated: 1 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" uni0268 uni030C -EndChar - -StartChar: Adieresislowered -Encoding: 58632 58632 937 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1255 178<201 365 938 1102> 1393 41<546 756> -VStem: 201 164<1255 1434> 938 164<1255 1434> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1612 -14 2 -Refer: 98 775 N 1 0 0 1 874 -14 2 -Refer: 27 65 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Odieresislowered -Encoding: 58633 58633 938 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1255 178<82 246 1167 1331> 1352 102<551 871> -VStem: 82 164<1255 1434> 102 174<441 1012> 1163 174<438 1009> 1167 164<1255 1434> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1841 -14 2 -Refer: 98 775 N 1 0 0 1 756 -14 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Udieresislowered -Encoding: 58634 58634 939 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<539 873> 1255 178<471 635 799 963> 1393 41<156 330 1073 1247> -VStem: 156 174<328 1434> 471 164<1255 1434> 799 164<1255 1434> 1073 174<328 1434> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1473 -14 2 -Refer: 98 775 N 1 0 0 1 1145 -14 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni25CC -Encoding: 9676 9676 940 -Width: 1081 -VWidth: 0 -Flags: W -HStem: 0 94<494 588> 119 94<209 303 778 872> 403 94<90 184 897 991> 688 94<209 303 778 872> 807 94<494 588> -VStem: 90 94<403 498> 209 94<119 213 688 782> 494 94<0 94 807 901> 778 94<119 213 688 782> 897 94<403 498> -AnchorPoint: "top" 545 1004 basechar 0 -AnchorPoint: "ogonek" 547 0 basechar 0 -AnchorPoint: "bottom" 526 0 basechar 0 -AnchorPoint: "horn" 891 635 basechar 0 -AnchorPoint: "cedilla" 516 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -872 688 m 1,0,-1 - 778 688 l 1,1,-1 - 778 782 l 1,2,-1 - 872 782 l 1,3,-1 - 872 688 l 1,0,-1 -303 119 m 1,4,-1 - 209 119 l 1,5,-1 - 209 213 l 1,6,-1 - 303 213 l 1,7,-1 - 303 119 l 1,4,-1 -778 119 m 1,8,-1 - 778 213 l 1,9,-1 - 872 213 l 1,10,-1 - 872 119 l 1,11,-1 - 778 119 l 1,8,-1 -209 688 m 1,12,-1 - 209 782 l 1,13,-1 - 303 782 l 1,14,-1 - 303 688 l 1,15,-1 - 209 688 l 1,12,-1 -897 403 m 1,16,-1 - 897 498 l 1,17,-1 - 991 498 l 1,18,-1 - 991 403 l 1,19,-1 - 897 403 l 1,16,-1 -90 403 m 1,20,-1 - 90 498 l 1,21,-1 - 184 498 l 1,22,-1 - 184 403 l 1,23,-1 - 90 403 l 1,20,-1 -494 94 m 1,24,-1 - 588 94 l 1,25,-1 - 588 0 l 1,26,-1 - 494 0 l 1,27,-1 - 494 94 l 1,24,-1 -494 901 m 1,28,-1 - 588 901 l 1,29,-1 - 588 807 l 1,30,-1 - 494 807 l 1,31,-1 - 494 901 l 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii299 -Encoding: 8206 8206 941 -Width: 731 -VWidth: 0 -Flags: W -HStem: 1337 61<225 512> -VStem: 164 61<-410 1337> -LayerCount: 2 -Fore -SplineSet -629 1368 m 1,0,-1 - 410 1149 l 1,1,-1 - 410 1235 l 1,2,-1 - 512 1337 l 1,3,-1 - 225 1337 l 1,4,-1 - 225 -410 l 1,5,-1 - 164 -410 l 1,6,-1 - 164 1399 l 1,7,-1 - 512 1399 l 1,8,-1 - 410 1501 l 1,9,-1 - 410 1589 l 1,10,-1 - 629 1368 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii300 -Encoding: 8207 8207 942 -Width: 731 -VWidth: 0 -Flags: W -HStem: 1337 61<219 506> -VStem: 506 61<-410 1337> -LayerCount: 2 -Fore -SplineSet -102 1368 m 1,0,-1 - 322 1589 l 1,1,-1 - 322 1501 l 1,2,-1 - 219 1399 l 1,3,-1 - 567 1399 l 1,4,-1 - 567 -410 l 1,5,-1 - 506 -410 l 1,6,-1 - 506 1337 l 1,7,-1 - 219 1337 l 1,8,-1 - 322 1235 l 1,9,-1 - 322 1149 l 1,10,-1 - 102 1368 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57664 -Encoding: 1488 1488 943 -Width: 1226 -VWidth: 0 -Flags: W -HStem: 0 43G<86 250 902 1141> -VStem: 86 164<0 283> 977 164<804 1085> -LayerCount: 2 -Fore -SplineSet -436 639 m 1,0,-1 - 86 1085 l 1,1,-1 - 293 1085 l 1,2,-1 - 719 541 l 1,3,4 - 838 630 838 630 877 689 c 0,5,6 - 930 769 930 769 946 830 c 0,7,8 - 977 954 977 954 977 1085 c 1,9,-1 - 1141 1085 l 1,10,11 - 1140 835 1140 835 1058 698 c 0,12,13 - 1028 649 1028 649 1004.5 618 c 128,-1,14 - 981 587 981 587 938 551 c 0,15,16 - 882 504 882 504 793 446 c 1,17,-1 - 1141 0 l 1,18,-1 - 934 0 l 1,19,-1 - 510 543 l 1,20,21 - 385 448 385 448 351 396 c 0,22,23 - 296 313 296 313 281 255 c 0,24,25 - 250 134 250 134 250 0 c 1,26,-1 - 86 0 l 1,27,28 - 86 248 86 248 168 388 c 0,29,30 - 219 474 219 474 273 520 c 0,31,32 - 341 577 341 577 388 607.5 c 128,-1,33 - 435 638 435 638 436 639 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57665 -Encoding: 1489 1489 944 -Width: 1064 -VWidth: 0 -Flags: W -HStem: 0 102<86 727 891 958> 907 43G<86 130> 1004 102<182 598> -VStem: 727 164<102 866> -LayerCount: 2 -Fore -SplineSet -86 1055 m 1,0,1 - 213 1106 213 1106 358 1106 c 0,2,3 - 635 1106 635 1106 763 1001 c 128,-1,4 - 891 896 891 896 891 676 c 2,5,-1 - 891 102 l 1,6,-1 - 958 102 l 1,7,-1 - 958 0 l 1,8,-1 - 86 0 l 1,9,-1 - 86 102 l 1,10,-1 - 727 102 l 1,11,-1 - 727 651 l 2,12,13 - 727 860 727 860 631 936 c 0,14,15 - 545 1004 545 1004 388 1004 c 128,-1,16 - 231 1004 231 1004 86 907 c 1,17,-1 - 86 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: underscoredbl -Encoding: 8215 8215 945 -Width: 692 -VWidth: 0 -Flags: W -HStem: -369 102<0 692> -184 102<0 692> -LayerCount: 2 -Fore -SplineSet -0 -266 m 1,0,-1 - 692 -266 l 1,1,-1 - 692 -369 l 1,2,-1 - 0 -369 l 1,3,-1 - 0 -266 l 1,0,-1 -0 -82 m 1,4,-1 - 692 -82 l 1,5,-1 - 692 -184 l 1,6,-1 - 0 -184 l 1,7,-1 - 0 -82 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57666 -Encoding: 1490 1490 946 -Width: 966 -VWidth: 0 -Flags: W -HStem: 0 43G<90 304 662 864> 422 119<509 604> 1004 102<268 534> -VStem: 90 170<0 120> 604 164<124 422 531 927> -LayerCount: 2 -Fore -SplineSet -864 0 m 1,0,-1 - 688 0 l 1,1,2 - 604 176 604 176 604 401 c 2,3,-1 - 604 422 l 1,4,5 - 482 384 482 384 402 293 c 128,-1,6 - 322 202 322 202 260 0 c 1,7,-1 - 90 0 l 1,8,9 - 180 324 180 324 368 445 c 0,10,11 - 465 507 465 507 604 541 c 1,12,-1 - 604 758 l 2,13,14 - 604 876 604 876 552 940 c 128,-1,15 - 500 1004 500 1004 444 1004 c 0,16,17 - 298 1004 298 1004 262 952 c 1,18,-1 - 133 1014 l 1,19,20 - 169 1057 169 1057 251 1081.5 c 128,-1,21 - 333 1106 333 1106 389.5 1106 c 128,-1,22 - 446 1106 446 1106 494 1096.5 c 128,-1,23 - 542 1087 542 1087 592 1065 c 0,24,25 - 642 1044 642 1044 680 1012 c 0,26,27 - 768 941 768 941 768 825 c 2,28,-1 - 768 401 l 2,29,30 - 768 179 768 179 864 0 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57667 -Encoding: 1491 1491 947 -Width: 995 -VWidth: 0 -Flags: W -HStem: 0 43G<657 821> 983 102<16 657 821 889> -VStem: 657 164<0 983> -LayerCount: 2 -Fore -SplineSet -821 0 m 1,0,-1 - 657 0 l 1,1,-1 - 657 983 l 1,2,-1 - 16 983 l 1,3,-1 - 16 1085 l 1,4,-1 - 889 1085 l 1,5,-1 - 889 983 l 1,6,-1 - 821 983 l 1,7,-1 - 821 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57668 -Encoding: 1492 1492 948 -Width: 1091 -VWidth: 0 -Flags: W -HStem: 0 43G<102 266 825 989> 907 43G<102 146> 1004 102<208 666> -VStem: 102 164<0 571> 825 164<0 845> -LayerCount: 2 -Fore -SplineSet -266 571 m 9,0,-1 - 266 0 l 1,1,-1 - 102 0 l 1,2,-1 - 102 573 l 1,3,-1 - 266 571 l 9,0,-1 -102 1055 m 1,4,5 - 227 1106 227 1106 416 1106 c 0,6,7 - 989 1106 989 1106 989 676 c 2,8,-1 - 989 0 l 1,9,-1 - 825 0 l 1,10,-1 - 825 651 l 2,11,12 - 825 1004 825 1004 455 1004 c 0,13,14 - 364 1004 364 1004 265.5 977.5 c 128,-1,15 - 167 951 167 951 102 907 c 1,16,-1 - 102 1055 l 1,4,5 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57669 -Encoding: 1493 1493 949 -Width: 696 -VWidth: 0 -Flags: W -HStem: 0 43G<430 594> 952 102<216 397> -VStem: 430 164<0 923> -LayerCount: 2 -Fore -SplineSet -404.5 894 m 128,-1,1 - 379 952 379 952 317 952 c 128,-1,2 - 255 952 255 952 187 976 c 128,-1,3 - 119 1000 119 1000 82 1044 c 1,4,-1 - 211 1106 l 1,5,6 - 247 1055 247 1055 311 1055 c 128,-1,7 - 375 1055 375 1055 423 1039 c 128,-1,8 - 471 1023 471 1023 510 991 c 0,9,10 - 594 922 594 922 594 774 c 2,11,-1 - 594 0 l 1,12,-1 - 430 0 l 1,13,-1 - 430 707 l 2,14,0 - 430 836 430 836 404.5 894 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57670 -Encoding: 1494 1494 950 -Width: 796 -VWidth: 0 -Flags: W -HStem: 0 43G<303 467> -VStem: 303 164<0 771> -LayerCount: 2 -Fore -SplineSet -446 866 m 1,0,-1 - 82 969 l 1,1,-1 - 82 1085 l 1,2,-1 - 715 909 l 1,3,-1 - 715 793 l 1,4,-1 - 588 827 l 1,5,6 - 546 812 546 812 522 786 c 0,7,8 - 468 727 468 727 467 526 c 2,9,-1 - 467 0 l 1,10,-1 - 303 0 l 1,11,-1 - 303 582 l 2,12,13 - 303 772 303 772 403 842 c 0,14,15 - 421 854 421 854 446 866 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57671 -Encoding: 1495 1495 951 -Width: 1193 -VWidth: 0 -Flags: W -HStem: 0 43G<102 266 928 1092> 1004 102<271 737> -VStem: 102 164<0 981> 928 164<0 834> -LayerCount: 2 -Fore -SplineSet -102 1055 m 1,0,1 - 159 1078 159 1078 271 1092 c 128,-1,2 - 383 1106 383 1106 467 1106 c 0,3,4 - 756 1106 756 1106 924 997 c 128,-1,5 - 1092 888 1092 888 1092 676 c 2,6,-1 - 1092 0 l 1,7,-1 - 928 0 l 1,8,-1 - 928 651 l 2,9,10 - 928 881 928 881 734 962 c 0,11,12 - 633 1004 633 1004 517 1004 c 128,-1,13 - 401 1004 401 1004 266 971 c 1,14,-1 - 266 0 l 1,15,-1 - 102 0 l 1,16,-1 - 102 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57672 -Encoding: 1496 1496 952 -Width: 1226 -VWidth: 0 -Flags: W -HStem: -20 102<457 770> 1001 102<706 927> -VStem: 102 164<297 1085> 961 164<297 972> -LayerCount: 2 -Fore -SplineSet -961 520 m 2,0,-1 - 961 756 l 2,1,2 - 961 885 961 885 935.5 943 c 128,-1,3 - 910 1001 910 1001 843.5 1001 c 128,-1,4 - 777 1001 777 1001 741 950 c 1,5,-1 - 612 1012 l 1,6,7 - 689 1104 689 1104 819 1104 c 0,8,9 - 935 1104 935 1104 1025 1040 c 0,10,11 - 1124 970 1124 970 1124 823 c 2,12,-1 - 1124 496 l 2,13,14 - 1124 269 1124 269 978 124.5 c 128,-1,15 - 832 -20 832 -20 614 -20 c 0,16,17 - 470 -20 470 -20 353.5 44.5 c 128,-1,18 - 237 109 237 109 169.5 227.5 c 128,-1,19 - 102 346 102 346 102 496 c 2,20,-1 - 102 1085 l 1,21,-1 - 266 1085 l 1,22,-1 - 266 520 l 2,23,24 - 266 260 266 260 429 144 c 0,25,26 - 515 83 515 83 614 82 c 0,27,28 - 712 82 712 82 798 144 c 0,29,30 - 961 263 961 263 961 520 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57673 -Encoding: 1497 1497 953 -Width: 686 -VWidth: 0 -Flags: W -HStem: 1001 102<176 397> -VStem: 430 164<520 972> -LayerCount: 2 -Fore -SplineSet -430 520 m 9,0,-1 - 430 756 l 2,1,2 - 430 885 430 885 404.5 943 c 128,-1,3 - 379 1001 379 1001 313 1001 c 128,-1,4 - 247 1001 247 1001 211 950 c 1,5,-1 - 82 1012 l 1,6,7 - 159 1104 159 1104 289 1104 c 0,8,9 - 405 1104 405 1104 495 1040 c 0,10,11 - 594 970 594 970 594 823 c 2,12,-1 - 594 520 l 1,13,-1 - 430 520 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57674 -Encoding: 1498 1498 954 -Width: 985 -VWidth: 0 -Flags: W -HStem: 907 43G<16 60> 1004 102<122 580> -VStem: 739 164<-410 845> -LayerCount: 2 -Fore -SplineSet -16 1055 m 1,0,1 - 141 1106 141 1106 330 1106 c 0,2,3 - 903 1106 903 1106 903 676 c 2,4,-1 - 903 -410 l 1,5,-1 - 739 -410 l 1,6,-1 - 739 651 l 2,7,8 - 739 1004 739 1004 369 1004 c 0,9,10 - 278 1004 278 1004 179.5 977.5 c 128,-1,11 - 81 951 81 951 16 907 c 1,12,-1 - 16 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57675 -Encoding: 1499 1499 955 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -20 102<192 649> 907 43G<86 130> 1004 102<192 649> -VStem: 809 164<240 845> -LayerCount: 2 -Fore -SplineSet -86 1055 m 1,0,1 - 211 1106 211 1106 399 1106 c 0,2,3 - 973 1106 973 1106 973 676 c 2,4,-1 - 973 410 l 2,5,6 - 973 -20 973 -20 399 -20 c 0,7,8 - 211 -20 211 -20 86 31 c 1,9,-1 - 86 178 l 1,10,11 - 151 135 151 135 249 108.5 c 128,-1,12 - 347 82 347 82 438 82 c 0,13,14 - 809 82 809 82 809 434 c 2,15,-1 - 809 651 l 2,16,17 - 809 1004 809 1004 438 1004 c 0,18,19 - 347 1004 347 1004 249 977.5 c 128,-1,20 - 151 951 151 951 86 907 c 1,21,-1 - 86 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57676 -Encoding: 1500 1500 956 -Width: 948 -VWidth: 0 -Flags: W -HStem: 0 43G<180 340> 983 102<246 557> 1393 41G<82 246> -VStem: 82 164<1085 1434> 180 160<0 165> 692 164<569 876> -LayerCount: 2 -Fore -SplineSet -82 983 m 1,0,-1 - 82 1434 l 1,1,-1 - 246 1434 l 1,2,-1 - 246 1085 l 1,3,-1 - 274 1085 l 2,4,5 - 505 1085 505 1085 599.5 1061 c 128,-1,6 - 694 1037 694 1037 736 1010.5 c 128,-1,7 - 778 984 778 984 806 942 c 0,8,9 - 856 866 856 866 856 717 c 0,10,11 - 856 552 856 552 754 458 c 0,12,13 - 699 408 699 408 593.5 344.5 c 128,-1,14 - 488 281 488 281 442 242 c 0,15,16 - 340 154 340 154 340 0 c 1,17,-1 - 180 0 l 1,18,19 - 180 124 180 124 244 210 c 0,20,21 - 300 285 300 285 368 332 c 2,22,-1 - 478 407 l 2,23,24 - 576 474 576 474 617 523 c 0,25,26 - 692 615 692 615 692 727 c 0,27,28 - 692 880 692 880 574 934 c 0,29,30 - 467 983 467 983 255 983 c 0,31,32 - 251 983 251 983 246 983 c 2,33,-1 - 82 983 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57677 -Encoding: 1501 1501 957 -Width: 1193 -VWidth: 0 -Flags: W -HStem: 0 102<266 928> 1004 102<271 737> -VStem: 102 164<102 981> 928 164<102 834> -LayerCount: 2 -Fore -SplineSet -102 1055 m 1,0,1 - 159 1078 159 1078 271 1092 c 128,-1,2 - 383 1106 383 1106 467 1106 c 0,3,4 - 756 1106 756 1106 924 997 c 128,-1,5 - 1092 888 1092 888 1092 676 c 2,6,-1 - 1092 0 l 1,7,-1 - 102 0 l 1,8,-1 - 102 1055 l 1,0,1 -266 971 m 1,9,-1 - 266 102 l 1,10,-1 - 928 102 l 1,11,-1 - 928 651 l 2,12,13 - 928 881 928 881 734 962 c 0,14,15 - 633 1004 633 1004 517 1004 c 128,-1,16 - 401 1004 401 1004 266 971 c 1,9,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57678 -Encoding: 1502 1502 958 -Width: 1284 -VWidth: 0 -Flags: W -HStem: 0 102<643 1018> 1004 102<556 905> -VStem: 1018 164<102 882> -LayerCount: 2 -Fore -SplineSet -121 0 m 1,0,-1 - 240 674 l 2,1,2 - 248 722 248 722 254 741 c 1,3,-1 - 92 1085 l 1,4,-1 - 272 1085 l 1,5,-1 - 342 938 l 1,6,7 - 463 1106 463 1106 680 1106 c 0,8,9 - 1038 1106 1038 1106 1134 918 c 0,10,11 - 1182 826 1182 826 1182 676 c 2,12,-1 - 1182 0 l 1,13,-1 - 643 0 l 1,14,-1 - 643 102 l 1,15,-1 - 1018 102 l 1,16,-1 - 1018 651 l 2,17,18 - 1018 860 1018 860 938 936 c 0,19,20 - 866 1004 866 1004 728 1004 c 128,-1,21 - 590 1004 590 1004 513 923.5 c 128,-1,22 - 436 843 436 843 401 645 c 2,23,-1 - 287 0 l 1,24,-1 - 121 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57679 -Encoding: 1503 1503 959 -Width: 686 -VWidth: 0 -Flags: W -HStem: 1001 102<165 387> -VStem: 420 164<-410 972> -LayerCount: 2 -Fore -SplineSet -420 -410 m 9,0,-1 - 420 756 l 2,1,2 - 420 885 420 885 394.5 943 c 128,-1,3 - 369 1001 369 1001 303 1001 c 128,-1,4 - 237 1001 237 1001 201 950 c 1,5,-1 - 72 1012 l 1,6,7 - 149 1104 149 1104 279 1104 c 0,8,9 - 395 1104 395 1104 485 1040 c 0,10,11 - 584 970 584 970 584 823 c 2,12,-1 - 584 -410 l 1,13,-1 - 420 -410 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57680 -Encoding: 1504 1504 960 -Width: 700 -VWidth: 0 -Flags: W -HStem: 0 102<86 434> 1001 102<180 401> -VStem: 434 164<102 972> -LayerCount: 2 -Fore -SplineSet -598 0 m 1,0,-1 - 86 0 l 1,1,-1 - 86 102 l 1,2,-1 - 434 102 l 1,3,-1 - 434 756 l 2,4,5 - 434 885 434 885 409 943 c 128,-1,6 - 384 1001 384 1001 317.5 1001 c 128,-1,7 - 251 1001 251 1001 215 950 c 1,8,-1 - 86 1012 l 1,9,10 - 163 1104 163 1104 293 1104 c 0,11,12 - 409 1104 409 1104 499 1040 c 0,13,14 - 598 970 598 970 598 823 c 2,15,-1 - 598 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57681 -Encoding: 1505 1505 961 -Width: 1284 -VWidth: 0 -Flags: W -HStem: -20 102<500 839> 983 102<92 307 433 840> -VStem: 162 164<273 792> 1022 164<299 774> -LayerCount: 2 -Fore -SplineSet -92 1085 m 1,0,-1 - 655 1085 l 2,1,2 - 895 1085 895 1085 1040.5 942.5 c 128,-1,3 - 1186 800 1186 800 1186 532 c 0,4,5 - 1186 220 1186 220 957 68 c 0,6,7 - 824 -20 824 -20 655 -20 c 0,8,9 - 393 -20 393 -20 259 160 c 0,10,11 - 162 290 162 290 162 504 c 0,12,13 - 162 663 162 663 198.5 771.5 c 128,-1,14 - 235 880 235 880 307 983 c 1,15,-1 - 92 983 l 1,16,-1 - 92 1085 l 1,0,-1 -467 983 m 1,17,18 - 391 890 391 890 358.5 787.5 c 128,-1,19 - 326 685 326 685 326 538 c 0,20,21 - 326 392 326 392 354 308 c 0,22,23 - 384 224 384 224 434 176 c 0,24,25 - 533 82 533 82 686 82 c 0,26,27 - 811 82 811 82 911 186 c 0,28,29 - 961 238 961 238 991.5 327.5 c 128,-1,30 - 1022 417 1022 417 1022 533.5 c 128,-1,31 - 1022 650 1022 650 992 740.5 c 128,-1,32 - 962 831 962 831 912 882 c 0,33,34 - 813 983 813 983 686 983 c 2,35,-1 - 467 983 l 1,17,18 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57682 -Encoding: 1506 1506 962 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -328 102<94 303> -VStem: 874 164<667 1085> -LayerCount: 2 -Fore -SplineSet -94 -328 m 1,0,-1 - 94 -225 l 1,1,2 - 287 -225 287 -225 438 -115 c 1,3,-1 - 115 1085 l 1,4,-1 - 260 1085 l 1,5,-1 - 551 -14 l 1,6,7 - 712 166 712 166 793 462.5 c 128,-1,8 - 874 759 874 759 874 1085 c 1,9,-1 - 1038 1085 l 1,10,11 - 1038 645 1038 645 881 272 c 0,12,13 - 770 7 770 7 579 -155 c 0,14,15 - 376 -328 376 -328 94 -328 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57684 -Encoding: 1508 1508 963 -Width: 1085 -VWidth: 0 -Flags: W -HStem: -20 102<204 661> 471 102<295 517> 1004 102<265 661> -VStem: 98 164<603 987> 821 164<240 845> -LayerCount: 2 -Fore -SplineSet -98 1055 m 1,0,1 - 223 1106 223 1106 412 1106 c 0,2,3 - 985 1106 985 1106 985 676 c 2,4,-1 - 985 410 l 2,5,6 - 985 -20 985 -20 412 -20 c 0,7,8 - 223 -20 223 -20 98 31 c 1,9,-1 - 98 178 l 1,10,11 - 163 135 163 135 261.5 108.5 c 128,-1,12 - 360 82 360 82 451 82 c 0,13,14 - 821 82 821 82 821 434 c 2,15,-1 - 821 651 l 2,16,17 - 821 1004 821 1004 451 1004 c 0,18,19 - 365 1004 365 1004 262 977 c 1,20,-1 - 262 819 l 2,21,22 - 262 690 262 690 287.5 631.5 c 128,-1,23 - 313 573 313 573 378.5 573 c 128,-1,24 - 444 573 444 573 481 625 c 1,25,-1 - 610 563 l 1,26,27 - 533 471 533 471 403 471 c 0,28,29 - 287 471 287 471 197 535 c 0,30,31 - 98 605 98 605 98 752 c 2,32,-1 - 98 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57683 -Encoding: 1507 1507 964 -Width: 1079 -VWidth: 0 -Flags: W -HStem: 471 102<287 508> 1004 102<257 653> -VStem: 90 164<603 987> 813 164<-410 845> -LayerCount: 2 -Fore -SplineSet -90 1055 m 1,0,1 - 215 1106 215 1106 403 1106 c 0,2,3 - 977 1106 977 1106 977 676 c 2,4,-1 - 977 -410 l 1,5,-1 - 813 -410 l 1,6,-1 - 813 651 l 2,7,8 - 813 1004 813 1004 442 1004 c 0,9,10 - 357 1004 357 1004 254 977 c 1,11,-1 - 254 819 l 2,12,13 - 254 690 254 690 279.5 631.5 c 128,-1,14 - 305 573 305 573 370.5 573 c 128,-1,15 - 436 573 436 573 473 625 c 1,16,-1 - 602 563 l 1,17,18 - 525 471 525 471 395 471 c 0,19,20 - 279 471 279 471 189 535 c 0,21,22 - 90 605 90 605 90 752 c 2,23,-1 - 90 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57685 -Encoding: 1509 1509 965 -Width: 1103 -VWidth: 0 -Flags: W -VStem: 78 164<840 1085> 639 164<-410 285> 836 170<806 1085> -LayerCount: 2 -Fore -SplineSet -639 -410 m 1,0,-1 - 639 143 l 2,1,2 - 638 242 638 242 568 322 c 0,3,4 - 522 374 522 374 440.5 440 c 128,-1,5 - 359 506 359 506 312 547.5 c 128,-1,6 - 265 589 265 589 223 642 c 0,7,8 - 180 695 180 695 148 757 c 0,9,10 - 78 891 78 891 78 1085 c 1,11,-1 - 242 1085 l 1,12,13 - 242 824 242 824 392 670 c 0,14,15 - 448 614 448 614 477.5 590.5 c 128,-1,16 - 507 567 507 567 552.5 535 c 128,-1,17 - 598 503 598 503 610 494 c 1,18,19 - 719 587 719 587 777.5 739 c 128,-1,20 - 836 891 836 891 836 1085 c 1,21,-1 - 1006 1085 l 1,22,23 - 1006 875 1006 875 921 703.5 c 128,-1,24 - 836 532 836 532 702 420 c 1,25,26 - 803 326 803 326 803 205 c 2,27,-1 - 803 -410 l 1,28,-1 - 639 -410 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57686 -Encoding: 1510 1510 966 -Width: 1122 -VWidth: 0 -Flags: W -HStem: 0 102<92 794> -VStem: 92 164<806 1085> 856 164<156 290 813 1085> -LayerCount: 2 -Fore -SplineSet -618 487 m 1,0,1 - 850 674 850 674 850 1085 c 1,2,-1 - 1020 1085 l 1,3,4 - 1020 885 1020 885 943 719.5 c 128,-1,5 - 866 554 866 554 741 442 c 1,6,7 - 880 397 880 397 923 374 c 0,8,9 - 1020 321 1020 321 1020 231 c 0,10,11 - 1020 126 1020 126 958 75 c 0,12,13 - 867 0 867 0 449 0 c 2,14,-1 - 92 0 l 1,15,-1 - 92 102 l 1,16,-1 - 449 102 l 2,17,18 - 674 102 674 102 765 132.5 c 128,-1,19 - 856 163 856 163 856 236 c 0,20,21 - 856 280 856 280 776 310 c 0,22,23 - 671 349 671 349 601.5 372 c 128,-1,24 - 532 395 532 395 474 425 c 128,-1,25 - 416 455 416 455 361 491 c 128,-1,26 - 306 527 306 527 257 583.5 c 128,-1,27 - 208 640 208 640 172 708 c 0,28,29 - 92 857 92 857 92 1085 c 1,30,-1 - 256 1085 l 1,31,32 - 256 701 256 701 509 543 c 0,33,34 - 557 513 557 513 618 487 c 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57687 -Encoding: 1511 1511 967 -Width: 1130 -VWidth: 0 -Flags: W -HStem: 0 43G<442 602> 983 102<102 741> -VStem: 102 164<-410 571> 442 160<0 177> 877 164<557 876> -LayerCount: 2 -Fore -SplineSet -266 571 m 9,0,-1 - 266 -410 l 1,1,-1 - 102 -410 l 1,2,-1 - 102 573 l 1,3,-1 - 266 571 l 9,0,-1 -102 1085 m 1,4,-1 - 459 1085 l 2,5,6 - 690 1085 690 1085 784 1061 c 0,7,8 - 878 1036 878 1036 920 1010 c 128,-1,9 - 962 984 962 984 990 942 c 0,10,11 - 1040 866 1040 866 1040 748.5 c 128,-1,12 - 1040 631 1040 631 1016 565 c 128,-1,13 - 992 499 992 499 953 457.5 c 128,-1,14 - 914 416 914 416 867.5 381.5 c 128,-1,15 - 821 347 821 347 774.5 314 c 128,-1,16 - 728 281 728 281 689 242 c 0,17,18 - 602 155 602 155 602 0 c 1,19,-1 - 442 0 l 1,20,21 - 442 156 442 156 528 256 c 0,22,23 - 576 311 576 311 664 382.5 c 128,-1,24 - 752 454 752 454 790 495 c 0,25,26 - 877 588 877 588 877 730 c 0,27,28 - 877 881 877 881 758 934 c 0,29,30 - 651 983 651 983 439 983 c 0,31,32 - 435 983 435 983 430 983 c 2,33,-1 - 102 983 l 1,34,-1 - 102 1085 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57688 -Encoding: 1512 1512 968 -Width: 989 -VWidth: 0 -Flags: W -HStem: 0 43G<739 903> 907 43G<16 60> 1004 102<122 580> -VStem: 739 164<0 845> -LayerCount: 2 -Fore -SplineSet -16 1055 m 1,0,1 - 141 1106 141 1106 330 1106 c 0,2,3 - 903 1106 903 1106 903 676 c 2,4,-1 - 903 0 l 1,5,-1 - 739 0 l 1,6,-1 - 739 651 l 2,7,8 - 739 1004 739 1004 369 1004 c 0,9,10 - 278 1004 278 1004 179.5 977.5 c 128,-1,11 - 81 951 81 951 16 907 c 1,12,-1 - 16 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57689 -Encoding: 1513 1513 969 -Width: 1509 -VWidth: 0 -Flags: W -HStem: 0 43G<273 751> -VStem: 754 162<876 1085> 1262 166<758 1085> -LayerCount: 2 -Fore -SplineSet -915 1085 m 1,0,1 - 838 464 838 464 371 438 c 1,2,-1 - 430 104 l 1,3,4 - 830 125 830 125 1012 316 c 0,5,6 - 1134 446 1134 446 1188 636 c 0,7,8 - 1240 816 1240 816 1262 1085 c 1,9,-1 - 1427 1085 l 1,10,11 - 1396 622 1396 622 1279 404 c 0,12,13 - 1184 226 1184 226 1034 140 c 0,14,15 - 862 42 862 42 616 14 c 0,16,17 - 487 0 487 0 328 0 c 2,18,-1 - 281 0 l 1,19,-1 - 90 1085 l 1,20,-1 - 258 1085 l 1,21,-1 - 354 539 l 1,22,23 - 476 546 476 546 562 618 c 0,24,25 - 725 753 725 753 754 1085 c 1,26,-1 - 915 1085 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57690 -Encoding: 1514 1514 970 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 102<86 181> 907 43G<86 102> 1004 102<395 734> -VStem: 227 164<151 965> 932 164<0 824> -LayerCount: 2 -Fore -SplineSet -86 102 m 1,0,1 - 227 102 227 102 227 348 c 2,2,-1 - 227 965 l 1,3,4 - 138 943 138 943 86 907 c 1,5,-1 - 86 1055 l 1,6,7 - 143 1078 143 1078 259.5 1092 c 128,-1,8 - 376 1106 376 1106 461 1106 c 0,9,10 - 751 1106 751 1106 923.5 996.5 c 128,-1,11 - 1096 887 1096 887 1096 676 c 2,12,-1 - 1096 0 l 1,13,-1 - 932 0 l 1,14,-1 - 932 651 l 2,15,16 - 932 881 932 881 732 962 c 0,17,18 - 629 1004 629 1004 500 1004 c 0,19,20 - 479 1004 479 1004 391 995 c 1,21,-1 - 391 281 l 2,22,23 - 390 76 390 76 194 16 c 0,24,25 - 142 0 142 0 86 0 c 1,26,-1 - 86 102 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Alpha -Encoding: 913 913 971 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Beta -Encoding: 914 914 972 -Width: 1116 -VWidth: 0 -Flags: W -HStem: 0 102<348 758> 727 102<348 668> 1331 102<348 691> -VStem: 174 174<102 727 829 1331> 778 174<946 1243> 864 174<216 579> -LayerCount: 2 -Fore -Refer: 28 66 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Gamma -Encoding: 915 915 973 -Width: 1038 -VWidth: 0 -Flags: W -HStem: 0 43<174 348> 1331 102<348 1001> -VStem: 174 174<0 1331> -LayerCount: 2 -Fore -Refer: 423 1043 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Epsilon -Encoding: 917 917 974 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> -VStem: 174 174<102 799 901 1331> -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Zeta -Encoding: 918 918 975 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<285 983> 1331 102<102 750> -LayerCount: 2 -Fore -Refer: 52 90 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Eta -Encoding: 919 919 976 -Width: 1351 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1008 1182> 717 102<348 1008> 1393 41<174 348 1008 1182> -VStem: 174 174<0 717 819 1434> 1008 174<0 717 819 1434> -LayerCount: 2 -Fore -Refer: 35 72 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Theta -Encoding: 920 920 977 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 647 143<436 983> 1352 102<551 871> -VStem: 102 174<441 1012> 1163 174<438 1009> -LayerCount: 2 -Fore -SplineSet -946 24 m 128,-1,1 - 834 -20 834 -20 727.5 -20 c 128,-1,2 - 621 -20 621 -20 537.5 7 c 128,-1,3 - 454 34 454 34 375 93 c 128,-1,4 - 296 152 296 152 235.5 236 c 128,-1,5 - 175 320 175 320 138.5 444.5 c 128,-1,6 - 102 569 102 569 102 717 c 128,-1,7 - 102 865 102 865 136 990 c 0,8,9 - 170 1114 170 1114 228 1198 c 0,10,11 - 289 1286 289 1286 362 1342 c 0,12,13 - 508 1454 508 1454 686 1454 c 0,14,15 - 900 1454 900 1454 1060 1342 c 0,16,17 - 1337 1149 1337 1149 1337 720 c 0,18,19 - 1337 530 1337 530 1286 387 c 0,20,21 - 1235 243 1235 243 1146.5 155.5 c 128,-1,0 - 1058 68 1058 68 946 24 c 128,-1,1 -703 1352 m 0,22,23 - 641 1352 641 1352 583 1328 c 128,-1,24 - 525 1304 525 1304 470 1252 c 0,25,26 - 416 1200 416 1200 372 1127 c 0,27,28 - 276 967 276 967 276 717 c 0,29,30 - 276 588 276 588 306 478.5 c 128,-1,31 - 336 369 336 369 384 298 c 0,32,33 - 432 226 432 226 491 176 c 0,34,35 - 603 82 603 82 717 82 c 0,36,37 - 849 82 849 82 961 182 c 0,38,39 - 1163 363 1163 363 1163 717 c 0,40,41 - 1163 1087 1163 1087 954 1258 c 0,42,43 - 839 1352 839 1352 703 1352 c 0,22,23 -436 791 m 1,44,-1 - 983 791 l 1,45,-1 - 983 647 l 1,46,-1 - 436 647 l 1,47,-1 - 436 791 l 1,44,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Iota -Encoding: 921 921 978 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> -VStem: 172 174<0 1434> -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Kappa -Encoding: 922 922 979 -Width: 1243 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1008 1233> 1393 41<174 348 967 1208> -VStem: 174 174<0 469 696 1434> -LayerCount: 2 -Fore -Refer: 38 75 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Lambda -Encoding: 923 923 980 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 1393 41<546 756> -LayerCount: 2 -Fore -Refer: 723 581 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Mu -Encoding: 924 924 981 -Width: 1626 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1282 1456> 1393 41<174 367 1263 1456> -VStem: 174 174<0 1098> 1282 174<0 1098> -LayerCount: 2 -Fore -Refer: 40 77 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Nu -Encoding: 925 925 982 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1034 1237> 1393 41<174 375 1063 1237> -VStem: 174 174<0 1157> 1063 174<274 1434> -LayerCount: 2 -Fore -Refer: 41 78 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Omicron -Encoding: 927 927 983 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1352 102<551 871> -VStem: 102 174<441 1012> 1163 174<438 1009> -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Pi -Encoding: 928 928 984 -Width: 1318 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 975 1149> 1331 102<348 975> -VStem: 174 174<0 1331> 975 174<0 1331> -LayerCount: 2 -Fore -Refer: 430 1055 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Rho -Encoding: 929 929 985 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 43<174 348> 655 102<348 755> 1331 102<348 757> -VStem: 174 174<0 655 758 1331> 864 174<872 1217> -LayerCount: 2 -Fore -Refer: 29 80 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Sigma -Encoding: 931 931 986 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<307 983> 1331 102<317 942> -LayerCount: 2 -Fore -Refer: 643 425 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Tau -Encoding: 932 932 987 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 43<553 727> 1331 102<41 553 727 1243> -VStem: 553 174<0 1331> -LayerCount: 2 -Fore -Refer: 46 84 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Upsilon -Encoding: 933 933 988 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<391 565> 1393 41<23 228 731 936> -VStem: 391 174<0 709> -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Phi -Encoding: 934 934 989 -Width: 1435 -VWidth: 0 -Flags: W -HStem: 0 43<633 807> 188 106<513 633 807 926> 1143 104<499 633 807 911> 1393 41<633 807> -VStem: 102 174<523 915> 633 174<0 194 295 1137 1243 1434> 1163 174<526 905> -CounterMasks: 1 0e -LayerCount: 2 -Fore -Refer: 432 1060 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Chi -Encoding: 935 935 990 -Width: 1191 -VWidth: 0 -Flags: W -HStem: 0 43<86 279 847 1042> 1393 41<127 322 804 999> -LayerCount: 2 -Fore -Refer: 49 88 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Omega -Encoding: 937 937 991 -Width: 1464 -VWidth: 0 -Flags: W -HStem: 0 246<497 578 879 959> 0 102<250 403 1053 1206> 1352 102<557 904> -VStem: 143 174<540 1057> 403 174<102 241> 879 328<0 102> 879 174<102 241> 1139 174<540 1057> -LayerCount: 2 -Fore -SplineSet -727 1454 m 128,-1,1 - 808 1454 808 1454 888.5 1430.5 c 128,-1,2 - 969 1407 969 1407 1046 1354 c 0,3,4 - 1123 1300 1123 1300 1182 1224 c 0,5,6 - 1313 1054 1313 1054 1313 782 c 0,7,8 - 1313 611 1313 611 1234 452 c 128,-1,9 - 1155 293 1155 293 1053 195 c 1,10,-1 - 1053 102 l 1,11,-1 - 1206 102 l 1,12,-1 - 1206 0 l 1,13,-1 - 879 0 l 1,14,-1 - 879 246 l 1,15,16 - 953 266 953 266 1013 346 c 128,-1,17 - 1073 426 1073 426 1106 541.5 c 128,-1,18 - 1139 657 1139 657 1139 789 c 128,-1,19 - 1139 921 1139 921 1106 1031 c 0,20,21 - 1073 1140 1073 1140 1016 1210 c 0,22,23 - 900 1352 900 1352 727 1352 c 0,24,25 - 556 1352 556 1352 440 1210 c 0,26,27 - 318 1059 318 1059 317 782 c 0,28,29 - 317 657 317 657 350 541.5 c 128,-1,30 - 383 426 383 426 443.5 346 c 128,-1,31 - 504 266 504 266 578 246 c 1,32,-1 - 578 0 l 1,33,-1 - 250 0 l 1,34,-1 - 250 102 l 1,35,-1 - 403 102 l 1,36,-1 - 403 195 l 1,37,38 - 301 293 301 293 222 452 c 128,-1,39 - 143 611 143 611 143 765 c 128,-1,40 - 143 919 143 919 178.5 1033.5 c 128,-1,41 - 214 1148 214 1148 273 1224.5 c 128,-1,42 - 332 1301 332 1301 408.5 1354 c 128,-1,43 - 485 1407 485 1407 565.5 1430.5 c 128,-1,0 - 646 1454 646 1454 727 1454 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Delta -Encoding: 916 916 992 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 102<240 1063> 1393 41G<546 756> -LayerCount: 2 -Fore -SplineSet -1264 0 m 1,0,-1 - 39 0 l 1,1,-1 - 561 1434 l 1,2,-1 - 741 1434 l 1,3,-1 - 1264 0 l 1,0,-1 -240 102 m 1,4,-1 - 1063 102 l 1,5,-1 - 651 1231 l 1,6,-1 - 240 102 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Xi -Encoding: 926 926 993 -Width: 1384 -VWidth: 0 -Flags: W -HStem: 0 143<82 1143> 645 143<215 1010> 1290 143<82 1143> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -SplineSet -215 788 m 1,0,-1 - 1010 788 l 1,1,-1 - 1010 645 l 1,2,-1 - 215 645 l 1,3,-1 - 215 788 l 1,0,-1 -82 1434 m 1,4,-1 - 1143 1434 l 1,5,-1 - 1143 1290 l 1,6,-1 - 82 1290 l 1,7,-1 - 82 1434 l 1,4,-1 -82 143 m 1,8,-1 - 1143 143 l 1,9,-1 - 1143 0 l 1,10,-1 - 82 0 l 1,11,-1 - 82 143 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Psi -Encoding: 936 936 994 -Width: 1556 -VWidth: 0 -Flags: W -HStem: 0 43G<696 870> 440 104<575 696 870 980> 1393 41G<156 330 696 870 1227 1401> -VStem: 156 174<810 1434> 696 174<0 445 547 1434> 1227 174<813 1434> -LayerCount: 2 -Fore -SplineSet -696 545 m 1,0,-1 - 696 1434 l 1,1,-1 - 870 1434 l 1,2,-1 - 870 547 l 1,3,4 - 1132 605 1132 605 1204 874 c 0,5,6 - 1227 960 1227 960 1227 1065 c 2,7,-1 - 1227 1434 l 1,8,-1 - 1401 1434 l 1,9,-1 - 1401 1065 l 2,10,11 - 1401 937 1401 937 1366.5 832.5 c 128,-1,12 - 1332 728 1332 728 1278 661 c 0,13,14 - 1224 594 1224 594 1152 546 c 0,15,16 - 1026 462 1026 462 870 440 c 1,17,-1 - 870 0 l 1,18,-1 - 696 0 l 1,19,-1 - 696 440 l 1,20,21 - 432 472 432 472 282 656 c 0,22,23 - 228 722 228 722 192 828.5 c 128,-1,24 - 156 935 156 935 156 1065 c 2,25,-1 - 156 1434 l 1,26,-1 - 330 1434 l 1,27,-1 - 330 1065 l 2,28,29 - 330 768 330 768 502 633 c 0,30,31 - 587 566 587 566 696 545 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tonos -Encoding: 900 900 995 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: 74 350 -LayerCount: 2 -Fore -Refer: 346 180 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: dieresistonos -Encoding: 901 901 996 -Width: 849 -VWidth: 0 -Flags: W -HStem: 1264 387 1270 178<53 217 627 791> -VStem: 53 164<1270 1448> 291 350 627 164<1270 1448> -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 217 8 2 -Refer: 364 729 N 1 0 0 1 0 0 2 -Refer: 364 729 N 1 0 0 1 573 0 2 -Validated: 1 -EndChar - -StartChar: anoteleia -Encoding: 903 903 997 -Width: 272 -VWidth: 0 -Flags: W -HStem: 414 178<53 217> -VStem: 53 164<414 592> -LayerCount: 2 -Fore -Refer: 347 183 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: alpha -Encoding: 945 945 998 -Width: 1126 -VWidth: 0 -Flags: W -HStem: -20 102<418 735 920 1040> 819 102<404 664> 860 41<733 897> -VStem: 90 164<253 648> 733 164<134 750 860 901> 1040 70<91 131> -LayerCount: 2 -Fore -Refer: 713 593 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: gamma -Encoding: 947 947 999 -Width: 823 -VWidth: 0 -Flags: W -HStem: -418 102<377 456> 860 41<18 187 645 811> -VStem: 238 137<-315 -97> 457 135<-315 -99> -LayerCount: 2 -Fore -Refer: 622 611 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: epsilon -Encoding: 949 949 1000 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<290 614> 451 102<330 578> 819 102<310 611> -VStem: 61 164<145 379> 111 164<604 783> -LayerCount: 2 -Fore -Refer: 859 1297 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: eta -Encoding: 951 951 1001 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 311> 819 102<385 697> 860 41<147 311> -VStem: 147 164<0 756 870 901> 784 164<-408 717> -LayerCount: 2 -Fore -Refer: 653 414 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: iota -Encoding: 953 953 1002 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> -VStem: 123 164<0 901> -LayerCount: 2 -Fore -Refer: 112 305 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: kappa -Encoding: 954 954 1003 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 705 913> 860 41<147 311 652 877> -VStem: 147 164<0 268 477 901> -LayerCount: 2 -Fore -Refer: 305 312 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: mu -Encoding: 956 956 1004 -Width: 972 -VWidth: 0 -Flags: W -HStem: -20 102<368 654> 0 43<719 883> 860 41<82 246 719 883> -VStem: 82 164<-293 37 227 901> 719 164<0 49 142 901> -LayerCount: 2 -Fore -Refer: 351 181 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: nu -Encoding: 957 957 1005 -Width: 849 -VWidth: 0 -Flags: W -HStem: 0 43<331 525> 860 41<18 183 659 838> -LayerCount: 2 -Fore -Refer: 21 118 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: omicron -Encoding: 959 959 1006 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> -VStem: 90 164<231 648> 807 164<241 660> -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: pi -Encoding: 960 960 1007 -Width: 1054 -VWidth: 0 -Flags: W -HStem: 0 43<123 287 770 934> 799 102<287 770> -VStem: 123 164<0 799> 770 164<0 799> -LayerCount: 2 -Fore -Refer: 454 1087 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: rho -Encoding: 961 961 1008 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -20 102<436 708> 819 102<393 707> -VStem: 145 164<-410 49 223 735> 836 164<237 664> -LayerCount: 2 -Fore -SplineSet -309 49 m 1,0,-1 - 309 -410 l 1,1,-1 - 145 -410 l 1,2,-1 - 145 532 l 2,3,4 - 145 802 145 802 323 881 c 0,5,6 - 415 922 415 922 544 922 c 128,-1,7 - 673 922 673 922 760.5 885 c 128,-1,8 - 848 848 848 848 899 782 c 128,-1,9 - 950 716 950 716 974.5 633.5 c 128,-1,10 - 999 551 999 551 999 451 c 0,11,12 - 999 350 999 350 975 268 c 0,13,14 - 950 186 950 186 900 120 c 0,15,16 - 793 -20 793 -20 555 -20 c 0,17,18 - 413 -20 413 -20 309 49 c 1,0,-1 -309 430 m 2,19,20 - 309 222 309 222 431 130 c 0,21,22 - 495 82 495 82 572 82 c 128,-1,23 - 649 82 649 82 698 115 c 0,24,25 - 746 148 746 148 776 202 c 0,26,27 - 836 311 836 311 836 427 c 128,-1,28 - 836 543 836 543 811 624 c 128,-1,29 - 786 705 786 705 727 762 c 128,-1,30 - 668 819 668 819 586 819 c 0,31,32 - 584 819 584 819 581 819 c 0,33,34 - 430 819 430 819 366 758 c 0,35,36 - 309 704 309 704 309 598 c 2,37,-1 - 309 430 l 2,19,20 -EndSplineSet -Validated: 1 -EndChar - -StartChar: sigma -Encoding: 963 963 1009 -Width: 1083 -VWidth: 0 -Flags: W -HStem: -20 102<384 676> 799 102<402 678 829 1024> -VStem: 90 164<224 636> 807 164<233 651> -LayerCount: 2 -Fore -SplineSet -971 440 m 0,0,1 - 971 101 971 101 696 8 c 0,2,3 - 613 -20 613 -20 512 -20 c 0,4,5 - 313 -20 313 -20 201.5 102 c 128,-1,6 - 90 224 90 224 90 440 c 0,7,8 - 90 544 90 544 127 632 c 0,9,10 - 164 720 164 720 224 778 c 0,11,12 - 352 900 352 900 512 901 c 2,13,-1 - 1024 901 l 1,14,-1 - 1024 799 l 1,15,-1 - 829 799 l 1,16,17 - 971 676 971 676 971 440 c 0,0,1 -733 700 m 128,-1,19 - 659 799 659 799 541 799 c 128,-1,20 - 423 799 423 799 338.5 701 c 128,-1,21 - 254 603 254 603 254 435.5 c 128,-1,22 - 254 268 254 268 326.5 175 c 128,-1,23 - 399 82 399 82 529.5 82 c 128,-1,24 - 660 82 660 82 733.5 180.5 c 128,-1,25 - 807 279 807 279 807 440 c 128,-1,18 - 807 601 807 601 733 700 c 128,-1,19 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tau -Encoding: 964 964 1010 -Width: 937 -VWidth: 0 -Flags: W -HStem: 0 43<391 555> 799 102<53 391 555 893> -VStem: 391 164<0 799> -LayerCount: 2 -Fore -Refer: 455 1090 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: upsilon -Encoding: 965 965 1011 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<394 659> 860 41G<129 293 764 928> -VStem: 129 164<195 901> 764 164<212 901> -LayerCount: 2 -Fore -SplineSet -293 901 m 1,0,-1 - 293 451 l 2,1,2 - 293 269 293 269 348 175.5 c 128,-1,3 - 403 82 403 82 541 82 c 0,4,5 - 652 82 652 82 708 181.5 c 128,-1,6 - 764 281 764 281 764 451 c 2,7,-1 - 764 901 l 1,8,-1 - 928 901 l 1,9,-1 - 928 451 l 2,10,11 - 928 218 928 218 820 99 c 128,-1,12 - 712 -20 712 -20 514 -20 c 0,13,14 - 316 -20 316 -20 222.5 104 c 128,-1,15 - 129 228 129 228 129 451 c 2,16,-1 - 129 901 l 1,17,-1 - 293 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: beta -Encoding: 946 946 1012 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -20 102<437 735> 645 102<330 637> 1229 102<415 673> -VStem: 166 164<-410 35 181 645 748 1140> 743 164<861 1155> 829 162<180 524> -LayerCount: 2 -Fore -SplineSet -594 82 m 0,0,1 - 752 82 752 82 804 213 c 0,2,3 - 829 275 829 275 829 354 c 0,4,5 - 829 357 829 357 829 360 c 0,6,7 - 829 490 829 490 750.5 567.5 c 128,-1,8 - 672 645 672 645 535 645 c 2,9,-1 - 330 645 l 1,10,-1 - 330 279 l 2,11,12 - 330 216 330 216 405.5 149 c 128,-1,13 - 481 82 481 82 594 82 c 0,0,1 -330 985 m 2,14,-1 - 330 748 l 1,15,-1 - 510 748 l 2,16,17 - 570 748 570 748 618 776 c 0,18,19 - 666 806 666 806 692 848 c 0,20,21 - 744 933 744 933 744 985 c 0,22,23 - 744 1036 744 1036 734 1072 c 0,24,25 - 726 1108 726 1108 706 1146 c 0,26,27 - 662 1229 662 1229 548 1229 c 0,28,-1 - 545 1229 l 0,29,30 - 388 1229 388 1229 342 1068 c 0,31,32 - 330 1027 330 1027 330 985 c 2,14,-1 -166 -410 m 1,33,-1 - 166 930 l 2,34,35 - 166 1109 166 1109 251.5 1220 c 128,-1,36 - 337 1331 337 1331 506 1331 c 0,37,38 - 810 1331 810 1331 886 1108 c 0,39,40 - 908 1046 908 1046 908 970 c 0,41,42 - 908 890 908 890 854 806 c 0,43,44 - 802 722 802 722 764 713 c 1,45,46 - 838 682 838 682 892 620 c 0,47,48 - 990 506 990 506 991 367 c 0,49,50 - 991 185 991 185 885.5 82.5 c 128,-1,51 - 780 -20 780 -20 553 -20 c 0,52,53 - 421 -20 421 -20 330 35 c 1,54,-1 - 330 -410 l 1,55,-1 - 166 -410 l 1,33,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: delta -Encoding: 948 948 1013 -Width: 1116 -VWidth: 0 -Flags: W -HStem: -29 102<444 732> 827 98<417 565> 1276 102<418 744> -VStem: 100 164<279 664> 242 164<1116 1257> 874 164<233 670> -LayerCount: 2 -Fore -SplineSet -561 74 m 1,0,1 - 874 74 874 74 874 473 c 0,2,3 - 874 646 874 646 781 736.5 c 128,-1,4 - 688 827 688 827 549 827 c 0,5,6 - 547 827 l 0,7,8 - 449 827 449 827 360 742 c 0,9,10 - 318 702 318 702 291 636 c 128,-1,11 - 264 570 264 570 264 484 c 128,-1,12 - 264 398 264 398 293.5 316.5 c 128,-1,13 - 323 235 323 235 368 184 c 0,14,15 - 492 86 492 86 561 74 c 1,0,1 -571 926 m 1,16,17 - 551 938 551 938 502.5 959 c 128,-1,18 - 454 980 454 980 414 1000 c 128,-1,19 - 374 1020 374 1020 332 1048 c 0,20,21 - 242 1108 242 1108 242 1181 c 128,-1,22 - 242 1254 242 1254 290 1297 c 0,23,24 - 380 1378 380 1378 547 1378 c 128,-1,25 - 714 1378 714 1378 797 1335.5 c 128,-1,26 - 880 1293 880 1293 938 1217 c 1,27,-1 - 807 1151 l 1,28,29 - 799 1161 799 1161 781 1189.5 c 128,-1,30 - 763 1218 763 1218 753 1227 c 0,31,32 - 744 1236 744 1236 720 1251 c 0,33,34 - 681 1276 681 1276 597.5 1276 c 128,-1,35 - 514 1276 514 1276 478 1268 c 0,36,37 - 442 1260 442 1260 427 1244 c 0,38,39 - 406 1221 406 1221 406 1185.5 c 128,-1,40 - 406 1150 406 1150 434.5 1127 c 128,-1,41 - 463 1104 463 1104 553.5 1061.5 c 128,-1,42 - 644 1019 644 1019 704.5 983.5 c 128,-1,43 - 765 948 765 948 829.5 894.5 c 128,-1,44 - 894 841 894 841 938 782 c 0,45,46 - 1038 646 1038 646 1038 473 c 0,47,48 - 1038 219 1038 219 892 81 c 0,49,50 - 775 -29 775 -29 562.5 -29 c 129,-1,51 - 350 -29 350 -29 225 114.5 c 128,-1,52 - 100 258 100 258 100 492 c 0,53,54 - 100 585 100 585 132.5 661 c 128,-1,55 - 165 737 165 737 215.5 785 c 128,-1,56 - 266 833 266 833 330 866 c 0,57,58 - 448 926 448 926 571 926 c 1,16,17 -EndSplineSet -Validated: 1 -EndChar - -StartChar: sigma1 -Encoding: 962 962 1014 -Width: 942 -VWidth: 0 -Flags: W -HStem: 799 102<471 815> -VStem: 129 164<262 646> 651 180<-313 -69> -LayerCount: 2 -Fore -SplineSet -815 901 m 1,0,-1 - 815 799 l 1,1,2 - 572 798 572 798 473 760 c 0,3,4 - 378 723 378 723 340 659 c 0,5,6 - 294 580 294 580 294 480 c 0,7,8 - 294 477 294 477 293 475 c 0,9,10 - 294 378 294 378 312 320 c 0,11,12 - 330 260 330 260 361 222.5 c 128,-1,13 - 392 185 392 185 432.5 157 c 128,-1,14 - 473 129 473 129 517.5 110.5 c 128,-1,15 - 562 92 562 92 606.5 74.5 c 128,-1,16 - 651 57 651 57 691.5 35 c 128,-1,17 - 732 13 732 13 763 -16 c 0,18,19 - 831 -80 831 -80 831 -203 c 0,20,21 - 831 -296 831 -296 760 -348 c 0,22,23 - 705 -388 705 -388 631 -414 c 1,24,-1 - 604 -307 l 1,25,26 - 622 -296 622 -296 629 -290 c 0,27,28 - 651 -271 651 -271 651 -201 c 128,-1,29 - 651 -131 651 -131 622 -87.5 c 128,-1,30 - 593 -44 593 -44 547 -19 c 128,-1,31 - 501 6 501 6 445.5 28.5 c 128,-1,32 - 390 51 390 51 334.5 81.5 c 128,-1,33 - 279 112 279 112 233 155 c 128,-1,34 - 187 198 187 198 158 275.5 c 128,-1,35 - 129 353 129 353 129 459 c 128,-1,36 - 129 565 129 565 158 641.5 c 128,-1,37 - 187 718 187 718 240 768 c 0,38,39 - 294 818 294 818 380 848 c 0,40,41 - 533 901 533 901 805 901 c 0,42,43 - 810 901 810 901 815 901 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: theta -Encoding: 952 952 1015 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<422 651> 627 102<285 776> 1270 102<422 650> -VStem: 121 164<315 627 729 1037> 776 164<299 627 729 1052> -LayerCount: 2 -Fore -SplineSet -940 676 m 0,0,1 - 940 522 940 522 920.5 404 c 128,-1,2 - 901 286 901 286 865 206 c 0,3,4 - 830 126 830 126 776 75 c 0,5,6 - 676 -20 676 -20 512 -20 c 0,7,8 - 390 -20 390 -20 294 76 c 0,9,10 - 122 250 122 250 122 676 c 0,11,12 - 122 1102 122 1102 294 1276 c 0,13,14 - 389 1372 389 1372 512 1372 c 0,15,16 - 763 1372 763 1372 865 1146 c 0,17,18 - 940 979 940 979 940 676 c 0,0,1 -776 627 m 1,19,-1 - 285 627 l 1,20,21 - 292 318 292 318 364 195 c 0,22,23 - 462 98 462 98 543 82 c 1,24,25 - 769 82 769 82 776 627 c 1,19,-1 -285 729 m 1,26,-1 - 776 729 l 1,27,28 - 695 1176 695 1176 543 1270 c 1,29,30 - 360 1270 360 1270 308 990 c 0,31,32 - 288 882 288 882 285 729 c 1,26,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: lambda -Encoding: 955 955 1016 -Width: 880 -VWidth: 0 -Flags: W -HStem: 0 43G<45 209 685 864> 1311 41G<207 384> -LayerCount: 2 -Fore -SplineSet -369 1352 m 9,0,-1 - 864 0 l 1,1,-1 - 700 0 l 1,2,-1 - 446 696 l 1,3,-1 - 195 0 l 1,4,-1 - 45 0 l 1,5,-1 - 373 901 l 1,6,-1 - 207 1350 l 1,7,-1 - 369 1352 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: chi -Encoding: 967 967 1017 -Width: 833 -VWidth: 0 -Flags: W -HStem: 0 43<8 213 625 829> 860 41<66 268 569 772> -LayerCount: 2 -Fore -Refer: 23 120 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni037E -Encoding: 894 894 1018 -Width: 356 -VWidth: 0 -Flags: W -HStem: -203 367<141 175> 614 164<92 256> -VStem: 92 164<614 778> 98 147<-48 164> -LayerCount: 2 -Fore -Refer: 64 59 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Alphatonos -Encoding: 902 902 1019 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1255 387 1393 41<546 756> -VStem: 74 350 -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 0 0 2 -Refer: 971 913 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Epsilontonos -Encoding: 904 904 1020 -Width: 1363 -VWidth: 0 -Flags: W -HStem: 0 102<594 1280> 799 102<594 1063> 1255 387 1331 102<594 1247> -VStem: 74 350 420 174<102 799 901 1331> -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 0 0 2 -Refer: 974 917 N 1 0 0 1 246 0 2 -Validated: 1 -EndChar - -StartChar: Etatonos -Encoding: 905 905 1021 -Width: 1597 -VWidth: 0 -Flags: W -HStem: 0 43<420 594 1253 1427> 717 102<594 1253> 1255 387 1393 41<420 594 1253 1427> -VStem: 74 350 420 174<0 717 819 1434> 1253 174<0 717 819 1434> -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 0 0 2 -Refer: 976 919 N 1 0 0 1 246 0 2 -Validated: 1 -EndChar - -StartChar: Iotatonos -Encoding: 906 906 1022 -Width: 759 -VWidth: 0 -Flags: W -HStem: 0 43<418 592> 1255 387 1393 41<418 592> -VStem: 74 350 418 174<0 1434> -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 0 0 2 -Refer: 978 921 N 1 0 0 1 246 0 2 -Validated: 1 -EndChar - -StartChar: Omicrontonos -Encoding: 908 908 1023 -Width: 1517 -VWidth: 0 -Flags: W -HStem: -20 102<654 959> 1255 387 1352 102<633 953> -VStem: 74 350 184 174<441 1012> 1245 174<438 1009> -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 0 0 2 -Refer: 983 927 N 1 0 0 1 82 0 2 -Validated: 1 -EndChar - -StartChar: Upsilontonos -Encoding: 910 910 1024 -Width: 1320 -VWidth: 0 -Flags: W -HStem: 0 43<760 934> 1255 387 1393 41<391 596 1099 1305> -VStem: 74 350 760 174<0 709> -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 0 0 2 -Refer: 988 933 N 1 0 0 1 369 0 2 -Validated: 1 -EndChar - -StartChar: Omegatonos -Encoding: 911 911 1025 -Width: 1464 -VWidth: 0 -Flags: W -HStem: 0 102<250 403 1053 1206> 0 246<497 578 879 959> 1255 387 1352 102<557 904> -VStem: 74 350 143 174<540 1057> 403 174<102 241> 879 174<102 241> 879 328<0 102> 1139 174<540 1057> -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 0 0 2 -Refer: 991 937 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: iotadieresistonos -Encoding: 912 912 1026 -Width: 614 -VWidth: 0 -Flags: W -HStem: 0 43<225 389> 860 41<225 389> 1079 387 1085 178<-61 102 512 676> -VStem: -61 164<1085 1264> 176 350 225 164<0 901> 512 164<1085 1264> -LayerCount: 2 -Fore -Refer: 996 901 N 1 0 0 1 -115 -184 2 -Refer: 1002 953 N 1 0 0 1 102 0 2 -Validated: 1 -EndChar - -StartChar: Iotadieresis -Encoding: 938 938 1027 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 346> 1393 41<172 346> 1516 178<-6 158 362 526> -VStem: -6 164<1516 1694> 172 174<0 1434> 362 164<1516 1694> -LayerCount: 2 -Fore -Refer: 151 207 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Upsilondieresis -Encoding: 939 939 1028 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<391 565> 1393 41<23 228 731 936> 1516 178<209 373 578 741> -VStem: 209 164<1516 1694> 391 174<0 709> 578 164<1516 1694> -LayerCount: 2 -Fore -Refer: 272 376 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: alphatonos -Encoding: 940 940 1029 -Width: 1126 -VWidth: 0 -Flags: W -HStem: -20 102<418 735 920 1040> 819 102<404 664> 860 41<733 897> 1090 387 -VStem: 90 164<253 648> 461 350 733 164<134 750 860 901> 1040 70<91 131> -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 387 -166 2 -Refer: 998 945 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: epsilontonos -Encoding: 941 941 1030 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<290 614> 451 102<330 578> 819 102<310 611> 1090 387 -VStem: 61 164<145 379> 111 164<604 783> 324 350 -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 250 -166 2 -Refer: 1000 949 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: etatonos -Encoding: 942 942 1031 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 311> 819 102<385 697> 860 41<147 311> 1090 387 -VStem: 147 164<0 756 870 901> 430 350 784 164<-408 717> -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 356 -166 2 -Refer: 1001 951 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: iotatonos -Encoding: 943 943 1032 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1090 387 -VStem: 57 350 123 164<0 901> -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 -16 -166 2 -Refer: 1002 953 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: upsilondieresistonos -Encoding: 944 944 1033 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<394 659> 860 41<129 293 764 928> 1079 387 1085 178<160 324 733 897> -VStem: 129 164<195 901> 160 164<1085 1264> 397 350 733 164<1085 1264> 764 164<212 901> -LayerCount: 2 -Fore -Refer: 996 901 N 1 0 0 1 106 -184 2 -Refer: 1011 965 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: iotadieresis -Encoding: 970 970 1034 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 287> 860 41<123 287> 1087 178<-61 102 307 471> -VStem: -61 164<1087 1266> 123 164<0 901> 307 164<1087 1266> -CounterMasks: 1 1c -LayerCount: 2 -Fore -Refer: 344 168 S 1 0 0 1 -74 -182 2 -Refer: 1002 953 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: upsilondieresis -Encoding: 971 971 1035 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<394 659> 860 41<129 293 764 928> 1087 178<264 428 633 797> -VStem: 129 164<195 901> 264 164<1087 1266> 633 164<1087 1266> 764 164<212 901> -LayerCount: 2 -Fore -Refer: 344 168 N 1 0 0 1 252 -182 2 -Refer: 1011 965 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: omicrontonos -Encoding: 972 972 1036 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 673> 819 102<404 673> 1090 387 -VStem: 90 164<231 648> 446 350 807 164<241 660> -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 373 -166 2 -Refer: 1006 959 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: upsilontonos -Encoding: 973 973 1037 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<394 659> 860 41<129 293 764 928> 1090 387 -VStem: 129 164<195 901> 438 350 764 164<212 901> -LayerCount: 2 -Fore -Refer: 1011 965 N 1 0 0 1 0 0 2 -Refer: 995 900 N 1 0 0 1 365 -166 2 -Validated: 1 -EndChar - -StartChar: uni037A -Encoding: 890 890 1038 -Width: 442 -VWidth: 0 -Flags: W -HStem: -430 53<222 275> -VStem: 102 113<-376 -55> 283 57<-375 -301> -LayerCount: 2 -Fore -SplineSet -215 -254 m 2,0,1 - 215 -377 215 -377 242 -377 c 0,2,3 - 283 -377 283 -377 283 -301 c 1,4,-1 - 340 -301 l 1,5,6 - 340 -364 340 -364 311 -397 c 128,-1,7 - 282 -430 282 -430 228 -430 c 128,-1,8 - 174 -430 174 -430 138 -391.5 c 128,-1,9 - 102 -353 102 -353 102 -262 c 2,10,-1 - 102 -55 l 1,11,-1 - 215 -55 l 1,12,-1 - 215 -254 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: zeta -Encoding: 950 950 1039 -Width: 942 -VWidth: 0 -Flags: W -HStem: -10 109<368 624> 1249 102<152 649> -VStem: 129 164<193 671> 651 180<-276 -34> -LayerCount: 2 -Fore -SplineSet -465 94 m 1,0,-1 - 578 98 l 1,1,2 - 663 98 663 98 743 28 c 0,3,4 - 830 -49 830 -49 831 -205 c 0,5,6 - 831 -299 831 -299 732 -347 c 0,7,8 - 651 -387 651 -387 571 -399 c 1,9,-1 - 563 -291 l 1,10,11 - 568 -289 568 -289 583 -285 c 128,-1,12 - 598 -281 598 -281 607 -276.5 c 128,-1,13 - 616 -272 616 -272 628 -263 c 0,14,15 - 652 -245 652 -245 652 -191 c 0,16,17 - 652 -135 652 -135 641 -94 c 0,18,19 - 632 -55 632 -55 612 -38 c 0,20,21 - 580 -10 580 -10 532 -10 c 1,22,-1 - 408 -16 l 1,23,24 - 250 -16 250 -16 187 109 c 0,25,26 - 129 225 129 225 129 452 c 128,-1,27 - 129 679 129 679 268 880 c 128,-1,28 - 407 1081 407 1081 649 1249 c 1,29,-1 - 152 1249 l 1,30,-1 - 152 1352 l 1,31,-1 - 862 1352 l 1,32,-1 - 862 1264 l 1,33,34 - 644 1139 644 1139 472 915 c 0,35,36 - 391 809 391 809 342 689 c 128,-1,37 - 293 569 293 569 293 428 c 128,-1,38 - 293 287 293 287 337.5 190.5 c 128,-1,39 - 382 94 382 94 465 94 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: xi -Encoding: 958 958 1040 -Width: 987 -VWidth: 0 -Flags: W -HStem: -20 102<404 629> -12 111<517 699> 696 102<462 651> 1249 102<37 268 427 834> -VStem: 135 164<212 545> 184 164<920 1170> 725 180<-276 -33> -LayerCount: 2 -Fore -SplineSet -610 -12 m 1,0,-1 - 516 -20 l 1,1,2 - 306 -20 306 -20 195 169 c 0,3,4 - 135 272 135 272 135 379 c 0,5,6 - 135 470 135 470 167 557 c 0,7,8 - 227 719 227 719 322 758 c 1,9,10 - 259 792 259 792 221.5 896 c 128,-1,11 - 184 1000 184 1000 184 1063 c 0,12,13 - 184 1168 184 1168 268 1249 c 1,14,-1 - 37 1249 l 1,15,-1 - 37 1352 l 1,16,-1 - 834 1352 l 1,17,-1 - 834 1249 l 1,18,-1 - 535 1249 l 2,19,20 - 463 1249 463 1249 405.5 1186 c 128,-1,21 - 348 1123 348 1123 348 1063 c 0,22,23 - 348 1006 348 1006 375 954 c 0,24,25 - 402 900 402 900 429 870 c 0,26,27 - 491 799 491 799 591 799 c 0,28,29 - 592 799 592 799 594 799 c 2,30,-1 - 651 799 l 1,31,-1 - 651 696 l 1,32,-1 - 580 696 l 2,33,34 - 495 696 495 696 428.5 643.5 c 128,-1,35 - 362 591 362 591 330.5 520 c 128,-1,36 - 299 449 299 449 299 401.5 c 128,-1,37 - 299 354 299 354 305.5 319.5 c 128,-1,38 - 312 285 312 285 328.5 242.5 c 128,-1,39 - 345 200 345 200 368.5 165 c 128,-1,40 - 392 130 392 130 430.5 106 c 128,-1,41 - 469 82 469 82 514 82 c 1,42,-1 - 651 98 l 1,43,44 - 764 98 764 98 846 -6 c 0,45,46 - 905 -82 905 -82 905 -203 c 0,47,48 - 905 -298 905 -298 806 -347 c 0,49,50 - 725 -387 725 -387 645 -399 c 1,51,-1 - 637 -291 l 1,52,53 - 642 -289 642 -289 657 -285 c 128,-1,54 - 672 -281 672 -281 681 -276.5 c 128,-1,55 - 690 -272 690 -272 702 -263 c 0,56,57 - 726 -245 726 -245 726 -191 c 0,58,59 - 726 -134 726 -134 716 -94 c 0,60,61 - 706 -56 706 -56 688 -39 c 0,62,63 - 658 -12 658 -12 610 -12 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: phi -Encoding: 966 966 1041 -Width: 1271 -VWidth: 0 -Flags: W -HStem: -16 102<451 555 719 850> 819 102<772 934> -VStem: 90 164<270 649> 555 164<-410 -13 92 758> 1022 164<260 695> -LayerCount: 2 -Fore -SplineSet -719 86 m 1,0,1 - 857 103 857 103 939.5 202.5 c 128,-1,2 - 1022 302 1022 302 1022 457.5 c 128,-1,3 - 1022 613 1022 613 973.5 716 c 128,-1,4 - 925 819 925 819 844 819 c 0,5,6 - 789 819 789 819 754 742 c 128,-1,7 - 719 665 719 665 719 494 c 2,8,-1 - 719 86 l 1,0,1 -379 758 m 1,9,10 - 254 652 254 652 254 451 c 0,11,12 - 254 309 254 309 334.5 214.5 c 128,-1,13 - 415 120 415 120 555 92 c 1,14,-1 - 555 494 l 2,15,16 - 555 709 555 709 629.5 815.5 c 128,-1,17 - 704 922 704 922 846 922 c 128,-1,18 - 988 922 988 922 1087 796 c 128,-1,19 - 1186 670 1186 670 1186 453 c 128,-1,20 - 1186 236 1186 236 1066.5 118.5 c 128,-1,21 - 947 1 947 1 719 -16 c 1,22,-1 - 719 -410 l 1,23,-1 - 555 -410 l 1,24,-1 - 555 -16 l 1,25,26 - 336 4 336 4 213 128 c 128,-1,27 - 90 252 90 252 90 451 c 0,28,29 - 90 590 90 590 152 698 c 128,-1,30 - 214 806 214 806 315 866 c 1,31,-1 - 379 758 l 1,9,10 -EndSplineSet -Validated: 1 -EndChar - -StartChar: psi -Encoding: 968 968 1042 -Width: 1261 -VWidth: 0 -Flags: W -HStem: -18 111<457 555 719 801> 860 41G<129 293 555 719 969 1133> -VStem: 129 164<284 901> 555 164<-410 -13 92 901> 969 164<289 901> -LayerCount: 2 -Fore -SplineSet -293 901 m 1,0,-1 - 293 522 l 2,1,2 - 293 339 293 339 364 230 c 128,-1,3 - 435 121 435 121 555 92 c 1,4,-1 - 555 901 l 1,5,-1 - 719 901 l 1,6,-1 - 719 92 l 1,7,8 - 825 124 825 124 897 234.5 c 128,-1,9 - 969 345 969 345 969 522 c 2,10,-1 - 969 901 l 1,11,-1 - 1133 901 l 1,12,-1 - 1133 522 l 2,13,14 - 1132 173 1132 173 878 40 c 0,15,16 - 806 2 806 2 719 -12 c 1,17,-1 - 719 -410 l 1,18,-1 - 555 -410 l 1,19,-1 - 555 -18 l 1,20,21 - 368 -2 368 -2 253 120 c 0,22,23 - 129 251 129 251 129 522 c 2,24,-1 - 129 901 l 1,25,-1 - 293 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: omega -Encoding: 969 969 1043 -Width: 1445 -VWidth: 0 -Flags: W -HStem: -20 102<356 564 886 1094> 860 41G<206 399 1051 1244> -VStem: 90 164<206 704> 643 164<191 762> 1196 164<206 704> -CounterMasks: 1 38 -LayerCount: 2 -Fore -SplineSet -807 596 m 2,0,1 - 807 318 807 318 847.5 200 c 128,-1,2 - 888 82 888 82 985 82 c 128,-1,3 - 1082 82 1082 82 1139 181 c 128,-1,4 - 1196 280 1196 280 1196 451 c 0,5,6 - 1196 555 1196 555 1178.5 616.5 c 128,-1,7 - 1161 678 1161 678 1150.5 709.5 c 128,-1,8 - 1140 741 1140 741 1122 776 c 128,-1,9 - 1104 811 1104 811 1095.5 827 c 128,-1,10 - 1087 843 1087 843 1069.5 871 c 128,-1,11 - 1052 899 1052 899 1051 901 c 1,12,-1 - 1219 901 l 1,13,14 - 1221 898 1221 898 1246 863.5 c 128,-1,15 - 1271 829 1271 829 1279.5 815 c 128,-1,16 - 1288 801 1288 801 1308 759 c 128,-1,17 - 1328 717 1328 717 1336 680 c 0,18,19 - 1360 569 1360 569 1360 451 c 0,20,21 - 1360 228 1360 228 1266 104 c 128,-1,22 - 1172 -20 1172 -20 987.5 -20 c 128,-1,23 - 803 -20 803 -20 725 111 c 1,24,25 - 647 -20 647 -20 462.5 -20 c 128,-1,26 - 278 -20 278 -20 184 104 c 128,-1,27 - 90 228 90 228 90 451 c 0,28,29 - 90 682 90 682 170 815 c 0,30,31 - 178 829 178 829 203.5 863.5 c 128,-1,32 - 229 898 229 898 231 901 c 1,33,-1 - 399 901 l 1,34,35 - 398 899 398 899 380.5 871 c 128,-1,36 - 363 843 363 843 354.5 827 c 128,-1,37 - 346 811 346 811 328 776 c 128,-1,38 - 310 741 310 741 299.5 709.5 c 128,-1,39 - 289 678 289 678 277 636 c 0,40,41 - 254 556 254 556 254 451 c 0,42,43 - 254 280 254 280 311 181 c 128,-1,44 - 368 82 368 82 465 82 c 128,-1,45 - 562 82 562 82 602.5 200 c 128,-1,46 - 643 318 643 318 643 596 c 2,47,-1 - 643 762 l 1,48,-1 - 807 762 l 1,49,-1 - 807 596 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: omegatonos -Encoding: 974 974 1044 -Width: 1445 -VWidth: 0 -Flags: W -HStem: -20 102<356 564 886 1094> 860 41<206 399 1051 1244> 1090 387 -VStem: 90 164<206 704> 618 350 643 164<191 762> 1196 164<206 704> -LayerCount: 2 -Fore -Refer: 995 900 N 1 0 0 1 545 -166 2 -Refer: 1043 969 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: dagger -Encoding: 8224 8224 1045 -Width: 886 -VWidth: 0 -Flags: W -HStem: 0 43G<434 451> 1311 41G<401 485> -VStem: 377 133<244 597> 410 68<679 965> -LayerCount: 2 -Fore -SplineSet -477 967 m 17,0,-1 - 510 309 l 1,1,-1 - 442 0 l 1,2,-1 - 377 311 l 1,3,-1 - 410 965 l 1,4,-1 - 156 932 l 1,5,-1 - 90 997 l 1,6,-1 - 156 1065 l 1,7,-1 - 410 1032 l 1,8,-1 - 377 1286 l 1,9,-1 - 442 1352 l 1,10,-1 - 510 1286 l 1,11,-1 - 477 1032 l 1,12,-1 - 731 1065 l 1,13,-1 - 797 999 l 1,14,-1 - 731 934 l 1,15,-1 - 477 967 l 17,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: daggerdbl -Encoding: 8225 8225 1046 -Width: 886 -VWidth: 0 -Flags: W -HStem: 2 43G<402 485> 1311 41G<401 485> -LayerCount: 2 -Fore -SplineSet -510 676 m 25,0,-1 - 477 389 l 1,1,-1 - 731 422 l 1,2,-1 - 797 356 l 1,3,-1 - 731 289 l 1,4,-1 - 477 322 l 1,5,-1 - 510 68 l 1,6,-1 - 444 2 l 1,7,-1 - 377 68 l 1,8,-1 - 410 322 l 1,9,-1 - 156 289 l 1,10,-1 - 90 354 l 1,11,-1 - 156 420 l 1,12,-1 - 410 387 l 1,13,-1 - 377 678 l 1,14,-1 - 410 965 l 1,15,-1 - 156 932 l 1,16,-1 - 90 997 l 1,17,-1 - 156 1065 l 1,18,-1 - 410 1032 l 1,19,-1 - 377 1286 l 1,20,-1 - 442 1352 l 1,21,-1 - 510 1286 l 1,22,-1 - 477 1032 l 1,23,-1 - 731 1065 l 1,24,-1 - 797 999 l 1,25,-1 - 731 934 l 1,26,-1 - 477 967 l 1,27,-1 - 510 676 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: perthousand -Encoding: 8240 8240 1047 -Width: 1601 -VWidth: 0 -Flags: W -HStem: 156 109<702 871 1214 1383> 473 109<702 871 1214 1383> 729 109<211 379> 1047 109<211 379> -VStem: 82 109<858 1026> 399 109<858 1026> 573 109<284 453> 891 109<284 453> 1085 109<284 453> 1403 109<284 453> -LayerCount: 2 -Fore -SplineSet -1194 369 m 128,-1,1 - 1194 326 1194 326 1224.5 295 c 128,-1,2 - 1255 264 1255 264 1298 264 c 128,-1,3 - 1341 264 1341 264 1372 295 c 128,-1,4 - 1403 326 1403 326 1403 369 c 128,-1,5 - 1403 412 1403 412 1372 442.5 c 128,-1,6 - 1341 473 1341 473 1298 473 c 128,-1,7 - 1255 473 1255 473 1224.5 442.5 c 128,-1,0 - 1194 412 1194 412 1194 369 c 128,-1,1 -1085 369 m 128,-1,9 - 1085 458 1085 458 1147 520 c 128,-1,10 - 1209 582 1209 582 1298 582 c 128,-1,11 - 1387 582 1387 582 1449 520 c 128,-1,12 - 1511 458 1511 458 1511 369 c 128,-1,13 - 1511 280 1511 280 1449 218 c 128,-1,14 - 1387 156 1387 156 1298 156 c 128,-1,15 - 1209 156 1209 156 1147 218 c 128,-1,8 - 1085 280 1085 280 1085 369 c 128,-1,9 -682 369 m 128,-1,17 - 682 326 682 326 712.5 295 c 128,-1,18 - 743 264 743 264 786 264 c 128,-1,19 - 829 264 829 264 860 295 c 128,-1,20 - 891 326 891 326 891 369 c 128,-1,21 - 891 412 891 412 860 442.5 c 128,-1,22 - 829 473 829 473 786 473 c 128,-1,23 - 743 473 743 473 712.5 442.5 c 128,-1,16 - 682 412 682 412 682 369 c 128,-1,17 -573 369 m 128,-1,25 - 573 458 573 458 635 520 c 128,-1,26 - 697 582 697 582 786 582 c 128,-1,27 - 875 582 875 582 937 520 c 128,-1,28 - 999 458 999 458 999 369 c 128,-1,29 - 999 280 999 280 937 218 c 128,-1,30 - 875 156 875 156 786 156 c 128,-1,31 - 697 156 697 156 635 218 c 128,-1,24 - 573 280 573 280 573 369 c 128,-1,25 -190 942 m 128,-1,33 - 190 899 190 899 221 868.5 c 128,-1,34 - 252 838 252 838 295 838 c 128,-1,35 - 338 838 338 838 368.5 868.5 c 128,-1,36 - 399 899 399 899 399 942 c 128,-1,37 - 399 985 399 985 368.5 1016 c 128,-1,38 - 338 1047 338 1047 295 1047 c 128,-1,39 - 252 1047 252 1047 221 1016 c 128,-1,32 - 190 985 190 985 190 942 c 128,-1,33 -82 942 m 128,-1,41 - 82 1031 82 1031 144 1093 c 128,-1,42 - 206 1155 206 1155 295 1155 c 128,-1,43 - 384 1155 384 1155 446 1093 c 128,-1,44 - 508 1031 508 1031 508 942 c 128,-1,45 - 508 853 508 853 446 791 c 128,-1,46 - 384 729 384 729 295 729 c 128,-1,47 - 206 729 206 729 144 791 c 128,-1,40 - 82 853 82 853 82 942 c 128,-1,41 -82 264 m 1,48,-1 - 842 1047 l 1,49,-1 - 999 1047 l 1,50,-1 - 240 264 l 1,51,-1 - 82 264 l 1,48,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tilde -Encoding: 732 732 1048 -Width: 729 -VWidth: 0 -Flags: W -HStem: 1270 117<357 556> 1335 117<173 372> -VStem: 82 84<1270 1320> 563 84<1402 1452> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 942 0 2 -Validated: 1 -EndChar - -StartChar: trademark -Encoding: 8482 8482 1049 -Width: 1476 -VWidth: 0 -Flags: W -HStem: 1305 47<74 328 416 674> -VStem: 328 88<705 1305> 733 86<705 1200> 1286 86<705 1200> -LayerCount: 2 -Fore -SplineSet -819 1200 m 1,0,-1 - 819 705 l 1,1,-1 - 733 705 l 1,2,-1 - 733 1352 l 1,3,-1 - 819 1352 l 1,4,-1 - 1053 899 l 1,5,-1 - 1286 1352 l 1,6,-1 - 1372 1352 l 1,7,-1 - 1372 705 l 1,8,-1 - 1286 705 l 1,9,-1 - 1286 1200 l 1,10,-1 - 1053 752 l 1,11,-1 - 819 1200 l 1,0,-1 -74 1352 m 1,12,-1 - 674 1352 l 1,13,-1 - 674 1305 l 1,14,-1 - 416 1305 l 1,15,-1 - 416 705 l 1,16,-1 - 328 705 l 1,17,-1 - 328 1305 l 1,18,-1 - 74 1305 l 1,19,-1 - 74 1352 l 1,12,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: notequal -Encoding: 8800 8800 1050 -Width: 708 -VWidth: 0 -Flags: W -HStem: 0 43G<86 226> 348 102<82 227 391 627> 573 102<82 317 481 627> -VStem: 82 545<348 451 573 676> -LayerCount: 2 -Fore -SplineSet -227 348 m 1,0,-1 - 82 348 l 1,1,-1 - 82 451 l 1,2,-1 - 268 451 l 1,3,-1 - 317 573 l 1,4,-1 - 82 573 l 1,5,-1 - 82 676 l 1,6,-1 - 358 676 l 1,7,-1 - 500 1024 l 1,8,-1 - 623 1024 l 1,9,-1 - 481 676 l 1,10,-1 - 627 676 l 1,11,-1 - 627 573 l 1,12,-1 - 440 573 l 1,13,-1 - 391 451 l 1,14,-1 - 627 451 l 1,15,-1 - 627 348 l 1,16,-1 - 350 348 l 1,17,-1 - 209 0 l 1,18,-1 - 86 0 l 1,19,-1 - 227 348 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: infinity -Encoding: 8734 8734 1051 -Width: 1699 -VWidth: 0 -Flags: W -HStem: 127 102<325 557 1143 1375> 795 102<325 557 1143 1375> -VStem: 61 174<330 694> 1464 174<330 694> -LayerCount: 2 -Fore -SplineSet -1091 319 m 0,0,1 - 1174 229 1174 229 1249.5 229 c 128,-1,2 - 1325 229 1325 229 1374.5 271.5 c 128,-1,3 - 1424 314 1424 314 1444 375.5 c 128,-1,4 - 1464 437 1464 437 1464 512 c 128,-1,5 - 1464 587 1464 587 1444 648.5 c 128,-1,6 - 1424 710 1424 710 1374.5 752.5 c 128,-1,7 - 1325 795 1325 795 1269 795 c 128,-1,8 - 1213 795 1213 795 1175.5 776 c 128,-1,9 - 1138 757 1138 757 1097 711 c 0,10,11 - 1040 648 1040 648 996 582.5 c 128,-1,12 - 952 517 952 517 948 512 c 1,13,14 - 1047 367 1047 367 1091 319 c 0,0,1 -1253 897 m 0,15,16 - 1427 897 1427 897 1532.5 799 c 128,-1,17 - 1638 701 1638 701 1638 512 c 128,-1,18 - 1638 323 1638 323 1532.5 225 c 128,-1,19 - 1427 127 1427 127 1253 127 c 0,20,21 - 1168 127 1168 127 1091.5 162 c 128,-1,22 - 1015 197 1015 197 961 247 c 128,-1,23 - 907 297 907 297 850 371 c 1,24,25 - 763 257 763 257 666 192 c 128,-1,26 - 569 127 569 127 446 127 c 0,27,28 - 272 127 272 127 166.5 225 c 128,-1,29 - 61 323 61 323 61 512 c 128,-1,30 - 61 701 61 701 166.5 799 c 128,-1,31 - 272 897 272 897 446 897 c 0,32,33 - 569 897 569 897 666 832 c 128,-1,34 - 763 767 763 767 850 653 c 1,35,36 - 907 727 907 727 961 777 c 128,-1,37 - 1015 827 1015 827 1091.5 862 c 128,-1,38 - 1168 897 1168 897 1253 897 c 0,15,16 -752 512 m 1,39,40 - 653 658 653 658 607 707 c 0,41,42 - 524 795 524 795 457.5 795 c 128,-1,43 - 391 795 391 795 349.5 771 c 128,-1,44 - 308 747 308 747 284 706 c 128,-1,45 - 260 665 260 665 248 616 c 128,-1,46 - 236 567 236 567 236 512 c 128,-1,47 - 236 457 236 457 248 408 c 128,-1,48 - 260 359 260 359 284 318 c 0,49,50 - 336 229 336 229 446 229 c 0,51,52 - 447 229 447 229 448 229 c 0,53,54 - 529 229 529 229 604 314 c 0,55,56 - 667 385 667 385 708 446.5 c 128,-1,57 - 749 508 749 508 752 512 c 1,39,40 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni026A -Encoding: 618 618 1052 -Width: 507 -VWidth: 0 -Flags: W -HStem: 0 102<90 172 336 418> 799 102<90 172 336 418> -VStem: 90 328<0 102 799 901> -AnchorPoint: "cedilla" 264 0 basechar 0 -AnchorPoint: "bottom" 260 0 basechar 0 -AnchorPoint: "top" 256 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -90 901 m 1,0,-1 - 418 901 l 1,1,-1 - 418 799 l 1,2,-1 - 336 799 l 1,3,-1 - 336 102 l 1,4,-1 - 418 102 l 1,5,-1 - 418 0 l 1,6,-1 - 90 0 l 1,7,-1 - 90 102 l 1,8,-1 - 172 102 l 1,9,-1 - 172 799 l 1,10,-1 - 90 799 l 1,11,-1 - 90 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0298 -Encoding: 664 664 1053 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 649 178<635 799> 1352 102<551 871> -VStem: 102 174<441 1012> 635 164<649 827> 1163 174<438 1009> -LayerCount: 2 -Fore -Refer: 347 183 N 1 0 0 1 582 236 2 -Refer: 42 79 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni031D -Encoding: 797 797 1054 -Width: 0 -VWidth: 0 -Flags: W -HStem: -326 82<-754 -631 -549 -426> -VStem: -631 82<-244 -82> -AnchorPoint: "bottom" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --426 -326 m 1,0,-1 - -754 -326 l 1,1,-1 - -754 -244 l 1,2,-1 - -631 -244 l 1,3,-1 - -631 -82 l 1,4,-1 - -549 -82 l 1,5,-1 - -549 -244 l 1,6,-1 - -426 -244 l 1,7,-1 - -426 -326 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E06 -Encoding: 7686 7686 1055 -Width: 1116 -VWidth: 0 -Flags: W -HStem: -205 82<317 788> 0 102<348 758> 727 102<348 668> 1331 102<348 691> -VStem: 174 174<102 727 829 1331> 317 471<-205 -123> 778 174<946 1243> 864 174<216 579> -LayerCount: 2 -Fore -Refer: 495 817 N 1 0 0 1 1151 0 2 -Refer: 28 66 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E07 -Encoding: 7687 7687 1056 -Width: 1079 -VWidth: 0 -Flags: W -HStem: -205 82<305 776> -20 102<387 701> 819 102<430 702> 1311 41<139 303> -VStem: 139 164<166 678 852 1352> 305 471<-205 -123> 829 164<237 664> -LayerCount: 2 -Fore -Refer: 495 817 N 1 0 0 1 1139 0 2 -Refer: 6 98 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E14 -Encoding: 7700 7700 1057 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 655 102<348 817> 1126 102<348 1001> 1352 82<369 840> 1501 279 -VStem: 174 174<102 655 758 1126> 369 471<1352 1434> 414 276 -LayerCount: 2 -Fore -Refer: 594 58625 N 1 0 0 1 266 20 2 -Refer: 96 772 N 1 0 0 1 1202 82 2 -Refer: 591 57371 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1E15 -Encoding: 7701 7701 1058 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1126 82<285 756> 1331 387 -VStem: 90 164<256 451> 233 350 285 471<1126 1208> -LayerCount: 2 -Fore -Refer: 883 715 S 1 0 0 1 160 76 2 -Refer: 259 275 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E16 -Encoding: 7702 7702 1059 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<348 1034> 655 102<348 817> 1126 102<348 1001> 1352 82<369 840> 1501 279 -VStem: 174 174<102 655 758 1126> 369 471<1352 1434> 541 276 -LayerCount: 2 -Fore -Refer: 593 58624 S 1 0 0 1 393 20 2 -Refer: 591 57371 N 1 0 0 1 0 0 2 -Refer: 96 772 N 1 0 0 1 1202 82 2 -Validated: 1 -EndChar - -StartChar: uni1E17 -Encoding: 7703 7703 1060 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<418 733> 451 102<264 770> 819 102<404 661> 1126 82<285 756> 1331 387 -VStem: 90 164<256 451> 285 471<1126 1208> 457 350 -LayerCount: 2 -Fore -Refer: 882 714 N 1 0 0 1 383 76 2 -Refer: 259 275 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1A -Encoding: 7706 7706 1061 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -285 117<611 810> -219 117<427 626> 0 102<348 1034> 799 102<348 817> 1331 102<348 1001> -VStem: 174 174<102 799 901 1331> 336 84<-285 -234> 817 84<-153 -102> -LayerCount: 2 -Fore -Refer: 494 816 N 1 0 0 1 1217 0 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1B -Encoding: 7707 7707 1062 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -285 117<521 720> -219 117<337 535> -20 102<418 733> 451 102<264 770> 819 102<404 661> -VStem: 90 164<256 451> 246 84<-285 -234> 727 84<-153 -102> -LayerCount: 2 -Fore -Refer: 494 816 N 1 0 0 1 1126 0 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2C -Encoding: 7724 7724 1063 -Width: 514 -VWidth: 0 -Flags: W -HStem: -285 117<235 433> -219 117<50 249> 0 43<172 346> 1393 41<172 346> -VStem: -41 84<-285 -234> 172 174<0 1434> 440 84<-153 -102> -LayerCount: 2 -Fore -Refer: 494 816 N 1 0 0 1 840 0 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2D -Encoding: 7725 7725 1064 -Width: 407 -VWidth: 0 -Flags: W -HStem: -285 117<185 384> -219 117<1 200> 0 43<123 287> 860 41<123 287> 1085 164<123 287> -VStem: -90 84<-285 -234> 123 164<0 901 1085 1249> 391 84<-153 -102> -LayerCount: 2 -Fore -Refer: 494 816 N 1 0 0 1 791 0 2 -Refer: 8 105 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E34 -Encoding: 7732 7732 1065 -Width: 1243 -VWidth: 0 -Flags: W -HStem: -205 82<389 860> 0 43<174 348 1008 1233> 1393 41<174 348 967 1208> -VStem: 174 174<0 469 696 1434> 389 471<-205 -123> -LayerCount: 2 -Fore -Refer: 495 817 N 1 0 0 1 1223 0 2 -Refer: 38 75 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E35 -Encoding: 7733 7733 1066 -Width: 980 -VWidth: 0 -Flags: W -HStem: -205 82<262 733> 0 43<147 311 705 913> 860 41<652 877> 1311 41<147 311> -VStem: 147 164<0 268 477 1352> 262 471<-205 -123> -LayerCount: 2 -Fore -Refer: 495 817 N 1 0 0 1 1096 0 2 -Refer: 25 107 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E5A -Encoding: 7770 7770 1067 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -272 150<518 668> 0 43<174 348 901 1069> 655 102<348 615> 1331 102<348 757> -VStem: 174 174<0 655 758 1331> 518 150<-272 -123> 864 174<873 1217> 901 168<0 202> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1184 0 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E5B -Encoding: 7771 7771 1068 -Width: 677 -VWidth: 0 -Flags: W -HStem: -272 150<164 313> 0 43<147 311> 819 102<356 647> 860 41<147 311> -VStem: 147 164<0 774 874 901> 164 150<-272 -123> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 829 0 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E94 -Encoding: 7828 7828 1069 -Width: 1040 -VWidth: 0 -Flags: W -HStem: -205 82<303 774> 0 102<285 983> 1331 102<102 750> -VStem: 303 471<-205 -123> -LayerCount: 2 -Fore -Refer: 495 817 N 1 0 0 1 1137 0 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E95 -Encoding: 7829 7829 1070 -Width: 860 -VWidth: 0 -Flags: W -HStem: -205 82<197 668> 0 102<299 823> 799 102<74 573> -VStem: 197 471<-205 -123> -LayerCount: 2 -Fore -Refer: 495 817 N 1 0 0 1 1030 0 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E96 -Encoding: 7830 7830 1071 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -205 82<287 758> 0 43<147 311 784 948> 819 102<385 697> 1311 41<147 311> -VStem: 147 164<0 756 870 1352> 287 471<-205 -123> 784 164<0 717> -LayerCount: 2 -Fore -Refer: 495 817 N 1 0 0 1 1120 0 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni02BB -Encoding: 699 699 1072 -Width: 356 -VWidth: 0 -Flags: W -HStem: 985 367<163 197> -VStem: 92 147<985 1197> -LayerCount: 2 -Fore -Refer: 331 8216 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni02BE -Encoding: 702 702 1073 -Width: 311 -VWidth: 0 -Flags: W -HStem: 1135 74<61 143> 1438 74<61 143> -VStem: 176 74<1239 1407> -LayerCount: 2 -Fore -SplineSet -61 1208 m 1,0,1 - 108 1208 108 1208 142 1240 c 128,-1,2 - 176 1272 176 1272 176 1323 c 128,-1,3 - 176 1374 176 1374 142 1406 c 128,-1,4 - 108 1438 108 1438 61 1438 c 1,5,-1 - 61 1511 l 1,6,7 - 139 1511 139 1511 194.5 1456 c 128,-1,8 - 250 1401 250 1401 250 1323 c 128,-1,9 - 250 1245 250 1245 194.5 1190 c 128,-1,10 - 139 1135 139 1135 61 1135 c 1,11,-1 - 61 1208 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni02BF -Encoding: 703 703 1074 -Width: 311 -VWidth: 0 -Flags: W -HStem: 1135 74<168 250> 1438 74<168 250> -VStem: 61 74<1239 1407> -LayerCount: 2 -Fore -SplineSet -250 1438 m 1,0,1 - 203 1438 203 1438 169 1406 c 128,-1,2 - 135 1374 135 1374 135 1323 c 128,-1,3 - 135 1272 135 1272 169 1240 c 128,-1,4 - 203 1208 203 1208 250 1208 c 1,5,-1 - 250 1135 l 1,6,7 - 172 1135 172 1135 116.5 1190 c 128,-1,8 - 61 1245 61 1245 61 1323 c 128,-1,9 - 61 1401 61 1401 116.5 1456 c 128,-1,10 - 172 1511 172 1511 250 1511 c 1,11,-1 - 250 1438 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E22 -Encoding: 7714 7714 1075 -Width: 1351 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1008 1182> 717 102<348 1008> 1393 41<174 348 1008 1182> 1577 178<596 760> -VStem: 174 174<0 717 819 1434> 596 164<1577 1755> 1008 174<0 717 819 1434> -CounterMasks: 1 0e -LayerCount: 2 -Fore -Refer: 364 729 N 1 0 0 1 543 307 2 -Refer: 35 72 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E23 -Encoding: 7715 7715 1076 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 784 948> 819 102<385 697> 1311 41<147 311> 1475 178<147 311> -VStem: 147 164<0 756 870 1352 1475 1653> 784 164<0 717> -LayerCount: 2 -Fore -Refer: 364 729 N 1 0 0 1 94 205 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni02B0 -Encoding: 688 688 1077 -Width: 768 -VWidth: 512 -Flags: W -HStem: 1253 102<266 478> -VStem: 123 139<762 1235 1335 1614> 506 139<762 1233> -LayerCount: 2 -Fore -SplineSet -262 1206 m 1,0,-1 - 262 762 l 1,1,-1 - 123 762 l 1,2,-1 - 123 1614 l 1,3,-1 - 262 1614 l 1,4,-1 - 262 1335 l 1,5,6 - 320 1356 320 1356 367 1356 c 0,7,8 - 505 1356 505 1356 575 1284.5 c 128,-1,9 - 645 1213 645 1213 645 1077 c 2,10,-1 - 645 762 l 1,11,-1 - 506 762 l 1,12,-1 - 506 1063 l 2,13,14 - 506 1186 506 1186 472 1222 c 0,15,16 - 443 1253 443 1253 381 1253 c 128,-1,17 - 319 1253 319 1253 262 1206 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni207F -Encoding: 8319 8319 1078 -Width: 768 -VWidth: 512 -Flags: W -HStem: 1253 102<265 478> -VStem: 123 139<762 1235 1335 1343> 506 139<762 1233> -LayerCount: 2 -Fore -SplineSet -262 1206 m 1,0,-1 - 262 762 l 1,1,-1 - 123 762 l 1,2,-1 - 123 1343 l 1,3,-1 - 262 1343 l 1,4,-1 - 262 1335 l 1,5,6 - 316 1356 316 1356 367 1356 c 0,7,8 - 505 1356 505 1356 575 1284.5 c 128,-1,9 - 645 1213 645 1213 645 1077 c 2,10,-1 - 645 762 l 1,11,-1 - 506 762 l 1,12,-1 - 506 1063 l 2,13,14 - 506 1186 506 1186 472 1222 c 0,15,16 - 443 1253 443 1253 381 1253 c 128,-1,17 - 319 1253 319 1253 262 1206 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni02E3 -Encoding: 739 739 1079 -Width: 813 -VWidth: 0 -Flags: W -HStem: 762 582 -VStem: 123 567 -LayerCount: 2 -Fore -SplineSet -328 1079 m 1,0,-1 - 158 1343 l 1,1,-1 - 311 1343 l 1,2,-1 - 406 1198 l 1,3,-1 - 502 1343 l 1,4,-1 - 655 1343 l 1,5,-1 - 485 1079 l 1,6,-1 - 690 762 l 1,7,-1 - 535 762 l 1,8,-1 - 406 961 l 1,9,-1 - 279 762 l 1,10,-1 - 123 762 l 1,11,-1 - 328 1079 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01F0 -Encoding: 496 496 1080 -Width: 536 -VWidth: 0 -Flags: W -HStem: -348 102<-3 219> 860 41<252 416> 1044 387 -VStem: 94 479 252 164<-216 901> -LayerCount: 2 -Fore -Refer: 362 711 N 1 0 0 1 33 -94 2 -Refer: 111 567 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0226 -Encoding: 550 550 1081 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1577 178<569 733> -VStem: 569 164<1577 1755> -LayerCount: 2 -Fore -Refer: 364 729 N 1 0 0 1 516 307 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0227 -Encoding: 551 551 1082 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1044 178<356 520> -VStem: 94 164<178 440> 356 164<1044 1223> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 364 729 N 1 0 0 1 303 -225 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni035F -Encoding: 863 863 1083 -Width: 0 -VWidth: 0 -Flags: W -HStem: -205 82<-834 399> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --834 -123 m 1,0,-1 - 399 -123 l 1,1,-1 - 399 -205 l 1,2,-1 - -834 -205 l 1,3,-1 - -834 -123 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01F8 -Encoding: 504 504 1084 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1034 1237> 1393 41<174 375 1063 1237> 1577 387 -VStem: 174 174<0 1157> 419 350 1063 174<274 1434> -LayerCount: 2 -Fore -Refer: 883 715 N 1 0 0 1 345 322 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01F9 -Encoding: 505 505 1085 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 311 784 948> 819 102<385 697> 860 41<147 311> 1044 387 -VStem: 147 164<0 756 870 901> 261 350 784 164<0 717> -LayerCount: 2 -Fore -Refer: 883 715 N 1 0 0 1 187 -211 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E48 -Encoding: 7752 7752 1086 -Width: 1406 -VWidth: 0 -Flags: W -HStem: -205 82<449 920> 0 43<174 348 1034 1237> 1393 41<174 375 1063 1237> -VStem: 174 174<0 1157> 449 471<-205 -123> 1063 174<274 1434> -LayerCount: 2 -Fore -Refer: 495 817 N 1 0 0 1 1282 0 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E49 -Encoding: 7753 7753 1087 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -205 82<295 766> 0 43<147 311 784 948> 819 102<385 697> 860 41<147 311> -VStem: 147 164<0 756 870 901> 295 471<-205 -123> 784 164<0 717> -LayerCount: 2 -Fore -Refer: 495 817 N 1 0 0 1 1128 0 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0279 -Encoding: 633 633 1088 -Width: 743 -VWidth: 0 -Flags: W -HStem: -20 102<111 402> 0 43G<446 610> 860 41G<446 610> -VStem: 446 164<0 27 127 901> -LayerCount: 2 -Fore -SplineSet -86 160 m 1,0,1 - 127 82 127 82 246.5 82 c 128,-1,2 - 366 82 366 82 446 166 c 1,3,-1 - 446 901 l 1,4,-1 - 610 901 l 1,5,-1 - 610 0 l 1,6,-1 - 446 0 l 1,7,-1 - 446 27 l 1,8,9 - 369 -20 369 -20 267 -20 c 128,-1,10 - 165 -20 165 -20 86 8 c 1,11,-1 - 86 160 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni026C -Encoding: 620 620 1089 -Width: 790 -VWidth: 0 -Flags: W -HStem: 0 43G<303 467> 569 68<208 303 467 554> 844 57<164 298> 1311 41G<303 467> -VStem: 74 78<682 837> 303 164<0 572 637 839 881 1352> -LayerCount: 2 -Fore -SplineSet -303 881 m 5,0,-1 - 303 1352 l 1,1,-1 - 467 1352 l 1,2,-1 - 467 637 l 5,3,4 - 584 663 584 663 688 774 c 5,5,-1 - 717 735 l 5,6,7 - 613 628 613 628 560.5 603.5 c 132,-1,8 - 508 579 508 579 467 569 c 5,9,-1 - 467 0 l 1,10,-1 - 303 0 l 1,11,-1 - 303 563 l 5,12,13 - 198 578 198 578 136 635.5 c 132,-1,14 - 74 693 74 693 74 762.5 c 132,-1,15 - 74 832 74 832 119 866.5 c 132,-1,16 - 164 901 164 901 214.5 901 c 132,-1,17 - 265 901 265 901 303 881 c 5,0,-1 -303 633 m 5,18,-1 - 303 811 l 5,19,20 - 270 844 270 844 230 844 c 4,21,22 - 152 844 152 844 152 770 c 4,23,24 - 152 717 152 717 190.5 681 c 132,-1,25 - 229 645 229 645 303 633 c 5,18,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0248 -Encoding: 584 584 1090 -Width: 987 -VWidth: 0 -Flags: W -HStem: -20 102<225 556> 799 102<451 614 788 936> 1393 41G<614 788> -VStem: 614 174<147 799 901 1434> -LayerCount: 2 -Fore -SplineSet -788 487 m 2,0,1 - 788 276 788 276 763 195 c 128,-1,2 - 738 114 738 114 709 79.5 c 128,-1,3 - 680 45 680 45 630 21 c 0,4,5 - 545 -20 545 -20 378 -20 c 129,-1,6 - 211 -20 211 -20 35 72 c 1,7,-1 - 137 178 l 1,8,9 - 274 82 274 82 389 82 c 0,10,11 - 529 82 529 82 568 140 c 0,12,13 - 601 188 601 188 606 242 c 0,14,15 - 614 316 614 316 614 442 c 2,16,-1 - 614 799 l 1,17,-1 - 451 799 l 1,18,-1 - 451 901 l 1,19,-1 - 614 901 l 1,20,-1 - 614 1434 l 1,21,-1 - 788 1434 l 1,22,-1 - 788 901 l 1,23,-1 - 936 901 l 1,24,-1 - 936 799 l 1,25,-1 - 788 799 l 1,26,-1 - 788 487 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0249 -Encoding: 585 585 1091 -Width: 618 -VWidth: 0 -Flags: W -HStem: -348 102<-3 219> 348 102<82 252 416 567> 860 41G<252 416> 1085 164<252 416> -VStem: 252 164<-216 348 451 901 1085 1249> -LayerCount: 2 -Fore -SplineSet -33 -195 m 1,0,1 - 69 -246 69 -246 135 -246 c 128,-1,2 - 201 -246 201 -246 226.5 -187.5 c 128,-1,3 - 252 -129 252 -129 252 0 c 2,4,-1 - 252 348 l 1,5,-1 - 82 348 l 1,6,-1 - 82 451 l 1,7,-1 - 252 451 l 1,8,-1 - 252 901 l 1,9,-1 - 416 901 l 1,10,-1 - 416 451 l 1,11,-1 - 567 451 l 1,12,-1 - 567 348 l 1,13,-1 - 416 348 l 1,14,-1 - 416 -68 l 2,15,16 - 416 -272 416 -272 220 -332 c 0,17,18 - 168 -348 168 -348 111 -348 c 0,19,20 - -19 -348 -19 -348 -96 -256 c 1,21,-1 - 33 -195 l 1,0,1 -252 1249 m 1,22,-1 - 416 1249 l 1,23,-1 - 416 1085 l 1,24,-1 - 252 1085 l 1,25,-1 - 252 1249 l 1,22,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni023B -Encoding: 571 571 1092 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<593 974> 1352 102<556 938> -VStem: 102 174<445 1012> -AnchorPoint: "horn" 1143 1282 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "top" 717 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1249 209 m 1,0,1 - 1169 106 1169 106 1035.5 43 c 128,-1,2 - 902 -20 902 -20 742 -20 c 128,-1,3 - 582 -20 582 -20 430 74 c 1,4,-1 - 369 -41 l 1,5,-1 - 248 -41 l 1,6,-1 - 344 137 l 1,7,8 - 233 233 233 233 167.5 379 c 128,-1,9 - 102 525 102 525 102 695 c 128,-1,10 - 102 865 102 865 139 989.5 c 128,-1,11 - 176 1114 176 1114 236 1198 c 128,-1,12 - 296 1282 296 1282 375 1341 c 0,13,14 - 526 1454 526 1454 706 1454 c 128,-1,15 - 886 1454 886 1454 1024 1401 c 1,16,-1 - 1063 1475 l 1,17,-1 - 1184 1475 l 1,18,-1 - 1118 1354 l 1,19,20 - 1191 1310 1191 1310 1243 1245 c 1,21,-1 - 1090 1178 l 1,22,23 - 1066 1210 1066 1210 1051 1225 c 1,24,-1 - 494 190 l 1,25,26 - 622 82 622 82 772 82 c 0,27,28 - 1010 82 1010 82 1128 264 c 1,29,-1 - 1249 209 l 1,0,1 -416 270 m 1,30,-1 - 965 1292 l 1,31,32 - 866 1352 866 1352 754 1352 c 128,-1,33 - 642 1352 642 1352 561 1312.5 c 128,-1,34 - 480 1273 480 1273 415.5 1197 c 128,-1,35 - 351 1121 351 1121 313.5 997 c 128,-1,36 - 276 873 276 873 276 717 c 0,37,38 - 276 444 276 444 416 270 c 1,30,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni023C -Encoding: 572 572 1093 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<414 733> 819 102<404 656> -VStem: 90 164<251 648> -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "ogonek" 571 0 basechar 0 -AnchorPoint: "bottom" 569 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "top" 532 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -248 84 m 1,0,1 - 90 217 90 217 90 451 c 0,2,3 - 90 555 90 555 127 645 c 0,4,5 - 164 734 164 734 224 794 c 0,6,7 - 353 922 353 922 512 922 c 0,8,9 - 621 922 621 922 713 872 c 1,10,-1 - 754 942 l 1,11,-1 - 874 942 l 1,12,-1 - 797 811 l 1,13,14 - 853 758 853 758 893 676 c 1,15,-1 - 760 608 l 1,16,17 - 750 645 750 645 727 694 c 1,18,-1 - 399 135 l 1,19,20 - 476 82 476 82 584 82 c 0,21,22 - 733 82 733 82 809 205 c 1,23,-1 - 932 158 l 1,24,25 - 791 -20 791 -20 553 -20 c 0,26,27 - 432 -20 432 -20 336 27 c 1,28,-1 - 295 -41 l 1,29,-1 - 174 -41 l 1,30,-1 - 248 84 l 1,0,1 -322 211 m 1,31,-1 - 657 780 l 1,32,33 - 606 819 606 819 543 819 c 0,34,35 - 423 819 423 819 338.5 717 c 128,-1,36 - 254 615 254 615 254 461 c 128,-1,37 - 254 307 254 307 322 211 c 1,31,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni02B7 -Encoding: 695 695 1094 -Width: 1064 -VWidth: 0 -Flags: W -HStem: 762 582 -LayerCount: 2 -Fore -SplineSet -332 965 m 1,0,-1 - 469 1343 l 1,1,-1 - 588 1343 l 1,2,-1 - 725 965 l 1,3,-1 - 862 1343 l 1,4,-1 - 1004 1343 l 1,5,-1 - 793 762 l 1,6,-1 - 676 762 l 1,7,-1 - 532 1153 l 1,8,-1 - 389 762 l 1,9,-1 - 272 762 l 1,10,-1 - 61 1343 l 1,11,-1 - 195 1343 l 1,12,-1 - 332 965 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E42 -Encoding: 7746 7746 1095 -Width: 1626 -VWidth: 0 -Flags: W -HStem: -272 150<739 889> 0 43<174 348 1282 1456> 1393 41<174 367 1263 1456> -VStem: 174 174<0 1098> 739 150<-272 -123> 1282 174<0 1098> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1405 0 2 -Refer: 40 77 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E43 -Encoding: 7747 7747 1096 -Width: 1605 -VWidth: 0 -Flags: W -HStem: -272 150<733 883> 0 43<147 311 725 889 1303 1466> 819 102<367 664 944 1231> 860 41<147 311> -VStem: 147 164<0 766 874 901> 725 164<0 753> 733 150<-272 -123> 1303 164<0 726> -LayerCount: 2 -Fore -Refer: 487 803 N 1 0 0 1 1399 0 2 -Refer: 11 109 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uniA78D -Encoding: 42893 42893 1097 -Width: 1266 -VWidth: 0 -Flags: W -HStem: 0 21G<921 1096> 512 103<419.417 779.972> 1414 20G<123 297 921 1096> -VStem: 123 174<746.458 1434> 921 175<0 603 715.521 1434> -LayerCount: 2 -Fore -SplineSet -1096 1434 m 9,0,-1 - 1096 0 l 1,1,-1 - 921 0 l 1,2,-1 - 921 603 l 1,3,4 - 919 602 919 602 896.5 590 c 128,-1,5 - 874 578 874 578 867 574.5 c 128,-1,6 - 860 571 860 571 836.5 560 c 128,-1,7 - 813 549 813 549 799.5 544.5 c 128,-1,8 - 786 540 786 540 761 532 c 0,9,10 - 735 526 735 526 715 522 c 0,11,12 - 659 512 659 512 614 512 c 0,13,14 - 390 512 390 512 256.5 621.5 c 128,-1,15 - 123 731 123 731 123 942 c 2,16,-1 - 123 1434 l 1,17,-1 - 297 1434 l 1,18,-1 - 297 967 l 2,19,20 - 297 615 297 615 584 615 c 0,21,22 - 683 615 683 615 770.5 655 c 128,-1,23 - 858 695 858 695 921 750 c 1,24,-1 - 921 1434 l 1,25,-1 - 1096 1434 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA78B -Encoding: 42891 42891 1098 -Width: 356 -VWidth: 0 -Flags: W -HStem: 1393 41G<92 256> -VStem: 92 164<937 1434> 123 102<369 866> -LayerCount: 2 -Fore -SplineSet -256 1434 m 29,0,-1 - 225 369 l 1,1,-1 - 123 369 l 1,2,-1 - 92 1434 l 1,3,-1 - 256 1434 l 29,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA78C -Encoding: 42892 42892 1099 -Width: 335 -VWidth: 0 -Flags: W -HStem: 1024 410<123 205> -VStem: 123 82<1024 1215> -LayerCount: 2 -Fore -Refer: 56 39 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0265 -Encoding: 613 613 1100 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<417 723> 860 41G<143 307 780 944> -VStem: 143 164<204 901> 780 164<-410 33 135 901> -AnchorPoint: "cedilla" 522 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "ogonek" 514 0 basechar 0 -AnchorPoint: "top" 549 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -780 172 m 1,0,-1 - 780 901 l 1,1,-1 - 944 901 l 1,2,-1 - 944 -410 l 1,3,4 - 780 -410 l 1,5,-1 - 780 33 l 1,6,7 - 668 -20 668 -20 541 -20 c 0,8,9 - 329 -20 329 -20 236 84 c 128,-1,10 - 143 188 143 188 143 410 c 2,11,-1 - 143 901 l 1,12,-1 - 307 901 l 1,13,-1 - 307 434 l 2,14,15 - 307 227 307 227 386 150 c 0,16,17 - 456 82 456 82 571.5 82 c 128,-1,18 - 687 82 687 82 780 172 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniE04C -Encoding: 57420 57420 1101 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 117<-747 -429> -VStem: -825 76<1392 1478> -426 76<1392 1478> -AnchorPoint: "mktop" -586 1491 basemark 0 -AnchorPoint: "mktop" -586 1192 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --741 1458 m 1,0,-1 - -750 1415 l 1,1,2 - -750 1386 -750 1386 -639 1386 c 2,3,-1 - -537 1386 l 2,4,5 - -426 1386 -426 1386 -426 1415 c 1,6,-1 - -434 1458 l 1,7,8 - -434 1481 -434 1481 -407 1481 c 128,-1,9 - -380 1481 -380 1481 -365 1460.5 c 128,-1,10 - -350 1440 -350 1440 -350 1407 c 0,11,12 - -350 1349 -350 1349 -422.5 1309.5 c 128,-1,13 - -495 1270 -495 1270 -588 1270 c 128,-1,14 - -681 1270 -681 1270 -753 1309.5 c 128,-1,15 - -825 1349 -825 1349 -825 1407 c 0,16,17 - -825 1440 -825 1440 -810 1460.5 c 128,-1,18 - -795 1481 -795 1481 -768 1481 c 128,-1,19 - -741 1481 -741 1481 -741 1458 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA789 -Encoding: 42889 42889 1102 -Width: 356 -VWidth: 0 -Flags: W -HStem: 0 164<92 256> 614 164<92 256> -VStem: 92 164<0 164 614 778> -LayerCount: 2 -Fore -Refer: 63 58 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uniA78A -Encoding: 42890 42890 1103 -Width: 565 -VWidth: 0 -Flags: W -HStem: 348 102<82 483> 573 102<82 483> -VStem: 82 401<348 451 573 676> -LayerCount: 2 -Fore -SplineSet -82 676 m 1,0,-1 - 483 676 l 1,1,-1 - 483 573 l 1,2,-1 - 82 573 l 1,3,-1 - 82 676 l 1,0,-1 -82 451 m 1,4,-1 - 483 451 l 1,5,-1 - 483 348 l 1,6,-1 - 82 348 l 1,7,-1 - 82 451 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Aringacute -Encoding: 506 506 1104 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 21<39 210.268 1092.68 1264> 410 102<389 913> 1663 62<582.81 719.274> 1776 279 -VStem: 496 61<1501.43 1637.03> 574 276 745 62<1501.01 1637.45> -LayerCount: 2 -Fore -Refer: 593 58624 N 1 0 0 1 427 295 2 -Refer: 143 197 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: aringacute -Encoding: 507 507 1105 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 983 61<422 557> 1233 61<422 557> 1353 387 -VStem: 94 164<178 440> 334 61<1071 1206> 381 350 584 61<1071 1206> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1077 98 2 -Refer: 133 229 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: AEacute -Encoding: 508 508 1106 -Width: 1730 -VWidth: 0 -HStem: 0 102<960 1647> 410 102<389 786> 799 102<960 1429> 1331 103<687 786 960 1614> 1501 387 -VStem: 786 174<102 410 512 799 901 1331> 795 350 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1491 246 2 -Refer: 168 198 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: aeacute -Encoding: 509 509 1107 -Width: 1632 -VWidth: 0 -HStem: -20 102<356 690 1019 1337> 451 102<868 1374> 520 102<343 688> 819 102<304 637 1007 1266> 1071 387 -VStem: 94 164<178 440> 694 164<250 451> 754 350 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1450 -184 2 -Refer: 169 230 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uniA7AD -Encoding: 42925 42925 1108 -Width: 1209 -VWidth: 0 -Flags: W -HStem: 0 102<474 1160> 570.791 67.8438<202.471 300 474 560.49> 844 57<163.893 297.842> 1414 20G<300 474> -VStem: 74 78<682.191 837.33> 300 174<102 572.146 638.635 840.445 882.538 1434> -LayerCount: 2 -Fore -SplineSet -474 102 m 1,0,-1 - 1160 102 l 1,1,-1 - 1160 0 l 1,2,-1 - 467 0 l 1,3,-1 - 303 0 l 1,4,-1 - 300 0 l 1,5,-1 - 300 563 l 1,6,7 - 197 579 197 579 136 636 c 0,8,9 - 74 693 74 693 74 762.5 c 128,-1,10 - 74 832 74 832 119 866.5 c 128,-1,11 - 164 901 164 901 214 901 c 0,12,13 - 263 901 263 901 300 883 c 1,14,-1 - 300 1434 l 1,15,-1 - 474 1434 l 1,16,-1 - 474 639 l 1,17,18 - 587 666 587 666 688 774 c 1,19,-1 - 717 735 l 1,20,21 - 616 631 616 631 560 604 c 0,22,23 - 512 581 512 581 474 571 c 1,24,-1 - 474 102 l 1,0,-1 -300 814 m 1,25,26 - 268 844 268 844 230 844 c 0,27,28 - 152 844 152 844 152 770 c 0,29,30 - 152 716 152 716 190 681 c 128,-1,31 - 228 646 228 646 300 633 c 1,32,-1 - 300 814 l 1,25,26 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0528 -Encoding: 1320 1320 1109 -Width: 1351 -VWidth: 0 -Flags: W -HStem: -348 102<-80.541 141.057> 0 21G<1008 1182> 717 102<348 1008> 1414 20G<174 348 1008 1182> -VStem: 174 174<-185.655 717 819 1434> 1008 174<0 717 819 1434> -AnchorPoint: "top" 680 1430 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 -68 m 2,0,1 - 348 -271 348 -271 144 -332 c 0,2,3 - 90 -348 90 -348 33 -348 c 0,4,5 - -97 -348 -97 -348 -174 -256 c 1,6,-1 - -45 -195 l 1,7,8 - -9 -246 -9 -246 57 -246 c 128,-1,9 - 123 -246 123 -246 148.5 -187.5 c 128,-1,10 - 174 -129 174 -129 174 0 c 2,11,-1 - 174 1434 l 1,12,-1 - 348 1434 l 1,13,-1 - 348 819 l 1,14,-1 - 1008 819 l 1,15,-1 - 1008 1434 l 1,16,-1 - 1182 1434 l 1,17,-1 - 1182 0 l 1,18,-1 - 1008 0 l 1,19,-1 - 1008 717 l 1,20,-1 - 348 717 l 1,21,-1 - 348 -68 l 2,0,1 -EndSplineSet -Validated: 1048577 -EndChar - -StartChar: uni0529 -Encoding: 1321 1321 1110 -Width: 1054 -VWidth: 0 -Flags: W -HStem: -348 102<-131.541 90.0571> 0 21G<770 934> 440 103<287 770> 881 20G<123 287 770 934> -VStem: 123 164<-185.655 440 543 901> 770 164<0 440 543 901> -AnchorPoint: "top" 535 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 287 901 l 1,1,-1 - 287 543 l 1,2,-1 - 770 543 l 1,3,-1 - 770 901 l 1,4,-1 - 934 901 l 1,5,-1 - 934 0 l 1,6,-1 - 770 0 l 1,7,-1 - 770 440 l 1,8,-1 - 287 440 l 1,9,-1 - 287 -68 l 2,10,11 - 287 -274 287 -274 93 -332 c 0,12,13 - 39 -348 39 -348 -18 -348 c 0,14,15 - -148 -348 -148 -348 -225 -256 c 1,16,-1 - -96 -195 l 1,17,18 - -60 -246 -60 -246 6 -246 c 128,-1,19 - 72 -246 72 -246 97.5 -187.5 c 128,-1,20 - 123 -129 123 -129 123 0 c 2,21,-1 - 123 901 l 1,0,-1 -EndSplineSet -Validated: 1048577 -EndChar - -StartChar: uni052E -Encoding: 1326 1326 1111 -Width: 1448 -VWidth: 0 -Flags: W -HStem: -20 102<128.459 350.402> 0 102<1112 1175.09> 1331 103<557 938> -VStem: 383 174<142.345 1331> 938 174<102 1331> 1217 98<-315 -39.7148> -AnchorPoint: "top" 743 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1112 102 m 1,0,-1 - 1315 102 l 1,1,-1 - 1315 -315 l 1,2,-1 - 1217 -315 l 1,3,4 - 1217 -94 1217 -94 1151 0 c 1,5,-1 - 938 0 l 1,6,-1 - 938 1331 l 1,7,-1 - 557 1331 l 1,8,-1 - 557 260 l 2,9,10 - 556 57 556 57 352 -4 c 0,11,12 - 298 -20 298 -20 242 -20 c 0,13,14 - 112 -20 112 -20 35 72 c 1,15,-1 - 164 133 l 1,16,17 - 200 82 200 82 266 82 c 128,-1,18 - 332 82 332 82 357.5 140.5 c 128,-1,19 - 383 199 383 199 383 328 c 2,20,-1 - 383 1434 l 1,21,-1 - 1112 1434 l 1,22,-1 - 1112 102 l 1,0,-1 -EndSplineSet -Validated: 1048577 -EndChar - -StartChar: uni052F -Encoding: 1327 1327 1112 -Width: 1352 -VWidth: 0 -Flags: W -HStem: -20 102<154.46 376.737> 0 102<1063 1122.09> 799 102<573 899> -VStem: 410 163<142.345 799> 899 164<102 799> 1164 98<-315 -39.7148> -AnchorPoint: "top" 688 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1063 102 m 1,0,-1 - 1262 102 l 1,1,-1 - 1262 -315 l 1,2,-1 - 1164 -315 l 1,3,4 - 1164 -94 1164 -94 1098 0 c 1,5,-1 - 899 0 l 1,6,-1 - 899 799 l 1,7,-1 - 573 799 l 1,8,-1 - 573 260 l 2,9,10 - 572 56 572 56 376 -4 c 0,11,12 - 324 -20 324 -20 268 -20 c 0,13,14 - 138 -20 138 -20 61 72 c 1,15,-1 - 190 133 l 1,16,17 - 226 82 226 82 292.5 82 c 128,-1,18 - 359 82 359 82 384.5 140.5 c 128,-1,19 - 410 199 410 199 410 328 c 2,20,-1 - 410 901 l 1,21,-1 - 1063 901 l 1,22,-1 - 1063 102 l 1,0,-1 -EndSplineSet -Validated: 1048577 -EndChar -EndChars -EndSplineFont diff --git a/examples/pfennigFont/Pfennig.ttf b/examples/pfennigFont/Pfennig.ttf deleted file mode 100644 index bbbe4636d..000000000 Binary files a/examples/pfennigFont/Pfennig.ttf and /dev/null differ diff --git a/examples/pfennigFont/PfennigBold.sfd b/examples/pfennigFont/PfennigBold.sfd deleted file mode 100644 index eca66d6fe..000000000 --- a/examples/pfennigFont/PfennigBold.sfd +++ /dev/null @@ -1,29531 +0,0 @@ -SplineFontDB: 3.0 -FontName: PfennigBold -FullName: Pfennig Bold -FamilyName: Pfennig -Weight: Bold -Copyright: Copyright 2009-2012 by Daniel Johnson. Released under the terms of the SIL Open Font License. -UComments: "2009-7-16: Created." -Version: 20120410 -ItalicAngle: 0 -UnderlinePosition: -204 -UnderlineWidth: 102 -Ascent: 1638 -Descent: 410 -LayerCount: 2 -Layer: 0 0 "Back" 1 -Layer: 1 1 "Fore" 0 -NeedsXUIDChange: 1 -XUID: [1021 1003 1579404955 6722392] -FSType: 0 -OS2Version: 0 -OS2_WeightWidthSlopeOnly: 0 -OS2_UseTypoMetrics: 1 -CreationTime: 1247766582 -ModificationTime: 1334085790 -PfmFamily: 33 -TTFWeight: 700 -TTFWidth: 5 -LineGap: 0 -VLineGap: 0 -OS2TypoAscent: 2174 -OS2TypoAOffset: 0 -OS2TypoDescent: -531 -OS2TypoDOffset: 0 -OS2TypoLinegap: 0 -OS2WinAscent: 2174 -OS2WinAOffset: 0 -OS2WinDescent: 531 -OS2WinDOffset: 0 -HheadAscent: 2174 -HheadAOffset: 0 -HheadDescent: -531 -HheadDOffset: 0 -OS2FamilyClass: 2050 -OS2Vendor: 'PfEd' -Lookup: 1 0 0 "'ss01' Style Set 1 in Latin" {"'ss01' Style Set 1 in Latin-1" } ['ss01' ('latn' <'dflt' > ) ] -Lookup: 1 0 0 "'locl' Localized Forms in Sami" {"'locl' Localized Forms in Sami-1" } ['locl' ('latn' <'ISM ' > 'latn' <'LSM ' > 'latn' <'NSM ' > 'latn' <'SKS ' > ) ] -Lookup: 4 0 1 "'liga' Standard Ligatures in Latin lookup 0" {"'liga' Standard Ligatures in Latin lookup 0-1" } ['liga' ('DFLT' <'dflt' > 'latn' <'dflt' > ) ] -Lookup: 262 0 0 "'mkmk' Mark to Mark lookup 2" {"'mkmk' Mark to Mark lookup 2-1" } ['mkmk' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'latn' <'dflt' > ) ] -Lookup: 258 0 0 "'kern' Horizontal Kerning lookup 1" {"'kern' Horizontal Kerning lookup 1-1" } ['kern' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'latn' <'dflt' > ) ] -Lookup: 260 0 0 "'mark' Mark Positioning in Latin lookup 0" {"'mark' Mark Positioning in Latin lookup 0-1" } ['mark' ('DFLT' <'dflt' > 'latn' <'dflt' > ) ] -MarkAttachClasses: 1 -DEI: 91125 -KernClass2: 9 9 "'kern' Horizontal Kerning lookup 1-1" - 109 A L Agrave Aacute Acircumflex Atilde Adieresis Aring Amacron Abreve Aogonek Lacute Lcommaaccent Lcaron Lslash - 515 B C E G H I J K M N R S U X Z Ccedilla Egrave Eacute Ecircumflex Edieresis Ntilde Ugrave Uacute Ucircumflex Udieresis Cacute Ccircumflex Cdotaccent Ccaron Emacron Edotaccent Eogonek Ecaron Gcircumflex Gbreve Gdotaccent Gcommaaccent Hcircumflex Hbar Itilde Imacron Iogonek Idotaccent Jcircumflex Kcommaaccent Nacute Ncommaaccent Ncaron Eng OE Racute Rcommaaccent Rcaron Sacute Scircumflex Scedilla Scaron Utilde Umacron Ubreve Uring Uhungarumlaut Uogonek Zacute Zdotaccent Zcaron Scommaaccent uni1E02 uni1E40 uni1E60 - 115 D O Eth Ograve Oacute Ocircumflex Otilde Odieresis Oslash Thorn Dcaron Dcroat Omacron Ohungarumlaut uni01EA uni1E0A - 140 F P T V W Y Yacute Tcommaaccent Tcaron Tbar Wcircumflex Ycircumflex Ydieresis uni021A uni1E1E uni1E56 uni1E6A Wgrave Wacute Wdieresis Ygrave - 532 a c g h i j k m n q s u x z agrave aacute acircumflex atilde adieresis aring ccedilla igrave iacute icircumflex idieresis ntilde ugrave uacute ucircumflex udieresis amacron abreve aogonek cacute ccircumflex cdotaccent ccaron gcircumflex gbreve gdotaccent gcommaaccent hcircumflex hbar itilde imacron iogonek dotlessi jcircumflex kcommaaccent kgreenlandic nacute ncommaaccent ncaron eng sacute scircumflex scedilla scaron utilde umacron ubreve uring uhungarumlaut uogonek zacute zdotaccent zcaron scommaaccent uni0237 uni1E41 uni1E61 - 186 b e o p egrave eacute ecircumflex edieresis eth ograve oacute ocircumflex otilde odieresis oslash thorn emacron edotaccent eogonek ecaron omacron ohungarumlaut oe uni01EB uni1E03 uni1E57 - 153 d f l t germandbls dcaron dcroat lacute lcommaaccent lcaron lslash tcommaaccent tcaron tbar uni021B uni1E0B uni1E1F uni1E6B uniFB00 fi fl uniFB03 uniFB04 - 112 r v w y yacute ydieresis racute rcommaaccent rcaron wcircumflex ycircumflex longs wgrave wacute wdieresis ygrave - 90 A J Agrave Aacute Acircumflex Atilde Adieresis Aring AE Amacron Abreve Aogonek Jcircumflex - 531 B D E F H I K L M N P R S U X Z Egrave Eacute Ecircumflex Edieresis Igrave Iacute Icircumflex Idieresis Eth Ntilde Ugrave Uacute Ucircumflex Udieresis Thorn Dcaron Dcroat Emacron Edotaccent Eogonek Ecaron Hcircumflex Hbar Itilde Imacron Iogonek Idotaccent Kcommaaccent Lacute Lcommaaccent Lcaron Lslash Nacute Ncommaaccent Ncaron Eng Racute Rcommaaccent Rcaron Sacute Scircumflex Scedilla Scaron Utilde Umacron Ubreve Uring Uhungarumlaut Uogonek Zacute Zdotaccent Zcaron Scommaaccent uni1E02 uni1E0A uni1E1E uni1E40 uni1E56 uni1E60 - 179 C G O Q Ccedilla Ograve Oacute Ocircumflex Otilde Odieresis Oslash Cacute Ccircumflex Cdotaccent Ccaron Gcircumflex Gbreve Gdotaccent Gcommaaccent Omacron Ohungarumlaut OE uni01EA - 113 T V W Y Tcommaaccent Tcaron Tbar Wcircumflex Ycircumflex Ydieresis uni021A uni1E6A Wgrave Wacute Wdieresis Ygrave - 437 a i j m n p r s u x z agrave aacute acircumflex atilde adieresis aring ae igrave iacute icircumflex idieresis ntilde ugrave uacute ucircumflex udieresis amacron abreve aogonek itilde imacron iogonek dotlessi jcircumflex kgreenlandic nacute ncommaaccent ncaron eng racute rcommaaccent rcaron sacute scircumflex scedilla scaron utilde umacron ubreve uring uhungarumlaut uogonek zacute zdotaccent zcaron scommaaccent uni0237 uni1E41 uni1E61 - 185 b f h k l t germandbls thorn hcircumflex hbar kcommaaccent lacute lcommaaccent lcaron lslash tcommaaccent tcaron tbar longs uni021B uni1E03 uni1E1F uni1E6B uniFB00 fi fl uniFB03 uniFB04 - 279 c d e g o q ccedilla egrave eacute ecircumflex edieresis eth ograve oacute ocircumflex otilde odieresis oslash cacute ccircumflex cdotaccent ccaron dcaron dcroat emacron edotaccent eogonek ecaron gcircumflex gbreve gdotaccent gcommaaccent omacron ohungarumlaut oe uni01EB uni1E0B - 77 v w y yacute ydieresis wcircumflex ycircumflex wgrave wacute wdieresis ygrave - 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -61 {} -123 {} 0 {} 0 {} 0 {} -61 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -41 {} 0 {} 0 {} -41 {} 0 {} 0 {} 0 {} 0 {} 0 {} -164 {} 41 {} 0 {} 82 {} -41 {} 61 {} -123 {} 0 {} 0 {} 0 {} 0 {} 0 {} -123 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -164 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -123 {} 0 {} 0 {} -123 {} 0 {} 0 {} 0 {} 0 {} -TtTable: prep -PUSHW_1 - 511 -SCANCTRL -PUSHB_1 - 4 -SCANTYPE -EndTTInstrs -LangName: 1033 "" "" "" "" "" "" "" "" "" "" "" "" "" "Copyright (c) 2009, Daniel Johnson (),+AAoA-with Reserved Font Name Pfennig.+AAoACgAA-This Font Software is licensed under the SIL Open Font License, Version 1.1.+AAoA-This license is copied below, and is also available with a FAQ at:+AAoA-http://scripts.sil.org/OFL+AAoACgAK------------------------------------------------------------+AAoA-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007+AAoA------------------------------------------------------------+AAoACgAA-PREAMBLE+AAoA-The goals of the Open Font License (OFL) are to stimulate worldwide+AAoA-development of collaborative font projects, to support the font creation+AAoA-efforts of academic and linguistic communities, and to provide a free and+AAoA-open framework in which fonts may be shared and improved in partnership+AAoA-with others.+AAoACgAA-The OFL allows the licensed fonts to be used, studied, modified and+AAoA-redistributed freely as long as they are not sold by themselves. The+AAoA-fonts, including any derivative works, can be bundled, embedded, +AAoA-redistributed and/or sold with any software provided that any reserved+AAoA-names are not used by derivative works. The fonts and derivatives,+AAoA-however, cannot be released under any other type of license. The+AAoA-requirement for fonts to remain under this license does not apply+AAoA-to any document created using the fonts or their derivatives.+AAoACgAA-DEFINITIONS+AAoAIgAA-Font Software+ACIA refers to the set of files released by the Copyright+AAoA-Holder(s) under this license and clearly marked as such. This may+AAoA-include source files, build scripts and documentation.+AAoACgAi-Reserved Font Name+ACIA refers to any names specified as such after the+AAoA-copyright statement(s).+AAoACgAi-Original Version+ACIA refers to the collection of Font Software components as+AAoA-distributed by the Copyright Holder(s).+AAoACgAi-Modified Version+ACIA refers to any derivative made by adding to, deleting,+AAoA-or substituting -- in part or in whole -- any of the components of the+AAoA-Original Version, by changing formats or by porting the Font Software to a+AAoA-new environment.+AAoACgAi-Author+ACIA refers to any designer, engineer, programmer, technical+AAoA-writer or other person who contributed to the Font Software.+AAoACgAA-PERMISSION & CONDITIONS+AAoA-Permission is hereby granted, free of charge, to any person obtaining+AAoA-a copy of the Font Software, to use, study, copy, merge, embed, modify,+AAoA-redistribute, and sell modified and unmodified copies of the Font+AAoA-Software, subject to the following conditions:+AAoACgAA-1) Neither the Font Software nor any of its individual components,+AAoA-in Original or Modified Versions, may be sold by itself.+AAoACgAA-2) Original or Modified Versions of the Font Software may be bundled,+AAoA-redistributed and/or sold with any software, provided that each copy+AAoA-contains the above copyright notice and this license. These can be+AAoA-included either as stand-alone text files, human-readable headers or+AAoA-in the appropriate machine-readable metadata fields within text or+AAoA-binary files as long as those fields can be easily viewed by the user.+AAoACgAA-3) No Modified Version of the Font Software may use the Reserved Font+AAoA-Name(s) unless explicit written permission is granted by the corresponding+AAoA-Copyright Holder. This restriction only applies to the primary font name as+AAoA-presented to the users.+AAoACgAA-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font+AAoA-Software shall not be used to promote, endorse or advertise any+AAoA-Modified Version, except to acknowledge the contribution(s) of the+AAoA-Copyright Holder(s) and the Author(s) or with their explicit written+AAoA-permission.+AAoACgAA-5) The Font Software, modified or unmodified, in part or in whole,+AAoA-must be distributed entirely under this license, and must not be+AAoA-distributed under any other license. The requirement for fonts to+AAoA-remain under this license does not apply to any document created+AAoA-using the Font Software.+AAoACgAA-TERMINATION+AAoA-This license becomes null and void if any of the above conditions are+AAoA-not met.+AAoACgAA-DISCLAIMER+AAoA-THE FONT SOFTWARE IS PROVIDED +ACIA-AS IS+ACIA, WITHOUT WARRANTY OF ANY KIND,+AAoA-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF+AAoA-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT+AAoA-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE+AAoA-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,+AAoA-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL+AAoA-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING+AAoA-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM+AAoA-OTHER DEALINGS IN THE FONT SOFTWARE." "http://scripts.sil.org/OFL" -GaspTable: 1 65535 3 -Encoding: UnicodeBmp -Compacted: 1 -UnicodeInterp: none -NameList: Adobe Glyph List -DisplaySize: -48 -AntiAlias: 1 -FitToEm: 1 -WinInfo: 738 18 11 -BeginPrivate: 1 -BlueValues 35 [-20 0 901 922 1352 1352 1434 1454] -EndPrivate -Grid --90.1123 1228.8 m 17 - 2228.22 1228.8 l 9 --90.1123 1085.44 m 17 - 2228.22 1085.44 l 9 --90.1123 1433.6 m 25 - 2228.22 1433.6 l 25 --90.1123 901.12 m 17 - 2228.22 901.12 l 9 --90.1123 1351.68 m 25 - 2228.22 1351.68 l 25 -EndSplineSet -AnchorClass2: "mktop" "'mkmk' Mark to Mark lookup 2-1" "bottom" "'mark' Mark Positioning in Latin lookup 0-1" "horn" "'mark' Mark Positioning in Latin lookup 0-1" "ogonek" "'mark' Mark Positioning in Latin lookup 0-1" "cedilla" "'mark' Mark Positioning in Latin lookup 0-1" "top" "'mark' Mark Positioning in Latin lookup 0-1" -BeginChars: 65536 1089 - -StartChar: d -Encoding: 100 100 0 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -20 102<423 640> 0 43G<688 944> 819 102<423 621> 1311 41G<688 944> -VStem: 90 256<228 673> 688 256<0 4 132 737 883 1352> -AnchorPoint: "horn" 885 1085 basechar 0 -AnchorPoint: "ogonek" 864 0 basechar 0 -AnchorPoint: "cedilla" 512 0 basechar 0 -AnchorPoint: "bottom" 514 0 basechar 0 -AnchorPoint: "top" 532 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -688 883 m 1,0,-1 - 688 1352 l 1,1,-1 - 944 1352 l 1,2,-1 - 944 0 l 1,3,-1 - 688 0 l 1,4,-1 - 688 4 l 1,5,6 - 606 -20 606 -20 504 -20 c 0,7,8 - 410 -20 410 -20 331.5 17.5 c 128,-1,9 - 253 55 253 55 200.5 119.5 c 128,-1,10 - 148 184 148 184 119 269.5 c 128,-1,11 - 90 355 90 355 90 451 c 0,12,13 - 90 580 90 580 139.5 686.5 c 128,-1,14 - 189 793 189 793 285 857.5 c 128,-1,15 - 381 922 381 922 504 922 c 0,16,17 - 602 922 602 922 688 883 c 1,0,-1 -688 401 m 0,18,19 - 688 468 688 468 686 518 c 128,-1,20 - 684 568 684 568 675 628.5 c 128,-1,21 - 666 689 666 689 650 727.5 c 128,-1,22 - 634 766 634 766 605 792.5 c 128,-1,23 - 576 819 576 819 535 819 c 0,24,25 - 493 819 493 819 461 804.5 c 128,-1,26 - 429 790 429 790 408.5 761.5 c 128,-1,27 - 388 733 388 733 375 701 c 128,-1,28 - 362 669 362 669 356 623 c 128,-1,29 - 350 577 350 577 348 539 c 128,-1,30 - 346 501 346 501 346 451 c 128,-1,31 - 346 401 346 401 348 363 c 128,-1,32 - 350 325 350 325 356 279 c 128,-1,33 - 362 233 362 233 375.5 200.5 c 128,-1,34 - 389 168 389 168 409 139.5 c 128,-1,35 - 429 111 429 111 461 96.5 c 128,-1,36 - 493 82 493 82 535 82 c 0,37,38 - 570 82 570 82 595.5 91.5 c 128,-1,39 - 621 101 621 101 637.5 122.5 c 128,-1,40 - 654 144 654 144 664.5 168.5 c 128,-1,41 - 675 193 675 193 680 233 c 128,-1,42 - 685 273 685 273 686.5 309.5 c 128,-1,43 - 688 346 688 346 688 401 c 0,18,19 -EndSplineSet -Validated: 1 -EndChar - -StartChar: a -Encoding: 97 97 1 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> -VStem: 94 256<132 467> 602 256<87 518 616 771> -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 489 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -115 829 m 1,0,1 - 293 922 293 922 438 922 c 0,2,3 - 531 922 531 922 595 913.5 c 128,-1,4 - 659 905 659 905 707.5 881 c 128,-1,5 - 756 857 756 857 784 822.5 c 128,-1,6 - 812 788 812 788 829.5 727 c 128,-1,7 - 847 666 847 666 852.5 594.5 c 128,-1,8 - 858 523 858 523 858 414 c 2,9,-1 - 858 0 l 1,10,-1 - 606 0 l 1,11,12 - 553 -20 553 -20 471 -20 c 0,13,14 - 297 -20 297 -20 195.5 58.5 c 128,-1,15 - 94 137 94 137 94 311 c 0,16,17 - 94 382 94 382 118 437.5 c 128,-1,18 - 142 493 142 493 179.5 527 c 128,-1,19 - 217 561 217 561 268 583.5 c 128,-1,20 - 319 606 319 606 368.5 614.5 c 128,-1,21 - 418 623 418 623 471 623 c 0,22,23 - 528 623 528 623 596 616 c 1,24,25 - 587 728 587 728 558 773.5 c 128,-1,26 - 529 819 529 819 469 819 c 0,27,28 - 361 819 361 819 289 723 c 1,29,-1 - 115 829 l 1,0,1 -602 98 m 1,30,-1 - 602 459 l 1,31,-1 - 602 514 l 1,32,33 - 553 520 553 520 502 520 c 0,34,35 - 435 520 435 520 392.5 467 c 128,-1,36 - 350 414 350 414 350 311 c 0,37,38 - 350 202 350 202 388.5 142 c 128,-1,39 - 427 82 427 82 502 82 c 0,40,41 - 556 82 556 82 602 98 c 1,30,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: h -Encoding: 104 104 2 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403 692 948> 819 102<405 644> 1311 41G<147 403> -VStem: 147 256<0 802 907 1352> 692 256<0 720> -AnchorPoint: "horn" 856 717 basechar 0 -AnchorPoint: "ogonek" 860 0 basechar 0 -AnchorPoint: "cedilla" 532 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "top" 387 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -403 784 m 1,0,-1 - 403 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 1352 l 1,3,-1 - 403 1352 l 1,4,-1 - 403 907 l 1,5,6 - 472 922 472 922 520 922 c 0,7,8 - 736 922 736 922 842 816 c 128,-1,9 - 948 710 948 710 948 492 c 2,10,-1 - 948 0 l 1,11,-1 - 692 0 l 1,12,-1 - 692 467 l 2,13,14 - 692 608 692 608 676 686 c 128,-1,15 - 660 764 660 764 631 791.5 c 128,-1,16 - 602 819 602 819 551 819 c 0,17,18 - 471 819 471 819 403 784 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: e -Encoding: 101 101 3 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> -VStem: 90 256<235 451 553 656> -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "top" 530 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -346 451 m 1,0,1 - 346 379 346 379 352 325.5 c 128,-1,2 - 358 272 358 272 373.5 224.5 c 128,-1,3 - 389 177 389 177 415.5 147 c 128,-1,4 - 442 117 442 117 484.5 99.5 c 128,-1,5 - 527 82 527 82 584 82 c 0,6,7 - 658 82 658 82 692 112.5 c 128,-1,8 - 726 143 726 143 737 205 c 1,9,-1 - 932 158 l 1,10,11 - 867 76 867 76 770.5 28 c 128,-1,12 - 674 -20 674 -20 553 -20 c 0,13,14 - 351 -20 351 -20 220.5 109.5 c 128,-1,15 - 90 239 90 239 90 451 c 0,16,17 - 90 555 90 555 127 645 c 128,-1,18 - 164 735 164 735 224 794.5 c 128,-1,19 - 284 854 284 854 359.5 888 c 128,-1,20 - 435 922 435 922 512 922 c 0,21,22 - 615 922 615 922 699 880.5 c 128,-1,23 - 783 839 783 839 834.5 770.5 c 128,-1,24 - 886 702 886 702 914 619.5 c 128,-1,25 - 942 537 942 537 942 451 c 1,26,-1 - 346 451 l 1,0,1 -350 553 m 1,27,-1 - 684 553 l 1,28,29 - 682 616 682 616 675 660 c 128,-1,30 - 668 704 668 704 653 742.5 c 128,-1,31 - 638 781 638 781 610.5 800 c 128,-1,32 - 583 819 583 819 543 819 c 0,33,34 - 450 819 450 819 404.5 751.5 c 128,-1,35 - 359 684 359 684 350 553 c 1,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: n -Encoding: 110 110 4 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403 692 948> 819 102<405 644> -VStem: 147 256<0 802> 692 256<0 720> -AnchorPoint: "horn" 856 717 basechar 0 -AnchorPoint: "ogonek" 877 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "top" 549 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -385 901 m 1,0,1 - 454 922 454 922 520 922 c 0,2,3 - 736 922 736 922 842 816 c 128,-1,4 - 948 710 948 710 948 492 c 2,5,-1 - 948 0 l 1,6,-1 - 692 0 l 1,7,-1 - 692 467 l 2,8,9 - 692 608 692 608 676 686 c 128,-1,10 - 660 764 660 764 631 791.5 c 128,-1,11 - 602 819 602 819 551 819 c 0,12,13 - 471 819 471 819 403 784 c 1,14,-1 - 403 0 l 1,15,-1 - 147 0 l 1,16,-1 - 147 901 l 1,17,-1 - 385 901 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: c -Encoding: 99 99 5 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<441 694> 819 102<425 635> -VStem: 90 256<235 657> -AnchorPoint: "horn" 840 717 basechar 0 -AnchorPoint: "ogonek" 571 0 basechar 0 -AnchorPoint: "bottom" 569 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "top" 532 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -688 608 m 1,0,1 - 683 628 683 628 674 665.5 c 128,-1,2 - 665 703 665 703 660.5 718.5 c 128,-1,3 - 656 734 656 734 645.5 758.5 c 128,-1,4 - 635 783 635 783 623 793 c 128,-1,5 - 611 803 611 803 591 811 c 128,-1,6 - 571 819 571 819 543 819 c 0,7,8 - 434 819 434 819 390 726 c 128,-1,9 - 346 633 346 633 346 451 c 0,10,11 - 346 379 346 379 352 325.5 c 128,-1,12 - 358 272 358 272 373.5 224.5 c 128,-1,13 - 389 177 389 177 415.5 147 c 128,-1,14 - 442 117 442 117 484.5 99.5 c 128,-1,15 - 527 82 527 82 584 82 c 0,16,17 - 606 82 606 82 623 84 c 128,-1,18 - 640 86 640 86 654 93.5 c 128,-1,19 - 668 101 668 101 677 106 c 128,-1,20 - 686 111 686 111 697 125.5 c 128,-1,21 - 708 140 708 140 712.5 147 c 128,-1,22 - 717 154 717 154 729.5 175 c 128,-1,23 - 742 196 742 196 748 205 c 1,24,-1 - 932 158 l 1,25,26 - 867 76 867 76 770.5 28 c 128,-1,27 - 674 -20 674 -20 553 -20 c 0,28,29 - 351 -20 351 -20 220.5 109.5 c 128,-1,30 - 90 239 90 239 90 451 c 0,31,32 - 90 555 90 555 127 645 c 128,-1,33 - 164 735 164 735 224 794.5 c 128,-1,34 - 284 854 284 854 359.5 888 c 128,-1,35 - 435 922 435 922 512 922 c 0,36,37 - 646 922 646 922 743 854.5 c 128,-1,38 - 840 787 840 787 893 676 c 1,39,-1 - 688 608 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: b -Encoding: 98 98 6 -Width: 1079 -VWidth: 0 -Flags: W -HStem: -20 102<441 662> 819 102<429 664> 1311 41G<139 395> -VStem: 139 256<147 782 897 1352> 737 256<216 685> -AnchorPoint: "ogonek" 545 0 basechar 0 -AnchorPoint: "horn" 901 717 basechar 0 -AnchorPoint: "cedilla" 545 0 basechar 0 -AnchorPoint: "bottom" 551 0 basechar 0 -AnchorPoint: "top" 578 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -395 745 m 1,0,-1 - 395 303 l 2,1,2 - 395 233 395 233 405.5 189 c 128,-1,3 - 416 145 416 145 441 121.5 c 128,-1,4 - 466 98 466 98 497.5 90 c 128,-1,5 - 529 82 529 82 580 82 c 0,6,7 - 623 82 623 82 655 114.5 c 128,-1,8 - 687 147 687 147 704 202 c 128,-1,9 - 721 257 721 257 729 319 c 128,-1,10 - 737 381 737 381 737 451 c 0,11,12 - 737 819 737 819 580 819 c 0,13,14 - 466 819 466 819 395 745 c 1,0,-1 -395 897 m 1,15,16 - 468 922 468 922 549 922 c 0,17,18 - 668 922 668 922 756 885 c 128,-1,19 - 844 848 844 848 894.5 782 c 128,-1,20 - 945 716 945 716 969 633.5 c 128,-1,21 - 993 551 993 551 993 451 c 128,-1,22 - 993 351 993 351 968.5 268.5 c 128,-1,23 - 944 186 944 186 893 120 c 128,-1,24 - 842 54 842 54 754.5 17 c 128,-1,25 - 667 -20 667 -20 549 -20 c 0,26,27 - 481 -20 481 -20 427 -12 c 128,-1,28 - 373 -4 373 -4 317 20.5 c 128,-1,29 - 261 45 261 45 223.5 86.5 c 128,-1,30 - 186 128 186 128 162.5 200 c 128,-1,31 - 139 272 139 272 139 369 c 2,32,-1 - 139 1352 l 1,33,-1 - 395 1352 l 1,34,-1 - 395 897 l 1,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: s -Encoding: 115 115 7 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<286 522> 817 104<397 566> -VStem: 125 256<569 808> 559 256<119 365> -AnchorPoint: "horn" 647 793 basechar 0 -AnchorPoint: "ogonek" 455 0 basechar 0 -AnchorPoint: "bottom" 449 0 basechar 0 -AnchorPoint: "cedilla" 449 0 basechar 0 -AnchorPoint: "top" 416 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -756 795 m 1,0,-1 - 604 723 l 1,1,2 - 550 817 550 817 457 817 c 0,3,4 - 381 817 381 817 381 688 c 0,5,6 - 381 629 381 629 408.5 588.5 c 128,-1,7 - 436 548 436 548 477 539 c 0,8,9 - 635 503 635 503 725 432 c 128,-1,10 - 815 361 815 361 815 262 c 0,11,12 - 815 121 815 121 710 50.5 c 128,-1,13 - 605 -20 605 -20 434 -20 c 0,14,15 - 376 -20 376 -20 333 -12.5 c 128,-1,16 - 290 -5 290 -5 245 17.5 c 128,-1,17 - 200 40 200 40 174.5 57 c 128,-1,18 - 149 74 149 74 88 117 c 1,19,-1 - 215 201 l 1,20,21 - 299 82 299 82 428 82 c 0,22,23 - 492 82 492 82 525.5 129.5 c 128,-1,24 - 559 177 559 177 559 262 c 0,25,26 - 559 299 559 299 542 330 c 128,-1,27 - 525 361 525 361 497.5 381.5 c 128,-1,28 - 470 402 470 402 443 414.5 c 128,-1,29 - 416 427 416 427 389 434 c 0,30,31 - 269 465 269 465 197 529.5 c 128,-1,32 - 125 594 125 594 125 688 c 0,33,34 - 125 781 125 781 203.5 851.5 c 128,-1,35 - 282 922 282 922 428 922 c 0,36,37 - 527 922 527 922 591.5 894.5 c 128,-1,38 - 656 867 656 867 756 795 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: i -Encoding: 105 105 8 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43G<123 379> 860 41G<123 379> 1065 164<143 358> -VStem: 123 256<0 901> 143 215<1065 1229> -AnchorPoint: "top" 252 1167 basechar 0 -AnchorPoint: "horn" 297 717 basechar 0 -AnchorPoint: "cedilla" 256 0 basechar 0 -AnchorPoint: "bottom" 250 0 basechar 0 -AnchorPoint: "ogonek" 326 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -143 1229 m 1,0,-1 - 358 1229 l 1,1,-1 - 358 1065 l 1,2,-1 - 143 1065 l 1,3,-1 - 143 1229 l 1,0,-1 -123 901 m 1,4,-1 - 379 901 l 1,5,-1 - 379 0 l 1,6,-1 - 123 0 l 1,7,-1 - 123 901 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: o -Encoding: 111 111 9 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> -VStem: 90 256<214 657> 715 256<223 678> -AnchorPoint: "cedilla" 506 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "top" 535 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -715 451 m 0,0,1 - 715 537 715 537 707 600.5 c 128,-1,2 - 699 664 699 664 680.5 715.5 c 128,-1,3 - 662 767 662 767 627.5 793 c 128,-1,4 - 593 819 593 819 543 819 c 0,5,6 - 435 819 435 819 390.5 725.5 c 128,-1,7 - 346 632 346 632 346 451 c 0,8,9 - 346 380 346 380 351 326 c 128,-1,10 - 356 272 356 272 369.5 224.5 c 128,-1,11 - 383 177 383 177 404.5 146.5 c 128,-1,12 - 426 116 426 116 461 99 c 128,-1,13 - 496 82 496 82 543 82 c 0,14,15 - 595 82 595 82 630 108 c 128,-1,16 - 665 134 665 134 683 186 c 128,-1,17 - 701 238 701 238 708 300.5 c 128,-1,18 - 715 363 715 363 715 451 c 0,0,1 -971 451 m 128,-1,20 - 971 222 971 222 845 101 c 128,-1,21 - 719 -20 719 -20 512 -20 c 0,22,23 - 314 -20 314 -20 202 107 c 128,-1,24 - 90 234 90 234 90 451 c 0,25,26 - 90 555 90 555 127 645 c 128,-1,27 - 164 735 164 735 224 794.5 c 128,-1,28 - 284 854 284 854 359.5 888 c 128,-1,29 - 435 922 435 922 512 922 c 0,30,31 - 719 922 719 922 845 801 c 128,-1,19 - 971 680 971 680 971 451 c 128,-1,20 -EndSplineSet -Validated: 1 -EndChar - -StartChar: t -Encoding: 116 116 10 -Width: 657 -VWidth: 0 -Flags: W -HStem: 0 43G<188 444> 799 102<84 188 444 604> -VStem: 188 256<0 799 901 1198> -AnchorPoint: "horn" 365 1085 basechar 0 -AnchorPoint: "ogonek" 324 0 basechar 0 -AnchorPoint: "bottom" 309 0 basechar 0 -AnchorPoint: "cedilla" 309 0 basechar 0 -AnchorPoint: "top" 317 1352 basechar 0 -LayerCount: 2 -Fore -SplineSet -444 799 m 1,0,-1 - 444 0 l 1,1,-1 - 188 0 l 1,2,-1 - 188 799 l 1,3,-1 - 53 799 l 1,4,-1 - 84 901 l 1,5,-1 - 188 901 l 1,6,-1 - 188 1198 l 1,7,-1 - 444 1229 l 1,8,-1 - 444 901 l 1,9,-1 - 604 901 l 1,10,-1 - 604 799 l 1,11,-1 - 444 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: m -Encoding: 109 109 11 -Width: 1675 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403 723 979 1280 1536> 819 102<405 663 980 1220> -VStem: 147 256<0 811> 723 256<0 757> 1280 256<0 743> -AnchorPoint: "horn" 1434 717 basechar 0 -AnchorPoint: "cedilla" 860 0 basechar 0 -AnchorPoint: "ogonek" 1425 0 basechar 0 -AnchorPoint: "bottom" 854 0 basechar 0 -AnchorPoint: "top" 854 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -403 795 m 1,0,-1 - 403 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 901 l 1,3,-1 - 383 901 l 1,4,5 - 447 922 447 922 518 922 c 0,6,7 - 722 922 722 922 825 836 c 1,8,9 - 944 922 944 922 1057 922 c 0,10,11 - 1146 922 1146 922 1217 910.5 c 128,-1,12 - 1288 899 1288 899 1349 872 c 128,-1,13 - 1410 845 1410 845 1450.5 802 c 128,-1,14 - 1491 759 1491 759 1513.5 694 c 128,-1,15 - 1536 629 1536 629 1536 543 c 2,16,-1 - 1536 0 l 1,17,-1 - 1280 0 l 1,18,-1 - 1280 500 l 2,19,20 - 1280 601 1280 601 1269 664.5 c 128,-1,21 - 1258 728 1258 728 1232.5 762 c 128,-1,22 - 1207 796 1207 796 1174 807.5 c 128,-1,23 - 1141 819 1141 819 1087 819 c 0,24,25 - 1023 819 1023 819 979 799 c 1,26,-1 - 979 0 l 1,27,-1 - 723 0 l 1,28,-1 - 723 500 l 2,29,30 - 723 602 723 602 712 664.5 c 128,-1,31 - 701 727 701 727 674.5 761.5 c 128,-1,32 - 648 796 648 796 613 807.5 c 128,-1,33 - 578 819 578 819 520 819 c 0,34,35 - 456 819 456 819 403 795 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: f -Encoding: 102 102 12 -Width: 589 -VWidth: 0 -Flags: W -HStem: 0 43G<152 408> 799 102<61 152 408 553> 1270 102<427 569> -VStem: 152 256<0 799 901 1243> -AnchorPoint: "horn" 512 1315 basechar 0 -AnchorPoint: "ogonek" 281 0 basechar 0 -AnchorPoint: "cedilla" 281 0 basechar 0 -AnchorPoint: "bottom" 276 0 basechar 0 -AnchorPoint: "top" 340 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -555 1239 m 1,0,1 - 530 1270 530 1270 483 1270 c 0,2,3 - 440 1270 440 1270 424 1223 c 128,-1,4 - 408 1176 408 1176 408 1042 c 2,5,-1 - 408 901 l 1,6,-1 - 553 901 l 1,7,-1 - 553 799 l 1,8,-1 - 408 799 l 1,9,-1 - 408 0 l 1,10,-1 - 152 0 l 1,11,-1 - 152 799 l 1,12,-1 - 31 799 l 1,13,-1 - 61 901 l 1,14,-1 - 152 901 l 1,15,-1 - 152 1096 l 2,16,17 - 152 1217 152 1217 239.5 1294.5 c 128,-1,18 - 327 1372 327 1372 453 1372 c 0,19,20 - 537 1372 537 1372 598 1350 c 1,21,-1 - 555 1239 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: j -Encoding: 106 106 13 -Width: 598 -VWidth: 0 -Flags: W -HStem: -348 102<-3 200> 860 41G<221 477> 1065 164<242 457> -VStem: 221 256<-204 901> 242 215<1065 1229> -AnchorPoint: "cedilla" 139 -348 basechar 0 -AnchorPoint: "ogonek" 287 -266 basechar 0 -AnchorPoint: "horn" 389 717 basechar 0 -AnchorPoint: "top" 354 1167 basechar 0 -AnchorPoint: "bottom" 129 -348 basechar 0 -LayerCount: 2 -Fore -SplineSet -33 -195 m 1,0,1 - 69 -246 69 -246 141 -246 c 0,2,3 - 168 -246 168 -246 184.5 -232.5 c 128,-1,4 - 201 -219 201 -219 209 -184.5 c 128,-1,5 - 217 -150 217 -150 219 -111 c 128,-1,6 - 221 -72 221 -72 221 0 c 2,7,-1 - 221 901 l 1,8,-1 - 477 901 l 1,9,-1 - 477 -68 l 2,10,11 - 477 -140 477 -140 440.5 -196.5 c 128,-1,12 - 404 -253 404 -253 347 -284.5 c 128,-1,13 - 290 -316 290 -316 229.5 -332 c 128,-1,14 - 169 -348 169 -348 111 -348 c 0,15,16 - -19 -348 -19 -348 -96 -256 c 1,17,-1 - 33 -195 l 1,0,1 -242 1229 m 1,18,-1 - 457 1229 l 1,19,-1 - 457 1065 l 1,20,-1 - 242 1065 l 1,21,-1 - 242 1229 l 1,18,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: space -Encoding: 32 32 14 -Width: 409 -VWidth: 0 -Flags: W -LayerCount: 2 -EndChar - -StartChar: l -Encoding: 108 108 15 -Width: 548 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403> 1311 41G<147 403> -VStem: 147 256<0 1352> -AnchorPoint: "horn" 311 1085 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -AnchorPoint: "bottom" 272 0 basechar 0 -AnchorPoint: "cedilla" 268 0 basechar 0 -AnchorPoint: "top" 274 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -403 1352 m 25,0,-1 - 403 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 1352 l 1,3,-1 - 403 1352 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: p -Encoding: 112 112 16 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -16 102<478 663> 823 102<468 674> -VStem: 147 256<-410 8 181 757> 745 256<253 665> -AnchorPoint: "horn" 885 717 basechar 0 -AnchorPoint: "ogonek" 561 0 basechar 0 -AnchorPoint: "cedilla" 561 0 basechar 0 -AnchorPoint: "bottom" 598 0 basechar 0 -AnchorPoint: "top" 582 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -403 8 m 1,0,-1 - 403 -410 l 1,1,-1 - 147 -410 l 1,2,-1 - 147 905 l 1,3,-1 - 401 905 l 1,4,5 - 474 926 474 926 567 926 c 0,6,7 - 692 926 692 926 792 861.5 c 128,-1,8 - 892 797 892 797 946.5 690 c 128,-1,9 - 1001 583 1001 583 1001 455 c 0,10,11 - 1001 262 1001 262 868.5 123 c 128,-1,12 - 736 -16 736 -16 547 -16 c 0,13,14 - 467 -16 467 -16 403 8 c 1,0,-1 -403 504 m 0,15,16 - 403 458 403 458 404 421 c 128,-1,17 - 405 384 405 384 409.5 339 c 128,-1,18 - 414 294 414 294 421.5 260 c 128,-1,19 - 429 226 429 226 442 192 c 128,-1,20 - 455 158 455 158 473 135.5 c 128,-1,21 - 491 113 491 113 518 99.5 c 128,-1,22 - 545 86 545 86 578 86 c 0,23,24 - 624 86 624 86 657.5 118.5 c 128,-1,25 - 691 151 691 151 709.5 206 c 128,-1,26 - 728 261 728 261 736.5 323 c 128,-1,27 - 745 385 745 385 745 455 c 0,28,29 - 745 527 745 527 738.5 587 c 128,-1,30 - 732 647 732 647 716.5 703 c 128,-1,31 - 701 759 701 759 671 791 c 128,-1,32 - 641 823 641 823 598 823 c 0,33,34 - 548 823 548 823 512.5 808 c 128,-1,35 - 477 793 477 793 456 768 c 128,-1,36 - 435 743 435 743 423 700.5 c 128,-1,37 - 411 658 411 658 407 613.5 c 128,-1,38 - 403 569 403 569 403 504 c 0,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: q -Encoding: 113 113 17 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -20 102<419 623> 819 102<418 650> -VStem: 90 256<216 685> 688 256<-410 4 152 754> -AnchorPoint: "horn" 877 717 basechar 0 -AnchorPoint: "ogonek" 487 0 basechar 0 -AnchorPoint: "cedilla" 487 0 basechar 0 -AnchorPoint: "bottom" 487 0 basechar 0 -AnchorPoint: "top" 522 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -688 4 m 1,0,1 - 618 -20 618 -20 535 -20 c 0,2,3 - 416 -20 416 -20 328 17 c 128,-1,4 - 240 54 240 54 189 120 c 128,-1,5 - 138 186 138 186 114 268.5 c 128,-1,6 - 90 351 90 351 90 451 c 128,-1,7 - 90 551 90 551 114.5 633.5 c 128,-1,8 - 139 716 139 716 190.5 782 c 128,-1,9 - 242 848 242 848 329.5 885 c 128,-1,10 - 417 922 417 922 535 922 c 0,11,12 - 603 922 603 922 657 914 c 128,-1,13 - 711 906 711 906 767 881 c 128,-1,14 - 823 856 823 856 860 814.5 c 128,-1,15 - 897 773 897 773 920.5 701 c 128,-1,16 - 944 629 944 629 944 532 c 2,17,-1 - 944 -410 l 1,18,-1 - 688 -410 l 1,19,-1 - 688 4 l 1,0,1 -688 430 m 2,20,-1 - 688 598 l 2,21,22 - 688 692 688 692 670 739.5 c 128,-1,23 - 652 787 652 787 615 803 c 128,-1,24 - 578 819 578 819 504 819 c 0,25,26 - 455 819 455 819 422 787.5 c 128,-1,27 - 389 756 389 756 373.5 698.5 c 128,-1,28 - 358 641 358 641 352 583.5 c 128,-1,29 - 346 526 346 526 346 451 c 0,30,31 - 346 82 346 82 504 82 c 0,32,33 - 545 82 545 82 576.5 94 c 128,-1,34 - 608 106 608 106 627.5 131 c 128,-1,35 - 647 156 647 156 659.5 184.5 c 128,-1,36 - 672 213 672 213 678 256.5 c 128,-1,37 - 684 300 684 300 686 338 c 128,-1,38 - 688 376 688 376 688 430 c 2,20,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: r -Encoding: 114 114 18 -Width: 770 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403> 819 102<448 739> 860 41G<147 403> -VStem: 147 256<0 774 874 901> -AnchorPoint: "horn" 647 856 basechar 0 -AnchorPoint: "ogonek" 291 0 basechar 0 -AnchorPoint: "bottom" 285 0 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "top" 397 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -764 741 m 1,0,1 - 723 819 723 819 590 819 c 0,2,3 - 529 819 529 819 486 798 c 128,-1,4 - 443 777 443 777 403 735 c 1,5,-1 - 403 0 l 1,6,-1 - 147 0 l 1,7,-1 - 147 901 l 1,8,-1 - 403 901 l 1,9,-1 - 403 874 l 1,10,11 - 482 922 482 922 575 922 c 0,12,13 - 682 922 682 922 764 893 c 1,14,-1 - 764 741 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: u -Encoding: 117 117 19 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41G<143 399 688 944> -VStem: 143 256<163 901> 688 256<91 901> -AnchorPoint: "cedilla" 522 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "top" 549 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -688 106 m 1,0,-1 - 688 901 l 1,1,-1 - 944 901 l 1,2,-1 - 944 0 l 1,3,-1 - 690 0 l 1,4,5 - 617 -20 617 -20 541 -20 c 0,6,7 - 329 -20 329 -20 236 84 c 128,-1,8 - 143 188 143 188 143 410 c 2,9,-1 - 143 901 l 1,10,-1 - 399 901 l 1,11,-1 - 399 434 l 2,12,13 - 399 285 399 285 412.5 213 c 128,-1,14 - 426 141 426 141 461.5 111.5 c 128,-1,15 - 497 82 497 82 571 82 c 0,16,17 - 636 82 636 82 688 106 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: g -Encoding: 103 103 20 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<362 595> -20 102<436 635> 819 102<423 633> 860 41G<637 893> -VStem: 90 256<223 675> 637 256<-196 -8 84 801 893 901> -AnchorPoint: "horn" 844 717 basechar 0 -AnchorPoint: "cedilla" 496 -319 basechar 0 -AnchorPoint: "ogonek" 639 -299 basechar 0 -AnchorPoint: "bottom" 492 -330 basechar 0 -AnchorPoint: "top" 506 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -893 901 m 1,0,-1 - 893 160 l 2,1,2 - 893 51 893 51 887.5 -20.5 c 128,-1,3 - 882 -92 882 -92 864.5 -153 c 128,-1,4 - 847 -214 847 -214 819 -248.5 c 128,-1,5 - 791 -283 791 -283 742.5 -307 c 128,-1,6 - 694 -331 694 -331 630 -339.5 c 128,-1,7 - 566 -348 566 -348 473 -348 c 0,8,9 - 326 -348 326 -348 150 -256 c 1,10,-1 - 303 -150 l 1,11,12 - 391 -246 391 -246 504 -246 c 0,13,14 - 571 -246 571 -246 600 -193 c 128,-1,15 - 629 -140 629 -140 635 -8 c 1,16,17 - 582 -20 582 -20 522 -20 c 0,18,19 - 323 -20 323 -20 206.5 107.5 c 128,-1,20 - 90 235 90 235 90 451 c 0,21,22 - 90 659 90 659 205.5 790.5 c 128,-1,23 - 321 922 321 922 481 922 c 0,24,25 - 561 922 561 922 637 893 c 1,26,-1 - 637 901 l 1,27,-1 - 893 901 l 1,0,-1 -637 772 m 1,28,29 - 584 819 584 819 512 819 c 0,30,31 - 430 819 430 819 388 721.5 c 128,-1,32 - 346 624 346 624 346 451 c 0,33,34 - 346 82 346 82 553 82 c 0,35,36 - 599 82 599 82 637 94 c 1,37,-1 - 637 115 l 1,38,-1 - 637 772 l 1,28,29 -EndSplineSet -Validated: 1 -EndChar - -StartChar: v -Encoding: 118 118 21 -Width: 849 -VWidth: 0 -Flags: W -HStem: 0 43G<331 525> 860 41G<18 254 659 838> -AnchorPoint: "horn" 729 717 basechar 0 -AnchorPoint: "ogonek" 418 0 basechar 0 -AnchorPoint: "cedilla" 418 0 basechar 0 -AnchorPoint: "bottom" 424 0 basechar 0 -AnchorPoint: "top" 432 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -457 303 m 1,0,-1 - 674 901 l 1,1,-1 - 838 901 l 1,2,-1 - 510 0 l 1,3,-1 - 346 0 l 1,4,-1 - 18 901 l 1,5,-1 - 240 901 l 1,6,-1 - 457 303 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: w -Encoding: 119 119 22 -Width: 1472 -VWidth: 0 -Flags: W -HStem: 0 43G<341 535 939 1133> 860 41G<29 265 669 863 1267 1446> -AnchorPoint: "horn" 1329 717 basechar 0 -AnchorPoint: "ogonek" 1110 0 basechar 0 -AnchorPoint: "cedilla" 766 0 basechar 0 -AnchorPoint: "bottom" 766 0 basechar 0 -AnchorPoint: "top" 760 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -467 303 m 1,0,-1 - 684 901 l 1,1,-1 - 848 901 l 1,2,-1 - 1065 305 l 1,3,-1 - 1282 901 l 1,4,-1 - 1446 901 l 1,5,-1 - 1118 0 l 1,6,-1 - 954 0 l 1,7,-1 - 737 596 l 1,8,-1 - 520 0 l 1,9,-1 - 356 0 l 1,10,-1 - 29 901 l 1,11,-1 - 250 901 l 1,12,-1 - 467 303 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: x -Encoding: 120 120 23 -Width: 854 -VWidth: 0 -Flags: W -HStem: 0 43G<8 213 573 850> 860 41G<14 289 569 772> -AnchorPoint: "horn" 614 717 basechar 0 -AnchorPoint: "ogonek" 750 0 basechar 0 -AnchorPoint: "cedilla" 418 0 basechar 0 -AnchorPoint: "bottom" 416 0 basechar 0 -AnchorPoint: "top" 422 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -305 455 m 1,0,-1 - 14 901 l 1,1,-1 - 262 901 l 1,2,-1 - 430 645 l 1,3,-1 - 596 901 l 1,4,-1 - 772 901 l 1,5,-1 - 518 510 l 1,6,-1 - 850 0 l 1,7,-1 - 600 0 l 1,8,-1 - 393 317 l 1,9,-1 - 186 0 l 1,10,-1 - 8 0 l 1,11,-1 - 305 455 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: y -Encoding: 121 121 24 -Width: 923 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 860 41G<88 324 729 907> -AnchorPoint: "horn" 762 717 basechar 0 -AnchorPoint: "cedilla" 242 -328 basechar 0 -AnchorPoint: "bottom" 365 -315 basechar 0 -AnchorPoint: "ogonek" 614 0 basechar 0 -AnchorPoint: "top" 514 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -244 -348 m 0,0,1 - 173 -348 173 -348 98.5 -305.5 c 128,-1,2 - 24 -263 24 -263 -10 -180 c 1,3,-1 - 186 -152 l 1,4,5 - 202 -201 202 -201 227 -223.5 c 128,-1,6 - 252 -246 252 -246 274 -246 c 0,7,8 - 325 -246 325 -246 399 -45 c 1,9,-1 - 416 0 l 1,10,-1 - 88 901 l 1,11,-1 - 309 901 l 1,12,-1 - 526 305 l 1,13,-1 - 743 901 l 1,14,-1 - 907 901 l 1,15,-1 - 561 -49 l 2,16,17 - 507 -197 507 -197 432 -272.5 c 128,-1,18 - 357 -348 357 -348 244 -348 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: k -Encoding: 107 107 25 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403 664 913> 860 41G<611 877> 1311 41G<147 403> -VStem: 147 256<0 371 627 1352> -AnchorPoint: "horn" 668 717 basechar 0 -AnchorPoint: "ogonek" 819 0 basechar 0 -AnchorPoint: "bottom" 508 0 basechar 0 -AnchorPoint: "cedilla" 508 0 basechar 0 -AnchorPoint: "top" 387 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -403 627 m 1,0,-1 - 647 901 l 1,1,-1 - 877 901 l 1,2,-1 - 520 502 l 1,3,-1 - 913 0 l 1,4,-1 - 696 0 l 1,5,-1 - 403 371 l 1,6,-1 - 403 0 l 1,7,-1 - 147 0 l 1,8,-1 - 147 1352 l 1,9,-1 - 403 1352 l 1,10,-1 - 403 627 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: z -Encoding: 122 122 26 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 102<352 823> 799 102<74 520> -AnchorPoint: "horn" 651 717 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "cedilla" 442 0 basechar 0 -AnchorPoint: "bottom" 442 0 basechar 0 -AnchorPoint: "top" 438 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -520 799 m 1,0,-1 - 43 799 l 1,1,-1 - 74 901 l 1,2,-1 - 817 901 l 1,3,-1 - 352 102 l 1,4,-1 - 823 102 l 1,5,-1 - 823 0 l 1,6,-1 - 53 0 l 1,7,-1 - 520 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: A -Encoding: 65 65 27 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43G<39 289 1013 1264> 410 102<461 842> 1393 41G<546 756> -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "top" 651 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -741 1434 m 1,0,-1 - 1264 0 l 1,1,-1 - 1028 0 l 1,2,-1 - 879 410 l 1,3,-1 - 424 410 l 5,4,-1 - 274 0 l 5,5,-1 - 39 0 l 5,6,-1 - 561 1434 l 5,7,-1 - 741 1434 l 1,0,-1 -651 1034 m 5,8,-1 - 461 512 l 5,9,-1 - 842 512 l 1,10,-1 - 651 1034 l 5,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: B -Encoding: 66 66 28 -Width: 1116 -VWidth: 0 -Flags: W -HStem: 0 102<440 656> 727 102<440 574> 1331 102<440 601> -VStem: 174 266<102 727 829 1331> 686 266<944 1243> 772 266<216 579> -AnchorPoint: "horn" 893 1085 basechar 0 -AnchorPoint: "ogonek" 524 0 basechar 0 -AnchorPoint: "cedilla" 524 0 basechar 0 -AnchorPoint: "bottom" 563 0 basechar 0 -AnchorPoint: "top" 502 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 727 m 1,0,-1 - 440 102 l 1,1,-1 - 522 102 l 2,2,3 - 644 102 644 102 708 185.5 c 128,-1,4 - 772 269 772 269 772 387 c 0,5,6 - 772 464 772 464 747 539 c 128,-1,7 - 722 614 722 614 663 670.5 c 128,-1,8 - 604 727 604 727 522 727 c 2,9,-1 - 440 727 l 1,0,-1 -780 795 m 1,10,11 - 908 743 908 743 973 629.5 c 128,-1,12 - 1038 516 1038 516 1038 387 c 0,13,14 - 1038 308 1038 308 1012 240 c 128,-1,15 - 986 172 986 172 933 117 c 128,-1,16 - 880 62 880 62 790.5 31 c 128,-1,17 - 701 0 701 0 584 0 c 2,18,-1 - 174 0 l 1,19,-1 - 174 1434 l 1,20,-1 - 543 1434 l 2,21,22 - 638 1434 638 1434 711 1414.5 c 128,-1,23 - 784 1395 784 1395 829 1362.5 c 128,-1,24 - 874 1330 874 1330 902 1283 c 128,-1,25 - 930 1236 930 1236 941 1186 c 128,-1,26 - 952 1136 952 1136 952 1075 c 0,27,28 - 952 1010 952 1010 910.5 929.5 c 128,-1,29 - 869 849 869 849 780 795 c 1,10,11 -440 1331 m 1,30,-1 - 440 829 l 1,31,32 - 501 830 501 830 550.5 857 c 128,-1,33 - 600 884 600 884 628 923.5 c 128,-1,34 - 656 963 656 963 671 1003 c 128,-1,35 - 686 1043 686 1043 686 1075 c 0,36,37 - 686 1103 686 1103 681.5 1132.5 c 128,-1,38 - 677 1162 677 1162 663.5 1199 c 128,-1,39 - 650 1236 650 1236 628.5 1264 c 128,-1,40 - 607 1292 607 1292 569 1311.5 c 128,-1,41 - 531 1331 531 1331 481 1331 c 2,42,-1 - 440 1331 l 1,30,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: P -Encoding: 80 80 29 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440> 655 102<440 665> 1331 102<440 665> -VStem: 174 266<0 655 758 1331> 772 266<872 1217> -AnchorPoint: "horn" 987 1085 basechar 0 -AnchorPoint: "ogonek" 299 0 basechar 0 -AnchorPoint: "cedilla" 299 0 basechar 0 -AnchorPoint: "bottom" 496 0 basechar 0 -AnchorPoint: "top" 561 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 655 m 1,0,-1 - 440 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 594 1434 l 2,4,5 - 688 1434 688 1434 765.5 1409 c 128,-1,6 - 843 1384 843 1384 892.5 1344 c 128,-1,7 - 942 1304 942 1304 976 1252 c 128,-1,8 - 1010 1200 1010 1200 1024 1148 c 128,-1,9 - 1038 1096 1038 1096 1038 1044 c 128,-1,10 - 1038 992 1038 992 1023.5 940 c 128,-1,11 - 1009 888 1009 888 974.5 836 c 128,-1,12 - 940 784 940 784 890.5 744.5 c 128,-1,13 - 841 705 841 705 764 680 c 128,-1,14 - 687 655 687 655 594 655 c 2,15,-1 - 440 655 l 1,0,-1 -440 1331 m 1,16,-1 - 440 758 l 1,17,-1 - 532 758 l 2,18,19 - 594 758 594 758 642.5 785 c 128,-1,20 - 691 812 691 812 718 855.5 c 128,-1,21 - 745 899 745 899 758.5 947 c 128,-1,22 - 772 995 772 995 772 1044 c 0,23,24 - 772 1083 772 1083 764 1121.5 c 128,-1,25 - 756 1160 756 1160 737.5 1198 c 128,-1,26 - 719 1236 719 1236 692 1265.5 c 128,-1,27 - 665 1295 665 1295 623.5 1313 c 128,-1,28 - 582 1331 582 1331 532 1331 c 2,29,-1 - 440 1331 l 1,16,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: C -Encoding: 67 67 30 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<614 939> 1352 102<571 902> -VStem: 102 266<441 1012> -AnchorPoint: "horn" 1143 1282 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "top" 717 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1249 209 m 1,0,1 - 1169 106 1169 106 1035.5 43 c 128,-1,2 - 902 -20 902 -20 741 -20 c 0,3,4 - 659 -20 659 -20 572.5 7 c 128,-1,5 - 486 34 486 34 401 93 c 128,-1,6 - 316 152 316 152 250 235.5 c 128,-1,7 - 184 319 184 319 143 444.5 c 128,-1,8 - 102 570 102 570 102 717 c 0,9,10 - 102 865 102 865 139 989.5 c 128,-1,11 - 176 1114 176 1114 236 1198 c 128,-1,12 - 296 1282 296 1282 375 1341 c 128,-1,13 - 454 1400 454 1400 536.5 1427 c 128,-1,14 - 619 1454 619 1454 702 1454 c 0,15,16 - 1075 1454 1075 1454 1243 1245 c 1,17,-1 - 1018 1178 l 1,18,19 - 962 1258 962 1258 937 1281 c 1,20,21 - 861 1350 861 1350 733 1352 c 1,22,23 - 369 1352 369 1352 369 717 c 0,24,25 - 369 586 369 586 392.5 478 c 128,-1,26 - 416 370 416 370 455 298 c 128,-1,27 - 494 226 494 226 546 176 c 128,-1,28 - 598 126 598 126 655 104 c 128,-1,29 - 712 82 712 82 772 82 c 0,30,31 - 830 82 830 82 871.5 92.5 c 128,-1,32 - 913 103 913 103 946.5 130 c 128,-1,33 - 980 157 980 157 1002 185 c 128,-1,34 - 1024 213 1024 213 1057 264 c 1,35,-1 - 1249 209 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: D -Encoding: 68 68 31 -Width: 1304 -VWidth: 0 -Flags: W -HStem: 0 102<440 741> 1331 102<440 755> -VStem: 174 266<102 1331> 938 266<394 1073> -AnchorPoint: "cedilla" 549 0 basechar 0 -AnchorPoint: "ogonek" 549 0 basechar 0 -AnchorPoint: "horn" 1102 1085 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "top" 582 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -670 0 m 2,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 670 1434 l 2,3,4 - 1204 1434 1204 1434 1204 737 c 0,5,6 - 1204 376 1204 376 1061.5 188 c 128,-1,7 - 919 0 919 0 670 0 c 2,0,-1 -440 1331 m 1,8,-1 - 440 102 l 1,9,-1 - 608 102 l 2,10,11 - 675 102 675 102 733 138.5 c 128,-1,12 - 791 175 791 175 838 249 c 128,-1,13 - 885 323 885 323 911.5 448.5 c 128,-1,14 - 938 574 938 574 938 737 c 0,15,16 - 938 868 938 868 920 971.5 c 128,-1,17 - 902 1075 902 1075 872 1141.5 c 128,-1,18 - 842 1208 842 1208 799 1251.5 c 128,-1,19 - 756 1295 756 1295 709 1313 c 128,-1,20 - 662 1331 662 1331 608 1331 c 2,21,-1 - 440 1331 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: E -Encoding: 69 69 32 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> -VStem: 174 266<102 799 901 1331> -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 614 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1034 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 1001 1434 l 1,3,-1 - 1001 1331 l 1,4,-1 - 440 1331 l 1,5,-1 - 440 901 l 1,6,-1 - 817 901 l 1,7,-1 - 817 799 l 1,8,-1 - 440 799 l 1,9,-1 - 440 102 l 1,10,-1 - 1034 102 l 1,11,-1 - 1034 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: F -Encoding: 70 70 33 -Width: 1067 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440> 799 102<440 817> 1331 102<440 1001> -VStem: 174 266<0 799 901 1331> -AnchorPoint: "horn" 954 1384 basechar 0 -AnchorPoint: "ogonek" 305 0 basechar 0 -AnchorPoint: "cedilla" 305 0 basechar 0 -AnchorPoint: "bottom" 410 0 basechar 0 -AnchorPoint: "top" 604 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -174 0 m 1,0,-1 - 174 1434 l 1,1,-1 - 1001 1434 l 1,2,-1 - 1001 1331 l 1,3,-1 - 440 1331 l 1,4,-1 - 440 901 l 1,5,-1 - 817 901 l 1,6,-1 - 817 799 l 1,7,-1 - 440 799 l 1,8,-1 - 440 0 l 1,9,-1 - 174 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: G -Encoding: 71 71 34 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -20 102<614 974> 717 102<821 993> 1331 102<564 915> -VStem: 102 266<441 1009> 993 256<161 717> -AnchorPoint: "horn" 1143 1282 basechar 0 -AnchorPoint: "ogonek" 737 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "top" 717 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -821 819 m 1,0,-1 - 1249 819 l 1,1,-1 - 1249 209 l 1,2,3 - 1169 106 1169 106 1035.5 43 c 128,-1,4 - 902 -20 902 -20 741 -20 c 0,5,6 - 659 -20 659 -20 572.5 7 c 128,-1,7 - 486 34 486 34 401 93 c 128,-1,8 - 316 152 316 152 250 235.5 c 128,-1,9 - 184 319 184 319 143 444.5 c 128,-1,10 - 102 570 102 570 102 717 c 0,11,12 - 102 865 102 865 139 987.5 c 128,-1,13 - 176 1110 176 1110 236 1191 c 128,-1,14 - 296 1272 296 1272 375 1328 c 128,-1,15 - 454 1384 454 1384 536.5 1409 c 128,-1,16 - 619 1434 619 1434 702 1434 c 0,17,18 - 1091 1434 1091 1434 1243 1245 c 1,19,-1 - 1018 1178 l 1,20,21 - 987 1222 987 1222 968 1244 c 128,-1,22 - 949 1266 949 1266 916 1289.5 c 128,-1,23 - 883 1313 883 1313 839.5 1322 c 128,-1,24 - 796 1331 796 1331 733 1331 c 0,25,26 - 551 1331 551 1331 460 1182.5 c 128,-1,27 - 369 1034 369 1034 369 717 c 0,28,29 - 369 586 369 586 392.5 478 c 128,-1,30 - 416 370 416 370 455 298 c 128,-1,31 - 494 226 494 226 546 176 c 128,-1,32 - 598 126 598 126 655 104 c 128,-1,33 - 712 82 712 82 772 82 c 0,34,35 - 898 82 898 82 993 135 c 1,36,-1 - 993 717 l 1,37,-1 - 821 717 l 1,38,-1 - 821 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: H -Encoding: 72 72 35 -Width: 1351 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440 915 1182> 717 102<440 915> 1393 41G<174 440 915 1182> -VStem: 174 266<0 717 819 1434> 915 266<0 717 819 1434> -AnchorPoint: "horn" 1130 1085 basechar 0 -AnchorPoint: "ogonek" 1102 0 basechar 0 -AnchorPoint: "cedilla" 651 0 basechar 0 -AnchorPoint: "bottom" 674 0 basechar 0 -AnchorPoint: "top" 686 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 1434 m 1,0,-1 - 440 819 l 1,1,-1 - 915 819 l 1,2,-1 - 915 1434 l 1,3,-1 - 1182 1434 l 1,4,-1 - 1182 0 l 1,5,-1 - 915 0 l 1,6,-1 - 915 717 l 1,7,-1 - 440 717 l 1,8,-1 - 440 0 l 1,9,-1 - 174 0 l 1,10,-1 - 174 1434 l 1,11,-1 - 440 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: I -Encoding: 73 73 36 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43G<172 438> 1393 41G<172 438> -VStem: 172 266<0 1434> -AnchorPoint: "horn" 338 1085 basechar 0 -AnchorPoint: "cedilla" 317 0 basechar 0 -AnchorPoint: "bottom" 299 0 basechar 0 -AnchorPoint: "ogonek" 283 0 basechar 0 -AnchorPoint: "top" 309 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -438 1434 m 25,0,-1 - 438 0 l 1,1,-1 - 172 0 l 1,2,-1 - 172 1434 l 1,3,-1 - 438 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: J -Encoding: 74 74 37 -Width: 954 -VWidth: 0 -Flags: W -HStem: -20 102<272 468> 1393 41G<522 788> -VStem: 522 266<137 1434> -AnchorPoint: "cedilla" 401 0 basechar 0 -AnchorPoint: "ogonek" 401 0 basechar 0 -AnchorPoint: "horn" 733 1085 basechar 0 -AnchorPoint: "bottom" 383 0 basechar 0 -AnchorPoint: "top" 659 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -788 487 m 18,0,1 - 788 379 788 379 781.5 306.5 c 128,-1,2 - 775 234 775 234 756.5 174 c 128,-1,3 - 738 114 738 114 709 79.5 c 128,-1,4 - 680 45 680 45 630 21 c 128,-1,5 - 580 -3 580 -3 516 -11.5 c 128,-1,6 - 452 -20 452 -20 358 -20 c 0,7,8 - 211 -20 211 -20 35 72 c 1,9,-1 - 209 178 l 1,10,11 - 255 129 255 129 305 105.5 c 128,-1,12 - 355 82 355 82 389 82 c 0,13,14 - 457 82 457 82 489.5 163.5 c 128,-1,15 - 522 245 522 245 522 442 c 2,16,-1 - 522 1434 l 1,17,-1 - 788 1434 l 1,18,-1 - 788 487 l 18,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: K -Encoding: 75 75 38 -Width: 1243 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440 977 1233> 1393 41G<174 440 936 1208> -VStem: 174 266<0 573 836 1434> -AnchorPoint: "horn" 1032 1352 basechar 0 -AnchorPoint: "ogonek" 1135 0 basechar 0 -AnchorPoint: "bottom" 635 0 basechar 0 -AnchorPoint: "cedilla" 655 0 basechar 0 -AnchorPoint: "top" 483 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 573 m 1,0,-1 - 440 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 440 1434 l 1,4,-1 - 440 836 l 1,5,-1 - 973 1434 l 1,6,-1 - 1208 1434 l 1,7,-1 - 623 776 l 1,8,-1 - 1233 0 l 1,9,-1 - 1010 0 l 1,10,-1 - 504 643 l 1,11,-1 - 440 573 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: L -Encoding: 76 76 39 -Width: 1083 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 1393 41G<174 440> -VStem: 174 266<102 1434> -AnchorPoint: "horn" 328 1085 basechar 0 -AnchorPoint: "ogonek" 745 0 basechar 0 -AnchorPoint: "bottom" 604 0 basechar 0 -AnchorPoint: "cedilla" 596 0 basechar 0 -AnchorPoint: "top" 485 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 102 m 1,0,-1 - 1034 102 l 1,1,-1 - 1034 0 l 1,2,-1 - 174 0 l 1,3,-1 - 174 1434 l 1,4,-1 - 440 1434 l 1,5,-1 - 440 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: M -Encoding: 77 77 40 -Width: 1626 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440 1190 1456> 1393 41G<174 459 1171 1456> -VStem: 174 266<0 1047> 1190 266<0 1047> -AnchorPoint: "horn" 1393 1085 basechar 0 -AnchorPoint: "ogonek" 1389 0 basechar 0 -AnchorPoint: "cedilla" 840 0 basechar 0 -AnchorPoint: "bottom" 815 0 basechar 0 -AnchorPoint: "top" 815 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 1434 m 1,0,-1 - 815 631 l 1,1,-1 - 1190 1434 l 1,2,-1 - 1456 1434 l 1,3,-1 - 1456 0 l 1,4,-1 - 1190 0 l 1,5,-1 - 1190 1047 l 1,6,-1 - 815 248 l 1,7,-1 - 440 1047 l 1,8,-1 - 440 0 l 1,9,-1 - 174 0 l 1,10,-1 - 174 1434 l 1,11,-1 - 440 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: N -Encoding: 78 78 41 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440 951 1237> 1393 41G<174 463 971 1237> -VStem: 174 266<0 1075> 971 266<367 1434> -AnchorPoint: "horn" 1188 1085 basechar 0 -AnchorPoint: "ogonek" 1143 0 basechar 0 -AnchorPoint: "bottom" 694 0 basechar 0 -AnchorPoint: "cedilla" 696 0 basechar 0 -AnchorPoint: "top" 717 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1237 1434 m 1,0,-1 - 1237 0 l 1,1,-1 - 971 0 l 1,2,-1 - 440 1075 l 1,3,-1 - 440 0 l 1,4,-1 - 174 0 l 1,5,-1 - 174 1434 l 1,6,-1 - 440 1434 l 1,7,-1 - 442 1434 l 1,8,-1 - 971 367 l 1,9,-1 - 971 1434 l 1,10,-1 - 1237 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: O -Encoding: 79 79 42 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> -VStem: 102 266<424 1012> 1071 266<414 1009> -AnchorPoint: "cedilla" 700 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "top" 707 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -705 -20 m 0,0,1 - 621 -20 621 -20 537.5 7 c 128,-1,2 - 454 34 454 34 375 93 c 128,-1,3 - 296 152 296 152 235.5 236 c 128,-1,4 - 175 320 175 320 138.5 444.5 c 128,-1,5 - 102 569 102 569 102 717 c 128,-1,6 - 102 865 102 865 136.5 989.5 c 128,-1,7 - 171 1114 171 1114 228.5 1198.5 c 128,-1,8 - 286 1283 286 1283 362 1341.5 c 128,-1,9 - 438 1400 438 1400 520 1427 c 128,-1,10 - 602 1454 602 1454 686 1454 c 0,11,12 - 788 1454 788 1454 882 1427 c 128,-1,13 - 976 1400 976 1400 1059.5 1341.5 c 128,-1,14 - 1143 1283 1143 1283 1204.5 1198 c 128,-1,15 - 1266 1113 1266 1113 1301.5 989.5 c 128,-1,16 - 1337 866 1337 866 1337 717 c 0,17,18 - 1337 531 1337 531 1286 387 c 128,-1,19 - 1235 243 1235 243 1146.5 155.5 c 128,-1,20 - 1058 68 1058 68 946 24 c 128,-1,21 - 834 -20 834 -20 705 -20 c 0,0,1 -698 1352 m 0,22,23 - 553 1352 553 1352 461 1189.5 c 128,-1,24 - 369 1027 369 1027 369 717 c 0,25,26 - 369 586 369 586 389.5 478 c 128,-1,27 - 410 370 410 370 444 298 c 128,-1,28 - 478 226 478 226 523.5 176 c 128,-1,29 - 569 126 569 126 617.5 104 c 128,-1,30 - 666 82 666 82 717 82 c 0,31,32 - 875 82 875 82 973 244.5 c 128,-1,33 - 1071 407 1071 407 1071 717 c 0,34,35 - 1071 1040 1071 1040 970 1196 c 128,-1,36 - 869 1352 869 1352 698 1352 c 0,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Q -Encoding: 81 81 43 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -348 430<717 1155> -348 102<997 1155> 1352 102<540 867> -VStem: 102 266<429 1012> 1071 266<409 1009> -AnchorPoint: "horn" 1204 1085 basechar 0 -AnchorPoint: "cedilla" 844 -262 basechar 0 -AnchorPoint: "ogonek" 1004 -291 basechar 0 -AnchorPoint: "bottom" 696 -266 basechar 0 -AnchorPoint: "top" 690 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -698 1352 m 0,0,1 - 519 1352 519 1352 444 1200 c 128,-1,2 - 369 1048 369 1048 369 717 c 0,3,4 - 369 394 369 394 463 238 c 128,-1,5 - 557 82 557 82 717 82 c 0,6,7 - 882 82 882 82 976.5 242.5 c 128,-1,8 - 1071 403 1071 403 1071 717 c 0,9,10 - 1071 1046 1071 1046 976 1199 c 128,-1,11 - 881 1352 881 1352 698 1352 c 0,0,1 -575 -4 m 1,12,13 - 482 19 482 19 400 74 c 128,-1,14 - 318 129 318 129 250 215.5 c 128,-1,15 - 182 302 182 302 142 431.5 c 128,-1,16 - 102 561 102 561 102 717 c 0,17,18 - 102 865 102 865 136.5 989.5 c 128,-1,19 - 171 1114 171 1114 228.5 1198.5 c 128,-1,20 - 286 1283 286 1283 362 1341.5 c 128,-1,21 - 438 1400 438 1400 520 1427 c 128,-1,22 - 602 1454 602 1454 686 1454 c 0,23,24 - 788 1454 788 1454 882 1427 c 128,-1,25 - 976 1400 976 1400 1059.5 1341.5 c 128,-1,26 - 1143 1283 1143 1283 1204.5 1198 c 128,-1,27 - 1266 1113 1266 1113 1301.5 989.5 c 128,-1,28 - 1337 866 1337 866 1337 717 c 0,29,30 - 1337 557 1337 557 1299 427 c 128,-1,31 - 1261 297 1261 297 1193 210 c 128,-1,32 - 1125 123 1125 123 1037 69 c 128,-1,33 - 949 15 949 15 844 -6 c 1,34,35 - 862 -109 862 -109 957 -177.5 c 128,-1,36 - 1052 -246 1052 -246 1155 -246 c 1,37,-1 - 1155 -348 l 1,38,39 - 1092 -348 1092 -348 1022 -337.5 c 128,-1,40 - 952 -327 952 -327 875 -301 c 128,-1,41 - 798 -275 798 -275 735.5 -237 c 128,-1,42 - 673 -199 673 -199 628.5 -138.5 c 128,-1,43 - 584 -78 584 -78 575 -4 c 1,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: R -Encoding: 82 82 44 -Width: 1138 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440 829 1090> 655 102<440 543> 1331 102<440 665> -VStem: 174 266<0 655 758 1331> 772 266<872 1217> 829 260<0 202> -AnchorPoint: "horn" 954 1085 basechar 0 -AnchorPoint: "ogonek" 975 0 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "cedilla" 590 0 basechar 0 -AnchorPoint: "top" 561 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 655 m 1,0,-1 - 440 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 594 1434 l 2,4,5 - 688 1434 688 1434 765.5 1409 c 128,-1,6 - 843 1384 843 1384 892.5 1344 c 128,-1,7 - 942 1304 942 1304 976 1252 c 128,-1,8 - 1010 1200 1010 1200 1024 1148 c 128,-1,9 - 1038 1096 1038 1096 1038 1044 c 0,10,11 - 1038 975 1038 975 1013 908 c 128,-1,12 - 988 841 988 841 926.5 778 c 128,-1,13 - 865 715 865 715 776 684 c 1,14,15 - 881 585 881 585 985.5 363.5 c 128,-1,16 - 1090 142 1090 142 1090 0 c 1,17,-1 - 829 0 l 1,18,19 - 829 142 829 142 721.5 355.5 c 128,-1,20 - 614 569 614 569 500 655 c 1,21,-1 - 440 655 l 1,0,-1 -440 1331 m 1,22,-1 - 440 758 l 1,23,-1 - 532 758 l 2,24,25 - 594 758 594 758 642.5 785 c 128,-1,26 - 691 812 691 812 718 855.5 c 128,-1,27 - 745 899 745 899 758.5 947 c 128,-1,28 - 772 995 772 995 772 1044 c 0,29,30 - 772 1083 772 1083 764 1121.5 c 128,-1,31 - 756 1160 756 1160 737.5 1198 c 128,-1,32 - 719 1236 719 1236 692 1265.5 c 128,-1,33 - 665 1295 665 1295 623.5 1313 c 128,-1,34 - 582 1331 582 1331 532 1331 c 2,35,-1 - 440 1331 l 1,22,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: S -Encoding: 83 83 45 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -20 102<474 721> 1352 102<489 697> -VStem: 162 266<971 1252> 815 266<200 510> -AnchorPoint: "ogonek" 602 0 basechar 0 -AnchorPoint: "horn" 897 1290 basechar 0 -AnchorPoint: "bottom" 578 0 basechar 0 -AnchorPoint: "cedilla" 573 0 basechar 0 -AnchorPoint: "top" 569 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -102 350 m 1,0,-1 - 334 381 l 1,1,2 - 349 262 349 262 424.5 172 c 128,-1,3 - 500 82 500 82 580 82 c 0,4,5 - 699 82 699 82 757 155.5 c 128,-1,6 - 815 229 815 229 815 365 c 0,7,8 - 815 428 815 428 792.5 478.5 c 128,-1,9 - 770 529 770 529 732.5 564.5 c 128,-1,10 - 695 600 695 600 646 629.5 c 128,-1,11 - 597 659 597 659 543 684.5 c 128,-1,12 - 489 710 489 710 434.5 736.5 c 128,-1,13 - 380 763 380 763 331 796.5 c 128,-1,14 - 282 830 282 830 244.5 870.5 c 128,-1,15 - 207 911 207 911 184.5 970 c 128,-1,16 - 162 1029 162 1029 162 1102 c 0,17,18 - 162 1198 162 1198 223.5 1280.5 c 128,-1,19 - 285 1363 285 1363 380.5 1408.5 c 128,-1,20 - 476 1454 476 1454 578 1454 c 0,21,22 - 661 1454 661 1454 724.5 1441.5 c 128,-1,23 - 788 1429 788 1429 828.5 1412 c 128,-1,24 - 869 1395 869 1395 905.5 1361 c 128,-1,25 - 942 1327 942 1327 962 1300.5 c 128,-1,26 - 982 1274 982 1274 1012 1225 c 1,27,-1 - 788 1182 l 1,28,29 - 762 1231 762 1231 744 1257.5 c 128,-1,30 - 726 1284 726 1284 700 1308.5 c 128,-1,31 - 674 1333 674 1333 641 1342.5 c 128,-1,32 - 608 1352 608 1352 561 1352 c 0,33,34 - 511 1352 511 1352 469.5 1283.5 c 128,-1,35 - 428 1215 428 1215 428 1102 c 0,36,37 - 428 1048 428 1048 450.5 1004 c 128,-1,38 - 473 960 473 960 510.5 928.5 c 128,-1,39 - 548 897 548 897 597 869 c 128,-1,40 - 646 841 646 841 700 814.5 c 128,-1,41 - 754 788 754 788 808.5 760 c 128,-1,42 - 863 732 863 732 912 695 c 128,-1,43 - 961 658 961 658 998.5 613.5 c 128,-1,44 - 1036 569 1036 569 1058.5 505.5 c 128,-1,45 - 1081 442 1081 442 1081 365 c 0,46,47 - 1081 197 1081 197 939.5 88.5 c 128,-1,48 - 798 -20 798 -20 565 -20 c 0,49,50 - 389 -20 389 -20 265 86.5 c 128,-1,51 - 141 193 141 193 102 350 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: T -Encoding: 84 84 46 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 43G<508 774> 1331 102<41 508 774 1239> -VStem: 508 266<0 1331> -AnchorPoint: "horn" 1200 1389 basechar 0 -AnchorPoint: "ogonek" 659 0 basechar 0 -AnchorPoint: "bottom" 643 0 basechar 0 -AnchorPoint: "cedilla" 639 0 basechar 0 -AnchorPoint: "top" 643 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -41 1434 m 1,0,-1 - 1243 1434 l 1,1,-1 - 1239 1331 l 1,2,-1 - 774 1331 l 1,3,-1 - 774 0 l 1,4,-1 - 508 0 l 1,5,-1 - 508 1331 l 1,6,-1 - 41 1331 l 1,7,-1 - 41 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: U -Encoding: 85 85 47 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41G<156 422 981 1247> -VStem: 156 266<328 1434> 981 266<297 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -981 1434 m 1,0,-1 - 1247 1434 l 1,1,-1 - 1247 610 l 2,2,3 - 1247 461 1247 461 1217.5 348.5 c 128,-1,4 - 1188 236 1188 236 1139 167 c 128,-1,5 - 1090 98 1090 98 1017 55 c 128,-1,6 - 944 12 944 12 867 -4 c 128,-1,7 - 790 -20 790 -20 696 -20 c 0,8,9 - 625 -20 625 -20 556 -4.5 c 128,-1,10 - 487 11 487 11 412.5 55 c 128,-1,11 - 338 99 338 99 283 166.5 c 128,-1,12 - 228 234 228 234 192 348.5 c 128,-1,13 - 156 463 156 463 156 610 c 2,14,-1 - 156 1434 l 1,15,-1 - 422 1434 l 1,16,-1 - 422 610 l 2,17,18 - 422 480 422 480 439 382.5 c 128,-1,19 - 456 285 456 285 482.5 229 c 128,-1,20 - 509 173 509 173 548.5 138.5 c 128,-1,21 - 588 104 588 104 625.5 93 c 128,-1,22 - 663 82 663 82 709 82 c 0,23,24 - 759 82 759 82 797.5 95.5 c 128,-1,25 - 836 109 836 109 871.5 144.5 c 128,-1,26 - 907 180 907 180 930.5 238 c 128,-1,27 - 954 296 954 296 967.5 390 c 128,-1,28 - 981 484 981 484 981 610 c 2,29,-1 - 981 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: V -Encoding: 86 86 48 -Width: 1153 -VWidth: 0 -Flags: W -HStem: 0 43G<476 683> 1393 41G<25 282 878 1135> -AnchorPoint: "cedilla" 578 0 basechar 0 -AnchorPoint: "ogonek" 578 0 basechar 0 -AnchorPoint: "horn" 983 1085 basechar 0 -AnchorPoint: "bottom" 578 0 basechar 0 -AnchorPoint: "top" 573 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -489 0 m 1,0,-1 - 25 1434 l 1,1,-1 - 268 1434 l 1,2,-1 - 580 473 l 1,3,-1 - 891 1434 l 1,4,-1 - 1135 1434 l 1,5,-1 - 670 0 l 1,6,-1 - 489 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: X -Encoding: 88 88 49 -Width: 1228 -VWidth: 0 -Flags: W -HStem: 0 43G<86 289 800 1079> 1393 41G<90 369 794 999> -AnchorPoint: "horn" 766 1085 basechar 0 -AnchorPoint: "ogonek" 553 0 basechar 0 -AnchorPoint: "cedilla" 553 0 basechar 0 -AnchorPoint: "bottom" 557 0 basechar 0 -AnchorPoint: "top" 557 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -674 795 m 1,0,-1 - 1079 0 l 1,1,-1 - 821 0 l 1,2,-1 - 545 543 l 1,3,-1 - 268 0 l 1,4,-1 - 86 0 l 1,5,-1 - 453 721 l 1,6,-1 - 90 1434 l 1,7,-1 - 348 1434 l 1,8,-1 - 582 975 l 1,9,-1 - 815 1434 l 1,10,-1 - 999 1434 l 1,11,-1 - 674 795 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: W -Encoding: 87 87 50 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43G<486 693 1087 1293> 860 41G<775 1004> 1393 41G<35 292 1488 1745> -AnchorPoint: "horn" 1577 1085 basechar 0 -AnchorPoint: "ogonek" 1188 0 basechar 0 -AnchorPoint: "cedilla" 881 0 basechar 0 -AnchorPoint: "bottom" 899 0 basechar 0 -AnchorPoint: "top" 874 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -991 901 m 1,0,-1 - 1159 381 l 1,1,-1 - 1501 1434 l 1,2,-1 - 1745 1434 l 1,3,-1 - 1280 0 l 1,4,-1 - 1100 0 l 1,5,-1 - 891 647 l 1,6,-1 - 680 0 l 1,7,-1 - 500 0 l 1,8,-1 - 35 1434 l 1,9,-1 - 279 1434 l 1,10,-1 - 618 381 l 1,11,-1 - 788 901 l 1,12,-1 - 991 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Y -Encoding: 89 89 51 -Width: 989 -VWidth: 0 -Flags: W -HStem: 0 43G<383 649> 1393 41G<23 301 768 973> -VStem: 383 266<0 727> -AnchorPoint: "horn" 725 1085 basechar 0 -AnchorPoint: "cedilla" 492 0 basechar 0 -AnchorPoint: "ogonek" 510 0 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "top" 477 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -535 936 m 1,0,-1 - 788 1434 l 1,1,-1 - 973 1434 l 1,2,-1 - 649 801 l 1,3,-1 - 649 0 l 1,4,-1 - 383 0 l 1,5,-1 - 383 727 l 1,6,-1 - 23 1434 l 1,7,-1 - 281 1434 l 1,8,-1 - 535 936 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Z -Encoding: 90 90 52 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<362 983> 1331 102<102 672> -AnchorPoint: "horn" 758 1085 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "ogonek" 799 0 basechar 0 -AnchorPoint: "bottom" 549 0 basechar 0 -AnchorPoint: "top" 512 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -672 1331 m 1,0,-1 - 72 1331 l 1,1,-1 - 102 1434 l 1,2,-1 - 975 1434 l 1,3,-1 - 362 102 l 1,4,-1 - 983 102 l 1,5,-1 - 983 0 l 1,6,-1 - 61 0 l 1,7,-1 - 672 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: exclam -Encoding: 33 33 53 -Width: 448 -VWidth: 0 -Flags: W -HStem: 0 164<113 328> 1393 41G<92 348> -VStem: 92 256<937 1434> 113 215<0 164 369 582> -LayerCount: 2 -Fore -SplineSet -113 164 m 5,0,-1 - 328 164 l 1,1,-1 - 328 0 l 1,2,-1 - 113 0 l 1,3,-1 - 113 164 l 5,0,-1 -348 1434 m 17,4,-1 - 317 369 l 1,5,-1 - 123 369 l 1,6,-1 - 92 1434 l 1,7,-1 - 348 1434 l 17,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: period -Encoding: 46 46 54 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 164<92 307> -VStem: 92 215<0 164> -LayerCount: 2 -Fore -SplineSet -92 164 m 1,0,-1 - 307 164 l 1,1,-1 - 307 0 l 1,2,-1 - 92 0 l 1,3,-1 - 92 164 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: comma -Encoding: 44 44 55 -Width: 448 -VWidth: 0 -Flags: W -HStem: -203 367<-68 38> -VStem: 109 219<-48 164> -LayerCount: 2 -Fore -SplineSet -109 164 m 1,0,-1 - 328 164 l 1,1,2 - 328 109 328 109 325.5 63.5 c 128,-1,3 - 323 18 323 18 317.5 -16.5 c 128,-1,4 - 312 -51 312 -51 307.5 -74 c 128,-1,5 - 303 -97 303 -97 293.5 -120 c 128,-1,6 - 284 -143 284 -143 279.5 -152 c 128,-1,7 - 275 -161 275 -161 263.5 -180 c 128,-1,8 - 252 -199 252 -199 250 -203 c 1,9,-1 - 102 -203 l 1,10,11 - 152 -132 152 -132 152 -51 c 0,12,13 - 152 -26 152 -26 130.5 44 c 128,-1,14 - 109 114 109 114 109 164 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quotesingle -Encoding: 39 39 56 -Width: 428 -VWidth: 0 -Flags: W -HStem: 1024 410<123 297> -VStem: 123 174<1024 1215> -LayerCount: 2 -Fore -SplineSet -328 1434 m 25,0,-1 - 297 1024 l 1,1,-1 - 123 1024 l 1,2,-1 - 92 1434 l 1,3,-1 - 328 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quotedbl -Encoding: 34 34 57 -Width: 724 -VWidth: 0 -Flags: W -HStem: 1024 410<123 297 420 594> -VStem: 123 174<1024 1215> 420 174<1024 1215> -LayerCount: 2 -Fore -Refer: 56 39 N 1 0 0 1 0 0 2 -Refer: 56 39 N 1 0 0 1 297 0 2 -Validated: 1 -EndChar - -StartChar: dollar -Encoding: 36 36 58 -Width: 1044 -VWidth: 0 -Flags: W -HStem: 0 43G<385 469 551 635> 150 102<469 551> 158 109<245 385> 1112 102<469 551> 1311 41G<385 469 551 635> -VStem: 61 256<851 1056> 385 84<0 150 266 662 831 1079 1214 1352> 551 84<0 152 279 602 772 1094 1208 1352> 717 256<331 569> -LayerCount: 2 -Fore -SplineSet -913 1087 m 1,0,-1 - 795 1016 l 1,1,2 - 732 1068 732 1068 635 1094 c 1,3,-1 - 635 750 l 1,4,5 - 785 704 785 704 879 625.5 c 128,-1,6 - 973 547 973 547 973 463 c 0,7,8 - 973 353 973 353 875 273.5 c 128,-1,9 - 777 194 777 194 635 164 c 1,10,-1 - 635 0 l 1,11,-1 - 551 0 l 1,12,-1 - 551 152 l 1,13,14 - 535 150 535 150 500 150 c 2,15,-1 - 469 150 l 1,16,-1 - 469 0 l 1,17,-1 - 385 0 l 1,18,-1 - 385 158 l 1,19,20 - 196 187 196 187 61 287 c 1,21,-1 - 150 362 l 1,22,23 - 255 290 255 290 385 266 c 1,24,-1 - 385 682 l 1,25,26 - 245 725 245 725 153 793.5 c 128,-1,27 - 61 862 61 862 61 950 c 0,28,29 - 61 1052 61 1052 158.5 1122 c 128,-1,30 - 256 1192 256 1192 385 1208 c 1,31,-1 - 385 1352 l 1,32,-1 - 469 1352 l 1,33,-1 - 469 1214 l 1,34,35 - 508 1214 508 1214 551 1208 c 1,36,-1 - 551 1352 l 1,37,-1 - 635 1352 l 1,38,-1 - 635 1196 l 1,39,40 - 808 1162 808 1162 913 1087 c 1,0,-1 -385 831 m 1,41,-1 - 385 1079 l 1,42,43 - 317 1028 317 1028 317 950 c 0,44,45 - 317 879 317 879 385 831 c 1,41,-1 -469 662 m 1,46,-1 - 469 254 l 1,47,48 - 489 252 489 252 530 252 c 2,49,-1 - 551 252 l 1,50,-1 - 551 643 l 1,51,52 - 517 653 517 653 469 662 c 1,46,-1 -469 791 m 1,53,54 - 503 781 503 781 551 772 c 1,55,-1 - 551 1108 l 1,56,57 - 511 1112 511 1112 489 1112 c 0,58,59 - 475 1112 475 1112 469 1110 c 1,60,-1 - 469 791 l 1,53,54 -635 602 m 1,61,-1 - 635 279 l 1,62,63 - 717 330 717 330 717 463 c 0,64,65 - 717 547 717 547 635 602 c 1,61,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: bar -Encoding: 124 124 59 -Width: 356 -VWidth: 0 -Flags: W -HStem: 0 43G<92 256> 1393 41G<92 256> -VStem: 92 164<0 1434> -LayerCount: 2 -Fore -SplineSet -256 1434 m 25,0,-1 - 256 0 l 1,1,-1 - 92 0 l 1,2,-1 - 92 1434 l 1,3,-1 - 256 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: slash -Encoding: 47 47 60 -Width: 905 -VWidth: 0 -Flags: W -HStem: 0 43G<61 281> 1393 41G<624 844> -LayerCount: 2 -Fore -SplineSet -844 1434 m 1,0,-1 - 264 0 l 1,1,-1 - 61 0 l 1,2,-1 - 641 1434 l 1,3,-1 - 844 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: backslash -Encoding: 92 92 61 -Width: 905 -VWidth: 0 -Flags: W -HStem: 0 43G<624 844> 1393 41G<61 281> -LayerCount: 2 -Fore -SplineSet -61 1434 m 1,0,-1 - 264 1434 l 1,1,-1 - 844 0 l 1,2,-1 - 641 0 l 1,3,-1 - 61 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: question -Encoding: 63 63 62 -Width: 944 -VWidth: 0 -Flags: W -HStem: 0 164<291 506> 369 215<311 485> 1270 102<279 523> -VStem: 291 215<0 164> 311 174<369 469> 627 256<716 1108> -LayerCount: 2 -Fore -SplineSet -291 164 m 1,0,-1 - 506 164 l 1,1,-1 - 506 0 l 1,2,-1 - 291 0 l 1,3,-1 - 291 164 l 1,0,-1 -502 487 m 1,4,-1 - 485 369 l 1,5,-1 - 311 369 l 1,6,-1 - 281 584 l 1,7,-1 - 389 584 l 2,8,9 - 507 584 507 584 567 660 c 128,-1,10 - 627 736 627 736 627 901 c 0,11,12 - 627 1083 627 1083 572 1176.5 c 128,-1,13 - 517 1270 517 1270 379 1270 c 0,14,15 - 349 1270 349 1270 329.5 1265 c 128,-1,16 - 310 1260 310 1260 297 1247.5 c 128,-1,17 - 284 1235 284 1235 277 1223.5 c 128,-1,18 - 270 1212 270 1212 258.5 1188 c 128,-1,19 - 247 1164 247 1164 236 1147 c 1,20,-1 - 41 1194 l 1,21,22 - 181 1372 181 1372 410 1372 c 0,23,24 - 613 1372 613 1372 748 1242 c 128,-1,25 - 883 1112 883 1112 883 901 c 0,26,27 - 883 811 883 811 850 736 c 128,-1,28 - 817 661 817 661 761.5 611.5 c 128,-1,29 - 706 562 706 562 640.5 530.5 c 128,-1,30 - 575 499 575 499 502 487 c 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: colon -Encoding: 58 58 63 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 164<92 307> 614 164<92 307> -VStem: 92 215<0 164 614 778> -LayerCount: 2 -Fore -Refer: 54 46 N 1 0 0 1 0 0 2 -Refer: 54 46 N 1 0 0 1 0 614 2 -Validated: 1 -EndChar - -StartChar: semicolon -Encoding: 59 59 64 -Width: 407 -VWidth: 0 -Flags: W -HStem: -203 367<-86 20> 614 164<92 307> -VStem: 90 219<-48 164> 92 215<614 778> -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 -18 0 2 -Refer: 54 46 N 1 0 0 1 0 614 2 -Validated: 1 -EndChar - -StartChar: percent -Encoding: 37 37 65 -Width: 1273 -VWidth: 0 -Flags: W -HStem: 156 109<845 973> 473 109<845 973> 729 109<292 421> 1047 109<292 421> -VStem: 82 201<844 1040> 430 201<844 1040> 635 201<271 467> 983 201<271 467> -LayerCount: 2 -Fore -SplineSet -836 369 m 0,0,1 - 836 264 836 264 909 264 c 0,2,3 - 983 264 983 264 983 369 c 0,4,5 - 983 473 983 473 909 473 c 0,6,7 - 836 473 836 473 836 369 c 0,0,1 -635 369 m 128,-1,9 - 635 427 635 427 660.5 470.5 c 128,-1,10 - 686 514 686 514 728 537.5 c 128,-1,11 - 770 561 770 561 815.5 571.5 c 128,-1,12 - 861 582 861 582 909 582 c 128,-1,13 - 957 582 957 582 1002.5 571.5 c 128,-1,14 - 1048 561 1048 561 1090.5 537.5 c 128,-1,15 - 1133 514 1133 514 1158.5 470.5 c 128,-1,16 - 1184 427 1184 427 1184 369 c 128,-1,17 - 1184 311 1184 311 1158.5 267.5 c 128,-1,18 - 1133 224 1133 224 1090.5 200.5 c 128,-1,19 - 1048 177 1048 177 1002.5 166.5 c 128,-1,20 - 957 156 957 156 909 156 c 128,-1,21 - 861 156 861 156 815.5 166.5 c 128,-1,22 - 770 177 770 177 728 200.5 c 128,-1,23 - 686 224 686 224 660.5 267.5 c 128,-1,8 - 635 311 635 311 635 369 c 128,-1,9 -283 942 m 0,24,25 - 283 838 283 838 356 838 c 0,26,27 - 430 838 430 838 430 942 c 0,28,29 - 430 1047 430 1047 356 1047 c 0,30,31 - 283 1047 283 1047 283 942 c 0,24,25 -82 942 m 128,-1,33 - 82 1000 82 1000 107.5 1043.5 c 128,-1,34 - 133 1087 133 1087 175 1110.5 c 128,-1,35 - 217 1134 217 1134 262.5 1144.5 c 128,-1,36 - 308 1155 308 1155 356 1155 c 128,-1,37 - 404 1155 404 1155 449.5 1144.5 c 128,-1,38 - 495 1134 495 1134 537.5 1110.5 c 128,-1,39 - 580 1087 580 1087 605.5 1043.5 c 128,-1,40 - 631 1000 631 1000 631 942 c 128,-1,41 - 631 884 631 884 605.5 840.5 c 128,-1,42 - 580 797 580 797 537.5 773.5 c 128,-1,43 - 495 750 495 750 449.5 739.5 c 128,-1,44 - 404 729 404 729 356 729 c 128,-1,45 - 308 729 308 729 262.5 739.5 c 128,-1,46 - 217 750 217 750 175 773.5 c 128,-1,47 - 133 797 133 797 107.5 840.5 c 128,-1,32 - 82 884 82 884 82 942 c 128,-1,33 -143 264 m 1,48,-1 - 903 1047 l 1,49,-1 - 1122 1047 l 1,50,-1 - 362 264 l 1,51,-1 - 143 264 l 1,48,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: numbersign -Encoding: 35 35 66 -Width: 1124 -VWidth: 0 -Flags: W -HStem: 410 102<102 227 481 567 823 971> 840 102<154 303 557 643 899 1022> -LayerCount: 2 -Fore -SplineSet -465 410 m 1,0,-1 - 414 123 l 1,1,-1 - 176 123 l 1,2,-1 - 227 410 l 1,3,-1 - 102 410 l 1,4,-1 - 102 512 l 1,5,-1 - 244 512 l 1,6,-1 - 303 840 l 1,7,-1 - 154 840 l 1,8,-1 - 154 942 l 1,9,-1 - 319 942 l 1,10,-1 - 371 1229 l 1,11,-1 - 608 1229 l 1,12,-1 - 557 942 l 1,13,-1 - 662 942 l 1,14,-1 - 711 1229 l 1,15,-1 - 948 1229 l 1,16,-1 - 899 942 l 1,17,-1 - 1022 942 l 1,18,-1 - 1022 840 l 1,19,-1 - 881 840 l 1,20,-1 - 823 512 l 1,21,-1 - 971 512 l 1,22,-1 - 971 410 l 1,23,-1 - 805 410 l 1,24,-1 - 756 123 l 1,25,-1 - 518 123 l 1,26,-1 - 567 410 l 1,27,-1 - 465 410 l 1,0,-1 -481 512 m 1,28,-1 - 586 512 l 1,29,-1 - 643 840 l 1,30,-1 - 541 840 l 1,31,-1 - 481 512 l 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: zero -Encoding: 48 48 67 -Width: 1024 -VWidth: 0 -Flags: W -HStem: -20 102<419 614> 1004 102<427 611> -VStem: 72 256<287 766> 696 256<294 791> -LayerCount: 2 -Fore -SplineSet -696 543 m 0,0,1 - 696 613 696 613 691.5 674.5 c 128,-1,2 - 687 736 687 736 675 798.5 c 128,-1,3 - 663 861 663 861 644.5 905 c 128,-1,4 - 626 949 626 949 595 976.5 c 128,-1,5 - 564 1004 564 1004 524 1004 c 0,6,7 - 469 1004 469 1004 429 964.5 c 128,-1,8 - 389 925 389 925 368 856.5 c 128,-1,9 - 347 788 347 788 337.5 711 c 128,-1,10 - 328 634 328 634 328 543 c 0,11,12 - 328 477 328 477 330 429.5 c 128,-1,13 - 332 382 332 382 338 324.5 c 128,-1,14 - 344 267 344 267 357.5 227.5 c 128,-1,15 - 371 188 371 188 392 152.5 c 128,-1,16 - 413 117 413 117 446.5 99.5 c 128,-1,17 - 480 82 480 82 524 82 c 0,18,19 - 561 82 561 82 590 100.5 c 128,-1,20 - 619 119 619 119 637 154 c 128,-1,21 - 655 189 655 189 667.5 230.5 c 128,-1,22 - 680 272 680 272 686 328 c 128,-1,23 - 692 384 692 384 694 433 c 128,-1,24 - 696 482 696 482 696 543 c 0,0,1 -952 543 m 128,-1,26 - 952 387 952 387 893.5 258.5 c 128,-1,27 - 835 130 835 130 729.5 55 c 128,-1,28 - 624 -20 624 -20 494 -20 c 0,29,30 - 366 -20 366 -20 268 61.5 c 128,-1,31 - 170 143 170 143 121 270 c 128,-1,32 - 72 397 72 397 72 543 c 0,33,34 - 72 683 72 683 134.5 814.5 c 128,-1,35 - 197 946 197 946 295 1026 c 128,-1,36 - 393 1106 393 1106 494 1106 c 0,37,38 - 624 1106 624 1106 729.5 1031 c 128,-1,39 - 835 956 835 956 893.5 827.5 c 128,-1,25 - 952 699 952 699 952 543 c 128,-1,26 -EndSplineSet -Validated: 1 -EndChar - -StartChar: one -Encoding: 49 49 68 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 43G<342 598> 961 102<283 342> -VStem: 342 256<0 967> -LayerCount: 2 -Fore -SplineSet -598 1096 m 1,0,-1 - 598 0 l 1,1,-1 - 342 0 l 1,2,-1 - 342 967 l 1,3,-1 - 283 961 l 1,4,-1 - 283 1063 l 1,5,-1 - 598 1096 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: two -Encoding: 50 50 69 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<379 819> 983 102<381 533> -VStem: 123 256<102 216> 557 256<616 932> -LayerCount: 2 -Fore -SplineSet -123 0 m 1,0,1 - 123 94 123 94 147 171.5 c 128,-1,2 - 171 249 171 249 209 301.5 c 128,-1,3 - 247 354 247 354 293.5 398.5 c 128,-1,4 - 340 443 340 443 386.5 481.5 c 128,-1,5 - 433 520 433 520 471 559 c 128,-1,6 - 509 598 509 598 533 649 c 128,-1,7 - 557 700 557 700 557 760 c 0,8,9 - 557 881 557 881 536.5 932 c 128,-1,10 - 516 983 516 983 469 983 c 0,11,12 - 413 983 413 983 385.5 949 c 128,-1,13 - 358 915 358 915 324 827 c 1,14,-1 - 123 877 l 1,15,16 - 222 1085 222 1085 500 1085 c 0,17,18 - 633 1085 633 1085 723 992 c 128,-1,19 - 813 899 813 899 813 760 c 0,20,21 - 813 693 813 693 789 635.5 c 128,-1,22 - 765 578 765 578 727 536 c 128,-1,23 - 689 494 689 494 642.5 455.5 c 128,-1,24 - 596 417 596 417 549.5 380 c 128,-1,25 - 503 343 503 343 465 304 c 128,-1,26 - 427 265 427 265 403 213.5 c 128,-1,27 - 379 162 379 162 379 102 c 1,28,-1 - 819 102 l 1,29,-1 - 819 0 l 1,30,-1 - 123 0 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: three -Encoding: 51 51 70 -Width: 942 -VWidth: 0 -Flags: W -HStem: -258 102<324 529> 422 102<358 510> 983 102<339 529> -VStem: 567 256<597 912> 606 256<-39 301> -LayerCount: 2 -Fore -SplineSet -358 422 m 1,0,-1 - 358 524 l 1,1,2 - 478 524 478 524 522.5 578 c 128,-1,3 - 567 632 567 632 567 760 c 0,4,5 - 567 879 567 879 535.5 931 c 128,-1,6 - 504 983 504 983 438 983 c 0,7,8 - 415 983 415 983 398 980 c 128,-1,9 - 381 977 381 977 368.5 969 c 128,-1,10 - 356 961 356 961 348 953.5 c 128,-1,11 - 340 946 340 946 332 930 c 128,-1,12 - 324 914 324 914 320 902 c 128,-1,13 - 316 890 316 890 307.5 866.5 c 128,-1,14 - 299 843 299 843 293 827 c 1,15,-1 - 113 877 l 1,16,17 - 160 975 160 975 242 1030 c 128,-1,18 - 324 1085 324 1085 469 1085 c 0,19,20 - 606 1085 606 1085 714.5 990 c 128,-1,21 - 823 895 823 895 823 760 c 0,22,23 - 823 560 823 560 631 473 c 1,24,25 - 745 422 745 422 803.5 328.5 c 128,-1,26 - 862 235 862 235 862 115 c 0,27,28 - 862 19 862 19 800.5 -69 c 128,-1,29 - 739 -157 739 -157 648 -207.5 c 128,-1,30 - 557 -258 557 -258 469 -258 c 0,31,32 - 321 -258 321 -258 223 -198.5 c 128,-1,33 - 125 -139 125 -139 80 -45 c 1,34,-1 - 260 4 l 1,35,36 - 277 -40 277 -40 289.5 -64.5 c 128,-1,37 - 302 -89 302 -89 322 -112.5 c 128,-1,38 - 342 -136 342 -136 370 -146 c 128,-1,39 - 398 -156 398 -156 438 -156 c 0,40,41 - 505 -156 505 -156 555.5 -78.5 c 128,-1,42 - 606 -1 606 -1 606 115 c 0,43,44 - 606 153 606 153 604 182 c 128,-1,45 - 602 211 602 211 596 244.5 c 128,-1,46 - 590 278 590 278 579.5 302.5 c 128,-1,47 - 569 327 569 327 550 350.5 c 128,-1,48 - 531 374 531 374 505.5 389 c 128,-1,49 - 480 404 480 404 442.5 413 c 128,-1,50 - 405 422 405 422 358 422 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: four -Encoding: 52 52 71 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<223 524 780 891> -VStem: 524 256<-238 0 102 748> -LayerCount: 2 -Fore -SplineSet -51 68 m 1,0,-1 - 526 1085 l 1,1,-1 - 780 1085 l 1,2,-1 - 780 102 l 1,3,-1 - 891 102 l 1,4,-1 - 891 0 l 1,5,-1 - 780 0 l 1,6,-1 - 780 -238 l 1,7,-1 - 524 -238 l 1,8,-1 - 524 0 l 1,9,-1 - 51 0 l 1,10,-1 - 51 68 l 1,0,-1 -524 102 m 1,11,-1 - 524 748 l 1,12,-1 - 223 102 l 1,13,-1 - 524 102 l 1,11,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: five -Encoding: 53 53 72 -Width: 942 -VWidth: 0 -Flags: W -HStem: -258 102<347 534> 983 102<514 807> -VStem: 586 256<-38 401> -LayerCount: 2 -Fore -SplineSet -182 555 m 1,0,-1 - 274 1085 l 1,1,-1 - 807 1085 l 1,2,-1 - 807 983 l 1,3,-1 - 514 983 l 1,4,-1 - 455 635 l 1,5,6 - 545 617 545 617 612.5 585 c 128,-1,7 - 680 553 680 553 723.5 511 c 128,-1,8 - 767 469 767 469 793.5 413.5 c 128,-1,9 - 820 358 820 358 831 298.5 c 128,-1,10 - 842 239 842 239 842 166 c 0,11,12 - 842 73 842 73 811.5 -8 c 128,-1,13 - 781 -89 781 -89 731.5 -142.5 c 128,-1,14 - 682 -196 682 -196 618.5 -227 c 128,-1,15 - 555 -258 555 -258 489 -258 c 0,16,17 - 341 -258 341 -258 243 -198.5 c 128,-1,18 - 145 -139 145 -139 100 -45 c 1,19,-1 - 291 4 l 1,20,21 - 304 -28 304 -28 307.5 -37 c 128,-1,22 - 311 -46 311 -46 322 -70.5 c 128,-1,23 - 333 -95 333 -95 339.5 -102 c 128,-1,24 - 346 -109 346 -109 359 -123.5 c 128,-1,25 - 372 -138 372 -138 385 -142.5 c 128,-1,26 - 398 -147 398 -147 417 -151.5 c 128,-1,27 - 436 -156 436 -156 459 -156 c 0,28,29 - 586 -156 586 -156 586 166 c 0,30,31 - 586 211 586 211 585 237.5 c 128,-1,32 - 584 264 584 264 580.5 302.5 c 128,-1,33 - 577 341 577 341 569.5 364.5 c 128,-1,34 - 562 388 562 388 547.5 418 c 128,-1,35 - 533 448 533 448 513 465.5 c 128,-1,36 - 493 483 493 483 462.5 502.5 c 128,-1,37 - 432 522 432 522 392.5 532 c 128,-1,38 - 353 542 353 542 300 548.5 c 128,-1,39 - 247 555 247 555 182 555 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: six -Encoding: 54 54 73 -Width: 942 -VWidth: 0 -Flags: W -HStem: -20 102<372 554> 586 102<359 565> -VStem: 70 256<205 567> 616 256<171 519> -LayerCount: 2 -Fore -SplineSet -338 569 m 1,0,1 - 326 484 326 484 326 385 c 0,2,3 - 326 228 326 228 355.5 155 c 128,-1,4 - 385 82 385 82 459 82 c 0,5,6 - 515 82 515 82 551.5 121 c 128,-1,7 - 588 160 588 160 602 218 c 128,-1,8 - 616 276 616 276 616 352 c 0,9,10 - 616 445 616 445 582 515.5 c 128,-1,11 - 548 586 548 586 477 586 c 0,12,13 - 414 586 414 586 338 569 c 1,0,1 -358 682 m 1,14,15 - 402 688 402 688 446 688 c 0,16,17 - 512 688 512 688 572 677 c 128,-1,18 - 632 666 632 666 687.5 640.5 c 128,-1,19 - 743 615 743 615 783.5 577 c 128,-1,20 - 824 539 824 539 848 481 c 128,-1,21 - 872 423 872 423 872 352 c 0,22,23 - 872 263 872 263 839 190.5 c 128,-1,24 - 806 118 806 118 751.5 73 c 128,-1,25 - 697 28 697 28 629.5 4 c 128,-1,26 - 562 -20 562 -20 489 -20 c 0,27,28 - 383 -20 383 -20 288 29 c 128,-1,29 - 193 78 193 78 131.5 172.5 c 128,-1,30 - 70 267 70 267 70 385 c 0,31,32 - 70 494 70 494 91.5 598 c 128,-1,33 - 113 702 113 702 149.5 785.5 c 128,-1,34 - 186 869 186 869 233.5 946 c 128,-1,35 - 281 1023 281 1023 333 1082 c 128,-1,36 - 385 1141 385 1141 437 1191 c 128,-1,37 - 489 1241 489 1241 536.5 1276 c 128,-1,38 - 584 1311 584 1311 620 1336 c 0,39,40 - 656 1360 656 1360 678 1372 c 2,41,-1 - 700 1384 l 1,42,-1 - 770 1323 l 1,43,44 - 764 1319 764 1319 752.5 1311 c 128,-1,45 - 741 1303 741 1303 706.5 1274.5 c 128,-1,46 - 672 1246 672 1246 639.5 1212.5 c 128,-1,47 - 607 1179 607 1179 563.5 1123.5 c 128,-1,48 - 520 1068 520 1068 484 1006.5 c 128,-1,49 - 448 945 448 945 413.5 859.5 c 128,-1,50 - 379 774 379 774 358 682 c 1,14,15 -EndSplineSet -Validated: 1 -EndChar - -StartChar: seven -Encoding: 55 55 74 -Width: 942 -VWidth: 0 -Flags: W -HStem: 983 102<170 565> -VStem: 139 664 -LayerCount: 2 -Fore -SplineSet -170 1085 m 1,0,-1 - 803 1085 l 1,1,-1 - 803 983 l 1,2,-1 - 475 -238 l 1,3,-1 - 238 -238 l 1,4,-1 - 565 983 l 1,5,-1 - 139 983 l 1,6,-1 - 170 1085 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: nine -Encoding: 57 57 75 -Width: 942 -VWidth: 0 -Flags: W -HStem: 397 102<387 587> 1004 102<380 540> -VStem: 70 256<568 899> 616 256<523 862> -LayerCount: 2 -Fore -SplineSet -606 516 m 1,0,1 - 616 604 616 604 616 680 c 0,2,3 - 616 828 616 828 570 916 c 128,-1,4 - 524 1004 524 1004 453 1004 c 0,5,6 - 409 1004 409 1004 379.5 960 c 128,-1,7 - 350 916 350 916 338 852.5 c 128,-1,8 - 326 789 326 789 326 713 c 128,-1,9 - 326 637 326 637 369 568.5 c 128,-1,10 - 412 500 412 500 465 500 c 0,11,12 - 534 500 534 500 606 516 c 1,0,1 -588 403 m 1,13,14 - 545 397 545 397 496 397 c 0,15,16 - 429 397 429 397 370 406 c 128,-1,17 - 311 415 311 415 254.5 437.5 c 128,-1,18 - 198 460 198 460 158 495 c 128,-1,19 - 118 530 118 530 94 586 c 128,-1,20 - 70 642 70 642 70 713 c 0,21,22 - 70 892 70 892 189 999 c 128,-1,23 - 308 1106 308 1106 483 1106 c 0,24,25 - 548 1106 548 1106 616.5 1073.5 c 128,-1,26 - 685 1041 685 1041 742 986 c 128,-1,27 - 799 931 799 931 835.5 850 c 128,-1,28 - 872 769 872 769 872 680 c 0,29,30 - 872 571 872 571 850.5 467.5 c 128,-1,31 - 829 364 829 364 792.5 282 c 128,-1,32 - 756 200 756 200 708.5 124.5 c 128,-1,33 - 661 49 661 49 609 -8.5 c 128,-1,34 - 557 -66 557 -66 505 -114.5 c 128,-1,35 - 453 -163 453 -163 405.5 -196.5 c 128,-1,36 - 358 -230 358 -230 322 -254 c 0,37,38 - 286 -278 286 -278 264 -288 c 2,39,-1 - 242 -299 l 1,40,-1 - 172 -238 l 1,41,42 - 185 -231 185 -231 207 -216 c 128,-1,43 - 229 -201 229 -201 289.5 -144.5 c 128,-1,44 - 350 -88 350 -88 401 -21 c 128,-1,45 - 452 46 452 46 506.5 160 c 128,-1,46 - 561 274 561 274 588 403 c 1,13,14 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eight -Encoding: 56 56 76 -Width: 942 -VWidth: 0 -Flags: W -HStem: -20 102<367 585> 1352 102<394 555> -VStem: 41 266<194 533> 90 266<960 1258> 604 266<937 1258> 635 266<190 530> -LayerCount: 2 -Fore -SplineSet -356 1102 m 0,0,1 - 356 1040 356 1040 383.5 989 c 128,-1,2 - 411 938 411 938 446.5 907.5 c 128,-1,3 - 482 877 482 877 541 840 c 1,4,5 - 579 885 579 885 591.5 945 c 128,-1,6 - 604 1005 604 1005 604 1085 c 0,7,8 - 604 1208 604 1208 572 1280 c 128,-1,9 - 540 1352 540 1352 475 1352 c 0,10,11 - 407 1352 407 1352 381.5 1291.5 c 128,-1,12 - 356 1231 356 1231 356 1102 c 0,0,1 -293 752 m 1,13,14 - 247 782 247 782 214 811.5 c 128,-1,15 - 181 841 181 841 151 882.5 c 128,-1,16 - 121 924 121 924 105.5 979 c 128,-1,17 - 90 1034 90 1034 90 1102 c 0,18,19 - 90 1199 90 1199 147.5 1280.5 c 128,-1,20 - 205 1362 205 1362 297.5 1408 c 128,-1,21 - 390 1454 390 1454 492 1454 c 0,22,23 - 643 1454 643 1454 756.5 1347.5 c 128,-1,24 - 870 1241 870 1241 870 1085 c 0,25,26 - 870 1000 870 1000 813 916 c 128,-1,27 - 756 832 756 832 668 762 c 1,28,29 - 720 729 720 729 757.5 696.5 c 128,-1,30 - 795 664 795 664 830 617 c 128,-1,31 - 865 570 865 570 883 506.5 c 128,-1,32 - 901 443 901 443 901 365 c 0,33,34 - 901 198 901 198 776.5 89 c 128,-1,35 - 652 -20 652 -20 457 -20 c 0,36,37 - 284 -20 284 -20 162.5 94.5 c 128,-1,38 - 41 209 41 209 41 365 c 0,39,40 - 41 477 41 477 112 577.5 c 128,-1,41 - 183 678 183 678 293 752 c 1,13,14 -403 686 m 1,42,43 - 347 636 347 636 327 558 c 128,-1,44 - 307 480 307 480 307 365 c 0,45,46 - 307 301 307 301 313.5 254 c 128,-1,47 - 320 207 320 207 337 166 c 128,-1,48 - 354 125 354 125 387.5 103.5 c 128,-1,49 - 421 82 421 82 471 82 c 0,50,51 - 523 82 523 82 556.5 100.5 c 128,-1,52 - 590 119 590 119 607 159 c 128,-1,53 - 624 199 624 199 629.5 245.5 c 128,-1,54 - 635 292 635 292 635 365 c 0,55,56 - 635 428 635 428 617.5 478 c 128,-1,57 - 600 528 600 528 563 566.5 c 128,-1,58 - 526 605 526 605 492 629.5 c 128,-1,59 - 458 654 458 654 403 686 c 1,42,43 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ampersand -Encoding: 38 38 77 -Width: 1265 -VWidth: 0 -Flags: W -HStem: -20 102<450 784> 0 43G<902 1153> 1270 102<564 754> -VStem: 61 256<257 641> 311 231<914 1248> 973 215<498 829> -LayerCount: 2 -Fore -SplineSet -991 1208 m 1,0,-1 - 782 1174 l 1,1,2 - 768 1204 768 1204 761 1216.5 c 128,-1,3 - 754 1229 754 1229 738 1244.5 c 128,-1,4 - 722 1260 722 1260 699 1265 c 128,-1,5 - 676 1270 676 1270 639 1270 c 0,6,7 - 606 1270 606 1270 585 1254.5 c 128,-1,8 - 564 1239 564 1239 555.5 1207 c 128,-1,9 - 547 1175 547 1175 545 1149.5 c 128,-1,10 - 543 1124 543 1124 543 1081 c 0,11,12 - 543 1025 543 1025 576 942.5 c 128,-1,13 - 609 860 609 860 636.5 812.5 c 128,-1,14 - 664 765 664 765 690 725 c 2,15,-1 - 928 352 l 1,16,17 - 973 514 973 514 973 877 c 1,18,-1 - 1188 829 l 1,19,20 - 1188 663 1188 663 1145 499.5 c 128,-1,21 - 1102 336 1102 336 1016 213 c 1,22,-1 - 1153 0 l 1,23,-1 - 928 0 l 1,24,-1 - 881 74 l 1,25,26 - 750 -20 750 -20 575 -20 c 0,27,28 - 475 -20 475 -20 382.5 14 c 128,-1,29 - 290 48 290 48 218.5 107.5 c 128,-1,30 - 147 167 147 167 104 257 c 128,-1,31 - 61 347 61 347 61 451 c 0,32,33 - 61 602 61 602 150 716.5 c 128,-1,34 - 239 831 239 831 369 885 c 1,35,36 - 311 992 311 992 311 1081 c 0,37,38 - 311 1372 311 1372 670 1372 c 0,39,40 - 787 1372 787 1372 876 1319 c 128,-1,41 - 965 1266 965 1266 991 1208 c 1,0,-1 -432 774 m 1,42,43 - 377 729 377 729 347 645.5 c 128,-1,44 - 317 562 317 562 317 451 c 0,45,46 - 317 278 317 278 390 180 c 128,-1,47 - 463 82 463 82 606 82 c 0,48,49 - 747 82 747 82 825 160 c 1,50,-1 - 432 774 l 1,42,43 -EndSplineSet -Validated: 1 -EndChar - -StartChar: parenleft -Encoding: 40 40 78 -Width: 641 -VWidth: 0 -Flags: W -HStem: 0 43G<359 539> 1393 41G<359 539> -VStem: 102 256<389 1044> -LayerCount: 2 -Fore -SplineSet -102 717 m 128,-1,1 - 102 821 102 821 117 917.5 c 128,-1,2 - 132 1014 132 1014 156 1083.5 c 128,-1,3 - 180 1153 180 1153 209 1213.5 c 128,-1,4 - 238 1274 238 1274 267.5 1313.5 c 128,-1,5 - 297 1353 297 1353 321 1381 c 0,6,7 - 345 1410 345 1410 360 1422 c 2,8,-1 - 375 1434 l 1,9,-1 - 539 1434 l 1,10,11 - 532 1424 532 1424 519.5 1404.5 c 128,-1,12 - 507 1385 507 1385 476 1317 c 128,-1,13 - 445 1249 445 1249 421 1172.5 c 128,-1,14 - 397 1096 397 1096 377.5 972.5 c 128,-1,15 - 358 849 358 849 358 717 c 128,-1,16 - 358 585 358 585 376.5 462.5 c 128,-1,17 - 395 340 395 340 421.5 260 c 128,-1,18 - 448 180 448 180 475 118 c 128,-1,19 - 502 56 502 56 520 28 c 2,20,-1 - 539 0 l 1,21,-1 - 375 0 l 1,22,23 - 369 4 369 4 359.5 12.5 c 128,-1,24 - 350 21 350 21 321.5 52.5 c 128,-1,25 - 293 84 293 84 267 121 c 128,-1,26 - 241 158 241 158 209.5 220 c 128,-1,27 - 178 282 178 282 155.5 351 c 128,-1,28 - 133 420 133 420 117.5 516.5 c 128,-1,0 - 102 613 102 613 102 717 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: parenright -Encoding: 41 41 79 -Width: 641 -VWidth: 0 -Flags: W -HStem: 0 43G<102 282> 1393 41G<102 282> -VStem: 283 256<389 1044> -LayerCount: 2 -Fore -SplineSet -539 717 m 128,-1,1 - 539 613 539 613 524 516.5 c 128,-1,2 - 509 420 509 420 485 350.5 c 128,-1,3 - 461 281 461 281 431.5 220.5 c 128,-1,4 - 402 160 402 160 373 120.5 c 128,-1,5 - 344 81 344 81 320 53 c 0,6,7 - 296 24 296 24 281 12 c 2,8,-1 - 266 0 l 1,9,-1 - 102 0 l 1,10,11 - 109 10 109 10 121.5 29.5 c 128,-1,12 - 134 49 134 49 165 117 c 128,-1,13 - 196 185 196 185 220 261.5 c 128,-1,14 - 244 338 244 338 263.5 461.5 c 128,-1,15 - 283 585 283 585 283 717 c 128,-1,16 - 283 849 283 849 264.5 971.5 c 128,-1,17 - 246 1094 246 1094 219 1174 c 128,-1,18 - 192 1254 192 1254 166 1316 c 0,19,20 - 138 1378 138 1378 120 1406 c 2,21,-1 - 102 1434 l 1,22,-1 - 266 1434 l 1,23,24 - 272 1430 272 1430 281.5 1421.5 c 128,-1,25 - 291 1413 291 1413 319.5 1381.5 c 128,-1,26 - 348 1350 348 1350 374 1313 c 128,-1,27 - 400 1276 400 1276 431.5 1214 c 128,-1,28 - 463 1152 463 1152 485.5 1083 c 128,-1,29 - 508 1014 508 1014 523.5 917.5 c 128,-1,0 - 539 821 539 821 539 717 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: asterisk -Encoding: 42 42 80 -Width: 921 -VWidth: 0 -Flags: W -LayerCount: 2 -Fore -SplineSet -395 1092 m 1,0,-1 - 373 1374 l 1,1,-1 - 549 1374 l 1,2,-1 - 526 1092 l 1,3,-1 - 791 1200 l 1,4,-1 - 844 1032 l 1,5,-1 - 567 967 l 1,6,-1 - 752 750 l 1,7,-1 - 610 645 l 1,8,-1 - 461 887 l 1,9,-1 - 311 645 l 1,10,-1 - 170 750 l 1,11,-1 - 354 967 l 1,12,-1 - 78 1032 l 1,13,-1 - 131 1200 l 1,14,-1 - 395 1092 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: plus -Encoding: 43 43 81 -Width: 856 -VWidth: 0 -Flags: W -HStem: 348 102<82 332 524 774> -VStem: 332 193<53 348 451 745> -LayerCount: 2 -Fore -SplineSet -524 348 m 1,0,-1 - 524 53 l 1,1,-1 - 332 53 l 1,2,-1 - 332 348 l 1,3,-1 - 82 348 l 1,4,-1 - 82 451 l 1,5,-1 - 332 451 l 1,6,-1 - 332 745 l 1,7,-1 - 524 745 l 1,8,-1 - 524 451 l 1,9,-1 - 774 451 l 1,10,-1 - 774 348 l 1,11,-1 - 524 348 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: hyphen -Encoding: 45 45 82 -Width: 649 -VWidth: 0 -Flags: W -HStem: 348 102<82 567> -VStem: 82 485<348 451> -LayerCount: 2 -Fore -SplineSet -82 451 m 1,0,-1 - 567 451 l 1,1,-1 - 567 348 l 1,2,-1 - 82 348 l 1,3,-1 - 82 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: less -Encoding: 60 60 83 -Width: 917 -VWidth: 0 -Flags: W -HStem: 860 41G<665 751> -LayerCount: 2 -Fore -SplineSet -115 473 m 1,0,-1 - 723 901 l 1,1,-1 - 803 786 l 1,2,-1 - 354 473 l 1,3,-1 - 803 162 l 1,4,-1 - 723 47 l 1,5,-1 - 115 473 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: greater -Encoding: 62 62 84 -Width: 917 -VWidth: 0 -Flags: W -HStem: 860 41G<166 253> -LayerCount: 2 -Fore -SplineSet -803 475 m 1,0,-1 - 195 47 l 1,1,-1 - 115 162 l 1,2,-1 - 563 475 l 1,3,-1 - 115 786 l 1,4,-1 - 195 901 l 1,5,-1 - 803 475 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: equal -Encoding: 61 61 85 -Width: 708 -VWidth: 0 -Flags: W -HStem: 348 102<82 627> 573 102<82 627> -VStem: 82 545<348 451 573 676> -LayerCount: 2 -Fore -SplineSet -82 676 m 1,0,-1 - 627 676 l 1,1,-1 - 627 573 l 1,2,-1 - 82 573 l 1,3,-1 - 82 676 l 1,0,-1 -82 451 m 1,4,-1 - 627 451 l 1,5,-1 - 627 348 l 1,6,-1 - 82 348 l 1,7,-1 - 82 451 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: at -Encoding: 64 64 86 -Width: 1488 -VWidth: 0 -Flags: W -HStem: -20 102<622 1052> 262 102<960 1074> 279 66<677 831> 860 66<677 798> 1126 102<584 920> -VStem: 61 256<390 833> 467 145<418 782> 807 143<368 857> 1112 256<510 923> -LayerCount: 2 -Fore -SplineSet -954 745 m 0,0,1 - 954 698 954 698 952 630 c 128,-1,2 - 950 562 950 562 950 512 c 0,3,4 - 950 426 950 426 964.5 395.5 c 128,-1,5 - 979 365 979 365 1008 365 c 0,6,7 - 1031 365 1031 365 1049 376.5 c 128,-1,8 - 1067 388 1067 388 1078 413 c 128,-1,9 - 1089 438 1089 438 1096 467 c 128,-1,10 - 1103 496 1103 496 1106.5 541 c 128,-1,11 - 1110 586 1110 586 1111 625.5 c 128,-1,12 - 1112 665 1112 665 1112 723 c 0,13,14 - 1112 816 1112 816 1080 895 c 128,-1,15 - 1048 974 1048 974 998 1023 c 128,-1,16 - 948 1072 948 1072 889.5 1099 c 128,-1,17 - 831 1126 831 1126 774 1126 c 0,18,19 - 683 1126 683 1126 602 1093 c 128,-1,20 - 521 1060 521 1060 456.5 998 c 128,-1,21 - 392 936 392 936 354.5 836.5 c 128,-1,22 - 317 737 317 737 317 614 c 0,23,24 - 317 505 317 505 350 413.5 c 128,-1,25 - 383 322 383 322 435.5 262.5 c 128,-1,26 - 488 203 488 203 554.5 161 c 128,-1,27 - 621 119 621 119 686.5 100.5 c 128,-1,28 - 752 82 752 82 813 82 c 0,29,30 - 940 82 940 82 1068.5 131.5 c 128,-1,31 - 1197 181 1197 181 1251 264 c 1,32,-1 - 1372 209 l 1,33,34 - 1286 98 1286 98 1152.5 39 c 128,-1,35 - 1019 -20 1019 -20 782 -20 c 0,36,37 - 678 -20 678 -20 576.5 4 c 128,-1,38 - 475 28 475 28 381.5 79.5 c 128,-1,39 - 288 131 288 131 217 204.5 c 128,-1,40 - 146 278 146 278 103.5 383.5 c 128,-1,41 - 61 489 61 489 61 614 c 0,42,43 - 61 725 61 725 99 824 c 128,-1,44 - 137 923 137 923 203 995.5 c 128,-1,45 - 269 1068 269 1068 355.5 1121.5 c 128,-1,46 - 442 1175 442 1175 541.5 1202 c 128,-1,47 - 641 1229 641 1229 743 1229 c 0,48,49 - 1022 1229 1022 1229 1195 1092 c 128,-1,50 - 1368 955 1368 955 1368 723 c 0,51,52 - 1368 635 1368 635 1340.5 552.5 c 128,-1,53 - 1313 470 1313 470 1264.5 405 c 128,-1,54 - 1216 340 1216 340 1141 301 c 128,-1,55 - 1066 262 1066 262 977 262 c 0,56,57 - 910 262 910 262 866 309 c 1,58,59 - 814 279 814 279 729 279 c 0,60,61 - 607 279 607 279 537 374.5 c 128,-1,62 - 467 470 467 470 467 614 c 0,63,64 - 467 747 467 747 550.5 836.5 c 128,-1,65 - 634 926 634 926 737 926 c 0,66,67 - 827 926 827 926 890.5 881 c 128,-1,68 - 954 836 954 836 954 745 c 0,0,1 -831 367 m 1,69,70 - 807 430 807 430 807 512 c 0,71,72 - 807 570 807 570 809 625 c 128,-1,73 - 811 680 811 680 811 745 c 0,74,75 - 811 860 811 860 758 860 c 0,76,77 - 687 860 687 860 649.5 792.5 c 128,-1,78 - 612 725 612 725 612 614 c 0,79,80 - 612 498 612 498 646 421 c 128,-1,81 - 680 344 680 344 748 344 c 0,82,83 - 805 344 805 344 831 367 c 1,69,70 -EndSplineSet -Validated: 1 -EndChar - -StartChar: bracketleft -Encoding: 91 91 87 -Width: 524 -VWidth: 0 -Flags: W -HStem: 0 82<297 432> 1270 82<297 432> -VStem: 92 205<82 1270> -LayerCount: 2 -Fore -SplineSet -432 0 m 1,0,-1 - 92 0 l 1,1,-1 - 92 1352 l 1,2,-1 - 432 1352 l 1,3,-1 - 432 1270 l 1,4,-1 - 297 1270 l 1,5,-1 - 297 82 l 1,6,-1 - 432 82 l 1,7,-1 - 432 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: bracketright -Encoding: 93 93 88 -Width: 524 -VWidth: 0 -Flags: W -HStem: 0 82<92 227> 1270 82<92 227> -VStem: 227 205<82 1270> -LayerCount: 2 -Fore -SplineSet -92 1352 m 1,0,-1 - 432 1352 l 1,1,-1 - 432 0 l 1,2,-1 - 92 0 l 1,3,-1 - 92 82 l 1,4,-1 - 227 82 l 1,5,-1 - 227 1270 l 1,6,-1 - 92 1270 l 1,7,-1 - 92 1352 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: underscore -Encoding: 95 95 89 -Width: 692 -VWidth: 0 -Flags: W -HStem: -184 102<0 692> -LayerCount: 2 -Fore -SplineSet -0 -82 m 1,0,-1 - 692 -82 l 1,1,-1 - 692 -184 l 1,2,-1 - 0 -184 l 1,3,-1 - 0 -82 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: braceleft -Encoding: 123 123 90 -Width: 571 -VWidth: 0 -Flags: W -HStem: 0 43G<208 489> 1393 41G<208 489> -VStem: 82 408 -LayerCount: 2 -Fore -SplineSet -346 1434 m 1,0,-1 - 489 1434 l 1,1,2 - 435 1395 435 1395 416 1332 c 128,-1,3 - 397 1269 397 1269 397 1180 c 0,4,5 - 397 1152 397 1152 399 1092 c 128,-1,6 - 401 1032 401 1032 401 1004 c 0,7,8 - 401 902 401 902 375 830.5 c 128,-1,9 - 349 759 349 759 276 717 c 1,10,11 - 351 675 351 675 376 603.5 c 128,-1,12 - 401 532 401 532 401 428 c 0,13,14 - 401 400 401 400 399 341 c 128,-1,15 - 397 282 397 282 397 254 c 0,16,17 - 397 165 397 165 416 102 c 128,-1,18 - 435 39 435 39 489 0 c 1,19,-1 - 346 0 l 1,20,21 - 290 32 290 32 255 81.5 c 128,-1,22 - 220 131 220 131 206.5 187 c 128,-1,23 - 193 243 193 243 187.5 304 c 128,-1,24 - 182 365 182 365 179.5 425.5 c 128,-1,25 - 177 486 177 486 170.5 540 c 128,-1,26 - 164 594 164 594 142.5 641.5 c 128,-1,27 - 121 689 121 689 82 717 c 1,28,29 - 121 745 121 745 142.5 792.5 c 128,-1,30 - 164 840 164 840 170.5 894 c 128,-1,31 - 177 948 177 948 179.5 1008.5 c 128,-1,32 - 182 1069 182 1069 187.5 1130 c 128,-1,33 - 193 1191 193 1191 206.5 1247 c 128,-1,34 - 220 1303 220 1303 255 1352.5 c 128,-1,35 - 290 1402 290 1402 346 1434 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: braceright -Encoding: 125 125 91 -Width: 571 -VWidth: 0 -Flags: W -HStem: 0 43G<82 364> 1393 41G<82 364> -VStem: 82 408 -LayerCount: 2 -Fore -SplineSet -225 0 m 1,0,-1 - 82 0 l 1,1,2 - 136 39 136 39 155 102 c 128,-1,3 - 174 165 174 165 174 254 c 0,4,5 - 174 282 174 282 172 342 c 128,-1,6 - 170 402 170 402 170 430 c 0,7,8 - 170 532 170 532 196 603.5 c 128,-1,9 - 222 675 222 675 295 717 c 1,10,11 - 220 759 220 759 195 830.5 c 128,-1,12 - 170 902 170 902 170 1006 c 0,13,14 - 170 1034 170 1034 172 1093 c 128,-1,15 - 174 1152 174 1152 174 1180 c 0,16,17 - 174 1269 174 1269 155 1332 c 128,-1,18 - 136 1395 136 1395 82 1434 c 1,19,-1 - 225 1434 l 1,20,21 - 281 1402 281 1402 316 1352.5 c 128,-1,22 - 351 1303 351 1303 364.5 1247 c 128,-1,23 - 378 1191 378 1191 383.5 1130 c 128,-1,24 - 389 1069 389 1069 391.5 1008.5 c 128,-1,25 - 394 948 394 948 400.5 894 c 128,-1,26 - 407 840 407 840 428.5 792.5 c 128,-1,27 - 450 745 450 745 489 717 c 1,28,29 - 450 689 450 689 428.5 641.5 c 128,-1,30 - 407 594 407 594 400.5 540 c 128,-1,31 - 394 486 394 486 391.5 425.5 c 128,-1,32 - 389 365 389 365 383.5 304 c 128,-1,33 - 378 243 378 243 364.5 187 c 128,-1,34 - 351 131 351 131 316 81.5 c 128,-1,35 - 281 32 281 32 225 0 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: gravecomb -Encoding: 768 768 92 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: -725 371 -AnchorPoint: "mktop" -455 1188 mark 0 -AnchorPoint: "mktop" -453 1638 basemark 0 -AnchorPoint: "top" -455 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --575 1653 m 25,0,-1 - -354 1303 l 1,1,-1 - -418 1249 l 1,2,-1 - -725 1530 l 1,3,-1 - -575 1653 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: acutecomb -Encoding: 769 769 93 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: -688 371 -AnchorPoint: "mktop" -588 1189 mark 0 -AnchorPoint: "mktop" -586 1638 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --467 1653 m 25,0,-1 - -317 1530 l 1,1,-1 - -625 1249 l 1,2,-1 - -688 1303 l 1,3,-1 - -467 1653 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0302 -Encoding: 770 770 94 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1257 299 -VStem: -862 551 -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "mktop" -586 1556 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --311 1358 m 1,0,-1 - -424 1257 l 1,1,-1 - -586 1413 l 1,2,-1 - -750 1257 l 1,3,-1 - -862 1358 l 1,4,-1 - -586 1556 l 1,5,-1 - -311 1358 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tildecomb -Encoding: 771 771 95 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 141<-585 -386> 1335 141<-769 -570> -VStem: -860 84<1270 1322> -379 84<1424 1477> -AnchorPoint: "mktop" -586 1188 mark 0 -AnchorPoint: "mktop" -586 1479 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --379 1477 m 1,0,-1 - -295 1477 l 1,1,2 - -305 1393 -305 1393 -358.5 1331.5 c 128,-1,3 - -412 1270 -412 1270 -496 1270 c 0,4,5 - -534 1270 -534 1270 -592.5 1302.5 c 128,-1,6 - -651 1335 -651 1335 -670 1335 c 0,7,8 - -767 1335 -767 1335 -776 1270 c 1,9,-1 - -860 1270 l 1,10,11 - -850 1354 -850 1354 -796.5 1415.5 c 128,-1,12 - -743 1477 -743 1477 -659 1477 c 0,13,14 - -621 1477 -621 1477 -562.5 1444 c 128,-1,15 - -504 1411 -504 1411 -485 1411 c 0,16,17 - -388 1411 -388 1411 -379 1477 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0304 -Encoding: 772 772 96 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 115<-834 -362> -VStem: -834 471<1270 1384> -AnchorPoint: "mktop" -586 1382 basemark 0 -AnchorPoint: "mktop" -587 1187 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --834 1384 m 1,0,-1 - -362 1384 l 1,1,-1 - -362 1270 l 1,2,-1 - -834 1270 l 1,3,-1 - -834 1384 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0306 -Encoding: 774 774 97 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 137<-710 -466> -VStem: -819 78<1446 1468> -434 78<1446 1468> -AnchorPoint: "mktop" -586 1192 mark 0 -AnchorPoint: "mktop" -586 1530 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --588 1407 m 128,-1,1 - -532 1407 -532 1407 -485.5 1436.5 c 128,-1,2 - -439 1466 -439 1466 -434 1501 c 1,3,-1 - -356 1460 l 1,4,5 - -365 1382 -365 1382 -432.5 1326 c 128,-1,6 - -500 1270 -500 1270 -588 1270 c 128,-1,7 - -676 1270 -676 1270 -743 1326 c 128,-1,8 - -810 1382 -810 1382 -819 1460 c 1,9,-1 - -741 1501 l 1,10,11 - -736 1466 -736 1466 -690 1436.5 c 128,-1,0 - -644 1407 -644 1407 -588 1407 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0307 -Encoding: 775 775 98 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 170<-676 -506> -VStem: -676 170<1270 1440> -AnchorPoint: "mktop" -586 1188 mark 0 -AnchorPoint: "mktop" -586 1454 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --676 1440 m 1,0,-1 - -506 1440 l 1,1,-1 - -506 1270 l 1,2,-1 - -676 1270 l 1,3,-1 - -676 1440 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0308 -Encoding: 776 776 99 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 170<-858 -688 -489 -319> -VStem: -858 170<1270 1440> -489 170<1270 1440> -AnchorPoint: "mktop" -586 1188 mark 0 -AnchorPoint: "mktop" -586 1475 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 -182 0 2 -Refer: 98 775 N 1 0 0 1 186 0 2 -Validated: 1 -EndChar - -StartChar: uni030A -Encoding: 778 778 100 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1167 72<-655 -520> 1407 72<-655 -520> -VStem: -743 72<1255 1391> -504 72<1255 1391> -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "mktop" -588 1479 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --672 1323 m 128,-1,1 - -672 1289 -672 1289 -647.5 1264 c 128,-1,2 - -623 1239 -623 1239 -588 1239 c 128,-1,3 - -553 1239 -553 1239 -528.5 1264 c 128,-1,4 - -504 1289 -504 1289 -504 1323 c 128,-1,5 - -504 1357 -504 1357 -528.5 1382 c 128,-1,6 - -553 1407 -553 1407 -588 1407 c 128,-1,7 - -623 1407 -623 1407 -647.5 1382 c 128,-1,0 - -672 1357 -672 1357 -672 1323 c 128,-1,1 --743 1323 m 128,-1,9 - -743 1388 -743 1388 -697.5 1433.5 c 128,-1,10 - -652 1479 -652 1479 -588 1479 c 128,-1,11 - -524 1479 -524 1479 -478 1433.5 c 128,-1,12 - -432 1388 -432 1388 -432 1323 c 128,-1,13 - -432 1258 -432 1258 -478 1212.5 c 128,-1,14 - -524 1167 -524 1167 -588 1167 c 128,-1,15 - -652 1167 -652 1167 -697.5 1212.5 c 128,-1,8 - -743 1258 -743 1258 -743 1323 c 128,-1,9 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni030B -Encoding: 779 779 101 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: -827 371 -549 371 -AnchorPoint: "mktop" -586 1188 mark 0 -AnchorPoint: "mktop" -586 1638 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 139 0 2 -Refer: 93 769 N 1 0 0 1 -139 0 2 -Validated: 1 -EndChar - -StartChar: uni030C -Encoding: 780 780 102 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1139 387 -VStem: -827 479 -AnchorPoint: "mktop" -586 1188 mark 0 -AnchorPoint: "mktop" -586 1526 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --588 1139 m 1,0,-1 - -827 1473 l 1,1,-1 - -764 1526 l 1,2,-1 - -588 1346 l 1,3,-1 - -412 1526 l 1,4,-1 - -348 1473 l 1,5,-1 - -588 1139 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni030F -Encoding: 783 783 103 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: -864 371 -586 371 -AnchorPoint: "mktop" -446 1638 basemark 0 -AnchorPoint: "mktop" -446 1188 mark 0 -AnchorPoint: "top" -455 1188 mark 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 -139 0 2 -Refer: 92 768 N 1 0 0 1 139 0 2 -Validated: 1 -EndChar - -StartChar: uni0311 -Encoding: 785 785 104 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1343 137<-710 -466> -VStem: -819 78<1283 1304> -434 78<1283 1304> -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "mktop" -588 1460 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --588 1343 m 128,-1,1 - -644 1343 -644 1343 -690 1313.5 c 128,-1,2 - -736 1284 -736 1284 -741 1249 c 1,3,-1 - -819 1290 l 1,4,5 - -810 1368 -810 1368 -743 1424.5 c 128,-1,6 - -676 1481 -676 1481 -588 1481 c 128,-1,7 - -500 1481 -500 1481 -432.5 1424.5 c 128,-1,8 - -365 1368 -365 1368 -356 1290 c 1,9,-1 - -434 1249 l 1,10,11 - -439 1284 -439 1284 -485.5 1313.5 c 128,-1,0 - -532 1343 -532 1343 -588 1343 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0312 -Encoding: 786 786 105 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 367<-614 -547> -VStem: -684 180<1270 1482> -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "mktop" -582 1636 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --504 1270 m 1,0,-1 - -684 1270 l 1,1,2 - -684 1325 -684 1325 -681.5 1370.5 c 128,-1,3 - -679 1416 -679 1416 -673.5 1450 c 128,-1,4 - -668 1484 -668 1484 -663.5 1507.5 c 128,-1,5 - -659 1531 -659 1531 -649.5 1553.5 c 128,-1,6 - -640 1576 -640 1576 -635.5 1585.5 c 128,-1,7 - -631 1595 -631 1595 -619.5 1613.5 c 128,-1,8 - -608 1632 -608 1632 -606 1636 c 1,9,-1 - -498 1636 l 1,10,11 - -547 1567 -547 1567 -547 1485 c 0,12,13 - -547 1460 -547 1460 -525.5 1390 c 128,-1,14 - -504 1320 -504 1320 -504 1270 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0313 -Encoding: 787 787 106 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 367<-780 -713> -VStem: -643 180<1424 1636> -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "mktop" -588 1636 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --643 1636 m 1,0,-1 - -463 1636 l 1,1,2 - -463 1581 -463 1581 -465.5 1535.5 c 128,-1,3 - -468 1490 -468 1490 -473.5 1456 c 128,-1,4 - -479 1422 -479 1422 -483.5 1398.5 c 128,-1,5 - -488 1375 -488 1375 -497.5 1352.5 c 128,-1,6 - -507 1330 -507 1330 -511.5 1320.5 c 128,-1,7 - -516 1311 -516 1311 -527.5 1292.5 c 128,-1,8 - -539 1274 -539 1274 -541 1270 c 1,9,-1 - -649 1270 l 1,10,11 - -600 1339 -600 1339 -600 1421 c 0,12,13 - -600 1446 -600 1446 -621.5 1516 c 128,-1,14 - -643 1586 -643 1586 -643 1636 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0314 -Encoding: 788 788 107 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 367<-648 -582> -VStem: -719 180<1424 1636> -AnchorPoint: "mktop" -588 1636 basemark 0 -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --539 1636 m 1,0,1 - -539 1586 -539 1586 -560.5 1516 c 128,-1,2 - -582 1446 -582 1446 -582 1421 c 0,3,4 - -582 1341 -582 1341 -532 1270 c 1,5,-1 - -641 1270 l 1,6,7 - -643 1274 -643 1274 -654.5 1292.5 c 128,-1,8 - -666 1311 -666 1311 -670.5 1320.5 c 128,-1,9 - -675 1330 -675 1330 -684.5 1352.5 c 128,-1,10 - -694 1375 -694 1375 -698.5 1398.5 c 128,-1,11 - -703 1422 -703 1422 -708.5 1456 c 128,-1,12 - -714 1490 -714 1490 -716.5 1535.5 c 128,-1,13 - -719 1581 -719 1581 -719 1636 c 1,14,-1 - -539 1636 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0326 -Encoding: 806 806 108 -Width: 0 -VWidth: 0 -Flags: W -HStem: -401 49<-745 -603> -164 57<-672 -588> -VStem: -555 158<-328 -184> -AnchorPoint: "cedilla" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --672 -106 m 17,0,1 - -554 -106 -554 -106 -475.5 -148 c 128,-1,2 - -397 -190 -397 -190 -397 -250 c 0,3,4 - -397 -315 -397 -315 -488.5 -358 c 128,-1,5 - -580 -401 -580 -401 -745 -401 c 1,6,-1 - -745 -352 l 1,7,8 - -555 -352 -555 -352 -555 -262 c 0,9,10 - -555 -216 -555 -216 -581 -194.5 c 128,-1,11 - -607 -173 -607 -173 -672 -164 c 1,12,-1 - -672 -106 l 17,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0327 -Encoding: 807 807 109 -Width: 0 -VWidth: 0 -Flags: W -HStem: -401 49<-745 -603> -164 164<-659 -571> -VStem: -555 158<-327 -185> -AnchorPoint: "cedilla" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --688 -164 m 1,0,-1 - -659 0 l 1,1,-1 - -520 0 l 1,2,-1 - -535 -113 l 1,3,4 - -474 -126 -474 -126 -435.5 -161 c 128,-1,5 - -397 -196 -397 -196 -397 -250 c 0,6,7 - -397 -315 -397 -315 -488.5 -358 c 128,-1,8 - -580 -401 -580 -401 -745 -401 c 1,9,-1 - -745 -352 l 1,10,11 - -555 -352 -555 -352 -555 -262 c 0,12,13 - -555 -216 -555 -216 -586.5 -192 c 128,-1,14 - -618 -168 -618 -168 -688 -164 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0328 -Encoding: 808 808 110 -Width: 0 -VWidth: 0 -Flags: W -HStem: -319 37<-518 -430> -VStem: -729 147<-254 -77> -AnchorPoint: "ogonek" -483 0 mark 0 -LayerCount: 2 -Fore -SplineSet --483 25 m 9,0,1 - -483 0 l 1,2,3 - -522 -20 -522 -20 -552 -67 c 128,-1,4 - -582 -114 -582 -114 -582 -150 c 0,5,6 - -582 -283 -582 -283 -430 -283 c 1,7,-1 - -430 -319 l 1,8,9 - -586 -319 -586 -319 -657.5 -278.5 c 128,-1,10 - -729 -238 -729 -238 -729 -186 c 0,11,12 - -729 -148 -729 -148 -712 -116 c 128,-1,13 - -695 -84 -695 -84 -672 -63.5 c 128,-1,14 - -649 -43 -649 -43 -612 -24 c 128,-1,15 - -575 -5 -575 -5 -547.5 4.5 c 128,-1,16 - -520 14 -520 14 -483 25 c 9,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0237 -Encoding: 567 567 111 -Width: 598 -VWidth: 0 -Flags: W -HStem: -348 102<-3 199> 860 41G<221 477> -VStem: 221 256<-204 901> -AnchorPoint: "bottom" 129 -348 basechar 0 -AnchorPoint: "horn" 389 717 basechar 0 -AnchorPoint: "ogonek" 287 -266 basechar 0 -AnchorPoint: "cedilla" 139 -348 basechar 0 -AnchorPoint: "top" 348 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -33 -195 m 1,0,1 - 69 -246 69 -246 141 -246 c 0,2,3 - 189 -246 189 -246 205 -190.5 c 128,-1,4 - 221 -135 221 -135 221 0 c 2,5,-1 - 221 901 l 1,6,-1 - 477 901 l 1,7,-1 - 477 -68 l 2,8,9 - 477 -140 477 -140 440.5 -196.5 c 128,-1,10 - 404 -253 404 -253 347 -284.5 c 128,-1,11 - 290 -316 290 -316 229.5 -332 c 128,-1,12 - 169 -348 169 -348 111 -348 c 0,13,14 - -19 -348 -19 -348 -96 -256 c 1,15,-1 - 33 -195 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: dotlessi -Encoding: 305 305 112 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43G<123 379> 860 41G<123 379> -VStem: 123 256<0 901> -AnchorPoint: "ogonek" 326 0 basechar 0 -AnchorPoint: "bottom" 250 0 basechar 0 -AnchorPoint: "cedilla" 256 0 basechar 0 -AnchorPoint: "horn" 297 717 basechar 0 -AnchorPoint: "top" 254 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 379 901 l 1,1,-1 - 379 0 l 1,2,-1 - 123 0 l 1,3,-1 - 123 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: agrave -Encoding: 224 224 113 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1065 403 -VStem: 94 256<132 467> 219 371 602 256<87 518 616 771> -AnchorPoint: "top" 489 1464 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "horn" 811 717 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 944 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: egrave -Encoding: 232 232 114 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1065 403 -VStem: 90 256<235 451 553 656> 260 371 -AnchorPoint: "top" 530 1464 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 985 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: igrave -Encoding: 236 236 115 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1065 403 -VStem: -16 371 123 256<0 901> -AnchorPoint: "ogonek" 326 0 basechar 0 -AnchorPoint: "bottom" 250 0 basechar 0 -AnchorPoint: "cedilla" 256 0 basechar 0 -AnchorPoint: "horn" 297 717 basechar 0 -AnchorPoint: "top" 252 1462 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 S 1 0 0 1 709 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ograve -Encoding: 242 242 116 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1065 403 -VStem: 90 256<214 657> 264 371 715 256<223 678> -AnchorPoint: "top" 535 1462 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 989 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ugrave -Encoding: 249 249 117 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1065 403 -VStem: 143 256<163 901> 279 371 688 256<91 901> -AnchorPoint: "top" 549 1466 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 S 1 0 0 1 1004 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: aacute -Encoding: 225 225 118 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1065 403 -VStem: 94 256<132 467> 389 371 602 256<87 518 616 771> -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 489 1464 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: eacute -Encoding: 233 233 119 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1065 403 -VStem: 90 256<235 451 553 656> 430 371 -AnchorPoint: "top" 530 1466 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: iacute -Encoding: 237 237 120 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1065 403 -VStem: 123 256<0 901> 154 371 -AnchorPoint: "ogonek" 326 0 basechar 0 -AnchorPoint: "bottom" 250 0 basechar 0 -AnchorPoint: "cedilla" 256 0 basechar 0 -AnchorPoint: "horn" 297 717 basechar 0 -AnchorPoint: "top" 252 1466 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 S 1 0 0 1 842 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: oacute -Encoding: 243 243 121 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1065 403 -VStem: 90 256<214 657> 434 371 715 256<223 678> -AnchorPoint: "top" 535 1466 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uacute -Encoding: 250 250 122 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1065 403 -VStem: 143 256<163 901> 449 371 688 256<91 901> -AnchorPoint: "top" 549 1464 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: yacute -Encoding: 253 253 123 -Width: 923 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 860 41<88 324 729 907> 1065 403 -VStem: 403 371 -AnchorPoint: "top" 461 1464 basechar 0 -AnchorPoint: "ogonek" 614 0 basechar 0 -AnchorPoint: "bottom" 365 -315 basechar 0 -AnchorPoint: "cedilla" 242 -328 basechar 0 -AnchorPoint: "horn" 762 717 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1092 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: acircumflex -Encoding: 226 226 124 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1073 299 -VStem: 94 256<132 467> 215 551 602 256<87 518 616 771> -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 492 1372 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ecircumflex -Encoding: 234 234 125 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1073 299 -VStem: 90 256<235 451 553 656> 256 551 -AnchorPoint: "top" 532 1380 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: icircumflex -Encoding: 238 238 126 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1073 299 -VStem: -20 551 123 256<0 901> -AnchorPoint: "ogonek" 326 0 basechar 0 -AnchorPoint: "bottom" 250 0 basechar 0 -AnchorPoint: "cedilla" 256 0 basechar 0 -AnchorPoint: "horn" 297 717 basechar 0 -AnchorPoint: "top" 254 1372 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 842 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ocircumflex -Encoding: 244 244 127 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1073 299 -VStem: 90 256<214 657> 260 551 715 256<223 678> -AnchorPoint: "top" 537 1378 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ucircumflex -Encoding: 251 251 128 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1073 299 -VStem: 143 256<163 901> 274 551 688 256<91 901> -AnchorPoint: "top" 549 1380 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: atilde -Encoding: 227 227 129 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1085 141<493 691> 1151 141<308 507> -VStem: 94 256<132 467> 217 84<1085 1138> 602 256<87 518 616 771> 698 84<1240 1292> -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 489 1305 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ntilde -Encoding: 241 241 130 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 403 692 948> 819 102<405 644> 1085 141<552 751> 1151 141<368 566> -VStem: 147 256<0 802> 276 84<1085 1138> 692 256<0 720> 758 84<1240 1292> -AnchorPoint: "top" 549 1317 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "ogonek" 877 0 basechar 0 -AnchorPoint: "horn" 856 717 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1137 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: otilde -Encoding: 245 245 131 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1085 141<538 736> 1151 141<353 552> -VStem: 90 256<214 657> 262 84<1085 1138> 715 256<223 678> 743 84<1240 1292> -AnchorPoint: "top" 535 1307 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: adieresis -Encoding: 228 228 132 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1085 170<219 389 588 758> -VStem: 94 256<132 467> 219 170<1085 1255> 588 170<1085 1255> 602 256<87 518 616 771> -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 489 1268 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: aring -Encoding: 229 229 133 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 983 72<422 557> 1223 72<422 557> -VStem: 94 256<132 467> 334 72<1071 1206> 573 72<1071 1206> 602 256<87 518 616 771> -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 489 1300 basechar 0 -LayerCount: 2 -Fore -Refer: 100 778 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: edieresis -Encoding: 235 235 134 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1085 170<260 430 629 799> -VStem: 90 256<235 451 553 656> 260 170<1085 1255> 629 170<1085 1255> -AnchorPoint: "top" 530 1274 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: idieresis -Encoding: 239 239 135 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1085 170<-16 154 352 522> -VStem: -16 170<1085 1255> 123 256<0 901> 352 170<1085 1255> -AnchorPoint: "ogonek" 326 0 basechar 0 -AnchorPoint: "bottom" 250 0 basechar 0 -AnchorPoint: "cedilla" 256 0 basechar 0 -AnchorPoint: "horn" 297 717 basechar 0 -AnchorPoint: "top" 252 1276 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 842 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: odieresis -Encoding: 246 246 136 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1085 170<264 434 633 803> -VStem: 90 256<214 657> 264 170<1085 1255> 633 170<1085 1255> 715 256<223 678> -AnchorPoint: "top" 535 1278 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: udieresis -Encoding: 252 252 137 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1085 170<279 449 647 817> -VStem: 143 256<163 901> 279 170<1085 1255> 647 170<1085 1255> 688 256<91 901> -AnchorPoint: "top" 549 1290 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Agrave -Encoding: 192 192 138 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1495 403 -VStem: 381 371 -AnchorPoint: "top" 651 1896 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "horn" 819 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 S 1 0 0 1 1106 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Aacute -Encoding: 193 193 139 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1495 403 -VStem: 551 371 -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "top" 651 1896 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Acircumflex -Encoding: 194 194 140 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1503 299 -VStem: 377 551 -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "top" 655 1802 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Atilde -Encoding: 195 195 141 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1516 141<654 853> 1581 141<470 669> -VStem: 379 84<1516 1568> 860 84<1670 1722> -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "top" 651 1745 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Adieresis -Encoding: 196 196 142 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1516 170<381 551 750 920> -VStem: 381 170<1516 1686> 750 170<1516 1686> -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "top" 651 1724 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -Substitution2: "'ss01' Style Set 1 in Latin-1" Adieresislowered -EndChar - -StartChar: Aring -Encoding: 197 197 143 -Width: 1298 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 21G<39 281.317 1020.73 1264> 410 102<461 842> 1653 72<587.726 714.358> -VStem: 496 71<1506.18 1632.27> 735 72<1506.18 1632.27> -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "top" 651 1761 basechar 0 -LayerCount: 2 -Fore -SplineSet -573 1434 m 1,0,1 - 496 1480 496 1480 496 1557 c 128,-1,2 - 496 1634 496 1634 541.5 1679.5 c 128,-1,3 - 587 1725 587 1725 651 1725 c 128,-1,4 - 715 1725 715 1725 761 1679.5 c 128,-1,5 - 807 1634 807 1634 807 1557 c 128,-1,6 - 807 1480 807 1480 730 1434 c 1,7,-1 - 741 1434 l 1,8,-1 - 1264 0 l 1,9,-1 - 1028 0 l 1,10,-1 - 879 410 l 1,11,-1 - 424 410 l 1,12,-1 - 274 0 l 1,13,-1 - 39 0 l 1,14,-1 - 561 1434 l 1,15,-1 - 573 1434 l 1,0,1 -567 1569 m 128,-1,17 - 567 1535 567 1535 591.5 1510 c 128,-1,18 - 616 1485 616 1485 651 1485 c 128,-1,19 - 686 1485 686 1485 710.5 1510 c 128,-1,20 - 735 1535 735 1535 735 1569 c 128,-1,21 - 735 1603 735 1603 710.5 1628 c 128,-1,22 - 686 1653 686 1653 651 1653 c 128,-1,23 - 616 1653 616 1653 591.5 1628 c 128,-1,16 - 567 1603 567 1603 567 1569 c 128,-1,17 -651 1034 m 1,24,-1 - 461 512 l 1,25,-1 - 842 512 l 1,26,-1 - 651 1034 l 1,24,-1 -EndSplineSet -EndChar - -StartChar: Egrave -Encoding: 200 200 144 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1495 403 -VStem: 174 266<102 799 901 1331> 344 371 -AnchorPoint: "top" 614 1896 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "horn" 942 1384 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1069 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Eacute -Encoding: 201 201 145 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1495 403 -VStem: 174 266<102 799 901 1331> 514 371 -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 614 1896 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ecircumflex -Encoding: 202 202 146 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1503 299 -VStem: 174 266<102 799 901 1331> 340 551 -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 616 1802 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Edieresis -Encoding: 203 203 147 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1516 170<344 514 713 883> -VStem: 174 266<102 799 901 1331> 344 170<1516 1686> 713 170<1516 1686> -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 614 1712 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Igrave -Encoding: 204 204 148 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1495 403 -VStem: 37 371 172 266<0 1434> -AnchorPoint: "top" 309 1898 basechar 0 -AnchorPoint: "ogonek" 283 0 basechar 0 -AnchorPoint: "bottom" 299 0 basechar 0 -AnchorPoint: "cedilla" 317 0 basechar 0 -AnchorPoint: "horn" 338 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 762 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Iacute -Encoding: 205 205 149 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1495 403 -VStem: 172 266<0 1434> 207 371 -AnchorPoint: "horn" 338 1085 basechar 0 -AnchorPoint: "cedilla" 317 0 basechar 0 -AnchorPoint: "bottom" 299 0 basechar 0 -AnchorPoint: "ogonek" 283 0 basechar 0 -AnchorPoint: "top" 309 1898 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 895 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Icircumflex -Encoding: 206 206 150 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1503 299 -VStem: 33 551 172 266<0 1434> -AnchorPoint: "horn" 338 1085 basechar 0 -AnchorPoint: "cedilla" 317 0 basechar 0 -AnchorPoint: "bottom" 299 0 basechar 0 -AnchorPoint: "ogonek" 283 0 basechar 0 -AnchorPoint: "top" 311 1802 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 895 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Idieresis -Encoding: 207 207 151 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1516 170<37 207 406 575> -VStem: 37 170<1516 1686> 172 266<0 1434> 406 170<1516 1686> -AnchorPoint: "horn" 338 1085 basechar 0 -AnchorPoint: "cedilla" 317 0 basechar 0 -AnchorPoint: "bottom" 299 0 basechar 0 -AnchorPoint: "ogonek" 283 0 basechar 0 -AnchorPoint: "top" 309 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 895 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ntilde -Encoding: 209 209 152 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 951 1237> 1393 41<174 463 971 1237> 1516 141<720 919> 1581 141<535 734> -VStem: 174 266<0 1075> 444 84<1516 1568> 926 84<1670 1722> 971 266<367 1434> -AnchorPoint: "top" 717 1741 basechar 0 -AnchorPoint: "cedilla" 696 0 basechar 0 -AnchorPoint: "bottom" 694 0 basechar 0 -AnchorPoint: "ogonek" 1143 0 basechar 0 -AnchorPoint: "horn" 1188 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1305 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ograve -Encoding: 210 210 153 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1495 403 -VStem: 102 266<424 1012> 436 371 1071 266<414 1009> -AnchorPoint: "top" 707 1901 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1161 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Oacute -Encoding: 211 211 154 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1495 403 -VStem: 102 266<424 1012> 606 371 1071 266<414 1009> -AnchorPoint: "top" 707 1898 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ocircumflex -Encoding: 212 212 155 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1503 299 -VStem: 102 266<424 1012> 432 551 1071 266<414 1009> -AnchorPoint: "top" 709 1802 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Otilde -Encoding: 213 213 156 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1516 141<710 908> 1581 141<525 724> -VStem: 102 266<424 1012> 434 84<1516 1568> 915 84<1670 1722> 1071 266<414 1009> -AnchorPoint: "top" 707 1729 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Odieresis -Encoding: 214 214 157 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1516 170<436 606 805 975> -VStem: 102 266<424 1012> 436 170<1516 1686> 805 170<1516 1686> 1071 266<414 1009> -AnchorPoint: "top" 707 1700 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -Substitution2: "'ss01' Style Set 1 in Latin-1" Odieresislowered -EndChar - -StartChar: Ugrave -Encoding: 217 217 158 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1495 403 -VStem: 156 266<328 1434> 451 371 981 266<297 1434> -AnchorPoint: "top" 721 1901 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "cedilla" 692 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1176 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Uacute -Encoding: 218 218 159 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1495 403 -VStem: 156 266<328 1434> 621 371 981 266<297 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1901 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ucircumflex -Encoding: 219 219 160 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1503 299 -VStem: 156 266<328 1434> 446 551 981 266<297 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 723 1806 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Udieresis -Encoding: 220 220 161 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1516 170<451 621 819 989> -VStem: 156 266<328 1434> 451 170<1516 1686> 819 170<1516 1686> 981 266<297 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1708 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -Substitution2: "'ss01' Style Set 1 in Latin-1" Udieresislowered -EndChar - -StartChar: Yacute -Encoding: 221 221 162 -Width: 989 -VWidth: 0 -Flags: W -HStem: 0 43<383 649> 1393 41<23 301 768 973> 1495 403 -VStem: 383 266<0 727> 414 371 -AnchorPoint: "top" 477 1892 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "ogonek" 510 0 basechar 0 -AnchorPoint: "cedilla" 492 0 basechar 0 -AnchorPoint: "horn" 725 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1102 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Thorn -Encoding: 222 222 163 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440> 328 102<440 665> 1004 102<440 665> 1393 41G<174 440> -VStem: 174 266<0 328 430 1004 1106 1434> 772 266<545 889> -LayerCount: 2 -Fore -SplineSet -440 328 m 1,0,-1 - 440 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 440 1434 l 1,4,-1 - 440 1106 l 1,5,-1 - 594 1106 l 2,6,7 - 688 1106 688 1106 765.5 1081 c 128,-1,8 - 843 1056 843 1056 892.5 1016.5 c 128,-1,9 - 942 977 942 977 976 925 c 128,-1,10 - 1010 873 1010 873 1024 821 c 128,-1,11 - 1038 769 1038 769 1038 717 c 128,-1,12 - 1038 665 1038 665 1023.5 613 c 128,-1,13 - 1009 561 1009 561 974.5 509 c 128,-1,14 - 940 457 940 457 890.5 417.5 c 128,-1,15 - 841 378 841 378 764 353 c 128,-1,16 - 687 328 687 328 594 328 c 2,17,-1 - 440 328 l 1,0,-1 -440 1004 m 1,18,-1 - 440 430 l 1,19,-1 - 532 430 l 2,20,21 - 582 430 582 430 623.5 448 c 128,-1,22 - 665 466 665 466 692 495.5 c 128,-1,23 - 719 525 719 525 737.5 563 c 128,-1,24 - 756 601 756 601 764 639.5 c 128,-1,25 - 772 678 772 678 772 717 c 128,-1,26 - 772 756 772 756 764 794.5 c 128,-1,27 - 756 833 756 833 737.5 871 c 128,-1,28 - 719 909 719 909 692 938.5 c 128,-1,29 - 665 968 665 968 623.5 986 c 128,-1,30 - 582 1004 582 1004 532 1004 c 2,31,-1 - 440 1004 l 1,18,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: thorn -Encoding: 254 254 164 -Width: 1138 -VWidth: 0 -Flags: W -HStem: 0 102<403 573> 823 102<491 742> 1311 41G<147 403> -VStem: 147 256<-410 0 102 727 866 1352> 797 256<353 758> -LayerCount: 2 -Fore -SplineSet -403 0 m 1,0,-1 - 403 -410 l 1,1,-1 - 147 -410 l 1,2,-1 - 147 1352 l 1,3,-1 - 403 1352 l 1,4,-1 - 403 866 l 1,5,6 - 498 926 498 926 608 926 c 0,7,8 - 1053 926 1053 926 1053 569 c 0,9,10 - 1053 479 1053 479 1027.5 397 c 128,-1,11 - 1002 315 1002 315 948.5 244.5 c 128,-1,12 - 895 174 895 174 819 121 c 128,-1,13 - 743 68 743 68 636.5 36 c 128,-1,14 - 530 4 530 4 403 0 c 1,0,-1 -403 102 m 1,15,16 - 531 105 531 105 621.5 169.5 c 128,-1,17 - 712 234 712 234 754.5 336.5 c 128,-1,18 - 797 439 797 439 797 569 c 0,19,20 - 797 823 797 823 639 823 c 0,21,22 - 508 823 508 823 455.5 743.5 c 128,-1,23 - 403 664 403 664 403 508 c 2,24,-1 - 403 102 l 1,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: multiply -Encoding: 215 215 165 -Width: 856 -VWidth: 0 -Flags: W -HStem: 219 582 -VStem: 137 582 -LayerCount: 2 -Fore -SplineSet -520 510 m 1,0,-1 - 719 311 l 1,1,-1 - 627 219 l 1,2,-1 - 428 418 l 1,3,-1 - 229 219 l 1,4,-1 - 137 311 l 1,5,-1 - 336 510 l 1,6,-1 - 137 709 l 1,7,-1 - 229 801 l 1,8,-1 - 428 602 l 1,9,-1 - 627 801 l 1,10,-1 - 719 709 l 1,11,-1 - 520 510 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Oslash -Encoding: 216 216 166 -Width: 1435 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<587 861> 0 43<324 543> 1352 102<565 855> 1393 41<887 1106> -VStem: 102 266<424 1012> 1071 266<414 1009> -AnchorPoint: "top" 707 1434 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 60 47 N 1 0 0 1 262 0 2 -Refer: 42 79 N 1 0 0 1 0 0 2 -EndChar - -StartChar: oslash -Encoding: 248 248 167 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<456 644> 819 102<426 616> -VStem: 90 256<216 657> 715 256<223 680> -AnchorPoint: "top" 535 1004 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -971 451 m 0,0,1 - 971 222 971 222 845 101 c 128,-1,2 - 719 -20 719 -20 512 -20 c 0,3,4 - 465 -20 465 -20 410 -10 c 1,5,-1 - 373 -102 l 1,6,-1 - 252 -102 l 1,7,-1 - 303 27 l 1,8,9 - 200 81 200 81 145 190.5 c 128,-1,10 - 90 300 90 300 90 451 c 0,11,12 - 90 555 90 555 127 645 c 128,-1,13 - 164 735 164 735 224 794.5 c 128,-1,14 - 284 854 284 854 359.5 888 c 128,-1,15 - 435 922 435 922 512 922 c 0,16,17 - 586 922 586 922 657 903 c 1,18,-1 - 698 1004 l 1,19,-1 - 819 1004 l 1,20,-1 - 762 862 l 1,21,22 - 971 745 971 745 971 451 c 0,0,1 -375 205 m 1,23,-1 - 616 801 l 1,24,25 - 586 819 586 819 543 819 c 0,26,27 - 435 819 435 819 390.5 725.5 c 128,-1,28 - 346 632 346 632 346 451 c 0,29,30 - 346 293 346 293 375 205 c 1,23,-1 -455 102 m 1,31,32 - 491 82 491 82 543 82 c 128,-1,33 - 595 82 595 82 630 108 c 128,-1,34 - 665 134 665 134 683 186 c 128,-1,35 - 701 238 701 238 708 300.5 c 128,-1,36 - 715 363 715 363 715 451 c 0,37,38 - 715 598 715 598 690 686 c 1,39,-1 - 455 102 l 1,31,32 -EndSplineSet -Validated: 1 -EndChar - -StartChar: AE -Encoding: 198 198 168 -Width: 1813 -VWidth: 0 -Flags: W -HStem: 0 102<1136 1730> 410 102<461 869> 799 102<1136 1512> 1331 103<759 869 1136 1697> -VStem: 869 267<102 410 512 799 901 1331> -AnchorPoint: "horn" 1631 1384 basechar 0 -AnchorPoint: "cedilla" 982 0 basechar 0 -AnchorPoint: "bottom" 1005 0 basechar 0 -AnchorPoint: "ogonek" 1533 0 basechar 0 -AnchorPoint: "top" 1029 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -869 512 m 1,0,-1 - 869 1332 l 1,1,-1 - 759 1332 l 1,2,-1 - 461 512 l 1,3,-1 - 869 512 l 1,0,-1 -869 410 m 1,4,-1 - 424 410 l 1,5,-1 - 274 0 l 1,6,-1 - 39 0 l 1,7,-1 - 561 1434 l 1,8,-1 - 1697 1434 l 1,9,-1 - 1697 1331 l 1,10,-1 - 1136 1331 l 1,11,-1 - 1136 901 l 1,12,-1 - 1512 901 l 1,13,-1 - 1512 799 l 1,14,-1 - 1136 799 l 1,15,-1 - 1136 102 l 1,16,-1 - 1730 102 l 1,17,-1 - 1730 0 l 1,18,-1 - 869 0 l 1,19,-1 - 869 410 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ae -Encoding: 230 230 169 -Width: 1540 -VWidth: 0 -Flags: W -HStem: -20 102<401 600 950 1217> 451 102<862 1196> 520 102<400 596> 819 102<338 556 938 1141> -VStem: 94 256<132 467> 602 256<188 451> -AnchorPoint: "ogonek" 1085 0 basechar 0 -AnchorPoint: "cedilla" 1036 0 basechar 0 -AnchorPoint: "horn" 1307 717 basechar 0 -AnchorPoint: "bottom" 774 0 basechar 0 -AnchorPoint: "top" 786 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -115 829 m 1,0,1 - 293 922 293 922 438 922 c 0,2,3 - 573 922 573 922 653 901 c 128,-1,4 - 733 880 733 880 776 829 c 1,5,6 - 893 922 893 922 1024 922 c 0,7,8 - 1127 922 1127 922 1211 880.5 c 128,-1,9 - 1295 839 1295 839 1346.5 770.5 c 128,-1,10 - 1398 702 1398 702 1426 619.5 c 128,-1,11 - 1454 537 1454 537 1454 451 c 1,12,-1 - 858 451 l 1,13,14 - 858 379 858 379 864 325.5 c 128,-1,15 - 870 272 870 272 885.5 224.5 c 128,-1,16 - 901 177 901 177 927.5 147 c 128,-1,17 - 954 117 954 117 996.5 99.5 c 128,-1,18 - 1039 82 1039 82 1096 82 c 0,19,20 - 1170 82 1170 82 1204 112.5 c 128,-1,21 - 1238 143 1238 143 1249 205 c 1,22,-1 - 1444 158 l 1,23,24 - 1379 76 1379 76 1282.5 28 c 128,-1,25 - 1186 -20 1186 -20 1065 -20 c 0,26,27 - 905 -20 905 -20 786 63 c 1,28,29 - 750 51 750 51 705 35 c 128,-1,30 - 660 19 660 19 643.5 13 c 128,-1,31 - 627 7 627 7 601 -1.5 c 128,-1,32 - 575 -10 575 -10 565.5 -12 c 128,-1,33 - 556 -14 556 -14 538 -16.5 c 128,-1,34 - 520 -19 520 -19 506.5 -19.5 c 128,-1,35 - 493 -20 493 -20 471 -20 c 0,36,37 - 297 -20 297 -20 195.5 58.5 c 128,-1,38 - 94 137 94 137 94 311 c 0,39,40 - 94 382 94 382 118 437.5 c 128,-1,41 - 142 493 142 493 179.5 527 c 128,-1,42 - 217 561 217 561 268 583.5 c 128,-1,43 - 319 606 319 606 368.5 614.5 c 128,-1,44 - 418 623 418 623 471 623 c 0,45,46 - 528 623 528 623 596 616 c 1,47,48 - 587 728 587 728 558 773.5 c 128,-1,49 - 529 819 529 819 469 819 c 0,50,51 - 361 819 361 819 289 723 c 1,52,-1 - 115 829 l 1,0,1 -862 553 m 1,53,-1 - 1196 553 l 1,54,55 - 1194 616 1194 616 1187 660 c 128,-1,56 - 1180 704 1180 704 1165 742.5 c 128,-1,57 - 1150 781 1150 781 1122.5 800 c 128,-1,58 - 1095 819 1095 819 1055 819 c 0,59,60 - 962 819 962 819 916.5 751.5 c 128,-1,61 - 871 684 871 684 862 553 c 1,53,-1 -602 98 m 1,62,-1 - 602 514 l 1,63,64 - 553 520 553 520 502 520 c 0,65,66 - 435 520 435 520 392.5 467 c 128,-1,67 - 350 414 350 414 350 311 c 0,68,69 - 350 202 350 202 388.5 142 c 128,-1,70 - 427 82 427 82 502 82 c 0,71,72 - 556 82 556 82 602 98 c 1,62,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eth -Encoding: 240 240 170 -Width: 1034 -VWidth: 0 -Flags: W -HStem: -20 102<448 634> 819 102<432 616> 1311 41G<613 695> -VStem: 90 256<240 677> 688 256<212 725> -LayerCount: 2 -Fore -SplineSet -612 1212 m 1,0,1 - 944 863 944 863 944 434 c 0,2,3 - 944 337 944 337 917.5 258.5 c 128,-1,4 - 891 180 891 180 848 129 c 128,-1,5 - 805 78 805 78 747 43.5 c 128,-1,6 - 689 9 689 9 628.5 -5.5 c 128,-1,7 - 568 -20 568 -20 504 -20 c 0,8,9 - 331 -20 331 -20 210.5 118.5 c 128,-1,10 - 90 257 90 257 90 451 c 0,11,12 - 90 581 90 581 136 686.5 c 128,-1,13 - 182 792 182 792 277.5 857 c 128,-1,14 - 373 922 373 922 504 922 c 0,15,16 - 561 922 561 922 631 905 c 1,17,18 - 589 1030 589 1030 508 1126 c 1,19,-1 - 410 1044 l 1,20,-1 - 362 1100 l 1,21,-1 - 457 1180 l 1,22,23 - 401 1233 401 1233 324 1286 c 1,24,-1 - 426 1380 l 1,25,26 - 499 1323 499 1323 559 1266 c 1,27,-1 - 662 1352 l 1,28,-1 - 709 1294 l 1,29,-1 - 612 1212 l 1,0,1 -688 369 m 1,30,31 - 688 608 688 608 648.5 713.5 c 128,-1,32 - 609 819 609 819 535 819 c 0,33,34 - 481 819 481 819 442 787 c 128,-1,35 - 403 755 403 755 383 699 c 128,-1,36 - 363 643 363 643 354.5 582.5 c 128,-1,37 - 346 522 346 522 346 451 c 0,38,39 - 346 361 346 361 367.5 278 c 128,-1,40 - 389 195 389 195 433 138.5 c 128,-1,41 - 477 82 477 82 535 82 c 0,42,43 - 620 82 620 82 652.5 150.5 c 128,-1,44 - 685 219 685 219 688 369 c 1,30,31 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ccedilla -Encoding: 199 199 171 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -401 49<602 745> -164 164<688 777> -20 102<614 939> 1352 102<571 902> -VStem: 102 266<441 1012> 793 158<-327 -185> -AnchorPoint: "top" 717 1434 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -LayerCount: 2 -Fore -SplineSet -685 -17 m 1,0,1 - 604 -8 604 -8 524.5 24 c 128,-1,2 - 445 56 445 56 368 117 c 128,-1,3 - 291 178 291 178 232.5 260 c 128,-1,4 - 174 342 174 342 138 460.5 c 128,-1,5 - 102 579 102 579 102 717 c 0,6,7 - 102 865 102 865 139 989.5 c 128,-1,8 - 176 1114 176 1114 236 1198 c 128,-1,9 - 296 1282 296 1282 375 1341 c 128,-1,10 - 454 1400 454 1400 536.5 1427 c 128,-1,11 - 619 1454 619 1454 702 1454 c 0,12,13 - 1075 1454 1075 1454 1243 1245 c 1,14,-1 - 1018 1178 l 1,15,16 - 962 1258 962 1258 937 1281 c 1,17,18 - 861 1350 861 1350 733 1352 c 1,19,20 - 369 1352 369 1352 369 717 c 0,21,22 - 369 586 369 586 392.5 478 c 128,-1,23 - 416 370 416 370 455 298 c 128,-1,24 - 494 226 494 226 546 176 c 128,-1,25 - 598 126 598 126 655 104 c 128,-1,26 - 712 82 712 82 772 82 c 0,27,28 - 830 82 830 82 871.5 92.5 c 128,-1,29 - 913 103 913 103 946.5 130 c 128,-1,30 - 980 157 980 157 1002 185 c 128,-1,31 - 1024 213 1024 213 1057 264 c 1,32,-1 - 1249 209 l 1,33,34 - 1180 120 1180 120 1069.5 59.5 c 128,-1,35 - 959 -1 959 -1 825 -16 c 1,36,-1 - 813 -113 l 1,37,38 - 874 -126 874 -126 912 -161 c 128,-1,39 - 950 -196 950 -196 950 -250 c 0,40,41 - 950 -315 950 -315 858.5 -358 c 128,-1,42 - 767 -401 767 -401 602 -401 c 1,43,-1 - 602 -352 l 1,44,45 - 793 -352 793 -352 793 -262 c 0,46,47 - 793 -216 793 -216 761 -192 c 128,-1,48 - 729 -168 729 -168 659 -164 c 1,49,-1 - 685 -17 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ccedilla -Encoding: 231 231 172 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -401 49<414 557> -164 164<500 588> -20 102<441 694> 819 102<425 635> -VStem: 90 256<235 657> 604 158<-327 -185> -AnchorPoint: "top" 532 1004 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -688 608 m 1,0,1 - 683 628 683 628 674 665.5 c 128,-1,2 - 665 703 665 703 660.5 718.5 c 128,-1,3 - 656 734 656 734 645.5 758.5 c 128,-1,4 - 635 783 635 783 623 793 c 128,-1,5 - 611 803 611 803 591 811 c 128,-1,6 - 571 819 571 819 543 819 c 0,7,8 - 434 819 434 819 390 726 c 128,-1,9 - 346 633 346 633 346 451 c 0,10,11 - 346 379 346 379 352 325.5 c 128,-1,12 - 358 272 358 272 373.5 224.5 c 128,-1,13 - 389 177 389 177 415.5 147 c 128,-1,14 - 442 117 442 117 484.5 99.5 c 128,-1,15 - 527 82 527 82 584 82 c 0,16,17 - 606 82 606 82 623 84 c 128,-1,18 - 640 86 640 86 654 93.5 c 128,-1,19 - 668 101 668 101 677 106 c 128,-1,20 - 686 111 686 111 697 125.5 c 128,-1,21 - 708 140 708 140 712.5 147 c 128,-1,22 - 717 154 717 154 729.5 175 c 128,-1,23 - 742 196 742 196 748 205 c 1,24,-1 - 932 158 l 1,25,26 - 819 15 819 15 637 -14 c 1,27,-1 - 625 -113 l 1,28,29 - 686 -126 686 -126 724 -161 c 128,-1,30 - 762 -196 762 -196 762 -250 c 0,31,32 - 762 -315 762 -315 670.5 -358 c 128,-1,33 - 579 -401 579 -401 414 -401 c 1,34,-1 - 414 -352 l 1,35,36 - 604 -352 604 -352 604 -262 c 0,37,38 - 604 -216 604 -216 572.5 -192 c 128,-1,39 - 541 -168 541 -168 471 -164 c 1,40,-1 - 497 -18 l 1,41,42 - 316 0 316 0 203 127 c 128,-1,43 - 90 254 90 254 90 451 c 0,44,45 - 90 555 90 555 127 645 c 128,-1,46 - 164 735 164 735 224 794.5 c 128,-1,47 - 284 854 284 854 359.5 888 c 128,-1,48 - 435 922 435 922 512 922 c 0,49,50 - 646 922 646 922 743 854.5 c 128,-1,51 - 840 787 840 787 893 676 c 1,52,-1 - 688 608 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Eth -Encoding: 208 208 173 -Width: 1304 -VWidth: 0 -Flags: W -HStem: 0 102<440 741> 680 102<61 174 440 700> 1331 102<440 755> -VStem: 174 266<102 680 782 1331> 938 266<394 1073> -AnchorPoint: "top" 582 1434 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "horn" 1102 1085 basechar 0 -AnchorPoint: "ogonek" 549 0 basechar 0 -AnchorPoint: "cedilla" 549 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -670 0 m 2,0,-1 - 174 0 l 1,1,-1 - 174 680 l 1,2,-1 - 61 680 l 1,3,-1 - 61 782 l 1,4,-1 - 174 782 l 1,5,-1 - 174 1434 l 1,6,-1 - 670 1434 l 2,7,8 - 1204 1434 1204 1434 1204 737 c 0,9,10 - 1204 376 1204 376 1061.5 188 c 128,-1,11 - 919 0 919 0 670 0 c 2,0,-1 -440 680 m 1,12,-1 - 440 102 l 1,13,-1 - 608 102 l 2,14,15 - 675 102 675 102 733 138.5 c 128,-1,16 - 791 175 791 175 838 249 c 128,-1,17 - 885 323 885 323 911.5 448.5 c 128,-1,18 - 938 574 938 574 938 737 c 0,19,20 - 938 868 938 868 920 971.5 c 128,-1,21 - 902 1075 902 1075 872 1141.5 c 128,-1,22 - 842 1208 842 1208 799 1251.5 c 128,-1,23 - 756 1295 756 1295 709 1313 c 128,-1,24 - 662 1331 662 1331 608 1331 c 2,25,-1 - 440 1331 l 1,26,-1 - 440 782 l 1,27,-1 - 700 782 l 1,28,-1 - 700 680 l 1,29,-1 - 440 680 l 1,12,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: germandbls -Encoding: 223 223 174 -Width: 1042 -VWidth: 0 -Flags: W -HStem: -233 82<548 589> 0 43G<139 395> 799 102<395 668> 1270 102<452 644> -VStem: 139 256<0 799 901 1205> 737 236<-21 234> -LayerCount: 2 -Fore -SplineSet -139 0 m 1,0,-1 - 139 864 l 2,1,2 - 139 946 139 946 141.5 1004 c 128,-1,3 - 144 1062 144 1062 152 1116 c 128,-1,4 - 160 1170 160 1170 173 1205 c 128,-1,5 - 186 1240 186 1240 208.5 1271 c 128,-1,6 - 231 1302 231 1302 260 1319.5 c 128,-1,7 - 289 1337 289 1337 332 1350 c 128,-1,8 - 375 1363 375 1363 427 1367.5 c 128,-1,9 - 479 1372 479 1372 549 1372 c 0,10,11 - 576 1372 576 1372 603.5 1367.5 c 128,-1,12 - 631 1363 631 1363 647.5 1360 c 128,-1,13 - 664 1357 664 1357 694 1343.5 c 128,-1,14 - 724 1330 724 1330 732.5 1326.5 c 128,-1,15 - 741 1323 741 1323 778 1303 c 128,-1,16 - 815 1283 815 1283 821 1280 c 1,17,-1 - 719 1174 l 1,18,19 - 711 1180 711 1180 690 1194.5 c 128,-1,20 - 669 1209 669 1209 663.5 1213 c 128,-1,21 - 658 1217 658 1217 641.5 1228 c 128,-1,22 - 625 1239 625 1239 619.5 1241.5 c 128,-1,23 - 614 1244 614 1244 601 1251 c 128,-1,24 - 588 1258 588 1258 581 1260 c 128,-1,25 - 574 1262 574 1262 562.5 1265 c 128,-1,26 - 551 1268 551 1268 540.5 1269 c 128,-1,27 - 530 1270 530 1270 518 1270 c 0,28,29 - 395 1270 395 1270 395 901 c 1,30,-1 - 946 901 l 1,31,-1 - 694 502 l 1,32,33 - 732 479 732 479 765.5 454 c 128,-1,34 - 799 429 799 429 838.5 390.5 c 128,-1,35 - 878 352 878 352 906.5 310.5 c 128,-1,36 - 935 269 935 269 954 214.5 c 128,-1,37 - 973 160 973 160 973 102 c 0,38,39 - 973 53 973 53 950 7.5 c 128,-1,40 - 927 -38 927 -38 890.5 -70.5 c 128,-1,41 - 854 -103 854 -103 809.5 -131 c 128,-1,42 - 765 -159 765 -159 720.5 -177.5 c 128,-1,43 - 676 -196 676 -196 639.5 -209 c 128,-1,44 - 603 -222 603 -222 580 -228 c 2,45,-1 - 557 -233 l 1,46,-1 - 506 -152 l 1,47,48 - 515 -149 515 -149 531 -142.5 c 128,-1,49 - 547 -136 547 -136 586.5 -113 c 128,-1,50 - 626 -90 626 -90 656.5 -63.5 c 128,-1,51 - 687 -37 687 -37 712 8 c 128,-1,52 - 737 53 737 53 737 102 c 128,-1,53 - 737 151 737 151 709 208 c 128,-1,54 - 681 265 681 265 641 311 c 128,-1,55 - 601 357 601 357 561 396 c 128,-1,56 - 521 435 521 435 493 457 c 2,57,-1 - 465 479 l 1,58,-1 - 668 799 l 1,59,-1 - 395 799 l 1,60,-1 - 395 0 l 1,61,-1 - 139 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Lcaron -Encoding: 317 317 175 -Width: 1083 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 1067 367<393 499> 1393 41<174 440> -VStem: 174 266<102 1434> 569 219<1221 1434> -AnchorPoint: "top" 485 1434 basechar 0 -AnchorPoint: "cedilla" 596 0 basechar 0 -AnchorPoint: "bottom" 604 0 basechar 0 -AnchorPoint: "ogonek" 745 0 basechar 0 -AnchorPoint: "horn" 328 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 461 1270 2 -Refer: 39 76 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Sacute -Encoding: 346 346 176 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -20 102<474 721> 1352 102<489 697> 1495 403 -VStem: 162 266<971 1252> 469 371 815 266<200 510> -AnchorPoint: "top" 569 1901 basechar 0 -AnchorPoint: "cedilla" 573 0 basechar 0 -AnchorPoint: "bottom" 578 0 basechar 0 -AnchorPoint: "horn" 897 1290 basechar 0 -AnchorPoint: "ogonek" 602 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1157 246 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Scaron -Encoding: 352 352 177 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -20 102<474 721> 1352 102<489 697> 1384 387 -VStem: 162 266<971 1252> 330 479 815 266<200 510> -AnchorPoint: "top" 569 1769 basechar 0 -AnchorPoint: "cedilla" 573 0 basechar 0 -AnchorPoint: "bottom" 578 0 basechar 0 -AnchorPoint: "horn" 897 1290 basechar 0 -AnchorPoint: "ogonek" 602 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -102 350 m 1,0,-1 - 334 381 l 1,1,2 - 349 262 349 262 424.5 172 c 128,-1,3 - 500 82 500 82 580 82 c 0,4,5 - 699 82 699 82 757 155.5 c 128,-1,6 - 815 229 815 229 815 365 c 0,7,8 - 815 428 815 428 792.5 478.5 c 128,-1,9 - 770 529 770 529 732.5 564.5 c 128,-1,10 - 695 600 695 600 646 629.5 c 128,-1,11 - 597 659 597 659 543 684.5 c 128,-1,12 - 489 710 489 710 434.5 736.5 c 128,-1,13 - 380 763 380 763 331 796.5 c 128,-1,14 - 282 830 282 830 244.5 870.5 c 128,-1,15 - 207 911 207 911 184.5 970 c 128,-1,16 - 162 1029 162 1029 162 1102 c 0,17,18 - 162 1234 162 1234 269.5 1332.5 c 128,-1,19 - 377 1431 377 1431 522 1450 c 1,20,-1 - 330 1718 l 1,21,-1 - 393 1772 l 1,22,-1 - 569 1591 l 1,23,-1 - 745 1772 l 1,24,-1 - 809 1718 l 1,25,-1 - 619 1453 l 1,26,27 - 691 1450 691 1450 748 1436.5 c 128,-1,28 - 805 1423 805 1423 841.5 1405.5 c 128,-1,29 - 878 1388 878 1388 912 1355 c 128,-1,30 - 946 1322 946 1322 964.5 1296.5 c 128,-1,31 - 983 1271 983 1271 1012 1225 c 1,32,-1 - 788 1182 l 1,33,34 - 762 1231 762 1231 744 1257.5 c 128,-1,35 - 726 1284 726 1284 700 1308.5 c 128,-1,36 - 674 1333 674 1333 641 1342.5 c 128,-1,37 - 608 1352 608 1352 561 1352 c 0,38,39 - 511 1352 511 1352 469.5 1283.5 c 128,-1,40 - 428 1215 428 1215 428 1102 c 0,41,42 - 428 1048 428 1048 450.5 1004 c 128,-1,43 - 473 960 473 960 510.5 928.5 c 128,-1,44 - 548 897 548 897 597 869 c 128,-1,45 - 646 841 646 841 700 814.5 c 128,-1,46 - 754 788 754 788 808.5 760 c 128,-1,47 - 863 732 863 732 912 695 c 128,-1,48 - 961 658 961 658 998.5 613.5 c 128,-1,49 - 1036 569 1036 569 1058.5 505.5 c 128,-1,50 - 1081 442 1081 442 1081 365 c 0,51,52 - 1081 197 1081 197 939.5 88.5 c 128,-1,53 - 798 -20 798 -20 565 -20 c 0,54,55 - 389 -20 389 -20 265 86.5 c 128,-1,56 - 141 193 141 193 102 350 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Scedilla -Encoding: 350 350 178 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -401 49<418 561> -164 164<504 592> -20 102<474 721> 1352 102<489 697> -VStem: 162 266<971 1252> 608 158<-327 -185> 815 266<200 510> -AnchorPoint: "top" 569 1434 basechar 0 -AnchorPoint: "horn" 897 1290 basechar 0 -LayerCount: 2 -Fore -SplineSet -102 350 m 1,0,-1 - 334 381 l 1,1,2 - 349 262 349 262 424.5 172 c 128,-1,3 - 500 82 500 82 580 82 c 0,4,5 - 699 82 699 82 757 155.5 c 128,-1,6 - 815 229 815 229 815 365 c 0,7,8 - 815 428 815 428 792.5 478.5 c 128,-1,9 - 770 529 770 529 732.5 564.5 c 128,-1,10 - 695 600 695 600 646 629.5 c 128,-1,11 - 597 659 597 659 543 684.5 c 128,-1,12 - 489 710 489 710 434.5 736.5 c 128,-1,13 - 380 763 380 763 331 796.5 c 128,-1,14 - 282 830 282 830 244.5 870.5 c 128,-1,15 - 207 911 207 911 184.5 970 c 128,-1,16 - 162 1029 162 1029 162 1102 c 0,17,18 - 162 1198 162 1198 223.5 1280.5 c 128,-1,19 - 285 1363 285 1363 380.5 1408.5 c 128,-1,20 - 476 1454 476 1454 578 1454 c 0,21,22 - 661 1454 661 1454 724.5 1441.5 c 128,-1,23 - 788 1429 788 1429 828.5 1412 c 128,-1,24 - 869 1395 869 1395 905.5 1361 c 128,-1,25 - 942 1327 942 1327 962 1300.5 c 128,-1,26 - 982 1274 982 1274 1012 1225 c 1,27,-1 - 788 1182 l 1,28,29 - 762 1231 762 1231 744 1257.5 c 128,-1,30 - 726 1284 726 1284 700 1308.5 c 128,-1,31 - 674 1333 674 1333 641 1342.5 c 128,-1,32 - 608 1352 608 1352 561 1352 c 0,33,34 - 511 1352 511 1352 469.5 1283.5 c 128,-1,35 - 428 1215 428 1215 428 1102 c 0,36,37 - 428 1048 428 1048 450.5 1004 c 128,-1,38 - 473 960 473 960 510.5 928.5 c 128,-1,39 - 548 897 548 897 597 869 c 128,-1,40 - 646 841 646 841 700 814.5 c 128,-1,41 - 754 788 754 788 808.5 760 c 128,-1,42 - 863 732 863 732 912 695 c 128,-1,43 - 961 658 961 658 998.5 613.5 c 128,-1,44 - 1036 569 1036 569 1058.5 505.5 c 128,-1,45 - 1081 442 1081 442 1081 365 c 0,46,47 - 1081 211 1081 211 961.5 106 c 128,-1,48 - 842 1 842 1 641 -17 c 1,49,-1 - 629 -113 l 1,50,51 - 690 -126 690 -126 728 -161 c 128,-1,52 - 766 -196 766 -196 766 -250 c 0,53,54 - 766 -315 766 -315 674.5 -358 c 128,-1,55 - 583 -401 583 -401 418 -401 c 1,56,-1 - 418 -352 l 1,57,58 - 608 -352 608 -352 608 -262 c 0,59,60 - 608 -216 608 -216 576.5 -192 c 128,-1,61 - 545 -168 545 -168 475 -164 c 1,62,-1 - 501 -16 l 1,63,64 - 349 3 349 3 243.5 106 c 128,-1,65 - 138 209 138 209 102 350 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Tcaron -Encoding: 356 356 179 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 43<508 774> 1331 102<41 508 774 1239> 1384 387 -VStem: 403 479 508 266<0 1331> -AnchorPoint: "top" 643 1772 basechar 0 -AnchorPoint: "cedilla" 639 0 basechar 0 -AnchorPoint: "bottom" 643 0 basechar 0 -AnchorPoint: "ogonek" 659 0 basechar 0 -AnchorPoint: "horn" 1200 1389 basechar 0 -LayerCount: 2 -Fore -SplineSet -608 1434 m 1,0,-1 - 403 1718 l 1,1,-1 - 467 1772 l 1,2,-1 - 643 1591 l 1,3,-1 - 819 1772 l 1,4,-1 - 883 1718 l 1,5,-1 - 678 1434 l 1,6,-1 - 1243 1434 l 1,7,-1 - 1239 1331 l 1,8,-1 - 774 1331 l 1,9,-1 - 774 0 l 1,10,-1 - 508 0 l 1,11,-1 - 508 1331 l 1,12,-1 - 41 1331 l 1,13,-1 - 41 1434 l 1,14,-1 - 608 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Zacute -Encoding: 377 377 180 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<362 983> 1331 102<102 672> 1495 403 -VStem: 412 371 -AnchorPoint: "top" 512 1901 basechar 0 -AnchorPoint: "bottom" 549 0 basechar 0 -AnchorPoint: "ogonek" 799 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 758 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1100 246 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Zcaron -Encoding: 381 381 181 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<362 983> 1331 102<102 672> 1384 387 -VStem: 272 479 -AnchorPoint: "top" 512 1769 basechar 0 -AnchorPoint: "bottom" 549 0 basechar 0 -AnchorPoint: "ogonek" 799 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 758 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -672 1331 m 1,0,-1 - 72 1331 l 1,1,-1 - 102 1434 l 1,2,-1 - 477 1434 l 1,3,-1 - 272 1718 l 1,4,-1 - 336 1772 l 1,5,-1 - 512 1591 l 1,6,-1 - 688 1772 l 1,7,-1 - 752 1718 l 1,8,-1 - 547 1434 l 1,9,-1 - 975 1434 l 1,10,-1 - 362 102 l 1,11,-1 - 983 102 l 1,12,-1 - 983 0 l 1,13,-1 - 61 0 l 1,14,-1 - 672 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Zdotaccent -Encoding: 379 379 182 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<362 983> 1331 102<102 672> 1516 170<424 594> -VStem: 424 170<1516 1686> -AnchorPoint: "top" 512 1686 basechar 0 -AnchorPoint: "bottom" 549 0 basechar 0 -AnchorPoint: "ogonek" 799 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 758 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1100 246 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: lcaron -Encoding: 318 318 183 -Width: 708 -VWidth: 0 -Flags: W -HStem: 0 43<147 403> 985 367<313 419> 1311 41<147 403> -VStem: 147 256<0 1352> 489 219<1139 1352> -AnchorPoint: "top" 274 1434 basechar 0 -AnchorPoint: "cedilla" 268 0 basechar 0 -AnchorPoint: "bottom" 272 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -AnchorPoint: "horn" 311 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 381 1188 2 -Refer: 15 108 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: sacute -Encoding: 347 347 184 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<286 522> 817 104<397 566> 1065 403 -VStem: 125 256<569 808> 315 371 559 256<119 365> -AnchorPoint: "top" 416 1464 basechar 0 -AnchorPoint: "cedilla" 449 0 basechar 0 -AnchorPoint: "bottom" 449 0 basechar 0 -AnchorPoint: "ogonek" 455 0 basechar 0 -AnchorPoint: "horn" 647 793 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1004 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scaron -Encoding: 353 353 185 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<286 522> 817 104<397 566> 954 387 -VStem: 125 256<569 808> 176 479 559 256<119 365> -AnchorPoint: "top" 416 1343 basechar 0 -AnchorPoint: "cedilla" 449 0 basechar 0 -AnchorPoint: "bottom" 449 0 basechar 0 -AnchorPoint: "ogonek" 455 0 basechar 0 -AnchorPoint: "horn" 647 793 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1004 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scedilla -Encoding: 351 351 186 -Width: 897 -VWidth: 0 -Flags: W -HStem: -401 49<293 436> -164 164<379 467> -20 102<286 522> 817 104<397 566> -VStem: 125 256<569 808> 483 158<-327 -185> 559 256<119 365> -AnchorPoint: "top" 416 1004 basechar 0 -AnchorPoint: "horn" 647 793 basechar 0 -LayerCount: 2 -Fore -SplineSet -756 795 m 1,0,-1 - 604 723 l 1,1,2 - 550 817 550 817 457 817 c 0,3,4 - 381 817 381 817 381 688 c 0,5,6 - 381 629 381 629 408.5 588.5 c 128,-1,7 - 436 548 436 548 477 539 c 0,8,9 - 635 503 635 503 725 432 c 128,-1,10 - 815 361 815 361 815 262 c 0,11,12 - 815 139 815 139 734 69.5 c 128,-1,13 - 653 0 653 0 516 -16 c 1,14,-1 - 504 -113 l 1,15,16 - 565 -126 565 -126 603 -161 c 128,-1,17 - 641 -196 641 -196 641 -250 c 0,18,19 - 641 -315 641 -315 549.5 -358 c 128,-1,20 - 458 -401 458 -401 293 -401 c 1,21,-1 - 293 -352 l 1,22,23 - 483 -352 483 -352 483 -262 c 0,24,25 - 483 -216 483 -216 451.5 -192 c 128,-1,26 - 420 -168 420 -168 350 -164 c 1,27,-1 - 376 -18 l 1,28,29 - 320 -13 320 -13 268.5 8 c 128,-1,30 - 217 29 217 29 188 47.5 c 128,-1,31 - 159 66 159 66 88 117 c 1,32,-1 - 215 201 l 1,33,34 - 299 82 299 82 428 82 c 0,35,36 - 492 82 492 82 525.5 129.5 c 128,-1,37 - 559 177 559 177 559 262 c 0,38,39 - 559 299 559 299 542 330 c 128,-1,40 - 525 361 525 361 497.5 381.5 c 128,-1,41 - 470 402 470 402 443 414.5 c 128,-1,42 - 416 427 416 427 389 434 c 0,43,44 - 269 465 269 465 197 529.5 c 128,-1,45 - 125 594 125 594 125 688 c 0,46,47 - 125 781 125 781 203.5 851.5 c 128,-1,48 - 282 922 282 922 428 922 c 0,49,50 - 527 922 527 922 591.5 894.5 c 128,-1,51 - 656 867 656 867 756 795 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tcaron -Encoding: 357 357 187 -Width: 778 -VWidth: 0 -Flags: W -HStem: 0 43<188 444> 799 102<84 188 444 604> 985 367<383 489> -VStem: 188 256<0 799 901 1198> 559 219<1139 1352> -AnchorPoint: "top" 317 1352 basechar 0 -AnchorPoint: "cedilla" 309 0 basechar 0 -AnchorPoint: "bottom" 309 0 basechar 0 -AnchorPoint: "ogonek" 324 0 basechar 0 -AnchorPoint: "horn" 365 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 451 1188 2 -Refer: 10 116 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: zacute -Encoding: 378 378 188 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 102<352 823> 799 102<74 520> 1065 403 -VStem: 338 371 -AnchorPoint: "top" 438 1464 basechar 0 -AnchorPoint: "bottom" 442 0 basechar 0 -AnchorPoint: "cedilla" 442 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "horn" 651 717 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1026 -184 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: zcaron -Encoding: 382 382 189 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 102<352 823> 799 102<74 520> 954 387 -VStem: 199 479 -AnchorPoint: "top" 438 1348 basechar 0 -AnchorPoint: "bottom" 442 0 basechar 0 -AnchorPoint: "cedilla" 442 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "horn" 651 717 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1026 -184 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: zdotaccent -Encoding: 380 380 190 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 102<352 823> 799 102<74 520> 1085 170<350 520> -VStem: 350 170<1085 1255> -AnchorPoint: "top" 438 1255 basechar 0 -AnchorPoint: "bottom" 442 0 basechar 0 -AnchorPoint: "cedilla" 442 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "horn" 651 717 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1026 -184 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Racute -Encoding: 340 340 191 -Width: 1138 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 829 1090> 655 102<440 543> 1331 102<440 665> 1495 403 -VStem: 174 266<0 655 758 1331> 461 371 772 266<872 1217> 829 260<0 202> -AnchorPoint: "top" 561 1903 basechar 0 -AnchorPoint: "cedilla" 590 0 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "ogonek" 975 0 basechar 0 -AnchorPoint: "horn" 954 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1149 246 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Abreve -Encoding: 258 258 192 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1516 137<529 773> -VStem: 420 78<1692 1714> 805 78<1692 1714> -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "top" 651 1767 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Lacute -Encoding: 313 313 193 -Width: 1083 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 1393 41<174 440> 1495 403 -VStem: 174 266<102 1434> 395 371 -AnchorPoint: "top" 485 1896 basechar 0 -AnchorPoint: "cedilla" 596 0 basechar 0 -AnchorPoint: "bottom" 604 0 basechar 0 -AnchorPoint: "ogonek" 745 0 basechar 0 -AnchorPoint: "horn" 328 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1083 246 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Cacute -Encoding: 262 262 194 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<614 939> 1352 102<571 902> 1495 403 -VStem: 102 266<441 1012> 616 371 -AnchorPoint: "top" 717 1901 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1305 246 2 -Refer: 30 67 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ccaron -Encoding: 268 268 195 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<614 939> 1352 102<571 902> 1384 387 -VStem: 102 266<441 1012> 477 479 -AnchorPoint: "top" 717 1767 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -LayerCount: 2 -Fore -SplineSet -1249 209 m 1,0,1 - 1169 106 1169 106 1035.5 43 c 128,-1,2 - 902 -20 902 -20 741 -20 c 0,3,4 - 659 -20 659 -20 572.5 7 c 128,-1,5 - 486 34 486 34 401 93 c 128,-1,6 - 316 152 316 152 250 235.5 c 128,-1,7 - 184 319 184 319 143 444.5 c 128,-1,8 - 102 570 102 570 102 717 c 0,9,10 - 102 859 102 859 136 979.5 c 128,-1,11 - 170 1100 170 1100 226 1183 c 128,-1,12 - 282 1266 282 1266 356 1326 c 128,-1,13 - 430 1386 430 1386 508.5 1416.5 c 128,-1,14 - 587 1447 587 1447 668 1453 c 1,15,-1 - 477 1718 l 1,16,-1 - 541 1772 l 1,17,-1 - 717 1591 l 1,18,-1 - 893 1772 l 1,19,-1 - 956 1718 l 1,20,-1 - 766 1452 l 1,21,22 - 1090 1435 1090 1435 1243 1245 c 1,23,-1 - 1018 1178 l 1,24,25 - 962 1258 962 1258 937 1281 c 1,26,27 - 861 1350 861 1350 733 1352 c 1,28,29 - 369 1352 369 1352 369 717 c 0,30,31 - 369 586 369 586 392.5 478 c 128,-1,32 - 416 370 416 370 455 298 c 128,-1,33 - 494 226 494 226 546 176 c 128,-1,34 - 598 126 598 126 655 104 c 128,-1,35 - 712 82 712 82 772 82 c 0,36,37 - 830 82 830 82 871.5 92.5 c 128,-1,38 - 913 103 913 103 946.5 130 c 128,-1,39 - 980 157 980 157 1002 185 c 128,-1,40 - 1024 213 1024 213 1057 264 c 1,41,-1 - 1249 209 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ecaron -Encoding: 282 282 196 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1384 387 -VStem: 174 266<102 799 901 1331> 375 479 -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 614 1774 basechar 0 -LayerCount: 2 -Fore -SplineSet -1034 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 579 1434 l 1,3,-1 - 375 1718 l 1,4,-1 - 438 1772 l 1,5,-1 - 614 1591 l 1,6,-1 - 791 1772 l 1,7,-1 - 854 1718 l 1,8,-1 - 650 1434 l 1,9,-1 - 1001 1434 l 1,10,-1 - 1001 1331 l 1,11,-1 - 440 1331 l 1,12,-1 - 440 901 l 1,13,-1 - 817 901 l 1,14,-1 - 817 799 l 1,15,-1 - 440 799 l 1,16,-1 - 440 102 l 1,17,-1 - 1034 102 l 1,18,-1 - 1034 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Dcaron -Encoding: 270 270 197 -Width: 1304 -VWidth: 0 -Flags: W -HStem: 0 102<440 741> 1331 102<440 755> 1384 387 -VStem: 174 266<102 1331> 342 479 938 266<394 1073> -AnchorPoint: "top" 582 1769 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "horn" 1102 1085 basechar 0 -AnchorPoint: "ogonek" 549 0 basechar 0 -AnchorPoint: "cedilla" 549 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 1331 m 1,0,-1 - 440 102 l 1,1,-1 - 608 102 l 2,2,3 - 675 102 675 102 733 138.5 c 128,-1,4 - 791 175 791 175 838 249 c 128,-1,5 - 885 323 885 323 911.5 448.5 c 128,-1,6 - 938 574 938 574 938 737 c 0,7,8 - 938 868 938 868 920 971.5 c 128,-1,9 - 902 1075 902 1075 872 1141.5 c 128,-1,10 - 842 1208 842 1208 799 1251.5 c 128,-1,11 - 756 1295 756 1295 709 1313 c 128,-1,12 - 662 1331 662 1331 608 1331 c 2,13,-1 - 440 1331 l 1,0,-1 -670 0 m 2,14,-1 - 174 0 l 1,15,-1 - 174 1434 l 1,16,-1 - 546 1434 l 1,17,-1 - 342 1718 l 1,18,-1 - 406 1772 l 1,19,-1 - 582 1591 l 1,20,-1 - 758 1772 l 1,21,-1 - 821 1718 l 1,22,-1 - 617 1434 l 1,23,-1 - 670 1434 l 2,24,25 - 1204 1434 1204 1434 1204 737 c 0,26,27 - 1204 376 1204 376 1061.5 188 c 128,-1,28 - 919 0 919 0 670 0 c 2,14,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Dcroat -Encoding: 272 272 198 -Width: 1304 -VWidth: 0 -Flags: W -HStem: 0 102<440 741> 680 102<61 174 440 700> 1331 102<440 755> -VStem: 174 266<102 680 782 1331> 938 266<394 1073> -AnchorPoint: "top" 582 1434 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "horn" 1102 1085 basechar 0 -AnchorPoint: "ogonek" 549 0 basechar 0 -AnchorPoint: "cedilla" 549 0 basechar 0 -LayerCount: 2 -Fore -Refer: 173 208 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Nacute -Encoding: 323 323 199 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 951 1237> 1393 41<174 463 971 1237> 1495 403 -VStem: 174 266<0 1075> 616 371 971 266<367 1434> -AnchorPoint: "top" 717 1901 basechar 0 -AnchorPoint: "cedilla" 696 0 basechar 0 -AnchorPoint: "bottom" 694 0 basechar 0 -AnchorPoint: "ogonek" 1143 0 basechar 0 -AnchorPoint: "horn" 1188 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1305 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ncaron -Encoding: 327 327 200 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 951 1237> 1384 387 1393 41<174 463 971 1237> -VStem: 174 266<0 1075> 477 479 971 266<367 1434> -AnchorPoint: "top" 717 1772 basechar 0 -AnchorPoint: "cedilla" 696 0 basechar 0 -AnchorPoint: "bottom" 694 0 basechar 0 -AnchorPoint: "ogonek" 1143 0 basechar 0 -AnchorPoint: "horn" 1188 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1305 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ohungarumlaut -Encoding: 336 336 201 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1495 403 -VStem: 102 266<424 1012> 467 371 745 371 1071 266<414 1009> -AnchorPoint: "top" 707 1898 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Rcaron -Encoding: 344 344 202 -Width: 1138 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 829 1090> 655 102<440 543> 1331 102<440 665> 1384 387 -VStem: 174 266<0 655 758 1331> 322 479 772 266<872 1217> 829 260<0 202> -AnchorPoint: "top" 561 1772 basechar 0 -AnchorPoint: "cedilla" 590 0 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "ogonek" 975 0 basechar 0 -AnchorPoint: "horn" 954 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 1331 m 1,0,-1 - 440 758 l 1,1,-1 - 532 758 l 2,2,3 - 594 758 594 758 642.5 785 c 128,-1,4 - 691 812 691 812 718 855.5 c 128,-1,5 - 745 899 745 899 758.5 947 c 128,-1,6 - 772 995 772 995 772 1044 c 0,7,8 - 772 1083 772 1083 764 1121.5 c 128,-1,9 - 756 1160 756 1160 737.5 1198 c 128,-1,10 - 719 1236 719 1236 692 1265.5 c 128,-1,11 - 665 1295 665 1295 623.5 1313 c 128,-1,12 - 582 1331 582 1331 532 1331 c 2,13,-1 - 440 1331 l 1,0,-1 -440 655 m 1,14,-1 - 440 0 l 1,15,-1 - 174 0 l 1,16,-1 - 174 1434 l 1,17,-1 - 526 1434 l 1,18,-1 - 322 1718 l 1,19,-1 - 385 1772 l 1,20,-1 - 561 1591 l 1,21,-1 - 737 1772 l 1,22,-1 - 801 1718 l 1,23,-1 - 596 1434 l 1,24,25 - 690 1434 690 1434 767 1408.5 c 128,-1,26 - 844 1383 844 1383 893 1343 c 128,-1,27 - 942 1303 942 1303 976 1251 c 128,-1,28 - 1010 1199 1010 1199 1024 1147 c 128,-1,29 - 1038 1095 1038 1095 1038 1044 c 0,30,31 - 1038 975 1038 975 1013 908 c 128,-1,32 - 988 841 988 841 926.5 778 c 128,-1,33 - 865 715 865 715 776 684 c 1,34,35 - 881 585 881 585 985.5 363.5 c 128,-1,36 - 1090 142 1090 142 1090 0 c 1,37,-1 - 829 0 l 1,38,39 - 829 142 829 142 721.5 355.5 c 128,-1,40 - 614 569 614 569 500 655 c 1,41,-1 - 440 655 l 1,14,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Uring -Encoding: 366 366 203 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1413 72<653 788> 1653 72<653 788> -VStem: 156 266<328 1434> 565 72<1501 1637> 805 72<1501 1637> 981 266<297 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1724 basechar 0 -LayerCount: 2 -Fore -Refer: 100 778 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Uhungarumlaut -Encoding: 368 368 204 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1495 403 -VStem: 156 266<328 1434> 481 371 760 371 981 266<297 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1901 basechar 0 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Tcommaaccent -Encoding: 354 354 205 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -401 49<483 626> -164 164<569 658> 0 43<508 774> 1331 102<41 508 774 1239> -VStem: 508 266<0 1331> 674 158<-327 -185> -AnchorPoint: "top" 643 1434 basechar 0 -AnchorPoint: "horn" 1200 1389 basechar 0 -LayerCount: 2 -Fore -SplineSet -41 1434 m 1,0,-1 - 1243 1434 l 1,1,-1 - 1239 1331 l 1,2,-1 - 774 1331 l 1,3,-1 - 774 0 l 1,4,-1 - 709 0 l 1,5,-1 - 694 -113 l 1,6,7 - 755 -126 755 -126 793 -161 c 128,-1,8 - 831 -196 831 -196 831 -250 c 0,9,10 - 831 -315 831 -315 739.5 -358 c 128,-1,11 - 648 -401 648 -401 483 -401 c 1,12,-1 - 483 -352 l 1,13,14 - 674 -352 674 -352 674 -262 c 0,15,16 - 674 -216 674 -216 642.5 -192 c 128,-1,17 - 611 -168 611 -168 541 -164 c 1,18,-1 - 569 0 l 1,19,-1 - 508 0 l 1,20,-1 - 508 1331 l 1,21,-1 - 41 1331 l 1,22,-1 - 41 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: racute -Encoding: 341 341 206 -Width: 770 -VWidth: 0 -Flags: W -HStem: 0 43<147 403> 819 102<448 739> 860 41<147 403> 1065 403 -VStem: 147 256<0 774 874 901> 358 371 -AnchorPoint: "top" 397 1468 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "bottom" 285 0 basechar 0 -AnchorPoint: "ogonek" 291 0 basechar 0 -AnchorPoint: "horn" 647 856 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1047 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: abreve -Encoding: 259 259 207 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1085 137<367 612> -VStem: 94 256<132 467> 258 78<1262 1283> 602 256<87 518 616 771> 643 78<1262 1283> -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 489 1329 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: lacute -Encoding: 314 314 208 -Width: 548 -VWidth: 0 -Flags: W -HStem: 0 43<147 403> 1311 41<147 403> 1495 403 -VStem: 147 256<0 1352> 174 371 -AnchorPoint: "top" 274 1901 basechar 0 -AnchorPoint: "cedilla" 268 0 basechar 0 -AnchorPoint: "bottom" 272 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -AnchorPoint: "horn" 311 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 862 246 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: cacute -Encoding: 263 263 209 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<441 694> 819 102<425 635> 1065 403 -VStem: 90 256<235 657> 432 371 -AnchorPoint: "top" 532 1466 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "bottom" 569 0 basechar 0 -AnchorPoint: "ogonek" 571 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1120 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ccaron -Encoding: 269 269 210 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<441 694> 819 102<425 635> 954 387 -VStem: 90 256<235 657> 293 479 -AnchorPoint: "top" 532 1346 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "bottom" 569 0 basechar 0 -AnchorPoint: "ogonek" 571 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1120 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ecaron -Encoding: 283 283 211 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 954 387 -VStem: 90 256<235 451 553 656> 291 479 -AnchorPoint: "top" 530 1346 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: dcaron -Encoding: 271 271 212 -Width: 1265 -VWidth: 0 -Flags: W -HStem: -20 102<423 640> 0 43<688 944> 819 102<423 621> 985 367<870 976> 1311 41<688 944> -VStem: 90 256<228 673> 688 256<0 4 132 737 883 1352> 1047 219<1139 1352> -AnchorPoint: "top" 532 1004 basechar 0 -AnchorPoint: "bottom" 514 0 basechar 0 -AnchorPoint: "cedilla" 512 0 basechar 0 -AnchorPoint: "ogonek" 864 0 basechar 0 -AnchorPoint: "horn" 885 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 938 1188 2 -Refer: 0 100 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: nacute -Encoding: 324 324 213 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 403 692 948> 819 102<405 644> 1065 403 -VStem: 147 256<0 802> 449 371 692 256<0 720> -AnchorPoint: "top" 549 1462 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "ogonek" 877 0 basechar 0 -AnchorPoint: "horn" 856 717 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1137 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ncaron -Encoding: 328 328 214 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 403 692 948> 819 102<405 644> 954 387 -VStem: 147 256<0 802> 309 479 692 256<0 720> -AnchorPoint: "top" 549 1348 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "ogonek" 877 0 basechar 0 -AnchorPoint: "horn" 856 717 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1137 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ohungarumlaut -Encoding: 337 337 215 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1065 403 -VStem: 90 256<214 657> 295 371 573 371 715 256<223 678> -AnchorPoint: "top" 535 1466 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: rcaron -Encoding: 345 345 216 -Width: 770 -VWidth: 0 -Flags: W -HStem: 0 43<147 403> 819 102<448 739> 860 41<147 403> 954 387 -VStem: 147 256<0 774 874 901> 199 479 -AnchorPoint: "top" 438 1341 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "bottom" 285 0 basechar 0 -AnchorPoint: "ogonek" 291 0 basechar 0 -AnchorPoint: "horn" 647 856 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1026 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uring -Encoding: 367 367 217 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 983 72<481 616> 1223 72<481 616> -VStem: 143 256<163 901> 393 72<1071 1206> 633 72<1071 1206> 688 256<91 901> -AnchorPoint: "top" 549 1296 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 100 778 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uhungarumlaut -Encoding: 369 369 218 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1065 403 -VStem: 143 256<163 901> 309 371 588 371 688 256<91 901> -AnchorPoint: "top" 549 1468 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: tcommaaccent -Encoding: 355 355 219 -Width: 657 -VWidth: 0 -Flags: W -HStem: -401 49<154 297> -164 164<240 328> 0 43<188 444> 799 102<84 188 444 604> -VStem: 188 256<0 799 901 1198> 344 158<-327 -185> -AnchorPoint: "top" 317 1352 basechar 0 -AnchorPoint: "horn" 365 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -444 799 m 1,0,-1 - 444 0 l 1,1,-1 - 379 0 l 1,2,-1 - 365 -113 l 1,3,4 - 426 -126 426 -126 464 -161 c 128,-1,5 - 502 -196 502 -196 502 -250 c 0,6,7 - 502 -315 502 -315 410.5 -358 c 128,-1,8 - 319 -401 319 -401 154 -401 c 1,9,-1 - 154 -352 l 1,10,11 - 344 -352 344 -352 344 -262 c 0,12,13 - 344 -216 344 -216 312.5 -192 c 128,-1,14 - 281 -168 281 -168 211 -164 c 1,15,-1 - 240 0 l 1,16,-1 - 188 0 l 1,17,-1 - 188 799 l 1,18,-1 - 53 799 l 1,19,-1 - 84 901 l 1,20,-1 - 188 901 l 1,21,-1 - 188 1198 l 1,22,-1 - 444 1229 l 1,23,-1 - 444 901 l 1,24,-1 - 604 901 l 1,25,-1 - 604 799 l 1,26,-1 - 444 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Aogonek -Encoding: 260 260 220 -Width: 1298 -VWidth: 0 -Flags: W -HStem: -319 37<1065 1153> 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> -VStem: 854 147<-254 -77> -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "top" 651 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -651 1034 m 1,0,-1 - 461 512 l 1,1,-1 - 842 512 l 1,2,-1 - 651 1034 l 1,0,-1 -741 1434 m 1,3,-1 - 1264 0 l 1,4,-1 - 1100 0 l 1,5,6 - 1061 -20 1061 -20 1031 -67 c 128,-1,7 - 1001 -114 1001 -114 1001 -150 c 0,8,9 - 1001 -283 1001 -283 1153 -283 c 1,10,-1 - 1153 -319 l 1,11,12 - 997 -319 997 -319 925.5 -278.5 c 128,-1,13 - 854 -238 854 -238 854 -186 c 0,14,15 - 854 -64 854 -64 1028 1 c 1,16,-1 - 879 410 l 1,17,-1 - 424 410 l 1,18,-1 - 274 0 l 1,19,-1 - 39 0 l 1,20,-1 - 561 1434 l 1,21,-1 - 741 1434 l 1,3,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Eogonek -Encoding: 280 280 221 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -319 37<812 899> 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> -VStem: 174 266<102 799 901 1331> 600 147<-254 -77> -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "top" 614 1438 basechar 0 -LayerCount: 2 -Fore -SplineSet -846 0 m 1,0,1 - 807 -20 807 -20 777.5 -67 c 128,-1,2 - 748 -114 748 -114 748 -150 c 0,3,4 - 748 -175 748 -175 753 -195 c 128,-1,5 - 758 -215 758 -215 772.5 -236.5 c 128,-1,6 - 787 -258 787 -258 819 -270.5 c 128,-1,7 - 851 -283 851 -283 899 -283 c 1,8,-1 - 899 -319 l 1,9,10 - 743 -319 743 -319 671.5 -278.5 c 128,-1,11 - 600 -238 600 -238 600 -186 c 0,12,13 - 600 -64 600 -64 770 0 c 1,14,-1 - 174 0 l 1,15,-1 - 174 1434 l 1,16,-1 - 1001 1434 l 1,17,-1 - 1001 1331 l 1,18,-1 - 440 1331 l 1,19,-1 - 440 901 l 1,20,-1 - 817 901 l 1,21,-1 - 817 799 l 1,22,-1 - 440 799 l 1,23,-1 - 440 102 l 1,24,-1 - 1034 102 l 1,25,-1 - 1034 0 l 1,26,-1 - 846 0 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: aogonek -Encoding: 261 261 222 -Width: 974 -VWidth: 0 -Flags: W -HStem: -319 37<812 899> -20 102<401 601> 520 102<400 596> 819 102<338 551> -VStem: 94 256<132 467> 600 147<-254 -77> 602 256<87 518 616 771> -AnchorPoint: "top" 489 1004 basechar 0 -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -602 98 m 1,0,-1 - 602 459 l 1,1,-1 - 602 514 l 1,2,3 - 553 520 553 520 502 520 c 0,4,5 - 435 520 435 520 392.5 467 c 128,-1,6 - 350 414 350 414 350 311 c 0,7,8 - 350 202 350 202 388.5 142 c 128,-1,9 - 427 82 427 82 502 82 c 0,10,11 - 556 82 556 82 602 98 c 1,0,-1 -115 829 m 1,12,13 - 293 922 293 922 438 922 c 0,14,15 - 531 922 531 922 595 913.5 c 128,-1,16 - 659 905 659 905 707.5 881 c 128,-1,17 - 756 857 756 857 784 822.5 c 128,-1,18 - 812 788 812 788 829.5 727 c 128,-1,19 - 847 666 847 666 852.5 594.5 c 128,-1,20 - 858 523 858 523 858 414 c 2,21,-1 - 858 0 l 1,22,-1 - 846 0 l 1,23,24 - 807 -20 807 -20 777.5 -67 c 128,-1,25 - 748 -114 748 -114 748 -150 c 0,26,27 - 748 -175 748 -175 753 -195 c 128,-1,28 - 758 -215 758 -215 772.5 -236.5 c 128,-1,29 - 787 -258 787 -258 819 -270.5 c 128,-1,30 - 851 -283 851 -283 899 -283 c 1,31,-1 - 899 -319 l 1,32,33 - 743 -319 743 -319 671.5 -278.5 c 128,-1,34 - 600 -238 600 -238 600 -186 c 0,35,36 - 600 -64 600 -64 770 0 c 1,37,-1 - 606 0 l 1,38,39 - 553 -20 553 -20 471 -20 c 0,40,41 - 297 -20 297 -20 195.5 58.5 c 128,-1,42 - 94 137 94 137 94 311 c 0,43,44 - 94 382 94 382 118 437.5 c 128,-1,45 - 142 493 142 493 179.5 527 c 128,-1,46 - 217 561 217 561 268 583.5 c 128,-1,47 - 319 606 319 606 368.5 614.5 c 128,-1,48 - 418 623 418 623 471 623 c 0,49,50 - 528 623 528 623 596 616 c 1,51,52 - 587 728 587 728 558 773.5 c 128,-1,53 - 529 819 529 819 469 819 c 0,54,55 - 361 819 361 819 289 723 c 1,56,-1 - 115 829 l 1,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eogonek -Encoding: 281 281 223 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -319 37<553 641> -20 102<441 705> 451 102<350 684> 819 102<425 629> -VStem: 90 256<235 451 553 656> 342 147<-254 -77> -AnchorPoint: "top" 530 1004 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -350 553 m 1,0,-1 - 684 553 l 1,1,2 - 682 616 682 616 675 660 c 128,-1,3 - 668 704 668 704 653 742.5 c 128,-1,4 - 638 781 638 781 610.5 800 c 128,-1,5 - 583 819 583 819 543 819 c 0,6,7 - 450 819 450 819 404.5 751.5 c 128,-1,8 - 359 684 359 684 350 553 c 1,0,-1 -346 451 m 1,9,10 - 346 379 346 379 352 325.5 c 128,-1,11 - 358 272 358 272 373.5 224.5 c 128,-1,12 - 389 177 389 177 415.5 147 c 128,-1,13 - 442 117 442 117 484.5 99.5 c 128,-1,14 - 527 82 527 82 584 82 c 0,15,16 - 658 82 658 82 692 112.5 c 128,-1,17 - 726 143 726 143 737 205 c 1,18,-1 - 932 158 l 1,19,20 - 868 77 868 77 772.5 29 c 128,-1,21 - 677 -19 677 -19 558 -20 c 1,22,23 - 529 -45 529 -45 509 -83 c 128,-1,24 - 489 -121 489 -121 489 -150 c 0,25,26 - 489 -283 489 -283 641 -283 c 1,27,-1 - 641 -319 l 1,28,29 - 485 -319 485 -319 413.5 -278.5 c 128,-1,30 - 342 -238 342 -238 342 -186 c 0,31,32 - 342 -76 342 -76 476 -15 c 1,33,34 - 304 9 304 9 197 135 c 128,-1,35 - 90 261 90 261 90 451 c 0,36,37 - 90 555 90 555 127 645 c 128,-1,38 - 164 735 164 735 224 794.5 c 128,-1,39 - 284 854 284 854 359.5 888 c 128,-1,40 - 435 922 435 922 512 922 c 0,41,42 - 615 922 615 922 699 880.5 c 128,-1,43 - 783 839 783 839 834.5 770.5 c 128,-1,44 - 886 702 886 702 914 619.5 c 128,-1,45 - 942 537 942 537 942 451 c 1,46,-1 - 346 451 l 1,9,10 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Lslash -Encoding: 321 321 224 -Width: 1083 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 1393 41G<174 440> -VStem: 174 266<102 668 801 889 1024 1434> -AnchorPoint: "top" 485 1434 basechar 0 -AnchorPoint: "cedilla" 596 0 basechar 0 -AnchorPoint: "bottom" 604 0 basechar 0 -AnchorPoint: "ogonek" 745 0 basechar 0 -AnchorPoint: "horn" 328 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 102 m 1,0,-1 - 1034 102 l 1,1,-1 - 1034 0 l 1,2,-1 - 174 0 l 1,3,-1 - 174 668 l 1,4,-1 - 84 592 l 1,5,-1 - 18 672 l 1,6,-1 - 174 801 l 1,7,-1 - 174 1434 l 1,8,-1 - 440 1434 l 1,9,-1 - 440 1024 l 1,10,-1 - 541 1108 l 1,11,-1 - 606 1028 l 1,12,-1 - 440 889 l 1,13,-1 - 440 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: lslash -Encoding: 322 322 225 -Width: 548 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403> 1311 41G<147 403> -VStem: 147 256<0 676 811 889 1024 1352> -AnchorPoint: "top" 274 1434 basechar 0 -AnchorPoint: "cedilla" 268 0 basechar 0 -AnchorPoint: "bottom" 272 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -AnchorPoint: "horn" 311 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -147 676 m 1,0,-1 - 47 592 l 1,1,-1 - -18 672 l 1,2,-1 - 147 811 l 1,3,-1 - 147 1352 l 1,4,-1 - 403 1352 l 1,5,-1 - 403 1024 l 1,6,-1 - 504 1108 l 1,7,-1 - 569 1028 l 1,8,-1 - 403 889 l 1,9,-1 - 403 0 l 1,10,-1 - 147 0 l 1,11,-1 - 147 676 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: dcroat -Encoding: 273 273 226 -Width: 1089 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<423 640> 0 43G<688 944> 819 102<423 621> 1085 102<590 688 944 1012> 1311 41G<688 944> -VStem: 90 256<228 673> 688 256<0 4 132 737 883 1085 1188 1352> -AnchorPoint: "top" 532 1004 basechar 0 -AnchorPoint: "bottom" 514 0 basechar 0 -AnchorPoint: "cedilla" 512 0 basechar 0 -AnchorPoint: "ogonek" 864 0 basechar 0 -AnchorPoint: "horn" 983 1135 basechar 0 -LayerCount: 2 -Fore -SplineSet -688 401 m 0,0,1 - 688 468 688 468 686 518 c 128,-1,2 - 684 568 684 568 675 628.5 c 128,-1,3 - 666 689 666 689 650 727.5 c 128,-1,4 - 634 766 634 766 605 792.5 c 128,-1,5 - 576 819 576 819 535 819 c 0,6,7 - 493 819 493 819 461 804.5 c 128,-1,8 - 429 790 429 790 408.5 761.5 c 128,-1,9 - 388 733 388 733 375 701 c 128,-1,10 - 362 669 362 669 356 623 c 128,-1,11 - 350 577 350 577 348 539 c 128,-1,12 - 346 501 346 501 346 451 c 128,-1,13 - 346 401 346 401 348 363 c 128,-1,14 - 350 325 350 325 356 279 c 128,-1,15 - 362 233 362 233 375.5 200.5 c 128,-1,16 - 389 168 389 168 409 139.5 c 128,-1,17 - 429 111 429 111 461 96.5 c 128,-1,18 - 493 82 493 82 535 82 c 0,19,20 - 570 82 570 82 595.5 91.5 c 128,-1,21 - 621 101 621 101 637.5 122.5 c 128,-1,22 - 654 144 654 144 664.5 168.5 c 128,-1,23 - 675 193 675 193 680 233 c 128,-1,24 - 685 273 685 273 686.5 309.5 c 128,-1,25 - 688 346 688 346 688 401 c 0,0,1 -944 1085 m 1,26,-1 - 944 0 l 1,27,-1 - 688 0 l 1,28,-1 - 688 4 l 1,29,30 - 606 -20 606 -20 504 -20 c 0,31,32 - 410 -20 410 -20 331.5 17.5 c 128,-1,33 - 253 55 253 55 200.5 119.5 c 128,-1,34 - 148 184 148 184 119 269.5 c 128,-1,35 - 90 355 90 355 90 451 c 0,36,37 - 90 580 90 580 139.5 686.5 c 128,-1,38 - 189 793 189 793 285 857.5 c 128,-1,39 - 381 922 381 922 504 922 c 0,40,41 - 602 922 602 922 688 883 c 1,42,-1 - 688 1085 l 1,43,-1 - 590 1085 l 1,44,-1 - 590 1188 l 1,45,-1 - 688 1188 l 1,46,-1 - 688 1352 l 1,47,-1 - 944 1352 l 1,48,-1 - 944 1188 l 1,49,-1 - 1012 1188 l 1,50,-1 - 1012 1085 l 1,51,-1 - 944 1085 l 1,26,-1 -EndSplineSet -EndChar - -StartChar: Hcircumflex -Encoding: 292 292 227 -Width: 1351 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 915 1182> 717 102<440 915> 1393 41<174 440 915 1182> 1503 299 -VStem: 174 266<0 717 819 1434> 412 551 915 266<0 717 819 1434> -AnchorPoint: "top" 688 1802 basechar 0 -AnchorPoint: "bottom" 674 0 basechar 0 -AnchorPoint: "cedilla" 651 0 basechar 0 -AnchorPoint: "ogonek" 1102 0 basechar 0 -AnchorPoint: "horn" 1130 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1274 246 2 -Refer: 35 72 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Idotaccent -Encoding: 304 304 228 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1516 170<219 389> -VStem: 172 266<0 1434> 219 170<1516 1686> -AnchorPoint: "top" 309 1708 basechar 0 -AnchorPoint: "ogonek" 283 0 basechar 0 -AnchorPoint: "bottom" 299 0 basechar 0 -AnchorPoint: "cedilla" 317 0 basechar 0 -AnchorPoint: "horn" 338 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 895 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gbreve -Encoding: 286 286 229 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -20 102<614 974> 717 102<821 993> 1331 102<564 915> 1516 137<595 839> -VStem: 102 266<441 1009> 485 78<1692 1714> 870 78<1692 1714> 993 256<161 717> -AnchorPoint: "top" 717 1761 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1305 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Jcircumflex -Encoding: 308 308 230 -Width: 954 -VWidth: 0 -Flags: W -HStem: -20 102<272 468> 1393 41<522 788> 1503 299 -VStem: 383 551 522 266<137 1434> -AnchorPoint: "top" 659 1800 basechar 0 -AnchorPoint: "bottom" 383 0 basechar 0 -AnchorPoint: "horn" 733 1085 basechar 0 -AnchorPoint: "ogonek" 401 0 basechar 0 -AnchorPoint: "cedilla" 401 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1245 246 2 -Refer: 37 74 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: hcircumflex -Encoding: 293 293 231 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 403 692 948> 819 102<405 644> 1311 41<147 403> 1503 299 -VStem: 113 551 147 256<0 802 907 1352> 692 256<0 720> -AnchorPoint: "top" 389 1798 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "cedilla" 532 0 basechar 0 -AnchorPoint: "ogonek" 860 0 basechar 0 -AnchorPoint: "horn" 856 717 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 975 246 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gbreve -Encoding: 287 287 232 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<362 595> -20 102<436 635> 819 102<423 633> 860 41<637 893> 1085 137<384 628> -VStem: 90 256<223 675> 274 78<1262 1283> 637 256<-196 -8 84 801 893 901> 659 78<1262 1283> -AnchorPoint: "top" 506 1352 basechar 0 -AnchorPoint: "bottom" 492 -330 basechar 0 -AnchorPoint: "ogonek" 639 -299 basechar 0 -AnchorPoint: "cedilla" 496 -319 basechar 0 -AnchorPoint: "horn" 844 717 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1094 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: jcircumflex -Encoding: 309 309 233 -Width: 598 -VWidth: 0 -Flags: W -HStem: -348 102<-3 199> 860 41<221 477> 1073 299 -VStem: 74 551 221 256<-204 901> -AnchorPoint: "bottom" 129 -348 basechar 0 -AnchorPoint: "top" 354 1372 basechar 0 -AnchorPoint: "horn" 389 717 basechar 0 -AnchorPoint: "ogonek" 287 -266 basechar 0 -AnchorPoint: "cedilla" 139 -348 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 936 -184 2 -Refer: 111 567 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Cdotaccent -Encoding: 266 266 234 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<614 939> 1352 102<571 902> 1516 170<629 799> -VStem: 102 266<441 1012> 629 170<1516 1686> -AnchorPoint: "top" 717 1704 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1305 246 2 -Refer: 30 67 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ccircumflex -Encoding: 264 264 235 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<614 939> 1352 102<571 902> 1503 299 -VStem: 102 266<441 1012> 442 551 -AnchorPoint: "top" 719 1804 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1305 246 2 -Refer: 30 67 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gdotaccent -Encoding: 288 288 236 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -20 102<614 974> 717 102<821 993> 1331 102<564 915> 1516 170<629 799> -VStem: 102 266<441 1009> 629 170<1516 1686> 993 256<161 717> -AnchorPoint: "top" 717 1716 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1305 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gcircumflex -Encoding: 284 284 237 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -20 102<614 974> 717 102<821 993> 1331 102<564 915> 1503 299 -VStem: 102 266<441 1009> 442 551 993 256<161 717> -AnchorPoint: "top" 719 1804 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1305 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ubreve -Encoding: 364 364 238 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1516 137<599 843> -VStem: 156 266<328 1434> 489 78<1692 1714> 874 78<1692 1714> 981 266<297 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1761 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Scircumflex -Encoding: 348 348 239 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -20 102<474 721> 1352 102<489 697> 1503 299 -VStem: 162 266<971 1252> 295 551 815 266<200 510> -AnchorPoint: "top" 571 1804 basechar 0 -AnchorPoint: "cedilla" 573 0 basechar 0 -AnchorPoint: "bottom" 578 0 basechar 0 -AnchorPoint: "horn" 897 1290 basechar 0 -AnchorPoint: "ogonek" 602 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1157 246 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: cdotaccent -Encoding: 267 267 240 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<441 694> 819 102<425 635> 1085 170<444 614> -VStem: 90 256<235 657> 444 170<1085 1255> -AnchorPoint: "top" 532 1255 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "bottom" 569 0 basechar 0 -AnchorPoint: "ogonek" 571 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1120 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ccircumflex -Encoding: 265 265 241 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<441 694> 819 102<425 635> 1073 299 -VStem: 90 256<235 657> 258 551 -AnchorPoint: "top" 532 1376 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "bottom" 569 0 basechar 0 -AnchorPoint: "ogonek" 571 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1120 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gdotaccent -Encoding: 289 289 242 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<362 595> -20 102<436 635> 819 102<423 633> 860 41<637 893> 1085 170<418 588> -VStem: 90 256<223 675> 418 170<1085 1255> 637 256<-196 -8 84 801 893 901> -AnchorPoint: "top" 506 1251 basechar 0 -AnchorPoint: "bottom" 492 -330 basechar 0 -AnchorPoint: "ogonek" 639 -299 basechar 0 -AnchorPoint: "cedilla" 496 -319 basechar 0 -AnchorPoint: "horn" 844 717 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1094 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gcircumflex -Encoding: 285 285 243 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<362 595> -20 102<436 635> 819 102<423 633> 860 41<637 893> 1073 299 -VStem: 90 256<223 675> 231 551 637 256<-196 -8 84 801 893 901> -AnchorPoint: "top" 508 1372 basechar 0 -AnchorPoint: "bottom" 492 -330 basechar 0 -AnchorPoint: "ogonek" 639 -299 basechar 0 -AnchorPoint: "cedilla" 496 -319 basechar 0 -AnchorPoint: "horn" 844 717 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1094 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ubreve -Encoding: 365 365 244 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1085 137<427 671> -VStem: 143 256<163 901> 317 78<1262 1283> 688 256<91 901> 702 78<1262 1283> -AnchorPoint: "top" 549 1352 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scircumflex -Encoding: 349 349 245 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<286 522> 817 104<397 566> 1073 299 -VStem: 125 256<569 808> 141 551 559 256<119 365> -AnchorPoint: "top" 416 1376 basechar 0 -AnchorPoint: "cedilla" 449 0 basechar 0 -AnchorPoint: "bottom" 449 0 basechar 0 -AnchorPoint: "ogonek" 455 0 basechar 0 -AnchorPoint: "horn" 647 793 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1004 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Hbar -Encoding: 294 294 246 -Width: 1351 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 43<174 440 915 1182> 717 102<440 915> 1159 102<92 1264> 1393 41<174 440 915 1182> -VStem: 174 266<0 717 819 1434> 915 266<0 717 819 1434> -AnchorPoint: "top" 686 1434 basechar 0 -AnchorPoint: "bottom" 674 0 basechar 0 -AnchorPoint: "cedilla" 651 0 basechar 0 -AnchorPoint: "ogonek" 1102 0 basechar 0 -AnchorPoint: "horn" 1130 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -92 1262 m 1,0,-1 - 1264 1262 l 1,1,-1 - 1264 1159 l 1,2,-1 - 92 1159 l 1,3,-1 - 92 1262 l 1,0,-1 -EndSplineSet -Refer: 35 72 N 1 0 0 1 0 0 2 -EndChar - -StartChar: hbar -Encoding: 295 295 247 -Width: 1087 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 43G<147 403 692 948> 819 102<405 644> 1085 102<66 147 403 557> 1311 41G<147 403> -VStem: 147 256<0 802 907 1085 1188 1352> 692 256<0 720> -AnchorPoint: "top" 387 1434 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "cedilla" 532 0 basechar 0 -AnchorPoint: "ogonek" 860 0 basechar 0 -AnchorPoint: "horn" 856 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -403 784 m 1,0,-1 - 403 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 1085 l 1,3,-1 - 66 1085 l 1,4,-1 - 66 1188 l 1,5,-1 - 147 1188 l 1,6,-1 - 147 1352 l 1,7,-1 - 403 1352 l 1,8,-1 - 403 1188 l 1,9,-1 - 557 1188 l 1,10,-1 - 557 1085 l 1,11,-1 - 403 1085 l 1,12,-1 - 403 907 l 1,13,14 - 472 922 472 922 520 922 c 0,15,16 - 736 922 736 922 842 816 c 128,-1,17 - 948 710 948 710 948 492 c 2,18,-1 - 948 0 l 1,19,-1 - 692 0 l 1,20,-1 - 692 467 l 2,21,22 - 692 608 692 608 676 686 c 128,-1,23 - 660 764 660 764 631 791.5 c 128,-1,24 - 602 819 602 819 551 819 c 0,25,26 - 471 819 471 819 403 784 c 1,0,-1 -EndSplineSet -EndChar - -StartChar: Iogonek -Encoding: 302 302 248 -Width: 606 -VWidth: 0 -Flags: W -HStem: -319 37<369 457> 0 43<172 438> 1393 41<172 438> -VStem: 158 147<-254 -77> 172 266<0 1434> -AnchorPoint: "top" 309 1434 basechar 0 -AnchorPoint: "horn" 338 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -438 1434 m 1,0,-1 - 438 0 l 1,1,-1 - 403 0 l 1,2,3 - 364 -20 364 -20 334.5 -67 c 128,-1,4 - 305 -114 305 -114 305 -150 c 0,5,6 - 305 -283 305 -283 457 -283 c 1,7,-1 - 457 -319 l 1,8,9 - 301 -319 301 -319 229.5 -278.5 c 128,-1,10 - 158 -238 158 -238 158 -186 c 0,11,12 - 158 -64 158 -64 328 0 c 1,13,-1 - 172 0 l 1,14,-1 - 172 1434 l 1,15,-1 - 438 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Uogonek -Encoding: 370 370 249 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -319 37<748 836> -20 102<564 848> 1393 41<156 422 981 1247> -VStem: 156 266<328 1434> 537 147<-254 -77> 981 266<297 1434> -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "top" 721 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -981 1434 m 1,0,-1 - 1247 1434 l 1,1,-1 - 1247 610 l 2,2,3 - 1247 470 1247 470 1221 362.5 c 128,-1,4 - 1195 255 1195 255 1151.5 186 c 128,-1,5 - 1108 117 1108 117 1043.5 72 c 128,-1,6 - 979 27 979 27 909.5 6.5 c 128,-1,7 - 840 -14 840 -14 754 -19 c 1,8,9 - 724 -44 724 -44 704 -82 c 128,-1,10 - 684 -120 684 -120 684 -150 c 0,11,12 - 684 -283 684 -283 836 -283 c 1,13,-1 - 836 -319 l 1,14,15 - 680 -319 680 -319 608.5 -278.5 c 128,-1,16 - 537 -238 537 -238 537 -186 c 0,17,18 - 537 -82 537 -82 662 -19 c 1,19,20 - 592 -15 592 -15 526.5 4 c 128,-1,21 - 461 23 461 23 391.5 68.5 c 128,-1,22 - 322 114 322 114 271.5 181.5 c 128,-1,23 - 221 249 221 249 188.5 359.5 c 128,-1,24 - 156 470 156 470 156 610 c 2,25,-1 - 156 1434 l 1,26,-1 - 422 1434 l 1,27,-1 - 422 610 l 2,28,29 - 422 480 422 480 439 382.5 c 128,-1,30 - 456 285 456 285 482.5 229 c 128,-1,31 - 509 173 509 173 548.5 138.5 c 128,-1,32 - 588 104 588 104 625.5 93 c 128,-1,33 - 663 82 663 82 709 82 c 0,34,35 - 759 82 759 82 797.5 95.5 c 128,-1,36 - 836 109 836 109 871.5 144.5 c 128,-1,37 - 907 180 907 180 930.5 238 c 128,-1,38 - 954 296 954 296 967.5 390 c 128,-1,39 - 981 484 981 484 981 610 c 2,40,-1 - 981 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: iogonek -Encoding: 303 303 250 -Width: 499 -VWidth: 0 -Flags: W -HStem: -319 37<322 410> 0 43<123 379> 860 41<123 379> 1065 164<143 358> -VStem: 111 147<-254 -77> 123 256<0 901> 143 215<1065 1229> -AnchorPoint: "horn" 297 717 basechar 0 -AnchorPoint: "top" 252 1167 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 379 901 l 1,1,-1 - 379 0 l 1,2,-1 - 356 0 l 1,3,4 - 317 -20 317 -20 287.5 -67 c 128,-1,5 - 258 -114 258 -114 258 -150 c 0,6,7 - 258 -283 258 -283 410 -283 c 1,8,-1 - 410 -319 l 1,9,10 - 254 -319 254 -319 182.5 -278.5 c 128,-1,11 - 111 -238 111 -238 111 -186 c 0,12,13 - 111 -64 111 -64 281 0 c 1,14,-1 - 123 0 l 1,15,-1 - 123 901 l 1,0,-1 -143 1229 m 1,16,-1 - 358 1229 l 1,17,-1 - 358 1065 l 1,18,-1 - 143 1065 l 1,19,-1 - 143 1229 l 1,16,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uogonek -Encoding: 371 371 251 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -319 37<902 989> -20 102<450 687> 860 41<143 399 688 944> -VStem: 143 256<163 901> 688 256<91 901> 690 147<-254 -77> -AnchorPoint: "top" 549 1004 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -688 106 m 1,0,-1 - 688 901 l 1,1,-1 - 944 901 l 1,2,-1 - 944 0 l 1,3,-1 - 936 0 l 1,4,5 - 897 -20 897 -20 867.5 -67 c 128,-1,6 - 838 -114 838 -114 838 -150 c 0,7,8 - 838 -175 838 -175 843 -195 c 128,-1,9 - 848 -215 848 -215 862.5 -236.5 c 128,-1,10 - 877 -258 877 -258 909 -270.5 c 128,-1,11 - 941 -283 941 -283 989 -283 c 1,12,-1 - 989 -319 l 1,13,14 - 833 -319 833 -319 761.5 -278.5 c 128,-1,15 - 690 -238 690 -238 690 -186 c 0,16,17 - 690 -64 690 -64 860 0 c 1,18,-1 - 690 0 l 1,19,20 - 617 -20 617 -20 541 -20 c 0,21,22 - 329 -20 329 -20 236 84 c 128,-1,23 - 143 188 143 188 143 410 c 2,24,-1 - 143 901 l 1,25,-1 - 399 901 l 1,26,-1 - 399 434 l 2,27,28 - 399 285 399 285 412.5 213 c 128,-1,29 - 426 141 426 141 461.5 111.5 c 128,-1,30 - 497 82 497 82 571 82 c 0,31,32 - 636 82 636 82 688 106 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Amacron -Encoding: 256 256 252 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1516 115<406 877> -VStem: 406 471<1516 1630> -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "top" 651 1638 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Emacron -Encoding: 274 274 253 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1516 115<369 840> -VStem: 174 266<102 799 901 1331> 369 471<1516 1630> -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 614 1626 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Edotaccent -Encoding: 278 278 254 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1516 170<526 696> -VStem: 174 266<102 799 901 1331> 526 170<1516 1686> -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 614 1700 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Imacron -Encoding: 298 298 255 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1516 115<61 532> -VStem: 61 471<1516 1630> 172 266<0 1434> -AnchorPoint: "horn" 338 1085 basechar 0 -AnchorPoint: "cedilla" 317 0 basechar 0 -AnchorPoint: "bottom" 299 0 basechar 0 -AnchorPoint: "ogonek" 283 0 basechar 0 -AnchorPoint: "top" 309 1634 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 895 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Omacron -Encoding: 332 332 256 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1516 115<461 932> -VStem: 102 266<424 1012> 461 471<1516 1630> 1071 266<414 1009> -AnchorPoint: "top" 707 1628 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Umacron -Encoding: 362 362 257 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1516 115<475 946> -VStem: 156 266<328 1434> 475 471<1516 1630> 981 266<297 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1630 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: amacron -Encoding: 257 257 258 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1085 115<244 715> -VStem: 94 256<132 467> 244 471<1085 1200> 602 256<87 518 616 771> -AnchorPoint: "horn" 811 717 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "bottom" 473 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 489 1202 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: emacron -Encoding: 275 275 259 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1085 115<285 756> -VStem: 90 256<235 451 553 656> 285 471<1085 1200> -AnchorPoint: "top" 530 1200 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: edotaccent -Encoding: 279 279 260 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1085 170<442 612> -VStem: 90 256<235 451 553 656> 442 170<1085 1255> -AnchorPoint: "top" 530 1253 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gcommaaccent -Encoding: 291 291 261 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<362 595> -20 102<436 635> 819 102<423 633> 860 41<637 893> 1085 367<480 547> -VStem: 90 256<223 675> 410 180<1085 1298> 637 256<-196 -8 84 801 893 901> -AnchorPoint: "top" 506 1452 basechar 0 -AnchorPoint: "bottom" 492 -330 basechar 0 -AnchorPoint: "ogonek" 639 -299 basechar 0 -AnchorPoint: "cedilla" 496 -319 basechar 0 -AnchorPoint: "horn" 844 717 basechar 0 -LayerCount: 2 -Fore -Refer: 105 786 N 1 0 0 1 1094 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: imacron -Encoding: 299 299 262 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1085 115<8 479> -VStem: 8 471<1085 1200> 123 256<0 901> -AnchorPoint: "ogonek" 326 0 basechar 0 -AnchorPoint: "bottom" 250 0 basechar 0 -AnchorPoint: "cedilla" 256 0 basechar 0 -AnchorPoint: "horn" 297 717 basechar 0 -AnchorPoint: "top" 252 1200 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 842 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: omacron -Encoding: 333 333 263 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1085 115<289 760> -VStem: 90 256<214 657> 289 471<1085 1200> 715 256<223 678> -AnchorPoint: "top" 535 1204 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: umacron -Encoding: 363 363 264 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1085 115<303 774> -VStem: 143 256<163 901> 303 471<1085 1200> 688 256<91 901> -AnchorPoint: "top" 549 1200 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E02 -Encoding: 7682 7682 265 -Width: 1116 -VWidth: 0 -Flags: W -HStem: 0 102<440 656> 727 102<440 574> 1331 102<440 601> 1516 170<414 584> -VStem: 174 266<102 727 829 1331> 414 170<1516 1686> 686 266<944 1243> 772 266<216 579> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1090 246 2 -Refer: 28 66 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E03 -Encoding: 7683 7683 266 -Width: 1079 -VWidth: 0 -Flags: W -HStem: -20 102<441 662> 819 102<429 664> 1085 170<489 659> 1311 41<139 395> -VStem: 139 256<147 782 897 1352> 489 170<1085 1255> 737 256<216 685> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1165 -184 2 -Refer: 6 98 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0A -Encoding: 7690 7690 267 -Width: 1304 -VWidth: 0 -Flags: W -HStem: 0 102<440 741> 1331 102<440 755> 1516 170<494 664> -VStem: 174 266<102 1331> 494 170<1516 1686> 938 266<394 1073> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1169 246 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wgrave -Encoding: 7808 7808 268 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43<486 693 1087 1293> 860 41<775 1004> 1393 41<35 292 1488 1745> 1495 403 -VStem: 604 371 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1329 246 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wacute -Encoding: 7810 7810 269 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43<486 693 1087 1293> 860 41<775 1004> 1393 41<35 292 1488 1745> 1495 403 -VStem: 774 371 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1462 246 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0B -Encoding: 7691 7691 270 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -20 102<423 640> 0 43<688 944> 819 102<423 621> 1085 170<444 614> 1311 41<688 944> -VStem: 90 256<228 673> 444 170<1085 1255> 688 256<0 4 132 737 883 1352> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1120 -184 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ygrave -Encoding: 7922 7922 271 -Width: 989 -VWidth: 0 -Flags: W -HStem: 0 43<383 649> 1393 41<23 301 768 973> 1495 403 -VStem: 244 371 383 266<0 727> -AnchorPoint: "top" 477 1898 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "ogonek" 510 0 basechar 0 -AnchorPoint: "cedilla" 492 0 basechar 0 -AnchorPoint: "horn" 725 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 969 246 2 -Validated: 1 -EndChar - -StartChar: Ydieresis -Encoding: 376 376 272 -Width: 989 -VWidth: 0 -Flags: W -HStem: 0 43<383 649> 1393 41<23 301 768 973> 1516 170<244 414 612 782> -VStem: 244 170<1516 1686> 383 266<0 727> 612 170<1516 1686> -AnchorPoint: "top" 514 1692 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "ogonek" 510 0 basechar 0 -AnchorPoint: "cedilla" 492 0 basechar 0 -AnchorPoint: "horn" 725 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1102 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1E -Encoding: 7710 7710 273 -Width: 1067 -VWidth: 0 -Flags: W -HStem: 0 43<174 440> 799 102<440 817> 1331 102<440 1001> 1516 170<516 686> -VStem: 174 266<0 799 901 1331> 516 170<1516 1686> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1192 246 2 -Refer: 33 70 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1F -Encoding: 7711 7711 274 -Width: 589 -VWidth: 0 -Flags: W -HStem: 0 43<152 408> 799 102<61 152 408 553> 1270 102<427 569> 1516 170<283 453> -VStem: 152 256<0 799 901 1243> 283 170<1516 1686> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 958 246 2 -Refer: 12 102 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E40 -Encoding: 7744 7744 275 -Width: 1626 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 1190 1456> 1393 41<174 459 1171 1456> 1516 170<727 897> -VStem: 174 266<0 1047> 727 170<1516 1686> 1190 266<0 1047> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1403 246 2 -Refer: 40 77 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E41 -Encoding: 7745 7745 276 -Width: 1675 -VWidth: 0 -Flags: W -HStem: 0 43<147 403 723 979 1280 1536> 819 102<405 663 980 1220> 1085 170<719 889> -VStem: 147 256<0 811> 719 170<1085 1255> 723 256<0 757> 1280 256<0 743> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1395 -184 2 -Refer: 11 109 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E56 -Encoding: 7766 7766 277 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 43<174 440> 655 102<440 665> 1331 102<440 665> 1516 170<473 643> -VStem: 174 266<0 655 758 1331> 473 170<1516 1686> 772 266<872 1217> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1149 246 2 -Refer: 29 80 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wgrave -Encoding: 7809 7809 278 -Width: 1472 -VWidth: 0 -Flags: W -HStem: 0 43<341 535 939 1133> 860 41<29 265 669 863 1267 1446> 1065 403 -VStem: 489 371 -AnchorPoint: "horn" 1329 717 basechar 0 -AnchorPoint: "cedilla" 766 0 basechar 0 -AnchorPoint: "bottom" 766 0 basechar 0 -AnchorPoint: "top" 760 1466 basechar 0 -AnchorPoint: "ogonek" 1110 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1214 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E57 -Encoding: 7767 7767 279 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -16 102<478 663> 823 102<468 674> 1085 170<494 664> -VStem: 147 256<-410 8 181 757> 494 170<1085 1255> 745 256<253 665> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1169 -184 2 -Refer: 16 112 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wacute -Encoding: 7811 7811 280 -Width: 1472 -VWidth: 0 -Flags: W -HStem: 0 43<341 535 939 1133> 860 41<29 265 669 863 1267 1446> 1065 403 -VStem: 659 371 -AnchorPoint: "horn" 1329 717 basechar 0 -AnchorPoint: "cedilla" 766 0 basechar 0 -AnchorPoint: "bottom" 766 0 basechar 0 -AnchorPoint: "top" 760 1464 basechar 0 -AnchorPoint: "ogonek" 1110 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1348 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E60 -Encoding: 7776 7776 281 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -20 102<474 721> 1352 102<489 697> 1516 170<481 651> -VStem: 162 266<971 1252> 481 170<1516 1686> 815 266<200 510> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1157 246 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ygrave -Encoding: 7923 7923 282 -Width: 923 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 860 41<88 324 729 907> 1065 403 -VStem: 233 371 -AnchorPoint: "horn" 762 717 basechar 0 -AnchorPoint: "cedilla" 242 -328 basechar 0 -AnchorPoint: "bottom" 365 -315 basechar 0 -AnchorPoint: "ogonek" 614 0 basechar 0 -AnchorPoint: "top" 506 1466 basechar 0 -LayerCount: 2 -Fore -Refer: 24 121 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 958 -184 2 -Validated: 1 -EndChar - -StartChar: Wdieresis -Encoding: 7812 7812 283 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43<486 693 1087 1293> 860 41<775 1004> 1393 41<35 292 1488 1745> 1516 170<604 774 973 1143> -VStem: 604 170<1516 1686> 973 170<1516 1686> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1462 246 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wdieresis -Encoding: 7813 7813 284 -Width: 1472 -VWidth: 0 -Flags: W -HStem: 0 43<341 535 939 1133> 860 41<29 265 669 863 1267 1446> 1085 170<489 659 858 1028> -VStem: 489 170<1085 1255> 858 170<1085 1255> -AnchorPoint: "horn" 1329 717 basechar 0 -AnchorPoint: "cedilla" 766 0 basechar 0 -AnchorPoint: "bottom" 766 0 basechar 0 -AnchorPoint: "top" 760 1282 basechar 0 -AnchorPoint: "ogonek" 1110 0 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1348 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E61 -Encoding: 7777 7777 285 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<286 522> 817 104<397 566> 1085 170<328 498> -VStem: 125 256<569 808> 328 170<1085 1255> 559 256<119 365> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1004 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wcircumflex -Encoding: 372 372 286 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43<486 693 1087 1293> 860 41<775 1004> 1108 299 1393 41<35 292 1488 1745> -VStem: 600 551 -AnchorPoint: "top" 874 1434 basechar 0 -AnchorPoint: "bottom" 899 0 basechar 0 -AnchorPoint: "cedilla" 881 0 basechar 0 -AnchorPoint: "ogonek" 1188 0 basechar 0 -AnchorPoint: "horn" 1577 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1462 -150 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6A -Encoding: 7786 7786 287 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 43<508 774> 1331 102<41 508 774 1239> 1516 170<555 725> -VStem: 508 266<0 1331> 555 170<1516 1686> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1231 246 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ycircumflex -Encoding: 374 374 288 -Width: 989 -VWidth: 0 -Flags: W -HStem: 0 43<383 649> 1393 41<23 301 768 973> 1503 299 -VStem: 240 551 383 266<0 727> -AnchorPoint: "top" 514 1796 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "ogonek" 510 0 basechar 0 -AnchorPoint: "cedilla" 492 0 basechar 0 -AnchorPoint: "horn" 725 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1102 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wcircumflex -Encoding: 373 373 289 -Width: 1472 -VWidth: 0 -Flags: W -HStem: 0 43<341 535 939 1133> 860 41<29 265 669 863 1267 1446> 1073 299 -VStem: 485 551 -AnchorPoint: "ogonek" 1110 0 basechar 0 -AnchorPoint: "top" 760 1370 basechar 0 -AnchorPoint: "bottom" 766 0 basechar 0 -AnchorPoint: "cedilla" 766 0 basechar 0 -AnchorPoint: "horn" 1329 717 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1348 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6B -Encoding: 7787 7787 290 -Width: 657 -VWidth: 0 -Flags: W -HStem: 0 43<188 444> 799 102<84 188 444 604> 1434 170<229 399> -VStem: 188 256<0 799 901 1198> 229 170<1434 1604> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 905 164 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ycircumflex -Encoding: 375 375 291 -Width: 923 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 860 41<88 324 729 907> 1073 299 -VStem: 229 551 -AnchorPoint: "top" 506 1372 basechar 0 -AnchorPoint: "ogonek" 614 0 basechar 0 -AnchorPoint: "bottom" 365 -315 basechar 0 -AnchorPoint: "cedilla" 242 -328 basechar 0 -AnchorPoint: "horn" 762 717 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1092 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Rcommaaccent -Encoding: 342 342 292 -Width: 1138 -VWidth: 0 -Flags: W -HStem: -401 49<434 577> -164 57<508 592> 0 43<174 440 829 1090> 655 102<440 543> 1331 102<440 665> -VStem: 174 266<0 655 758 1331> 625 158<-328 -184> 772 266<872 1217> 829 260<0 202> -AnchorPoint: "horn" 954 1085 basechar 0 -AnchorPoint: "ogonek" 975 0 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "cedilla" 590 0 basechar 0 -AnchorPoint: "top" 561 1436 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1180 0 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Itilde -Encoding: 296 296 293 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1516 141<310 509> 1581 141<126 325> -VStem: 35 84<1516 1568> 172 266<0 1434> 516 84<1670 1722> -AnchorPoint: "horn" 338 1085 basechar 0 -AnchorPoint: "cedilla" 317 0 basechar 0 -AnchorPoint: "bottom" 299 0 basechar 0 -AnchorPoint: "ogonek" 283 0 basechar 0 -AnchorPoint: "top" 309 1776 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 895 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Lcommaaccent -Encoding: 315 315 294 -Width: 1083 -VWidth: 0 -Flags: W -HStem: -401 49<440 583> -164 57<514 598> 0 102<440 1034> 1393 41<174 440> -VStem: 174 266<102 1434> 631 158<-328 -184> -AnchorPoint: "top" 485 1434 basechar 0 -AnchorPoint: "cedilla" 596 0 basechar 0 -AnchorPoint: "bottom" 604 0 basechar 0 -AnchorPoint: "ogonek" 745 0 basechar 0 -AnchorPoint: "horn" 328 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1186 0 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gcommaaccent -Encoding: 290 290 295 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -401 49<602 745> -164 57<676 760> -20 102<614 974> 717 102<821 993> 1331 102<564 915> -VStem: 102 266<441 1009> 793 158<-328 -184> 993 256<161 717> -AnchorPoint: "top" 717 1434 basechar 0 -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "ogonek" 741 0 basechar 0 -AnchorPoint: "horn" 1143 1282 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1348 0 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: rcommaaccent -Encoding: 343 343 296 -Width: 770 -VWidth: 0 -Flags: W -HStem: -401 49<121 264> -164 57<195 278> 0 43<147 403> 819 102<448 739> 860 41<147 403> -VStem: 147 256<0 774 874 901> 311 158<-328 -184> -AnchorPoint: "top" 397 1004 basechar 0 -AnchorPoint: "cedilla" 270 0 basechar 0 -AnchorPoint: "bottom" 285 0 basechar 0 -AnchorPoint: "ogonek" 291 0 basechar 0 -AnchorPoint: "horn" 647 856 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 866 0 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: itilde -Encoding: 297 297 297 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1085 141<257 456> 1151 141<73 271> -VStem: -18 84<1085 1138> 123 256<0 901> 463 84<1240 1292> -AnchorPoint: "ogonek" 326 0 basechar 0 -AnchorPoint: "bottom" 250 0 basechar 0 -AnchorPoint: "cedilla" 256 0 basechar 0 -AnchorPoint: "horn" 297 717 basechar 0 -AnchorPoint: "top" 252 1317 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 842 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: lcommaaccent -Encoding: 316 316 298 -Width: 548 -VWidth: 0 -Flags: W -HStem: -401 49<113 256> -164 57<186 270> 0 43<147 403> 1311 41<147 403> -VStem: 147 256<0 1352> 303 158<-328 -184> -AnchorPoint: "top" 274 1434 basechar 0 -AnchorPoint: "cedilla" 268 0 basechar 0 -AnchorPoint: "bottom" 272 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -AnchorPoint: "horn" 311 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 858 0 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ncommaaccent -Encoding: 325 325 299 -Width: 1406 -VWidth: 0 -Flags: W -HStem: -401 49<541 684> -164 57<614 698> 0 43<174 440 951 1237> 1393 41<174 463 971 1237> -VStem: 174 266<0 1075> 731 158<-328 -184> 971 266<367 1434> -AnchorPoint: "top" 717 1434 basechar 0 -AnchorPoint: "cedilla" 696 0 basechar 0 -AnchorPoint: "bottom" 694 0 basechar 0 -AnchorPoint: "ogonek" 1143 0 basechar 0 -AnchorPoint: "horn" 1188 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1286 0 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Kcommaaccent -Encoding: 310 310 300 -Width: 1243 -VWidth: 0 -Flags: W -HStem: -401 49<500 643> -164 57<573 657> 0 43<174 440 977 1233> 1393 41<174 440 936 1208> -VStem: 174 266<0 573 836 1434> 690 158<-328 -184> -AnchorPoint: "top" 483 1434 basechar 0 -AnchorPoint: "cedilla" 655 0 basechar 0 -AnchorPoint: "bottom" 635 0 basechar 0 -AnchorPoint: "ogonek" 1135 0 basechar 0 -AnchorPoint: "horn" 1032 1352 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1245 0 2 -Refer: 38 75 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Utilde -Encoding: 360 360 301 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1516 141<724 923> 1581 141<540 738> -VStem: 156 266<328 1434> 449 84<1516 1568> 930 84<1670 1722> 981 266<297 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1741 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ncommaaccent -Encoding: 326 326 302 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -401 49<385 528> -164 57<459 543> 0 43<147 403 692 948> 819 102<405 644> -VStem: 147 256<0 802> 575 158<-328 -184> 692 256<0 720> -AnchorPoint: "top" 549 1004 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "ogonek" 877 0 basechar 0 -AnchorPoint: "horn" 856 717 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1130 0 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: kcommaaccent -Encoding: 311 311 303 -Width: 980 -VWidth: 0 -Flags: W -HStem: -401 49<352 495> -164 57<426 510> 0 43<147 403 664 913> 860 41<611 877> 1311 41<147 403> -VStem: 147 256<0 371 627 1352> 543 158<-328 -184> -AnchorPoint: "top" 387 1434 basechar 0 -AnchorPoint: "cedilla" 508 0 basechar 0 -AnchorPoint: "bottom" 508 0 basechar 0 -AnchorPoint: "ogonek" 819 0 basechar 0 -AnchorPoint: "horn" 668 717 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1098 0 2 -Refer: 25 107 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: utilde -Encoding: 361 361 304 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1085 141<552 751> 1151 141<368 566> -VStem: 143 256<163 901> 276 84<1085 1138> 688 256<91 901> 758 84<1240 1292> -AnchorPoint: "top" 549 1315 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: kgreenlandic -Encoding: 312 312 305 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403 664 913> 860 41G<147 403 611 877> -VStem: 147 256<0 371 627 901> -AnchorPoint: "top" 504 1004 basechar 0 -AnchorPoint: "cedilla" 539 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "ogonek" 819 0 basechar 0 -AnchorPoint: "horn" 668 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -403 627 m 1,0,-1 - 647 901 l 1,1,-1 - 877 901 l 1,2,-1 - 520 502 l 1,3,-1 - 913 0 l 1,4,-1 - 696 0 l 1,5,-1 - 403 371 l 1,6,-1 - 403 0 l 1,7,-1 - 147 0 l 1,8,-1 - 147 901 l 1,9,-1 - 403 901 l 1,10,-1 - 403 627 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Tbar -Encoding: 358 358 306 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 43<508 774> 901 102<348 932> 1331 102<41 508 774 1239> -VStem: 508 266<0 1331> -AnchorPoint: "top" 643 1434 basechar 0 -AnchorPoint: "cedilla" 639 0 basechar 0 -AnchorPoint: "bottom" 643 0 basechar 0 -AnchorPoint: "ogonek" 659 0 basechar 0 -AnchorPoint: "horn" 1200 1389 basechar 0 -LayerCount: 2 -Fore -SplineSet -41 1434 m 1,0,-1 - 1243 1434 l 1,1,-1 - 1239 1331 l 1,2,-1 - 774 1331 l 1,3,-1 - 774 1004 l 1,4,-1 - 932 1004 l 1,5,-1 - 932 901 l 1,6,-1 - 774 901 l 1,7,-1 - 774 0 l 1,8,-1 - 508 0 l 1,9,-1 - 508 901 l 1,10,-1 - 348 901 l 1,11,-1 - 348 1004 l 1,12,-1 - 508 1004 l 1,13,-1 - 508 1331 l 1,14,-1 - 41 1331 l 1,15,-1 - 41 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tbar -Encoding: 359 359 307 -Width: 657 -VWidth: 0 -Flags: W -HStem: 0 43<188 444> 500 102<33 625> 799 102<84 188 444 604> -VStem: 33 592<500 602> 188 256<0 799 901 1198> -AnchorPoint: "top" 317 1352 basechar 0 -AnchorPoint: "cedilla" 309 0 basechar 0 -AnchorPoint: "bottom" 309 0 basechar 0 -AnchorPoint: "ogonek" 324 0 basechar 0 -AnchorPoint: "horn" 365 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -188 602 m 1,0,-1 - 188 799 l 1,1,-1 - 53 799 l 1,2,-1 - 84 901 l 1,3,-1 - 188 901 l 1,4,-1 - 188 1198 l 1,5,-1 - 444 1229 l 1,6,-1 - 444 901 l 1,7,-1 - 604 901 l 1,8,-1 - 604 799 l 1,9,-1 - 444 799 l 1,10,-1 - 444 602 l 1,11,-1 - 625 602 l 1,12,-1 - 625 500 l 1,13,-1 - 444 500 l 1,14,-1 - 444 0 l 1,15,-1 - 188 0 l 1,16,-1 - 188 500 l 1,17,-1 - 33 500 l 1,18,-1 - 33 602 l 1,19,-1 - 188 602 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Eng -Encoding: 330 330 308 -Width: 1394 -VWidth: 0 -Flags: W -HStem: -20 102<688 899> 0 43G<147 414> 1270 102<547 887> 1311 41G<147 414> -VStem: 147 266<0 1169 1282 1352> 997 266<267 1122> -AnchorPoint: "top" 717 1434 basechar 0 -AnchorPoint: "cedilla" 696 0 basechar 0 -AnchorPoint: "bottom" 694 0 basechar 0 -AnchorPoint: "ogonek" 774 0 basechar 0 -AnchorPoint: "horn" 1188 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -1264 590 m 2,0,1 - 1264 281 1264 281 1149.5 130.5 c 128,-1,2 - 1035 -20 1035 -20 797 -20 c 0,3,4 - 709 -20 709 -20 648.5 0 c 128,-1,5 - 588 20 588 20 528 72 c 1,6,-1 - 631 178 l 1,7,8 - 711 82 711 82 827 82 c 0,9,10 - 869 82 869 82 902 123.5 c 128,-1,11 - 935 165 935 165 955.5 237 c 128,-1,12 - 976 309 976 309 986.5 400 c 128,-1,13 - 997 491 997 491 997 594 c 2,14,-1 - 997 918 l 2,15,16 - 997 1002 997 1002 982.5 1065 c 128,-1,17 - 968 1128 968 1128 944.5 1166.5 c 128,-1,18 - 921 1205 921 1205 886 1228.5 c 128,-1,19 - 851 1252 851 1252 814 1261 c 128,-1,20 - 777 1270 777 1270 731 1270 c 0,21,22 - 633 1270 633 1270 557.5 1232 c 128,-1,23 - 482 1194 482 1194 414 1135 c 1,24,-1 - 414 0 l 1,25,-1 - 147 0 l 1,26,-1 - 147 1352 l 1,27,-1 - 414 1352 l 1,28,-1 - 414 1282 l 1,29,30 - 421 1286 421 1286 451.5 1303.5 c 128,-1,31 - 482 1321 482 1321 500 1329 c 128,-1,32 - 518 1337 518 1337 551 1349 c 128,-1,33 - 584 1361 584 1361 620.5 1366.5 c 128,-1,34 - 657 1372 657 1372 700 1372 c 0,35,36 - 810 1372 810 1372 909.5 1345 c 128,-1,37 - 1009 1318 1009 1318 1089 1266.5 c 128,-1,38 - 1169 1215 1169 1215 1216.5 1131 c 128,-1,39 - 1264 1047 1264 1047 1264 942 c 2,40,-1 - 1264 590 l 2,0,1 -EndSplineSet -Validated: 1 -Substitution2: "'locl' Localized Forms in Sami-1" Engsami -EndChar - -StartChar: eng -Encoding: 331 331 309 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -348 102<468 671> 0 43G<147 403> 819 102<405 644> -VStem: 147 256<0 802> 692 256<-204 720> -AnchorPoint: "top" 549 1004 basechar 0 -AnchorPoint: "cedilla" 541 -328 basechar 0 -AnchorPoint: "bottom" 541 -328 basechar 0 -AnchorPoint: "ogonek" 877 -180 basechar 0 -AnchorPoint: "horn" 856 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -948 -68 m 2,0,1 - 948 -140 948 -140 911.5 -196.5 c 128,-1,2 - 875 -253 875 -253 818 -284.5 c 128,-1,3 - 761 -316 761 -316 700.5 -332 c 128,-1,4 - 640 -348 640 -348 582 -348 c 0,5,6 - 452 -348 452 -348 375 -256 c 1,7,-1 - 504 -195 l 1,8,9 - 540 -246 540 -246 612 -246 c 0,10,11 - 639 -246 639 -246 655.5 -232.5 c 128,-1,12 - 672 -219 672 -219 680 -184.5 c 128,-1,13 - 688 -150 688 -150 690 -111 c 128,-1,14 - 692 -72 692 -72 692 0 c 2,15,-1 - 692 467 l 2,16,17 - 692 608 692 608 676 686 c 128,-1,18 - 660 764 660 764 631 791.5 c 128,-1,19 - 602 819 602 819 551 819 c 0,20,21 - 471 819 471 819 403 784 c 1,22,-1 - 403 0 l 1,23,-1 - 147 0 l 1,24,-1 - 147 901 l 1,25,-1 - 385 901 l 1,26,27 - 454 922 454 922 520 922 c 0,28,29 - 736 922 736 922 842 816 c 128,-1,30 - 948 710 948 710 948 492 c 2,31,-1 - 948 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: asciicircum -Encoding: 94 94 310 -Width: 917 -VWidth: 0 -Flags: W -LayerCount: 2 -Fore -SplineSet -459 819 m 1,0,-1 - 885 209 l 1,1,-1 - 770 131 l 1,2,-1 - 459 578 l 1,3,-1 - 147 131 l 1,4,-1 - 33 209 l 1,5,-1 - 459 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: asciitilde -Encoding: 126 126 311 -Width: 831 -VWidth: 0 -Flags: W -HStem: 399 158<432 648> 465 158<183 400> -VStem: 82 84<399 448> 666 84<574 623> -LayerCount: 2 -Fore -SplineSet -666 623 m 1,0,-1 - 750 623 l 1,1,2 - 740 540 740 540 676 469.5 c 128,-1,3 - 612 399 612 399 528 399 c 0,4,5 - 472 399 472 399 432.5 409.5 c 128,-1,6 - 393 420 393 420 376.5 432 c 128,-1,7 - 360 444 360 444 338.5 454.5 c 128,-1,8 - 317 465 317 465 293 465 c 0,9,10 - 244 465 244 465 207 448 c 128,-1,11 - 170 431 170 431 166 399 c 1,12,-1 - 82 399 l 1,13,14 - 92 482 92 482 155.5 552.5 c 128,-1,15 - 219 623 219 623 303 623 c 0,16,17 - 359 623 359 623 398.5 612.5 c 128,-1,18 - 438 602 438 602 455 590 c 128,-1,19 - 472 578 472 578 493.5 567.5 c 128,-1,20 - 515 557 515 557 539 557 c 0,21,22 - 588 557 588 557 625 574 c 128,-1,23 - 662 591 662 591 666 623 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: exclamdown -Encoding: 161 161 312 -Width: 448 -VWidth: 0 -Flags: W -HStem: 1032 164<113 328> -VStem: 92 256<-238 259> 113 215<614 827 1032 1196> -LayerCount: 2 -Fore -SplineSet -328 1032 m 1,0,-1 - 113 1032 l 1,1,-1 - 113 1196 l 1,2,-1 - 328 1196 l 1,3,-1 - 328 1032 l 1,0,-1 -92 -238 m 17,4,-1 - 123 827 l 1,5,-1 - 317 827 l 1,6,-1 - 348 -238 l 1,7,-1 - 92 -238 l 17,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: questiondown -Encoding: 191 191 313 -Width: 944 -VWidth: 0 -Flags: W -HStem: -176 102<401 645> 612 215<438 612> 1032 164<418 633> -VStem: 41 256<88 480> 418 215<1032 1196> 438 174<727 827> -LayerCount: 2 -Fore -SplineSet -633 1032 m 1,0,-1 - 418 1032 l 1,1,-1 - 418 1196 l 1,2,-1 - 633 1196 l 1,3,-1 - 633 1032 l 1,0,-1 -422 709 m 1,4,-1 - 438 827 l 1,5,-1 - 612 827 l 1,6,-1 - 643 612 l 1,7,-1 - 535 612 l 2,8,9 - 417 612 417 612 357 536 c 128,-1,10 - 297 460 297 460 297 295 c 0,11,12 - 297 113 297 113 352 19.5 c 128,-1,13 - 407 -74 407 -74 545 -74 c 0,14,15 - 575 -74 575 -74 594.5 -69 c 128,-1,16 - 614 -64 614 -64 627 -51.5 c 128,-1,17 - 640 -39 640 -39 647 -27.5 c 128,-1,18 - 654 -16 654 -16 665.5 8 c 128,-1,19 - 677 32 677 32 688 49 c 1,20,-1 - 883 2 l 1,21,22 - 743 -176 743 -176 514 -176 c 0,23,24 - 311 -176 311 -176 176 -46 c 128,-1,25 - 41 84 41 84 41 295 c 0,26,27 - 41 385 41 385 74 460 c 128,-1,28 - 107 535 107 535 162.5 584.5 c 128,-1,29 - 218 634 218 634 283.5 665.5 c 128,-1,30 - 349 697 349 697 422 709 c 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: cent -Encoding: 162 162 314 -Width: 944 -VWidth: 0 -Flags: W -HStem: 20 102<446 526 606 653> 778 102<444 526> -VStem: 51 256<248 650> 365 80<-102 25 195 715 879 1004> 526 80<-102 20 129 739 879 1004> -LayerCount: 2 -Fore -SplineSet -365 864 m 1,0,-1 - 365 1004 l 1,1,-1 - 444 1004 l 1,2,-1 - 444 879 l 1,3,4 - 456 881 456 881 483 881 c 0,5,6 - 512 881 512 881 526 879 c 1,7,-1 - 526 1004 l 1,8,-1 - 606 1004 l 1,9,-1 - 606 864 l 1,10,11 - 779 811 779 811 860 635 c 1,12,-1 - 666 567 l 1,13,14 - 662 581 662 581 655 608.5 c 128,-1,15 - 648 636 648 636 644 650 c 128,-1,16 - 640 664 640 664 634 683 c 128,-1,17 - 628 702 628 702 621 715 c 128,-1,18 - 614 728 614 728 606 739 c 1,19,-1 - 606 129 l 1,20,21 - 629 135 629 135 642 148.5 c 128,-1,22 - 655 162 655 162 671.5 196 c 128,-1,23 - 688 230 688 230 698 246 c 1,24,-1 - 862 199 l 1,25,26 - 804 126 804 126 745.5 83.5 c 128,-1,27 - 687 41 687 41 606 27 c 1,28,-1 - 606 -102 l 1,29,-1 - 526 -102 l 1,30,-1 - 526 20 l 1,31,-1 - 524 20 l 2,32,33 - 512 20 512 20 444 25 c 1,34,-1 - 444 -102 l 1,35,-1 - 365 -102 l 1,36,-1 - 365 39 l 1,37,38 - 221 77 221 77 136 182.5 c 128,-1,39 - 51 288 51 288 51 451 c 0,40,41 - 51 615 51 615 140.5 722 c 128,-1,42 - 230 829 230 829 365 864 c 1,0,-1 -365 195 m 1,43,-1 - 365 715 l 1,44,45 - 307 643 307 643 307 451 c 0,46,47 - 307 266 307 266 365 195 c 1,43,-1 -444 139 m 1,48,49 - 482 126 482 126 526 123 c 1,50,-1 - 526 778 l 1,51,-1 - 514 778 l 2,52,53 - 471 778 471 778 444 770 c 1,54,-1 - 444 139 l 1,48,49 -EndSplineSet -Validated: 1 -EndChar - -StartChar: brokenbar -Encoding: 166 166 315 -Width: 376 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276> 1393 41G<92 276> -VStem: 92 184<0 655 778 1434> -LayerCount: 2 -Fore -SplineSet -276 1434 m 25,0,-1 - 276 778 l 1,1,-1 - 92 778 l 1,2,-1 - 92 1434 l 1,3,-1 - 276 1434 l 25,0,-1 -276 655 m 25,4,-1 - 276 0 l 1,5,-1 - 92 0 l 1,6,-1 - 92 655 l 1,7,-1 - 276 655 l 25,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: OE -Encoding: 338 338 316 -Width: 1955 -VWidth: 0 -Flags: W -HStem: -20 102<587 864> 0 102<1278 1872> 799 102<1278 1655> 1331 102<1278 1839> 1352 102<565 860> -VStem: 102 266<424 1012> 1012 266<236 799 901 1195> -AnchorPoint: "top" 969 1442 basechar 0 -AnchorPoint: "ogonek" 1749 2 basechar 0 -AnchorPoint: "bottom" 958 0 basechar 0 -AnchorPoint: "horn" 1794 1380 basechar 0 -AnchorPoint: "cedilla" 1491 2 basechar 0 -LayerCount: 2 -Fore -SplineSet -1872 0 m 1,0,-1 - 1012 0 l 1,1,-1 - 1012 53 l 1,2,3 - 875 -20 875 -20 705 -20 c 0,4,5 - 621 -20 621 -20 537.5 7 c 128,-1,6 - 454 34 454 34 375 93 c 128,-1,7 - 296 152 296 152 235.5 236 c 128,-1,8 - 175 320 175 320 138.5 444.5 c 128,-1,9 - 102 569 102 569 102 717 c 128,-1,10 - 102 865 102 865 136.5 989.5 c 128,-1,11 - 171 1114 171 1114 228.5 1198.5 c 128,-1,12 - 286 1283 286 1283 362 1341.5 c 128,-1,13 - 438 1400 438 1400 520 1427 c 128,-1,14 - 602 1454 602 1454 686 1454 c 0,15,16 - 866 1454 866 1454 1012 1372 c 1,17,-1 - 1012 1434 l 1,18,-1 - 1839 1434 l 1,19,-1 - 1839 1331 l 1,20,-1 - 1278 1331 l 1,21,-1 - 1278 901 l 1,22,-1 - 1655 901 l 1,23,-1 - 1655 799 l 1,24,-1 - 1278 799 l 1,25,-1 - 1278 102 l 1,26,-1 - 1872 102 l 1,27,-1 - 1872 0 l 1,0,-1 -698 1352 m 0,28,29 - 553 1352 553 1352 461 1189.5 c 128,-1,30 - 369 1027 369 1027 369 717 c 0,31,32 - 369 586 369 586 389.5 478 c 128,-1,33 - 410 370 410 370 444 298 c 128,-1,34 - 478 226 478 226 523.5 176 c 128,-1,35 - 569 126 569 126 617.5 104 c 128,-1,36 - 666 82 666 82 717 82 c 0,37,38 - 813 82 813 82 889.5 143.5 c 128,-1,39 - 966 205 966 205 1012 326 c 1,40,-1 - 1012 1110 l 1,41,42 - 917 1352 917 1352 698 1352 c 0,28,29 -EndSplineSet -Validated: 1 -EndChar - -StartChar: oe -Encoding: 339 339 317 -Width: 1652 -VWidth: 0 -Flags: W -HStem: -20 102<425 646 1064 1330> 451 102<975 1309> 819 102<426 645 1050 1254> -VStem: 90 256<214 657> 715 256<188 451 553 725> -AnchorPoint: "top" 854 1004 basechar 0 -AnchorPoint: "ogonek" 1182 2 basechar 0 -AnchorPoint: "bottom" 862 0 basechar 0 -AnchorPoint: "cedilla" 1163 2 basechar 0 -AnchorPoint: "horn" 1413 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -975 553 m 1,0,-1 - 1309 553 l 1,1,2 - 1307 615 1307 615 1300 659.5 c 128,-1,3 - 1293 704 1293 704 1278 742 c 128,-1,4 - 1263 780 1263 780 1235 799.5 c 128,-1,5 - 1207 819 1207 819 1167 819 c 0,6,7 - 1074 819 1074 819 1029 751.5 c 128,-1,8 - 984 684 984 684 975 553 c 1,0,-1 -850 795 m 1,9,10 - 910 856 910 856 985 889 c 128,-1,11 - 1060 922 1060 922 1137 922 c 0,12,13 - 1240 922 1240 922 1324 880.5 c 128,-1,14 - 1408 839 1408 839 1459.5 770.5 c 128,-1,15 - 1511 702 1511 702 1539 619.5 c 128,-1,16 - 1567 537 1567 537 1567 451 c 1,17,-1 - 971 451 l 1,18,19 - 971 379 971 379 977 325.5 c 128,-1,20 - 983 272 983 272 998.5 224.5 c 128,-1,21 - 1014 177 1014 177 1040.5 147 c 128,-1,22 - 1067 117 1067 117 1109 99.5 c 128,-1,23 - 1151 82 1151 82 1208 82 c 0,24,25 - 1282 82 1282 82 1316.5 113 c 128,-1,26 - 1351 144 1351 144 1362 205 c 1,27,-1 - 1556 158 l 1,28,29 - 1491 76 1491 76 1395 28 c 128,-1,30 - 1299 -20 1299 -20 1178 -20 c 0,31,32 - 977 -20 977 -20 850 104 c 1,33,34 - 729 -20 729 -20 512 -20 c 0,35,36 - 314 -20 314 -20 202 107 c 128,-1,37 - 90 234 90 234 90 451 c 0,38,39 - 90 555 90 555 127 645 c 128,-1,40 - 164 735 164 735 224 794.5 c 128,-1,41 - 284 854 284 854 359.5 888 c 128,-1,42 - 435 922 435 922 512 922 c 0,43,44 - 729 922 729 922 850 795 c 1,9,10 -715 451 m 0,45,46 - 715 537 715 537 707 600.5 c 128,-1,47 - 699 664 699 664 680.5 715.5 c 128,-1,48 - 662 767 662 767 627.5 793 c 128,-1,49 - 593 819 593 819 543 819 c 0,50,51 - 435 819 435 819 390.5 725.5 c 128,-1,52 - 346 632 346 632 346 451 c 0,53,54 - 346 380 346 380 351 326 c 128,-1,55 - 356 272 356 272 369.5 224.5 c 128,-1,56 - 383 177 383 177 404.5 146.5 c 128,-1,57 - 426 116 426 116 461 99 c 128,-1,58 - 496 82 496 82 543 82 c 0,59,60 - 595 82 595 82 630 108 c 128,-1,61 - 665 134 665 134 683 186 c 128,-1,62 - 701 238 701 238 708 300.5 c 128,-1,63 - 715 363 715 363 715 451 c 0,45,46 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Euro -Encoding: 8364 8364 318 -Width: 1204 -VWidth: 0 -Flags: W -HStem: -20 102<610 855> 512 102<102 176 440 729> 819 102<102 176 436 729> 1331 102<569 847> -VStem: 172 256<614 819> -LayerCount: 2 -Fore -SplineSet -1122 209 m 1,0,1 - 1058 107 1058 107 948 43.5 c 128,-1,2 - 838 -20 838 -20 709 -20 c 0,3,4 - 653 -20 653 -20 592.5 -0.5 c 128,-1,5 - 532 19 532 19 469 61.5 c 128,-1,6 - 406 104 406 104 352 165 c 128,-1,7 - 298 226 298 226 254.5 315.5 c 128,-1,8 - 211 405 211 405 190 512 c 1,9,-1 - 72 512 l 1,10,-1 - 102 614 l 1,11,-1 - 176 614 l 1,12,13 - 172 680 172 680 172 717 c 0,14,15 - 172 753 172 753 176 819 c 1,16,-1 - 72 819 l 1,17,-1 - 102 922 l 1,18,-1 - 190 922 l 1,19,20 - 209 1027 209 1027 248.5 1114 c 128,-1,21 - 288 1201 288 1201 337.5 1259 c 128,-1,22 - 387 1317 387 1317 445.5 1357.5 c 128,-1,23 - 504 1398 504 1398 562 1416 c 128,-1,24 - 620 1434 620 1434 676 1434 c 0,25,26 - 995 1434 995 1434 1118 1245 c 1,27,-1 - 926 1178 l 1,28,29 - 905 1215 905 1215 894.5 1231.5 c 128,-1,30 - 884 1248 884 1248 863.5 1272 c 128,-1,31 - 843 1296 843 1296 823 1306 c 128,-1,32 - 803 1316 803 1316 772 1323.5 c 128,-1,33 - 741 1331 741 1331 700 1331 c 0,34,35 - 582 1331 582 1331 518.5 1233 c 128,-1,36 - 455 1135 455 1135 436 922 c 1,37,-1 - 729 922 l 1,38,-1 - 729 819 l 1,39,-1 - 430 819 l 1,40,41 - 428 786 428 786 428 717 c 0,42,43 - 428 647 428 647 430 614 c 1,44,-1 - 729 614 l 1,45,-1 - 729 512 l 1,46,-1 - 440 512 l 1,47,48 - 468 297 468 297 548.5 189.5 c 128,-1,49 - 629 82 629 82 733 82 c 0,50,51 - 752 82 752 82 768 84.5 c 128,-1,52 - 784 87 784 87 796.5 89.5 c 128,-1,53 - 809 92 809 92 821.5 99.5 c 128,-1,54 - 834 107 834 107 842 112 c 128,-1,55 - 850 117 850 117 860.5 130 c 128,-1,56 - 871 143 871 143 876.5 149 c 128,-1,57 - 882 155 882 155 892 173.5 c 128,-1,58 - 902 192 902 192 906.5 200 c 128,-1,59 - 911 208 911 208 923 231 c 128,-1,60 - 935 254 935 254 940 264 c 1,61,-1 - 1122 209 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: yen -Encoding: 165 165 319 -Width: 989 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 43<383 649> 258 102<240 782> 479 102<240 782> 1393 41<23 301 768 973> -VStem: 383 266<0 727> -LayerCount: 2 -Fore -SplineSet -240 360 m 1,0,-1 - 782 360 l 1,1,-1 - 782 258 l 1,2,-1 - 240 258 l 1,3,-1 - 240 360 l 1,0,-1 -240 582 m 1,4,-1 - 782 582 l 1,5,-1 - 782 479 l 1,6,-1 - 240 479 l 1,7,-1 - 240 582 l 1,4,-1 -EndSplineSet -Refer: 51 89 N 1 0 0 1 0 0 2 -EndChar - -StartChar: sterling -Encoding: 163 163 320 -Width: 903 -VWidth: 0 -Flags: W -HStem: 0 102<51 100 250 821> 696 102<147 199 444 659> 1169 102<465 663> -VStem: 199 246<278 696 799 1140> -LayerCount: 2 -Fore -SplineSet -199 991 m 2,0,1 - 199 1064 199 1064 229 1120 c 128,-1,2 - 259 1176 259 1176 309.5 1208 c 128,-1,3 - 360 1240 360 1240 420 1256 c 128,-1,4 - 480 1272 480 1272 547 1272 c 0,5,6 - 619 1272 619 1272 667 1250 c 128,-1,7 - 715 1228 715 1228 756 1180 c 1,8,-1 - 625 1118 l 1,9,10 - 589 1169 589 1169 518 1169 c 0,11,12 - 500 1169 500 1169 489 1162.5 c 128,-1,13 - 478 1156 478 1156 466.5 1133 c 128,-1,14 - 455 1110 455 1110 449.5 1058.5 c 128,-1,15 - 444 1007 444 1007 444 924 c 2,16,-1 - 444 799 l 1,17,-1 - 659 799 l 1,18,-1 - 659 696 l 1,19,-1 - 444 696 l 1,20,-1 - 444 446 l 2,21,22 - 444 388 444 388 425 332.5 c 128,-1,23 - 406 277 406 277 381.5 240 c 128,-1,24 - 357 203 357 203 325.5 169.5 c 128,-1,25 - 294 136 294 136 277.5 122.5 c 128,-1,26 - 261 109 261 109 250 102 c 1,27,-1 - 821 102 l 1,28,-1 - 821 0 l 1,29,-1 - 51 0 l 1,30,-1 - 51 102 l 1,31,32 - 71 102 71 102 106 154 c 128,-1,33 - 141 206 141 206 170 290 c 128,-1,34 - 199 374 199 374 199 446 c 2,35,-1 - 199 696 l 1,36,-1 - 117 696 l 1,37,-1 - 147 799 l 1,38,-1 - 199 799 l 1,39,-1 - 199 991 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: section -Encoding: 167 167 321 -Width: 808 -VWidth: 0 -Flags: W -HStem: -18 102<274 453> 1268 102<356 535> -VStem: 100 223<986 1226> 127 223<568 809> 459 223<542 784> 485 223<126 366> -LayerCount: 2 -Fore -SplineSet -379 84 m 128,-1,1 - 416 84 416 84 441.5 113.5 c 128,-1,2 - 467 143 467 143 476 181 c 128,-1,3 - 485 219 485 219 485 262 c 0,4,5 - 485 307 485 307 465.5 337.5 c 128,-1,6 - 446 368 446 368 414 385.5 c 128,-1,7 - 382 403 382 403 344 417.5 c 128,-1,8 - 306 432 306 432 268 450.5 c 128,-1,9 - 230 469 230 469 198 495.5 c 128,-1,10 - 166 522 166 522 146.5 570.5 c 128,-1,11 - 127 619 127 619 127 686 c 0,12,13 - 127 813 127 813 213 893 c 1,14,15 - 159 925 159 925 129.5 971.5 c 128,-1,16 - 100 1018 100 1018 100 1098 c 0,17,18 - 100 1140 100 1140 122 1186.5 c 128,-1,19 - 144 1233 144 1233 183.5 1274.5 c 128,-1,20 - 223 1316 223 1316 289 1343 c 128,-1,21 - 355 1370 355 1370 434 1370 c 0,22,23 - 654 1370 654 1370 739 1135 c 1,24,-1 - 596 1114 l 1,25,26 - 584 1146 584 1146 573.5 1167.5 c 128,-1,27 - 563 1189 563 1189 543.5 1215 c 128,-1,28 - 524 1241 524 1241 495.5 1254.5 c 128,-1,29 - 467 1268 467 1268 430 1268 c 128,-1,30 - 393 1268 393 1268 367.5 1238.5 c 128,-1,31 - 342 1209 342 1209 333 1171 c 128,-1,32 - 324 1133 324 1133 324 1090 c 0,33,34 - 324 1045 324 1045 343.5 1014.5 c 128,-1,35 - 363 984 363 984 395 966.5 c 128,-1,36 - 427 949 427 949 465 934.5 c 128,-1,37 - 503 920 503 920 541 901.5 c 128,-1,38 - 579 883 579 883 611 856.5 c 128,-1,39 - 643 830 643 830 662.5 781.5 c 128,-1,40 - 682 733 682 733 682 666 c 0,41,42 - 682 539 682 539 596 459 c 1,43,44 - 650 427 650 427 679.5 380.5 c 128,-1,45 - 709 334 709 334 709 254 c 0,46,47 - 709 212 709 212 687 165.5 c 128,-1,48 - 665 119 665 119 625.5 77.5 c 128,-1,49 - 586 36 586 36 520 9 c 128,-1,50 - 454 -18 454 -18 375 -18 c 0,51,52 - 155 -18 155 -18 70 217 c 1,53,-1 - 213 238 l 1,54,55 - 225 206 225 206 235.5 184.5 c 128,-1,56 - 246 163 246 163 265.5 137 c 128,-1,57 - 285 111 285 111 313.5 97.5 c 128,-1,0 - 342 84 342 84 379 84 c 128,-1,1 -385 811 m 1,58,59 - 350 766 350 766 350 678 c 0,60,61 - 350 587 350 587 424 541 c 1,62,63 - 459 586 459 586 459 674 c 0,64,65 - 459 765 459 765 385 811 c 1,58,59 -EndSplineSet -Validated: 1 -EndChar - -StartChar: copyright -Encoding: 169 169 322 -Width: 1101 -VWidth: 0 -Flags: W -HStem: -20 82<425 665> 193 61<501 628> 733 61<492 615> 946 82<425 665> -VStem: 27 207<283 725> 285 182<326 673> 856 207<283 725> -LayerCount: 2 -Fore -SplineSet -233 504 m 128,-1,1 - 233 318 233 318 328.5 189.5 c 128,-1,2 - 424 61 424 61 545 61 c 128,-1,3 - 666 61 666 61 761 189.5 c 128,-1,4 - 856 318 856 318 856 504 c 128,-1,5 - 856 690 856 690 761 818 c 128,-1,6 - 666 946 666 946 545 946 c 128,-1,7 - 424 946 424 946 328.5 818 c 128,-1,0 - 233 690 233 690 233 504 c 128,-1,1 -27 504 m 128,-1,9 - 27 623 27 623 63 717 c 128,-1,10 - 99 811 99 811 153.5 868 c 128,-1,11 - 208 925 208 925 279.5 962.5 c 128,-1,12 - 351 1000 351 1000 416.5 1014 c 128,-1,13 - 482 1028 482 1028 545 1028 c 128,-1,14 - 608 1028 608 1028 673.5 1014 c 128,-1,15 - 739 1000 739 1000 810.5 962.5 c 128,-1,16 - 882 925 882 925 936.5 868 c 128,-1,17 - 991 811 991 811 1027 717 c 128,-1,18 - 1063 623 1063 623 1063 504 c 128,-1,19 - 1063 385 1063 385 1027 291 c 128,-1,20 - 991 197 991 197 936.5 140 c 128,-1,21 - 882 83 882 83 810.5 45.5 c 128,-1,22 - 739 8 739 8 673.5 -6 c 128,-1,23 - 608 -20 608 -20 545 -20 c 128,-1,24 - 482 -20 482 -20 416.5 -6 c 128,-1,25 - 351 8 351 8 279.5 45.5 c 128,-1,26 - 208 83 208 83 153.5 140 c 128,-1,27 - 99 197 99 197 63 291 c 128,-1,8 - 27 385 27 385 27 504 c 128,-1,9 -770 299 m 1,28,29 - 690 193 690 193 551 193 c 0,30,31 - 507 193 507 193 461.5 211.5 c 128,-1,32 - 416 230 416 230 376 265.5 c 128,-1,33 - 336 301 336 301 310.5 362 c 128,-1,34 - 285 423 285 423 285 498 c 0,35,36 - 285 574 285 574 308 633 c 128,-1,37 - 331 692 331 692 368 726 c 128,-1,38 - 405 760 405 760 448 777.5 c 128,-1,39 - 491 795 491 795 535 795 c 0,40,41 - 627 795 627 795 679.5 773 c 128,-1,42 - 732 751 732 751 768 705 c 1,43,-1 - 635 670 l 1,44,45 - 631 676 631 676 621.5 692.5 c 128,-1,46 - 612 709 612 709 606.5 715 c 128,-1,47 - 601 721 601 721 585.5 727 c 128,-1,48 - 570 733 570 733 547 733 c 0,49,50 - 497 733 497 733 482 682 c 128,-1,51 - 467 631 467 631 467 498 c 128,-1,52 - 467 365 467 365 488.5 309.5 c 128,-1,53 - 510 254 510 254 563 254 c 0,54,55 - 588 254 588 254 604.5 262.5 c 128,-1,56 - 621 271 621 271 627 281 c 128,-1,57 - 633 291 633 291 640 307.5 c 128,-1,58 - 647 324 647 324 651 330 c 1,59,-1 - 770 299 l 1,28,29 -EndSplineSet -Validated: 1 -EndChar - -StartChar: registered -Encoding: 174 174 323 -Width: 1101 -VWidth: 0 -Flags: W -HStem: -20 82<425 665> 739 61<506 568> 946 82<425 665> -VStem: 27 207<283 725> 365 141<207 446 530 739> 592 139<542 727> 610 133<207 365> 856 207<283 725> -LayerCount: 2 -Fore -SplineSet -233 504 m 128,-1,1 - 233 318 233 318 328.5 189.5 c 128,-1,2 - 424 61 424 61 545 61 c 128,-1,3 - 666 61 666 61 761 189.5 c 128,-1,4 - 856 318 856 318 856 504 c 128,-1,5 - 856 690 856 690 761 818 c 128,-1,6 - 666 946 666 946 545 946 c 128,-1,7 - 424 946 424 946 328.5 818 c 128,-1,0 - 233 690 233 690 233 504 c 128,-1,1 -27 504 m 128,-1,9 - 27 623 27 623 63 717 c 128,-1,10 - 99 811 99 811 153.5 868 c 128,-1,11 - 208 925 208 925 279.5 962.5 c 128,-1,12 - 351 1000 351 1000 416.5 1014 c 128,-1,13 - 482 1028 482 1028 545 1028 c 128,-1,14 - 608 1028 608 1028 673.5 1014 c 128,-1,15 - 739 1000 739 1000 810.5 962.5 c 128,-1,16 - 882 925 882 925 936.5 868 c 128,-1,17 - 991 811 991 811 1027 717 c 128,-1,18 - 1063 623 1063 623 1063 504 c 128,-1,19 - 1063 385 1063 385 1027 291 c 128,-1,20 - 991 197 991 197 936.5 140 c 128,-1,21 - 882 83 882 83 810.5 45.5 c 128,-1,22 - 739 8 739 8 673.5 -6 c 128,-1,23 - 608 -20 608 -20 545 -20 c 128,-1,24 - 482 -20 482 -20 416.5 -6 c 128,-1,25 - 351 8 351 8 279.5 45.5 c 128,-1,26 - 208 83 208 83 153.5 140 c 128,-1,27 - 99 197 99 197 63 291 c 128,-1,8 - 27 385 27 385 27 504 c 128,-1,9 -506 207 m 1,28,-1 - 365 207 l 1,29,-1 - 365 801 l 1,30,-1 - 543 801 l 2,31,32 - 638 801 638 801 684.5 748.5 c 128,-1,33 - 731 696 731 696 731 635 c 0,34,35 - 731 591 731 591 705 548 c 128,-1,36 - 679 505 679 505 629 485 c 1,37,38 - 662 447 662 447 702.5 363.5 c 128,-1,39 - 743 280 743 280 743 207 c 1,40,-1 - 610 207 l 1,41,42 - 610 278 610 278 576 347.5 c 128,-1,43 - 542 417 542 417 506 446 c 1,44,-1 - 506 207 l 1,28,-1 -506 739 m 1,45,-1 - 506 530 l 1,46,47 - 548 530 548 530 570 562 c 128,-1,48 - 592 594 592 594 592 635 c 0,49,50 - 592 675 592 675 570 707 c 128,-1,51 - 548 739 548 739 506 739 c 1,45,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ordfeminine -Encoding: 170 170 324 -Width: 620 -VWidth: 0 -Flags: W -HStem: 348 61<72 549> 516 61<272 354> 786 61<266 352> 938 61<215 340> -VStem: 106 143<584 782> 354 143<578 786> -LayerCount: 2 -Fore -SplineSet -72 410 m 1,0,-1 - 549 410 l 1,1,-1 - 549 348 l 1,2,-1 - 72 348 l 1,3,-1 - 72 410 l 1,0,-1 -354 582 m 1,4,-1 - 354 766 l 1,5,6 - 354 784 l 1,7,8 - 340 786 340 786 315 786 c 0,9,10 - 288 786 288 786 269 761 c 128,-1,11 - 250 736 250 736 250 688 c 0,12,13 - 250 638 250 638 269 608 c 128,-1,14 - 288 578 288 578 315 578 c 0,15,16 - 330 578 330 578 354 582 c 1,4,-1 -387 528 m 1,17,18 - 343 516 343 516 299 516 c 0,19,20 - 210 516 210 516 158 557.5 c 128,-1,21 - 106 599 106 599 106 688 c 0,22,23 - 106 733 106 733 124 766 c 128,-1,24 - 142 799 142 799 171.5 816 c 128,-1,25 - 201 833 201 833 232.5 840.5 c 128,-1,26 - 264 848 264 848 299 848 c 0,27,28 - 336 848 336 848 352 846 c 1,29,30 - 349 894 349 894 337 916 c 128,-1,31 - 325 938 325 938 299 938 c 128,-1,32 - 273 938 273 938 241 923 c 128,-1,33 - 209 908 209 908 184 883 c 1,34,-1 - 113 948 l 1,35,36 - 206 999 206 999 283 999 c 0,37,38 - 355 999 355 999 395.5 988.5 c 128,-1,39 - 436 978 436 978 460 946 c 128,-1,40 - 484 914 484 914 491 868 c 128,-1,41 - 498 822 498 822 498 739 c 2,42,-1 - 498 528 l 1,43,-1 - 387 528 l 1,17,18 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ordmasculine -Encoding: 186 186 325 -Width: 620 -VWidth: 0 -Flags: W -HStem: 348 61<72 549> 516 61<263 363> 938 61<261 362> -VStem: 84 145<599 903> 393 141<602 914> -LayerCount: 2 -Fore -SplineSet -72 410 m 1,0,-1 - 549 410 l 1,1,-1 - 549 348 l 1,2,-1 - 72 348 l 1,3,-1 - 72 410 l 1,0,-1 -393 758 m 0,4,5 - 393 838 393 838 372 888 c 128,-1,6 - 351 938 351 938 317 938 c 0,7,8 - 229 938 229 938 229 758 c 0,9,10 - 229 673 229 673 251.5 625.5 c 128,-1,11 - 274 578 274 578 317 578 c 0,12,13 - 354 578 354 578 373.5 627 c 128,-1,14 - 393 676 393 676 393 758 c 0,4,5 -301 516 m 0,15,16 - 200 516 200 516 142 581.5 c 128,-1,17 - 84 647 84 647 84 758 c 0,18,19 - 84 862 84 862 151 930.5 c 128,-1,20 - 218 999 218 999 301 999 c 0,21,22 - 407 999 407 999 471 937 c 128,-1,23 - 535 875 535 875 535 758 c 128,-1,24 - 535 641 535 641 471 578.5 c 128,-1,25 - 407 516 407 516 301 516 c 0,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: guilsinglright -Encoding: 8250 8250 326 -Width: 630 -VWidth: 0 -Flags: W -VStem: 102 426 -LayerCount: 2 -Fore -SplineSet -377 451 m 1,0,-1 - 102 778 l 1,1,-1 - 180 864 l 1,2,-1 - 528 451 l 1,3,-1 - 180 39 l 1,4,-1 - 102 125 l 1,5,-1 - 377 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: guilsinglleft -Encoding: 8249 8249 327 -Width: 630 -VWidth: 0 -Flags: W -VStem: 102 426 -LayerCount: 2 -Fore -SplineSet -254 453 m 1,0,-1 - 528 125 l 1,1,-1 - 451 39 l 1,2,-1 - 102 453 l 1,3,-1 - 451 864 l 1,4,-1 - 528 778 l 1,5,-1 - 254 453 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: guillemotleft -Encoding: 171 171 328 -Width: 856 -VWidth: 0 -Flags: W -VStem: 102 426 369 426 -LayerCount: 2 -Fore -Refer: 327 8249 N 1 0 0 1 266 0 2 -Refer: 327 8249 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: guillemotright -Encoding: 187 187 329 -Width: 856 -VWidth: 0 -Flags: W -VStem: 102 426 369 426 -LayerCount: 2 -Fore -Refer: 326 8250 N 1 0 0 1 266 0 2 -Refer: 326 8250 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: quoteleft -Encoding: 8216 8216 330 -Width: 397 -VWidth: 0 -Flags: W -HStem: 985 367<163 238> -VStem: 92 188<985 1197> -LayerCount: 2 -Fore -SplineSet -281 985 m 1,0,-1 - 92 985 l 1,1,2 - 92 1040 92 1040 94.5 1085.5 c 128,-1,3 - 97 1131 97 1131 102.5 1165.5 c 128,-1,4 - 108 1200 108 1200 112.5 1223 c 128,-1,5 - 117 1246 117 1246 126.5 1269 c 128,-1,6 - 136 1292 136 1292 140.5 1301 c 128,-1,7 - 145 1310 145 1310 156.5 1329 c 128,-1,8 - 168 1348 168 1348 170 1352 c 1,9,-1 - 287 1352 l 1,10,11 - 238 1283 238 1283 238 1200 c 0,12,13 - 238 1175 238 1175 259.5 1105 c 128,-1,14 - 281 1035 281 1035 281 985 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quoteright -Encoding: 8217 8217 331 -Width: 397 -VWidth: 0 -Flags: W -HStem: 985 367<-47 28> -VStem: 98 188<1139 1352> -LayerCount: 2 -Fore -SplineSet -98 1352 m 1,0,-1 - 287 1352 l 1,1,2 - 287 1297 287 1297 284.5 1251.5 c 128,-1,3 - 282 1206 282 1206 276.5 1171.5 c 128,-1,4 - 271 1137 271 1137 266.5 1114 c 128,-1,5 - 262 1091 262 1091 252.5 1068 c 128,-1,6 - 243 1045 243 1045 238.5 1036 c 128,-1,7 - 234 1027 234 1027 222.5 1008 c 128,-1,8 - 211 989 211 989 209 985 c 1,9,-1 - 92 985 l 1,10,11 - 141 1054 141 1054 141 1137 c 0,12,13 - 141 1162 141 1162 119.5 1232 c 128,-1,14 - 98 1302 98 1302 98 1352 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quotedblleft -Encoding: 8220 8220 332 -Width: 663 -VWidth: 0 -Flags: W -HStem: 985 367<163 238 429 504> -VStem: 92 188<985 1197> 358 188<985 1197> -LayerCount: 2 -Fore -Refer: 330 8216 S 1 0 0 1 266 0 2 -Refer: 330 8216 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: quotedblright -Encoding: 8221 8221 333 -Width: 663 -VWidth: 0 -Flags: W -HStem: 985 367<-47 28 219 294> -VStem: 98 188<1139 1352> 365 188<1139 1352> -LayerCount: 2 -Fore -Refer: 331 8217 N 1 0 0 1 266 0 2 -Refer: 331 8217 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: quotesinglbase -Encoding: 8218 8218 334 -Width: 397 -VWidth: 0 -Flags: W -HStem: -203 367<-47 28> -VStem: 98 188<-48 164> -LayerCount: 2 -Fore -Refer: 331 8217 N 1 0 0 1 0 -1188 2 -Validated: 1 -EndChar - -StartChar: quotedblbase -Encoding: 8222 8222 335 -Width: 663 -VWidth: 0 -Flags: W -HStem: -203 367<-47 28 219 294> -VStem: 98 188<-48 164> 365 188<-48 164> -LayerCount: 2 -Fore -Refer: 333 8221 N 1 0 0 1 0 -1188 2 -Validated: 1 -EndChar - -StartChar: ellipsis -Encoding: 8230 8230 336 -Width: 1114 -VWidth: 0 -Flags: W -HStem: 0 164<92 307 440 655 788 1004> -VStem: 92 215<0 164> 440 215<0 164> 788 215<0 164> -CounterMasks: 1 70 -LayerCount: 2 -Fore -Refer: 54 46 N 1 0 0 1 696 0 2 -Refer: 54 46 N 1 0 0 1 348 0 2 -Refer: 54 46 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: bullet -Encoding: 8226 8226 337 -Width: 718 -VWidth: 0 -Flags: W -HStem: 287 483<209 511> -VStem: 84 541<392 654> -LayerCount: 2 -Fore -SplineSet -346 287 m 0,0,1 - 240 287 240 287 162 354.5 c 128,-1,2 - 84 422 84 422 84 528 c 0,3,4 - 84 596 84 596 128.5 654 c 128,-1,5 - 173 712 173 712 232.5 741 c 128,-1,6 - 292 770 292 770 346 770 c 0,7,8 - 458 770 458 770 541.5 705.5 c 128,-1,9 - 625 641 625 641 625 528 c 128,-1,10 - 625 415 625 415 541.5 351 c 128,-1,11 - 458 287 458 287 346 287 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: endash -Encoding: 8211 8211 338 -Width: 802 -VWidth: 0 -Flags: W -HStem: 348 102<82 721> -VStem: 82 639<348 451> -LayerCount: 2 -Fore -SplineSet -82 451 m 1,0,-1 - 721 451 l 1,1,-1 - 721 348 l 1,2,-1 - 82 348 l 1,3,-1 - 82 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: emdash -Encoding: 8212 8212 339 -Width: 1110 -VWidth: 0 -Flags: W -HStem: 348 102<82 1028> -LayerCount: 2 -Fore -SplineSet -82 451 m 1,0,-1 - 1028 451 l 1,1,-1 - 1028 348 l 1,2,-1 - 82 348 l 1,3,-1 - 82 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00AD -Encoding: 173 173 340 -Width: 649 -VWidth: 0 -Flags: W -HStem: 348 102<82 567> -VStem: 82 485<348 451> -LayerCount: 2 -Fore -Refer: 82 45 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: currency -Encoding: 164 164 341 -Width: 724 -VWidth: 0 -Flags: W -HStem: 248 96<302 423> 561 96<302 423> -VStem: 117 178<348 558> 430 178<348 558> -LayerCount: 2 -Fore -SplineSet -295 453 m 0,0,1 - 295 400 295 400 308.5 372 c 128,-1,2 - 322 344 322 344 362 344 c 128,-1,3 - 402 344 402 344 416 372.5 c 128,-1,4 - 430 401 430 401 430 453 c 128,-1,5 - 430 505 430 505 416 533 c 128,-1,6 - 402 561 402 561 362 561 c 128,-1,7 - 322 561 322 561 308.5 533 c 128,-1,8 - 295 505 295 505 295 453 c 0,0,1 -164 326 m 1,9,10 - 117 376 117 376 117 453 c 128,-1,11 - 117 530 117 530 164 580 c 1,12,-1 - 82 662 l 1,13,-1 - 154 733 l 1,14,-1 - 250 637 l 1,15,16 - 300 657 300 657 362 657 c 0,17,18 - 425 657 425 657 475 637 c 1,19,-1 - 571 733 l 1,20,-1 - 643 662 l 1,21,-1 - 561 580 l 1,22,23 - 608 530 608 530 608 453 c 128,-1,24 - 608 376 608 376 561 326 c 1,25,-1 - 643 244 l 1,26,-1 - 571 172 l 1,27,-1 - 475 268 l 1,28,29 - 425 248 425 248 362 248 c 0,30,31 - 300 248 300 248 250 268 c 1,32,-1 - 154 172 l 1,33,-1 - 82 244 l 1,34,-1 - 164 326 l 1,9,10 -EndSplineSet -Validated: 1 -EndChar - -StartChar: macron -Encoding: 175 175 342 -Width: 593 -VWidth: 0 -Flags: W -HStem: 1270 115<61 532> -VStem: 61 471<1270 1384> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 895 0 2 -Validated: 1 -EndChar - -StartChar: periodcentered -Encoding: 183 183 343 -Width: 272 -VWidth: 0 -Flags: W -HStem: 414 170<51 221> -VStem: 51 170<414 584> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 727 -856 2 -Validated: 1 -EndChar - -StartChar: logicalnot -Encoding: 172 172 344 -Width: 696 -VWidth: 0 -Flags: W -HStem: 195 256<440 614> 348 102<82 440> -VStem: 440 174<195 348> -LayerCount: 2 -Fore -SplineSet -82 451 m 1,0,-1 - 614 451 l 1,1,-1 - 614 195 l 1,2,-1 - 440 195 l 1,3,-1 - 440 348 l 1,4,-1 - 82 348 l 1,5,-1 - 82 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: plusminus -Encoding: 177 177 345 -Width: 856 -VWidth: 0 -Flags: W -HStem: 53 102<82 774> 453 102<82 332 524 774> -VStem: 332 193<260 453 555 748> -LayerCount: 2 -Fore -SplineSet -82 156 m 1,0,-1 - 774 156 l 1,1,-1 - 774 53 l 1,2,-1 - 82 53 l 1,3,-1 - 82 156 l 1,0,-1 -524 453 m 1,4,-1 - 524 260 l 1,5,-1 - 332 260 l 1,6,-1 - 332 453 l 1,7,-1 - 82 453 l 1,8,-1 - 82 555 l 1,9,-1 - 332 555 l 1,10,-1 - 332 748 l 1,11,-1 - 524 748 l 1,12,-1 - 524 555 l 1,13,-1 - 774 555 l 1,14,-1 - 774 453 l 1,15,-1 - 524 453 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B5 -Encoding: 181 181 346 -Width: 972 -VWidth: 0 -Flags: W -HStem: -20 102<396 625> 0 43G<627 883> 860 41G<82 338 627 883> -VStem: 82 256<-293 -4 146 901> 627 256<0 14 94 901> -LayerCount: 2 -Fore -SplineSet -627 119 m 1,0,-1 - 627 901 l 1,1,-1 - 883 901 l 1,2,-1 - 883 0 l 1,3,-1 - 627 0 l 1,4,-1 - 627 14 l 1,5,6 - 560 -20 560 -20 479 -20 c 0,7,8 - 404 -20 404 -20 338 -4 c 1,9,-1 - 338 -293 l 1,10,-1 - 82 -293 l 1,11,-1 - 82 901 l 1,12,-1 - 338 901 l 1,13,-1 - 338 467 l 2,14,15 - 338 245 338 245 372 163.5 c 128,-1,16 - 406 82 406 82 510 82 c 0,17,18 - 577 82 577 82 627 119 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: divide -Encoding: 247 247 347 -Width: 710 -VWidth: 0 -Flags: W -HStem: 96 170<254 444> 348 102<82 629> 532 170<254 444> -VStem: 254 190<96 266 532 702> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -SplineSet -254 266 m 1,0,-1 - 444 266 l 1,1,-1 - 444 96 l 1,2,-1 - 254 96 l 1,3,-1 - 254 266 l 1,0,-1 -254 702 m 1,4,-1 - 444 702 l 1,5,-1 - 444 532 l 1,6,-1 - 254 532 l 1,7,-1 - 254 702 l 1,4,-1 -82 451 m 1,8,-1 - 629 451 l 1,9,-1 - 629 348 l 1,10,-1 - 82 348 l 1,11,-1 - 82 451 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: paragraph -Encoding: 182 182 348 -Width: 995 -VWidth: 0 -Flags: W -HStem: 0 43G<457 641 711 895> 1331 102<641 711> -VStem: 82 266<871 1217> 457 184<0 665 799 1290> 711 184<0 1331> -LayerCount: 2 -Fore -SplineSet -711 1331 m 1,0,-1 - 641 1331 l 1,1,-1 - 641 0 l 1,2,-1 - 457 0 l 1,3,-1 - 457 659 l 1,4,5 - 379 667 379 667 314 695.5 c 128,-1,6 - 249 724 249 724 207 763 c 128,-1,7 - 165 802 165 802 136 851 c 128,-1,8 - 107 900 107 900 94.5 948.5 c 128,-1,9 - 82 997 82 997 82 1044 c 0,10,11 - 82 1096 82 1096 96 1148 c 128,-1,12 - 110 1200 110 1200 144 1252 c 128,-1,13 - 178 1304 178 1304 227.5 1344 c 128,-1,14 - 277 1384 277 1384 354.5 1409 c 128,-1,15 - 432 1434 432 1434 526 1434 c 2,16,-1 - 895 1434 l 1,17,-1 - 895 0 l 1,18,-1 - 711 0 l 1,19,-1 - 711 1331 l 1,0,-1 -457 799 m 1,20,-1 - 457 1290 l 1,21,22 - 402 1251 402 1251 375 1183 c 128,-1,23 - 348 1115 348 1115 348 1044 c 128,-1,24 - 348 973 348 973 375 905.5 c 128,-1,25 - 402 838 402 838 457 799 c 1,20,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B9 -Encoding: 185 185 349 -Width: 366 -VWidth: 0 -Flags: W -HStem: 1282 66<82 139> -VStem: 139 145<754 1288> -LayerCount: 2 -Fore -SplineSet -285 1366 m 1,0,-1 - 285 754 l 1,1,-1 - 139 754 l 1,2,-1 - 139 1288 l 1,3,-1 - 82 1282 l 1,4,-1 - 82 1348 l 1,5,-1 - 285 1366 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B2 -Encoding: 178 178 350 -Width: 559 -VWidth: 0 -Flags: W -HStem: 752 66<229 477> 1292 66<207 313> -VStem: 84 145<817 912> 328 145<1073 1291> -LayerCount: 2 -Fore -SplineSet -82 1235 m 1,0,1 - 142 1358 142 1358 297 1358 c 0,2,3 - 371 1358 371 1358 422 1305.5 c 128,-1,4 - 473 1253 473 1253 473 1174 c 0,5,6 - 473 1131 473 1131 455.5 1095 c 128,-1,7 - 438 1059 438 1059 411.5 1035 c 128,-1,8 - 385 1011 385 1011 353.5 985 c 128,-1,9 - 322 959 322 959 295 937.5 c 128,-1,10 - 268 916 268 916 249 884.5 c 128,-1,11 - 230 853 230 853 229 817 c 1,12,-1 - 477 817 l 1,13,-1 - 477 752 l 1,14,-1 - 84 752 l 1,15,16 - 84 814 84 814 102 864 c 128,-1,17 - 120 914 120 914 147 943.5 c 128,-1,18 - 174 973 174 973 206 1001.5 c 128,-1,19 - 238 1030 238 1030 265 1051.5 c 128,-1,20 - 292 1073 292 1073 310 1104.5 c 128,-1,21 - 328 1136 328 1136 328 1174 c 0,22,23 - 328 1234 328 1234 314 1263 c 128,-1,24 - 300 1292 300 1292 279 1292 c 0,25,26 - 254 1292 254 1292 237 1286 c 128,-1,27 - 220 1280 220 1280 209 1264.5 c 128,-1,28 - 198 1249 198 1249 193 1238.5 c 128,-1,29 - 188 1228 188 1228 180 1204 c 1,30,-1 - 82 1235 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B3 -Encoding: 179 179 351 -Width: 583 -VWidth: 0 -Flags: W -HStem: 741 68<208 342> 1034 66<238 326> 1290 68<221 328> -VStem: 340 141<1108 1288> 360 141<816 1018> -LayerCount: 2 -Fore -SplineSet -100 1235 m 1,0,1 - 128 1293 128 1293 174.5 1325.5 c 128,-1,2 - 221 1358 221 1358 303 1358 c 0,3,4 - 376 1358 376 1358 428.5 1307 c 128,-1,5 - 481 1256 481 1256 481 1194 c 0,6,7 - 481 1148 481 1148 464 1120 c 128,-1,8 - 447 1092 447 1092 406 1067 c 1,9,10 - 502 1016 502 1016 502 918 c 0,11,12 - 502 838 502 838 442.5 789.5 c 128,-1,13 - 383 741 383 741 303 741 c 0,14,15 - 143 741 143 741 82 866 c 1,16,-1 - 180 897 l 1,17,18 - 187 877 187 877 193 865 c 128,-1,19 - 199 853 199 853 210.5 838.5 c 128,-1,20 - 222 824 222 824 241.5 816.5 c 128,-1,21 - 261 809 261 809 287 809 c 0,22,23 - 320 809 320 809 340 836.5 c 128,-1,24 - 360 864 360 864 360 918 c 0,25,26 - 360 936 360 936 358.5 950 c 128,-1,27 - 357 964 357 964 349.5 980.5 c 128,-1,28 - 342 997 342 997 329.5 1008 c 128,-1,29 - 317 1019 317 1019 293.5 1026.5 c 128,-1,30 - 270 1034 270 1034 238 1034 c 1,31,-1 - 238 1100 l 1,32,33 - 290 1100 290 1100 315 1119 c 128,-1,34 - 340 1138 340 1138 340 1194 c 0,35,36 - 340 1290 340 1290 287 1290 c 0,37,38 - 271 1290 271 1290 258.5 1286.5 c 128,-1,39 - 246 1283 246 1283 239 1279.5 c 128,-1,40 - 232 1276 232 1276 224.5 1264.5 c 128,-1,41 - 217 1253 217 1253 214.5 1248.5 c 128,-1,42 - 212 1244 212 1244 205.5 1226.5 c 128,-1,43 - 199 1209 199 1209 197 1204 c 1,44,-1 - 100 1235 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: threequarters -Encoding: 190 190 352 -Width: 1081 -VWidth: 0 -Flags: W -HStem: 0 43G<731 877> 131 66<565 731 877 938> 741 68<208 342> 1034 66<238 325> 1290 68<221 328> -VStem: 340 141<1108 1288> 360 141<816 1018> 731 145<0 131 197 473> -LayerCount: 2 -Fore -SplineSet -100 1235 m 1,0,1 - 128 1293 128 1293 174.5 1325.5 c 128,-1,2 - 221 1358 221 1358 303 1358 c 0,3,4 - 376 1358 376 1358 428.5 1307 c 128,-1,5 - 481 1256 481 1256 481 1194 c 0,6,7 - 481 1148 481 1148 464 1120 c 128,-1,8 - 447 1092 447 1092 406 1067 c 1,9,10 - 502 1016 502 1016 502 918 c 0,11,12 - 502 838 502 838 442.5 789.5 c 128,-1,13 - 383 741 383 741 303 741 c 0,14,15 - 143 741 143 741 82 866 c 1,16,-1 - 180 897 l 1,17,18 - 187 877 187 877 193 865 c 128,-1,19 - 199 853 199 853 210.5 838.5 c 128,-1,20 - 222 824 222 824 241.5 816.5 c 128,-1,21 - 261 809 261 809 287 809 c 0,22,23 - 320 809 320 809 340 836.5 c 128,-1,24 - 360 864 360 864 360 918 c 0,25,26 - 360 937 360 937 358.5 950 c 128,-1,27 - 357 963 357 963 350.5 980.5 c 128,-1,28 - 344 998 344 998 331.5 1008.5 c 128,-1,29 - 319 1019 319 1019 295.5 1026.5 c 128,-1,30 - 272 1034 272 1034 238 1034 c 1,31,-1 - 238 1100 l 1,32,33 - 290 1100 290 1100 315 1119 c 128,-1,34 - 340 1138 340 1138 340 1194 c 0,35,36 - 340 1290 340 1290 287 1290 c 0,37,38 - 271 1290 271 1290 258.5 1286.5 c 128,-1,39 - 246 1283 246 1283 239 1279.5 c 128,-1,40 - 232 1276 232 1276 224.5 1264.5 c 128,-1,41 - 217 1253 217 1253 214.5 1248.5 c 128,-1,42 - 212 1244 212 1244 205.5 1226.5 c 128,-1,43 - 199 1209 199 1209 197 1204 c 1,44,-1 - 100 1235 l 1,0,1 -82 264 m 1,45,-1 - 842 1047 l 1,46,-1 - 999 1047 l 1,47,-1 - 240 264 l 1,48,-1 - 82 264 l 1,45,-1 -471 174 m 1,49,-1 - 733 606 l 1,50,-1 - 877 606 l 1,51,-1 - 877 197 l 1,52,-1 - 938 197 l 1,53,-1 - 938 131 l 1,54,-1 - 877 131 l 1,55,-1 - 877 0 l 1,56,-1 - 731 0 l 1,57,-1 - 731 131 l 1,58,-1 - 471 131 l 1,59,-1 - 471 174 l 1,49,-1 -731 473 m 1,60,-1 - 565 197 l 1,61,-1 - 731 197 l 1,62,-1 - 731 473 l 1,60,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: onequarter -Encoding: 188 188 353 -Width: 1081 -VWidth: 0 -Flags: W -HStem: 0 43G<731 877> 131 66<565 731 877 938> 1282 66<215 272> -VStem: 272 145<754 1288> 731 145<0 131 197 473> -LayerCount: 2 -Fore -SplineSet -418 1366 m 1,0,-1 - 418 754 l 1,1,-1 - 272 754 l 1,2,-1 - 272 1288 l 1,3,-1 - 215 1282 l 1,4,-1 - 215 1348 l 1,5,-1 - 418 1366 l 1,0,-1 -82 264 m 1,6,-1 - 842 1047 l 1,7,-1 - 999 1047 l 1,8,-1 - 240 264 l 1,9,-1 - 82 264 l 1,6,-1 -471 174 m 1,10,-1 - 733 606 l 1,11,-1 - 877 606 l 1,12,-1 - 877 197 l 1,13,-1 - 938 197 l 1,14,-1 - 938 131 l 1,15,-1 - 877 131 l 1,16,-1 - 877 0 l 1,17,-1 - 731 0 l 1,18,-1 - 731 131 l 1,19,-1 - 471 131 l 1,20,-1 - 471 174 l 1,10,-1 -731 473 m 1,21,-1 - 565 197 l 1,22,-1 - 731 197 l 1,23,-1 - 731 473 l 1,21,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: onehalf -Encoding: 189 189 354 -Width: 1085 -VWidth: 0 -Flags: W -HStem: 0 66<756 1004> 541 66<733 839> 1282 66<215 272> -VStem: 272 145<754 1288> 610 145<66 160> 854 145<321 539> -LayerCount: 2 -Fore -SplineSet -608 483 m 1,0,1 - 668 606 668 606 823 606 c 0,2,3 - 897 606 897 606 948 553.5 c 128,-1,4 - 999 501 999 501 999 422 c 0,5,6 - 999 372 999 372 974.5 331 c 128,-1,7 - 950 290 950 290 915 261.5 c 128,-1,8 - 880 233 880 233 844.5 206 c 128,-1,9 - 809 179 809 179 783.5 143.5 c 128,-1,10 - 758 108 758 108 756 66 c 1,11,-1 - 1004 66 l 1,12,-1 - 1004 0 l 1,13,-1 - 610 0 l 1,14,15 - 610 62 610 62 628 112 c 128,-1,16 - 646 162 646 162 673 191.5 c 128,-1,17 - 700 221 700 221 732 249.5 c 128,-1,18 - 764 278 764 278 791 299.5 c 128,-1,19 - 818 321 818 321 836 352.5 c 128,-1,20 - 854 384 854 384 854 422 c 0,21,22 - 854 482 854 482 840 511.5 c 128,-1,23 - 826 541 826 541 805 541 c 0,24,25 - 780 541 780 541 763 535 c 128,-1,26 - 746 529 746 529 735 513.5 c 128,-1,27 - 724 498 724 498 719.5 488 c 128,-1,28 - 715 478 715 478 707 453 c 1,29,-1 - 608 483 l 1,0,1 -418 1366 m 1,30,-1 - 418 754 l 1,31,-1 - 272 754 l 1,32,-1 - 272 1288 l 1,33,-1 - 215 1282 l 1,34,-1 - 215 1348 l 1,35,-1 - 418 1366 l 1,30,-1 -82 264 m 1,36,-1 - 842 1047 l 1,37,-1 - 999 1047 l 1,38,-1 - 240 264 l 1,39,-1 - 82 264 l 1,36,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii00208 -Encoding: 8213 8213 355 -Width: 1384 -VWidth: 0 -Flags: W -HStem: 348 102<82 1303> -LayerCount: 2 -Fore -SplineSet -82 451 m 1,0,-1 - 1303 451 l 1,1,-1 - 1303 348 l 1,2,-1 - 82 348 l 1,3,-1 - 82 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Scommaaccent -Encoding: 536 536 356 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -401 49<418 561> -164 57<492 575> -20 102<474 721> 1352 102<489 697> -VStem: 162 266<971 1252> 608 158<-328 -184> 815 266<200 510> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1163 0 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scommaaccent -Encoding: 537 537 357 -Width: 897 -VWidth: 0 -Flags: W -HStem: -401 49<293 436> -164 57<367 450> -20 102<286 522> 817 104<397 566> -VStem: 125 256<569 808> 483 158<-328 -184> 559 256<119 365> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1038 0 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021A -Encoding: 538 538 358 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -401 49<483 626> -164 57<557 641> 0 43<508 774> 1331 102<41 508 774 1239> -VStem: 508 266<0 1331> 674 158<-328 -184> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1229 0 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021B -Encoding: 539 539 359 -Width: 657 -VWidth: 0 -Flags: W -HStem: -401 49<154 297> -164 57<227 311> 0 43<188 444> 799 102<84 188 444 604> -VStem: 188 256<0 799 901 1198> 344 158<-328 -184> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 899 0 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: longs -Encoding: 383 383 360 -Width: 731 -VWidth: 0 -Flags: W -HStem: 0 43G<139 395> 1270 102<452 644> -VStem: 139 256<0 1205> -LayerCount: 2 -Fore -SplineSet -139 0 m 1,0,-1 - 139 864 l 2,1,2 - 139 946 139 946 141.5 1004 c 128,-1,3 - 144 1062 144 1062 152 1116 c 128,-1,4 - 160 1170 160 1170 173 1205 c 128,-1,5 - 186 1240 186 1240 208.5 1271 c 128,-1,6 - 231 1302 231 1302 260 1319.5 c 128,-1,7 - 289 1337 289 1337 332 1350 c 128,-1,8 - 375 1363 375 1363 427 1367.5 c 128,-1,9 - 479 1372 479 1372 549 1372 c 0,10,11 - 576 1372 576 1372 603.5 1367.5 c 128,-1,12 - 631 1363 631 1363 647.5 1360 c 128,-1,13 - 664 1357 664 1357 694 1343.5 c 128,-1,14 - 724 1330 724 1330 732.5 1326.5 c 128,-1,15 - 741 1323 741 1323 778 1303 c 128,-1,16 - 815 1283 815 1283 821 1280 c 1,17,-1 - 719 1174 l 1,18,19 - 711 1180 711 1180 690 1194.5 c 128,-1,20 - 669 1209 669 1209 663.5 1213 c 128,-1,21 - 658 1217 658 1217 641.5 1228 c 128,-1,22 - 625 1239 625 1239 619.5 1241.5 c 128,-1,23 - 614 1244 614 1244 601 1251 c 128,-1,24 - 588 1258 588 1258 581 1260 c 128,-1,25 - 574 1262 574 1262 562.5 1265 c 128,-1,26 - 551 1268 551 1268 540.5 1269 c 128,-1,27 - 530 1270 530 1270 518 1270 c 0,28,29 - 395 1270 395 1270 395 909 c 2,30,-1 - 395 0 l 1,31,-1 - 139 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ydieresis -Encoding: 255 255 361 -Width: 923 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 860 41<88 324 729 907> 1085 170<233 403 602 772> -VStem: 233 170<1085 1255> 602 170<1085 1255> -AnchorPoint: "top" 508 1282 basechar 0 -AnchorPoint: "ogonek" 614 0 basechar 0 -AnchorPoint: "bottom" 365 -315 basechar 0 -AnchorPoint: "cedilla" 242 -328 basechar 0 -AnchorPoint: "horn" 762 717 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1092 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uniFB00 -Encoding: 64256 64256 362 -Width: 1255 -VWidth: 0 -Flags: W -HStem: 0 43G<152 408 817 1073> 799 102<61 152 408 817 1073 1225> 1270 102<427 569 1093 1234> -VStem: 152 256<0 799 901 1243> 817 256<0 799 901 1243> -LayerCount: 2 -Fore -SplineSet -555 1239 m 1,0,1 - 530 1270 530 1270 483 1270 c 0,2,3 - 440 1270 440 1270 424 1223 c 128,-1,4 - 408 1176 408 1176 408 1042 c 2,5,-1 - 408 901 l 1,6,-1 - 817 901 l 1,7,-1 - 817 1096 l 2,8,9 - 817 1217 817 1217 904.5 1294.5 c 128,-1,10 - 992 1372 992 1372 1118 1372 c 0,11,12 - 1203 1372 1203 1372 1264 1350 c 1,13,-1 - 1221 1239 l 1,14,15 - 1196 1270 1196 1270 1149 1270 c 0,16,17 - 1106 1270 1106 1270 1089.5 1222.5 c 128,-1,18 - 1073 1175 1073 1175 1073 1042 c 2,19,-1 - 1073 901 l 1,20,-1 - 1225 901 l 1,21,-1 - 1225 799 l 1,22,-1 - 1073 799 l 1,23,-1 - 1073 0 l 1,24,-1 - 817 0 l 1,25,-1 - 817 799 l 1,26,-1 - 408 799 l 1,27,-1 - 408 0 l 1,28,-1 - 152 0 l 1,29,-1 - 152 799 l 1,30,-1 - 31 799 l 1,31,-1 - 61 901 l 1,32,-1 - 152 901 l 1,33,-1 - 152 1096 l 2,34,35 - 152 1217 152 1217 239.5 1294.5 c 128,-1,36 - 327 1372 327 1372 453 1372 c 0,37,38 - 537 1372 537 1372 598 1350 c 1,39,-1 - 555 1239 l 1,0,1 -EndSplineSet -Validated: 1 -LCarets2: 1 561 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f f -EndChar - -StartChar: fi -Encoding: 64257 64257 363 -Width: 1153 -VWidth: 0 -Flags: W -HStem: 0 43G<152 408 776 1032> 799 102<61 152 408 776> 1065 164<797 1012> 1270 102<427 569> -VStem: 152 256<0 799 901 1243> 776 256<0 799> 797 215<1065 1229> -LayerCount: 2 -Fore -SplineSet -555 1239 m 1,0,1 - 530 1270 530 1270 483 1270 c 0,2,3 - 440 1270 440 1270 424 1223 c 128,-1,4 - 408 1176 408 1176 408 1042 c 2,5,-1 - 408 901 l 1,6,-1 - 1032 901 l 1,7,-1 - 1032 0 l 1,8,-1 - 776 0 l 1,9,-1 - 776 799 l 1,10,-1 - 408 799 l 1,11,-1 - 408 0 l 1,12,-1 - 152 0 l 1,13,-1 - 152 799 l 1,14,-1 - 31 799 l 1,15,-1 - 61 901 l 1,16,-1 - 152 901 l 1,17,-1 - 152 1096 l 2,18,19 - 152 1217 152 1217 239.5 1294.5 c 128,-1,20 - 327 1372 327 1372 453 1372 c 0,21,22 - 537 1372 537 1372 598 1350 c 1,23,-1 - 555 1239 l 1,0,1 -797 1229 m 1,24,-1 - 1012 1229 l 1,25,-1 - 1012 1065 l 1,26,-1 - 797 1065 l 1,27,-1 - 797 1229 l 1,24,-1 -EndSplineSet -Validated: 1 -LCarets2: 1 0 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f i -EndChar - -StartChar: fl -Encoding: 64258 64258 364 -Width: 1204 -VWidth: 0 -Flags: W -HStem: 0 43G<152 408 778 1034> 799 102<61 152 408 504> 1270 102<466 725> 1311 41G<778 1034> -VStem: 152 256<0 799 901 1206> 778 256<0 1218 1311 1352> -LayerCount: 2 -Fore -SplineSet -778 1188 m 1,0,1 - 771 1192 771 1192 749 1208 c 128,-1,2 - 727 1224 727 1224 707 1236 c 128,-1,3 - 687 1248 687 1248 646 1259 c 128,-1,4 - 605 1270 605 1270 555 1270 c 0,5,6 - 535 1270 535 1270 517.5 1264.5 c 128,-1,7 - 500 1259 500 1259 479 1241.5 c 128,-1,8 - 458 1224 458 1224 443 1195.5 c 128,-1,9 - 428 1167 428 1167 418 1116.5 c 128,-1,10 - 408 1066 408 1066 408 999 c 2,11,-1 - 408 901 l 1,12,-1 - 504 901 l 1,13,-1 - 504 799 l 1,14,-1 - 408 799 l 1,15,-1 - 408 0 l 1,16,-1 - 152 0 l 1,17,-1 - 152 799 l 1,18,-1 - 31 799 l 1,19,-1 - 61 901 l 1,20,-1 - 152 901 l 1,21,-1 - 152 1053 l 2,22,23 - 152 1124 152 1124 175 1180.5 c 128,-1,24 - 198 1237 198 1237 235.5 1272 c 128,-1,25 - 273 1307 273 1307 322.5 1330.5 c 128,-1,26 - 372 1354 372 1354 422 1363 c 128,-1,27 - 472 1372 472 1372 524 1372 c 0,28,29 - 569 1372 569 1372 607 1367.5 c 128,-1,30 - 645 1363 645 1363 673 1354.5 c 128,-1,31 - 701 1346 701 1346 718.5 1339 c 128,-1,32 - 736 1332 736 1332 755 1322.5 c 128,-1,33 - 774 1313 774 1313 778 1311 c 1,34,-1 - 778 1352 l 1,35,-1 - 1034 1352 l 1,36,-1 - 1034 0 l 1,37,-1 - 778 0 l 1,38,-1 - 778 1188 l 1,0,1 -EndSplineSet -Validated: 1 -LCarets2: 1 664 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f l -EndChar - -StartChar: uniFB03 -Encoding: 64259 64259 365 -Width: 1818 -VWidth: 0 -Flags: W -HStem: 0 43G<152 408 817 1073 1442 1698> 799 102<61 152 408 817 1073 1442> 1065 164<1462 1677> 1270 102<427 569 1093 1234> -VStem: 152 256<0 799 901 1243> 817 256<0 799 901 1243> 1442 256<0 799> 1462 215<1065 1229> -LayerCount: 2 -Fore -SplineSet -555 1239 m 1,0,1 - 530 1270 530 1270 483 1270 c 0,2,3 - 440 1270 440 1270 424 1223 c 128,-1,4 - 408 1176 408 1176 408 1042 c 2,5,-1 - 408 901 l 1,6,-1 - 817 901 l 1,7,-1 - 817 1096 l 2,8,9 - 817 1217 817 1217 904.5 1294.5 c 128,-1,10 - 992 1372 992 1372 1118 1372 c 0,11,12 - 1203 1372 1203 1372 1264 1350 c 1,13,-1 - 1221 1239 l 1,14,15 - 1196 1270 1196 1270 1149 1270 c 0,16,17 - 1106 1270 1106 1270 1089.5 1222.5 c 128,-1,18 - 1073 1175 1073 1175 1073 1042 c 2,19,-1 - 1073 901 l 1,20,-1 - 1698 901 l 1,21,-1 - 1698 0 l 1,22,-1 - 1442 0 l 1,23,-1 - 1442 799 l 1,24,-1 - 1073 799 l 1,25,-1 - 1073 0 l 1,26,-1 - 817 0 l 1,27,-1 - 817 799 l 1,28,-1 - 408 799 l 1,29,-1 - 408 0 l 1,30,-1 - 152 0 l 1,31,-1 - 152 799 l 1,32,-1 - 31 799 l 1,33,-1 - 61 901 l 1,34,-1 - 152 901 l 1,35,-1 - 152 1096 l 2,36,37 - 152 1217 152 1217 239.5 1294.5 c 128,-1,38 - 327 1372 327 1372 453 1372 c 0,39,40 - 537 1372 537 1372 598 1350 c 1,41,-1 - 555 1239 l 1,0,1 -1462 1229 m 1,42,-1 - 1677 1229 l 1,43,-1 - 1677 1065 l 1,44,-1 - 1462 1065 l 1,45,-1 - 1462 1229 l 1,42,-1 -EndSplineSet -Validated: 1 -LCarets2: 2 0 0 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f f i -EndChar - -StartChar: uniFB04 -Encoding: 64260 64260 366 -Width: 1869 -VWidth: 0 -Flags: W -HStem: 0 43G<152 408 817 1073 1444 1700> 799 102<61 152 408 817 1073 1225> 1270 102<427 569 1233 1389> 1311 41G<1444 1700> -VStem: 152 256<0 799 901 1243> 817 256<0 799 901 1208> 1444 256<0 1219 1311 1352> -LayerCount: 2 -Fore -SplineSet -555 1239 m 1,0,1 - 530 1270 530 1270 483 1270 c 0,2,3 - 440 1270 440 1270 424 1223 c 128,-1,4 - 408 1176 408 1176 408 1042 c 2,5,-1 - 408 901 l 1,6,-1 - 817 901 l 1,7,-1 - 817 1096 l 2,8,9 - 817 1217 817 1217 904.5 1294.5 c 128,-1,10 - 992 1372 992 1372 1118 1372 c 0,11,12 - 1124 1372 1124 1372 1136.5 1371 c 128,-1,13 - 1149 1370 1149 1370 1155 1370 c 128,-1,14 - 1161 1370 1161 1370 1172.5 1371 c 128,-1,15 - 1184 1372 1184 1372 1190 1372 c 0,16,17 - 1235 1372 1235 1372 1273 1367.5 c 128,-1,18 - 1311 1363 1311 1363 1339 1354.5 c 128,-1,19 - 1367 1346 1367 1346 1384.5 1339 c 128,-1,20 - 1402 1332 1402 1332 1421 1322.5 c 128,-1,21 - 1440 1313 1440 1313 1444 1311 c 1,22,-1 - 1444 1352 l 1,23,-1 - 1700 1352 l 1,24,-1 - 1700 0 l 1,25,-1 - 1444 0 l 1,26,-1 - 1444 1188 l 1,27,28 - 1441 1189 1441 1189 1408 1214 c 128,-1,29 - 1375 1239 1375 1239 1334 1253.5 c 128,-1,30 - 1293 1268 1293 1268 1233 1270 c 1,31,-1 - 1221 1239 l 1,32,33 - 1205 1259 1205 1259 1186 1264 c 1,34,35 - 1073 1230 1073 1230 1073 999 c 2,36,-1 - 1073 901 l 1,37,-1 - 1225 901 l 1,38,-1 - 1225 799 l 1,39,-1 - 1073 799 l 1,40,-1 - 1073 0 l 1,41,-1 - 817 0 l 1,42,-1 - 817 799 l 1,43,-1 - 408 799 l 1,44,-1 - 408 0 l 1,45,-1 - 152 0 l 1,46,-1 - 152 799 l 1,47,-1 - 31 799 l 1,48,-1 - 61 901 l 1,49,-1 - 152 901 l 1,50,-1 - 152 1096 l 2,51,52 - 152 1217 152 1217 239.5 1294.5 c 128,-1,53 - 327 1372 327 1372 453 1372 c 0,54,55 - 537 1372 537 1372 598 1350 c 1,56,-1 - 555 1239 l 1,0,1 -EndSplineSet -Validated: 1 -LCarets2: 2 639 1116 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f f l -EndChar - -StartChar: uni00A0 -Encoding: 160 160 367 -Width: 409 -VWidth: 0 -Flags: W -LayerCount: 2 -EndChar - -StartChar: dieresis -Encoding: 168 168 368 -Width: 559 -VWidth: 0 -Flags: W -HStem: 1270 170<10 180 379 549> -VStem: 10 170<1270 1440> 379 170<1270 1440> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 868 0 2 -Validated: 1 -EndChar - -StartChar: degree -Encoding: 176 176 369 -Width: 577 -VWidth: 0 -Flags: W -HStem: 1010 96<212 365> 1286 96<212 365> -VStem: 102 96<1119 1273> 379 96<1119 1273> -LayerCount: 2 -Fore -SplineSet -199 1196 m 128,-1,1 - 199 1159 199 1159 225.5 1132.5 c 128,-1,2 - 252 1106 252 1106 289 1106 c 128,-1,3 - 326 1106 326 1106 352.5 1132.5 c 128,-1,4 - 379 1159 379 1159 379 1196 c 128,-1,5 - 379 1233 379 1233 352.5 1259.5 c 128,-1,6 - 326 1286 326 1286 289 1286 c 128,-1,7 - 252 1286 252 1286 225.5 1259.5 c 128,-1,0 - 199 1233 199 1233 199 1196 c 128,-1,1 -102 1196 m 128,-1,9 - 102 1272 102 1272 157 1327 c 128,-1,10 - 212 1382 212 1382 289 1382 c 128,-1,11 - 366 1382 366 1382 420.5 1327 c 128,-1,12 - 475 1272 475 1272 475 1196 c 128,-1,13 - 475 1120 475 1120 420.5 1065 c 128,-1,14 - 366 1010 366 1010 289 1010 c 128,-1,15 - 212 1010 212 1010 157 1065 c 128,-1,8 - 102 1120 102 1120 102 1196 c 128,-1,9 -EndSplineSet -Validated: 1 -EndChar - -StartChar: acute -Encoding: 180 180 370 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: 82 371 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 770 0 2 -Validated: 1 -EndChar - -StartChar: cedilla -Encoding: 184 184 371 -Width: 471 -VWidth: 0 -Flags: W -HStem: -401 49<61 204> -164 164<147 236> -VStem: 252 158<-327 -185> -LayerCount: 2 -Fore -Refer: 109 807 N 1 0 0 1 807 0 2 -Validated: 1 -EndChar - -StartChar: breve -Encoding: 728 728 372 -Width: 585 -VWidth: 0 -Flags: W -HStem: 1270 137<171 415> -VStem: 61 78<1446 1468> 446 78<1446 1468> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 881 0 2 -Validated: 1 -EndChar - -StartChar: ogonek -Encoding: 731 731 373 -Width: 405 -VWidth: 0 -Flags: W -HStem: -319 37<257 344> -VStem: 45 147<-254 -77> -LayerCount: 2 -Fore -Refer: 110 808 N 1 0 0 1 774 0 2 -Validated: 1 -EndChar - -StartChar: caron -Encoding: 711 711 374 -Width: 602 -VWidth: 0 -Flags: W -HStem: 1139 387 -VStem: 61 479 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 889 0 2 -Validated: 1 -EndChar - -StartChar: hungarumlaut -Encoding: 733 733 375 -Width: 755 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: 53 371 332 371 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 881 0 2 -Validated: 1 -EndChar - -StartChar: dotaccent -Encoding: 729 729 376 -Width: 272 -VWidth: 0 -Flags: W -HStem: 1270 170<51 221> -VStem: 51 170<1270 1440> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 727 0 2 -Validated: 1 -EndChar - -StartChar: grave -Encoding: 96 96 377 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: 45 371 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 770 0 2 -Validated: 1 -EndChar - -StartChar: uni01EA -Encoding: 490 490 378 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -319 37<717 805> -20 102<587 861> 1352 102<565 855> -VStem: 102 266<424 1012> 506 147<-254 -77> 1071 266<414 1009> -AnchorPoint: "top" 707 1434 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -698 1352 m 0,0,1 - 553 1352 553 1352 461 1189.5 c 128,-1,2 - 369 1027 369 1027 369 717 c 0,3,4 - 369 586 369 586 389.5 478 c 128,-1,5 - 410 370 410 370 444 298 c 128,-1,6 - 478 226 478 226 523.5 176 c 128,-1,7 - 569 126 569 126 617.5 104 c 128,-1,8 - 666 82 666 82 717 82 c 0,9,10 - 875 82 875 82 973 244.5 c 128,-1,11 - 1071 407 1071 407 1071 717 c 0,12,13 - 1071 1040 1071 1040 970 1196 c 128,-1,14 - 869 1352 869 1352 698 1352 c 0,0,1 -722 -20 m 1,15,16 - 693 -45 693 -45 673 -83 c 128,-1,17 - 653 -121 653 -121 653 -150 c 0,18,19 - 653 -283 653 -283 805 -283 c 1,20,-1 - 805 -319 l 1,21,22 - 649 -319 649 -319 577.5 -278.5 c 128,-1,23 - 506 -238 506 -238 506 -186 c 0,24,25 - 506 -77 506 -77 638 -16 c 1,26,27 - 559 -5 559 -5 483.5 28 c 128,-1,28 - 408 61 408 61 338.5 122 c 128,-1,29 - 269 183 269 183 216.5 265 c 128,-1,30 - 164 347 164 347 133 463.5 c 128,-1,31 - 102 580 102 580 102 717 c 0,32,33 - 102 865 102 865 136.5 989.5 c 128,-1,34 - 171 1114 171 1114 228.5 1198.5 c 128,-1,35 - 286 1283 286 1283 362 1341.5 c 128,-1,36 - 438 1400 438 1400 520 1427 c 128,-1,37 - 602 1454 602 1454 686 1454 c 0,38,39 - 788 1454 788 1454 882 1427 c 128,-1,40 - 976 1400 976 1400 1059.5 1341.5 c 128,-1,41 - 1143 1283 1143 1283 1204.5 1198 c 128,-1,42 - 1266 1113 1266 1113 1301.5 989.5 c 128,-1,43 - 1337 866 1337 866 1337 717 c 0,44,45 - 1337 570 1337 570 1304.5 448.5 c 128,-1,46 - 1272 327 1272 327 1215.5 242 c 128,-1,47 - 1159 157 1159 157 1080.5 98.5 c 128,-1,48 - 1002 40 1002 40 912.5 11 c 128,-1,49 - 823 -18 823 -18 722 -20 c 1,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01EB -Encoding: 491 491 379 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -319 37<539 627> -20 102<425 644> 819 102<426 643> -VStem: 90 256<214 657> 328 147<-254 -77> 715 256<223 678> -AnchorPoint: "top" 535 1004 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -LayerCount: 2 -Fore -SplineSet -715 451 m 0,0,1 - 715 537 715 537 707 600.5 c 128,-1,2 - 699 664 699 664 680.5 715.5 c 128,-1,3 - 662 767 662 767 627.5 793 c 128,-1,4 - 593 819 593 819 543 819 c 0,5,6 - 435 819 435 819 390.5 725.5 c 128,-1,7 - 346 632 346 632 346 451 c 0,8,9 - 346 380 346 380 351 326 c 128,-1,10 - 356 272 356 272 369.5 224.5 c 128,-1,11 - 383 177 383 177 404.5 146.5 c 128,-1,12 - 426 116 426 116 461 99 c 128,-1,13 - 496 82 496 82 543 82 c 0,14,15 - 595 82 595 82 630 108 c 128,-1,16 - 665 134 665 134 683 186 c 128,-1,17 - 701 238 701 238 708 300.5 c 128,-1,18 - 715 363 715 363 715 451 c 0,0,1 -457 -18 m 1,19,20 - 284 0 284 0 187 125 c 128,-1,21 - 90 250 90 250 90 451 c 0,22,23 - 90 555 90 555 127 645 c 128,-1,24 - 164 735 164 735 224 794.5 c 128,-1,25 - 284 854 284 854 359.5 888 c 128,-1,26 - 435 922 435 922 512 922 c 0,27,28 - 719 922 719 922 845 801 c 128,-1,29 - 971 680 971 680 971 451 c 0,30,31 - 971 231 971 231 855 110 c 128,-1,32 - 739 -11 739 -11 545 -20 c 1,33,34 - 515 -45 515 -45 495 -83 c 128,-1,35 - 475 -121 475 -121 475 -150 c 0,36,37 - 475 -283 475 -283 627 -283 c 1,38,-1 - 627 -319 l 1,39,40 - 471 -319 471 -319 399.5 -278.5 c 128,-1,41 - 328 -238 328 -238 328 -186 c 0,42,43 - 328 -80 328 -80 457 -18 c 1,19,20 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0400 -Encoding: 1024 1024 380 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1495 403 -VStem: 174 266<102 799 901 1331> 344 371 -LayerCount: 2 -Fore -Refer: 144 200 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10023 -Encoding: 1025 1025 381 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1516 170<344 514 713 883> -VStem: 174 266<102 799 901 1331> 344 170<1516 1686> 713 170<1516 1686> -LayerCount: 2 -Fore -Refer: 147 203 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10051 -Encoding: 1026 1026 382 -Width: 1503 -VWidth: 0 -Flags: W -HStem: -348 102<810 1049> 0 43G<508 772> 819 102<799 1051> 1331 102<41 508 772 1239> -VStem: 508 264<0 784 891 1331> 1108 256<-128 720> -AnchorPoint: "top" 643 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -772 0 m 1,0,-1 - 508 0 l 1,1,-1 - 508 1331 l 1,2,-1 - 41 1331 l 1,3,-1 - 41 1434 l 1,4,-1 - 1243 1434 l 1,5,-1 - 1239 1331 l 1,6,-1 - 772 1331 l 1,7,-1 - 772 891 l 1,8,9 - 851 922 851 922 936 922 c 0,10,11 - 1152 922 1152 922 1258 816 c 128,-1,12 - 1364 710 1364 710 1364 492 c 2,13,-1 - 1364 160 l 2,14,15 - 1364 39 1364 39 1344.5 -50 c 128,-1,16 - 1325 -139 1325 -139 1290.5 -196 c 128,-1,17 - 1256 -253 1256 -253 1202 -287 c 128,-1,18 - 1148 -321 1148 -321 1086.5 -334.5 c 128,-1,19 - 1025 -348 1025 -348 944 -348 c 0,20,21 - 797 -348 797 -348 621 -256 c 1,22,-1 - 723 -150 l 1,23,24 - 860 -246 860 -246 975 -246 c 0,25,26 - 1108 -246 1108 -246 1108 115 c 2,27,-1 - 1108 467 l 2,28,29 - 1108 606 1108 606 1090 685.5 c 128,-1,30 - 1072 765 1072 765 1042.5 792 c 128,-1,31 - 1013 819 1013 819 967 819 c 0,32,33 - 861 819 861 819 772 758 c 1,34,-1 - 772 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10052 -Encoding: 1027 1027 383 -Width: 1038 -VWidth: 0 -Flags: W -HStem: 0 43<256 522> 1331 102<522 1083> 1495 403 -VStem: 256 266<0 1331> 586 371 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1274 246 2 -Refer: 399 1043 N 1 0 0 1 82 0 3 -Validated: 1 -EndChar - -StartChar: afii10053 -Encoding: 1028 1028 384 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<627 929> 713 102<373 938> 1352 102<596 883> -VStem: 102 266<440 713 815 1012> -AnchorPoint: "top" 717 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1249 209 m 1,0,1 - 1169 106 1169 106 1035.5 43 c 128,-1,2 - 902 -20 902 -20 741 -20 c 0,3,4 - 659 -20 659 -20 572.5 7 c 128,-1,5 - 486 34 486 34 401 93 c 128,-1,6 - 316 152 316 152 250 235.5 c 128,-1,7 - 184 319 184 319 143 444.5 c 128,-1,8 - 102 570 102 570 102 717 c 0,9,10 - 102 865 102 865 139 989.5 c 128,-1,11 - 176 1114 176 1114 236 1198 c 128,-1,12 - 296 1282 296 1282 375 1341 c 128,-1,13 - 454 1400 454 1400 536.5 1427 c 128,-1,14 - 619 1454 619 1454 702 1454 c 0,15,16 - 1075 1454 1075 1454 1243 1245 c 1,17,-1 - 1044 1157 l 1,18,19 - 986 1238 986 1238 903.5 1295 c 128,-1,20 - 821 1352 821 1352 733 1352 c 0,21,22 - 594 1352 594 1352 492.5 1213 c 128,-1,23 - 391 1074 391 1074 373 815 c 1,24,-1 - 938 815 l 1,25,-1 - 938 713 l 1,26,-1 - 369 713 l 1,27,28 - 370 584 370 584 396 475.5 c 128,-1,29 - 422 367 422 367 464 296 c 128,-1,30 - 506 225 506 225 559.5 175.5 c 128,-1,31 - 613 126 613 126 666.5 104 c 128,-1,32 - 720 82 720 82 772 82 c 0,33,34 - 951 82 951 82 1083 285 c 1,35,-1 - 1249 209 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10054 -Encoding: 1029 1029 385 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -20 102<474 721> 1352 102<489 697> -VStem: 162 266<971 1252> 815 266<200 510> -LayerCount: 2 -Fore -Refer: 45 83 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10055 -Encoding: 1030 1030 386 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> -VStem: 172 266<0 1434> -AnchorPoint: "top" 182 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10056 -Encoding: 1031 1031 387 -Width: 520 -VWidth: 0 -Flags: W -HStem: 0 43<129 395> 1393 41<129 395> 1516 170<-6 164 362 532> -VStem: -6 170<1516 1686> 129 266<0 1434> 362 170<1516 1686> -LayerCount: 2 -Fore -Refer: 151 207 N 1 0 0 1 -43 0 2 -Validated: 1 -EndChar - -StartChar: afii10057 -Encoding: 1032 1032 388 -Width: 954 -VWidth: 0 -Flags: W -HStem: -20 102<272 468> 1393 41<522 788> -VStem: 522 266<137 1434> -AnchorPoint: "top" 711 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 37 74 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10058 -Encoding: 1033 1033 389 -Width: 1792 -VWidth: 0 -Flags: W -HStem: -20 102<131 362> 0 102<1163 1345> 799 102<1163 1346> 1331 102<649 897> -VStem: 383 266<108 1331> 897 266<102 799 901 1331> 1475 266<260 638> -AnchorPoint: "top" 768 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1741 457 m 0,0,1 - 1741 393 1741 393 1725 330.5 c 128,-1,2 - 1709 268 1709 268 1673.5 207.5 c 128,-1,3 - 1638 147 1638 147 1586.5 101.5 c 128,-1,4 - 1535 56 1535 56 1457.5 28 c 128,-1,5 - 1380 0 1380 0 1286 0 c 2,6,-1 - 897 0 l 1,7,-1 - 897 1331 l 1,8,-1 - 649 1331 l 1,9,-1 - 649 260 l 2,10,11 - 649 -20 649 -20 262 -20 c 0,12,13 - 199 -20 199 -20 136 3.5 c 128,-1,14 - 73 27 73 27 35 72 c 1,15,-1 - 164 133 l 1,16,17 - 200 82 200 82 293 82 c 0,18,19 - 317 82 317 82 333 92 c 128,-1,20 - 349 102 349 102 359 119.5 c 128,-1,21 - 369 137 369 137 374.5 169.5 c 128,-1,22 - 380 202 380 202 381.5 237.5 c 128,-1,23 - 383 273 383 273 383 328 c 2,24,-1 - 383 1434 l 1,25,-1 - 1163 1434 l 1,26,-1 - 1163 901 l 1,27,-1 - 1282 901 l 2,28,29 - 1383 901 1383 901 1471.5 861 c 128,-1,30 - 1560 821 1560 821 1617.5 757 c 128,-1,31 - 1675 693 1675 693 1708 614.5 c 128,-1,32 - 1741 536 1741 536 1741 457 c 0,0,1 -1163 799 m 1,33,-1 - 1163 102 l 1,34,-1 - 1225 102 l 2,35,36 - 1287 102 1287 102 1337 137 c 128,-1,37 - 1387 172 1387 172 1416 226.5 c 128,-1,38 - 1445 281 1445 281 1460 340.5 c 128,-1,39 - 1475 400 1475 400 1475 457 c 0,40,41 - 1475 534 1475 534 1450 609.5 c 128,-1,42 - 1425 685 1425 685 1366 742 c 128,-1,43 - 1307 799 1307 799 1225 799 c 2,44,-1 - 1163 799 l 1,33,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10059 -Encoding: 1034 1034 390 -Width: 1820 -VWidth: 0 -Flags: W -HStem: 0 102<1192 1373> 799 102<440 926 1192 1375> 1393 41G<174 440 926 1192> -VStem: 174 266<0 799 901 1434> 926 266<102 799 901 1434> 1503 266<260 638> -AnchorPoint: "top" 690 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 1434 m 1,0,-1 - 440 901 l 1,1,-1 - 926 901 l 1,2,-1 - 926 1434 l 1,3,-1 - 1192 1434 l 1,4,-1 - 1192 901 l 1,5,-1 - 1311 901 l 2,6,7 - 1412 901 1412 901 1500 861 c 128,-1,8 - 1588 821 1588 821 1646 757 c 128,-1,9 - 1704 693 1704 693 1736.5 614.5 c 128,-1,10 - 1769 536 1769 536 1769 457 c 0,11,12 - 1769 393 1769 393 1753.5 330.5 c 128,-1,13 - 1738 268 1738 268 1702.5 207.5 c 128,-1,14 - 1667 147 1667 147 1615.5 101.5 c 128,-1,15 - 1564 56 1564 56 1486.5 28 c 128,-1,16 - 1409 0 1409 0 1315 0 c 2,17,-1 - 926 0 l 1,18,-1 - 926 799 l 1,19,-1 - 440 799 l 1,20,-1 - 440 0 l 1,21,-1 - 174 0 l 1,22,-1 - 174 1434 l 1,23,-1 - 440 1434 l 1,0,-1 -1192 102 m 1,24,-1 - 1253 102 l 2,25,26 - 1315 102 1315 102 1365 137 c 128,-1,27 - 1415 172 1415 172 1444 226.5 c 128,-1,28 - 1473 281 1473 281 1488 340.5 c 128,-1,29 - 1503 400 1503 400 1503 457 c 0,30,31 - 1503 534 1503 534 1478 609.5 c 128,-1,32 - 1453 685 1453 685 1394 742 c 128,-1,33 - 1335 799 1335 799 1253 799 c 2,34,-1 - 1192 799 l 1,35,-1 - 1192 102 l 1,24,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10060 -Encoding: 1035 1035 391 -Width: 1503 -VWidth: 0 -Flags: W -HStem: 0 43G<508 772 1108 1364> 819 102<799 1051> 1331 102<41 508 772 1239> -VStem: 508 264<0 784 891 1331> 1108 256<0 720> -AnchorPoint: "top" 643 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1108 0 m 9,0,-1 - 1108 467 l 2,1,2 - 1108 606 1108 606 1090 685.5 c 128,-1,3 - 1072 765 1072 765 1042.5 792 c 128,-1,4 - 1013 819 1013 819 967 819 c 0,5,6 - 861 819 861 819 772 758 c 1,7,-1 - 772 0 l 1,8,-1 - 508 0 l 1,9,-1 - 508 1331 l 1,10,-1 - 41 1331 l 1,11,-1 - 41 1434 l 1,12,-1 - 1243 1434 l 1,13,-1 - 1239 1331 l 1,14,-1 - 772 1331 l 1,15,-1 - 772 891 l 1,16,17 - 851 922 851 922 936 922 c 0,18,19 - 1152 922 1152 922 1258 816 c 128,-1,20 - 1364 710 1364 710 1364 492 c 2,21,-1 - 1364 0 l 1,22,-1 - 1108 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10061 -Encoding: 1036 1036 392 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 119<1185 1274> 1393 41<256 522 981 1290> 1495 403 -VStem: 256 266<0 571 877 1434> 588 371 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1276 246 2 -Refer: 406 1050 N 1 0 0 1 82 0 3 -Validated: 1 -EndChar - -StartChar: uni040D -Encoding: 1037 1037 393 -Width: 1509 -VWidth: 0 -Flags: W -HStem: 0 43<256 522 1155 1421> 1393 41<256 522 1155 1421> 1495 403 -VStem: 256 266<0 92 401 1434> 557 371 1155 266<0 1030 1341 1434> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1282 246 2 -Refer: 404 1048 N 1 0 0 1 82 0 3 -Validated: 1 -EndChar - -StartChar: afii10062 -Encoding: 1038 1038 394 -Width: 1224 -VWidth: 0 -Flags: W -HStem: -20 102<366 513> 1393 41<133 369 997 1257> 1434 137<572 817> -VStem: 463 78<1610 1632> 848 78<1610 1632> -LayerCount: 2 -Fore -Refer: 1076 57420 S 1 0 0 1 1282 164 2 -Refer: 415 1059 N 1 0 0 1 51 0 3 -Validated: 1 -EndChar - -StartChar: afii10145 -Encoding: 1039 1039 395 -Width: 1173 -VWidth: 0 -Flags: W -HStem: 0 102<358 487 672 801> 1393 41G<92 358 801 1067> -VStem: 92 266<102 1434> 530 98<-315 -38> 801 266<102 1434> -CounterMasks: 1 38 -AnchorPoint: "top" 565 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -92 0 m 1,0,-1 - 92 1434 l 1,1,-1 - 358 1434 l 1,2,-1 - 358 102 l 1,3,-1 - 801 102 l 1,4,-1 - 801 1434 l 1,5,-1 - 1067 1434 l 1,6,-1 - 1067 0 l 1,7,-1 - 694 0 l 1,8,9 - 691 -3 691 -3 687 -10 c 128,-1,10 - 683 -17 683 -17 671.5 -44 c 128,-1,11 - 660 -71 660 -71 651.5 -103.5 c 128,-1,12 - 643 -136 643 -136 636 -193 c 128,-1,13 - 629 -250 629 -250 629 -315 c 1,14,-1 - 530 -315 l 1,15,16 - 530 -211 530 -211 513.5 -132.5 c 128,-1,17 - 497 -54 497 -54 481 -27 c 2,18,-1 - 465 0 l 1,19,-1 - 92 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10017 -Encoding: 1040 1040 396 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> -AnchorPoint: "top" 643 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10018 -Encoding: 1041 1041 397 -Width: 1116 -VWidth: 0 -Flags: W -HStem: 0 102<440 642> 799 102<440 643> 1331 102<440 858> -VStem: 174 266<102 799 901 1331> 772 266<260 638> -AnchorPoint: "top" 604 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1038 457 m 0,0,1 - 1038 393 1038 393 1022.5 330.5 c 128,-1,2 - 1007 268 1007 268 971.5 207.5 c 128,-1,3 - 936 147 936 147 884.5 101.5 c 128,-1,4 - 833 56 833 56 755.5 28 c 128,-1,5 - 678 0 678 0 584 0 c 2,6,-1 - 174 0 l 1,7,-1 - 174 1434 l 1,8,-1 - 858 1434 l 1,9,-1 - 858 1331 l 1,10,-1 - 440 1331 l 1,11,-1 - 440 901 l 1,12,-1 - 580 901 l 2,13,14 - 681 901 681 901 769 861 c 128,-1,15 - 857 821 857 821 915 757 c 128,-1,16 - 973 693 973 693 1005.5 614.5 c 128,-1,17 - 1038 536 1038 536 1038 457 c 0,0,1 -440 799 m 1,18,-1 - 440 102 l 1,19,-1 - 522 102 l 2,20,21 - 584 102 584 102 634 137 c 128,-1,22 - 684 172 684 172 713 226.5 c 128,-1,23 - 742 281 742 281 757 340.5 c 128,-1,24 - 772 400 772 400 772 457 c 0,25,26 - 772 534 772 534 747 609.5 c 128,-1,27 - 722 685 722 685 663 742 c 128,-1,28 - 604 799 604 799 522 799 c 2,29,-1 - 440 799 l 1,18,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10019 -Encoding: 1042 1042 398 -Width: 1116 -VWidth: 0 -Flags: W -HStem: 0 102<440 656> 727 102<440 574> 1331 102<440 601> -VStem: 174 266<102 727 829 1331> 686 266<944 1243> 772 266<216 579> -AnchorPoint: "top" 410 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 28 66 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10020 -Encoding: 1043 1043 399 -Width: 1038 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440> 1331 102<440 1001> -VStem: 174 266<0 1331> -AnchorPoint: "top" 604 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 0 m 5,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 1001 1434 l 1,3,-1 - 1001 1331 l 1,4,-1 - 440 1331 l 1,5,-1 - 440 0 l 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10021 -Encoding: 1044 1044 400 -Width: 1310 -VWidth: 0 -Flags: W -HStem: -141 244<66 202 1024 1178> 0 102<391 758> 1331 102<440 479 673 758 1024 1067> -VStem: 66 215<-141 0> 479 197<1016 1331> 758 266<102 1331> 963 215<-141 0> -AnchorPoint: "top" 748 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 1434 m 1,0,-1 - 1067 1434 l 1,1,-1 - 1067 1331 l 1,2,-1 - 1024 1331 l 1,3,-1 - 1024 102 l 1,4,-1 - 1178 102 l 1,5,-1 - 1178 -141 l 1,6,-1 - 963 -141 l 1,7,-1 - 963 0 l 1,8,-1 - 281 0 l 1,9,-1 - 281 -141 l 1,10,-1 - 66 -141 l 1,11,-1 - 66 102 l 1,12,-1 - 184 102 l 1,13,14 - 217 173 217 173 252 271.5 c 128,-1,15 - 287 370 287 370 332.5 524.5 c 128,-1,16 - 378 679 378 679 417.5 890.5 c 128,-1,17 - 457 1102 457 1102 479 1331 c 1,18,-1 - 440 1331 l 1,19,-1 - 440 1434 l 1,0,-1 -758 1331 m 1,20,-1 - 676 1331 l 1,21,22 - 656 1125 656 1125 618.5 922 c 128,-1,23 - 581 719 581 719 537 559 c 128,-1,24 - 493 399 493 399 458.5 293 c 128,-1,25 - 424 187 424 187 391 102 c 1,26,-1 - 758 102 l 1,27,-1 - 758 1331 l 1,20,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10022 -Encoding: 1045 1045 401 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> -VStem: 174 266<102 799 901 1331> -AnchorPoint: "top" 522 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10024 -Encoding: 1046 1046 402 -Width: 1560 -VWidth: 0 -Flags: W -HStem: 0 43G<86 352 676 940 1264 1530> 1331 102<106 178 1438 1509> -VStem: 676 264<0 635 825 1434> -AnchorPoint: "top" 811 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -940 825 m 1,0,1 - 965 860 965 860 995 926.5 c 128,-1,2 - 1025 993 1025 993 1050.5 1056.5 c 128,-1,3 - 1076 1120 1076 1120 1118.5 1190.5 c 128,-1,4 - 1161 1261 1161 1261 1209.5 1313 c 128,-1,5 - 1258 1365 1258 1365 1336 1399.5 c 128,-1,6 - 1414 1434 1414 1434 1509 1434 c 1,7,-1 - 1509 1331 l 1,8,9 - 1462 1331 1462 1331 1419.5 1283.5 c 128,-1,10 - 1377 1236 1377 1236 1338 1160 c 128,-1,11 - 1299 1084 1299 1084 1258.5 1003 c 128,-1,12 - 1218 922 1218 922 1158 841.5 c 128,-1,13 - 1098 761 1098 761 1030 717 c 1,14,15 - 1119 658 1119 658 1215 544.5 c 128,-1,16 - 1311 431 1311 431 1377.5 320 c 128,-1,17 - 1444 209 1444 209 1487 118 c 128,-1,18 - 1530 27 1530 27 1530 0 c 1,19,-1 - 1264 0 l 1,20,21 - 1264 23 1264 23 1216.5 146.5 c 128,-1,22 - 1169 270 1169 270 1089 422 c 128,-1,23 - 1009 574 1009 574 940 635 c 1,24,-1 - 940 0 l 1,25,-1 - 676 0 l 1,26,-1 - 676 635 l 1,27,28 - 607 574 607 574 527 422 c 128,-1,29 - 447 270 447 270 399.5 146.5 c 128,-1,30 - 352 23 352 23 352 0 c 1,31,-1 - 86 0 l 1,32,33 - 86 27 86 27 129 118 c 128,-1,34 - 172 209 172 209 238.5 320 c 128,-1,35 - 305 431 305 431 401 544.5 c 128,-1,36 - 497 658 497 658 586 717 c 1,37,38 - 518 761 518 761 458 841.5 c 128,-1,39 - 398 922 398 922 357 1003 c 128,-1,40 - 316 1084 316 1084 277 1160 c 128,-1,41 - 238 1236 238 1236 195.5 1283.5 c 128,-1,42 - 153 1331 153 1331 106 1331 c 1,43,-1 - 106 1434 l 1,44,45 - 201 1434 201 1434 279 1399.5 c 128,-1,46 - 357 1365 357 1365 406 1313 c 128,-1,47 - 455 1261 455 1261 497.5 1190.5 c 128,-1,48 - 540 1120 540 1120 565.5 1056.5 c 128,-1,49 - 591 993 591 993 621 926 c 128,-1,50 - 651 859 651 859 676 825 c 1,51,-1 - 676 1434 l 1,52,-1 - 940 1434 l 1,53,-1 - 940 825 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10025 -Encoding: 1047 1047 403 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -20 102<356 594> 799 102<373 549> 1352 102<359 598> -VStem: 659 266<1001 1283> 721 266<268 622> -AnchorPoint: "top" 516 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -270 295 m 1,0,1 - 294 185 294 185 347 133.5 c 128,-1,2 - 400 82 400 82 500 82 c 0,3,4 - 549 82 549 82 592.5 120.5 c 128,-1,5 - 636 159 636 159 663 215.5 c 128,-1,6 - 690 272 690 272 705.5 332 c 128,-1,7 - 721 392 721 392 721 440 c 0,8,9 - 721 472 721 472 713.5 509.5 c 128,-1,10 - 706 547 706 547 691.5 588 c 128,-1,11 - 677 629 677 629 651.5 666 c 128,-1,12 - 626 703 626 703 593.5 733 c 128,-1,13 - 561 763 561 763 514.5 781 c 128,-1,14 - 468 799 468 799 414 799 c 2,15,-1 - 373 799 l 1,16,-1 - 373 901 l 1,17,18 - 439 901 439 901 490.5 917 c 128,-1,19 - 542 933 542 933 573 957.5 c 128,-1,20 - 604 982 604 982 624 1014.5 c 128,-1,21 - 644 1047 644 1047 651.5 1077 c 128,-1,22 - 659 1107 659 1107 659 1137 c 0,23,24 - 659 1227 659 1227 616 1289.5 c 128,-1,25 - 573 1352 573 1352 516 1352 c 0,26,27 - 461 1352 461 1352 422 1341 c 128,-1,28 - 383 1330 383 1330 358 1307.5 c 128,-1,29 - 333 1285 333 1285 319 1259 c 128,-1,30 - 305 1233 305 1233 293 1194 c 1,31,-1 - 129 1239 l 1,32,33 - 185 1343 185 1343 286 1398.5 c 128,-1,34 - 387 1454 387 1454 498 1454 c 0,35,36 - 692 1454 692 1454 809 1360.5 c 128,-1,37 - 926 1267 926 1267 926 1137 c 0,38,39 - 926 1047 926 1047 878 970.5 c 128,-1,40 - 830 894 830 894 725 850 c 1,41,42 - 796 817 796 817 849.5 765 c 128,-1,43 - 903 713 903 713 931.5 655.5 c 128,-1,44 - 960 598 960 598 973.5 544 c 128,-1,45 - 987 490 987 490 987 440 c 0,46,47 - 987 388 987 388 969.5 329 c 128,-1,48 - 952 270 952 270 911.5 207.5 c 128,-1,49 - 871 145 871 145 814 94.5 c 128,-1,50 - 757 44 757 44 669.5 12 c 128,-1,51 - 582 -20 582 -20 479 -20 c 0,52,53 - 182 -20 182 -20 82 244 c 1,54,-1 - 270 295 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10026 -Encoding: 1048 1048 404 -Width: 1509 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440 1073 1339> 1393 41G<174 440 1073 1339> -VStem: 174 266<0 92 401 1434> 1073 266<0 1030 1341 1434> -AnchorPoint: "top" 745 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 440 1434 l 1,3,-1 - 440 401 l 1,4,-1 - 1073 1341 l 1,5,-1 - 1073 1434 l 1,6,-1 - 1339 1434 l 1,7,-1 - 1339 0 l 1,8,-1 - 1073 0 l 1,9,-1 - 1073 1030 l 1,10,-1 - 440 92 l 1,11,-1 - 440 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10027 -Encoding: 1049 1049 405 -Width: 1509 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 1073 1339> 1393 41<174 440 1073 1339> 1434 137<633 878> -VStem: 174 266<0 92 401 1434> 524 78<1610 1632> 909 78<1610 1632> 1073 266<0 1030 1341 1434> -LayerCount: 2 -Fore -Refer: 1076 57420 S 1 0 0 1 1343 164 2 -Refer: 404 1048 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10028 -Encoding: 1050 1050 406 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 119<1103 1192> 1393 41G<174 440 899 1208> -VStem: 174 266<0 571 877 1434> -AnchorPoint: "top" 606 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 0 m 5,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 440 1434 l 1,3,-1 - 440 877 l 1,4,-1 - 936 1434 l 1,5,-1 - 1208 1434 l 1,6,-1 - 653 813 l 1,7,8 - 733 792 733 792 793.5 742.5 c 128,-1,9 - 854 693 854 693 889.5 630.5 c 128,-1,10 - 925 568 925 568 952.5 497 c 128,-1,11 - 980 426 980 426 1001.5 359.5 c 128,-1,12 - 1023 293 1023 293 1046.5 239 c 128,-1,13 - 1070 185 1070 185 1106.5 152 c 128,-1,14 - 1143 119 1143 119 1192 119 c 1,15,-1 - 1192 0 l 1,16,17 - 1089 0 1089 0 1007 35.5 c 128,-1,18 - 925 71 925 71 874 128.5 c 128,-1,19 - 823 186 823 186 784 256 c 128,-1,20 - 745 326 745 326 718.5 399.5 c 128,-1,21 - 692 473 692 473 669.5 535 c 128,-1,22 - 647 597 647 597 619 643.5 c 128,-1,23 - 591 690 591 690 557 702 c 1,24,-1 - 440 571 l 1,25,-1 - 440 0 l 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10029 -Encoding: 1051 1051 407 -Width: 1413 -VWidth: 0 -Flags: W -HStem: -20 102<129 347> 0 43G<979 1245> 1331 102<649 979> -VStem: 383 266<112 1331> 979 266<0 1331> -AnchorPoint: "top" 815 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -979 0 m 1,0,-1 - 979 1331 l 1,1,-1 - 649 1331 l 1,2,-1 - 649 260 l 2,3,4 - 649 -20 649 -20 242 -20 c 0,5,6 - 112 -20 112 -20 35 72 c 1,7,-1 - 164 133 l 1,8,9 - 200 82 200 82 272 82 c 0,10,11 - 332 82 332 82 357.5 140.5 c 128,-1,12 - 383 199 383 199 383 328 c 2,13,-1 - 383 1434 l 1,14,-1 - 1245 1434 l 1,15,-1 - 1245 0 l 1,16,-1 - 979 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10030 -Encoding: 1052 1052 408 -Width: 1626 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 1190 1456> 1393 41<174 459 1171 1456> -VStem: 174 266<0 1047> 1190 266<0 1047> -AnchorPoint: "top" 733 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 40 77 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10031 -Encoding: 1053 1053 409 -Width: 1351 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 915 1182> 717 102<440 915> 1393 41<174 440 915 1182> -VStem: 174 266<0 717 819 1434> 915 266<0 717 819 1434> -AnchorPoint: "top" 680 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 35 72 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10032 -Encoding: 1054 1054 410 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> -VStem: 102 266<424 1012> 1071 266<414 1009> -AnchorPoint: "top" 666 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10033 -Encoding: 1055 1055 411 -Width: 1318 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440 883 1149> 1331 102<440 883> -VStem: 174 266<0 1331> 883 266<0 1331> -AnchorPoint: "top" 657 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -174 0 m 9,0,-1 - 174 1434 l 1,1,-1 - 1149 1434 l 1,2,-1 - 1149 0 l 1,3,-1 - 883 0 l 1,4,-1 - 883 1331 l 1,5,-1 - 440 1331 l 1,6,-1 - 440 0 l 1,7,-1 - 174 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10034 -Encoding: 1056 1056 412 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 43<174 440> 655 102<440 665> 1331 102<440 665> -VStem: 174 266<0 655 758 1331> 772 266<872 1217> -AnchorPoint: "top" 479 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 29 80 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10035 -Encoding: 1057 1057 413 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<614 939> 1352 102<571 902> -VStem: 102 266<441 1012> -AnchorPoint: "top" 676 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 30 67 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10036 -Encoding: 1058 1058 414 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 43<508 774> 1331 102<41 508 774 1239> -VStem: 508 266<0 1331> -AnchorPoint: "top" 639 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 46 84 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10037 -Encoding: 1059 1059 415 -Width: 1224 -VWidth: 0 -Flags: W -HStem: -20 102<314 462> 1393 41G<82 318 946 1206> -AnchorPoint: "top" 643 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -961 1434 m 1,0,-1 - 1206 1434 l 1,1,-1 - 784 279 l 2,2,3 - 751 189 751 189 709 129 c 128,-1,4 - 667 69 667 69 613 37 c 128,-1,5 - 559 5 559 5 501.5 -7.5 c 128,-1,6 - 444 -20 444 -20 367 -20 c 0,7,8 - 307 -20 307 -20 241 17 c 128,-1,9 - 175 54 175 54 119 115 c 1,10,-1 - 270 180 l 1,11,12 - 317 115 317 115 341 98.5 c 128,-1,13 - 365 82 365 82 395 82 c 0,14,15 - 430 82 430 82 459 119.5 c 128,-1,16 - 488 157 488 157 520 231 c 1,17,-1 - 82 1434 l 1,18,-1 - 303 1434 l 1,19,-1 - 631 530 l 1,20,-1 - 961 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10038 -Encoding: 1060 1060 416 -Width: 1435 -VWidth: 0 -Flags: W -HStem: 0 43G<588 852> 1133 109<508 588> 1393 41G<588 852> -VStem: 102 266<523 916> 588 264<0 204 309 1122 1234 1434> 1071 266<513 914> -CounterMasks: 1 1c -AnchorPoint: "top" 723 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -588 307 m 1,0,-1 - 588 1133 l 1,1,2 - 369 1065 369 1065 369 717 c 0,3,4 - 369 558 369 558 425 452.5 c 128,-1,5 - 481 347 481 347 588 307 c 1,0,-1 -588 1241 m 1,6,-1 - 588 1434 l 1,7,-1 - 852 1434 l 1,8,-1 - 852 1233 l 1,9,10 - 1061 1190 1061 1190 1199 1051.5 c 128,-1,11 - 1337 913 1337 913 1337 717 c 0,12,13 - 1337 515 1337 515 1200 377 c 128,-1,14 - 1063 239 1063 239 852 199 c 1,15,-1 - 852 0 l 1,16,-1 - 588 0 l 1,17,-1 - 588 197 l 1,18,19 - 495 215 495 215 409.5 259 c 128,-1,20 - 324 303 324 303 254.5 368 c 128,-1,21 - 185 433 185 433 143.5 524 c 128,-1,22 - 102 615 102 615 102 717 c 0,23,24 - 102 822 102 822 143 914.5 c 128,-1,25 - 184 1007 184 1007 253 1072.5 c 128,-1,26 - 322 1138 322 1138 408 1181.5 c 128,-1,27 - 494 1225 494 1225 588 1241 c 1,6,-1 -852 1122 m 1,28,-1 - 852 309 l 1,29,30 - 957 349 957 349 1014 455 c 128,-1,31 - 1071 561 1071 561 1071 717 c 128,-1,32 - 1071 873 1071 873 1016 977 c 128,-1,33 - 961 1081 961 1081 852 1122 c 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10039 -Encoding: 1061 1061 417 -Width: 1228 -VWidth: 0 -Flags: W -HStem: 0 43<86 289 800 1079> 1393 41<90 369 794 999> -AnchorPoint: "top" 530 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 49 88 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10040 -Encoding: 1062 1062 418 -Width: 1413 -VWidth: 0 -Flags: W -HStem: 0 102<440 883> 1393 41G<174 440 883 1149> -VStem: 174 266<102 1434> 883 266<102 1434> 1182 98<-315 -38> -AnchorPoint: "top" 647 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -174 0 m 1,0,-1 - 174 1434 l 1,1,-1 - 440 1434 l 1,2,-1 - 440 102 l 1,3,-1 - 883 102 l 1,4,-1 - 883 1434 l 1,5,-1 - 1149 1434 l 1,6,-1 - 1149 102 l 1,7,-1 - 1280 102 l 1,8,-1 - 1280 -315 l 1,9,-1 - 1182 -315 l 1,10,11 - 1182 -250 1182 -250 1175 -193.5 c 128,-1,12 - 1168 -137 1168 -137 1158.5 -103 c 128,-1,13 - 1149 -69 1149 -69 1139.5 -44.5 c 128,-1,14 - 1130 -20 1130 -20 1123 -10 c 2,15,-1 - 1116 0 l 1,16,-1 - 174 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10041 -Encoding: 1063 1063 419 -Width: 1206 -VWidth: 0 -Flags: W -HStem: 0 43G<770 1036> 522 102<481 725> 1393 41G<123 389 770 1036> -VStem: 123 266<791 1434> 770 266<0 573 670 1434> -AnchorPoint: "top" 565 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -770 721 m 1,0,-1 - 770 1434 l 1,1,-1 - 1036 1434 l 1,2,-1 - 1036 0 l 1,3,-1 - 770 0 l 1,4,-1 - 770 573 l 1,5,6 - 700 522 700 522 571 522 c 0,7,8 - 350 522 350 522 236.5 658 c 128,-1,9 - 123 794 123 794 123 1085 c 2,10,-1 - 123 1434 l 1,11,-1 - 389 1434 l 1,12,-1 - 389 1110 l 2,13,14 - 389 983 389 983 400.5 892 c 128,-1,15 - 412 801 412 801 430 750 c 128,-1,16 - 448 699 448 699 478 670 c 128,-1,17 - 508 641 508 641 535.5 633 c 128,-1,18 - 563 625 563 625 602 625 c 0,19,20 - 710 625 710 625 770 721 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10042 -Encoding: 1064 1064 420 -Width: 1789 -VWidth: 0 -Flags: W -HStem: 0 102<440 764 1030 1354> 1393 41G<174 440 764 1030 1354 1620> -VStem: 174 266<102 1434> 764 266<102 1434> 1354 266<102 1434> -CounterMasks: 1 38 -AnchorPoint: "top" 905 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1620 1434 m 1,0,-1 - 1620 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 440 1434 l 1,4,-1 - 440 102 l 1,5,-1 - 764 102 l 1,6,-1 - 764 1434 l 1,7,-1 - 1030 1434 l 1,8,-1 - 1030 102 l 1,9,-1 - 1354 102 l 1,10,-1 - 1354 1434 l 1,11,-1 - 1620 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10043 -Encoding: 1065 1065 421 -Width: 1884 -VWidth: 0 -Flags: W -HStem: 0 102<440 764 1030 1354> 1393 41G<174 440 764 1030 1354 1620> -VStem: 174 266<102 1434> 764 266<102 1434> 1354 266<102 1434> 1653 98<-315 -38> -AnchorPoint: "top" 905 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1587 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 440 1434 l 1,3,-1 - 440 102 l 1,4,-1 - 764 102 l 1,5,-1 - 764 1434 l 1,6,-1 - 1030 1434 l 1,7,-1 - 1030 102 l 1,8,-1 - 1354 102 l 1,9,-1 - 1354 1434 l 1,10,-1 - 1620 1434 l 1,11,-1 - 1620 102 l 1,12,-1 - 1751 102 l 1,13,-1 - 1751 -315 l 1,14,-1 - 1653 -315 l 1,15,16 - 1653 -250 1653 -250 1646 -193.5 c 128,-1,17 - 1639 -137 1639 -137 1629.5 -103 c 128,-1,18 - 1620 -69 1620 -69 1610.5 -44.5 c 128,-1,19 - 1601 -20 1601 -20 1594 -10 c 2,20,-1 - 1587 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10044 -Encoding: 1066 1066 422 -Width: 1271 -VWidth: 0 -Flags: W -HStem: 0 102<623 824> 799 102<623 826> 1331 102<41 356> -VStem: 356 266<102 799 901 1331> 954 266<260 638> -AnchorPoint: "top" 489 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1221 457 m 0,0,1 - 1221 393 1221 393 1205 330.5 c 128,-1,2 - 1189 268 1189 268 1153.5 207.5 c 128,-1,3 - 1118 147 1118 147 1066.5 101.5 c 128,-1,4 - 1015 56 1015 56 937.5 28 c 128,-1,5 - 860 0 860 0 766 0 c 2,6,-1 - 356 0 l 1,7,-1 - 356 1331 l 1,8,-1 - 41 1331 l 1,9,-1 - 41 1434 l 1,10,-1 - 623 1434 l 1,11,-1 - 623 901 l 1,12,-1 - 762 901 l 2,13,14 - 863 901 863 901 951.5 861 c 128,-1,15 - 1040 821 1040 821 1097.5 757 c 128,-1,16 - 1155 693 1155 693 1188 614.5 c 128,-1,17 - 1221 536 1221 536 1221 457 c 0,0,1 -623 799 m 1,18,-1 - 623 102 l 1,19,-1 - 705 102 l 2,20,21 - 767 102 767 102 817 137 c 128,-1,22 - 867 172 867 172 895.5 226.5 c 128,-1,23 - 924 281 924 281 939 340.5 c 128,-1,24 - 954 400 954 400 954 457 c 0,25,26 - 954 513 954 513 939 571 c 128,-1,27 - 924 629 924 629 895.5 681 c 128,-1,28 - 867 733 867 733 817 766 c 128,-1,29 - 767 799 767 799 705 799 c 2,30,-1 - 623 799 l 1,18,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10045 -Encoding: 1067 1067 423 -Width: 1591 -VWidth: 0 -Flags: W -HStem: 0 43<1155 1421> 0 102<440 642> 799 102<440 643> 1393 41<174 440 1155 1421> -VStem: 174 266<102 799 901 1434> 772 266<260 638> 1155 266<0 1434> -AnchorPoint: "top" 823 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 424 1068 N 1 0 0 1 0 0 2 -Refer: 36 73 N 1 0 0 1 983 0 2 -Validated: 1 -EndChar - -StartChar: afii10046 -Encoding: 1068 1068 424 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 102<440 642> 799 102<440 643> 1393 41G<174 440> -VStem: 174 266<102 799 901 1434> 772 266<260 638> -AnchorPoint: "top" 506 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 799 m 1,0,-1 - 440 102 l 1,1,-1 - 522 102 l 2,2,3 - 584 102 584 102 634 137 c 128,-1,4 - 684 172 684 172 713 226.5 c 128,-1,5 - 742 281 742 281 757 340.5 c 128,-1,6 - 772 400 772 400 772 457 c 0,7,8 - 772 534 772 534 747 609.5 c 128,-1,9 - 722 685 722 685 663 742 c 128,-1,10 - 604 799 604 799 522 799 c 2,11,-1 - 440 799 l 1,0,-1 -1038 457 m 0,12,13 - 1038 393 1038 393 1022.5 330.5 c 128,-1,14 - 1007 268 1007 268 971.5 207.5 c 128,-1,15 - 936 147 936 147 884.5 101.5 c 128,-1,16 - 833 56 833 56 755.5 28 c 128,-1,17 - 678 0 678 0 584 0 c 2,18,-1 - 174 0 l 1,19,-1 - 174 1434 l 1,20,-1 - 440 1434 l 1,21,-1 - 440 901 l 1,22,-1 - 580 901 l 2,23,24 - 681 901 681 901 769 861 c 128,-1,25 - 857 821 857 821 915 757 c 128,-1,26 - 973 693 973 693 1005.5 614.5 c 128,-1,27 - 1038 536 1038 536 1038 457 c 0,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10047 -Encoding: 1069 1069 425 -Width: 1347 -VWidth: 0 -Flags: W -HStem: -20 102<422 738> 713 102<569 981> 1352 102<461 787> -VStem: 983 266<425 713 815 1026> -AnchorPoint: "top" 635 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -102 209 m 1,0,-1 - 268 285 l 1,1,2 - 300 236 300 236 328.5 203 c 128,-1,3 - 357 170 357 170 397.5 140.5 c 128,-1,4 - 438 111 438 111 490.5 96.5 c 128,-1,5 - 543 82 543 82 610 82 c 0,6,7 - 655 82 655 82 703.5 104 c 128,-1,8 - 752 126 752 126 802 175.5 c 128,-1,9 - 852 225 852 225 892 296 c 128,-1,10 - 932 367 932 367 957 475.5 c 128,-1,11 - 982 584 982 584 983 713 c 1,12,-1 - 569 713 l 1,13,-1 - 569 815 l 1,14,-1 - 981 815 l 1,15,16 - 966 1078 966 1078 876 1215 c 128,-1,17 - 786 1352 786 1352 649 1352 c 0,18,19 - 579 1352 579 1352 524.5 1336.5 c 128,-1,20 - 470 1321 470 1321 429 1289 c 128,-1,21 - 388 1257 388 1257 363.5 1229.5 c 128,-1,22 - 339 1202 339 1202 307 1157 c 1,23,-1 - 109 1245 l 1,24,25 - 161 1309 161 1309 221 1352 c 128,-1,26 - 281 1395 281 1395 383 1424.5 c 128,-1,27 - 485 1454 485 1454 618 1454 c 0,28,29 - 749 1454 749 1454 860.5 1410 c 128,-1,30 - 972 1366 972 1366 1060 1278.5 c 128,-1,31 - 1148 1191 1148 1191 1198.5 1047 c 128,-1,32 - 1249 903 1249 903 1249 717 c 0,33,34 - 1249 568 1249 568 1212.5 444.5 c 128,-1,35 - 1176 321 1176 321 1113 236 c 128,-1,36 - 1050 151 1050 151 964.5 92.5 c 128,-1,37 - 879 34 879 34 782.5 7 c 128,-1,38 - 686 -20 686 -20 580 -20 c 0,39,40 - 280 -20 280 -20 102 209 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10048 -Encoding: 1070 1070 426 -Width: 1814 -VWidth: 0 -Flags: W -HStem: -20 102<1011 1276> 0 43G<174 440> 713 102<440 563> 1352 102<988 1270> 1393 41G<174 440> -VStem: 174 266<0 713 815 1434> 563 266<413 713 815 1038> 1450 266<398 1033> -AnchorPoint: "top" 664 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1118 1352 m 0,0,1 - 978 1352 978 1352 903.5 1193.5 c 128,-1,2 - 829 1035 829 1035 829 717 c 0,3,4 - 829 553 829 553 853.5 428 c 128,-1,5 - 878 303 878 303 921.5 229 c 128,-1,6 - 965 155 965 155 1019.5 118.5 c 128,-1,7 - 1074 82 1074 82 1137 82 c 0,8,9 - 1290 82 1290 82 1370 240.5 c 128,-1,10 - 1450 399 1450 399 1450 717 c 0,11,12 - 1450 1048 1450 1048 1366.5 1200 c 128,-1,13 - 1283 1352 1283 1352 1118 1352 c 0,0,1 -567 815 m 1,14,15 - 577 944 577 944 611.5 1051 c 128,-1,16 - 646 1158 646 1158 697.5 1231.5 c 128,-1,17 - 749 1305 749 1305 815.5 1356 c 128,-1,18 - 882 1407 882 1407 955 1430.5 c 128,-1,19 - 1028 1454 1028 1454 1106 1454 c 0,20,21 - 1234 1454 1234 1454 1342.5 1410 c 128,-1,22 - 1451 1366 1451 1366 1535.5 1278.5 c 128,-1,23 - 1620 1191 1620 1191 1668 1047 c 128,-1,24 - 1716 903 1716 903 1716 717 c 0,25,26 - 1716 530 1716 530 1671 386.5 c 128,-1,27 - 1626 243 1626 243 1545.5 155.5 c 128,-1,28 - 1465 68 1465 68 1359 24 c 128,-1,29 - 1253 -20 1253 -20 1124 -20 c 0,30,31 - 1040 -20 1040 -20 961 6.5 c 128,-1,32 - 882 33 882 33 809.5 91.5 c 128,-1,33 - 737 150 737 150 683 234 c 128,-1,34 - 629 318 629 318 596.5 441.5 c 128,-1,35 - 564 565 564 565 563 713 c 1,36,-1 - 440 713 l 1,37,-1 - 440 0 l 1,38,-1 - 174 0 l 1,39,-1 - 174 1434 l 1,40,-1 - 440 1434 l 1,41,-1 - 440 815 l 1,42,-1 - 567 815 l 1,14,15 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10049 -Encoding: 1071 1071 427 -Width: 1228 -VWidth: 0 -Flags: W -HStem: 0 119<86 179> 655 102<656 793> 1331 102<568 793> -VStem: 195 266<873 1217> 793 266<0 655 758 1331> -AnchorPoint: "top" 672 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -793 1331 m 1,0,-1 - 700 1331 l 2,1,2 - 638 1331 638 1331 590 1304 c 128,-1,3 - 542 1277 542 1277 515 1233 c 128,-1,4 - 488 1189 488 1189 474.5 1141 c 128,-1,5 - 461 1093 461 1093 461 1044 c 128,-1,6 - 461 995 461 995 474.5 947 c 128,-1,7 - 488 899 488 899 515 855.5 c 128,-1,8 - 542 812 542 812 590 785 c 128,-1,9 - 638 758 638 758 700 758 c 2,10,-1 - 793 758 l 1,11,-1 - 793 1331 l 1,0,-1 -469 680 m 1,12,13 - 376 710 376 710 311.5 773.5 c 128,-1,14 - 247 837 247 837 221 905.5 c 128,-1,15 - 195 974 195 974 195 1044 c 0,16,17 - 195 1096 195 1096 209 1148 c 128,-1,18 - 223 1200 223 1200 257 1252 c 128,-1,19 - 291 1304 291 1304 340.5 1344 c 128,-1,20 - 390 1384 390 1384 467.5 1409 c 128,-1,21 - 545 1434 545 1434 639 1434 c 2,22,-1 - 1059 1434 l 1,23,-1 - 1059 0 l 1,24,-1 - 793 0 l 1,25,-1 - 793 655 l 1,26,-1 - 680 655 l 1,27,28 - 654 622 654 622 628 565 c 128,-1,29 - 602 508 602 508 580 449.5 c 128,-1,30 - 558 391 558 391 529.5 325.5 c 128,-1,31 - 501 260 501 260 462.5 203.5 c 128,-1,32 - 424 147 424 147 374 100.5 c 128,-1,33 - 324 54 324 54 250.5 27 c 128,-1,34 - 177 0 177 0 86 0 c 1,35,-1 - 86 119 l 1,36,37 - 136 119 136 119 177 156 c 128,-1,38 - 218 193 218 193 250.5 257.5 c 128,-1,39 - 283 322 283 322 312 391.5 c 128,-1,40 - 341 461 341 461 382.5 543 c 128,-1,41 - 424 625 424 625 469 680 c 1,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10065 -Encoding: 1072 1072 428 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> -VStem: 94 256<132 467> 602 256<87 518 616 771> -AnchorPoint: "top" 463 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10066 -Encoding: 1073 1073 429 -Width: 1030 -VWidth: 0 -Flags: W -HStem: -20 102<432 597> 819 102<400 600> 1202 102<429 648> -VStem: 90 256<261 753> 688 256<240 685> 758 68<1360 1376> -AnchorPoint: "top" 539 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -825 1370 m 1,0,1 - 824 1362 824 1362 822 1349 c 128,-1,2 - 820 1336 820 1336 808.5 1303 c 128,-1,3 - 797 1270 797 1270 780 1245 c 128,-1,4 - 763 1220 763 1220 729 1199 c 128,-1,5 - 695 1178 695 1178 651 1178 c 0,6,7 - 622 1178 622 1178 582 1190 c 128,-1,8 - 542 1202 542 1202 506 1202 c 0,9,10 - 441 1202 441 1202 406 1132 c 128,-1,11 - 371 1062 371 1062 358 899 c 1,12,13 - 435 922 435 922 500 922 c 0,14,15 - 618 922 618 922 705.5 885 c 128,-1,16 - 793 848 793 848 844 782 c 128,-1,17 - 895 716 895 716 919.5 633.5 c 128,-1,18 - 944 551 944 551 944 451 c 0,19,20 - 944 323 944 323 889.5 216 c 128,-1,21 - 835 109 835 109 732.5 44.5 c 128,-1,22 - 630 -20 630 -20 500 -20 c 0,23,24 - 450 -20 450 -20 402 -9 c 128,-1,25 - 354 2 354 2 295 40 c 128,-1,26 - 236 78 236 78 192.5 139 c 128,-1,27 - 149 200 149 200 119.5 311 c 128,-1,28 - 90 422 90 422 90 569 c 0,29,30 - 90 771 90 771 143 939 c 128,-1,31 - 196 1107 196 1107 292 1206 c 128,-1,32 - 388 1305 388 1305 506 1305 c 2,33,-1 - 557 1305 l 2,34,35 - 618 1305 618 1305 679 1331.5 c 128,-1,36 - 740 1358 740 1358 758 1397 c 1,37,-1 - 825 1370 l 1,0,1 -346 504 m 2,38,39 - 346 82 346 82 530 82 c 0,40,41 - 572 82 572 82 609.5 138 c 128,-1,42 - 647 194 647 194 667.5 279 c 128,-1,43 - 688 364 688 364 688 451 c 0,44,45 - 688 539 688 539 668 623 c 128,-1,46 - 648 707 648 707 611 763 c 128,-1,47 - 574 819 574 819 530 819 c 0,48,49 - 452 819 452 819 399 773.5 c 128,-1,50 - 346 728 346 728 346 629 c 2,51,-1 - 346 504 l 2,38,39 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10067 -Encoding: 1074 1074 430 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<379 562> 440 102<379 481> 799 102<379 485> -VStem: 123 256<102 440 543 799> 518 256<578 765> 604 256<143 395> -AnchorPoint: "top" 438 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -379 440 m 1,0,-1 - 379 102 l 1,1,-1 - 414 102 l 2,2,3 - 514 102 514 102 559 140.5 c 128,-1,4 - 604 179 604 179 604 264 c 0,5,6 - 604 321 604 321 590.5 356.5 c 128,-1,7 - 577 392 577 392 546 410 c 128,-1,8 - 515 428 515 428 477.5 434 c 128,-1,9 - 440 440 440 440 379 440 c 1,0,-1 -631 508 m 1,10,11 - 741 489 741 489 800.5 415 c 128,-1,12 - 860 341 860 341 860 264 c 0,13,14 - 860 212 860 212 843 169 c 128,-1,15 - 826 126 826 126 785 86 c 128,-1,16 - 744 46 744 46 662.5 23 c 128,-1,17 - 581 0 581 0 465 0 c 2,18,-1 - 123 0 l 1,19,-1 - 123 901 l 1,20,-1 - 375 901 l 2,21,22 - 774 901 774 901 774 666 c 0,23,24 - 774 636 774 636 770 617 c 128,-1,25 - 766 598 766 598 752.5 576 c 128,-1,26 - 739 554 739 554 709 537.5 c 128,-1,27 - 679 521 679 521 631 508 c 1,10,11 -379 799 m 1,28,-1 - 379 543 l 1,29,30 - 404 543 404 543 433.5 553.5 c 128,-1,31 - 463 564 463 564 490.5 594 c 128,-1,32 - 518 624 518 624 518 666 c 0,33,34 - 518 735 518 735 473 767 c 128,-1,35 - 428 799 428 799 379 799 c 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10068 -Encoding: 1075 1075 431 -Width: 768 -VWidth: 0 -Flags: W -HStem: 0 43G<123 379> 799 102<379 715> -VStem: 123 256<0 799> -AnchorPoint: "top" 422 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -379 0 m 1,0,-1 - 123 0 l 1,1,-1 - 123 901 l 1,2,-1 - 715 901 l 1,3,-1 - 715 799 l 1,4,-1 - 379 799 l 1,5,-1 - 379 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10069 -Encoding: 1076 1076 432 -Width: 1189 -VWidth: 0 -Flags: W -HStem: -141 244<82 218 954 1108> 0 102<377 698> 799 102<332 416 573 698 954 991> -VStem: 82 215<-141 0> 416 164<613 799> 698 256<102 799> 893 215<-141 0> -AnchorPoint: "top" 618 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -332 901 m 1,0,-1 - 991 901 l 1,1,-1 - 991 799 l 1,2,-1 - 954 799 l 1,3,-1 - 954 102 l 1,4,-1 - 1108 102 l 1,5,-1 - 1108 -141 l 1,6,-1 - 893 -141 l 1,7,-1 - 893 0 l 1,8,-1 - 297 0 l 1,9,-1 - 297 -141 l 1,10,-1 - 82 -141 l 1,11,-1 - 82 102 l 1,12,-1 - 201 102 l 1,13,14 - 329 385 329 385 416 799 c 1,15,-1 - 332 799 l 1,16,-1 - 332 901 l 1,0,-1 -698 799 m 1,17,-1 - 580 799 l 1,18,19 - 497 412 497 412 377 102 c 1,20,-1 - 698 102 l 1,21,-1 - 698 799 l 1,17,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10070 -Encoding: 1077 1077 433 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> -VStem: 90 256<235 451 553 656> -AnchorPoint: "top" 502 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10072 -Encoding: 1078 1078 434 -Width: 1288 -VWidth: 0 -Flags: W -HStem: 0 43G<70 295 516 772 993 1219> 799 102<70 154 1134 1219> -VStem: 70 225<0 112> 516 256<0 371 522 901> 993 225<0 112> -CounterMasks: 1 38 -AnchorPoint: "top" 645 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -772 522 m 1,0,1 - 793 545 793 545 817 586.5 c 128,-1,2 - 841 628 841 628 859 667.5 c 128,-1,3 - 877 707 877 707 909 751 c 128,-1,4 - 941 795 941 795 978.5 827 c 128,-1,5 - 1016 859 1016 859 1078 880 c 128,-1,6 - 1140 901 1140 901 1219 901 c 1,7,-1 - 1219 799 l 1,8,9 - 1177 799 1177 799 1145.5 775.5 c 128,-1,10 - 1114 752 1114 752 1090.5 712 c 128,-1,11 - 1067 672 1067 672 1046 628.5 c 128,-1,12 - 1025 585 1025 585 992 535.5 c 128,-1,13 - 959 486 959 486 920 453 c 1,14,15 - 1035 344 1035 344 1127 196.5 c 128,-1,16 - 1219 49 1219 49 1219 0 c 1,17,-1 - 993 0 l 1,18,19 - 993 55 993 55 922.5 174 c 128,-1,20 - 852 293 852 293 772 371 c 1,21,-1 - 772 0 l 1,22,-1 - 516 0 l 1,23,-1 - 516 371 l 1,24,25 - 436 293 436 293 365.5 174 c 128,-1,26 - 295 55 295 55 295 0 c 1,27,-1 - 70 0 l 1,28,29 - 70 49 70 49 162 196.5 c 128,-1,30 - 254 344 254 344 369 453 c 1,31,32 - 330 486 330 486 297 535.5 c 128,-1,33 - 264 585 264 585 243 628.5 c 128,-1,34 - 222 672 222 672 198.5 712 c 128,-1,35 - 175 752 175 752 143.5 775.5 c 128,-1,36 - 112 799 112 799 70 799 c 1,37,-1 - 70 901 l 1,38,39 - 163 901 163 901 232 872.5 c 128,-1,40 - 301 844 301 844 342 797 c 128,-1,41 - 383 750 383 750 410 702.5 c 128,-1,42 - 437 655 437 655 464.5 601.5 c 128,-1,43 - 492 548 492 548 516 522 c 1,44,-1 - 516 901 l 1,45,-1 - 772 901 l 1,46,-1 - 772 522 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10073 -Encoding: 1079 1079 435 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<298 522> 451 102<295 471> 819 102<300 489> -VStem: 506 256<586 812> 555 256<108 400> -AnchorPoint: "top" 430 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -217 221 m 1,0,1 - 244 162 244 162 300.5 122 c 128,-1,2 - 357 82 357 82 432 82 c 0,3,4 - 489 82 489 82 522 120.5 c 128,-1,5 - 555 159 555 159 555 256 c 0,6,7 - 555 356 555 356 509.5 403.5 c 128,-1,8 - 464 451 464 451 367 451 c 2,9,-1 - 295 451 l 1,10,-1 - 295 553 l 1,11,-1 - 352 553 l 2,12,13 - 432 553 432 553 469 592.5 c 128,-1,14 - 506 632 506 632 506 694 c 0,15,16 - 506 819 506 819 432 819 c 0,17,18 - 348 819 348 819 312 787.5 c 128,-1,19 - 276 756 276 756 266 696 c 1,20,-1 - 100 735 l 1,21,22 - 128 814 128 814 204.5 868 c 128,-1,23 - 281 922 281 922 408 922 c 0,24,25 - 589 922 589 922 675.5 860.5 c 128,-1,26 - 762 799 762 799 762 694 c 0,27,28 - 762 647 762 647 728 597.5 c 128,-1,29 - 694 548 694 548 625 512 c 1,30,31 - 720 474 720 474 765.5 406.5 c 128,-1,32 - 811 339 811 339 811 256 c 0,33,34 - 811 127 811 127 713 53.5 c 128,-1,35 - 615 -20 615 -20 408 -20 c 0,36,37 - 287 -20 287 -20 194.5 40.5 c 128,-1,38 - 102 101 102 101 61 178 c 1,39,-1 - 217 221 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10074 -Encoding: 1080 1080 436 -Width: 1146 -VWidth: 0 -Flags: W -HStem: 0 43G<123 379 770 1026> 860 41G<123 379 770 1026> -VStem: 123 256<0 61 291 901> 770 256<0 604 836 901> -AnchorPoint: "top" 535 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 379 901 l 1,1,-1 - 379 291 l 1,2,-1 - 770 836 l 1,3,-1 - 770 901 l 1,4,-1 - 1026 901 l 1,5,-1 - 1026 0 l 1,6,-1 - 770 0 l 1,7,-1 - 770 604 l 1,8,-1 - 379 61 l 1,9,-1 - 379 0 l 1,10,-1 - 123 0 l 1,11,-1 - 123 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10075 -Encoding: 1081 1081 437 -Width: 1146 -VWidth: 0 -Flags: W -HStem: 0 43<123 379 770 1026> 860 41<123 379 770 1026> 1085 137<418 663> -VStem: 123 256<0 61 291 901> 309 78<1262 1283> 694 78<1262 1283> 770 256<0 604 836 901> -LayerCount: 2 -Fore -Refer: 1076 57420 S 1 0 0 1 1165 -184 2 -Refer: 436 1080 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10076 -Encoding: 1082 1082 438 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43<193 449 709 958> 860 41<193 449 656 922> -VStem: 193 256<0 371 627 901> -AnchorPoint: "top" 467 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 305 312 N 1 0 0 1 45 0 2 -Validated: 1 -EndChar - -StartChar: afii10077 -Encoding: 1083 1083 439 -Width: 1183 -VWidth: 0 -Flags: W -HStem: -20 102<155 375> 0 43G<807 1063> 799 102<666 807> -VStem: 410 256<110 799> 807 256<0 799> -AnchorPoint: "top" 688 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -807 0 m 1,0,-1 - 807 799 l 1,1,-1 - 666 799 l 1,2,-1 - 666 260 l 2,3,4 - 666 191 666 191 644 140 c 128,-1,5 - 622 89 622 89 586.5 58.5 c 128,-1,6 - 551 28 551 28 497.5 10 c 128,-1,7 - 444 -8 444 -8 390.5 -14 c 128,-1,8 - 337 -20 337 -20 268 -20 c 0,9,10 - 138 -20 138 -20 61 72 c 1,11,-1 - 190 133 l 1,12,13 - 226 82 226 82 299 82 c 0,14,15 - 359 82 359 82 384.5 140.5 c 128,-1,16 - 410 199 410 199 410 328 c 2,17,-1 - 410 901 l 1,18,-1 - 1063 901 l 1,19,-1 - 1063 0 l 1,20,-1 - 807 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10078 -Encoding: 1084 1084 440 -Width: 1361 -VWidth: 0 -Flags: W -HStem: 0 43G<123 379 636 728 985 1241> 860 41G<123 400 964 1241> -VStem: 123 256<0 543> 985 256<0 543> -AnchorPoint: "top" 688 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -657 0 m 1,0,-1 - 379 543 l 1,1,-1 - 379 0 l 1,2,-1 - 123 0 l 1,3,-1 - 123 901 l 1,4,-1 - 379 901 l 1,5,-1 - 682 311 l 1,6,-1 - 985 901 l 1,7,-1 - 1241 901 l 1,8,-1 - 1241 0 l 1,9,-1 - 985 0 l 1,10,-1 - 985 543 l 1,11,-1 - 707 0 l 1,12,-1 - 657 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10079 -Encoding: 1085 1085 441 -Width: 1054 -VWidth: 0 -Flags: W -HStem: 0 43G<123 379 678 934> 440 102<379 678> 860 41G<123 379 678 934> -VStem: 123 256<0 440 543 901> 678 256<0 440 543 901> -AnchorPoint: "top" 535 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 379 901 l 1,1,-1 - 379 543 l 1,2,-1 - 678 543 l 1,3,-1 - 678 901 l 1,4,-1 - 934 901 l 1,5,-1 - 934 0 l 1,6,-1 - 678 0 l 1,7,-1 - 678 440 l 1,8,-1 - 379 440 l 1,9,-1 - 379 0 l 1,10,-1 - 123 0 l 1,11,-1 - 123 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10080 -Encoding: 1086 1086 442 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> -VStem: 90 256<214 657> 715 256<223 678> -AnchorPoint: "top" 506 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10081 -Encoding: 1087 1087 443 -Width: 1054 -VWidth: 0 -Flags: W -HStem: 0 43G<123 379 678 934> 799 102<379 678> -VStem: 123 256<0 799> 678 256<0 799> -AnchorPoint: "top" 535 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -934 901 m 1,0,-1 - 934 0 l 1,1,-1 - 678 0 l 1,2,-1 - 678 799 l 1,3,-1 - 379 799 l 1,4,-1 - 379 0 l 1,5,-1 - 123 0 l 1,6,-1 - 123 901 l 1,7,-1 - 934 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10082 -Encoding: 1088 1088 444 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -16 102<478 663> 823 102<468 674> -VStem: 147 256<-410 8 181 757> 745 256<253 665> -AnchorPoint: "top" 516 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 16 112 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10083 -Encoding: 1089 1089 445 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<441 694> 819 102<425 635> -VStem: 90 256<235 657> -AnchorPoint: "top" 504 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 5 99 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10084 -Encoding: 1090 1090 446 -Width: 940 -VWidth: 0 -Flags: W -HStem: 0 43G<346 602> 799 102<53 346 602 895> -VStem: 346 256<0 799> -AnchorPoint: "top" 477 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -602 799 m 1,0,-1 - 602 0 l 1,1,-1 - 346 0 l 1,2,-1 - 346 799 l 1,3,-1 - 53 799 l 1,4,-1 - 53 901 l 1,5,-1 - 895 901 l 1,6,-1 - 895 799 l 1,7,-1 - 602 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10085 -Encoding: 1091 1091 447 -Width: 923 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 860 41<88 324 729 907> -LayerCount: 2 -Fore -Refer: 24 121 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10086 -Encoding: 1092 1092 448 -Width: 1589 -VWidth: 0 -Flags: W -HStem: -16 102<418 611 995 1180> 823 102<411 603 992 1198> 1311 41G<670 924> -VStem: 90 256<229 697> 670 254<-410 41 171 746 866 1352> 1247 256<241 704> -CounterMasks: 1 1c -AnchorPoint: "top" 795 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -670 475 m 0,0,1 - 670 524 670 524 667.5 564 c 128,-1,2 - 665 604 665 604 658.5 645.5 c 128,-1,3 - 652 687 652 687 639.5 717.5 c 128,-1,4 - 627 748 627 748 608.5 772.5 c 128,-1,5 - 590 797 590 797 562.5 810 c 128,-1,6 - 535 823 535 823 500 823 c 0,7,8 - 460 823 460 823 431.5 800.5 c 128,-1,9 - 403 778 403 778 386.5 744.5 c 128,-1,10 - 370 711 370 711 360.5 659 c 128,-1,11 - 351 607 351 607 348.5 561 c 128,-1,12 - 346 515 346 515 346 455 c 0,13,14 - 346 402 346 402 347.5 366.5 c 128,-1,15 - 349 331 349 331 354 283 c 128,-1,16 - 359 235 359 235 371 204 c 128,-1,17 - 383 173 383 173 401 144 c 128,-1,18 - 419 115 419 115 449.5 100.5 c 128,-1,19 - 480 86 480 86 520 86 c 0,20,21 - 561 86 561 86 590 109.5 c 128,-1,22 - 619 133 619 133 634 167 c 128,-1,23 - 649 201 649 201 657.5 258 c 128,-1,24 - 666 315 666 315 668 361 c 128,-1,25 - 670 407 670 407 670 475 c 0,0,1 -670 -410 m 1,26,-1 - 670 41 l 1,27,28 - 622 6 622 6 589.5 -5 c 128,-1,29 - 557 -16 557 -16 489 -16 c 0,30,31 - 366 -16 366 -16 274 49 c 128,-1,32 - 182 114 182 114 136 219.5 c 128,-1,33 - 90 325 90 325 90 455 c 0,34,35 - 90 553 90 553 113.5 637 c 128,-1,36 - 137 721 137 721 183 786 c 128,-1,37 - 229 851 229 851 302.5 888.5 c 128,-1,38 - 376 926 376 926 469 926 c 0,39,40 - 539 926 539 926 576.5 913.5 c 128,-1,41 - 614 901 614 901 670 866 c 1,42,-1 - 670 1352 l 1,43,-1 - 924 1352 l 1,44,-1 - 924 866 l 1,45,46 - 982 903 982 903 1011.5 914.5 c 128,-1,47 - 1041 926 1041 926 1094 926 c 0,48,49 - 1289 926 1289 926 1396 807 c 128,-1,50 - 1503 688 1503 688 1503 455 c 0,51,52 - 1503 327 1503 327 1449.5 220 c 128,-1,53 - 1396 113 1396 113 1297.5 48.5 c 128,-1,54 - 1199 -16 1199 -16 1075 -16 c 0,55,56 - 978 -16 978 -16 924 41 c 1,57,-1 - 924 -410 l 1,58,-1 - 670 -410 l 1,26,-1 -924 475 m 0,59,60 - 924 420 924 420 926 380 c 128,-1,61 - 928 340 928 340 933.5 291 c 128,-1,62 - 939 242 939 242 951 209 c 128,-1,63 - 963 176 963 176 982.5 146 c 128,-1,64 - 1002 116 1002 116 1032.5 101 c 128,-1,65 - 1063 86 1063 86 1104 86 c 0,66,67 - 1247 86 1247 86 1247 455 c 0,68,69 - 1247 501 1247 501 1246.5 531 c 128,-1,70 - 1246 561 1246 561 1243.5 603.5 c 128,-1,71 - 1241 646 1241 646 1236 673.5 c 128,-1,72 - 1231 701 1231 701 1222 732 c 128,-1,73 - 1213 763 1213 763 1200.5 781 c 128,-1,74 - 1188 799 1188 799 1168.5 811 c 128,-1,75 - 1149 823 1149 823 1124 823 c 0,76,77 - 1084 823 1084 823 1052.5 812.5 c 128,-1,78 - 1021 802 1021 802 1000 786.5 c 128,-1,79 - 979 771 979 771 964.5 743 c 128,-1,80 - 950 715 950 715 942 689.5 c 128,-1,81 - 934 664 934 664 930 623 c 128,-1,82 - 926 582 926 582 925 552 c 128,-1,83 - 924 522 924 522 924 475 c 0,59,60 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10087 -Encoding: 1093 1093 449 -Width: 854 -VWidth: 0 -Flags: W -HStem: 0 43<8 213 573 850> 860 41<14 289 569 772> -AnchorPoint: "top" 475 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 23 120 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10088 -Encoding: 1094 1094 450 -Width: 1114 -VWidth: 0 -Flags: W -HStem: 0 102<379 637> 860 41G<123 379 637 893> -VStem: 123 256<102 901> 637 256<102 901> 926 98<-315 -38> -AnchorPoint: "top" 516 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 0 m 1,0,-1 - 123 901 l 1,1,-1 - 379 901 l 1,2,-1 - 379 102 l 1,3,-1 - 637 102 l 1,4,-1 - 637 901 l 1,5,-1 - 893 901 l 1,6,-1 - 893 102 l 1,7,-1 - 1024 102 l 1,8,-1 - 1024 -315 l 1,9,-1 - 926 -315 l 1,10,11 - 926 -250 926 -250 919 -193.5 c 128,-1,12 - 912 -137 912 -137 902.5 -103 c 128,-1,13 - 893 -69 893 -69 883.5 -44.5 c 128,-1,14 - 874 -20 874 -20 867 -10 c 2,15,-1 - 860 0 l 1,16,-1 - 123 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10089 -Encoding: 1095 1095 451 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 43G<565 821> 313 102<369 555> 860 41G<82 338 565 821> -VStem: 82 256<488 901> 565 256<0 348 426 901> -AnchorPoint: "top" 457 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -565 512 m 2,0,-1 - 565 901 l 1,1,-1 - 821 901 l 1,2,-1 - 821 0 l 1,3,-1 - 565 0 l 1,4,-1 - 565 348 l 1,5,6 - 530 313 530 313 438 313 c 0,7,8 - 371 313 371 313 320 324 c 128,-1,9 - 269 335 269 335 230.5 355.5 c 128,-1,10 - 192 376 192 376 166 413 c 128,-1,11 - 140 450 140 450 123.5 493 c 128,-1,12 - 107 536 107 536 98 601.5 c 128,-1,13 - 89 667 89 667 85.5 735.5 c 128,-1,14 - 82 804 82 804 82 901 c 1,15,-1 - 338 901 l 1,16,17 - 338 579 338 579 355 500 c 0,18,19 - 369 436 369 436 408 423 c 0,20,21 - 427 416 427 416 469 416 c 0,22,23 - 565 416 565 416 565 512 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10090 -Encoding: 1096 1096 452 -Width: 1454 -VWidth: 0 -Flags: W -HStem: 0 102<379 600 856 1077> 860 41G<123 379 600 856 1077 1333> -VStem: 123 256<102 901> 600 256<102 901> 1077 256<102 901> -CounterMasks: 1 38 -AnchorPoint: "top" 684 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1333 901 m 1,0,-1 - 1333 0 l 1,1,-1 - 123 0 l 1,2,-1 - 123 901 l 1,3,-1 - 379 901 l 1,4,-1 - 379 102 l 1,5,-1 - 600 102 l 1,6,-1 - 600 901 l 1,7,-1 - 856 901 l 1,8,-1 - 856 102 l 1,9,-1 - 1077 102 l 1,10,-1 - 1077 901 l 1,11,-1 - 1333 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10091 -Encoding: 1097 1097 453 -Width: 1554 -VWidth: 0 -Flags: W -HStem: 0 102<379 600 856 1077> 860 41G<123 379 600 856 1077 1333> -VStem: 123 256<102 901> 600 256<102 901> 1077 256<102 901> 1366 98<-315 -38> -AnchorPoint: "top" 684 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1300 0 m 1,0,-1 - 123 0 l 1,1,-1 - 123 901 l 1,2,-1 - 379 901 l 1,3,-1 - 379 102 l 1,4,-1 - 600 102 l 1,5,-1 - 600 901 l 1,6,-1 - 856 901 l 1,7,-1 - 856 102 l 1,8,-1 - 1077 102 l 1,9,-1 - 1077 901 l 1,10,-1 - 1333 901 l 1,11,-1 - 1333 102 l 1,12,-1 - 1464 102 l 1,13,-1 - 1464 -315 l 1,14,-1 - 1366 -315 l 1,15,16 - 1366 -250 1366 -250 1359 -193.5 c 128,-1,17 - 1352 -137 1352 -137 1342.5 -103 c 128,-1,18 - 1333 -69 1333 -69 1323.5 -44.5 c 128,-1,19 - 1314 -20 1314 -20 1307 -10 c 2,20,-1 - 1300 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10092 -Encoding: 1098 1098 454 -Width: 1128 -VWidth: 0 -Flags: W -HStem: 0 102<582 752> 440 102<582 750> 799 102<53 326> -VStem: 326 256<102 440 543 799> 807 256<151 385> -AnchorPoint: "top" 414 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1063 264 m 0,0,1 - 1063 212 1063 212 1046 169 c 128,-1,2 - 1029 126 1029 126 988 86 c 128,-1,3 - 947 46 947 46 865.5 23 c 128,-1,4 - 784 0 784 0 668 0 c 2,5,-1 - 326 0 l 1,6,-1 - 326 799 l 1,7,-1 - 53 799 l 1,8,-1 - 53 901 l 1,9,-1 - 582 901 l 1,10,-1 - 582 543 l 1,11,-1 - 664 543 l 2,12,13 - 877 543 877 543 970 478 c 128,-1,14 - 1063 413 1063 413 1063 264 c 0,0,1 -582 440 m 1,15,-1 - 582 102 l 1,16,-1 - 616 102 l 2,17,18 - 710 102 710 102 758.5 145 c 128,-1,19 - 807 188 807 188 807 264 c 0,20,21 - 807 344 807 344 757 392 c 128,-1,22 - 707 440 707 440 596 440 c 2,23,-1 - 582 440 l 1,15,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10093 -Encoding: 1099 1099 455 -Width: 1359 -VWidth: 0 -Flags: W -HStem: 0 43<983 1239> 0 102<420 590> 440 102<420 589> 860 41<164 420 983 1239> -VStem: 164 256<102 440 543 901> 645 256<151 385> 983 256<0 901> -AnchorPoint: "top" 690 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 456 1100 N 1 0 0 1 41 0 2 -Refer: 112 305 N 1 0 0 1 860 0 2 -Validated: 1 -EndChar - -StartChar: afii10094 -Encoding: 1100 1100 456 -Width: 925 -VWidth: 0 -Flags: W -HStem: 0 102<379 549> 440 102<379 548> 860 41G<123 379> -VStem: 123 256<102 440 543 901> 604 256<151 385> -AnchorPoint: "top" 438 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -379 440 m 1,0,-1 - 379 102 l 1,1,-1 - 414 102 l 2,2,3 - 508 102 508 102 556 145 c 128,-1,4 - 604 188 604 188 604 264 c 0,5,6 - 604 344 604 344 554 392 c 128,-1,7 - 504 440 504 440 393 440 c 2,8,-1 - 379 440 l 1,0,-1 -860 264 m 0,9,10 - 860 212 860 212 843 169 c 128,-1,11 - 826 126 826 126 785 86 c 128,-1,12 - 744 46 744 46 662.5 23 c 128,-1,13 - 581 0 581 0 465 0 c 2,14,-1 - 123 0 l 1,15,-1 - 123 901 l 1,16,-1 - 379 901 l 1,17,-1 - 379 543 l 1,18,-1 - 461 543 l 2,19,20 - 674 543 674 543 767 478 c 128,-1,21 - 860 413 860 413 860 264 c 0,9,10 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10095 -Encoding: 1101 1101 457 -Width: 989 -VWidth: 0 -Flags: W -HStem: -20 102<295 543> 430 102<358 643> 819 102<320 552> -VStem: 647 256<224 430 532 666> -AnchorPoint: "top" 461 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -258 631 m 1,0,-1 - 84 709 l 1,1,2 - 135 817 135 817 218 869.5 c 128,-1,3 - 301 922 301 922 438 922 c 0,4,5 - 650 922 650 922 776.5 794 c 128,-1,6 - 903 666 903 666 903 451 c 0,7,8 - 903 229 903 229 779.5 104.5 c 128,-1,9 - 656 -20 656 -20 410 -20 c 0,10,11 - 292 -20 292 -20 210.5 26 c 128,-1,12 - 129 72 129 72 61 158 c 1,13,-1 - 225 225 l 1,14,15 - 230 216 230 216 243 193.5 c 128,-1,16 - 256 171 256 171 262 162.5 c 128,-1,17 - 268 154 268 154 281.5 137.5 c 128,-1,18 - 295 121 295 121 307.5 114 c 128,-1,19 - 320 107 320 107 339.5 98 c 128,-1,20 - 359 89 359 89 384 85.5 c 128,-1,21 - 409 82 409 82 440 82 c 0,22,23 - 531 82 531 82 587.5 176.5 c 128,-1,24 - 644 271 644 271 647 430 c 1,25,-1 - 358 430 l 1,26,-1 - 358 532 l 1,27,-1 - 643 532 l 1,28,29 - 630 661 630 661 580 740 c 128,-1,30 - 530 819 530 819 469 819 c 0,31,32 - 442 819 442 819 419.5 816 c 128,-1,33 - 397 813 397 813 380 810 c 128,-1,34 - 363 807 363 807 348.5 797 c 128,-1,35 - 334 787 334 787 324.5 781.5 c 128,-1,36 - 315 776 315 776 305.5 759 c 128,-1,37 - 296 742 296 742 291 735 c 128,-1,38 - 286 728 286 728 278.5 704 c 128,-1,39 - 271 680 271 680 268.5 670.5 c 128,-1,40 - 266 661 266 661 258 631 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10096 -Encoding: 1102 1102 458 -Width: 1400 -VWidth: 0 -Flags: W -HStem: -20 102<815 996> 0 43G<123 379> 430 102<379 496> 819 102<817 1001> 860 41G<123 379> -VStem: 123 256<0 430 532 901> 496 256<200 430 532 673> 1059 256<208 690> -AnchorPoint: "top" 586 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 379 901 l 1,1,-1 - 379 532 l 1,2,-1 - 502 532 l 1,3,4 - 525 708 525 708 635 815 c 128,-1,5 - 745 922 745 922 887 922 c 0,6,7 - 1085 922 1085 922 1200 801.5 c 128,-1,8 - 1315 681 1315 681 1315 451 c 0,9,10 - 1315 219 1315 219 1202.5 99.5 c 128,-1,11 - 1090 -20 1090 -20 887 -20 c 0,12,13 - 697 -20 697 -20 599 99 c 128,-1,14 - 501 218 501 218 496 430 c 1,15,-1 - 379 430 l 1,16,-1 - 379 0 l 1,17,-1 - 123 0 l 1,18,-1 - 123 901 l 1,0,-1 -1059 451 m 0,19,20 - 1059 538 1059 538 1053 601 c 128,-1,21 - 1047 664 1047 664 1032 715.5 c 128,-1,22 - 1017 767 1017 767 988.5 793 c 128,-1,23 - 960 819 960 819 918 819 c 0,24,25 - 868 819 868 819 834.5 794 c 128,-1,26 - 801 769 801 769 783.5 718 c 128,-1,27 - 766 667 766 667 759 604.5 c 128,-1,28 - 752 542 752 542 752 451 c 0,29,30 - 752 359 752 359 758.5 297 c 128,-1,31 - 765 235 765 235 782 183.5 c 128,-1,32 - 799 132 799 132 832.5 107 c 128,-1,33 - 866 82 866 82 918 82 c 0,34,35 - 997 82 997 82 1028 177 c 128,-1,36 - 1059 272 1059 272 1059 451 c 0,19,20 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10097 -Encoding: 1103 1103 459 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 102<70 131> 358 102<454 594> 799 102<434 594> -VStem: 113 256<524 739> 594 256<0 358 461 799> -AnchorPoint: "top" 535 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -113 637 m 0,0,1 - 113 685 113 685 137 731 c 128,-1,2 - 161 777 161 777 205 815.5 c 128,-1,3 - 249 854 249 854 320 877.5 c 128,-1,4 - 391 901 391 901 477 901 c 2,5,-1 - 850 901 l 1,6,-1 - 850 0 l 1,7,-1 - 594 0 l 1,8,-1 - 594 358 l 1,9,-1 - 541 358 l 2,10,11 - 499 358 499 358 474 338.5 c 128,-1,12 - 449 319 449 319 437.5 287 c 128,-1,13 - 426 255 426 255 416 217 c 128,-1,14 - 406 179 406 179 386 141 c 128,-1,15 - 366 103 366 103 333 71 c 128,-1,16 - 300 39 300 39 233 19.5 c 128,-1,17 - 166 0 166 0 70 0 c 1,18,-1 - 70 102 l 1,19,20 - 108 102 108 102 134 132.5 c 128,-1,21 - 160 163 160 163 174.5 204.5 c 128,-1,22 - 189 246 189 246 220 299.5 c 128,-1,23 - 251 353 251 353 293 387 c 1,24,25 - 209 418 209 418 161 480.5 c 128,-1,26 - 113 543 113 543 113 637 c 0,0,1 -594 799 m 1,27,-1 - 590 799 l 2,28,29 - 492 799 492 799 430.5 754.5 c 128,-1,30 - 369 710 369 710 369 637 c 0,31,32 - 369 561 369 561 429 511 c 128,-1,33 - 489 461 489 461 594 461 c 1,34,-1 - 594 799 l 1,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0450 -Encoding: 1104 1104 460 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1065 403 -VStem: 90 256<235 451 553 656> 260 371 -LayerCount: 2 -Fore -Refer: 114 232 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10071 -Encoding: 1105 1105 461 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1085 170<260 430 629 799> -VStem: 90 256<235 451 553 656> 260 170<1085 1255> 629 170<1085 1255> -LayerCount: 2 -Fore -Refer: 134 235 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10099 -Encoding: 1106 1106 462 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -348 102<417 652> 0 43G<147 403> 819 102<405 644> 1085 102<66 147 403 487> 1311 41G<147 403> -VStem: 147 256<0 802 907 1085 1188 1352> 692 256<-196 720> -LayerCount: 2 -Fore -SplineSet -948 160 m 2,0,1 - 948 51 948 51 942.5 -20.5 c 128,-1,2 - 937 -92 937 -92 919.5 -153 c 128,-1,3 - 902 -214 902 -214 874 -248.5 c 128,-1,4 - 846 -283 846 -283 797.5 -307 c 128,-1,5 - 749 -331 749 -331 685 -339.5 c 128,-1,6 - 621 -348 621 -348 528 -348 c 0,7,8 - 381 -348 381 -348 205 -256 c 1,9,-1 - 358 -150 l 1,10,11 - 446 -246 446 -246 559 -246 c 0,12,13 - 628 -246 628 -246 660 -191.5 c 128,-1,14 - 692 -137 692 -137 692 -8 c 2,15,-1 - 692 467 l 2,16,17 - 692 608 692 608 676 686 c 128,-1,18 - 660 764 660 764 631 791.5 c 128,-1,19 - 602 819 602 819 551 819 c 0,20,21 - 471 819 471 819 403 784 c 1,22,-1 - 403 0 l 1,23,-1 - 147 0 l 1,24,-1 - 147 1085 l 1,25,-1 - 66 1085 l 1,26,-1 - 66 1188 l 1,27,-1 - 147 1188 l 1,28,-1 - 147 1352 l 1,29,-1 - 403 1352 l 1,30,-1 - 403 1188 l 1,31,-1 - 487 1188 l 1,32,-1 - 487 1085 l 1,33,-1 - 403 1085 l 1,34,-1 - 403 907 l 1,35,36 - 472 922 472 922 520 922 c 0,37,38 - 736 922 736 922 842 816 c 128,-1,39 - 948 710 948 710 948 492 c 2,40,-1 - 948 160 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10100 -Encoding: 1107 1107 463 -Width: 768 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 799 102<379 715> 1065 403 -VStem: 123 256<0 799> 322 371 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1010 -184 2 -Refer: 431 1075 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10101 -Encoding: 1108 1108 464 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<447 706> 430 102<350 657> 819 102<436 674> -VStem: 90 256<235 430 532 656> -AnchorPoint: "top" 532 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -754 635 m 1,0,1 - 729 728 729 728 678 773.5 c 128,-1,2 - 627 819 627 819 543 819 c 0,3,4 - 460 819 460 819 410.5 743.5 c 128,-1,5 - 361 668 361 668 350 532 c 1,6,-1 - 657 532 l 1,7,-1 - 657 430 l 1,8,-1 - 346 430 l 1,9,10 - 349 261 349 261 404.5 171.5 c 128,-1,11 - 460 82 460 82 584 82 c 0,12,13 - 655 82 655 82 694 114.5 c 128,-1,14 - 733 147 733 147 776 217 c 1,15,-1 - 932 158 l 1,16,17 - 867 76 867 76 770.5 28 c 128,-1,18 - 674 -20 674 -20 553 -20 c 0,19,20 - 351 -20 351 -20 220.5 109.5 c 128,-1,21 - 90 239 90 239 90 451 c 0,22,23 - 90 555 90 555 127 645 c 128,-1,24 - 164 735 164 735 224 794.5 c 128,-1,25 - 284 854 284 854 359.5 888 c 128,-1,26 - 435 922 435 922 512 922 c 0,27,28 - 654 922 654 922 755 868.5 c 128,-1,29 - 856 815 856 815 905 711 c 1,30,-1 - 754 635 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10102 -Encoding: 1109 1109 465 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<286 522> 817 104<397 566> -VStem: 125 256<569 808> 559 256<119 365> -AnchorPoint: "top" 389 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 7 115 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10103 -Encoding: 1110 1110 466 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1065 164<143 358> -VStem: 123 256<0 901> 143 215<1065 1229> -LayerCount: 2 -Fore -Refer: 8 105 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10104 -Encoding: 1111 1111 467 -Width: 413 -VWidth: 0 -Flags: W -HStem: 0 43<78 334> 860 41<78 334> 1085 170<-61 109 307 477> -VStem: -61 170<1085 1255> 78 256<0 901> 307 170<1085 1255> -LayerCount: 2 -Fore -Refer: 135 239 N 1 0 0 1 -45 0 2 -Validated: 1 -EndChar - -StartChar: afii10105 -Encoding: 1112 1112 468 -Width: 598 -VWidth: 0 -Flags: W -HStem: -348 102<-3 200> 860 41<221 477> 1065 164<242 457> -VStem: 221 256<-204 901> 242 215<1065 1229> -LayerCount: 2 -Fore -Refer: 13 106 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10106 -Encoding: 1113 1113 469 -Width: 1591 -VWidth: 0 -Flags: W -HStem: -20 102<155 376> 0 102<1106 1215> 440 102<1106 1213> 799 102<666 850> -VStem: 410 256<114 799> 850 256<102 440 543 799> 1270 256<152 387> -AnchorPoint: "top" 668 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1526 264 m 4,0,1 - 1526 212 1526 212 1509 169 c 128,-1,2 - 1492 126 1492 126 1450.5 86 c 128,-1,3 - 1409 46 1409 46 1327.5 23 c 128,-1,4 - 1246 0 1246 0 1130 0 c 2,5,-1 - 850 0 l 1,6,-1 - 850 799 l 1,7,-1 - 666 799 l 1,8,-1 - 666 260 l 2,9,10 - 666 179 666 179 635 122 c 128,-1,11 - 604 65 604 65 546.5 35 c 128,-1,12 - 489 5 489 5 422 -7.5 c 128,-1,13 - 355 -20 355 -20 268 -20 c 0,14,15 - 138 -20 138 -20 61 72 c 1,16,-1 - 190 133 l 1,17,18 - 226 82 226 82 299 82 c 0,19,20 - 359 82 359 82 384.5 140.5 c 128,-1,21 - 410 199 410 199 410 328 c 2,22,-1 - 410 901 l 1,23,-1 - 1106 901 l 1,24,-1 - 1106 543 l 1,25,-1 - 1126 543 l 2,26,27 - 1339 543 1339 543 1432.5 478 c 128,-1,28 - 1526 413 1526 413 1526 264 c 4,0,1 -1106 102 m 5,29,30 - 1124 102 1124 102 1148.5 109 c 128,-1,31 - 1173 116 1173 116 1202 132.5 c 128,-1,32 - 1231 149 1231 149 1250.5 183.5 c 128,-1,33 - 1270 218 1270 218 1270 264 c 0,34,35 - 1270 307 1270 307 1256.5 340 c 128,-1,36 - 1243 373 1243 373 1224 391 c 128,-1,37 - 1205 409 1205 409 1181 421 c 128,-1,38 - 1157 433 1157 433 1139 436.5 c 128,-1,39 - 1121 440 1121 440 1106 440 c 1,40,-1 - 1106 102 l 5,29,30 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10107 -Encoding: 1114 1114 470 -Width: 1337 -VWidth: 0 -Flags: W -HStem: 0 102<852 961> 440 102<379 596 852 959> 860 41G<123 379 596 852> -VStem: 123 256<0 440 543 901> 596 256<102 440 543 901> 1016 256<152 387> -AnchorPoint: "top" 494 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -852 901 m 1,0,-1 - 852 543 l 1,1,-1 - 872 543 l 2,2,3 - 1085 543 1085 543 1178.5 478 c 128,-1,4 - 1272 413 1272 413 1272 264 c 0,5,6 - 1272 212 1272 212 1255 169 c 128,-1,7 - 1238 126 1238 126 1197 86 c 128,-1,8 - 1156 46 1156 46 1074.5 23 c 128,-1,9 - 993 0 993 0 877 0 c 2,10,-1 - 596 0 l 1,11,-1 - 596 440 l 1,12,-1 - 379 440 l 1,13,-1 - 379 0 l 1,14,-1 - 123 0 l 1,15,-1 - 123 901 l 1,16,-1 - 379 901 l 1,17,-1 - 379 543 l 1,18,-1 - 596 543 l 1,19,-1 - 596 901 l 1,20,-1 - 852 901 l 1,0,-1 -852 102 m 1,21,22 - 870 102 870 102 894.5 109 c 128,-1,23 - 919 116 919 116 948 132.5 c 128,-1,24 - 977 149 977 149 996.5 183.5 c 128,-1,25 - 1016 218 1016 218 1016 264 c 0,26,27 - 1016 307 1016 307 1002.5 340 c 128,-1,28 - 989 373 989 373 970 391 c 128,-1,29 - 951 409 951 409 927 421 c 128,-1,30 - 903 433 903 433 885 436.5 c 128,-1,31 - 867 440 867 440 852 440 c 1,32,-1 - 852 102 l 1,21,22 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10108 -Encoding: 1115 1115 471 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403 692 948> 819 102<405 644> 1085 102<66 147 403 487> 1311 41G<147 403> -VStem: 147 256<0 802 907 1085 1188 1352> 692 256<0 720> -LayerCount: 2 -Fore -SplineSet -403 784 m 1,0,-1 - 403 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 1085 l 1,3,-1 - 66 1085 l 1,4,-1 - 66 1188 l 1,5,-1 - 147 1188 l 1,6,-1 - 147 1352 l 1,7,-1 - 403 1352 l 1,8,-1 - 403 1188 l 1,9,-1 - 487 1188 l 1,10,-1 - 487 1085 l 1,11,-1 - 403 1085 l 1,12,-1 - 403 907 l 1,13,14 - 472 922 472 922 520 922 c 0,15,16 - 736 922 736 922 842 816 c 128,-1,17 - 948 710 948 710 948 492 c 2,18,-1 - 948 0 l 1,19,-1 - 692 0 l 1,20,-1 - 692 467 l 2,21,22 - 692 608 692 608 676 686 c 128,-1,23 - 660 764 660 764 631 791.5 c 128,-1,24 - 602 819 602 819 551 819 c 0,25,26 - 471 819 471 819 403 784 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10109 -Encoding: 1116 1116 472 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43<193 449 709 958> 860 41<193 449 656 922> 1065 403 -VStem: 193 256<0 371 627 901> 387 371 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1075 -184 2 -Refer: 438 1082 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni045D -Encoding: 1117 1117 473 -Width: 1146 -VWidth: 0 -Flags: W -HStem: 0 43<123 379 770 1026> 860 41<123 379 770 1026> 1065 403 -VStem: 123 256<0 61 291 901> 264 371 770 256<0 604 836 901> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 989 -184 2 -Refer: 436 1080 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10110 -Encoding: 1118 1118 474 -Width: 923 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 860 41<88 324 729 907> 1085 137<392 636> -VStem: 283 78<1262 1283> 668 78<1262 1283> -LayerCount: 2 -Fore -Refer: 1076 57420 S 1 0 0 1 1102 -184 2 -Refer: 447 1091 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10193 -Encoding: 1119 1119 475 -Width: 1013 -VWidth: 0 -Flags: W -HStem: 0 102<379 417 602 637> 860 41G<123 379 637 893> -VStem: 123 256<102 901> 461 98<-315 -38> 637 256<102 901> -AnchorPoint: "top" 516 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -123 0 m 1,0,-1 - 123 901 l 1,1,-1 - 379 901 l 1,2,-1 - 379 102 l 1,3,-1 - 637 102 l 1,4,-1 - 637 901 l 1,5,-1 - 893 901 l 1,6,-1 - 893 0 l 1,7,-1 - 625 0 l 1,8,9 - 622 -3 622 -3 617.5 -10 c 128,-1,10 - 613 -17 613 -17 602 -44 c 128,-1,11 - 591 -71 591 -71 582 -103.5 c 128,-1,12 - 573 -136 573 -136 566 -193 c 128,-1,13 - 559 -250 559 -250 559 -315 c 1,14,-1 - 461 -315 l 1,15,16 - 461 -250 461 -250 454 -193.5 c 128,-1,17 - 447 -137 447 -137 437.5 -103 c 128,-1,18 - 428 -69 428 -69 418.5 -44.5 c 128,-1,19 - 409 -20 409 -20 402 -10 c 2,20,-1 - 395 0 l 1,21,-1 - 123 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii61352 -Encoding: 8470 8470 476 -Width: 2086 -VWidth: 0 -Flags: W -HStem: -20 102<105 325> 0 43G<1218 1421> 348 61<1518 1995> 516 61<1698 1814> 938 61<1702 1815> 1352 102<1455 1675> 1393 41G<358 560> -VStem: 358 266<132 993> 1155 266<438 1302> 1530 145<599 903> 1839 141<602 914> -LayerCount: 2 -Fore -SplineSet -1518 410 m 1,0,-1 - 1995 410 l 1,1,-1 - 1995 348 l 1,2,-1 - 1518 348 l 1,3,-1 - 1518 410 l 1,0,-1 -1839 758 m 0,4,5 - 1839 818 1839 818 1834 853.5 c 128,-1,6 - 1829 889 1829 889 1812 913.5 c 128,-1,7 - 1795 938 1795 938 1763 938 c 0,8,9 - 1711 938 1711 938 1693 894 c 128,-1,10 - 1675 850 1675 850 1675 758 c 0,11,12 - 1675 720 1675 720 1676.5 696 c 128,-1,13 - 1678 672 1678 672 1682.5 647 c 128,-1,14 - 1687 622 1687 622 1696.5 608.5 c 128,-1,15 - 1706 595 1706 595 1722.5 586.5 c 128,-1,16 - 1739 578 1739 578 1763 578 c 0,17,18 - 1806 578 1806 578 1822.5 624 c 128,-1,19 - 1839 670 1839 670 1839 758 c 0,4,5 -1747 516 m 0,20,21 - 1646 516 1646 516 1588 581.5 c 128,-1,22 - 1530 647 1530 647 1530 758 c 0,23,24 - 1530 862 1530 862 1597 930.5 c 128,-1,25 - 1664 999 1664 999 1747 999 c 0,26,27 - 1853 999 1853 999 1916.5 937 c 128,-1,28 - 1980 875 1980 875 1980 758 c 128,-1,29 - 1980 641 1980 641 1916.5 578.5 c 128,-1,30 - 1853 516 1853 516 1747 516 c 0,20,21 -1421 0 m 1,31,-1 - 1243 0 l 1,32,-1 - 625 993 l 1,33,-1 - 625 262 l 2,34,35 - 625 189 625 189 583.5 132 c 128,-1,36 - 542 75 542 75 478.5 43.5 c 128,-1,37 - 415 12 415 12 350 -4 c 128,-1,38 - 285 -20 285 -20 227 -20 c 0,39,40 - 165 -20 165 -20 106.5 3.5 c 128,-1,41 - 48 27 48 27 10 72 c 1,42,-1 - 139 133 l 1,43,44 - 175 82 175 82 248 82 c 0,45,46 - 308 82 308 82 333 140.5 c 128,-1,47 - 358 199 358 199 358 328 c 2,48,-1 - 358 1434 l 1,49,-1 - 535 1434 l 1,50,-1 - 1155 438 l 1,51,-1 - 1155 1171 l 2,52,53 - 1155 1244 1155 1244 1196 1301 c 128,-1,54 - 1237 1358 1237 1358 1300.5 1390 c 128,-1,55 - 1364 1422 1364 1422 1429 1438 c 128,-1,56 - 1494 1454 1494 1454 1552 1454 c 0,57,58 - 1614 1454 1614 1454 1672.5 1430.5 c 128,-1,59 - 1731 1407 1731 1407 1769 1362 c 1,60,-1 - 1640 1300 l 1,61,62 - 1603 1352 1603 1352 1532 1352 c 0,63,64 - 1472 1352 1472 1352 1446.5 1293.5 c 128,-1,65 - 1421 1235 1421 1235 1421 1106 c 2,66,-1 - 1421 0 l 1,31,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10050 -Encoding: 1168 1168 477 -Width: 1038 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440> 1331 274<866 1001> 1331 102<440 866> -VStem: 174 266<0 1331> 866 135<1434 1606> -AnchorPoint: "top" 604 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 866 1434 l 1,3,-1 - 866 1606 l 1,4,-1 - 1001 1606 l 1,5,-1 - 1001 1331 l 1,6,-1 - 440 1331 l 1,7,-1 - 440 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10098 -Encoding: 1169 1169 478 -Width: 768 -VWidth: 0 -Flags: W -HStem: 0 43G<123 379> 799 287<580 715> 799 102<379 580> -VStem: 123 256<0 799> 580 135<901 1085> -AnchorPoint: "top" 422 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -379 0 m 1,0,-1 - 123 0 l 1,1,-1 - 123 901 l 1,2,-1 - 580 901 l 1,3,-1 - 580 1085 l 1,4,-1 - 715 1085 l 1,5,-1 - 715 799 l 1,6,-1 - 379 799 l 1,7,-1 - 379 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni031B -Encoding: 795 795 479 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1055 43<-324 -167> -VStem: -94 121<1178 1380> -AnchorPoint: "horn" -244 1075 mark 0 -LayerCount: 2 -Fore -SplineSet --324 1055 m 1,0,-1 - -324 1098 l 1,1,-1 - -244 1098 l 2,2,3 - -191 1098 -191 1098 -142.5 1130.5 c 128,-1,4 - -94 1163 -94 1163 -94 1198 c 0,5,6 - -94 1221 -94 1221 -110 1248.5 c 128,-1,7 - -126 1276 -126 1276 -144.5 1299 c 128,-1,8 - -163 1322 -163 1322 -179 1355.5 c 128,-1,9 - -195 1389 -195 1389 -195 1423 c 0,10,11 - -195 1460 -195 1460 -159 1484.5 c 128,-1,12 - -123 1509 -123 1509 -76 1509 c 0,13,14 - -44 1509 -44 1509 -22.5 1494.5 c 128,-1,15 - -1 1480 -1 1480 9.5 1454 c 128,-1,16 - 20 1428 20 1428 23.5 1401 c 128,-1,17 - 27 1374 27 1374 27 1339 c 0,18,19 - 27 1209 27 1209 -53 1132 c 128,-1,20 - -133 1055 -133 1055 -244 1055 c 2,21,-1 - -324 1055 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: hookabovecomb -Encoding: 777 777 480 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1438 61<-673 -546> -VStem: -614 51<1227 1295> -543 115<1337 1437> -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --563 1227 m 9,0,-1 - -614 1227 l 1,1,2 - -614 1273 -614 1273 -603 1302 c 128,-1,3 - -592 1331 -592 1331 -578.5 1341 c 128,-1,4 - -565 1351 -565 1351 -554 1363.5 c 128,-1,5 - -543 1376 -543 1376 -543 1393 c 0,6,7 - -543 1438 -543 1438 -590 1438 c 0,8,9 - -614 1438 -614 1438 -636 1434 c 0,10,11 - -660 1430 -660 1430 -670 1426 c 2,12,-1 - -680 1421 l 1,13,-1 - -680 1464 l 1,14,15 - -624 1499 -624 1499 -561 1499 c 0,16,17 - -491 1499 -491 1499 -459.5 1467.5 c 128,-1,18 - -428 1436 -428 1436 -428 1399 c 0,19,20 - -428 1373 -428 1373 -442 1357.5 c 128,-1,21 - -456 1342 -456 1342 -475.5 1334 c 128,-1,22 - -495 1326 -495 1326 -515 1316 c 128,-1,23 - -535 1306 -535 1306 -549 1284 c 128,-1,24 - -563 1262 -563 1262 -563 1227 c 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: dotbelowcomb -Encoding: 803 803 481 -Width: 0 -VWidth: 0 -Flags: W -HStem: -272 170<-676 -506> -VStem: -676 170<-272 -102> -AnchorPoint: "bottom" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --676 -102 m 1,0,-1 - -506 -102 l 1,1,-1 - -506 -272 l 1,2,-1 - -676 -272 l 1,3,-1 - -676 -102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0324 -Encoding: 804 804 482 -Width: 0 -VWidth: 0 -Flags: W -HStem: -272 170<-817 -647 -530 -360> -VStem: -817 170<-272 -102> -530 170<-272 -102> -AnchorPoint: "bottom" -586 0 mark 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 145 -1542 2 -Refer: 98 775 N 1 0 0 1 -141 -1542 2 -Validated: 1 -EndChar - -StartChar: uni0325 -Encoding: 805 805 483 -Width: 0 -VWidth: 0 -Flags: W -HStem: -393 72<-655 -520> -154 72<-655 -520> -VStem: -743 72<-305 -170> -504 72<-305 -170> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --672 -238 m 128,-1,1 - -672 -272 -672 -272 -647.5 -297 c 128,-1,2 - -623 -322 -623 -322 -588 -322 c 128,-1,3 - -553 -322 -553 -322 -528.5 -297 c 128,-1,4 - -504 -272 -504 -272 -504 -238 c 128,-1,5 - -504 -204 -504 -204 -528.5 -179 c 128,-1,6 - -553 -154 -553 -154 -588 -154 c 128,-1,7 - -623 -154 -623 -154 -647.5 -179 c 128,-1,0 - -672 -204 -672 -204 -672 -238 c 128,-1,1 --743 -238 m 0,8,9 - -743 -173 -743 -173 -697.5 -127.5 c 128,-1,10 - -652 -82 -652 -82 -588 -82 c 128,-1,11 - -524 -82 -524 -82 -478 -128 c 128,-1,12 - -432 -174 -432 -174 -432 -238 c 128,-1,13 - -432 -302 -432 -302 -477.5 -347.5 c 128,-1,14 - -523 -393 -523 -393 -588 -393 c 0,15,16 - -652 -393 -652 -393 -697.5 -347.5 c 128,-1,17 - -743 -302 -743 -302 -743 -238 c 0,8,9 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032C -Encoding: 812 812 484 -Width: 0 -VWidth: 0 -Flags: W -HStem: -449 387 -VStem: -825 479 -AnchorPoint: "bottom" -586 0 mark 0 -LayerCount: 2 -Fore -SplineSet --586 -449 m 1,0,-1 - -825 -115 l 1,1,-1 - -762 -61 l 1,2,-1 - -586 -242 l 1,3,-1 - -410 -61 l 1,4,-1 - -346 -115 l 1,5,-1 - -586 -449 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032D -Encoding: 813 813 485 -Width: 0 -VWidth: 0 -Flags: W -HStem: -449 387 -VStem: -825 479 -AnchorPoint: "bottom" -586 0 mark 0 -LayerCount: 2 -Fore -SplineSet --586 -61 m 1,0,-1 - -346 -395 l 1,1,-1 - -410 -449 l 1,2,-1 - -586 -268 l 1,3,-1 - -762 -449 l 1,4,-1 - -825 -395 l 1,5,-1 - -586 -61 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032E -Encoding: 814 814 486 -Width: 0 -VWidth: 0 -Flags: W -HStem: -272 117<-710 -466> -VStem: -819 78<-115 -78> -434 78<-115 -78> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --588 -156 m 0,0,1 - -532 -156 -532 -156 -485.5 -126 c 128,-1,2 - -439 -96 -439 -96 -434 -61 c 1,3,-1 - -356 -82 l 1,4,5 - -365 -160 -365 -160 -432.5 -216 c 128,-1,6 - -500 -272 -500 -272 -588 -272 c 128,-1,7 - -676 -272 -676 -272 -743 -216 c 128,-1,8 - -810 -160 -810 -160 -819 -82 c 1,9,-1 - -741 -61 l 1,10,11 - -736 -96 -736 -96 -689.5 -126 c 128,-1,12 - -643 -156 -643 -156 -588 -156 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032F -Encoding: 815 815 487 -Width: 0 -VWidth: 0 -Flags: W -HStem: -199 117<-710 -466> -VStem: -819 78<-276 -239> -434 78<-276 -239> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --588 -199 m 128,-1,1 - -644 -199 -644 -199 -690 -228.5 c 128,-1,2 - -736 -258 -736 -258 -741 -293 c 1,3,-1 - -819 -272 l 1,4,5 - -810 -194 -810 -194 -743 -138 c 128,-1,6 - -676 -82 -676 -82 -588 -82 c 128,-1,7 - -500 -82 -500 -82 -432.5 -138 c 128,-1,8 - -365 -194 -365 -194 -356 -272 c 1,9,-1 - -434 -293 l 1,10,11 - -439 -258 -439 -258 -485.5 -228.5 c 128,-1,0 - -532 -199 -532 -199 -588 -199 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0330 -Encoding: 816 816 488 -Width: 0 -VWidth: 0 -Flags: W -HStem: -285 117<-605 -406> -219 117<-790 -591> -VStem: -881 84<-285 -234> -399 84<-153 -102> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --399 -102 m 1,0,-1 - -315 -102 l 1,1,2 - -324 -182 -324 -182 -377 -233.5 c 128,-1,3 - -430 -285 -430 -285 -516 -285 c 0,4,5 - -554 -285 -554 -285 -612.5 -252 c 128,-1,6 - -671 -219 -671 -219 -690 -219 c 0,7,8 - -788 -219 -788 -219 -797 -285 c 1,9,-1 - -881 -285 l 1,10,11 - -872 -205 -872 -205 -819 -153.5 c 128,-1,12 - -766 -102 -766 -102 -680 -102 c 0,13,14 - -642 -102 -642 -102 -583.5 -135 c 128,-1,15 - -525 -168 -525 -168 -506 -168 c 0,16,17 - -408 -168 -408 -168 -399 -102 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0331 -Encoding: 817 817 489 -Width: 0 -VWidth: 0 -Flags: W -HStem: -221 115<-834 -362> -VStem: -834 471<-221 -106> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --834 -106 m 1,0,-1 - -362 -106 l 1,1,-1 - -362 -221 l 1,2,-1 - -834 -221 l 1,3,-1 - -834 -106 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ohorn -Encoding: 416 416 490 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 856> -VStem: 102 266<424 1012> 1071 266<414 1020> 1366 121<1187 1391> -AnchorPoint: "top" 707 1434 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1266 1434 m 0,0,1 - 1266 1471 1266 1471 1301.5 1495.5 c 128,-1,2 - 1337 1520 1337 1520 1384 1520 c 0,3,4 - 1416 1520 1416 1520 1437.5 1505.5 c 128,-1,5 - 1459 1491 1459 1491 1469.5 1465 c 128,-1,6 - 1480 1439 1480 1439 1483.5 1412 c 128,-1,7 - 1487 1385 1487 1385 1487 1350 c 0,8,9 - 1487 1237 1487 1237 1427 1164 c 128,-1,10 - 1367 1091 1367 1091 1274 1071 c 1,11,12 - 1337 920 1337 920 1337 717 c 0,13,14 - 1337 531 1337 531 1286 387 c 128,-1,15 - 1235 243 1235 243 1146.5 155.5 c 128,-1,16 - 1058 68 1058 68 946 24 c 128,-1,17 - 834 -20 834 -20 705 -20 c 0,18,19 - 621 -20 621 -20 537.5 7 c 128,-1,20 - 454 34 454 34 375 93 c 128,-1,21 - 296 152 296 152 235.5 236 c 128,-1,22 - 175 320 175 320 138.5 444.5 c 128,-1,23 - 102 569 102 569 102 717 c 128,-1,24 - 102 865 102 865 136.5 989.5 c 128,-1,25 - 171 1114 171 1114 228.5 1198.5 c 128,-1,26 - 286 1283 286 1283 362 1341.5 c 128,-1,27 - 438 1400 438 1400 520 1427 c 128,-1,28 - 602 1454 602 1454 686 1454 c 0,29,30 - 866 1454 866 1454 1018 1367 c 128,-1,31 - 1170 1280 1170 1280 1255 1112 c 1,32,33 - 1299 1123 1299 1123 1332.5 1151 c 128,-1,34 - 1366 1179 1366 1179 1366 1208 c 0,35,36 - 1366 1231 1366 1231 1350.5 1259 c 128,-1,37 - 1335 1287 1335 1287 1316 1310 c 128,-1,38 - 1297 1333 1297 1333 1281.5 1366.5 c 128,-1,39 - 1266 1400 1266 1400 1266 1434 c 0,0,1 -698 1352 m 0,40,41 - 553 1352 553 1352 461 1189.5 c 128,-1,42 - 369 1027 369 1027 369 717 c 0,43,44 - 369 586 369 586 389.5 478 c 128,-1,45 - 410 370 410 370 444 298 c 128,-1,46 - 478 226 478 226 523.5 176 c 128,-1,47 - 569 126 569 126 617.5 104 c 128,-1,48 - 666 82 666 82 717 82 c 0,49,50 - 875 82 875 82 973 244.5 c 128,-1,51 - 1071 407 1071 407 1071 717 c 0,52,53 - 1071 1040 1071 1040 970 1196 c 128,-1,54 - 869 1352 869 1352 698 1352 c 0,40,41 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ohorn -Encoding: 417 417 491 -Width: 1112 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> -VStem: 90 256<214 657> 715 256<223 634> 1030 121<737 940> -AnchorPoint: "top" 535 1004 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -930 983 m 0,0,1 - 930 1020 930 1020 966 1044.5 c 128,-1,2 - 1002 1069 1002 1069 1049 1069 c 0,3,4 - 1081 1069 1081 1069 1102.5 1055 c 128,-1,5 - 1124 1041 1124 1041 1134 1014 c 128,-1,6 - 1144 987 1144 987 1147.5 961 c 128,-1,7 - 1151 935 1151 935 1151 899 c 0,8,9 - 1151 790 1151 790 1093.5 717 c 128,-1,10 - 1036 644 1036 644 948 623 c 1,11,12 - 971 539 971 539 971 451 c 0,13,14 - 971 222 971 222 845 101 c 128,-1,15 - 719 -20 719 -20 512 -20 c 0,16,17 - 314 -20 314 -20 202 107 c 128,-1,18 - 90 234 90 234 90 451 c 0,19,20 - 90 555 90 555 127 645 c 128,-1,21 - 164 735 164 735 224 794.5 c 128,-1,22 - 284 854 284 854 359.5 888 c 128,-1,23 - 435 922 435 922 512 922 c 0,24,25 - 663 922 663 922 773.5 856.5 c 128,-1,26 - 884 791 884 791 934 666 c 1,27,28 - 973 678 973 678 1001.5 705 c 128,-1,29 - 1030 732 1030 732 1030 758 c 0,30,31 - 1030 786 1030 786 1005 822 c 128,-1,32 - 980 858 980 858 955 899 c 128,-1,33 - 930 940 930 940 930 983 c 0,0,1 -715 451 m 0,34,35 - 715 537 715 537 707 600.5 c 128,-1,36 - 699 664 699 664 680.5 715.5 c 128,-1,37 - 662 767 662 767 627.5 793 c 128,-1,38 - 593 819 593 819 543 819 c 0,39,40 - 435 819 435 819 390.5 725.5 c 128,-1,41 - 346 632 346 632 346 451 c 0,42,43 - 346 380 346 380 351 326 c 128,-1,44 - 356 272 356 272 369.5 224.5 c 128,-1,45 - 383 177 383 177 404.5 146.5 c 128,-1,46 - 426 116 426 116 461 99 c 128,-1,47 - 496 82 496 82 543 82 c 0,48,49 - 595 82 595 82 630 108 c 128,-1,50 - 665 134 665 134 683 186 c 128,-1,51 - 701 238 701 238 708 300.5 c 128,-1,52 - 715 363 715 363 715 451 c 0,34,35 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Uhorn -Encoding: 431 431 492 -Width: 1470 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1065 43<1247 1363> 1393 41G<156 422 981 1247> -VStem: 156 266<328 1434> 981 266<297 1065 1108 1434> 1436 121<1188 1391> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1432 basechar 0 -LayerCount: 2 -Fore -SplineSet -981 1434 m 1,0,-1 - 1247 1434 l 1,1,-1 - 1247 1108 l 1,2,-1 - 1286 1108 l 2,3,4 - 1339 1108 1339 1108 1387.5 1140.5 c 128,-1,5 - 1436 1173 1436 1173 1436 1208 c 0,6,7 - 1436 1231 1436 1231 1420 1259 c 128,-1,8 - 1404 1287 1404 1287 1385.5 1310 c 128,-1,9 - 1367 1333 1367 1333 1351 1366.5 c 128,-1,10 - 1335 1400 1335 1400 1335 1434 c 0,11,12 - 1335 1471 1335 1471 1371 1495.5 c 128,-1,13 - 1407 1520 1407 1520 1454 1520 c 0,14,15 - 1486 1520 1486 1520 1507.5 1506 c 128,-1,16 - 1529 1492 1529 1492 1539 1465 c 128,-1,17 - 1549 1438 1549 1438 1552.5 1412 c 128,-1,18 - 1556 1386 1556 1386 1556 1350 c 0,19,20 - 1556 1219 1556 1219 1476 1142 c 128,-1,21 - 1396 1065 1396 1065 1286 1065 c 2,22,-1 - 1247 1065 l 1,23,-1 - 1247 610 l 2,24,25 - 1247 461 1247 461 1217.5 348.5 c 128,-1,26 - 1188 236 1188 236 1139 167 c 128,-1,27 - 1090 98 1090 98 1017 55 c 128,-1,28 - 944 12 944 12 867 -4 c 128,-1,29 - 790 -20 790 -20 696 -20 c 0,30,31 - 625 -20 625 -20 556 -4.5 c 128,-1,32 - 487 11 487 11 412.5 55 c 128,-1,33 - 338 99 338 99 283 166.5 c 128,-1,34 - 228 234 228 234 192 348.5 c 128,-1,35 - 156 463 156 463 156 610 c 2,36,-1 - 156 1434 l 1,37,-1 - 422 1434 l 1,38,-1 - 422 610 l 2,39,40 - 422 480 422 480 439 382.5 c 128,-1,41 - 456 285 456 285 482.5 229 c 128,-1,42 - 509 173 509 173 548.5 138.5 c 128,-1,43 - 588 104 588 104 625.5 93 c 128,-1,44 - 663 82 663 82 709 82 c 0,45,46 - 759 82 759 82 797.5 95.5 c 128,-1,47 - 836 109 836 109 871.5 144.5 c 128,-1,48 - 907 180 907 180 930.5 238 c 128,-1,49 - 954 296 954 296 967.5 390 c 128,-1,50 - 981 484 981 484 981 610 c 2,51,-1 - 981 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uhorn -Encoding: 432 432 493 -Width: 1173 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 614 43<944 1054> 860 41G<143 399 688 944> -VStem: 143 256<163 901> 688 256<91 614 657 901> 1126 121<738 940> -AnchorPoint: "top" 549 1004 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -688 106 m 1,0,-1 - 688 901 l 1,1,-1 - 944 901 l 1,2,-1 - 944 657 l 1,3,-1 - 977 657 l 2,4,5 - 1029 657 1029 657 1077.5 690 c 128,-1,6 - 1126 723 1126 723 1126 758 c 0,7,8 - 1126 786 1126 786 1101 822 c 128,-1,9 - 1076 858 1076 858 1051 899 c 128,-1,10 - 1026 940 1026 940 1026 983 c 0,11,12 - 1026 1020 1026 1020 1062 1044.5 c 128,-1,13 - 1098 1069 1098 1069 1145 1069 c 0,14,15 - 1177 1069 1177 1069 1198.5 1055 c 128,-1,16 - 1220 1041 1220 1041 1230 1014 c 128,-1,17 - 1240 987 1240 987 1243.5 961 c 128,-1,18 - 1247 935 1247 935 1247 899 c 0,19,20 - 1247 768 1247 768 1167 691 c 128,-1,21 - 1087 614 1087 614 977 614 c 2,22,-1 - 944 614 l 1,23,-1 - 944 0 l 1,24,-1 - 690 0 l 1,25,26 - 617 -20 617 -20 541 -20 c 0,27,28 - 329 -20 329 -20 236 84 c 128,-1,29 - 143 188 143 188 143 410 c 2,30,-1 - 143 901 l 1,31,-1 - 399 901 l 1,32,-1 - 399 434 l 2,33,34 - 399 285 399 285 412.5 213 c 128,-1,35 - 426 141 426 141 461.5 111.5 c 128,-1,36 - 497 82 497 82 571 82 c 0,37,38 - 636 82 636 82 688 106 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ebreve -Encoding: 276 276 494 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1516 137<492 737> -VStem: 174 266<102 799 901 1331> 383 78<1692 1714> 768 78<1692 1714> -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 614 1767 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 S 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ebreve -Encoding: 277 277 495 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1085 137<408 653> -VStem: 90 256<235 451 553 656> 299 78<1262 1283> 684 78<1262 1283> -AnchorPoint: "top" 530 1352 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ibreve -Encoding: 300 300 496 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1516 137<181 425> -VStem: 72 78<1692 1714> 172 266<0 1434> 457 78<1692 1714> -AnchorPoint: "top" 303 1767 basechar 0 -AnchorPoint: "horn" 338 1085 basechar 0 -AnchorPoint: "cedilla" 317 0 basechar 0 -AnchorPoint: "bottom" 299 0 basechar 0 -AnchorPoint: "ogonek" 283 0 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 891 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ibreve -Encoding: 301 301 497 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1085 137<128 372> -VStem: 18 78<1262 1283> 123 256<0 901> 403 78<1262 1283> -AnchorPoint: "ogonek" 326 0 basechar 0 -AnchorPoint: "bottom" 250 0 basechar 0 -AnchorPoint: "cedilla" 256 0 basechar 0 -AnchorPoint: "horn" 297 717 basechar 0 -AnchorPoint: "top" 252 1352 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 838 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Obreve -Encoding: 334 334 498 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1516 137<584 829> -VStem: 102 266<424 1012> 475 78<1692 1714> 860 78<1692 1714> 1071 266<414 1009> -AnchorPoint: "top" 707 1757 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: obreve -Encoding: 335 335 499 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1085 137<412 657> -VStem: 90 256<214 657> 303 78<1262 1283> 688 78<1262 1283> 715 256<223 678> -AnchorPoint: "top" 535 1354 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EA0 -Encoding: 7840 7840 500 -Width: 1298 -VWidth: 0 -Flags: W -HStem: -272 170<561 731> 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> -VStem: 561 170<-272 -102> -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "top" 651 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1237 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA1 -Encoding: 7841 7841 501 -Width: 974 -VWidth: 0 -Flags: W -HStem: -272 170<387 557> -20 102<401 601> 520 102<400 596> 819 102<338 551> -VStem: 94 256<132 467> 387 170<-272 -102> 602 256<87 518 616 771> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1063 0 2 -Validated: 1 -EndChar - -StartChar: uni1EB8 -Encoding: 7864 7864 502 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -272 170<543 713> 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> -VStem: 174 266<102 799 901 1331> 543 170<-272 -102> -AnchorPoint: "horn" 942 1384 basechar 0 -AnchorPoint: "cedilla" 641 0 basechar 0 -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 614 1438 basechar 0 -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1219 0 2 -Validated: 1 -EndChar - -StartChar: uni1EB9 -Encoding: 7865 7865 503 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -272 170<453 623> -20 102<441 705> 451 102<350 684> 819 102<425 629> -VStem: 90 256<235 451 553 656> 453 170<-272 -102> -AnchorPoint: "top" 530 1004 basechar 0 -AnchorPoint: "ogonek" 588 0 basechar 0 -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 569 0 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1128 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA2 -Encoding: 7842 7842 504 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1683 61<567 693> -VStem: 625 51<1473 1541> 696 115<1582 1683> -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1239 246 2 -Validated: 1 -EndChar - -StartChar: uni1EA3 -Encoding: 7843 7843 505 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1253 61<405 532> -VStem: 94 256<132 467> 463 51<1042 1111> 535 115<1152 1253> 602 256<87 518 616 771> -LayerCount: 2 -Fore -Refer: 1 97 S 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1077 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EA4 -Encoding: 7844 7844 506 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43<39 306 937 1204> 332 102<453 791> 1264 299 1481 301 -VStem: 344 551 741 340 -LayerCount: 2 -Fore -Refer: 591 58624 S 1 0 0 1 594 0 2 -Refer: 94 770 S 1 0 0 1 1206 6 2 -Refer: 588 57344 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA5 -Encoding: 7845 7845 507 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1022 299 1239 301 -VStem: 94 256<132 467> 242 551 602 256<87 518 616 771> 639 340 -LayerCount: 2 -Fore -Refer: 591 58624 N 1 0 0 1 492 -242 2 -Refer: 94 770 N 1 0 0 1 1104 -236 2 -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA6 -Encoding: 7846 7846 508 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 306 937 1204> 332 102<453 791> 1268 299 1477 301 -VStem: 344 551 621 340 -LayerCount: 2 -Fore -Refer: 592 58625 N 1 0 0 1 473 -4 2 -Refer: 94 770 N 1 0 0 1 1206 10 2 -Refer: 588 57344 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA7 -Encoding: 7847 7847 509 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1022 299 1235 301 -VStem: 94 256<132 467> 184 551 461 340 602 256<87 518 616 771> -LayerCount: 2 -Fore -Refer: 592 58625 N 1 0 0 1 313 -246 2 -Refer: 94 770 N 1 0 0 1 1047 -236 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EA8 -Encoding: 7848 7848 510 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43<39 306 937 1204> 332 102<453 791> 1264 299 1737 61<775 902> -VStem: 344 551 834 51<1526 1594> 905 115<1636 1736> -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1206 6 2 -Refer: 588 57344 N 1 0 0 1 0 0 2 -Refer: 480 777 S 1 0 0 1 1448 299 2 -Validated: 1 -EndChar - -StartChar: uni1EA9 -Encoding: 7849 7849 511 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1018 299 1491 61<616 743> -VStem: 94 256<132 467> 184 551 602 256<87 518 616 771> 674 51<1280 1349> 745 115<1390 1491> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1047 -240 2 -Refer: 480 777 N 1 0 0 1 1288 53 2 -Refer: 1 97 S 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EAA -Encoding: 7850 7850 512 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43<39 306 937 1204> 332 102<453 791> 1264 299 1618 141<659 857> 1683 141<474 673> -VStem: 344 551 383 84<1618 1670> 864 84<1772 1825> -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1206 6 2 -Refer: 588 57344 N 1 0 0 1 0 0 2 -Refer: 95 771 S 1 0 0 1 1243 348 2 -Validated: 1 -EndChar - -StartChar: uni1EAB -Encoding: 7851 7851 513 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1018 299 1372 141<499 697> 1438 141<314 513> -VStem: 94 256<132 467> 184 551 223 84<1372 1425> 602 256<87 518 616 771> 705 84<1527 1579> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1047 -240 2 -Refer: 95 771 N 1 0 0 1 1083 102 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EAC -Encoding: 7852 7852 514 -Width: 1298 -VWidth: 0 -Flags: W -HStem: -272 170<561 731> 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1503 299 -VStem: 377 551 561 170<-272 -102> -LayerCount: 2 -Fore -Refer: 500 7840 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1239 246 2 -Validated: 1 -EndChar - -StartChar: uni1EAD -Encoding: 7853 7853 515 -Width: 974 -VWidth: 0 -Flags: W -HStem: -272 170<387 557> -20 102<401 601> 520 102<400 596> 819 102<338 551> 1073 299 -VStem: 94 256<132 467> 215 551 387 170<-272 -102> 602 256<87 518 616 771> -LayerCount: 2 -Fore -Refer: 501 7841 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1077 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EAE -Encoding: 7854 7854 516 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43<39 306 937 1204> 332 102<453 791> 1294 137<511 755> 1481 301 -VStem: 401 78<1471 1492> 578 340 786 78<1471 1492> -LayerCount: 2 -Fore -Refer: 591 58624 N 1 0 0 1 430 0 2 -Refer: 97 774 S 1 0 0 1 1221 25 2 -Refer: 588 57344 S 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EAF -Encoding: 7855 7855 517 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1090 137<359 604> 1276 301 -VStem: 94 256<132 467> 250 78<1266 1288> 426 340 602 256<87 518 616 771> 635 78<1266 1288> -LayerCount: 2 -Fore -Refer: 591 58624 N 1 0 0 1 279 -205 2 -Refer: 97 774 N 1 0 0 1 1069 -180 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EB0 -Encoding: 7856 7856 518 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43<39 306 937 1204> 332 102<453 791> 1294 137<511 755> 1481 301 -VStem: 360 340 401 78<1471 1492> 786 78<1471 1492> -LayerCount: 2 -Fore -Refer: 592 58625 S 1 0 0 1 213 0 2 -Refer: 588 57344 N 1 0 0 1 0 0 2 -Refer: 97 774 S 1 0 0 1 1221 25 2 -Validated: 1 -EndChar - -StartChar: uni1EB1 -Encoding: 7857 7857 519 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1090 137<345 589> 1276 301 -VStem: 94 256<132 467> 195 340 236 78<1266 1288> 602 256<87 518 616 771> 621 78<1266 1288> -LayerCount: 2 -Fore -Refer: 592 58625 N 1 0 0 1 47 -205 2 -Refer: 97 774 N 1 0 0 1 1055 -180 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EB2 -Encoding: 7858 7858 520 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43<39 306 937 1204> 332 102<453 791> 1294 137<511 755> 1726 61<544 671> -VStem: 401 78<1471 1492> 602 51<1516 1584> 674 115<1625 1726> 786 78<1471 1492> -LayerCount: 2 -Fore -Refer: 97 774 S 1 0 0 1 1221 25 2 -Refer: 588 57344 N 1 0 0 1 0 0 2 -Refer: 480 777 S 1 0 0 1 1217 289 2 -Validated: 1 -EndChar - -StartChar: uni1EB3 -Encoding: 7859 7859 521 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1090 137<341 585> 1522 61<374 501> -VStem: 94 256<132 467> 231 78<1266 1288> 432 51<1311 1379> 504 115<1421 1521> 602 256<87 518 616 771> 616 78<1266 1288> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1051 -180 2 -Refer: 480 777 N 1 0 0 1 1047 84 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EB4 -Encoding: 7860 7860 522 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43<39 306 937 1204> 332 102<453 791> 1294 137<511 755> 1587 141<659 857> 1653 141<474 673> -VStem: 383 84<1587 1640> 401 78<1471 1492> 786 78<1471 1492> 864 84<1742 1794> -LayerCount: 2 -Fore -Refer: 97 774 S 1 0 0 1 1221 25 2 -Refer: 588 57344 N 1 0 0 1 0 0 2 -Refer: 95 771 S 1 0 0 1 1243 317 2 -Validated: 1 -EndChar - -StartChar: uni1EB5 -Encoding: 7861 7861 523 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1090 137<339 583> 1382 141<486 685> 1448 141<302 501> -VStem: 94 256<132 467> 211 84<1382 1435> 229 78<1266 1288> 602 256<87 518 616 771> 614 78<1266 1288> 692 84<1537 1589> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1049 -180 2 -Refer: 95 771 N 1 0 0 1 1071 113 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EB6 -Encoding: 7862 7862 524 -Width: 1298 -VWidth: 0 -Flags: W -HStem: -272 170<561 731> 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1516 137<529 773> -VStem: 420 78<1692 1714> 561 170<-272 -102> 805 78<1692 1714> -LayerCount: 2 -Fore -Refer: 500 7840 N 1 0 0 1 0 0 3 -Refer: 97 774 S 1 0 0 1 1239 246 2 -Validated: 1 -EndChar - -StartChar: uni1EB7 -Encoding: 7863 7863 525 -Width: 974 -VWidth: 0 -Flags: W -HStem: -272 170<387 557> -20 102<401 601> 520 102<400 596> 819 102<338 551> 1085 137<367 612> -VStem: 94 256<132 467> 258 78<1262 1283> 387 170<-272 -102> 602 256<87 518 616 771> 643 78<1262 1283> -LayerCount: 2 -Fore -Refer: 501 7841 N 1 0 0 1 0 0 3 -Refer: 97 774 N 1 0 0 1 1077 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EBA -Encoding: 7866 7866 526 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1683 61<530 657> -VStem: 174 266<102 799 901 1331> 588 51<1473 1541> 659 115<1582 1683> -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1202 246 2 -Validated: 1 -EndChar - -StartChar: uni1EBB -Encoding: 7867 7867 527 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1253 61<446 573> -VStem: 90 256<235 451 553 656> 504 51<1042 1111> 575 115<1152 1253> -LayerCount: 2 -Fore -Refer: 3 101 S 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1118 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EBC -Encoding: 7868 7868 528 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1516 141<618 816> 1581 141<433 632> -VStem: 174 266<102 799 901 1331> 342 84<1516 1568> 823 84<1670 1722> -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1202 246 2 -Validated: 1 -EndChar - -StartChar: uni1EBD -Encoding: 7869 7869 529 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1085 141<534 732> 1151 141<349 548> -VStem: 90 256<235 451 553 656> 258 84<1085 1138> 739 84<1240 1292> -LayerCount: 2 -Fore -Refer: 3 101 S 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1118 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EBE -Encoding: 7870 7870 530 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 664 102<440 817> 1126 102<440 1001> 1264 299 1481 301 -VStem: 174 266<102 664 766 1126> 344 551 741 340 -LayerCount: 2 -Fore -Refer: 591 58624 S 1 0 0 1 594 0 2 -Refer: 94 770 S 1 0 0 1 1206 6 2 -Refer: 589 57371 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EBF -Encoding: 7871 7871 531 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1059 299 1276 301 -VStem: 90 256<235 451 553 656> 258 551 655 340 -LayerCount: 2 -Fore -Refer: 591 58624 N 1 0 0 1 508 -205 2 -Refer: 94 770 N 1 0 0 1 1120 -199 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EC0 -Encoding: 7872 7872 532 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 664 102<440 817> 1126 102<440 1001> 1268 299 1477 301 -VStem: 174 266<102 664 766 1126> 344 551 621 340 -LayerCount: 2 -Fore -Refer: 592 58625 N 1 0 0 1 473 -4 2 -Refer: 94 770 N 1 0 0 1 1206 10 2 -Refer: 589 57371 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EC1 -Encoding: 7873 7873 533 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1063 299 1276 301 -VStem: 90 256<235 451 553 656> 252 551 528 340 -LayerCount: 2 -Fore -Refer: 592 58625 N 1 0 0 1 381 -205 2 -Refer: 94 770 N 1 0 0 1 1114 -195 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EC2 -Encoding: 7874 7874 534 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 664 102<440 817> 1126 102<440 1001> 1264 299 1737 61<775 902> -VStem: 174 266<102 664 766 1126> 344 551 834 51<1526 1594> 905 115<1636 1736> -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1206 6 2 -Refer: 480 777 S 1 0 0 1 1448 299 2 -Refer: 589 57371 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EC3 -Encoding: 7875 7875 535 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1059 299 1532 61<683 810> -VStem: 90 256<235 451 553 656> 252 551 741 51<1321 1389> 813 115<1431 1532> -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1114 -199 2 -Refer: 480 777 S 1 0 0 1 1356 94 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EC4 -Encoding: 7876 7876 536 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 664 102<440 817> 1126 102<440 1001> 1264 299 1618 141<659 857> 1683 141<474 673> -VStem: 174 266<102 664 766 1126> 344 551 383 84<1618 1670> 864 84<1772 1825> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1206 6 2 -Refer: 95 771 N 1 0 0 1 1243 348 2 -Refer: 589 57371 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EC5 -Encoding: 7877 7877 537 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1059 299 1413 141<566 765> 1479 141<382 581> -VStem: 90 256<235 451 553 656> 252 551 291 84<1413 1466> 772 84<1568 1620> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1114 -199 2 -Refer: 95 771 N 1 0 0 1 1151 143 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EC6 -Encoding: 7878 7878 538 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -272 170<543 713> 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1503 299 -VStem: 174 266<102 799 901 1331> 340 551 543 170<-272 -102> -LayerCount: 2 -Fore -Refer: 502 7864 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1202 246 2 -Validated: 1 -EndChar - -StartChar: uni1EC7 -Encoding: 7879 7879 539 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -272 170<453 623> -20 102<441 705> 451 102<350 684> 819 102<425 629> 1073 299 -VStem: 90 256<235 451 553 656> 256 551 453 170<-272 -102> -LayerCount: 2 -Fore -Refer: 503 7865 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1118 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EC8 -Encoding: 7880 7880 540 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1683 61<177 304> -VStem: 172 266<0 1434> 236 51<1473 1541> 307 115<1582 1683> -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 850 246 2 -Validated: 1 -EndChar - -StartChar: uni1EC9 -Encoding: 7881 7881 541 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1253 61<122 249> -VStem: 123 256<0 901> 180 51<1042 1111> 252 115<1152 1253> -LayerCount: 2 -Fore -Refer: 112 305 N 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 795 -184 2 -Validated: 1 -EndChar - -StartChar: uni1ECA -Encoding: 7882 7882 542 -Width: 606 -VWidth: 0 -Flags: W -HStem: -293 170<220 390> 0 43<172 438> 1393 41<172 438> -VStem: 172 266<0 1434> 220 170<-293 -123> -AnchorPoint: "top" 309 1434 basechar 0 -AnchorPoint: "ogonek" 283 0 basechar 0 -AnchorPoint: "bottom" 299 0 basechar 0 -AnchorPoint: "cedilla" 317 0 basechar 0 -AnchorPoint: "horn" 338 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 896 -20 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECB -Encoding: 7883 7883 543 -Width: 499 -VWidth: 0 -Flags: W -HStem: -293 170<166 336> 0 43<123 379> 860 41<123 379> 1065 164<143 358> -VStem: 123 256<0 901> 143 215<1065 1229> 166 170<-293 -123> -AnchorPoint: "ogonek" 326 0 basechar 0 -AnchorPoint: "bottom" 250 0 basechar 0 -AnchorPoint: "cedilla" 256 0 basechar 0 -AnchorPoint: "horn" 297 717 basechar 0 -AnchorPoint: "top" 252 1167 basechar 0 -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 842 -20 2 -Refer: 8 105 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECC -Encoding: 7884 7884 544 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -272 170<635 805> -20 102<587 861> 1352 102<565 855> -VStem: 102 266<424 1012> 635 170<-272 -102> 1071 266<414 1009> -CounterMasks: 1 1c -AnchorPoint: "top" 707 1434 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1311 0 2 -Validated: 1 -EndChar - -StartChar: uni1ECD -Encoding: 7885 7885 545 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -272 170<430 600> -20 102<425 644> 819 102<426 643> -VStem: 90 256<214 657> 430 170<-272 -102> 715 256<223 678> -AnchorPoint: "top" 535 1004 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1106 0 2 -Validated: 1 -EndChar - -StartChar: uni1ECE -Encoding: 7886 7886 546 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1683 61<622 749> -VStem: 102 266<424 1012> 680 51<1473 1541> 752 115<1582 1683> 1071 266<414 1009> -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1294 246 2 -Validated: 1 -EndChar - -StartChar: uni1ECF -Encoding: 7887 7887 547 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1253 61<450 577> -VStem: 90 256<214 657> 508 51<1042 1111> 580 115<1152 1253> 715 256<223 678> -LayerCount: 2 -Fore -Refer: 9 111 S 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1122 -184 2 -Validated: 1 -EndChar - -StartChar: uni1ED0 -Encoding: 7888 7888 548 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -18 102<572 877> 1145 102<552 871> 1264 299 1481 301 -VStem: 102 266<365 872> 446 551 844 340 1071 266<356 870> -LayerCount: 2 -Fore -Refer: 591 58624 N 1 0 0 1 696 0 2 -Refer: 94 770 N 1 0 0 1 1309 6 2 -Refer: 590 57441 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1ED1 -Encoding: 7889 7889 549 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1059 299 1276 301 -VStem: 90 256<214 657> 256 551 653 340 715 256<223 678> -LayerCount: 2 -Fore -Refer: 591 58624 N 1 0 0 1 506 -205 2 -Refer: 94 770 N 1 0 0 1 1118 -199 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED2 -Encoding: 7890 7890 550 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -18 102<572 877> 1145 102<552 871> 1268 299 1477 301 -VStem: 102 266<365 872> 446 551 723 340 1071 266<356 870> -LayerCount: 2 -Fore -Refer: 592 58625 N 1 0 0 1 575 -4 2 -Refer: 94 770 N 1 0 0 1 1309 10 2 -Refer: 590 57441 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1ED3 -Encoding: 7891 7891 551 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1063 299 1284 301 -VStem: 90 256<214 657> 256 551 532 340 715 256<223 678> -LayerCount: 2 -Fore -Refer: 592 58625 N 1 0 0 1 385 -197 2 -Refer: 94 770 N 1 0 0 1 1118 -195 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED4 -Encoding: 7892 7892 552 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -18 102<572 877> 1145 102<552 871> 1264 299 1737 61<878 1005> -VStem: 102 266<365 872> 446 551 936 51<1526 1594> 1008 115<1636 1736> 1071 266<356 870> -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1309 6 2 -Refer: 480 777 S 1 0 0 1 1550 299 2 -Refer: 590 57441 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1ED5 -Encoding: 7893 7893 553 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1059 299 1532 61<687 814> -VStem: 90 256<214 657> 256 551 715 256<223 678> 745 51<1321 1389> 817 115<1431 1532> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1118 -199 2 -Refer: 480 777 N 1 0 0 1 1360 94 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED6 -Encoding: 7894 7894 554 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -18 102<572 877> 1145 102<552 871> 1264 299 1618 141<761 960> 1683 141<576 775> -VStem: 102 266<365 872> 446 551 485 84<1618 1670> 967 84<1772 1825> 1071 266<356 870> -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1309 6 2 -Refer: 95 771 S 1 0 0 1 1346 348 2 -Refer: 590 57441 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1ED7 -Encoding: 7895 7895 555 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1059 299 1413 141<570 769> 1479 141<386 585> -VStem: 90 256<214 657> 256 551 295 84<1413 1466> 715 256<223 678> 776 84<1568 1620> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1118 -199 2 -Refer: 95 771 N 1 0 0 1 1155 143 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED8 -Encoding: 7896 7896 556 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -272 170<635 805> -20 102<587 861> 1352 102<565 855> 1503 299 -VStem: 102 266<424 1012> 432 551 635 170<-272 -102> 1071 266<414 1009> -LayerCount: 2 -Fore -Refer: 544 7884 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1294 246 2 -Validated: 1 -EndChar - -StartChar: uni1ED9 -Encoding: 7897 7897 557 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -272 170<430 600> -20 102<425 644> 819 102<426 643> 1073 299 -VStem: 90 256<214 657> 260 551 430 170<-272 -102> 715 256<223 678> -LayerCount: 2 -Fore -Refer: 545 7885 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1122 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EDA -Encoding: 7898 7898 558 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 856> 1495 403 -VStem: 102 266<424 1012> 688 371 1071 266<414 1020> 1366 121<1187 1391> -LayerCount: 2 -Fore -Refer: 490 416 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1376 246 2 -Validated: 1 -EndChar - -StartChar: uni1EDB -Encoding: 7899 7899 559 -Width: 1112 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1065 403 -VStem: 90 256<214 657> 406 371 715 256<223 634> 1030 121<737 940> -LayerCount: 2 -Fore -Refer: 491 417 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1094 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EDC -Encoding: 7900 7900 560 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 856> 1495 403 -VStem: 102 266<424 1012> 395 371 1071 266<414 1020> 1366 121<1187 1391> -LayerCount: 2 -Fore -Refer: 490 416 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 1120 246 2 -Validated: 1 -EndChar - -StartChar: uni1EDD -Encoding: 7901 7901 561 -Width: 1112 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1065 403 -VStem: 90 256<214 657> 236 371 715 256<223 634> 1030 121<737 940> -LayerCount: 2 -Fore -Refer: 491 417 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 961 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EDE -Encoding: 7902 7902 562 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 856> 1683 61<642 769> -VStem: 102 266<424 1012> 700 51<1473 1541> 772 115<1582 1683> 1071 266<414 1020> 1366 121<1187 1391> -LayerCount: 2 -Fore -Refer: 490 416 N 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1315 246 2 -Validated: 1 -EndChar - -StartChar: uni1EDF -Encoding: 7903 7903 563 -Width: 1112 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1253 61<421 548> -VStem: 90 256<214 657> 479 51<1042 1111> 551 115<1152 1253> 715 256<223 634> 1030 121<737 940> -LayerCount: 2 -Fore -Refer: 491 417 N 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1094 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EE0 -Encoding: 7904 7904 564 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 856> 1516 141<728 927> 1581 141<544 742> -VStem: 102 266<424 1012> 453 84<1516 1568> 934 84<1670 1722> 1071 266<414 1020> 1366 121<1187 1391> -LayerCount: 2 -Fore -Refer: 490 416 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1313 246 2 -Validated: 1 -EndChar - -StartChar: uni1EE1 -Encoding: 7905 7905 565 -Width: 1112 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1085 141<546 745> 1151 141<361 560> -VStem: 90 256<214 657> 270 84<1085 1138> 715 256<223 634> 752 84<1240 1292> 1030 121<737 940> -LayerCount: 2 -Fore -Refer: 491 417 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1130 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EE2 -Encoding: 7906 7906 566 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -272 170<594 764> -20 102<587 861> 1352 102<565 856> -VStem: 102 266<424 1012> 594 170<-272 -102> 1071 266<414 1020> 1366 121<1187 1391> -AnchorPoint: "top" 707 1434 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 490 416 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1270 0 2 -Validated: 1 -EndChar - -StartChar: uni1EE3 -Encoding: 7907 7907 567 -Width: 1112 -VWidth: 0 -Flags: W -HStem: -272 170<430 600> -20 102<425 644> 819 102<426 643> -VStem: 90 256<214 657> 430 170<-272 -102> 715 256<223 634> 1030 121<737 940> -AnchorPoint: "top" 535 1004 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1106 0 2 -Refer: 491 417 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE4 -Encoding: 7908 7908 568 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -272 170<635 805> -20 102<564 848> 1393 41<156 422 981 1247> -VStem: 156 266<328 1434> 635 170<-272 -102> 981 266<297 1434> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1436 basechar 0 -LayerCount: 2 -Fore -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1311 0 2 -Validated: 1 -EndChar - -StartChar: uni1EE5 -Encoding: 7909 7909 569 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -272 170<446 616> -20 102<450 687> 860 41<143 399 688 944> -VStem: 143 256<163 901> 446 170<-272 -102> 688 256<91 901> -AnchorPoint: "top" 549 1004 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 19 117 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1122 0 2 -Validated: 1 -EndChar - -StartChar: uni1EE6 -Encoding: 7910 7910 570 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1683 61<636 763> -VStem: 156 266<328 1434> 694 51<1473 1541> 766 115<1582 1683> 981 266<297 1434> -LayerCount: 2 -Fore -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1309 246 2 -Validated: 1 -EndChar - -StartChar: uni1EE7 -Encoding: 7911 7911 571 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1253 61<464 591> -VStem: 143 256<163 901> 522 51<1042 1111> 594 115<1152 1253> 688 256<91 901> -LayerCount: 2 -Fore -Refer: 19 117 N 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1137 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EE8 -Encoding: 7912 7912 572 -Width: 1470 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1065 43<1247 1363> 1393 41<156 422 981 1247> 1495 403 -VStem: 156 266<328 1434> 674 371 981 266<297 1065 1108 1434> 1436 121<1188 1391> -LayerCount: 2 -Fore -Refer: 492 431 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1362 246 2 -Validated: 1 -EndChar - -StartChar: uni1EE9 -Encoding: 7913 7913 573 -Width: 1173 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 614 43<944 1054> 860 41<143 399 688 944> 1065 403 -VStem: 143 256<163 901> 514 371 688 256<91 614 657 901> 1126 121<738 940> -LayerCount: 2 -Fore -Refer: 493 432 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1202 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EEA -Encoding: 7914 7914 574 -Width: 1470 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1065 43<1247 1363> 1393 41<156 422 981 1247> 1495 403 -VStem: 156 266<328 1434> 438 371 981 266<297 1065 1108 1434> 1436 121<1188 1391> -LayerCount: 2 -Fore -Refer: 492 431 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 1163 246 2 -Validated: 1 -EndChar - -StartChar: uni1EEB -Encoding: 7915 7915 575 -Width: 1173 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 614 43<944 1054> 860 41<143 399 688 944> 1065 403 -VStem: 143 256<163 901> 238 371 688 256<91 614 657 901> 1126 121<738 940> -LayerCount: 2 -Fore -Refer: 493 432 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 963 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EEC -Encoding: 7916 7916 576 -Width: 1470 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1065 43<1247 1363> 1393 41<156 422 981 1247> 1683 61<562 689> -VStem: 156 266<328 1434> 621 51<1473 1541> 692 115<1582 1683> 981 266<297 1065 1108 1434> 1436 121<1188 1391> -LayerCount: 2 -Fore -Refer: 492 431 N 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1235 246 2 -Validated: 1 -EndChar - -StartChar: uni1EED -Encoding: 7917 7917 577 -Width: 1173 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 614 43<944 1054> 860 41<143 399 688 944> 1253 61<423 550> -VStem: 143 256<163 901> 481 51<1042 1111> 553 115<1152 1253> 688 256<91 614 657 901> 1126 121<738 940> -LayerCount: 2 -Fore -Refer: 493 432 N 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1096 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EEE -Encoding: 7918 7918 578 -Width: 1470 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1065 43<1247 1363> 1393 41<156 422 981 1247> 1516 141<650 849> 1581 141<466 664> -VStem: 156 266<328 1434> 375 84<1516 1568> 856 84<1670 1722> 981 266<297 1065 1108 1434> 1436 121<1188 1391> -LayerCount: 2 -Fore -Refer: 492 431 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1235 246 2 -Validated: 1 -EndChar - -StartChar: uni1EEF -Encoding: 7919 7919 579 -Width: 1173 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 614 43<944 1054> 860 41<143 399 688 944> 1085 141<511 710> 1151 141<327 525> -VStem: 143 256<163 901> 236 84<1085 1138> 688 256<91 614 657 901> 717 84<1240 1292> 1126 121<738 940> -LayerCount: 2 -Fore -Refer: 493 432 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1096 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EF0 -Encoding: 7920 7920 580 -Width: 1470 -VWidth: 0 -Flags: W -HStem: -272 170<623 793> -20 102<564 848> 1065 43<1247 1363> 1393 41<156 422 981 1247> -VStem: 156 266<328 1434> 623 170<-272 -102> 981 266<297 1065 1108 1434> 1436 121<1188 1391> -AnchorPoint: "cedilla" 692 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "top" 721 1430 basechar 0 -LayerCount: 2 -Fore -Refer: 492 431 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1298 0 2 -Validated: 1 -EndChar - -StartChar: uni1EF1 -Encoding: 7921 7921 581 -Width: 1173 -VWidth: 0 -Flags: W -HStem: -272 170<467 637> -20 102<450 687> 614 43<944 1054> 860 41<143 399 688 944> -VStem: 143 256<163 901> 467 170<-272 -102> 688 256<91 614 657 901> 1126 121<738 940> -AnchorPoint: "top" 549 1004 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -Refer: 493 432 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1143 0 2 -Validated: 1 -EndChar - -StartChar: uni1EF4 -Encoding: 7924 7924 582 -Width: 989 -VWidth: 0 -Flags: W -HStem: -272 170<428 598> 0 43<383 649> 1393 41<23 301 768 973> -VStem: 383 266<0 727> 428 170<-272 -102> -AnchorPoint: "top" 477 1434 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "ogonek" 510 0 basechar 0 -AnchorPoint: "cedilla" 492 0 basechar 0 -AnchorPoint: "horn" 725 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1104 0 2 -Validated: 1 -EndChar - -StartChar: uni1EF5 -Encoding: 7925 7925 583 -Width: 923 -VWidth: 0 -Flags: W -HStem: -408 170<528 698> -348 102<211 326> 860 41<88 324 729 907> -VStem: 528 170<-408 -238> -AnchorPoint: "horn" 762 717 basechar 0 -AnchorPoint: "cedilla" 242 -328 basechar 0 -AnchorPoint: "bottom" 365 -315 basechar 0 -AnchorPoint: "ogonek" 614 0 basechar 0 -AnchorPoint: "top" 506 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 24 121 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1204 -135 2 -Validated: 1 -EndChar - -StartChar: uni1EF6 -Encoding: 7926 7926 584 -Width: 989 -VWidth: 0 -Flags: W -HStem: 0 43<383 649> 1393 41<23 301 768 973> 1683 61<429 556> -VStem: 383 266<0 727> 487 51<1473 1541> 559 115<1582 1683> -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1102 246 2 -Validated: 1 -EndChar - -StartChar: uni1EF7 -Encoding: 7927 7927 585 -Width: 923 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 860 41<88 324 729 907> 1253 61<419 546> -VStem: 477 51<1042 1111> 549 115<1152 1253> -LayerCount: 2 -Fore -Refer: 24 121 N 1 0 0 1 0 0 3 -Refer: 480 777 N 1 0 0 1 1092 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EF8 -Encoding: 7928 7928 586 -Width: 989 -VWidth: 0 -Flags: W -HStem: 0 43<383 649> 1393 41<23 301 768 973> 1516 141<517 716> 1581 141<333 531> -VStem: 242 84<1516 1568> 383 266<0 727> 723 84<1670 1722> -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1102 246 2 -Validated: 1 -EndChar - -StartChar: uni1EF9 -Encoding: 7929 7929 587 -Width: 923 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 860 41<88 324 729 907> 1085 141<507 706> 1151 141<322 521> -VStem: 231 84<1085 1138> 713 84<1240 1292> -LayerCount: 2 -Fore -Refer: 24 121 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1092 -184 2 -Validated: 1 -EndChar - -StartChar: a.sc -Encoding: 57344 57344 588 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43G<39 306 937 1204> 332 102<453 791> -LayerCount: 2 -Fore -SplineSet -414 332 m 1,0,-1 - 291 0 l 1,1,-1 - 39 0 l 1,2,-1 - 485 1229 l 1,3,-1 - 758 1229 l 1,4,-1 - 1204 0 l 1,5,-1 - 952 0 l 1,6,-1 - 827 332 l 1,7,-1 - 414 332 l 1,0,-1 -453 434 m 1,8,-1 - 791 434 l 1,9,-1 - 621 885 l 1,10,-1 - 453 434 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: e.sc -Encoding: 57371 57371 589 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 664 102<440 817> 1126 102<440 1001> -VStem: 174 266<102 664 766 1126> -LayerCount: 2 -Fore -SplineSet -1034 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1229 l 1,2,-1 - 1001 1229 l 1,3,-1 - 1001 1126 l 1,4,-1 - 440 1126 l 1,5,-1 - 440 766 l 1,6,-1 - 817 766 l 1,7,-1 - 817 664 l 1,8,-1 - 440 664 l 1,9,-1 - 440 102 l 1,10,-1 - 1034 102 l 1,11,-1 - 1034 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: o.sc -Encoding: 57441 57441 590 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -18 102<572 877> 1145 102<552 871> -VStem: 102 266<365 872> 1071 266<356 870> -LayerCount: 2 -Fore -SplineSet -705 -18 m 0,0,1 - 621 -18 621 -18 537.5 5 c 128,-1,2 - 454 28 454 28 375 79 c 128,-1,3 - 296 130 296 130 235.5 202 c 128,-1,4 - 175 274 175 274 138.5 380.5 c 128,-1,5 - 102 487 102 487 102 614 c 128,-1,6 - 102 741 102 741 136.5 847.5 c 128,-1,7 - 171 954 171 954 228.5 1026.5 c 128,-1,8 - 286 1099 286 1099 362 1150 c 128,-1,9 - 438 1201 438 1201 520 1224 c 128,-1,10 - 602 1247 602 1247 686 1247 c 0,11,12 - 788 1247 788 1247 882 1223.5 c 128,-1,13 - 976 1200 976 1200 1059.5 1149.5 c 128,-1,14 - 1143 1099 1143 1099 1204.5 1026.5 c 128,-1,15 - 1266 954 1266 954 1301.5 848 c 128,-1,16 - 1337 742 1337 742 1337 614 c 0,17,18 - 1337 455 1337 455 1286 331.5 c 128,-1,19 - 1235 208 1235 208 1146.5 133 c 128,-1,20 - 1058 58 1058 58 946 20 c 128,-1,21 - 834 -18 834 -18 705 -18 c 0,0,1 -698 1145 m 0,22,23 - 551 1145 551 1145 460 1011.5 c 128,-1,24 - 369 878 369 878 369 614 c 0,25,26 - 369 502 369 502 389.5 410.5 c 128,-1,27 - 410 319 410 319 444 259.5 c 128,-1,28 - 478 200 478 200 523.5 159.5 c 128,-1,29 - 569 119 569 119 617.5 101.5 c 128,-1,30 - 666 84 666 84 717 84 c 0,31,32 - 876 84 876 84 973.5 216.5 c 128,-1,33 - 1071 349 1071 349 1071 614 c 0,34,35 - 1071 755 1071 755 1043.5 859.5 c 128,-1,36 - 1016 964 1016 964 965 1025.5 c 128,-1,37 - 914 1087 914 1087 847.5 1116 c 128,-1,38 - 781 1145 781 1145 698 1145 c 0,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: stackingacute -Encoding: 58624 58624 591 -Width: 634 -VWidth: 0 -Flags: W -HStem: 1481 301 -VStem: 147 340 -LayerCount: 2 -Fore -SplineSet -324 1782 m 25,0,-1 - 487 1683 l 1,1,-1 - 211 1481 l 1,2,-1 - 147 1534 l 1,3,-1 - 324 1782 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: stackinggrave -Encoding: 58625 58625 592 -Width: 634 -VWidth: 0 -Flags: W -HStem: 1481 301 -VStem: 147 340 -LayerCount: 2 -Fore -SplineSet -311 1782 m 25,0,-1 - 487 1534 l 1,1,-1 - 424 1481 l 1,2,-1 - 147 1683 l 1,3,-1 - 311 1782 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0181 -Encoding: 385 385 593 -Width: 1398 -VWidth: 0 -Flags: W -HStem: 0 102<723 939> 727 102<723 856> 918 43G<240 313> 1331 102<360 457 723 884> -VStem: 41 238<1032 1259> 457 266<102 727 829 1325> 969 266<944 1243> 1055 266<216 579> -LayerCount: 2 -Fore -SplineSet -723 1331 m 1,0,-1 - 723 829 l 1,1,2 - 784 830 784 830 833.5 857 c 128,-1,3 - 883 884 883 884 911 923.5 c 128,-1,4 - 939 963 939 963 954 1003 c 128,-1,5 - 969 1043 969 1043 969 1075 c 0,6,7 - 969 1103 969 1103 964.5 1132.5 c 128,-1,8 - 960 1162 960 1162 946.5 1199 c 128,-1,9 - 933 1236 933 1236 911.5 1264 c 128,-1,10 - 890 1292 890 1292 852 1311.5 c 128,-1,11 - 814 1331 814 1331 764 1331 c 2,12,-1 - 723 1331 l 1,0,-1 -1063 795 m 1,13,14 - 1191 743 1191 743 1256 629.5 c 128,-1,15 - 1321 516 1321 516 1321 387 c 0,16,17 - 1321 308 1321 308 1295 240 c 128,-1,18 - 1269 172 1269 172 1216 117 c 128,-1,19 - 1163 62 1163 62 1073 31 c 128,-1,20 - 983 0 983 0 866 0 c 2,21,-1 - 457 0 l 1,22,-1 - 457 1325 l 1,23,24 - 370 1311 370 1311 324.5 1260.5 c 128,-1,25 - 279 1210 279 1210 279 1139 c 0,26,27 - 279 1124 279 1124 280 1112 c 128,-1,28 - 281 1100 281 1100 283.5 1090 c 128,-1,29 - 286 1080 286 1080 287.5 1073 c 128,-1,30 - 289 1066 289 1066 294 1059.5 c 128,-1,31 - 299 1053 299 1053 301 1049 c 128,-1,32 - 303 1045 303 1045 309.5 1040.5 c 128,-1,33 - 316 1036 316 1036 318 1034.5 c 128,-1,34 - 320 1033 320 1033 327.5 1029 c 128,-1,35 - 335 1025 335 1025 336 1024 c 1,36,-1 - 299 918 l 1,37,38 - 233 927 233 927 178 949.5 c 128,-1,39 - 123 972 123 972 82 1018.5 c 128,-1,40 - 41 1065 41 1065 41 1128 c 0,41,42 - 41 1262 41 1262 158.5 1348 c 128,-1,43 - 276 1434 276 1434 457 1434 c 2,44,-1 - 825 1434 l 2,45,46 - 920 1434 920 1434 993 1414.5 c 128,-1,47 - 1066 1395 1066 1395 1111 1362.5 c 128,-1,48 - 1156 1330 1156 1330 1184.5 1283 c 128,-1,49 - 1213 1236 1213 1236 1224 1186 c 128,-1,50 - 1235 1136 1235 1136 1235 1075 c 0,51,52 - 1235 1010 1235 1010 1193.5 929.5 c 128,-1,53 - 1152 849 1152 849 1063 795 c 1,13,14 -723 727 m 1,54,-1 - 723 102 l 1,55,-1 - 805 102 l 2,56,57 - 927 102 927 102 991 185.5 c 128,-1,58 - 1055 269 1055 269 1055 387 c 0,59,60 - 1055 464 1055 464 1030 539 c 128,-1,61 - 1005 614 1005 614 946 670.5 c 128,-1,62 - 887 727 887 727 805 727 c 2,63,-1 - 723 727 l 1,54,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni018A -Encoding: 394 394 594 -Width: 1587 -VWidth: 0 -Flags: W -HStem: 0 102<723 1023> 918 43G<240 313> 1331 102<360 457 723 1037> -VStem: 41 238<1032 1259> 457 266<102 1325> 1221 266<394 1073> -AnchorPoint: "cedilla" 831 0 basechar 0 -AnchorPoint: "ogonek" 831 0 basechar 0 -AnchorPoint: "horn" 1384 1085 basechar 0 -AnchorPoint: "bottom" 877 0 basechar 0 -AnchorPoint: "top" 864 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -723 1331 m 1,0,-1 - 723 102 l 1,1,-1 - 891 102 l 2,2,3 - 958 102 958 102 1016 138.5 c 128,-1,4 - 1074 175 1074 175 1121 249 c 128,-1,5 - 1168 323 1168 323 1194.5 448.5 c 128,-1,6 - 1221 574 1221 574 1221 737 c 0,7,8 - 1221 868 1221 868 1203 971.5 c 128,-1,9 - 1185 1075 1185 1075 1155 1141.5 c 128,-1,10 - 1125 1208 1125 1208 1082 1251.5 c 128,-1,11 - 1039 1295 1039 1295 992 1313 c 128,-1,12 - 945 1331 945 1331 891 1331 c 2,13,-1 - 723 1331 l 1,0,-1 -952 0 m 2,14,-1 - 457 0 l 1,15,-1 - 457 1325 l 1,16,17 - 370 1311 370 1311 324.5 1260.5 c 128,-1,18 - 279 1210 279 1210 279 1139 c 0,19,20 - 279 1124 279 1124 280 1112 c 128,-1,21 - 281 1100 281 1100 283.5 1090 c 128,-1,22 - 286 1080 286 1080 287.5 1073 c 128,-1,23 - 289 1066 289 1066 294 1059.5 c 128,-1,24 - 299 1053 299 1053 301 1049 c 128,-1,25 - 303 1045 303 1045 309.5 1040.5 c 128,-1,26 - 316 1036 316 1036 318 1034.5 c 128,-1,27 - 320 1033 320 1033 327.5 1029 c 128,-1,28 - 335 1025 335 1025 336 1024 c 1,29,-1 - 299 918 l 1,30,31 - 233 927 233 927 178 949.5 c 128,-1,32 - 123 972 123 972 82 1018.5 c 128,-1,33 - 41 1065 41 1065 41 1128 c 0,34,35 - 41 1262 41 1262 158.5 1348 c 128,-1,36 - 276 1434 276 1434 457 1434 c 2,37,-1 - 952 1434 l 2,38,39 - 1208 1434 1208 1434 1347.5 1265.5 c 128,-1,40 - 1487 1097 1487 1097 1487 737 c 0,41,42 - 1487 376 1487 376 1344 188 c 128,-1,43 - 1201 0 1201 0 952 0 c 2,14,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0253 -Encoding: 595 595 595 -Width: 1079 -VWidth: 0 -Flags: W -HStem: -20 102<441 662> 819 102<429 664> 1270 102<416 619> -VStem: 139 256<147 782 897 1228> 737 256<216 685> -LayerCount: 2 -Fore -SplineSet -139 1092 m 6,0,1 - 139 1164 139 1164 175.5 1220.5 c 128,-1,2 - 212 1277 212 1277 269.5 1308.5 c 128,-1,3 - 327 1340 327 1340 387.5 1356 c 128,-1,4 - 448 1372 448 1372 506 1372 c 0,5,6 - 636 1372 636 1372 713 1280 c 1,7,-1 - 584 1219 l 1,8,9 - 548 1270 548 1270 475 1270 c 0,10,11 - 448 1270 448 1270 431.5 1256.5 c 128,-1,12 - 415 1243 415 1243 407 1208.5 c 128,-1,13 - 399 1174 399 1174 397 1135 c 128,-1,14 - 395 1096 395 1096 395 1024 c 2,15,-1 - 395 897 l 1,16,17 - 468 922 468 922 549 922 c 0,18,19 - 668 922 668 922 756 885 c 128,-1,20 - 844 848 844 848 894.5 782 c 128,-1,21 - 945 716 945 716 969 633.5 c 128,-1,22 - 993 551 993 551 993 451 c 128,-1,23 - 993 351 993 351 968.5 268.5 c 128,-1,24 - 944 186 944 186 893 120 c 128,-1,25 - 842 54 842 54 754.5 17 c 128,-1,26 - 667 -20 667 -20 549 -20 c 0,27,28 - 481 -20 481 -20 427 -12 c 128,-1,29 - 373 -4 373 -4 317 20.5 c 128,-1,30 - 261 45 261 45 223.5 86.5 c 128,-1,31 - 186 128 186 128 162.5 200 c 128,-1,32 - 139 272 139 272 139 369 c 2,33,-1 - 139 1092 l 6,0,1 -395 745 m 1,34,-1 - 395 303 l 2,35,36 - 395 233 395 233 405.5 189 c 128,-1,37 - 416 145 416 145 441 121.5 c 128,-1,38 - 466 98 466 98 497.5 90 c 128,-1,39 - 529 82 529 82 580 82 c 0,40,41 - 623 82 623 82 655 114.5 c 128,-1,42 - 687 147 687 147 704 202 c 128,-1,43 - 721 257 721 257 729 319 c 128,-1,44 - 737 381 737 381 737 451 c 0,45,46 - 737 819 737 819 580 819 c 0,47,48 - 466 819 466 819 395 745 c 1,34,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0257 -Encoding: 599 599 596 -Width: 1161 -VWidth: 0 -Flags: W -HStem: -20 102<423 640> 0 43G<688 944> 819 102<423 621> 1264 102<965 1168> -VStem: 90 256<228 673> 688 256<0 4 132 737 883 1221> -LayerCount: 2 -Fore -SplineSet -944 0 m 1,0,-1 - 688 0 l 1,1,-1 - 688 4 l 1,2,3 - 606 -20 606 -20 504 -20 c 0,4,5 - 410 -20 410 -20 331.5 17.5 c 128,-1,6 - 253 55 253 55 200.5 119.5 c 128,-1,7 - 148 184 148 184 119 269.5 c 128,-1,8 - 90 355 90 355 90 451 c 0,9,10 - 90 580 90 580 139.5 686.5 c 128,-1,11 - 189 793 189 793 285 857.5 c 128,-1,12 - 381 922 381 922 504 922 c 0,13,14 - 602 922 602 922 688 883 c 1,15,-1 - 688 1085 l 2,16,17 - 688 1143 688 1143 712.5 1191.5 c 128,-1,18 - 737 1240 737 1240 776 1271.5 c 128,-1,19 - 815 1303 815 1303 864.5 1325 c 128,-1,20 - 914 1347 914 1347 962 1356.5 c 128,-1,21 - 1010 1366 1010 1366 1055 1366 c 0,22,23 - 1185 1366 1185 1366 1262 1274 c 1,24,-1 - 1133 1212 l 1,25,26 - 1096 1264 1096 1264 1024 1264 c 0,27,28 - 997 1264 997 1264 980.5 1250.5 c 128,-1,29 - 964 1237 964 1237 956 1202.5 c 128,-1,30 - 948 1168 948 1168 946 1129 c 128,-1,31 - 944 1090 944 1090 944 1018 c 2,32,-1 - 944 0 l 1,0,-1 -688 401 m 0,33,34 - 688 468 688 468 686 518 c 128,-1,35 - 684 568 684 568 675 628.5 c 128,-1,36 - 666 689 666 689 650 727.5 c 128,-1,37 - 634 766 634 766 605 792.5 c 128,-1,38 - 576 819 576 819 535 819 c 0,39,40 - 493 819 493 819 461 804.5 c 128,-1,41 - 429 790 429 790 408.5 761.5 c 128,-1,42 - 388 733 388 733 375 701 c 128,-1,43 - 362 669 362 669 356 623 c 128,-1,44 - 350 577 350 577 348 539 c 128,-1,45 - 346 501 346 501 346 451 c 128,-1,46 - 346 401 346 401 348 363 c 128,-1,47 - 350 325 350 325 356 279 c 128,-1,48 - 362 233 362 233 375.5 200.5 c 128,-1,49 - 389 168 389 168 409 139.5 c 128,-1,50 - 429 111 429 111 461 96.5 c 128,-1,51 - 493 82 493 82 535 82 c 0,52,53 - 570 82 570 82 595.5 91.5 c 128,-1,54 - 621 101 621 101 637.5 122.5 c 128,-1,55 - 654 144 654 144 664.5 168.5 c 128,-1,56 - 675 193 675 193 680 233 c 128,-1,57 - 685 273 685 273 686.5 309.5 c 128,-1,58 - 688 346 688 346 688 401 c 0,33,34 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni018E -Encoding: 398 398 597 -Width: 1122 -VWidth: 0 -Flags: W -HStem: 0 102<100 694> 799 102<317 694> 1331 102<133 694> -VStem: 694 266<102 799 901 1331> -AnchorPoint: "horn" 922 1085 basechar 0 -AnchorPoint: "cedilla" 514 0 basechar 0 -AnchorPoint: "bottom" 502 0 basechar 0 -AnchorPoint: "ogonek" 846 0 basechar 0 -AnchorPoint: "top" 532 1438 basechar 0 -LayerCount: 2 -Fore -SplineSet -100 0 m 1,0,-1 - 100 102 l 1,1,-1 - 694 102 l 1,2,-1 - 694 799 l 1,3,-1 - 317 799 l 1,4,-1 - 317 901 l 1,5,-1 - 694 901 l 1,6,-1 - 694 1331 l 1,7,-1 - 133 1331 l 1,8,-1 - 133 1434 l 1,9,-1 - 961 1434 l 1,10,-1 - 961 0 l 1,11,-1 - 100 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01DD -Encoding: 477 477 598 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<403 607> 348 102<348 682> 819 102<327 591> -VStem: 682 260<245 348 451 666> -AnchorPoint: "top" 469 1004 basechar 0 -AnchorPoint: "ogonek" 526 0 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "cedilla" 508 0 basechar 0 -AnchorPoint: "horn" 838 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -686 451 m 1,0,1 - 686 541 686 541 676 604 c 128,-1,2 - 666 667 666 667 641 718 c 128,-1,3 - 616 769 616 769 568 794 c 128,-1,4 - 520 819 520 819 449 819 c 0,5,6 - 375 819 375 819 340.5 788 c 128,-1,7 - 306 757 306 757 295 696 c 1,8,-1 - 100 743 l 1,9,10 - 165 825 165 825 261.5 873.5 c 128,-1,11 - 358 922 358 922 479 922 c 0,12,13 - 681 922 681 922 811.5 792.5 c 128,-1,14 - 942 663 942 663 942 451 c 0,15,16 - 942 347 942 347 905 257 c 128,-1,17 - 868 167 868 167 808 107.5 c 128,-1,18 - 748 48 748 48 672.5 14 c 128,-1,19 - 597 -20 597 -20 520 -20 c 0,20,21 - 417 -20 417 -20 333 21.5 c 128,-1,22 - 249 63 249 63 197.5 131.5 c 128,-1,23 - 146 200 146 200 118 282.5 c 128,-1,24 - 90 365 90 365 90 451 c 1,25,-1 - 686 451 l 1,0,1 -682 348 m 1,26,-1 - 348 348 l 1,27,28 - 350 285 350 285 357 241 c 128,-1,29 - 364 197 364 197 379 158.5 c 128,-1,30 - 394 120 394 120 421.5 101 c 128,-1,31 - 449 82 449 82 489 82 c 0,32,33 - 582 82 582 82 627.5 149.5 c 128,-1,34 - 673 217 673 217 682 348 c 1,26,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0259 -Encoding: 601 601 599 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<403 607> 348 102<348 682> 819 102<327 591> -VStem: 682 260<245 348 451 666> -AnchorPoint: "horn" 838 717 basechar 0 -AnchorPoint: "cedilla" 508 0 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "ogonek" 526 0 basechar 0 -AnchorPoint: "top" 469 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 598 477 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0198 -Encoding: 408 408 600 -Width: 1421 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440 977 1233> 1341 113<1100 1269> 1393 41G<174 440> -VStem: 174 266<0 573 836 1434> 1290 203<1103 1324> -LayerCount: 2 -Fore -SplineSet -1233 0 m 1,0,-1 - 1010 0 l 1,1,-1 - 504 643 l 1,2,-1 - 440 573 l 1,3,-1 - 440 0 l 1,4,-1 - 174 0 l 1,5,-1 - 174 1434 l 1,6,-1 - 440 1434 l 1,7,-1 - 440 836 l 1,8,-1 - 856 1300 l 2,9,10 - 925 1377 925 1377 1000 1415.5 c 128,-1,11 - 1075 1454 1075 1454 1171 1454 c 0,12,13 - 1325 1454 1325 1454 1409 1387 c 128,-1,14 - 1493 1320 1493 1320 1493 1194 c 0,15,16 - 1493 1148 1493 1148 1473 1109 c 128,-1,17 - 1453 1070 1453 1070 1428 1047 c 128,-1,18 - 1403 1024 1403 1024 1367 1004.5 c 128,-1,19 - 1331 985 1331 985 1314 979 c 128,-1,20 - 1297 973 1297 973 1278 967 c 1,21,-1 - 1217 1081 l 1,22,23 - 1256 1107 1256 1107 1273 1134.5 c 128,-1,24 - 1290 1162 1290 1162 1290 1217 c 0,25,26 - 1290 1269 1290 1269 1264.5 1305 c 128,-1,27 - 1239 1341 1239 1341 1194 1341 c 0,28,29 - 1166 1341 1166 1341 1144 1330 c 128,-1,30 - 1122 1319 1122 1319 1071.5 1270.5 c 128,-1,31 - 1021 1222 1021 1222 926 1116 c 2,32,-1 - 623 776 l 1,33,-1 - 1233 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0199 -Encoding: 409 409 601 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403 664 913> 860 41G<611 877> 1270 102<424 627> -VStem: 147 256<0 371 627 1228> -LayerCount: 2 -Fore -SplineSet -403 627 m 1,0,-1 - 647 901 l 1,1,-1 - 877 901 l 1,2,-1 - 520 502 l 1,3,-1 - 913 0 l 1,4,-1 - 696 0 l 1,5,-1 - 403 371 l 1,6,-1 - 403 0 l 1,7,-1 - 147 0 l 1,8,-1 - 147 1092 l 2,9,10 - 147 1164 147 1164 183.5 1220.5 c 128,-1,11 - 220 1277 220 1277 277.5 1308.5 c 128,-1,12 - 335 1340 335 1340 395.5 1356 c 128,-1,13 - 456 1372 456 1372 514 1372 c 0,14,15 - 644 1372 644 1372 721 1280 c 1,16,-1 - 592 1219 l 1,17,18 - 556 1270 556 1270 483 1270 c 0,19,20 - 456 1270 456 1270 439.5 1256.5 c 128,-1,21 - 423 1243 423 1243 415 1208.5 c 128,-1,22 - 407 1174 407 1174 405 1135 c 128,-1,23 - 403 1096 403 1096 403 1024 c 2,24,-1 - 403 627 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E62 -Encoding: 7778 7778 602 -Width: 1187 -VWidth: 0 -Flags: W -HStem: -313 170<480 650> -20 102<474 721> 1352 102<489 697> -VStem: 162 266<971 1252> 480 170<-313 -143> 815 266<200 510> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1156 -41 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E63 -Encoding: 7779 7779 603 -Width: 897 -VWidth: 0 -Flags: W -HStem: -313 170<349 519> -20 102<286 522> 817 104<397 566> -VStem: 125 256<569 808> 349 170<-313 -143> 559 256<119 365> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1025 -41 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Engsami -Encoding: 58626 58626 604 -Width: 1406 -VWidth: 0 -Flags: W -HStem: -348 102<706 929> 0 43G<174 440> 1393 41G<174 463 971 1237> -VStem: 174 266<0 1075> 971 266<-199 0 367 1434> -LayerCount: 2 -Fore -SplineSet -440 1075 m 1,0,-1 - 440 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 442 1434 l 1,4,-1 - 971 367 l 1,5,-1 - 971 1434 l 1,6,-1 - 1237 1434 l 1,7,-1 - 1237 160 l 2,8,9 - 1237 51 1237 51 1231.5 -20.5 c 128,-1,10 - 1226 -92 1226 -92 1208.5 -153 c 128,-1,11 - 1191 -214 1191 -214 1163 -248.5 c 128,-1,12 - 1135 -283 1135 -283 1086.5 -307 c 128,-1,13 - 1038 -331 1038 -331 974 -339.5 c 128,-1,14 - 910 -348 910 -348 817 -348 c 0,15,16 - 670 -348 670 -348 494 -256 c 1,17,-1 - 647 -150 l 1,18,19 - 735 -246 735 -246 848 -246 c 0,20,21 - 914 -246 914 -246 939.5 -191.5 c 128,-1,22 - 965 -137 965 -137 971 0 c 1,23,-1 - 440 1075 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0193 -Encoding: 403 403 605 -Width: 1468 -VWidth: 0 -Flags: W -HStem: -20 102<614 974> 717 102<821 993> 1352 102<571 910> 1366 102<1262 1467> -VStem: 102 266<441 1012> 993 256<161 717> 1018 225<1120 1241> -LayerCount: 2 -Fore -SplineSet -821 819 m 1,0,-1 - 1249 819 l 1,1,-1 - 1249 209 l 1,2,3 - 1169 106 1169 106 1035.5 43 c 128,-1,4 - 902 -20 902 -20 741 -20 c 0,5,6 - 659 -20 659 -20 572.5 7 c 128,-1,7 - 486 34 486 34 401 93 c 128,-1,8 - 316 152 316 152 250 235.5 c 128,-1,9 - 184 319 184 319 143 444.5 c 128,-1,10 - 102 570 102 570 102 717 c 0,11,12 - 102 865 102 865 139 989.5 c 128,-1,13 - 176 1114 176 1114 236 1198 c 128,-1,14 - 296 1282 296 1282 375 1341 c 128,-1,15 - 454 1400 454 1400 536.5 1427 c 128,-1,16 - 619 1454 619 1454 702 1454 c 0,17,18 - 951 1454 951 1454 1087 1382 c 1,19,20 - 1185 1468 1185 1468 1354 1468 c 0,21,22 - 1484 1468 1484 1468 1561 1376 c 1,23,-1 - 1432 1315 l 1,24,25 - 1396 1366 1396 1366 1323 1366 c 0,26,27 - 1296 1366 1296 1366 1279.5 1352.5 c 128,-1,28 - 1263 1339 1263 1339 1255 1304.5 c 128,-1,29 - 1247 1270 1247 1270 1245 1231 c 128,-1,30 - 1243 1192 1243 1192 1243 1120 c 1,31,-1 - 1018 1053 l 1,32,33 - 1018 1211 1018 1211 944 1281.5 c 128,-1,34 - 870 1352 870 1352 733 1352 c 0,35,36 - 369 1352 369 1352 369 717 c 0,37,38 - 369 586 369 586 392.5 478 c 128,-1,39 - 416 370 416 370 455 298 c 128,-1,40 - 494 226 494 226 546 176 c 128,-1,41 - 598 126 598 126 655 104 c 128,-1,42 - 712 82 712 82 772 82 c 0,43,44 - 898 82 898 82 993 135 c 1,45,-1 - 993 717 l 1,46,-1 - 821 717 l 1,47,-1 - 821 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019D -Encoding: 413 413 606 -Width: 1394 -VWidth: 0 -Flags: W -HStem: -348 102<-76 127> 0 43G<997 1264> 1270 102<547 887> 1311 41G<147 414> -VStem: 147 266<-203 1169 1282 1352> 997 266<0 1122> -LayerCount: 2 -Fore -SplineSet -414 -68 m 2,0,1 - 414 -140 414 -140 376 -196.5 c 128,-1,2 - 338 -253 338 -253 278.5 -284.5 c 128,-1,3 - 219 -316 219 -316 157 -332 c 128,-1,4 - 95 -348 95 -348 37 -348 c 0,5,6 - -93 -348 -93 -348 -170 -256 c 1,7,-1 - -41 -195 l 1,8,9 - -5 -246 -5 -246 68 -246 c 0,10,11 - 86 -246 86 -246 99.5 -240 c 128,-1,12 - 113 -234 113 -234 121.5 -219 c 128,-1,13 - 130 -204 130 -204 135 -186.5 c 128,-1,14 - 140 -169 140 -169 143 -137.5 c 128,-1,15 - 146 -106 146 -106 146.5 -77 c 128,-1,16 - 147 -48 147 -48 147 0 c 2,17,-1 - 147 1352 l 1,18,-1 - 414 1352 l 1,19,-1 - 414 1282 l 1,20,21 - 421 1286 421 1286 451.5 1303.5 c 128,-1,22 - 482 1321 482 1321 500 1329 c 128,-1,23 - 518 1337 518 1337 551 1349 c 128,-1,24 - 584 1361 584 1361 620.5 1366.5 c 128,-1,25 - 657 1372 657 1372 700 1372 c 0,26,27 - 810 1372 810 1372 909.5 1345 c 128,-1,28 - 1009 1318 1009 1318 1089 1266.5 c 128,-1,29 - 1169 1215 1169 1215 1216.5 1131 c 128,-1,30 - 1264 1047 1264 1047 1264 942 c 2,31,-1 - 1264 0 l 1,32,-1 - 997 0 l 1,33,-1 - 997 918 l 2,34,35 - 997 1002 997 1002 982.5 1065 c 128,-1,36 - 968 1128 968 1128 944.5 1166.5 c 128,-1,37 - 921 1205 921 1205 886 1228.5 c 128,-1,38 - 851 1252 851 1252 814 1261 c 128,-1,39 - 777 1270 777 1270 731 1270 c 0,40,41 - 633 1270 633 1270 557.5 1232 c 128,-1,42 - 482 1194 482 1194 414 1135 c 1,43,-1 - 414 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B3 -Encoding: 435 435 607 -Width: 1226 -VWidth: 0 -Flags: W -HStem: 0 43G<383 649> 1346 113<916 1087> 1393 41G<23 301> -VStem: 383 266<0 727> 1124 143<1210 1310> -AnchorPoint: "top" 477 1434 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "ogonek" 510 0 basechar 0 -AnchorPoint: "cedilla" 492 0 basechar 0 -AnchorPoint: "horn" 725 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -649 801 m 1,0,-1 - 649 0 l 1,1,-1 - 383 0 l 1,2,-1 - 383 727 l 1,3,-1 - 23 1434 l 1,4,-1 - 281 1434 l 1,5,-1 - 535 936 l 1,6,-1 - 662 1184 l 2,7,8 - 682 1224 682 1224 700.5 1255 c 128,-1,9 - 719 1286 719 1286 751.5 1326.5 c 128,-1,10 - 784 1367 784 1367 818.5 1393.5 c 128,-1,11 - 853 1420 853 1420 903 1439 c 128,-1,12 - 953 1458 953 1458 1008 1458 c 0,13,14 - 1124 1458 1124 1458 1196 1382.5 c 128,-1,15 - 1268 1307 1268 1307 1268 1210 c 1,16,-1 - 1124 1198 l 1,17,18 - 1124 1260 1124 1260 1087.5 1303 c 128,-1,19 - 1051 1346 1051 1346 999 1346 c 0,20,21 - 949 1346 949 1346 916.5 1306.5 c 128,-1,22 - 884 1267 884 1267 840 1178 c 0,23,24 - 833 1163 833 1163 829 1155 c 2,25,-1 - 649 801 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B4 -Encoding: 436 436 608 -Width: 1202 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 819 102<876 992> 860 41G<88 324> -AnchorPoint: "top" 514 1004 basechar 0 -AnchorPoint: "ogonek" 614 0 basechar 0 -AnchorPoint: "bottom" 365 -315 basechar 0 -AnchorPoint: "cedilla" 242 -328 basechar 0 -AnchorPoint: "horn" 762 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -561 -49 m 2,0,1 - 507 -197 507 -197 432 -272.5 c 128,-1,2 - 357 -348 357 -348 244 -348 c 0,3,4 - 173 -348 173 -348 98.5 -305.5 c 128,-1,5 - 24 -263 24 -263 -10 -180 c 1,6,-1 - 186 -152 l 1,7,8 - 202 -201 202 -201 227 -223.5 c 128,-1,9 - 252 -246 252 -246 274 -246 c 0,10,11 - 325 -246 325 -246 399 -45 c 1,12,-1 - 416 0 l 1,13,-1 - 88 901 l 1,14,-1 - 309 901 l 1,15,-1 - 526 305 l 1,16,-1 - 641 623 l 2,17,18 - 695 771 695 771 770 846.5 c 128,-1,19 - 845 922 845 922 958 922 c 0,20,21 - 1029 922 1029 922 1103.5 879.5 c 128,-1,22 - 1178 837 1178 837 1212 754 c 1,23,-1 - 1016 725 l 1,24,25 - 1000 774 1000 774 975 796.5 c 128,-1,26 - 950 819 950 819 928 819 c 0,27,28 - 877 819 877 819 803 618 c 1,29,-1 - 561 -49 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0260 -Encoding: 608 608 609 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -348 102<362 595> -20 102<436 635> 819 102<423 634> 1022 102<914 1117> -VStem: 90 256<223 675> 637 256<-196 -8 84 801> -LayerCount: 2 -Fore -SplineSet -637 772 m 1,0,1 - 584 819 584 819 512 819 c 0,2,3 - 430 819 430 819 388 721.5 c 128,-1,4 - 346 624 346 624 346 451 c 0,5,6 - 346 82 346 82 553 82 c 0,7,8 - 599 82 599 82 637 94 c 1,9,-1 - 637 772 l 1,0,1 -973 1022 m 4,10,11 - 922 1022 922 1022 907.5 969 c 128,-1,12 - 893 916 893 916 893 776 c 2,13,-1 - 893 160 l 2,14,15 - 893 51 893 51 887.5 -20.5 c 128,-1,16 - 882 -92 882 -92 864.5 -153 c 128,-1,17 - 847 -214 847 -214 819 -248.5 c 128,-1,18 - 791 -283 791 -283 742.5 -307 c 128,-1,19 - 694 -331 694 -331 630 -339.5 c 128,-1,20 - 566 -348 566 -348 473 -348 c 0,21,22 - 326 -348 326 -348 150 -256 c 1,23,-1 - 303 -150 l 1,24,25 - 391 -246 391 -246 504 -246 c 0,26,27 - 571 -246 571 -246 600 -193 c 128,-1,28 - 629 -140 629 -140 635 -8 c 1,29,30 - 582 -20 582 -20 522 -20 c 0,31,32 - 323 -20 323 -20 206.5 107.5 c 128,-1,33 - 90 235 90 235 90 451 c 0,34,35 - 90 659 90 659 205.5 790.5 c 128,-1,36 - 321 922 321 922 481 922 c 0,37,38 - 565 922 565 922 641 893 c 1,39,40 - 656 971 656 971 720.5 1025.5 c 128,-1,41 - 785 1080 785 1080 858.5 1102 c 128,-1,42 - 932 1124 932 1124 1004 1124 c 0,43,44 - 1133 1124 1133 1124 1210 1032 c 1,45,-1 - 1081 971 l 1,46,47 - 1045 1022 1045 1022 973 1022 c 4,10,11 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0272 -Encoding: 626 626 610 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -348 102<-76 127> 0 43G<692 948> 819 102<405 644> -VStem: 147 256<-204 802> 692 256<0 720> -LayerCount: 2 -Fore -SplineSet -403 -68 m 6,0,1 - 403 -140 403 -140 366.5 -196.5 c 128,-1,2 - 330 -253 330 -253 273 -284.5 c 128,-1,3 - 216 -316 216 -316 155.5 -332 c 128,-1,4 - 95 -348 95 -348 37 -348 c 0,5,6 - -93 -348 -93 -348 -170 -256 c 1,7,-1 - -41 -195 l 1,8,9 - -5 -246 -5 -246 68 -246 c 0,10,11 - 86 -246 86 -246 99.5 -240 c 128,-1,12 - 113 -234 113 -234 121.5 -219 c 128,-1,13 - 130 -204 130 -204 135 -186.5 c 128,-1,14 - 140 -169 140 -169 143 -137.5 c 128,-1,15 - 146 -106 146 -106 146.5 -77 c 128,-1,16 - 147 -48 147 -48 147 0 c 2,17,-1 - 147 901 l 1,18,-1 - 385 901 l 1,19,20 - 454 922 454 922 520 922 c 0,21,22 - 736 922 736 922 842 816 c 128,-1,23 - 948 710 948 710 948 492 c 2,24,-1 - 948 0 l 1,25,-1 - 692 0 l 1,26,-1 - 692 467 l 2,27,28 - 692 608 692 608 676 686 c 128,-1,29 - 660 764 660 764 631 791.5 c 128,-1,30 - 602 819 602 819 551 819 c 0,31,32 - 471 819 471 819 403 784 c 1,33,-1 - 403 -68 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0186 -Encoding: 390 390 611 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<412 737> 1352 102<449 781> -VStem: 983 266<441 1012> -AnchorPoint: "top" 629 1434 basechar 0 -AnchorPoint: "ogonek" 616 0 basechar 0 -AnchorPoint: "bottom" 612 0 basechar 0 -AnchorPoint: "horn" 1124 1085 basechar 0 -AnchorPoint: "cedilla" 592 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -102 209 m 1,0,-1 - 295 264 l 1,1,2 - 328 213 328 213 350 185 c 128,-1,3 - 372 157 372 157 405.5 130 c 128,-1,4 - 439 103 439 103 480.5 92.5 c 128,-1,5 - 522 82 522 82 580 82 c 0,6,7 - 640 82 640 82 697 104 c 128,-1,8 - 754 126 754 126 806 176 c 128,-1,9 - 858 226 858 226 897 298 c 128,-1,10 - 936 370 936 370 959.5 478 c 128,-1,11 - 983 586 983 586 983 717 c 0,12,13 - 983 1352 983 1352 618 1352 c 0,14,15 - 560 1352 560 1352 517.5 1341.5 c 128,-1,16 - 475 1331 475 1331 442.5 1304.5 c 128,-1,17 - 410 1278 410 1278 393 1258 c 128,-1,18 - 376 1238 376 1238 346 1195 c 0,19,20 - 338 1184 338 1184 334 1178 c 1,21,-1 - 109 1245 l 1,22,23 - 277 1454 277 1454 649 1454 c 0,24,25 - 732 1454 732 1454 814.5 1427 c 128,-1,26 - 897 1400 897 1400 976 1341 c 128,-1,27 - 1055 1282 1055 1282 1115 1198 c 128,-1,28 - 1175 1114 1175 1114 1212 989.5 c 128,-1,29 - 1249 865 1249 865 1249 717 c 0,30,31 - 1249 570 1249 570 1208 444.5 c 128,-1,32 - 1167 319 1167 319 1101 235.5 c 128,-1,33 - 1035 152 1035 152 950 93 c 128,-1,34 - 865 34 865 34 778.5 7 c 128,-1,35 - 692 -20 692 -20 610 -20 c 0,36,37 - 449 -20 449 -20 315.5 43 c 128,-1,38 - 182 106 182 106 102 209 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0254 -Encoding: 596 596 612 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<327 581> 819 102<387 597> -VStem: 676 256<235 657> -AnchorPoint: "horn" 823 717 basechar 0 -AnchorPoint: "cedilla" 483 0 basechar 0 -AnchorPoint: "bottom" 453 0 basechar 0 -AnchorPoint: "ogonek" 502 0 basechar 0 -AnchorPoint: "top" 496 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -334 608 m 1,0,-1 - 129 676 l 1,1,2 - 182 787 182 787 279 854.5 c 128,-1,3 - 376 922 376 922 510 922 c 0,4,5 - 587 922 587 922 662.5 888 c 128,-1,6 - 738 854 738 854 798 794.5 c 128,-1,7 - 858 735 858 735 895 645 c 128,-1,8 - 932 555 932 555 932 451 c 0,9,10 - 932 239 932 239 801.5 109.5 c 128,-1,11 - 671 -20 671 -20 469 -20 c 0,12,13 - 348 -20 348 -20 251.5 28 c 128,-1,14 - 155 76 155 76 90 158 c 1,15,-1 - 274 205 l 1,16,17 - 280 196 280 196 292.5 175 c 128,-1,18 - 305 154 305 154 309.5 147 c 128,-1,19 - 314 140 314 140 325 125.5 c 128,-1,20 - 336 111 336 111 345 106 c 128,-1,21 - 354 101 354 101 368 93.5 c 128,-1,22 - 382 86 382 86 399 84 c 128,-1,23 - 416 82 416 82 438 82 c 0,24,25 - 495 82 495 82 537.5 99.5 c 128,-1,26 - 580 117 580 117 606.5 147 c 128,-1,27 - 633 177 633 177 648.5 224.5 c 128,-1,28 - 664 272 664 272 670 325.5 c 128,-1,29 - 676 379 676 379 676 451 c 0,30,31 - 676 633 676 633 632 726 c 128,-1,32 - 588 819 588 819 479 819 c 0,33,34 - 451 819 451 819 431 811 c 128,-1,35 - 411 803 411 803 399 793 c 128,-1,36 - 387 783 387 783 376.5 758.5 c 128,-1,37 - 366 734 366 734 361.5 718.5 c 128,-1,38 - 357 703 357 703 348 665.5 c 128,-1,39 - 339 628 339 628 334 608 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0190 -Encoding: 400 400 613 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -20 102<475 713> 799 102<520 696> 1352 102<471 710> -VStem: 82 266<268 622> 143 266<1001 1283> -AnchorPoint: "horn" 840 1278 basechar 0 -AnchorPoint: "cedilla" 559 0 basechar 0 -AnchorPoint: "bottom" 547 0 basechar 0 -AnchorPoint: "ogonek" 641 2 basechar 0 -AnchorPoint: "top" 553 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -799 295 m 1,0,-1 - 987 244 l 1,1,2 - 887 -20 887 -20 590 -20 c 0,3,4 - 487 -20 487 -20 399.5 12 c 128,-1,5 - 312 44 312 44 255 94.5 c 128,-1,6 - 198 145 198 145 157.5 207.5 c 128,-1,7 - 117 270 117 270 99.5 329 c 128,-1,8 - 82 388 82 388 82 440 c 0,9,10 - 82 490 82 490 95.5 544 c 128,-1,11 - 109 598 109 598 137.5 655.5 c 128,-1,12 - 166 713 166 713 219.5 765 c 128,-1,13 - 273 817 273 817 344 850 c 1,14,15 - 239 894 239 894 191 970.5 c 128,-1,16 - 143 1047 143 1047 143 1137 c 0,17,18 - 143 1267 143 1267 260 1360.5 c 128,-1,19 - 377 1454 377 1454 571 1454 c 0,20,21 - 682 1454 682 1454 783 1398.5 c 128,-1,22 - 884 1343 884 1343 940 1239 c 1,23,-1 - 776 1194 l 1,24,25 - 764 1233 764 1233 750 1259 c 128,-1,26 - 736 1285 736 1285 711 1307.5 c 128,-1,27 - 686 1330 686 1330 647 1341 c 128,-1,28 - 608 1352 608 1352 553 1352 c 0,29,30 - 496 1352 496 1352 453 1289.5 c 128,-1,31 - 410 1227 410 1227 410 1137 c 0,32,33 - 410 1107 410 1107 417.5 1077 c 128,-1,34 - 425 1047 425 1047 445 1014.5 c 128,-1,35 - 465 982 465 982 496 957.5 c 128,-1,36 - 527 933 527 933 578.5 917 c 128,-1,37 - 630 901 630 901 696 901 c 1,38,-1 - 696 799 l 1,39,-1 - 655 799 l 2,40,41 - 601 799 601 799 554.5 781 c 128,-1,42 - 508 763 508 763 475.5 733 c 128,-1,43 - 443 703 443 703 417.5 666 c 128,-1,44 - 392 629 392 629 377.5 588 c 128,-1,45 - 363 547 363 547 355.5 509.5 c 128,-1,46 - 348 472 348 472 348 440 c 0,47,48 - 348 392 348 392 363.5 332 c 128,-1,49 - 379 272 379 272 406 215.5 c 128,-1,50 - 433 159 433 159 476.5 120.5 c 128,-1,51 - 520 82 520 82 569 82 c 0,52,53 - 669 82 669 82 722 133.5 c 128,-1,54 - 775 185 775 185 799 295 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni025B -Encoding: 603 603 614 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<350 574> 451 102<401 578> 819 102<383 573> -VStem: 61 256<108 400> 111 256<586 812> -AnchorPoint: "horn" 672 768 basechar 0 -AnchorPoint: "cedilla" 442 0 basechar 0 -AnchorPoint: "bottom" 412 0 basechar 0 -AnchorPoint: "ogonek" 461 0 basechar 0 -AnchorPoint: "top" 451 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -655 221 m 1,0,-1 - 811 178 l 1,1,2 - 770 101 770 101 678 40.5 c 128,-1,3 - 586 -20 586 -20 465 -20 c 0,4,5 - 257 -20 257 -20 159 54 c 128,-1,6 - 61 128 61 128 61 256 c 0,7,8 - 61 339 61 339 107 406.5 c 128,-1,9 - 153 474 153 474 248 512 c 1,10,11 - 179 548 179 548 145 597.5 c 128,-1,12 - 111 647 111 647 111 694 c 0,13,14 - 111 799 111 799 197.5 860.5 c 128,-1,15 - 284 922 284 922 465 922 c 0,16,17 - 592 922 592 922 668 868 c 128,-1,18 - 744 814 744 814 772 735 c 1,19,-1 - 606 696 l 1,20,21 - 596 756 596 756 560 787.5 c 128,-1,22 - 524 819 524 819 440 819 c 0,23,24 - 367 819 367 819 367 694 c 0,25,26 - 367 632 367 632 403.5 592.5 c 128,-1,27 - 440 553 440 553 520 553 c 2,28,-1 - 578 553 l 1,29,-1 - 578 451 l 1,30,-1 - 506 451 l 2,31,32 - 409 451 409 451 363 403.5 c 128,-1,33 - 317 356 317 356 317 256 c 0,34,35 - 317 159 317 159 350 120.5 c 128,-1,36 - 383 82 383 82 440 82 c 0,37,38 - 515 82 515 82 571.5 122 c 128,-1,39 - 628 162 628 162 655 221 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0189 -Encoding: 393 393 615 -Width: 1304 -VWidth: 0 -Flags: W -HStem: 0 102<440 741> 680 102<61 174 440 700> 1331 102<440 755> -VStem: 174 266<102 680 782 1331> 938 266<394 1073> -AnchorPoint: "cedilla" 549 0 basechar 0 -AnchorPoint: "ogonek" 549 0 basechar 0 -AnchorPoint: "horn" 1102 1085 basechar 0 -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "top" 582 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 173 208 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0256 -Encoding: 598 598 616 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -350 102<965 1168> -20 102<423 640> 819 102<423 621> 1311 41G<688 944> -VStem: 90 256<228 673> 688 256<-206 4 132 737 883 1352> -LayerCount: 2 -Fore -SplineSet -944 1352 m 1,0,-1 - 944 -2 l 2,1,2 - 944 -74 944 -74 946 -113 c 128,-1,3 - 948 -152 948 -152 956 -186.5 c 128,-1,4 - 964 -221 964 -221 980.5 -234.5 c 128,-1,5 - 997 -248 997 -248 1024 -248 c 0,6,7 - 1097 -248 1097 -248 1133 -197 c 1,8,-1 - 1262 -258 l 1,9,10 - 1185 -350 1185 -350 1055 -350 c 0,11,12 - 997 -350 997 -350 936.5 -334 c 128,-1,13 - 876 -318 876 -318 818.5 -286.5 c 128,-1,14 - 761 -255 761 -255 724.5 -198.5 c 128,-1,15 - 688 -142 688 -142 688 -70 c 2,16,-1 - 688 4 l 1,17,18 - 606 -20 606 -20 504 -20 c 0,19,20 - 410 -20 410 -20 331.5 17.5 c 128,-1,21 - 253 55 253 55 200.5 119.5 c 128,-1,22 - 148 184 148 184 119 269.5 c 128,-1,23 - 90 355 90 355 90 451 c 0,24,25 - 90 580 90 580 139.5 686.5 c 128,-1,26 - 189 793 189 793 285 857.5 c 128,-1,27 - 381 922 381 922 504 922 c 0,28,29 - 602 922 602 922 688 883 c 1,30,-1 - 688 1352 l 1,31,-1 - 944 1352 l 1,0,-1 -688 401 m 0,32,33 - 688 468 688 468 686 518 c 128,-1,34 - 684 568 684 568 675 628.5 c 128,-1,35 - 666 689 666 689 650 727.5 c 128,-1,36 - 634 766 634 766 605 792.5 c 128,-1,37 - 576 819 576 819 535 819 c 0,38,39 - 493 819 493 819 461 804.5 c 128,-1,40 - 429 790 429 790 408.5 761.5 c 128,-1,41 - 388 733 388 733 375 701 c 128,-1,42 - 362 669 362 669 356 623 c 128,-1,43 - 350 577 350 577 348 539 c 128,-1,44 - 346 501 346 501 346 451 c 128,-1,45 - 346 401 346 401 348 363 c 128,-1,46 - 350 325 350 325 356 279 c 128,-1,47 - 362 233 362 233 375.5 200.5 c 128,-1,48 - 389 168 389 168 409 139.5 c 128,-1,49 - 429 111 429 111 461 96.5 c 128,-1,50 - 493 82 493 82 535 82 c 0,51,52 - 570 82 570 82 595.5 91.5 c 128,-1,53 - 621 101 621 101 637.5 122.5 c 128,-1,54 - 654 144 654 144 664.5 168.5 c 128,-1,55 - 675 193 675 193 680 233 c 128,-1,56 - 685 273 685 273 686.5 309.5 c 128,-1,57 - 688 346 688 346 688 401 c 0,32,33 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0191 -Encoding: 401 401 617 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -348 102<-50 154> 799 102<440 817> 1331 102<440 1001> -VStem: 174 266<-203 799 901 1331> -LayerCount: 2 -Fore -SplineSet -440 -68 m 6,0,1 - 440 -140 440 -140 402 -196.5 c 128,-1,2 - 364 -253 364 -253 304.5 -284.5 c 128,-1,3 - 245 -316 245 -316 183 -332 c 128,-1,4 - 121 -348 121 -348 63 -348 c 0,5,6 - -66 -348 -66 -348 -143 -256 c 1,7,-1 - -14 -195 l 1,8,9 - 22 -246 22 -246 94 -246 c 0,10,11 - 121 -246 121 -246 137.5 -232.5 c 128,-1,12 - 154 -219 154 -219 162 -184.5 c 128,-1,13 - 170 -150 170 -150 172 -111 c 128,-1,14 - 174 -72 174 -72 174 0 c 2,15,-1 - 174 1434 l 1,16,-1 - 1001 1434 l 1,17,-1 - 1001 1331 l 1,18,-1 - 440 1331 l 1,19,-1 - 440 901 l 1,20,-1 - 817 901 l 1,21,-1 - 817 799 l 1,22,-1 - 440 799 l 1,23,-1 - 440 -68 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: florin -Encoding: 402 402 618 -Width: 589 -VWidth: 0 -Flags: W -HStem: -348 102<-72 131> 799 102<61 152 408 553> 1270 102<427 569> -VStem: 152 256<-204 799 901 1243> -LayerCount: 2 -Fore -SplineSet -408 -68 m 6,0,1 - 408 -140 408 -140 371.5 -196.5 c 128,-1,2 - 335 -253 335 -253 277.5 -284.5 c 128,-1,3 - 220 -316 220 -316 159.5 -332 c 128,-1,4 - 99 -348 99 -348 41 -348 c 0,5,6 - -89 -348 -89 -348 -166 -256 c 1,7,-1 - -37 -195 l 1,8,9 - -1 -246 -1 -246 72 -246 c 0,10,11 - 99 -246 99 -246 115.5 -232.5 c 128,-1,12 - 132 -219 132 -219 140 -184.5 c 128,-1,13 - 148 -150 148 -150 150 -111 c 128,-1,14 - 152 -72 152 -72 152 0 c 2,15,-1 - 152 799 l 1,16,-1 - 31 799 l 1,17,-1 - 61 901 l 1,18,-1 - 152 901 l 1,19,-1 - 152 1096 l 2,20,21 - 152 1217 152 1217 239.5 1294.5 c 128,-1,22 - 327 1372 327 1372 453 1372 c 0,23,24 - 537 1372 537 1372 598 1350 c 1,25,-1 - 555 1239 l 1,26,27 - 530 1270 530 1270 483 1270 c 0,28,29 - 440 1270 440 1270 424 1223 c 128,-1,30 - 408 1176 408 1176 408 1042 c 2,31,-1 - 408 901 l 1,32,-1 - 553 901 l 1,33,-1 - 553 799 l 1,34,-1 - 408 799 l 1,35,-1 - 408 -68 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0194 -Encoding: 404 404 619 -Width: 1153 -VWidth: 0 -Flags: W -HStem: -418 102<553 606> 1393 41G<25 294 865 1135> -VStem: 309 238<-313 -38> 612 236<-313 -37> -LayerCount: 2 -Fore -SplineSet -580 -35 m 1,0,1 - 547 -150 547 -150 547 -184 c 0,2,3 - 547 -258 547 -258 554.5 -286.5 c 128,-1,4 - 562 -315 562 -315 580 -315 c 128,-1,5 - 598 -315 598 -315 605 -287 c 128,-1,6 - 612 -259 612 -259 612 -184 c 0,7,8 - 612 -147 612 -147 580 -35 c 1,0,1 -457 307 m 1,9,-1 - 25 1434 l 1,10,-1 - 279 1434 l 1,11,-1 - 580 637 l 1,12,-1 - 881 1434 l 1,13,-1 - 1135 1434 l 1,14,-1 - 702 311 l 1,15,-1 - 745 197 l 2,16,17 - 745 196 745 196 760.5 151 c 128,-1,18 - 776 106 776 106 788 68 c 128,-1,19 - 800 30 800 30 815 -21.5 c 128,-1,20 - 830 -73 830 -73 839 -116 c 128,-1,21 - 848 -159 848 -159 848 -184 c 0,22,23 - 848 -298 848 -298 779.5 -358 c 128,-1,24 - 711 -418 711 -418 580 -418 c 128,-1,25 - 449 -418 449 -418 379 -358 c 128,-1,26 - 309 -298 309 -298 309 -184 c 0,27,28 - 309 -126 309 -126 347.5 -0.5 c 128,-1,29 - 386 125 386 125 414 197 c 2,30,-1 - 457 307 l 1,9,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0263 -Encoding: 611 611 620 -Width: 874 -VWidth: 0 -Flags: W -HStem: -418 102<414 466> 860 41G<18 278 603 862> -VStem: 180 227<-313 -27> 473 225<-313 -27> -LayerCount: 2 -Fore -SplineSet -440 -23 m 1,0,1 - 408 -144 408 -144 408 -184 c 0,2,3 - 408 -259 408 -259 415 -287 c 128,-1,4 - 422 -315 422 -315 440 -315 c 128,-1,5 - 458 -315 458 -315 465.5 -286.5 c 128,-1,6 - 473 -258 473 -258 473 -184 c 0,7,8 - 473 -135 473 -135 440 -23 c 1,0,1 -319 270 m 1,9,-1 - 18 901 l 1,10,-1 - 258 901 l 1,11,-1 - 440 522 l 1,12,-1 - 623 901 l 1,13,-1 - 862 901 l 1,14,-1 - 559 272 l 1,15,-1 - 596 197 l 2,16,17 - 637 113 637 113 667.5 -1.5 c 128,-1,18 - 698 -116 698 -116 698 -184 c 0,19,20 - 698 -418 698 -418 440 -418 c 0,21,22 - 310 -418 310 -418 245 -358.5 c 128,-1,23 - 180 -299 180 -299 180 -184 c 0,24,25 - 180 -118 180 -118 212 -4 c 128,-1,26 - 244 110 244 110 285 197 c 2,27,-1 - 319 270 l 1,9,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B2 -Encoding: 434 434 621 -Width: 1587 -VWidth: 0 -Flags: W -HStem: -20 102<608 933> 1393 41G<156 422 920 1272> -VStem: 156 266<341 1434> 1165 266<381 1005> -AnchorPoint: "cedilla" 758 0 basechar 0 -AnchorPoint: "horn" 1313 1085 basechar 0 -AnchorPoint: "bottom" 786 0 basechar 0 -AnchorPoint: "ogonek" 782 0 basechar 0 -AnchorPoint: "top" 686 1436 basechar 0 -LayerCount: 2 -Fore -SplineSet -920 1434 m 1,0,-1 - 1206 1434 l 1,1,2 - 1304 1266 1304 1266 1338 1186 c 0,3,4 - 1421 988 1421 988 1430 694 c 0,5,6 - 1432 648 1432 648 1432 598 c 0,7,8 - 1432 487 1432 487 1390.5 386.5 c 128,-1,9 - 1349 286 1349 286 1281 213.5 c 128,-1,10 - 1213 141 1213 141 1128 87 c 128,-1,11 - 1043 33 1043 33 955.5 6.5 c 128,-1,12 - 868 -20 868 -20 788 -20 c 0,13,14 - 734 -20 734 -20 684.5 -15.5 c 128,-1,15 - 635 -11 635 -11 568.5 5 c 128,-1,16 - 502 21 502 21 447.5 47.5 c 128,-1,17 - 393 74 393 74 337 122.5 c 128,-1,18 - 281 171 281 171 242.5 235.5 c 128,-1,19 - 204 300 204 300 180 397.5 c 128,-1,20 - 156 495 156 495 156 614 c 2,21,-1 - 156 1434 l 1,22,-1 - 422 1434 l 1,23,-1 - 422 614 l 2,24,25 - 422 510 422 510 436 426 c 128,-1,26 - 450 342 450 342 472 287.5 c 128,-1,27 - 494 233 494 233 528 193 c 128,-1,28 - 562 153 562 153 593 132.5 c 128,-1,29 - 624 112 624 112 665.5 100 c 128,-1,30 - 707 88 707 88 736 85 c 128,-1,31 - 765 82 765 82 801 82 c 0,32,33 - 898 82 898 82 983 159 c 128,-1,34 - 1068 236 1068 236 1116.5 354.5 c 128,-1,35 - 1165 473 1165 473 1165 598 c 0,36,37 - 1165 666 1165 666 1161 728.5 c 128,-1,38 - 1157 791 1157 791 1152.5 839.5 c 128,-1,39 - 1148 888 1148 888 1136 940.5 c 128,-1,40 - 1124 993 1124 993 1117 1026 c 128,-1,41 - 1110 1059 1110 1059 1091 1106.5 c 128,-1,42 - 1072 1154 1072 1154 1063.5 1175.5 c 128,-1,43 - 1055 1197 1055 1197 1030 1243.5 c 128,-1,44 - 1005 1290 1005 1290 996.5 1304.5 c 128,-1,45 - 988 1319 988 1319 958 1369.5 c 128,-1,46 - 928 1420 928 1420 920 1434 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni028B -Encoding: 651 651 622 -Width: 1169 -VWidth: 0 -Flags: W -HStem: -20 102<479 714> 793 121<610 669> -VStem: 143 256<190 901> 793 256<219 641> -AnchorPoint: "top" 506 1004 basechar 0 -AnchorPoint: "ogonek" 582 0 basechar 0 -AnchorPoint: "bottom" 590 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 580 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -578 793 m 1,0,-1 - 614 913 l 1,1,2 - 1049 811 1049 811 1049 434 c 0,3,4 - 1049 222 1049 222 925 101 c 128,-1,5 - 801 -20 801 -20 592 -20 c 0,6,7 - 374 -20 374 -20 258.5 87.5 c 128,-1,8 - 143 195 143 195 143 410 c 2,9,-1 - 143 901 l 1,10,-1 - 399 901 l 1,11,-1 - 399 434 l 2,12,13 - 399 328 399 328 413.5 258 c 128,-1,14 - 428 188 428 188 458 150 c 128,-1,15 - 488 112 488 112 527 97 c 128,-1,16 - 566 82 566 82 623 82 c 0,17,18 - 679 82 679 82 718.5 130 c 128,-1,19 - 758 178 758 178 775.5 255 c 128,-1,20 - 793 332 793 332 793 432 c 0,21,22 - 793 729 793 729 578 793 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01E8 -Encoding: 488 488 623 -Width: 1243 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 977 1233> 1384 387 1393 41<174 440 936 1208> -VStem: 174 266<0 573 836 1434> 404 479 -LayerCount: 2 -Fore -Refer: 38 75 N 1 0 0 1 0 0 3 -Refer: 374 711 S 1 0 0 1 343 246 2 -Validated: 1 -EndChar - -StartChar: uni01E9 -Encoding: 489 489 624 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43<147 403 664 913> 860 41<611 877> 1309 387 1311 41<147 403> -VStem: 147 256<0 371 627 1352> 297 479 -LayerCount: 2 -Fore -Refer: 25 107 N 1 0 0 1 0 0 3 -Refer: 374 711 S 1 0 0 1 236 170 2 -Validated: 1 -EndChar - -StartChar: uni01B7 -Encoding: 439 439 625 -Width: 1173 -VWidth: 0 -Flags: W -HStem: -20 102<378 674> 782 102<719 758> 1331 102<209 709> -VStem: 61 209<197 327> 813 266<241 634> -AnchorPoint: "horn" 918 1352 basechar 0 -AnchorPoint: "ogonek" 541 0 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "top" 563 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -541 782 m 2,0,-1 - 381 782 l 1,1,-1 - 709 1331 l 1,2,-1 - 209 1331 l 1,3,-1 - 209 1434 l 1,4,-1 - 1044 1434 l 1,5,-1 - 719 885 l 1,6,7 - 779 885 779 885 841.5 852 c 128,-1,8 - 904 819 904 819 957.5 761 c 128,-1,9 - 1011 703 1011 703 1045 611.5 c 128,-1,10 - 1079 520 1079 520 1079 414 c 128,-1,11 - 1079 308 1079 308 1040 224 c 128,-1,12 - 1001 140 1001 140 931.5 87.5 c 128,-1,13 - 862 35 862 35 770 7.5 c 128,-1,14 - 678 -20 678 -20 569 -20 c 0,15,16 - 347 -20 347 -20 213 75 c 128,-1,17 - 79 170 79 170 61 326 c 1,18,-1 - 270 340 l 1,19,20 - 297 82 297 82 539 82 c 0,21,22 - 617 82 617 82 681 132 c 128,-1,23 - 745 182 745 182 779 257.5 c 128,-1,24 - 813 333 813 333 813 414 c 0,25,26 - 813 469 813 469 806 518 c 128,-1,27 - 799 567 799 567 779.5 616.5 c 128,-1,28 - 760 666 760 666 730.5 701.5 c 128,-1,29 - 701 737 701 737 652.5 759.5 c 128,-1,30 - 604 782 604 782 541 782 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0292 -Encoding: 658 658 626 -Width: 1042 -VWidth: 0 -Flags: W -HStem: -410 102<295 603> 270 102<610 664> 799 102<141 600> -VStem: 705 256<-201 170> -AnchorPoint: "bottom" 459 -385 basechar 0 -AnchorPoint: "cedilla" 459 -385 basechar 0 -AnchorPoint: "ogonek" 496 -385 basechar 0 -AnchorPoint: "horn" 778 717 basechar 0 -AnchorPoint: "top" 492 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -430 270 m 2,0,-1 - 313 270 l 1,1,-1 - 600 799 l 1,2,-1 - 111 799 l 1,3,-1 - 141 901 l 1,4,-1 - 936 901 l 1,5,-1 - 610 373 l 1,6,7 - 672 373 672 373 731.5 349.5 c 128,-1,8 - 791 326 791 326 843.5 279.5 c 128,-1,9 - 896 233 896 233 928.5 151 c 128,-1,10 - 961 69 961 69 961 -37 c 0,11,12 - 961 -126 961 -126 920 -198.5 c 128,-1,13 - 879 -271 879 -271 810.5 -316.5 c 128,-1,14 - 742 -362 742 -362 657.5 -386 c 128,-1,15 - 573 -410 573 -410 481 -410 c 0,16,17 - 378 -410 378 -410 299.5 -393.5 c 128,-1,18 - 221 -377 221 -377 170 -346 c 128,-1,19 - 119 -315 119 -315 87 -279.5 c 128,-1,20 - 55 -244 55 -244 33 -197 c 1,21,-1 - 213 -147 l 1,22,23 - 244 -228 244 -228 298 -267.5 c 128,-1,24 - 352 -307 352 -307 451 -307 c 0,25,26 - 570 -307 570 -307 637.5 -233 c 128,-1,27 - 705 -159 705 -159 705 -37 c 0,28,29 - 705 33 705 33 694.5 83.5 c 128,-1,30 - 684 134 684 134 655.5 179 c 128,-1,31 - 627 224 627 224 570.5 247 c 128,-1,32 - 514 270 514 270 430 270 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01EE -Encoding: 494 494 627 -Width: 1030 -VWidth: 0 -Flags: W -HStem: -20 102<378 674> 782 102<719 758> 1331 102<209 709> 1384 387 -VStem: 61 209<197 327> 375 479 813 266<241 634> -LayerCount: 2 -Fore -SplineSet -541 782 m 2,0,-1 - 381 782 l 1,1,-1 - 709 1331 l 1,2,-1 - 209 1331 l 1,3,-1 - 209 1434 l 1,4,-1 - 579 1434 l 1,5,-1 - 375 1718 l 1,6,-1 - 438 1772 l 1,7,-1 - 614 1591 l 1,8,-1 - 791 1772 l 1,9,-1 - 854 1718 l 1,10,-1 - 650 1434 l 1,11,-1 - 1044 1434 l 1,12,-1 - 719 885 l 1,13,14 - 779 885 779 885 841.5 852 c 128,-1,15 - 904 819 904 819 957.5 761 c 128,-1,16 - 1011 703 1011 703 1045 611.5 c 128,-1,17 - 1079 520 1079 520 1079 414 c 128,-1,18 - 1079 308 1079 308 1040 224 c 128,-1,19 - 1001 140 1001 140 931.5 87.5 c 128,-1,20 - 862 35 862 35 770 7.5 c 128,-1,21 - 678 -20 678 -20 569 -20 c 0,22,23 - 347 -20 347 -20 213 75 c 128,-1,24 - 79 170 79 170 61 326 c 1,25,-1 - 270 340 l 1,26,27 - 297 82 297 82 539 82 c 0,28,29 - 617 82 617 82 681 132 c 128,-1,30 - 745 182 745 182 779 257.5 c 128,-1,31 - 813 333 813 333 813 414 c 0,32,33 - 813 469 813 469 806 518 c 128,-1,34 - 799 567 799 567 779.5 616.5 c 128,-1,35 - 760 666 760 666 730.5 701.5 c 128,-1,36 - 701 737 701 737 652.5 759.5 c 128,-1,37 - 604 782 604 782 541 782 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01EF -Encoding: 495 495 628 -Width: 940 -VWidth: 0 -Flags: W -HStem: -410 102<295 603> 270 102<610 664> 799 102<141 600> 954 387 -VStem: 270 479 705 256<-201 170> -LayerCount: 2 -Fore -Refer: 626 658 N 1 0 0 1 0 0 2 -Refer: 102 780 N 1 0 0 1 1098 -184 2 -Validated: 1 -EndChar - -StartChar: uni01E4 -Encoding: 484 484 629 -Width: 1458 -VWidth: 0 -Flags: W -HStem: -20 102<614 974> 451 102<881 1366> 717 102<821 993> 1331 102<564 915> -VStem: 102 266<441 1009> 881 485<451 553> 993 256<161 717> -LayerCount: 2 -Fore -SplineSet -821 819 m 1,0,-1 - 1249 819 l 1,1,-1 - 1249 553 l 1,2,-1 - 1366 553 l 1,3,-1 - 1366 451 l 1,4,-1 - 1249 451 l 1,5,-1 - 1249 209 l 1,6,7 - 1169 106 1169 106 1035.5 43 c 128,-1,8 - 902 -20 902 -20 741 -20 c 0,9,10 - 659 -20 659 -20 572.5 7 c 128,-1,11 - 486 34 486 34 401 93 c 128,-1,12 - 316 152 316 152 250 235.5 c 128,-1,13 - 184 319 184 319 143 444.5 c 128,-1,14 - 102 570 102 570 102 717 c 0,15,16 - 102 865 102 865 139 987.5 c 128,-1,17 - 176 1110 176 1110 236 1191 c 128,-1,18 - 296 1272 296 1272 375 1328 c 128,-1,19 - 454 1384 454 1384 536.5 1409 c 128,-1,20 - 619 1434 619 1434 702 1434 c 0,21,22 - 1091 1434 1091 1434 1243 1245 c 1,23,-1 - 1018 1178 l 1,24,25 - 987 1222 987 1222 968 1244 c 128,-1,26 - 949 1266 949 1266 916 1289.5 c 128,-1,27 - 883 1313 883 1313 839.5 1322 c 128,-1,28 - 796 1331 796 1331 733 1331 c 0,29,30 - 551 1331 551 1331 460 1182.5 c 128,-1,31 - 369 1034 369 1034 369 717 c 0,32,33 - 369 586 369 586 392.5 478 c 128,-1,34 - 416 370 416 370 455 298 c 128,-1,35 - 494 226 494 226 546 176 c 128,-1,36 - 598 126 598 126 655 104 c 128,-1,37 - 712 82 712 82 772 82 c 0,38,39 - 898 82 898 82 993 135 c 1,40,-1 - 993 451 l 1,41,-1 - 881 451 l 1,42,-1 - 881 553 l 1,43,-1 - 993 553 l 1,44,-1 - 993 717 l 1,45,-1 - 821 717 l 1,46,-1 - 821 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01E5 -Encoding: 485 485 630 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -348 102<362 577> -164 102<467 600 874 997> 41 102<427 635> 819 102<415 633> 860 41G<637 893> -VStem: 90 256<259 700> 637 256<150 801 893 901> -LayerCount: 2 -Fore -SplineSet -637 772 m 1,0,1 - 584 819 584 819 512 819 c 0,2,3 - 346 819 346 819 346 481 c 0,4,5 - 346 308 346 308 394.5 225.5 c 128,-1,6 - 443 143 443 143 553 143 c 0,7,8 - 596 143 596 143 637 156 c 1,9,-1 - 637 772 l 1,0,1 -893 901 m 1,10,-1 - 893 221 l 2,11,12 - 893 42 893 42 874 -61 c 1,13,-1 - 997 -61 l 1,14,-1 - 997 -164 l 1,15,-1 - 846 -164 l 1,16,17 - 806 -261 806 -261 719 -304.5 c 128,-1,18 - 632 -348 632 -348 473 -348 c 0,19,20 - 326 -348 326 -348 150 -256 c 1,21,-1 - 303 -150 l 1,22,23 - 391 -246 391 -246 504 -246 c 0,24,25 - 568 -246 568 -246 600 -164 c 1,26,-1 - 467 -164 l 1,27,-1 - 467 -61 l 1,28,-1 - 625 -61 l 1,29,30 - 633 7 633 7 635 53 c 1,31,32 - 582 41 582 41 522 41 c 0,33,34 - 320 41 320 41 205 155 c 128,-1,35 - 90 269 90 269 90 481 c 0,36,37 - 90 585 90 585 122 670.5 c 128,-1,38 - 154 756 154 756 208.5 810 c 128,-1,39 - 263 864 263 864 333 893 c 128,-1,40 - 403 922 403 922 481 922 c 0,41,42 - 561 922 561 922 637 893 c 1,43,-1 - 637 901 l 1,44,-1 - 893 901 l 1,10,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: circumflex -Encoding: 710 710 631 -Width: 602 -VWidth: 0 -Flags: W -HStem: 1257 299 -VStem: 25 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 887 0 2 -Validated: 1 -EndChar - -StartChar: ring -Encoding: 730 730 632 -Width: 434 -VWidth: 0 -Flags: W -HStem: 1167 72<150 285> 1407 72<150 285> -VStem: 61 72<1255 1391> 301 72<1255 1391> -LayerCount: 2 -Fore -Refer: 100 778 N 1 0 0 1 805 0 2 -Validated: 1 -EndChar - -StartChar: uni0187 -Encoding: 391 391 633 -Width: 1468 -VWidth: 0 -Flags: W -HStem: -20 102<614 939> 1352 102<571 910> 1366 102<1262 1467> -VStem: 102 266<441 1012> 1018 225<1120 1241> -LayerCount: 2 -Fore -SplineSet -733 1352 m 0,0,1 - 369 1352 369 1352 369 717 c 0,2,3 - 369 586 369 586 392.5 478 c 128,-1,4 - 416 370 416 370 455 298 c 128,-1,5 - 494 226 494 226 546 176 c 128,-1,6 - 598 126 598 126 655 104 c 128,-1,7 - 712 82 712 82 772 82 c 0,8,9 - 830 82 830 82 871.5 92.5 c 128,-1,10 - 913 103 913 103 946.5 130 c 128,-1,11 - 980 157 980 157 1002 185 c 128,-1,12 - 1024 213 1024 213 1057 264 c 1,13,-1 - 1249 209 l 1,14,15 - 1169 106 1169 106 1035.5 43 c 128,-1,16 - 902 -20 902 -20 741 -20 c 0,17,18 - 659 -20 659 -20 572.5 7 c 128,-1,19 - 486 34 486 34 401 93 c 128,-1,20 - 316 152 316 152 250 235.5 c 128,-1,21 - 184 319 184 319 143 444.5 c 128,-1,22 - 102 570 102 570 102 717 c 0,23,24 - 102 865 102 865 139 989.5 c 128,-1,25 - 176 1114 176 1114 236 1198 c 128,-1,26 - 296 1282 296 1282 375 1341 c 128,-1,27 - 454 1400 454 1400 536.5 1427 c 128,-1,28 - 619 1454 619 1454 702 1454 c 0,29,30 - 951 1454 951 1454 1087 1382 c 1,31,32 - 1185 1468 1185 1468 1354 1468 c 0,33,34 - 1484 1468 1484 1468 1561 1376 c 1,35,-1 - 1432 1315 l 1,36,37 - 1396 1366 1396 1366 1323 1366 c 0,38,39 - 1296 1366 1296 1366 1279.5 1352.5 c 128,-1,40 - 1263 1339 1263 1339 1255 1304.5 c 128,-1,41 - 1247 1270 1247 1270 1245 1231 c 128,-1,42 - 1243 1192 1243 1192 1243 1120 c 1,43,-1 - 1018 1053 l 1,44,45 - 1018 1211 1018 1211 944 1281.5 c 128,-1,46 - 870 1352 870 1352 733 1352 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0188 -Encoding: 392 392 634 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<441 694> 819 102<425 636> 922 102<913 1117> -VStem: 90 256<235 657> 688 205<676 762> -LayerCount: 2 -Fore -SplineSet -688 608 m 1,0,1 - 683 628 683 628 674 665.5 c 128,-1,2 - 665 703 665 703 660.5 718.5 c 128,-1,3 - 656 734 656 734 645.5 758.5 c 128,-1,4 - 635 783 635 783 623 793 c 128,-1,5 - 611 803 611 803 591 811 c 128,-1,6 - 571 819 571 819 543 819 c 0,7,8 - 434 819 434 819 390 726 c 128,-1,9 - 346 633 346 633 346 451 c 0,10,11 - 346 379 346 379 352 325.5 c 128,-1,12 - 358 272 358 272 373.5 224.5 c 128,-1,13 - 389 177 389 177 415.5 147 c 128,-1,14 - 442 117 442 117 484.5 99.5 c 128,-1,15 - 527 82 527 82 584 82 c 0,16,17 - 606 82 606 82 623 84 c 128,-1,18 - 640 86 640 86 654 93.5 c 128,-1,19 - 668 101 668 101 677 106 c 128,-1,20 - 686 111 686 111 697 125.5 c 128,-1,21 - 708 140 708 140 712.5 147 c 128,-1,22 - 717 154 717 154 729.5 175 c 128,-1,23 - 742 196 742 196 748 205 c 1,24,-1 - 932 158 l 1,25,26 - 867 76 867 76 770.5 28 c 128,-1,27 - 674 -20 674 -20 553 -20 c 0,28,29 - 351 -20 351 -20 220.5 109.5 c 128,-1,30 - 90 239 90 239 90 451 c 0,31,32 - 90 555 90 555 127 645 c 128,-1,33 - 164 735 164 735 224 794.5 c 128,-1,34 - 284 854 284 854 359.5 888 c 128,-1,35 - 435 922 435 922 512 922 c 0,36,37 - 609 922 609 922 684 887 c 1,38,39 - 736 954 736 954 827 989 c 128,-1,40 - 918 1024 918 1024 1004 1024 c 0,41,42 - 1133 1024 1133 1024 1210 932 c 1,43,-1 - 1081 870 l 1,44,45 - 1044 922 1044 922 973 922 c 0,46,47 - 922 922 922 922 907.5 869 c 128,-1,48 - 893 816 893 816 893 676 c 1,49,-1 - 688 608 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0196 -Encoding: 406 406 635 -Width: 722 -VWidth: 0 -Flags: W -HStem: -20 102<445 616> 1393 41G<172 428> -VStem: 172 256<111 1434> -AnchorPoint: "top" 309 1434 basechar 0 -AnchorPoint: "ogonek" 469 0 basechar 0 -AnchorPoint: "bottom" 485 0 basechar 0 -AnchorPoint: "cedilla" 504 0 basechar 0 -AnchorPoint: "horn" 338 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -172 1434 m 25,0,-1 - 428 1434 l 1,1,-1 - 428 328 l 2,2,3 - 428 277 428 277 428.5 250.5 c 128,-1,4 - 429 224 429 224 431 190.5 c 128,-1,5 - 433 157 433 157 438 141 c 128,-1,6 - 443 125 443 125 451.5 109 c 128,-1,7 - 460 93 460 93 473 87.5 c 128,-1,8 - 486 82 486 82 504 82 c 0,9,10 - 532 82 532 82 545.5 91.5 c 128,-1,11 - 559 101 559 101 582 133 c 1,12,-1 - 711 72 l 1,13,14 - 673 27 673 27 614.5 3.5 c 128,-1,15 - 556 -20 556 -20 494 -20 c 0,16,17 - 449 -20 449 -20 405.5 -10.5 c 128,-1,18 - 362 -1 362 -1 319 20.5 c 128,-1,19 - 276 42 276 42 244 73.5 c 128,-1,20 - 212 105 212 105 192 153 c 128,-1,21 - 172 201 172 201 172 260 c 2,22,-1 - 172 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0197 -Encoding: 407 407 636 -Width: 595 -VWidth: 0 -Flags: W -HStem: 0 43G<172 428> 799 102<47 172 428 553> 1393 41G<172 428> -VStem: 172 256<0 799 901 1434> -AnchorPoint: "top" 309 1434 basechar 0 -AnchorPoint: "ogonek" 283 0 basechar 0 -AnchorPoint: "bottom" 299 0 basechar 0 -AnchorPoint: "cedilla" 317 0 basechar 0 -AnchorPoint: "horn" 338 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -47 799 m 1,0,-1 - 47 901 l 1,1,-1 - 172 901 l 1,2,-1 - 172 1434 l 1,3,-1 - 428 1434 l 1,4,-1 - 428 901 l 1,5,-1 - 553 901 l 1,6,-1 - 553 799 l 1,7,-1 - 428 799 l 1,8,-1 - 428 0 l 1,9,-1 - 172 0 l 1,10,-1 - 172 799 l 1,11,-1 - 47 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019F -Encoding: 415 415 637 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<585 859> 666 102<369 1071> 1352 102<568 857> -VStem: 102 266<428 666 768 1012> 1071 266<421 666 768 1012> -CounterMasks: 1 e0 -AnchorPoint: "top" 707 1434 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -705 -20 m 0,0,1 - 621 -20 621 -20 537.5 7 c 128,-1,2 - 454 34 454 34 375 93 c 128,-1,3 - 296 152 296 152 235.5 236 c 128,-1,4 - 175 320 175 320 138.5 444.5 c 128,-1,5 - 102 569 102 569 102 717 c 128,-1,6 - 102 865 102 865 136.5 989.5 c 128,-1,7 - 171 1114 171 1114 228.5 1198.5 c 128,-1,8 - 286 1283 286 1283 362 1341.5 c 128,-1,9 - 438 1400 438 1400 520 1427 c 128,-1,10 - 602 1454 602 1454 686 1454 c 0,11,12 - 788 1454 788 1454 882 1427 c 128,-1,13 - 976 1400 976 1400 1059.5 1341.5 c 128,-1,14 - 1143 1283 1143 1283 1204.5 1198 c 128,-1,15 - 1266 1113 1266 1113 1301.5 989.5 c 128,-1,16 - 1337 866 1337 866 1337 717 c 0,17,18 - 1337 531 1337 531 1286 387 c 128,-1,19 - 1235 243 1235 243 1146.5 155.5 c 128,-1,20 - 1058 68 1058 68 946 24 c 128,-1,21 - 834 -20 834 -20 705 -20 c 0,0,1 -1071 666 m 1,22,-1 - 369 666 l 1,23,24 - 374 517 374 517 406.5 401 c 128,-1,25 - 439 285 439 285 489.5 217.5 c 128,-1,26 - 540 150 540 150 597.5 116 c 128,-1,27 - 655 82 655 82 717 82 c 0,28,29 - 868 82 868 82 965 231 c 128,-1,30 - 1062 380 1062 380 1071 666 c 1,22,-1 -1071 768 m 1,31,32 - 1062 1065 1062 1065 962 1208.5 c 128,-1,33 - 862 1352 862 1352 698 1352 c 0,34,35 - 559 1352 559 1352 467.5 1202 c 128,-1,36 - 376 1052 376 1052 369 768 c 1,37,-1 - 1071 768 l 1,31,32 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A4 -Encoding: 420 420 638 -Width: 1372 -VWidth: 0 -Flags: W -HStem: 0 43G<457 723> 655 102<723 948> 918 43G<240 313> 1331 102<360 457 723 948> -VStem: 41 238<1032 1259> 457 266<0 655 758 1325> 1055 266<872 1217> -LayerCount: 2 -Fore -SplineSet -723 1331 m 1,0,-1 - 723 758 l 1,1,-1 - 815 758 l 2,2,3 - 877 758 877 758 925.5 785 c 128,-1,4 - 974 812 974 812 1001 855.5 c 128,-1,5 - 1028 899 1028 899 1041.5 947 c 128,-1,6 - 1055 995 1055 995 1055 1044 c 0,7,8 - 1055 1083 1055 1083 1047 1121.5 c 128,-1,9 - 1039 1160 1039 1160 1020.5 1198 c 128,-1,10 - 1002 1236 1002 1236 975 1265.5 c 128,-1,11 - 948 1295 948 1295 906.5 1313 c 128,-1,12 - 865 1331 865 1331 815 1331 c 2,13,-1 - 723 1331 l 1,0,-1 -723 655 m 1,14,-1 - 723 0 l 1,15,-1 - 457 0 l 1,16,-1 - 457 1325 l 1,17,18 - 370 1311 370 1311 324.5 1260.5 c 128,-1,19 - 279 1210 279 1210 279 1139 c 0,20,21 - 279 1124 279 1124 280 1112 c 128,-1,22 - 281 1100 281 1100 283.5 1090 c 128,-1,23 - 286 1080 286 1080 287.5 1073 c 128,-1,24 - 289 1066 289 1066 294 1059.5 c 128,-1,25 - 299 1053 299 1053 301 1049 c 128,-1,26 - 303 1045 303 1045 309.5 1040.5 c 128,-1,27 - 316 1036 316 1036 318 1034.5 c 128,-1,28 - 320 1033 320 1033 327.5 1029 c 128,-1,29 - 335 1025 335 1025 336 1024 c 1,30,-1 - 299 918 l 1,31,32 - 233 927 233 927 178 949.5 c 128,-1,33 - 123 972 123 972 82 1018.5 c 128,-1,34 - 41 1065 41 1065 41 1128 c 0,35,36 - 41 1262 41 1262 158.5 1348 c 128,-1,37 - 276 1434 276 1434 457 1434 c 2,38,-1 - 877 1434 l 2,39,40 - 971 1434 971 1434 1048.5 1409 c 128,-1,41 - 1126 1384 1126 1384 1175.5 1344 c 128,-1,42 - 1225 1304 1225 1304 1259 1252 c 128,-1,43 - 1293 1200 1293 1200 1307 1148 c 128,-1,44 - 1321 1096 1321 1096 1321 1044 c 128,-1,45 - 1321 992 1321 992 1306.5 940 c 128,-1,46 - 1292 888 1292 888 1257.5 836 c 128,-1,47 - 1223 784 1223 784 1173.5 744.5 c 128,-1,48 - 1124 705 1124 705 1047 680 c 128,-1,49 - 970 655 970 655 877 655 c 2,50,-1 - 723 655 l 1,14,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A5 -Encoding: 421 421 639 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -16 102<478 663> 823 102<469 674> 1151 102<424 627> -VStem: 147 256<-410 8 181 757 905 1109> 745 256<253 665> -LayerCount: 2 -Fore -SplineSet -147 973 m 2,0,1 - 147 1045 147 1045 183.5 1101.5 c 128,-1,2 - 220 1158 220 1158 277.5 1189.5 c 128,-1,3 - 335 1221 335 1221 395.5 1237 c 128,-1,4 - 456 1253 456 1253 514 1253 c 0,5,6 - 644 1253 644 1253 721 1161 c 1,7,-1 - 592 1100 l 1,8,9 - 556 1151 556 1151 483 1151 c 0,10,11 - 456 1151 456 1151 439.5 1137.5 c 128,-1,12 - 423 1124 423 1124 415 1089.5 c 128,-1,13 - 407 1055 407 1055 405 1016 c 128,-1,14 - 403 977 403 977 403 905 c 1,15,16 - 477 926 477 926 567 926 c 0,17,18 - 692 926 692 926 792 861.5 c 128,-1,19 - 892 797 892 797 946.5 690 c 128,-1,20 - 1001 583 1001 583 1001 455 c 0,21,22 - 1001 262 1001 262 868.5 123 c 128,-1,23 - 736 -16 736 -16 547 -16 c 0,24,25 - 467 -16 467 -16 403 8 c 1,26,-1 - 403 -410 l 1,27,-1 - 147 -410 l 1,28,-1 - 147 973 l 2,0,1 -403 504 m 0,29,30 - 403 458 403 458 404 421 c 128,-1,31 - 405 384 405 384 409.5 339 c 128,-1,32 - 414 294 414 294 421.5 260 c 128,-1,33 - 429 226 429 226 442 192 c 128,-1,34 - 455 158 455 158 473 135.5 c 128,-1,35 - 491 113 491 113 518 99.5 c 128,-1,36 - 545 86 545 86 578 86 c 0,37,38 - 624 86 624 86 657.5 118.5 c 128,-1,39 - 691 151 691 151 709.5 206 c 128,-1,40 - 728 261 728 261 736.5 323 c 128,-1,41 - 745 385 745 385 745 455 c 0,42,43 - 745 527 745 527 738.5 587 c 128,-1,44 - 732 647 732 647 716.5 703 c 128,-1,45 - 701 759 701 759 671 791 c 128,-1,46 - 641 823 641 823 598 823 c 0,47,48 - 548 823 548 823 512.5 808 c 128,-1,49 - 477 793 477 793 456 768 c 128,-1,50 - 435 743 435 743 423 700.5 c 128,-1,51 - 411 658 411 658 407 613.5 c 128,-1,52 - 403 569 403 569 403 504 c 0,29,30 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A9 -Encoding: 425 425 640 -Width: 1167 -VWidth: 0 -Flags: W -HStem: 0 102<434 1110> 1331 102<444 1069> -LayerCount: 2 -Fore -SplineSet -444 1331 m 1,0,-1 - 860 725 l 1,1,-1 - 434 102 l 1,2,-1 - 1110 102 l 1,3,-1 - 1110 0 l 1,4,-1 - 61 0 l 1,5,-1 - 549 725 l 1,6,-1 - 70 1434 l 1,7,-1 - 1069 1434 l 1,8,-1 - 1100 1331 l 1,9,-1 - 444 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B1 -Encoding: 433 433 641 -Width: 1566 -VWidth: 0 -Flags: W -HStem: -20 102<610 950> 1188 246<579 659 899 979> 1331 102<250 403 1155 1309> -VStem: 143 256<392 893> 403 256<1192 1331> 899 256<1192 1331> 1159 256<392 893> -AnchorPoint: "cedilla" 778 0 basechar 0 -AnchorPoint: "horn" 1229 1085 basechar 0 -AnchorPoint: "bottom" 807 0 basechar 0 -AnchorPoint: "ogonek" 803 0 basechar 0 -AnchorPoint: "top" 788 1436 basechar 0 -LayerCount: 2 -Fore -SplineSet -780 -20 m 128,-1,1 - 698 -20 698 -20 613 3.5 c 128,-1,2 - 528 27 528 27 443 80 c 128,-1,3 - 358 133 358 133 291.5 209 c 128,-1,4 - 225 285 225 285 184 399.5 c 128,-1,5 - 143 514 143 514 143 651 c 0,6,7 - 143 822 143 822 222 981.5 c 128,-1,8 - 301 1141 301 1141 403 1239 c 1,9,-1 - 403 1331 l 1,10,-1 - 250 1331 l 1,11,-1 - 250 1434 l 1,12,-1 - 659 1434 l 1,13,-1 - 659 1188 l 1,14,15 - 585 1168 585 1168 525 1087.5 c 128,-1,16 - 465 1007 465 1007 432 892 c 128,-1,17 - 399 777 399 777 399 651 c 0,18,19 - 399 374 399 374 503 228 c 128,-1,20 - 607 82 607 82 780 82 c 0,21,22 - 952 82 952 82 1055.5 228 c 128,-1,23 - 1159 374 1159 374 1159 651 c 0,24,25 - 1159 777 1159 777 1126 892 c 128,-1,26 - 1093 1007 1093 1007 1033 1087.5 c 128,-1,27 - 973 1168 973 1168 899 1188 c 1,28,-1 - 899 1434 l 1,29,-1 - 1309 1434 l 1,30,-1 - 1309 1331 l 1,31,-1 - 1155 1331 l 1,32,-1 - 1155 1239 l 1,33,34 - 1257 1141 1257 1141 1336 981.5 c 128,-1,35 - 1415 822 1415 822 1415 651 c 0,36,37 - 1415 514 1415 514 1374 399.5 c 128,-1,38 - 1333 285 1333 285 1267 209 c 128,-1,39 - 1201 133 1201 133 1116.5 80 c 128,-1,40 - 1032 27 1032 27 947 3.5 c 128,-1,0 - 862 -20 862 -20 780 -20 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0268 -Encoding: 616 616 642 -Width: 604 -VWidth: 0 -Flags: W -HStem: 0 43G<178 434> 518 102<45 178 434 561> 860 41G<178 434> 1065 164<199 414> -VStem: 178 256<0 518 621 901> 199 215<1065 1229> -AnchorPoint: "ogonek" 383 0 basechar 0 -AnchorPoint: "bottom" 307 0 basechar 0 -AnchorPoint: "cedilla" 313 0 basechar 0 -AnchorPoint: "horn" 354 717 basechar 0 -AnchorPoint: "top" 309 1167 basechar 0 -LayerCount: 2 -Fore -SplineSet -45 518 m 1,0,-1 - 45 621 l 1,1,-1 - 178 621 l 1,2,-1 - 178 901 l 1,3,-1 - 434 901 l 1,4,-1 - 434 621 l 1,5,-1 - 561 621 l 1,6,-1 - 561 518 l 1,7,-1 - 434 518 l 1,8,-1 - 434 0 l 1,9,-1 - 178 0 l 1,10,-1 - 178 518 l 1,11,-1 - 45 518 l 1,0,-1 -199 1229 m 1,12,-1 - 414 1229 l 1,13,-1 - 414 1065 l 1,14,-1 - 199 1065 l 1,15,-1 - 199 1229 l 1,12,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0269 -Encoding: 617 617 643 -Width: 722 -VWidth: 0 -Flags: W -HStem: -20 102<448 564> 799 102<90 172> -VStem: 172 256<98 799> 584 115<95 236> -AnchorPoint: "top" 305 1004 basechar 0 -AnchorPoint: "ogonek" 516 0 basechar 0 -AnchorPoint: "bottom" 440 0 basechar 0 -AnchorPoint: "cedilla" 446 0 basechar 0 -AnchorPoint: "horn" 428 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -483 -20 m 0,0,1 - 408 -20 408 -20 353.5 -5 c 128,-1,2 - 299 10 299 10 256.5 46.5 c 128,-1,3 - 214 83 214 83 193 149 c 128,-1,4 - 172 215 172 215 172 311 c 2,5,-1 - 172 799 l 1,6,-1 - 90 799 l 1,7,-1 - 90 901 l 1,8,-1 - 428 901 l 1,9,-1 - 428 328 l 2,10,11 - 428 198 428 198 443 140 c 128,-1,12 - 458 82 458 82 502 82 c 0,13,14 - 584 82 584 82 584 236 c 1,15,-1 - 698 236 l 1,16,17 - 698 104 698 104 649 42 c 128,-1,18 - 600 -20 600 -20 483 -20 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0275 -Encoding: 629 629 644 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<427 645> 399 102<346 715> 819 102<427 643> -VStem: 90 256<214 399 502 656> 715 256<222 399 502 679> -CounterMasks: 1 e0 -AnchorPoint: "top" 535 1004 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -971 451 m 128,-1,1 - 971 222 971 222 845 101 c 128,-1,2 - 719 -20 719 -20 512 -20 c 0,3,4 - 314 -20 314 -20 202 107 c 128,-1,5 - 90 234 90 234 90 451 c 0,6,7 - 90 555 90 555 127 645 c 128,-1,8 - 164 735 164 735 224 794.5 c 128,-1,9 - 284 854 284 854 359.5 888 c 128,-1,10 - 435 922 435 922 512 922 c 0,11,12 - 719 922 719 922 845 801 c 128,-1,0 - 971 680 971 680 971 451 c 128,-1,1 -715 399 m 1,13,-1 - 346 399 l 1,14,15 - 351 242 351 242 394.5 162 c 128,-1,16 - 438 82 438 82 543 82 c 0,17,18 - 635 82 635 82 673.5 163.5 c 128,-1,19 - 712 245 712 245 715 399 c 1,13,-1 -346 502 m 1,20,-1 - 715 502 l 1,21,22 - 710 655 710 655 671.5 737 c 128,-1,23 - 633 819 633 819 543 819 c 0,24,25 - 443 819 443 819 397 737.5 c 128,-1,26 - 351 656 351 656 346 502 c 1,20,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0283 -Encoding: 643 643 645 -Width: 737 -VWidth: 0 -Flags: W -HStem: -20 102<75 278> 1270 102<575 716> -VStem: 299 256<124 1243> -LayerCount: 2 -Fore -SplineSet -555 260 m 2,0,1 - 555 188 555 188 518.5 131.5 c 128,-1,2 - 482 75 482 75 424.5 43.5 c 128,-1,3 - 367 12 367 12 306.5 -4 c 128,-1,4 - 246 -20 246 -20 188 -20 c 0,5,6 - 59 -20 59 -20 -18 72 c 1,7,-1 - 111 133 l 1,8,9 - 147 82 147 82 219 82 c 0,10,11 - 246 82 246 82 262.5 95.5 c 128,-1,12 - 279 109 279 109 287 143.5 c 128,-1,13 - 295 178 295 178 297 217 c 128,-1,14 - 299 256 299 256 299 328 c 2,15,-1 - 299 1096 l 2,16,17 - 299 1217 299 1217 386.5 1294.5 c 128,-1,18 - 474 1372 474 1372 600 1372 c 0,19,20 - 684 1372 684 1372 745 1350 c 1,21,-1 - 702 1239 l 1,22,23 - 677 1270 677 1270 631 1270 c 0,24,25 - 588 1270 588 1270 571.5 1222.5 c 128,-1,26 - 555 1175 555 1175 555 1042 c 2,27,-1 - 555 260 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni028A -Encoding: 650 650 646 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<475 767> 668 233<498 559 682 743> 799 102<186 303 938 1055> -VStem: 123 256<178 525> 303 256<667 799> 682 256<667 799> 862 256<178 525> -AnchorPoint: "top" 623 1004 basechar 0 -AnchorPoint: "ogonek" 618 0 basechar 0 -AnchorPoint: "bottom" 606 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 596 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -621 -20 m 128,-1,1 - 511 -20 511 -20 422.5 2.5 c 128,-1,2 - 334 25 334 25 279.5 61 c 128,-1,3 - 225 97 225 97 188.5 145 c 128,-1,4 - 152 193 152 193 137.5 239.5 c 128,-1,5 - 123 286 123 286 123 334 c 0,6,7 - 123 409 123 409 142.5 475 c 128,-1,8 - 162 541 162 541 194 586.5 c 128,-1,9 - 226 632 226 632 251.5 659 c 128,-1,10 - 277 686 277 686 303 705 c 1,11,-1 - 303 799 l 1,12,-1 - 186 799 l 1,13,-1 - 186 901 l 1,14,-1 - 559 901 l 1,15,-1 - 559 668 l 1,16,17 - 552 665 552 665 539.5 658 c 128,-1,18 - 527 651 527 651 496 623.5 c 128,-1,19 - 465 596 465 596 441.5 561 c 128,-1,20 - 418 526 418 526 398.5 465 c 128,-1,21 - 379 404 379 404 379 332 c 0,22,23 - 379 219 379 219 445 150.5 c 128,-1,24 - 511 82 511 82 621 82 c 128,-1,25 - 731 82 731 82 796.5 150.5 c 128,-1,26 - 862 219 862 219 862 332 c 0,27,28 - 862 404 862 404 844 465 c 0,29,30 - 824 526 824 526 798 562 c 0,31,32 - 777 591 777 591 746 622 c 0,33,34 - 718 648 718 648 700 658 c 2,35,-1 - 682 668 l 1,36,-1 - 682 901 l 1,37,-1 - 1055 901 l 1,38,-1 - 1055 799 l 1,39,-1 - 938 799 l 1,40,-1 - 938 705 l 1,41,42 - 964 686 964 686 989.5 659 c 128,-1,43 - 1015 632 1015 632 1047 586.5 c 128,-1,44 - 1079 541 1079 541 1098.5 475 c 128,-1,45 - 1118 409 1118 409 1118 334 c 0,46,47 - 1118 286 1118 286 1103.5 239.5 c 128,-1,48 - 1089 193 1089 193 1053 145 c 128,-1,49 - 1017 97 1017 97 962 61 c 128,-1,50 - 907 25 907 25 819 2.5 c 128,-1,0 - 731 -20 731 -20 621 -20 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: IJ -Encoding: 306 306 647 -Width: 1484 -VWidth: 0 -Flags: W -HStem: -20 102<802 999> 0 43<172 438> 1393 41<172 438 1053 1319> -VStem: 172 266<0 1434> 1053 266<137 1434> -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Refer: 37 74 N 1 0 0 1 530 0 2 -Validated: 1 -EndChar - -StartChar: ij -Encoding: 307 307 648 -Width: 987 -VWidth: 0 -Flags: W -HStem: -348 102<387 590> 0 43<123 379> 860 41<123 379 610 866> 1065 164<143 358 631 846> -VStem: 123 256<0 901> 143 215<1065 1229> 610 256<-204 901> 631 215<1065 1229> -LayerCount: 2 -Fore -Refer: 8 105 N 1 0 0 1 0 0 2 -Refer: 13 106 N 1 0 0 1 389 0 2 -Validated: 1 -EndChar - -StartChar: Ldot -Encoding: 319 319 649 -Width: 1083 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 639 170<602 772> 1393 41<174 440> -VStem: 174 266<102 1434> 602 170<639 809> -AnchorPoint: "top" 485 1434 basechar 0 -AnchorPoint: "cedilla" 596 0 basechar 0 -AnchorPoint: "bottom" 604 0 basechar 0 -AnchorPoint: "ogonek" 745 0 basechar 0 -AnchorPoint: "horn" 328 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 39 76 N 1 0 0 1 0 0 3 -Refer: 343 183 N 1 0 0 1 551 225 2 -Validated: 1 -EndChar - -StartChar: ldot -Encoding: 320 320 650 -Width: 815 -VWidth: 0 -Flags: W -HStem: 0 43<147 403> 639 170<528 698> 1311 41<147 403> -VStem: 147 256<0 1352> 528 170<639 809> -AnchorPoint: "top" 274 1434 basechar 0 -AnchorPoint: "cedilla" 268 0 basechar 0 -AnchorPoint: "bottom" 272 0 basechar 0 -AnchorPoint: "ogonek" 279 0 basechar 0 -AnchorPoint: "horn" 311 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 15 108 N 1 0 0 1 0 0 2 -Refer: 343 183 N 1 0 0 1 477 225 2 -Validated: 1 -EndChar - -StartChar: napostrophe -Encoding: 329 329 651 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43<258 514 803 1059> 819 102<515 754> 987 367<-86 -19> -VStem: 51 180<1141 1354> 258 256<0 802> 803 256<0 720> -AnchorPoint: "horn" 967 717 basechar 0 -AnchorPoint: "ogonek" 987 0 basechar 0 -AnchorPoint: "bottom" 651 0 basechar 0 -AnchorPoint: "cedilla" 651 0 basechar 0 -AnchorPoint: "top" 659 1348 basechar 0 -LayerCount: 2 -Fore -Refer: 106 787 N 1 0 0 1 694 -283 2 -Refer: 4 110 N 1 0 0 1 111 0 2 -Validated: 1 -EndChar - -StartChar: uni018F -Encoding: 399 399 652 -Width: 1445 -VWidth: 0 -Flags: W -HStem: -20 102<560 852> 614 102<352 1094> 1352 102<564 896> -VStem: 1094 270<440 614 717 1012> -AnchorPoint: "cedilla" 700 0 basechar 0 -AnchorPoint: "horn" 1233 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "top" 737 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1094 614 m 1,0,-1 - 352 614 l 1,1,2 - 362 478 362 478 395.5 372.5 c 128,-1,3 - 429 267 429 267 477.5 205.5 c 128,-1,4 - 526 144 526 144 581.5 113 c 128,-1,5 - 637 82 637 82 696 82 c 0,6,7 - 751 82 751 82 803 100.5 c 128,-1,8 - 855 119 855 119 904.5 161 c 128,-1,9 - 954 203 954 203 992.5 263.5 c 128,-1,10 - 1031 324 1031 324 1058.5 414 c 128,-1,11 - 1086 504 1086 504 1094 614 c 1,0,-1 -1098 717 m 1,12,13 - 1098 1352 1098 1352 733 1352 c 0,14,15 - 675 1352 675 1352 632.5 1341.5 c 128,-1,16 - 590 1331 590 1331 557.5 1304.5 c 128,-1,17 - 525 1278 525 1278 508 1258 c 128,-1,18 - 491 1238 491 1238 461 1195 c 0,19,20 - 453 1184 453 1184 449 1178 c 1,21,-1 - 223 1245 l 1,22,23 - 391 1454 391 1454 764 1454 c 0,24,25 - 847 1454 847 1454 929.5 1427 c 128,-1,26 - 1012 1400 1012 1400 1091 1341 c 128,-1,27 - 1170 1282 1170 1282 1230 1198 c 128,-1,28 - 1290 1114 1290 1114 1327 989.5 c 128,-1,29 - 1364 865 1364 865 1364 717 c 0,30,31 - 1364 570 1364 570 1321 444.5 c 128,-1,32 - 1278 319 1278 319 1209 235.5 c 128,-1,33 - 1140 152 1140 152 1052.5 92.5 c 128,-1,34 - 965 33 965 33 876.5 6.5 c 128,-1,35 - 788 -20 788 -20 705 -20 c 0,36,37 - 621 -20 621 -20 535.5 7 c 128,-1,38 - 450 34 450 34 368 93 c 128,-1,39 - 286 152 286 152 223 236 c 128,-1,40 - 160 320 160 320 121 444.5 c 128,-1,41 - 82 569 82 569 82 717 c 1,42,-1 - 1098 717 l 1,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019E -Encoding: 414 414 653 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403> 819 102<405 644> -VStem: 147 256<0 802> 692 256<-410 720> -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "top" 549 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -385 901 m 1,0,1 - 454 922 454 922 520 922 c 0,2,3 - 736 922 736 922 842 816 c 128,-1,4 - 948 710 948 710 948 492 c 2,5,-1 - 948 -410 l 1,6,-1 - 692 -410 l 1,7,-1 - 692 467 l 2,8,9 - 692 608 692 608 676 686 c 128,-1,10 - 660 764 660 764 631 791.5 c 128,-1,11 - 602 819 602 819 551 819 c 0,12,13 - 471 819 471 819 403 784 c 1,14,-1 - 403 0 l 1,15,-1 - 147 0 l 1,16,-1 - 147 901 l 1,17,-1 - 385 901 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0220 -Encoding: 544 544 654 -Width: 1394 -VWidth: 0 -Flags: W -HStem: 0 43G<147 414> 1352 102<547 887> 1393 41G<147 414> -VStem: 147 266<0 1251 1364 1434> 997 266<-408 1204> -LayerCount: 2 -Fore -SplineSet -147 0 m 9,0,-1 - 147 1434 l 1,1,-1 - 414 1434 l 1,2,-1 - 414 1364 l 1,3,4 - 421 1368 421 1368 451.5 1385.5 c 128,-1,5 - 482 1403 482 1403 500 1411 c 128,-1,6 - 518 1419 518 1419 551 1431 c 128,-1,7 - 584 1443 584 1443 620.5 1448.5 c 128,-1,8 - 657 1454 657 1454 700 1454 c 0,9,10 - 810 1454 810 1454 909.5 1427 c 128,-1,11 - 1009 1400 1009 1400 1089 1348.5 c 128,-1,12 - 1169 1297 1169 1297 1216.5 1213 c 128,-1,13 - 1264 1129 1264 1129 1264 1024 c 2,14,-1 - 1264 -408 l 1,15,-1 - 997 -408 l 1,16,-1 - 997 999 l 2,17,18 - 997 1103 997 1103 976.5 1174.5 c 128,-1,19 - 956 1246 956 1246 917 1283.5 c 128,-1,20 - 878 1321 878 1321 833.5 1336.5 c 128,-1,21 - 789 1352 789 1352 731 1352 c 0,22,23 - 633 1352 633 1352 557.5 1314 c 128,-1,24 - 482 1276 482 1276 414 1217 c 1,25,-1 - 414 0 l 1,26,-1 - 147 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A2 -Encoding: 418 418 655 -Width: 1847 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1137 102<1273 1405> 1352 102<565 858> -VStem: 102 266<424 1012> 1071 266<414 1021> 1421 256<-410 1107> -LayerCount: 2 -Fore -SplineSet -1677 -410 m 1,0,-1 - 1421 -410 l 1,1,-1 - 1421 891 l 2,2,3 - 1421 943 1421 943 1420.5 968.5 c 128,-1,4 - 1420 994 1420 994 1418 1028.5 c 128,-1,5 - 1416 1063 1416 1063 1411.5 1078 c 128,-1,6 - 1407 1093 1407 1093 1398.5 1109.5 c 128,-1,7 - 1390 1126 1390 1126 1377 1131.5 c 128,-1,8 - 1364 1137 1364 1137 1346 1137 c 0,9,10 - 1318 1137 1318 1137 1304.5 1127.5 c 128,-1,11 - 1291 1118 1291 1118 1268 1085 c 1,12,13 - 1337 932 1337 932 1337 717 c 0,14,15 - 1337 531 1337 531 1286 387 c 128,-1,16 - 1235 243 1235 243 1146.5 155.5 c 128,-1,17 - 1058 68 1058 68 946 24 c 128,-1,18 - 834 -20 834 -20 705 -20 c 0,19,20 - 621 -20 621 -20 537.5 7 c 128,-1,21 - 454 34 454 34 375 93 c 128,-1,22 - 296 152 296 152 235.5 236 c 128,-1,23 - 175 320 175 320 138.5 444.5 c 128,-1,24 - 102 569 102 569 102 717 c 128,-1,25 - 102 865 102 865 136.5 989.5 c 128,-1,26 - 171 1114 171 1114 228.5 1198.5 c 128,-1,27 - 286 1283 286 1283 362 1341.5 c 128,-1,28 - 438 1400 438 1400 520 1427 c 128,-1,29 - 602 1454 602 1454 686 1454 c 0,30,31 - 841 1454 841 1454 977 1390 c 128,-1,32 - 1113 1326 1113 1326 1202 1200 c 1,33,34 - 1270 1239 1270 1239 1356 1239 c 0,35,36 - 1413 1239 1413 1239 1467 1223 c 128,-1,37 - 1521 1207 1521 1207 1569.5 1175 c 128,-1,38 - 1618 1143 1618 1143 1647.5 1087 c 128,-1,39 - 1677 1031 1677 1031 1677 958 c 2,40,-1 - 1677 -410 l 1,0,-1 -698 1352 m 0,41,42 - 553 1352 553 1352 461 1189.5 c 128,-1,43 - 369 1027 369 1027 369 717 c 0,44,45 - 369 586 369 586 389.5 478 c 128,-1,46 - 410 370 410 370 444 298 c 128,-1,47 - 478 226 478 226 523.5 176 c 128,-1,48 - 569 126 569 126 617.5 104 c 128,-1,49 - 666 82 666 82 717 82 c 0,50,51 - 875 82 875 82 973 244.5 c 128,-1,52 - 1071 407 1071 407 1071 717 c 0,53,54 - 1071 1040 1071 1040 970 1196 c 128,-1,55 - 869 1352 869 1352 698 1352 c 0,41,42 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A3 -Encoding: 419 419 656 -Width: 1474 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 748 102<925 1057> 819 102<426 643> -VStem: 90 256<214 657> 715 256<223 707> 1073 256<-410 718> -LayerCount: 2 -Fore -SplineSet -1329 -410 m 1,0,-1 - 1073 -410 l 1,1,-1 - 1073 502 l 2,2,3 - 1073 553 1073 553 1072.5 579.5 c 128,-1,4 - 1072 606 1072 606 1070 639.5 c 128,-1,5 - 1068 673 1068 673 1063 689 c 128,-1,6 - 1058 705 1058 705 1049.5 721 c 128,-1,7 - 1041 737 1041 737 1028 742.5 c 128,-1,8 - 1015 748 1015 748 997 748 c 0,9,10 - 969 748 969 748 956 738.5 c 128,-1,11 - 943 729 943 729 920 696 c 1,12,13 - 971 591 971 591 971 451 c 0,14,15 - 971 222 971 222 845 101 c 128,-1,16 - 719 -20 719 -20 512 -20 c 0,17,18 - 314 -20 314 -20 202 107 c 128,-1,19 - 90 234 90 234 90 451 c 0,20,21 - 90 555 90 555 127 645 c 128,-1,22 - 164 735 164 735 224 794.5 c 128,-1,23 - 284 854 284 854 359.5 888 c 128,-1,24 - 435 922 435 922 512 922 c 0,25,26 - 720 922 720 922 842 803 c 1,27,28 - 912 850 912 850 1008 850 c 0,29,30 - 1065 850 1065 850 1119 834 c 128,-1,31 - 1173 818 1173 818 1221.5 786 c 128,-1,32 - 1270 754 1270 754 1299.5 698 c 128,-1,33 - 1329 642 1329 642 1329 569 c 2,34,-1 - 1329 -410 l 1,0,-1 -715 451 m 0,35,36 - 715 537 715 537 707 600.5 c 128,-1,37 - 699 664 699 664 680.5 715.5 c 128,-1,38 - 662 767 662 767 627.5 793 c 128,-1,39 - 593 819 593 819 543 819 c 0,40,41 - 435 819 435 819 390.5 725.5 c 128,-1,42 - 346 632 346 632 346 451 c 0,43,44 - 346 380 346 380 351 326 c 128,-1,45 - 356 272 356 272 369.5 224.5 c 128,-1,46 - 383 177 383 177 404.5 146.5 c 128,-1,47 - 426 116 426 116 461 99 c 128,-1,48 - 496 82 496 82 543 82 c 0,49,50 - 595 82 595 82 630 108 c 128,-1,51 - 665 134 665 134 683 186 c 128,-1,52 - 701 238 701 238 708 300.5 c 128,-1,53 - 715 363 715 363 715 451 c 0,35,36 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01AC -Encoding: 428 428 657 -Width: 1466 -VWidth: 0 -Flags: W -HStem: 0 43G<602 868> 918 43G<240 313> 1331 102<360 602 868 1333> -VStem: 41 238<1032 1255> 602 266<0 1331> -LayerCount: 2 -Fore -SplineSet -1337 1434 m 5,0,-1 - 1333 1331 l 1,1,-1 - 868 1331 l 1,2,-1 - 868 0 l 1,3,-1 - 602 0 l 1,4,-1 - 602 1331 l 1,5,-1 - 477 1331 l 2,6,7 - 391 1331 391 1331 335 1271 c 128,-1,8 - 279 1211 279 1211 279 1139 c 0,9,10 - 279 1124 279 1124 280 1112 c 128,-1,11 - 281 1100 281 1100 283.5 1090 c 128,-1,12 - 286 1080 286 1080 287.5 1073 c 128,-1,13 - 289 1066 289 1066 294 1059.5 c 128,-1,14 - 299 1053 299 1053 301 1049 c 128,-1,15 - 303 1045 303 1045 309.5 1040.5 c 128,-1,16 - 316 1036 316 1036 318 1034.5 c 128,-1,17 - 320 1033 320 1033 327.5 1029 c 128,-1,18 - 335 1025 335 1025 336 1024 c 1,19,-1 - 299 918 l 1,20,21 - 233 927 233 927 178 949.5 c 128,-1,22 - 123 972 123 972 82 1018.5 c 128,-1,23 - 41 1065 41 1065 41 1128 c 0,24,25 - 41 1262 41 1262 158.5 1348 c 128,-1,26 - 276 1434 276 1434 457 1434 c 2,27,-1 - 1337 1434 l 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01AE -Encoding: 430 430 658 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -348 102<794 998> 1331 102<41 508 774 1239> -VStem: 508 266<-203 1331> -LayerCount: 2 -Fore -SplineSet -508 1331 m 1,0,-1 - 41 1331 l 1,1,-1 - 41 1434 l 1,2,-1 - 1243 1434 l 1,3,-1 - 1239 1331 l 1,4,-1 - 774 1331 l 1,5,-1 - 774 0 l 2,6,7 - 774 -72 774 -72 776 -111 c 128,-1,8 - 778 -150 778 -150 786 -184.5 c 128,-1,9 - 794 -219 794 -219 810.5 -232.5 c 128,-1,10 - 827 -246 827 -246 854 -246 c 0,11,12 - 927 -246 927 -246 963 -195 c 1,13,-1 - 1092 -256 l 1,14,15 - 1015 -348 1015 -348 885 -348 c 0,16,17 - 827 -348 827 -348 765 -332 c 128,-1,18 - 703 -316 703 -316 643.5 -284.5 c 128,-1,19 - 584 -253 584 -253 546 -196.5 c 128,-1,20 - 508 -140 508 -140 508 -68 c 2,21,-1 - 508 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01AD -Encoding: 429 429 659 -Width: 661 -VWidth: 0 -Flags: W -HStem: -20 102<459 630> 799 102<84 188 444 604> 1264 102<465 668> -VStem: 188 256<105 799 901 1221> -LayerCount: 2 -Fore -SplineSet -444 901 m 1,0,-1 - 604 901 l 1,1,-1 - 604 799 l 1,2,-1 - 444 799 l 1,3,-1 - 442 328 l 2,4,5 - 442 277 442 277 442.5 250.5 c 128,-1,6 - 443 224 443 224 445 190.5 c 128,-1,7 - 447 157 447 157 452 141 c 128,-1,8 - 457 125 457 125 465.5 109 c 128,-1,9 - 474 93 474 93 487 87.5 c 128,-1,10 - 500 82 500 82 518 82 c 0,11,12 - 546 82 546 82 559.5 91.5 c 128,-1,13 - 573 101 573 101 596 133 c 1,14,-1 - 725 72 l 1,15,16 - 687 27 687 27 628.5 3.5 c 128,-1,17 - 570 -20 570 -20 508 -20 c 0,18,19 - 463 -20 463 -20 419.5 -10.5 c 128,-1,20 - 376 -1 376 -1 333 20.5 c 128,-1,21 - 290 42 290 42 258 73.5 c 128,-1,22 - 226 105 226 105 206 153 c 128,-1,23 - 186 201 186 201 186 260 c 2,24,-1 - 188 799 l 1,25,-1 - 53 799 l 1,26,-1 - 84 901 l 1,27,-1 - 188 901 l 1,28,-1 - 188 1085 l 2,29,30 - 188 1143 188 1143 212.5 1191.5 c 128,-1,31 - 237 1240 237 1240 276 1271.5 c 128,-1,32 - 315 1303 315 1303 364.5 1325 c 128,-1,33 - 414 1347 414 1347 462 1356.5 c 128,-1,34 - 510 1366 510 1366 555 1366 c 0,35,36 - 685 1366 685 1366 762 1274 c 1,37,-1 - 633 1212 l 1,38,39 - 596 1264 596 1264 524 1264 c 0,40,41 - 497 1264 497 1264 480.5 1250.5 c 128,-1,42 - 464 1237 464 1237 456 1202.5 c 128,-1,43 - 448 1168 448 1168 446 1129 c 128,-1,44 - 444 1090 444 1090 444 1018 c 2,45,-1 - 444 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0288 -Encoding: 648 648 660 -Width: 657 -VWidth: 0 -Flags: W -HStem: -348 102<465 668> 799 102<84 188 444 604> -VStem: 188 256<-204 799 901 1198> -LayerCount: 2 -Fore -SplineSet -188 799 m 1,0,-1 - 53 799 l 1,1,-1 - 84 901 l 1,2,-1 - 188 901 l 1,3,-1 - 188 1198 l 1,4,-1 - 444 1229 l 1,5,-1 - 444 901 l 1,6,-1 - 604 901 l 1,7,-1 - 604 799 l 1,8,-1 - 444 799 l 1,9,-1 - 444 0 l 2,10,11 - 444 -72 444 -72 446 -111 c 128,-1,12 - 448 -150 448 -150 456 -184.5 c 128,-1,13 - 464 -219 464 -219 480.5 -232.5 c 128,-1,14 - 497 -246 497 -246 524 -246 c 0,15,16 - 597 -246 597 -246 633 -195 c 1,17,-1 - 762 -256 l 1,18,19 - 685 -348 685 -348 555 -348 c 0,20,21 - 497 -348 497 -348 436.5 -332 c 128,-1,22 - 376 -316 376 -316 318.5 -284.5 c 128,-1,23 - 261 -253 261 -253 224.5 -196.5 c 128,-1,24 - 188 -140 188 -140 188 -68 c 2,25,-1 - 188 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B5 -Encoding: 437 437 661 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<362 983> 696 102<225 381 682 823> 1331 102<102 672> -LayerCount: 2 -Fore -SplineSet -672 1331 m 1,0,-1 - 72 1331 l 1,1,-1 - 102 1434 l 1,2,-1 - 975 1434 l 1,3,-1 - 682 799 l 1,4,-1 - 823 799 l 1,5,-1 - 823 696 l 1,6,-1 - 635 696 l 1,7,-1 - 362 102 l 1,8,-1 - 983 102 l 1,9,-1 - 983 0 l 1,10,-1 - 61 0 l 1,11,-1 - 381 696 l 1,12,-1 - 225 696 l 1,13,-1 - 225 799 l 1,14,-1 - 428 799 l 1,15,-1 - 672 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B6 -Encoding: 438 438 662 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 102<352 823> 416 102<154 297 594 721> 799 102<74 520> -LayerCount: 2 -Fore -SplineSet -520 799 m 1,0,-1 - 43 799 l 1,1,-1 - 74 901 l 1,2,-1 - 817 901 l 1,3,-1 - 594 518 l 1,4,-1 - 721 518 l 1,5,-1 - 721 416 l 1,6,-1 - 535 416 l 1,7,-1 - 352 102 l 1,8,-1 - 823 102 l 1,9,-1 - 823 0 l 1,10,-1 - 53 0 l 1,11,-1 - 297 416 l 1,12,-1 - 154 416 l 1,13,-1 - 154 518 l 1,14,-1 - 356 518 l 1,15,-1 - 520 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01C0 -Encoding: 448 448 663 -Width: 507 -VWidth: 0 -Flags: W -HStem: 0 43<174 338> 1393 41<174 338> -VStem: 174 164<0 1434> -LayerCount: 2 -Fore -Refer: 59 124 N 1 0 0 1 82 0 2 -Validated: 1 -EndChar - -StartChar: uni01C1 -Encoding: 449 449 664 -Width: 835 -VWidth: 0 -Flags: W -HStem: 0 43<174 338 502 666> 1393 41<174 338 502 666> -VStem: 174 164<0 1434> 502 164<0 1434> -LayerCount: 2 -Fore -Refer: 59 124 N 1 0 0 1 82 0 2 -Refer: 59 124 N 1 0 0 1 410 0 2 -Validated: 1 -EndChar - -StartChar: uni01C2 -Encoding: 450 450 665 -Width: 708 -VWidth: 0 -Flags: W -HStem: 0 43G<272 436> 573 102<82 272 436 627> 799 102<82 272 436 627> 1393 41G<272 436> -VStem: 272 164<0 573 676 799 901 1434> -LayerCount: 2 -Fore -SplineSet -272 573 m 1,0,-1 - 82 573 l 1,1,-1 - 82 676 l 1,2,-1 - 272 676 l 1,3,-1 - 272 799 l 1,4,-1 - 82 799 l 1,5,-1 - 82 901 l 1,6,-1 - 272 901 l 1,7,-1 - 272 1434 l 1,8,-1 - 436 1434 l 1,9,-1 - 436 901 l 1,10,-1 - 627 901 l 1,11,-1 - 627 799 l 1,12,-1 - 436 799 l 1,13,-1 - 436 676 l 1,14,-1 - 627 676 l 1,15,-1 - 627 573 l 1,16,-1 - 436 573 l 1,17,-1 - 436 0 l 1,18,-1 - 272 0 l 1,19,-1 - 272 573 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01C3 -Encoding: 451 451 666 -Width: 448 -VWidth: 0 -Flags: W -HStem: 0 164<113 328> 1393 41<92 348> -VStem: 92 256<937 1434> 113 215<0 164 369 582> -LayerCount: 2 -Fore -Refer: 53 33 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Gcaron -Encoding: 486 486 667 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -20 102<614 974> 717 102<821 993> 1331 102<564 915> 1384 387 -VStem: 102 266<441 1009> 477 479 993 256<161 717> -LayerCount: 2 -Fore -SplineSet -821 819 m 1,0,-1 - 1249 819 l 1,1,-1 - 1249 209 l 1,2,3 - 1169 106 1169 106 1035.5 43 c 128,-1,4 - 902 -20 902 -20 741 -20 c 0,5,6 - 659 -20 659 -20 572.5 7 c 128,-1,7 - 486 34 486 34 401 93 c 128,-1,8 - 316 152 316 152 250 235.5 c 128,-1,9 - 184 319 184 319 143 444.5 c 128,-1,10 - 102 570 102 570 102 717 c 0,11,12 - 102 861 102 861 137 981.5 c 128,-1,13 - 172 1102 172 1102 230 1182.5 c 128,-1,14 - 288 1263 288 1263 364 1320 c 128,-1,15 - 440 1377 440 1377 520 1403.5 c 128,-1,16 - 600 1430 600 1430 682 1433 c 1,17,-1 - 477 1718 l 1,18,-1 - 541 1772 l 1,19,-1 - 717 1591 l 1,20,-1 - 893 1772 l 1,21,-1 - 956 1718 l 1,22,-1 - 752 1433 l 1,23,24 - 1100 1422 1100 1422 1243 1245 c 1,25,-1 - 1018 1178 l 1,26,27 - 987 1222 987 1222 968 1244 c 128,-1,28 - 949 1266 949 1266 916 1289.5 c 128,-1,29 - 883 1313 883 1313 839.5 1322 c 128,-1,30 - 796 1331 796 1331 733 1331 c 0,31,32 - 551 1331 551 1331 460 1182.5 c 128,-1,33 - 369 1034 369 1034 369 717 c 0,34,35 - 369 586 369 586 392.5 478 c 128,-1,36 - 416 370 416 370 455 298 c 128,-1,37 - 494 226 494 226 546 176 c 128,-1,38 - 598 126 598 126 655 104 c 128,-1,39 - 712 82 712 82 772 82 c 0,40,41 - 898 82 898 82 993 135 c 1,42,-1 - 993 717 l 1,43,-1 - 821 717 l 1,44,-1 - 821 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: gcaron -Encoding: 487 487 668 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<362 595> -20 102<436 635> 819 102<423 633> 860 41<637 893> 954 387 -VStem: 90 256<223 675> 293 479 637 256<-196 -8 84 801 893 901> -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1120 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01F4 -Encoding: 500 500 669 -Width: 1372 -VWidth: 0 -Flags: W -HStem: -20 102<614 974> 717 102<821 993> 1331 102<564 915> 1495 403 -VStem: 102 266<441 1009> 616 371 993 256<161 717> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1305 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01F5 -Encoding: 501 501 670 -Width: 1038 -VWidth: 0 -Flags: W -HStem: -348 102<362 595> -20 102<436 635> 819 102<423 633> 860 41<637 893> 1065 403 -VStem: 90 256<223 675> 406 371 637 256<-196 -8 84 801 893 901> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1094 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0200 -Encoding: 512 512 671 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1495 403 -VStem: 242 371 520 371 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1106 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0201 -Encoding: 513 513 672 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1065 403 -VStem: 80 371 94 256<132 467> 358 371 602 256<87 518 616 771> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 944 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0202 -Encoding: 514 514 673 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1589 137<529 773> -VStem: 420 78<1528 1550> 805 78<1528 1550> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0203 -Encoding: 515 515 674 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1159 137<367 612> -VStem: 94 256<132 467> 258 78<1098 1120> 602 256<87 518 616 771> 643 78<1098 1120> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0204 -Encoding: 516 516 675 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1495 403 -VStem: 174 266<102 799 901 1331> 205 371 483 371 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1069 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0205 -Encoding: 517 517 676 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1065 403 -VStem: 90 256<235 451 553 656> 121 371 399 371 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 985 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0206 -Encoding: 518 518 677 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1589 137<492 737> -VStem: 174 266<102 799 901 1331> 383 78<1528 1550> 768 78<1528 1550> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1202 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0207 -Encoding: 519 519 678 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1159 137<408 653> -VStem: 90 256<235 451 553 656> 299 78<1098 1120> 684 78<1098 1120> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1118 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0208 -Encoding: 520 520 679 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1495 403 -VStem: -102 371 172 266<0 1434> 176 371 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 762 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0209 -Encoding: 521 521 680 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1065 403 -VStem: -156 371 123 256<0 901> 123 371 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 709 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020A -Encoding: 522 522 681 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1589 137<185 429> -VStem: 76 78<1528 1550> 172 266<0 1434> 461 78<1528 1550> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 895 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020B -Encoding: 523 523 682 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1159 137<132 376> -VStem: 23 78<1098 1120> 123 256<0 901> 408 78<1098 1120> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 842 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020C -Encoding: 524 524 683 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1495 403 -VStem: 102 266<424 1012> 297 371 575 371 1071 266<414 1009> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1161 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020D -Encoding: 525 525 684 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1065 403 -VStem: 90 256<214 657> 125 371 403 371 715 256<223 678> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 989 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020E -Encoding: 526 526 685 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1589 137<584 829> -VStem: 102 266<424 1012> 475 78<1528 1550> 860 78<1528 1550> 1071 266<414 1009> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1294 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020F -Encoding: 527 527 686 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1159 137<412 657> -VStem: 90 256<214 657> 303 78<1098 1120> 688 78<1098 1120> 715 256<223 678> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1122 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0210 -Encoding: 528 528 687 -Width: 1138 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 829 1090> 655 102<440 543> 1331 102<440 665> 1495 403 -VStem: 152 371 174 266<0 655 758 1331> 430 371 772 266<872 1217> 829 260<0 202> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1016 246 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0211 -Encoding: 529 529 688 -Width: 770 -VWidth: 0 -Flags: W -HStem: 0 43<147 403> 819 102<448 739> 860 41<147 403> 1065 403 -VStem: 49 371 147 256<0 774 874 901> 328 371 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 913 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0212 -Encoding: 530 530 689 -Width: 1138 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 829 1090> 655 102<440 543> 1331 102<440 665> 1589 137<439 683> -VStem: 174 266<0 655 758 1331> 330 78<1528 1550> 715 78<1528 1550> 772 266<872 1217> 829 260<0 202> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1149 246 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0213 -Encoding: 531 531 690 -Width: 770 -VWidth: 0 -Flags: W -HStem: 0 43<147 403> 819 102<448 739> 860 41<147 403> 1159 137<337 581> -VStem: 147 256<0 774 874 901> 227 78<1098 1120> 612 78<1098 1120> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1047 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0214 -Encoding: 532 532 691 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1495 403 -VStem: 156 266<328 1434> 311 371 590 371 981 266<297 1434> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1176 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0215 -Encoding: 533 533 692 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1065 403 -VStem: 139 371 143 256<163 901> 418 371 688 256<91 901> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1004 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0216 -Encoding: 534 534 693 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1589 137<599 843> -VStem: 156 266<328 1434> 489 78<1528 1550> 874 78<1528 1550> 981 266<297 1434> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1309 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0217 -Encoding: 535 535 694 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1159 137<427 671> -VStem: 143 256<163 901> 317 78<1098 1120> 688 256<91 901> 702 78<1098 1120> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1137 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021E -Encoding: 542 542 695 -Width: 1351 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 915 1182> 717 102<440 915> 1384 387 1393 41<174 440 915 1182> -VStem: 174 266<0 717 819 1434> 445 479 915 266<0 717 819 1434> -LayerCount: 2 -Fore -Refer: 374 711 N 1 0 0 1 384 246 2 -Refer: 35 72 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021F -Encoding: 543 543 696 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 403 692 948> 819 102<405 644> 1309 387 1311 41<147 403> -VStem: 147 256<0 802 907 1352> 297 479 692 256<0 720> -LayerCount: 2 -Fore -Refer: 374 711 N 1 0 0 1 236 170 2 -Refer: 2 104 S 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0222 -Encoding: 546 546 697 -Width: 1290 -VWidth: 0 -Flags: W -HStem: -20 102<487 822> 1352 102<479 578 721 813> -VStem: 92 256<225 530> 141 256<990 1235> 911 256<956 1229> 942 256<217 498> -AnchorPoint: "cedilla" 629 0 basechar 0 -AnchorPoint: "horn" 1116 1090 basechar 0 -AnchorPoint: "bottom" 639 0 basechar 0 -AnchorPoint: "ogonek" 659 0 basechar 0 -AnchorPoint: "top" 657 1438 basechar 0 -LayerCount: 2 -Fore -SplineSet -721 1454 m 1,0,1 - 816 1454 816 1454 919 1405.5 c 128,-1,2 - 1022 1357 1022 1357 1094.5 1269.5 c 128,-1,3 - 1167 1182 1167 1182 1167 1085 c 0,4,5 - 1167 1028 1167 1028 1151 981.5 c 128,-1,6 - 1135 935 1135 935 1109 903 c 128,-1,7 - 1083 871 1083 871 1042.5 843.5 c 128,-1,8 - 1002 816 1002 816 962 799 c 128,-1,9 - 922 782 922 782 868 764 c 1,10,11 - 941 729 941 729 994 695.5 c 128,-1,12 - 1047 662 1047 662 1097 614 c 128,-1,13 - 1147 566 1147 566 1172.5 503.5 c 128,-1,14 - 1198 441 1198 441 1198 365 c 0,15,16 - 1198 258 1198 258 1118.5 168.5 c 128,-1,17 - 1039 79 1039 79 909 29.5 c 128,-1,18 - 779 -20 779 -20 631 -20 c 0,19,20 - 497 -20 497 -20 372 33 c 128,-1,21 - 247 86 247 86 169.5 175.5 c 128,-1,22 - 92 265 92 265 92 365 c 0,23,24 - 92 429 92 429 111 483 c 128,-1,25 - 130 537 130 537 160 575.5 c 128,-1,26 - 190 614 190 614 236.5 647.5 c 128,-1,27 - 283 681 283 681 328.5 703 c 128,-1,28 - 374 725 374 725 434 748 c 1,29,30 - 369 778 369 778 320.5 808.5 c 128,-1,31 - 272 839 272 839 229 881.5 c 128,-1,32 - 186 924 186 924 163.5 979.5 c 128,-1,33 - 141 1035 141 1035 141 1102 c 0,34,35 - 141 1188 141 1188 211 1271.5 c 128,-1,36 - 281 1355 281 1355 382.5 1404.5 c 128,-1,37 - 484 1454 484 1454 578 1454 c 1,38,-1 - 578 1352 l 1,39,40 - 506 1352 506 1352 451.5 1278.5 c 128,-1,41 - 397 1205 397 1205 397 1102 c 0,42,43 - 397 1065 397 1065 413.5 1031.5 c 128,-1,44 - 430 998 430 998 454 974 c 128,-1,45 - 478 950 478 950 520.5 924 c 128,-1,46 - 563 898 563 898 599 881 c 128,-1,47 - 635 864 635 864 692 840 c 1,48,49 - 797 883 797 883 854 939.5 c 128,-1,50 - 911 996 911 996 911 1085 c 0,51,52 - 911 1185 911 1185 850.5 1268.5 c 128,-1,53 - 790 1352 790 1352 721 1352 c 1,54,-1 - 721 1454 l 1,0,1 -598 680 m 1,55,56 - 480 635 480 635 414 562.5 c 128,-1,57 - 348 490 348 490 348 365 c 0,58,59 - 348 247 348 247 432.5 164.5 c 128,-1,60 - 517 82 517 82 645 82 c 0,61,62 - 791 82 791 82 866.5 156.5 c 128,-1,63 - 942 231 942 231 942 365 c 0,64,65 - 942 414 942 414 922 456.5 c 128,-1,66 - 902 499 902 499 874 528 c 128,-1,67 - 846 557 846 557 795.5 587 c 128,-1,68 - 745 617 745 617 704.5 635.5 c 128,-1,69 - 664 654 664 654 598 680 c 1,55,56 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0223 -Encoding: 547 547 698 -Width: 1167 -VWidth: 0 -Flags: W -HStem: -20 102<458 713> 1126 100<411 548> 1229 102<639 746> -VStem: 92 256<202 516> 141 256<900 1113> 788 256<916 1181> 819 256<193 505> -AnchorPoint: "cedilla" 571 0 basechar 0 -AnchorPoint: "horn" 989 1085 basechar 0 -AnchorPoint: "bottom" 582 0 basechar 0 -AnchorPoint: "ogonek" 602 0 basechar 0 -AnchorPoint: "top" 600 1352 basechar 0 -LayerCount: 2 -Fore -SplineSet -639 1331 m 1,0,1 - 712 1331 712 1331 782 1314 c 128,-1,2 - 852 1297 852 1297 911.5 1263 c 128,-1,3 - 971 1229 971 1229 1007.5 1171.5 c 128,-1,4 - 1044 1114 1044 1114 1044 1040 c 0,5,6 - 1044 982 1044 982 1024 935 c 128,-1,7 - 1004 888 1004 888 964.5 853 c 128,-1,8 - 925 818 925 818 883.5 793.5 c 128,-1,9 - 842 769 842 769 782 743 c 1,10,11 - 833 721 833 721 872 699.5 c 128,-1,12 - 911 678 911 678 951 645 c 128,-1,13 - 991 612 991 612 1017 574 c 128,-1,14 - 1043 536 1043 536 1059 482.5 c 128,-1,15 - 1075 429 1075 429 1075 365 c 0,16,17 - 1075 238 1075 238 1006.5 149.5 c 128,-1,18 - 938 61 938 61 826 20.5 c 128,-1,19 - 714 -20 714 -20 569 -20 c 0,20,21 - 479 -20 479 -20 395.5 4 c 128,-1,22 - 312 28 312 28 243.5 73.5 c 128,-1,23 - 175 119 175 119 133.5 195 c 128,-1,24 - 92 271 92 271 92 365 c 0,25,26 - 92 420 92 420 108.5 467.5 c 128,-1,27 - 125 515 125 515 151 549.5 c 128,-1,28 - 177 584 177 584 218 615.5 c 128,-1,29 - 259 647 259 647 297.5 668 c 128,-1,30 - 336 689 336 689 389 713 c 1,31,32 - 333 736 333 736 293 759.5 c 128,-1,33 - 253 783 253 783 216 816.5 c 128,-1,34 - 179 850 179 850 160 896 c 128,-1,35 - 141 942 141 942 141 999 c 0,36,37 - 141 1067 141 1067 195 1121.5 c 128,-1,38 - 249 1176 249 1176 322 1201.5 c 128,-1,39 - 395 1227 395 1227 467 1227 c 0,40,41 - 514 1227 514 1227 567 1212 c 1,42,-1 - 541 1114 l 1,43,44 - 500 1126 500 1126 471 1126 c 0,45,46 - 434 1126 434 1126 415.5 1097.5 c 128,-1,47 - 397 1069 397 1069 397 999 c 0,48,49 - 397 964 397 964 412 935.5 c 128,-1,50 - 427 907 427 907 458.5 884.5 c 128,-1,51 - 490 862 490 862 522.5 846.5 c 128,-1,52 - 555 831 555 831 606 811 c 1,53,54 - 693 856 693 856 740.5 909.5 c 128,-1,55 - 788 963 788 963 788 1040 c 0,56,57 - 788 1229 788 1229 639 1229 c 1,58,-1 - 639 1331 l 1,0,1 -557 647 m 1,59,60 - 457 597 457 597 402.5 532 c 128,-1,61 - 348 467 348 467 348 365 c 0,62,63 - 348 247 348 247 416.5 164.5 c 128,-1,64 - 485 82 485 82 584 82 c 0,65,66 - 686 82 686 82 752.5 159 c 128,-1,67 - 819 236 819 236 819 365 c 0,68,69 - 819 422 819 422 799 467 c 128,-1,70 - 779 512 779 512 739.5 545 c 128,-1,71 - 700 578 700 578 659 600 c 128,-1,72 - 618 622 618 622 557 647 c 1,59,60 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni022A -Encoding: 554 554 699 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1516 170<436 606 805 975> 1751 115<469 940> -VStem: 102 266<424 1012> 436 170<1516 1686> 469 471<1751 1866> 805 170<1516 1686> 1071 266<414 1009> -LayerCount: 2 -Fore -Refer: 157 214 N 1 0 0 1 0 0 3 -Refer: 96 772 N 1 0 0 1 1303 481 2 -Validated: 1 -EndChar - -StartChar: uni022B -Encoding: 555 555 700 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1085 170<264 434 633 803> 1382 115<297 768> -VStem: 90 256<214 657> 264 170<1085 1255> 297 471<1382 1497> 633 170<1085 1255> 715 256<223 678> -LayerCount: 2 -Fore -Refer: 136 246 N 1 0 0 1 0 0 3 -Refer: 96 772 S 1 0 0 1 1130 113 2 -Validated: 1 -EndChar - -StartChar: uni022C -Encoding: 556 556 701 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1516 141<710 908> 1581 141<525 724> 1751 115<477 948> -VStem: 102 266<424 1012> 434 84<1516 1568> 477 471<1751 1866> 915 84<1670 1722> 1071 266<414 1009> -LayerCount: 2 -Fore -Refer: 156 213 N 1 0 0 1 0 0 3 -Refer: 96 772 S 1 0 0 1 1311 481 2 -Validated: 1 -EndChar - -StartChar: uni022D -Encoding: 557 557 702 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1085 141<538 736> 1151 141<353 552> 1382 115<297 768> -VStem: 90 256<214 657> 262 84<1085 1138> 297 471<1382 1497> 715 256<223 678> 743 84<1240 1292> -LayerCount: 2 -Fore -Refer: 131 245 N 1 0 0 1 0 0 3 -Refer: 96 772 N 1 0 0 1 1130 113 2 -Validated: 1 -EndChar - -StartChar: uni022E -Encoding: 558 558 703 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1516 170<621 791> -VStem: 102 266<424 1012> 621 170<1516 1686> 1071 266<414 1009> -AnchorPoint: "cedilla" 700 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "top" 707 1686 basechar 0 -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 3 -Refer: 98 775 N 1 0 0 1 1296 246 2 -Validated: 1 -EndChar - -StartChar: uni022F -Encoding: 559 559 704 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1085 170<465 635> -VStem: 90 256<214 657> 465 170<1085 1255> 715 256<223 678> -AnchorPoint: "top" 549 1255 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 3 -Refer: 98 775 N 1 0 0 1 1141 -184 2 -Validated: 1 -EndChar - -StartChar: uni0230 -Encoding: 560 560 705 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1516 170<621 791> 1767 115<461 932> -VStem: 102 266<424 1012> 461 471<1767 1882> 621 170<1516 1686> 1071 266<414 1009> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1294 498 2 -Refer: 703 558 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0231 -Encoding: 561 561 706 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1085 170<465 635> 1382 115<297 768> -VStem: 90 256<214 657> 297 471<1382 1497> 465 170<1085 1255> 715 256<223 678> -LayerCount: 2 -Fore -Refer: 704 559 N 1 0 0 1 0 0 3 -Refer: 96 772 N 1 0 0 1 1130 113 2 -Validated: 1 -EndChar - -StartChar: uni0232 -Encoding: 562 562 707 -Width: 989 -VWidth: 0 -Flags: W -HStem: 0 43<383 649> 1393 41<23 301 768 973> 1516 115<268 739> -VStem: 268 471<1516 1630> 383 266<0 727> -AnchorPoint: "top" 498 1626 basechar 0 -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "ogonek" 510 0 basechar 0 -AnchorPoint: "cedilla" 492 0 basechar 0 -AnchorPoint: "horn" 725 1085 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1102 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0233 -Encoding: 563 563 708 -Width: 923 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 860 41<88 324 729 907> 1085 115<258 729> -VStem: 258 471<1085 1200> -AnchorPoint: "horn" 762 717 basechar 0 -AnchorPoint: "cedilla" 242 -328 basechar 0 -AnchorPoint: "bottom" 365 -315 basechar 0 -AnchorPoint: "ogonek" 614 0 basechar 0 -AnchorPoint: "top" 506 1200 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1092 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0241 -Encoding: 577 577 709 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 43G<225 481> 557 98<481 623> 1270 102<300 653> -VStem: 225 256<0 557> 770 256<800 1141> -LayerCount: 2 -Fore -SplineSet -481 0 m 1,0,-1 - 225 0 l 1,1,-1 - 225 655 l 1,2,-1 - 436 655 l 2,3,4 - 498 655 498 655 554 670.5 c 128,-1,5 - 610 686 610 686 660 719.5 c 128,-1,6 - 710 753 710 753 740 813 c 128,-1,7 - 770 873 770 873 770 954 c 0,8,9 - 770 1119 770 1119 695.5 1194.5 c 128,-1,10 - 621 1270 621 1270 471 1270 c 0,11,12 - 411 1270 411 1270 362 1255.5 c 128,-1,13 - 313 1241 313 1241 279 1214 c 128,-1,14 - 245 1187 245 1187 223 1161.5 c 128,-1,15 - 201 1136 201 1136 180 1102 c 1,16,-1 - 61 1194 l 1,17,18 - 122 1271 122 1271 248.5 1321.5 c 128,-1,19 - 375 1372 375 1372 502 1372 c 0,20,21 - 583 1372 583 1372 658.5 1356.5 c 128,-1,22 - 734 1341 734 1341 801 1307.5 c 128,-1,23 - 868 1274 868 1274 918 1225.5 c 128,-1,24 - 968 1177 968 1177 997 1107.5 c 128,-1,25 - 1026 1038 1026 1038 1026 954 c 0,26,27 - 1026 862 1026 862 973 784 c 128,-1,28 - 920 706 920 706 837.5 658 c 128,-1,29 - 755 610 755 610 661.5 583.5 c 128,-1,30 - 568 557 568 557 481 557 c 1,31,-1 - 481 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0242 -Encoding: 578 578 710 -Width: 995 -VWidth: 0 -Flags: W -HStem: 0 246<225 481> 147 98<481 512> 819 102<304 559> -VStem: 225 256<0 147> 647 256<355 709> -LayerCount: 2 -Fore -SplineSet -481 0 m 1,0,-1 - 225 0 l 1,1,-1 - 225 246 l 1,2,-1 - 358 246 l 2,3,4 - 420 246 420 246 468.5 258.5 c 128,-1,5 - 517 271 517 271 559.5 300.5 c 128,-1,6 - 602 330 602 330 624.5 386.5 c 128,-1,7 - 647 443 647 443 647 524 c 0,8,9 - 647 680 647 680 585.5 749.5 c 128,-1,10 - 524 819 524 819 430 819 c 0,11,12 - 388 819 388 819 354.5 806 c 128,-1,13 - 321 793 321 793 294.5 766 c 128,-1,14 - 268 739 268 739 252.5 718 c 128,-1,15 - 237 697 237 697 215 661 c 0,16,17 - 211 654 211 654 209 651 c 1,18,-1 - 61 723 l 1,19,20 - 128 807 128 807 235 864.5 c 128,-1,21 - 342 922 342 922 461 922 c 0,22,23 - 525 922 525 922 586 908.5 c 128,-1,24 - 647 895 647 895 705 864 c 128,-1,25 - 763 833 763 833 806.5 788 c 128,-1,26 - 850 743 850 743 876.5 675 c 128,-1,27 - 903 607 903 607 903 524 c 0,28,29 - 903 450 903 450 876 386.5 c 128,-1,30 - 849 323 849 323 805 279.5 c 128,-1,31 - 761 236 761 236 705.5 205.5 c 128,-1,32 - 650 175 650 175 592.5 161 c 128,-1,33 - 535 147 535 147 481 147 c 1,34,-1 - 481 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0251 -Encoding: 593 593 711 -Width: 1228 -VWidth: 0 -Flags: W -HStem: -20 102<478 769 971 1142> 819 102<465 704> 860 41G<754 999> -VStem: 90 246<235 670> 754 246<128 769 889 901> 1143 70<91 131> -AnchorPoint: "ogonek" 1001 0 basechar 0 -AnchorPoint: "bottom" 573 0 basechar 0 -AnchorPoint: "cedilla" 584 0 basechar 0 -AnchorPoint: "horn" 967 717 basechar 0 -AnchorPoint: "top" 590 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -999 901 m 1,0,-1 - 999 276 l 2,1,2 - 999 82 999 82 1075 82 c 0,3,4 - 1102 82 1102 82 1122.5 95.5 c 128,-1,5 - 1143 109 1143 109 1143 131 c 1,6,-1 - 1212 131 l 1,7,8 - 1212 -20 1212 -20 1008 -20 c 0,9,10 - 896 -20 896 -20 827 43 c 1,11,12 - 782 9 782 9 735.5 -5.5 c 128,-1,13 - 689 -20 689 -20 604 -20 c 0,14,15 - 353 -20 353 -20 221.5 105.5 c 128,-1,16 - 90 231 90 231 90 451 c 0,17,18 - 90 668 90 668 216 795 c 128,-1,19 - 342 922 342 922 563 922 c 0,20,21 - 663 922 663 922 754 889 c 1,22,-1 - 754 901 l 1,23,-1 - 999 901 l 1,0,-1 -754 692 m 1,24,25 - 729 754 729 754 691.5 786.5 c 128,-1,26 - 654 819 654 819 594 819 c 0,27,28 - 478 819 478 819 407 719 c 128,-1,29 - 336 619 336 619 336 451 c 0,30,31 - 336 279 336 279 413.5 180.5 c 128,-1,32 - 491 82 491 82 635 82 c 0,33,34 - 719 82 719 82 770 127 c 1,35,36 - 754 170 754 170 754 213 c 2,37,-1 - 754 692 l 1,24,25 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C6D -Encoding: 11373 11373 712 -Width: 1445 -VWidth: 0 -Flags: W -HStem: -20 102<672 1069 1346 1516> 1352 102<640 1028> 1393 41G<1063 1329> -VStem: 102 266<441 996> 1063 266<139 1312 1419 1434> -AnchorPoint: "top" 815 1434 basechar 0 -AnchorPoint: "ogonek" 834 0 basechar 0 -AnchorPoint: "bottom" 829 0 basechar 0 -AnchorPoint: "horn" 1325 1085 basechar 0 -AnchorPoint: "cedilla" 809 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1063 1434 m 1,0,-1 - 1329 1434 l 1,1,-1 - 1329 328 l 2,2,3 - 1329 277 1329 277 1329.5 250.5 c 128,-1,4 - 1330 224 1330 224 1332 190.5 c 128,-1,5 - 1334 157 1334 157 1339 141 c 128,-1,6 - 1344 125 1344 125 1352.5 109 c 128,-1,7 - 1361 93 1361 93 1374 87.5 c 128,-1,8 - 1387 82 1387 82 1405 82 c 0,9,10 - 1433 82 1433 82 1446.5 91.5 c 128,-1,11 - 1460 101 1460 101 1483 133 c 1,12,-1 - 1612 72 l 1,13,14 - 1574 27 1574 27 1510.5 3.5 c 128,-1,15 - 1447 -20 1447 -20 1384 -20 c 0,16,17 - 1244 -20 1244 -20 1155 55 c 1,18,19 - 1011 -20 1011 -20 834 -20 c 0,20,21 - 725 -20 725 -20 621.5 7 c 128,-1,22 - 518 34 518 34 423.5 92.5 c 128,-1,23 - 329 151 329 151 258 235.5 c 128,-1,24 - 187 320 187 320 144.5 444 c 128,-1,25 - 102 568 102 568 102 717 c 0,26,27 - 102 865 102 865 144 989.5 c 128,-1,28 - 186 1114 186 1114 255 1198 c 128,-1,29 - 324 1282 324 1282 415 1341 c 128,-1,30 - 506 1400 506 1400 602 1427 c 128,-1,31 - 698 1454 698 1454 795 1454 c 0,32,33 - 947 1454 947 1454 1063 1419 c 1,34,-1 - 1063 1434 l 1,0,-1 -1063 1288 m 1,35,36 - 960 1352 960 1352 825 1352 c 0,37,38 - 728 1352 728 1352 645.5 1312.5 c 128,-1,39 - 563 1273 563 1273 501 1196.5 c 128,-1,40 - 439 1120 439 1120 404 997 c 128,-1,41 - 369 874 369 874 369 717 c 0,42,43 - 369 586 369 586 398 478 c 128,-1,44 - 427 370 427 370 475 298 c 128,-1,45 - 523 226 523 226 587.5 176 c 128,-1,46 - 652 126 652 126 721 104 c 128,-1,47 - 790 82 790 82 864 82 c 0,48,49 - 996 82 996 82 1090 137 c 1,50,51 - 1063 196 1063 196 1063 260 c 2,52,-1 - 1063 1288 l 1,35,36 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019C -Encoding: 412 412 713 -Width: 1945 -VWidth: 0 -Flags: W -HStem: -20 102<501 753 1183 1416> 0 43G<1522 1778> 1311 41G<172 428 850 1106 1522 1778> -VStem: 172 256<200 1352> 850 256<189 1352> 1522 256<0 86 201 1352> -LayerCount: 2 -Fore -SplineSet -1778 1352 m 1,0,-1 - 1778 0 l 1,1,-1 - 1522 0 l 1,2,-1 - 1522 86 l 1,3,4 - 1504 61 1504 61 1492 47.5 c 128,-1,5 - 1480 34 1480 34 1456.5 15.5 c 128,-1,6 - 1433 -3 1433 -3 1399 -11.5 c 128,-1,7 - 1365 -20 1365 -20 1321 -20 c 0,8,9 - 1178 -20 1178 -20 1099 15 c 128,-1,10 - 1020 50 1020 50 965 127 c 1,11,12 - 901 51 901 51 810.5 15.5 c 128,-1,13 - 720 -20 720 -20 639 -20 c 0,14,15 - 418 -20 418 -20 295 88.5 c 128,-1,16 - 172 197 172 197 172 410 c 2,17,-1 - 172 1352 l 1,18,-1 - 428 1352 l 1,19,-1 - 428 434 l 2,20,21 - 428 352 428 352 437 290.5 c 128,-1,22 - 446 229 446 229 461.5 189.5 c 128,-1,23 - 477 150 477 150 500 125.5 c 128,-1,24 - 523 101 523 101 549 91.5 c 128,-1,25 - 575 82 575 82 608 82 c 0,26,27 - 850 82 850 82 850 410 c 2,28,-1 - 850 1352 l 1,29,-1 - 1106 1352 l 1,30,-1 - 1106 434 l 2,31,32 - 1106 332 1106 332 1119.5 261.5 c 128,-1,33 - 1133 191 1133 191 1158.5 153 c 128,-1,34 - 1184 115 1184 115 1216 98.5 c 128,-1,35 - 1248 82 1248 82 1290 82 c 128,-1,36 - 1332 82 1332 82 1367.5 97 c 128,-1,37 - 1403 112 1403 112 1426 132.5 c 128,-1,38 - 1449 153 1449 153 1469.5 186 c 128,-1,39 - 1490 219 1490 219 1500 242.5 c 128,-1,40 - 1510 266 1510 266 1522 299 c 1,41,-1 - 1522 1352 l 1,42,-1 - 1778 1352 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni026F -Encoding: 623 623 714 -Width: 1675 -VWidth: 0 -Flags: W -HStem: -20 102<463 704 1020 1278> 860 41G<147 403 705 961 1280 1536> -VStem: 147 256<159 901> 705 256<144 901> 1280 256<91 901> -LayerCount: 2 -Fore -SplineSet -1280 106 m 1,0,-1 - 1280 901 l 1,1,-1 - 1536 901 l 1,2,-1 - 1536 0 l 1,3,-1 - 1300 0 l 1,4,5 - 1239 -20 1239 -20 1165 -20 c 0,6,7 - 961 -20 961 -20 858 66 c 1,8,9 - 739 -20 739 -20 627 -20 c 0,10,11 - 514 -20 514 -20 430 -1.5 c 128,-1,12 - 346 17 346 17 280.5 59.5 c 128,-1,13 - 215 102 215 102 181 176.5 c 128,-1,14 - 147 251 147 251 147 358 c 2,15,-1 - 147 901 l 1,16,-1 - 403 901 l 1,17,-1 - 403 401 l 2,18,19 - 403 300 403 300 414 236.5 c 128,-1,20 - 425 173 425 173 450.5 139 c 128,-1,21 - 476 105 476 105 509 93.5 c 128,-1,22 - 542 82 542 82 596 82 c 0,23,24 - 661 82 661 82 705 102 c 1,25,-1 - 705 901 l 1,26,-1 - 961 901 l 1,27,-1 - 961 401 l 2,28,29 - 961 267 961 267 983 197 c 128,-1,30 - 1005 127 1005 127 1045.5 104.5 c 128,-1,31 - 1086 82 1086 82 1163 82 c 0,32,33 - 1228 82 1228 82 1280 106 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0271 -Encoding: 625 625 715 -Width: 1675 -VWidth: 0 -Flags: W -HStem: -348 102<1056 1259> 0 43G<147 403 723 979> 819 102<405 663 980 1220> -VStem: 147 256<0 811> 723 256<0 757> 1280 256<-204 743> -LayerCount: 2 -Fore -SplineSet -1536 -68 m 2,0,1 - 1536 -140 1536 -140 1499.5 -196.5 c 128,-1,2 - 1463 -253 1463 -253 1405.5 -284.5 c 128,-1,3 - 1348 -316 1348 -316 1287.5 -332 c 128,-1,4 - 1227 -348 1227 -348 1169 -348 c 0,5,6 - 1040 -348 1040 -348 963 -256 c 1,7,-1 - 1092 -195 l 1,8,9 - 1128 -246 1128 -246 1200 -246 c 0,10,11 - 1227 -246 1227 -246 1243.5 -232.5 c 128,-1,12 - 1260 -219 1260 -219 1268 -184.5 c 128,-1,13 - 1276 -150 1276 -150 1278 -111 c 128,-1,14 - 1280 -72 1280 -72 1280 0 c 2,15,-1 - 1280 500 l 2,16,17 - 1280 601 1280 601 1269 664.5 c 128,-1,18 - 1258 728 1258 728 1232.5 762 c 128,-1,19 - 1207 796 1207 796 1174 807.5 c 128,-1,20 - 1141 819 1141 819 1087 819 c 0,21,22 - 1023 819 1023 819 979 799 c 1,23,-1 - 979 0 l 1,24,-1 - 723 0 l 1,25,-1 - 723 500 l 2,26,27 - 723 602 723 602 712 664.5 c 128,-1,28 - 701 727 701 727 674.5 761.5 c 128,-1,29 - 648 796 648 796 613 807.5 c 128,-1,30 - 578 819 578 819 520 819 c 0,31,32 - 456 819 456 819 403 795 c 1,33,-1 - 403 0 l 1,34,-1 - 147 0 l 1,35,-1 - 147 901 l 1,36,-1 - 383 901 l 1,37,38 - 447 922 447 922 518 922 c 0,39,40 - 722 922 722 922 825 836 c 1,41,42 - 944 922 944 922 1057 922 c 0,43,44 - 1146 922 1146 922 1217 910.5 c 128,-1,45 - 1288 899 1288 899 1349 872 c 128,-1,46 - 1410 845 1410 845 1450.5 802 c 128,-1,47 - 1491 759 1491 759 1513.5 694 c 128,-1,48 - 1536 629 1536 629 1536 543 c 2,49,-1 - 1536 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C6E -Encoding: 11374 11374 716 -Width: 1626 -VWidth: 0 -Flags: W -HStem: -348 102<966 1170> 0 43G<174 440> 1393 41G<174 459 1171 1456> -VStem: 174 266<0 1047> 1190 266<-203 1047> -LayerCount: 2 -Fore -SplineSet -1456 -68 m 2,0,1 - 1456 -140 1456 -140 1418 -196.5 c 128,-1,2 - 1380 -253 1380 -253 1320.5 -284.5 c 128,-1,3 - 1261 -316 1261 -316 1199 -332 c 128,-1,4 - 1137 -348 1137 -348 1079 -348 c 0,5,6 - 949 -348 949 -348 872 -256 c 1,7,-1 - 1001 -195 l 1,8,9 - 1037 -246 1037 -246 1110 -246 c 0,10,11 - 1137 -246 1137 -246 1153.5 -232.5 c 128,-1,12 - 1170 -219 1170 -219 1178 -184.5 c 128,-1,13 - 1186 -150 1186 -150 1188 -111 c 128,-1,14 - 1190 -72 1190 -72 1190 0 c 2,15,-1 - 1190 1047 l 1,16,-1 - 815 248 l 1,17,-1 - 440 1047 l 1,18,-1 - 440 0 l 1,19,-1 - 174 0 l 1,20,-1 - 174 1434 l 1,21,-1 - 440 1434 l 1,22,-1 - 815 631 l 1,23,-1 - 1190 1434 l 1,24,-1 - 1456 1434 l 1,25,-1 - 1456 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni027D -Encoding: 637 637 717 -Width: 770 -VWidth: 0 -Flags: W -HStem: -348 102<424 627> 819 102<448 739> 860 41G<147 403> -VStem: 147 256<-204 774 874 901> -LayerCount: 2 -Fore -SplineSet -147 901 m 1,0,-1 - 403 901 l 1,1,-1 - 403 874 l 1,2,3 - 482 922 482 922 575 922 c 0,4,5 - 682 922 682 922 764 893 c 1,6,-1 - 764 741 l 1,7,8 - 723 819 723 819 590 819 c 0,9,10 - 529 819 529 819 486 798 c 128,-1,11 - 443 777 443 777 403 735 c 1,12,-1 - 403 0 l 2,13,14 - 403 -72 403 -72 405 -111 c 128,-1,15 - 407 -150 407 -150 415 -184.5 c 128,-1,16 - 423 -219 423 -219 439.5 -232.5 c 128,-1,17 - 456 -246 456 -246 483 -246 c 0,18,19 - 556 -246 556 -246 592 -195 c 1,20,-1 - 721 -256 l 1,21,22 - 644 -348 644 -348 514 -348 c 0,23,24 - 456 -348 456 -348 395.5 -332 c 128,-1,25 - 335 -316 335 -316 277.5 -284.5 c 128,-1,26 - 220 -253 220 -253 183.5 -196.5 c 128,-1,27 - 147 -140 147 -140 147 -68 c 2,28,-1 - 147 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0244 -Encoding: 580 580 718 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 696 102<57 156 422 981 1247 1346> 1393 41G<156 422 981 1247> -VStem: 156 266<328 696 799 1434> 981 266<297 696 799 1434> -AnchorPoint: "top" 721 1434 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1247 1085 basechar 0 -AnchorPoint: "cedilla" 692 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -57 696 m 1,0,-1 - 57 799 l 1,1,-1 - 156 799 l 1,2,-1 - 156 1434 l 1,3,-1 - 422 1434 l 1,4,-1 - 422 799 l 1,5,-1 - 981 799 l 1,6,-1 - 981 1434 l 1,7,-1 - 1247 1434 l 1,8,-1 - 1247 799 l 1,9,-1 - 1346 799 l 1,10,-1 - 1346 696 l 1,11,-1 - 1247 696 l 1,12,-1 - 1247 610 l 2,13,14 - 1247 461 1247 461 1217.5 348.5 c 128,-1,15 - 1188 236 1188 236 1139 167 c 128,-1,16 - 1090 98 1090 98 1017 55 c 128,-1,17 - 944 12 944 12 867 -4 c 128,-1,18 - 790 -20 790 -20 696 -20 c 0,19,20 - 625 -20 625 -20 556 -4.5 c 128,-1,21 - 487 11 487 11 412.5 55 c 128,-1,22 - 338 99 338 99 283 166.5 c 128,-1,23 - 228 234 228 234 192 348.5 c 128,-1,24 - 156 463 156 463 156 610 c 2,25,-1 - 156 696 l 1,26,-1 - 57 696 l 1,0,-1 -981 696 m 1,27,-1 - 422 696 l 1,28,-1 - 422 610 l 2,29,30 - 422 480 422 480 439 382.5 c 128,-1,31 - 456 285 456 285 482.5 229 c 128,-1,32 - 509 173 509 173 548.5 138.5 c 128,-1,33 - 588 104 588 104 625.5 93 c 128,-1,34 - 663 82 663 82 709 82 c 0,35,36 - 759 82 759 82 797.5 95.5 c 128,-1,37 - 836 109 836 109 871.5 144.5 c 128,-1,38 - 907 180 907 180 930.5 238 c 128,-1,39 - 954 296 954 296 967.5 390 c 128,-1,40 - 981 484 981 484 981 610 c 2,41,-1 - 981 696 l 1,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0289 -Encoding: 649 649 719 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<452 687> 416 102<68 143 399 688 944 1020> 860 41G<143 399 688 944> -VStem: 143 256<163 416 518 901> 688 256<91 416 518 901> -AnchorPoint: "top" 549 1004 basechar 0 -AnchorPoint: "ogonek" 936 0 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "cedilla" 522 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -68 416 m 1,0,-1 - 68 518 l 1,1,-1 - 143 518 l 1,2,-1 - 143 901 l 1,3,-1 - 399 901 l 1,4,-1 - 399 518 l 1,5,-1 - 688 518 l 1,6,-1 - 688 901 l 1,7,-1 - 944 901 l 1,8,-1 - 944 518 l 1,9,-1 - 1020 518 l 1,10,-1 - 1020 416 l 1,11,-1 - 944 416 l 1,12,-1 - 944 0 l 1,13,-1 - 690 0 l 1,14,15 - 617 -20 617 -20 541 -20 c 0,16,17 - 425 -20 425 -20 345.5 10.5 c 128,-1,18 - 266 41 266 41 222.5 101 c 128,-1,19 - 179 161 179 161 161 236.5 c 128,-1,20 - 143 312 143 312 143 416 c 1,21,-1 - 68 416 l 1,0,-1 -399 416 m 1,22,23 - 400 311 400 311 407 249.5 c 128,-1,24 - 414 188 414 188 434 148.5 c 128,-1,25 - 454 109 454 109 485.5 95.5 c 128,-1,26 - 517 82 517 82 571 82 c 0,27,28 - 636 82 636 82 688 106 c 1,29,-1 - 688 416 l 1,30,-1 - 399 416 l 1,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni028C -Encoding: 652 652 720 -Width: 849 -VWidth: 0 -Flags: W -HStem: 0 43G<18 197 602 838> 860 41G<331 525> -AnchorPoint: "top" 426 1004 basechar 0 -AnchorPoint: "ogonek" 813 0 basechar 0 -AnchorPoint: "bottom" 410 0 basechar 0 -AnchorPoint: "horn" 571 635 basechar 0 -AnchorPoint: "cedilla" 399 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -399 598 m 1,0,-1 - 182 0 l 1,1,-1 - 18 0 l 1,2,-1 - 346 901 l 1,3,-1 - 510 901 l 1,4,-1 - 838 0 l 1,5,-1 - 616 0 l 1,6,-1 - 399 598 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0245 -Encoding: 581 581 721 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43G<39 289 1013 1264> 1393 41G<546 756> -AnchorPoint: "top" 651 1434 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "horn" 819 1085 basechar 0 -LayerCount: 2 -Fore -SplineSet -651 1034 m 1,0,-1 - 274 0 l 1,1,-1 - 39 0 l 1,2,-1 - 561 1434 l 1,3,-1 - 741 1434 l 1,4,-1 - 1264 0 l 1,5,-1 - 1028 0 l 1,6,-1 - 651 1034 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0294 -Encoding: 660 660 722 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 43<225 481> 557 98<481 623> 1270 102<300 653> -VStem: 225 256<0 557> 770 256<800 1141> -LayerCount: 2 -Fore -Refer: 709 577 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni2C64 -Encoding: 11364 11364 723 -Width: 1138 -VWidth: 0 -Flags: W -HStem: -348 102<461 664> 0 43G<829 1090> 655 102<440 543> 1331 102<440 665> -VStem: 174 266<-203 655 758 1331> 772 266<872 1217> 829 260<0 202> -LayerCount: 2 -Fore -SplineSet -440 0 m 2,0,1 - 440 -72 440 -72 442 -111 c 128,-1,2 - 444 -150 444 -150 452 -184.5 c 128,-1,3 - 460 -219 460 -219 476.5 -232.5 c 128,-1,4 - 493 -246 493 -246 520 -246 c 0,5,6 - 593 -246 593 -246 629 -195 c 1,7,-1 - 758 -256 l 1,8,9 - 681 -348 681 -348 551 -348 c 0,10,11 - 493 -348 493 -348 431 -332 c 128,-1,12 - 369 -316 369 -316 309.5 -284.5 c 128,-1,13 - 250 -253 250 -253 212 -196.5 c 128,-1,14 - 174 -140 174 -140 174 -68 c 2,15,-1 - 174 1434 l 1,16,-1 - 594 1434 l 2,17,18 - 688 1434 688 1434 765.5 1409 c 128,-1,19 - 843 1384 843 1384 892.5 1344 c 128,-1,20 - 942 1304 942 1304 976 1252 c 128,-1,21 - 1010 1200 1010 1200 1024 1148 c 128,-1,22 - 1038 1096 1038 1096 1038 1044 c 0,23,24 - 1038 975 1038 975 1013 908 c 128,-1,25 - 988 841 988 841 926.5 778 c 128,-1,26 - 865 715 865 715 776 684 c 1,27,28 - 881 585 881 585 985.5 363.5 c 128,-1,29 - 1090 142 1090 142 1090 0 c 1,30,-1 - 829 0 l 1,31,32 - 829 142 829 142 721.5 355.5 c 128,-1,33 - 614 569 614 569 500 655 c 1,34,-1 - 440 655 l 1,35,-1 - 440 0 l 2,0,1 -440 1331 m 1,36,-1 - 440 758 l 1,37,-1 - 532 758 l 2,38,39 - 594 758 594 758 642.5 785 c 128,-1,40 - 691 812 691 812 718 855.5 c 128,-1,41 - 745 899 745 899 758.5 947 c 128,-1,42 - 772 995 772 995 772 1044 c 0,43,44 - 772 1083 772 1083 764 1121.5 c 128,-1,45 - 756 1160 756 1160 737.5 1198 c 128,-1,46 - 719 1236 719 1236 692 1265.5 c 128,-1,47 - 665 1295 665 1295 623.5 1313 c 128,-1,48 - 582 1331 582 1331 532 1331 c 2,49,-1 - 440 1331 l 1,36,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01CD -Encoding: 461 461 724 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1516 387 -VStem: 412 479 -AnchorPoint: "horn" 819 1085 basechar 0 -AnchorPoint: "cedilla" 631 0 basechar 0 -AnchorPoint: "bottom" 653 0 basechar 0 -AnchorPoint: "ogonek" 1100 0 basechar 0 -AnchorPoint: "top" 651 1896 basechar 0 -LayerCount: 2 -Fore -Refer: 374 711 N 1 0 0 1 350 377 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01CE -Encoding: 462 462 725 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1044 387 -VStem: 94 256<132 467> 199 479 602 256<87 518 616 771> -LayerCount: 2 -Fore -Refer: 374 711 N 1 0 0 1 137 -94 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01CF -Encoding: 463 463 726 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1516 387 -VStem: 66 479 172 266<0 1434> -LayerCount: 2 -Fore -Refer: 374 711 N 1 0 0 1 4 377 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D0 -Encoding: 464 464 727 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1044 387 -VStem: 10 479 123 256<0 901> -LayerCount: 2 -Fore -Refer: 374 711 S 1 0 0 1 -51 -94 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D1 -Encoding: 465 465 728 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1516 387 -VStem: 102 266<424 1012> 487 479 1071 266<414 1009> -LayerCount: 2 -Fore -Refer: 374 711 N 1 0 0 1 426 377 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D2 -Encoding: 466 466 729 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1044 387 -VStem: 90 256<214 657> 272 479 715 256<223 678> -LayerCount: 2 -Fore -Refer: 374 711 N 1 0 0 1 211 -94 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D3 -Encoding: 467 467 730 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1434 387 -VStem: 156 266<328 1434> 461 479 981 266<297 1434> -LayerCount: 2 -Fore -Refer: 374 711 N 1 0 0 1 399 295 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D4 -Encoding: 468 468 731 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1044 387 -VStem: 143 256<163 901> 304 479 688 256<91 901> -LayerCount: 2 -Fore -Refer: 374 711 N 1 0 0 1 243 -94 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D5 -Encoding: 469 469 732 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1475 170<436 606 805 975> 1710 115<467 938> -VStem: 156 266<328 1434> 436 170<1475 1645> 467 471<1710 1825> 805 170<1475 1645> 981 266<297 1434> -LayerCount: 2 -Fore -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1294 205 2 -Refer: 96 772 N 1 0 0 1 1300 440 2 -Validated: 1 -EndChar - -StartChar: uni01D6 -Encoding: 470 470 733 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1085 170<279 449 647 817> 1378 115<312 783> -VStem: 143 256<163 901> 279 170<1085 1255> 312 471<1378 1493> 647 170<1085 1255> 688 256<91 901> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1146 109 2 -Refer: 137 252 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D7 -Encoding: 471 471 734 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1475 170<430 600 799 969> 1700 301 -VStem: 156 266<328 1434> 430 170<1475 1645> 657 340 799 170<1475 1645> 981 266<297 1434> -LayerCount: 2 -Fore -Refer: 591 58624 N 1 0 0 1 510 219 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1288 205 2 -Validated: 1 -EndChar - -StartChar: uni01D8 -Encoding: 472 472 735 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1085 170<279 449 647 817> 1257 403 -VStem: 143 256<163 901> 279 170<1085 1255> 498 371 647 170<1085 1255> 688 256<91 901> -LayerCount: 2 -Fore -Refer: 137 252 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1186 8 2 -Validated: 1 -EndChar - -StartChar: uni01D9 -Encoding: 473 473 736 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1475 170<430 600 799 969> 1653 387 -VStem: 156 266<328 1434> 430 170<1475 1645> 455 479 799 170<1475 1645> 981 266<297 1434> -LayerCount: 2 -Fore -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1288 205 2 -Refer: 374 711 N 1 0 0 1 393 514 2 -Validated: 1 -EndChar - -StartChar: uni01DA -Encoding: 474 474 737 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1085 170<279 449 647 817> 1257 387 -VStem: 143 256<163 901> 279 170<1085 1255> 307 479 647 170<1085 1255> 688 256<91 901> -LayerCount: 2 -Fore -Refer: 137 252 N 1 0 0 1 0 0 3 -Refer: 374 711 N 1 0 0 1 246 119 2 -Validated: 1 -EndChar - -StartChar: uni01DB -Encoding: 475 475 738 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1393 41<156 422 981 1247> 1475 170<430 600 799 969> 1700 301 -VStem: 156 266<328 1434> 428 340 430 170<1475 1645> 799 170<1475 1645> 981 266<297 1434> -LayerCount: 2 -Fore -Refer: 592 58625 N 1 0 0 1 281 219 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1288 205 2 -Validated: 1 -EndChar - -StartChar: uni01DC -Encoding: 476 476 739 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41<143 399 688 944> 1085 170<279 449 647 817> 1253 403 -VStem: 143 256<163 901> 219 371 279 170<1085 1255> 647 170<1085 1255> 688 256<91 901> -LayerCount: 2 -Fore -Refer: 137 252 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 944 4 2 -Validated: 1 -EndChar - -StartChar: uni01DE -Encoding: 478 478 740 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1516 170<381 551 750 920> 1751 115<416 887> -VStem: 381 170<1516 1686> 416 471<1751 1866> 750 170<1516 1686> -LayerCount: 2 -Fore -Refer: 142 196 N 1 0 0 1 0 0 3 -Refer: 96 772 S 1 0 0 1 1249 481 2 -Validated: 1 -EndChar - -StartChar: uni01DF -Encoding: 479 479 741 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1085 170<219 389 588 758> 1382 115<252 723> -VStem: 94 256<132 467> 219 170<1085 1255> 252 471<1382 1497> 588 170<1085 1255> 602 256<87 518 616 771> -LayerCount: 2 -Fore -Refer: 132 228 N 1 0 0 1 0 0 3 -Refer: 96 772 S 1 0 0 1 1085 113 2 -Validated: 1 -EndChar - -StartChar: uni048A -Encoding: 1162 1162 742 -Width: 1611 -VWidth: 0 -Flags: W -HStem: 0 102<1339 1364> 1393 41G<174 440 1073 1339> 1434 137<633 878> -VStem: 174 266<0 92 401 1434> 524 78<1610 1632> 909 78<1610 1632> 1073 266<102 1030 1341 1434> -LayerCount: 2 -Fore -SplineSet -838 1556 m 2,0,1 - 948 1556 948 1556 948 1583 c 0,2,3 - 948 1592 948 1592 944 1605 c 128,-1,4 - 940 1618 940 1618 940 1622 c 0,5,6 - 940 1645 940 1645 971 1645 c 0,7,8 - 994 1645 994 1645 1009 1624.5 c 128,-1,9 - 1024 1604 1024 1604 1024 1571 c 0,10,11 - 1024 1533 1024 1533 981.5 1500.5 c 128,-1,12 - 939 1468 939 1468 878 1451 c 128,-1,13 - 817 1434 817 1434 756 1434 c 128,-1,14 - 695 1434 695 1434 633.5 1451 c 128,-1,15 - 572 1468 572 1468 529.5 1500.5 c 128,-1,16 - 487 1533 487 1533 487 1571 c 0,17,18 - 487 1604 487 1604 502 1624.5 c 128,-1,19 - 517 1645 517 1645 541 1645 c 0,20,21 - 571 1645 571 1645 571 1622 c 0,22,23 - 571 1618 571 1618 567 1605 c 128,-1,24 - 563 1592 563 1592 563 1583 c 0,25,26 - 563 1556 563 1556 674 1556 c 2,27,-1 - 838 1556 l 2,0,1 -440 0 m 1,28,-1 - 174 0 l 1,29,-1 - 174 1434 l 1,30,-1 - 440 1434 l 1,31,-1 - 440 401 l 1,32,-1 - 1073 1341 l 1,33,-1 - 1073 1434 l 1,34,-1 - 1339 1434 l 1,35,-1 - 1339 102 l 1,36,-1 - 1556 102 l 1,37,-1 - 1405 -254 l 1,38,-1 - 1311 -254 l 1,39,-1 - 1364 0 l 1,40,-1 - 1073 0 l 1,41,-1 - 1073 1030 l 1,42,-1 - 440 92 l 1,43,-1 - 440 0 l 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048B -Encoding: 1163 1163 743 -Width: 1304 -VWidth: 0 -Flags: W -HStem: 0 102<1026 1057> 860 41G<123 379 770 1026> 1085 137<418 663> -VStem: 123 256<0 61 291 901> 309 78<1262 1283> 694 78<1262 1283> 770 256<102 604 836 901> -LayerCount: 2 -Fore -SplineSet -659 1208 m 2,0,1 - 770 1208 770 1208 770 1235 c 0,2,3 - 770 1244 770 1244 766 1257 c 128,-1,4 - 762 1270 762 1270 762 1274 c 0,5,6 - 762 1296 762 1296 793 1296 c 0,7,8 - 817 1296 817 1296 831.5 1276 c 128,-1,9 - 846 1256 846 1256 846 1223 c 0,10,11 - 846 1166 846 1166 760 1125.5 c 128,-1,12 - 674 1085 674 1085 578 1085 c 0,13,14 - 517 1085 517 1085 455.5 1102.5 c 128,-1,15 - 394 1120 394 1120 351.5 1152.5 c 128,-1,16 - 309 1185 309 1185 309 1223 c 0,17,18 - 309 1256 309 1256 323.5 1276 c 128,-1,19 - 338 1296 338 1296 362 1296 c 0,20,21 - 393 1296 393 1296 393 1274 c 0,22,23 - 393 1270 393 1270 389 1257 c 128,-1,24 - 385 1244 385 1244 385 1235 c 0,25,26 - 385 1208 385 1208 496 1208 c 2,27,-1 - 659 1208 l 2,0,1 -123 901 m 1,28,-1 - 379 901 l 1,29,-1 - 379 291 l 1,30,-1 - 770 836 l 1,31,-1 - 770 901 l 1,32,-1 - 1026 901 l 1,33,-1 - 1026 102 l 1,34,-1 - 1249 102 l 1,35,-1 - 1098 -254 l 1,36,-1 - 1004 -254 l 1,37,-1 - 1057 0 l 1,38,-1 - 770 0 l 1,39,-1 - 770 604 l 1,40,-1 - 379 61 l 1,41,-1 - 379 0 l 1,42,-1 - 123 0 l 1,43,-1 - 123 901 l 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048C -Encoding: 1164 1164 744 -Width: 1153 -VWidth: 0 -Flags: W -HStem: 0 102<504 706> 799 102<504 707> 1085 102<82 238 504 670> 1393 41G<238 504> -VStem: 238 266<102 799 901 1085 1188 1434> 836 266<260 638> -LayerCount: 2 -Fore -SplineSet -1102 457 m 0,0,1 - 1102 393 1102 393 1086 330.5 c 128,-1,2 - 1070 268 1070 268 1034.5 207.5 c 128,-1,3 - 999 147 999 147 947.5 101.5 c 128,-1,4 - 896 56 896 56 818.5 28 c 128,-1,5 - 741 0 741 0 647 0 c 2,6,-1 - 238 0 l 1,7,-1 - 238 1085 l 1,8,-1 - 82 1085 l 1,9,-1 - 82 1188 l 1,10,-1 - 238 1188 l 1,11,-1 - 238 1434 l 1,12,-1 - 504 1434 l 1,13,-1 - 504 1188 l 1,14,-1 - 670 1188 l 1,15,-1 - 670 1085 l 1,16,-1 - 504 1085 l 1,17,-1 - 504 901 l 1,18,-1 - 643 901 l 2,19,20 - 744 901 744 901 832.5 861 c 128,-1,21 - 921 821 921 821 978.5 757 c 128,-1,22 - 1036 693 1036 693 1069 614.5 c 128,-1,23 - 1102 536 1102 536 1102 457 c 0,0,1 -504 799 m 1,24,-1 - 504 102 l 1,25,-1 - 586 102 l 2,26,27 - 648 102 648 102 698 137 c 128,-1,28 - 748 172 748 172 777 226.5 c 128,-1,29 - 806 281 806 281 821 340.5 c 128,-1,30 - 836 400 836 400 836 457 c 0,31,32 - 836 534 836 534 811 609.5 c 128,-1,33 - 786 685 786 685 727 742 c 128,-1,34 - 668 799 668 799 586 799 c 2,35,-1 - 504 799 l 1,24,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048D -Encoding: 1165 1165 745 -Width: 1013 -VWidth: 0 -Flags: W -HStem: 0 102<467 637> 440 102<467 636> 651 102<51 211 467 625> 860 41G<211 467> -VStem: 211 256<102 440 543 651 754 901> 692 256<151 385> -LayerCount: 2 -Fore -SplineSet -948 264 m 0,0,1 - 948 212 948 212 931 169 c 128,-1,2 - 914 126 914 126 873 86 c 128,-1,3 - 832 46 832 46 750.5 23 c 128,-1,4 - 669 0 669 0 553 0 c 2,5,-1 - 211 0 l 1,6,-1 - 211 651 l 1,7,-1 - 51 651 l 1,8,-1 - 51 754 l 1,9,-1 - 211 754 l 1,10,-1 - 211 901 l 1,11,-1 - 467 901 l 1,12,-1 - 467 754 l 1,13,-1 - 625 754 l 1,14,-1 - 625 651 l 1,15,-1 - 467 651 l 1,16,-1 - 467 543 l 1,17,-1 - 549 543 l 2,18,19 - 762 543 762 543 855 478 c 128,-1,20 - 948 413 948 413 948 264 c 0,0,1 -467 440 m 1,21,-1 - 467 102 l 1,22,-1 - 502 102 l 2,23,24 - 596 102 596 102 644 145 c 128,-1,25 - 692 188 692 188 692 264 c 0,26,27 - 692 344 692 344 642 392 c 128,-1,28 - 592 440 592 440 481 440 c 2,29,-1 - 467 440 l 1,21,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048E -Encoding: 1166 1166 746 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440> 655 102<440 592> 1331 102<440 665> -VStem: 174 266<0 655 758 1331> 772 266<870 1217> -LayerCount: 2 -Fore -SplineSet -440 1331 m 1,0,-1 - 440 758 l 1,1,-1 - 532 758 l 2,2,3 - 565 758 565 758 592 764 c 1,4,-1 - 500 850 l 1,5,-1 - 649 973 l 1,6,-1 - 723 862 l 1,7,8 - 772 939 772 939 772 1044 c 0,9,10 - 772 1083 772 1083 764 1121.5 c 128,-1,11 - 756 1160 756 1160 737.5 1198 c 128,-1,12 - 719 1236 719 1236 692 1265.5 c 128,-1,13 - 665 1295 665 1295 623.5 1313 c 128,-1,14 - 582 1331 582 1331 532 1331 c 2,15,-1 - 440 1331 l 1,0,-1 -440 655 m 1,16,-1 - 440 0 l 1,17,-1 - 174 0 l 1,18,-1 - 174 1434 l 1,19,-1 - 594 1434 l 2,20,21 - 688 1434 688 1434 765.5 1409 c 128,-1,22 - 843 1384 843 1384 892.5 1344 c 128,-1,23 - 942 1304 942 1304 976 1252 c 128,-1,24 - 1010 1200 1010 1200 1024 1148 c 128,-1,25 - 1038 1096 1038 1096 1038 1044 c 0,26,27 - 1038 982 1038 982 1017.5 921 c 128,-1,28 - 997 860 997 860 947 800.5 c 128,-1,29 - 897 741 897 741 825 705 c 1,30,-1 - 897 596 l 1,31,-1 - 834 543 l 1,32,-1 - 700 664 l 1,33,34 - 650 655 650 655 594 655 c 2,35,-1 - 440 655 l 1,16,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048F -Encoding: 1167 1167 747 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -16 102<478 640> 823 102<468 674> -VStem: 147 256<-410 8 181 757> 745 256<253 665> -LayerCount: 2 -Fore -SplineSet -403 504 m 0,0,1 - 403 458 403 458 404 421 c 128,-1,2 - 405 384 405 384 409.5 339 c 128,-1,3 - 414 294 414 294 421.5 260 c 128,-1,4 - 429 226 429 226 442 192 c 128,-1,5 - 455 158 455 158 473 135.5 c 128,-1,6 - 491 113 491 113 518 99.5 c 128,-1,7 - 545 86 545 86 578 86 c 0,8,9 - 614 86 614 86 641 104 c 1,10,-1 - 508 227 l 1,11,-1 - 657 350 l 1,12,-1 - 723 250 l 1,13,14 - 745 334 745 334 745 455 c 0,15,16 - 745 527 745 527 738.5 587 c 128,-1,17 - 732 647 732 647 716.5 703 c 128,-1,18 - 701 759 701 759 671 791 c 128,-1,19 - 641 823 641 823 598 823 c 0,20,21 - 548 823 548 823 512.5 808 c 128,-1,22 - 477 793 477 793 456 768 c 128,-1,23 - 435 743 435 743 423 700.5 c 128,-1,24 - 411 658 411 658 407 613.5 c 128,-1,25 - 403 569 403 569 403 504 c 0,0,1 -403 8 m 1,26,-1 - 403 -410 l 1,27,-1 - 147 -410 l 1,28,-1 - 147 905 l 1,29,-1 - 401 905 l 1,30,31 - 474 926 474 926 567 926 c 0,32,33 - 692 926 692 926 792 861.5 c 128,-1,34 - 892 797 892 797 946.5 690 c 128,-1,35 - 1001 583 1001 583 1001 455 c 0,36,37 - 1001 346 1001 346 955.5 248.5 c 128,-1,38 - 910 151 910 151 831 86 c 1,39,-1 - 905 -27 l 1,40,-1 - 842 -80 l 1,41,-1 - 729 23 l 1,42,43 - 643 -16 643 -16 547 -16 c 0,44,45 - 467 -16 467 -16 403 8 c 1,26,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0492 -Encoding: 1170 1170 748 -Width: 1136 -VWidth: 0 -Flags: W -HStem: 0 43G<272 539> 799 102<82 272 539 748> 1331 102<539 1100> -VStem: 272 266<0 799 901 1331> -LayerCount: 2 -Fore -SplineSet -82 799 m 1,0,-1 - 82 901 l 1,1,-1 - 272 901 l 1,2,-1 - 272 1434 l 1,3,-1 - 1100 1434 l 1,4,-1 - 1100 1331 l 1,5,-1 - 539 1331 l 1,6,-1 - 539 901 l 1,7,-1 - 748 901 l 1,8,-1 - 748 799 l 1,9,-1 - 539 799 l 1,10,-1 - 539 0 l 1,11,-1 - 272 0 l 1,12,-1 - 272 799 l 1,13,-1 - 82 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0493 -Encoding: 1171 1171 749 -Width: 892 -VWidth: 0 -Flags: W -HStem: 0 43G<248 504> 479 102<51 248 504 717> 799 102<504 840> -VStem: 248 256<0 479 582 799> -LayerCount: 2 -Fore -SplineSet -51 479 m 1,0,-1 - 51 582 l 1,1,-1 - 248 582 l 1,2,-1 - 248 901 l 1,3,-1 - 840 901 l 1,4,-1 - 840 799 l 1,5,-1 - 504 799 l 1,6,-1 - 504 582 l 1,7,-1 - 717 582 l 1,8,-1 - 717 479 l 1,9,-1 - 504 479 l 1,10,-1 - 504 0 l 1,11,-1 - 248 0 l 1,12,-1 - 248 479 l 1,13,-1 - 51 479 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0494 -Encoding: 1172 1172 750 -Width: 1341 -VWidth: 0 -Flags: W -HStem: -217 102<679 880> -59 41G<593 655> 0 43G<174 440> 819 102<517 845> 1331 102<440 1001> -VStem: 174 266<0 756 870 1331> 936 266<39 681> -LayerCount: 2 -Fore -SplineSet -440 723 m 5,0,-1 - 440 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 1001 1434 l 1,4,-1 - 1001 1331 l 1,5,-1 - 440 1331 l 1,6,-1 - 440 870 l 1,7,8 - 539 922 539 922 666 922 c 0,9,10 - 776 922 776 922 871.5 895 c 128,-1,11 - 967 868 967 868 1041.5 816.5 c 128,-1,12 - 1116 765 1116 765 1159 681.5 c 128,-1,13 - 1202 598 1202 598 1202 492 c 2,14,-1 - 1202 291 l 2,15,16 - 1202 173 1202 173 1174.5 81 c 128,-1,17 - 1147 -11 1147 -11 1104 -65.5 c 128,-1,18 - 1061 -120 1061 -120 1002.5 -155.5 c 128,-1,19 - 944 -191 944 -191 888 -204 c 128,-1,20 - 832 -217 832 -217 772 -217 c 0,21,22 - 714 -217 714 -217 644 -191.5 c 128,-1,23 - 574 -166 574 -166 530 -125 c 1,24,-1 - 633 -18 l 1,25,26 - 699 -115 699 -115 803 -115 c 0,27,28 - 936 -115 936 -115 936 246 c 2,29,-1 - 936 467 l 2,30,31 - 936 572 936 572 919 642.5 c 128,-1,32 - 902 713 902 713 869 751 c 128,-1,33 - 836 789 836 789 794.5 804 c 128,-1,34 - 753 819 753 819 696 819 c 0,35,36 - 627 819 627 819 559 793.5 c 128,-1,37 - 491 768 491 768 440 723 c 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0495 -Encoding: 1173 1173 751 -Width: 1136 -VWidth: 0 -Flags: W -HStem: -236 102<545 720> 0 43G<123 379> 487 102<441 687> 799 102<379 715> -VStem: 123 256<0 429 541 799> 750 256<-32 382> -LayerCount: 2 -Fore -SplineSet -750 135 m 4,0,1 - 750 241 750 241 739.5 311 c 128,-1,2 - 729 381 729 381 707.5 419 c 128,-1,3 - 686 457 686 457 657.5 472 c 128,-1,4 - 629 487 629 487 588 487 c 0,5,6 - 524 487 524 487 480.5 465 c 128,-1,7 - 437 443 437 443 379 393 c 1,8,-1 - 379 0 l 1,9,-1 - 123 0 l 1,10,-1 - 123 901 l 1,11,-1 - 715 901 l 1,12,-1 - 715 799 l 1,13,-1 - 379 799 l 1,14,-1 - 379 541 l 1,15,16 - 431 568 431 568 467.5 579 c 128,-1,17 - 504 590 504 590 557 590 c 0,18,19 - 775 590 775 590 890.5 482.5 c 128,-1,20 - 1006 375 1006 375 1006 160 c 0,21,22 - 1006 -16 1006 -16 895.5 -126 c 128,-1,23 - 785 -236 785 -236 627 -236 c 0,24,25 - 558 -236 558 -236 497.5 -211.5 c 128,-1,26 - 437 -187 437 -187 406 -143 c 1,27,-1 - 508 -37 l 1,28,29 - 539 -92 539 -92 571 -112.5 c 128,-1,30 - 603 -133 603 -133 657 -133 c 0,31,32 - 686 -133 686 -133 705 -112.5 c 128,-1,33 - 724 -92 724 -92 733.5 -52 c 128,-1,34 - 743 -12 743 -12 746.5 31.5 c 128,-1,35 - 750 75 750 75 750 135 c 4,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0496 -Encoding: 1174 1174 752 -Width: 1796 -VWidth: 0 -Flags: W -HStem: 0 102<1475 1521> 1331 102<106 178 1438 1509> -VStem: 676 264<0 635 825 1434> 1565 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -940 825 m 1,0,1 - 965 860 965 860 995 926.5 c 128,-1,2 - 1025 993 1025 993 1050.5 1056.5 c 128,-1,3 - 1076 1120 1076 1120 1118.5 1190.5 c 128,-1,4 - 1161 1261 1161 1261 1209.5 1313 c 128,-1,5 - 1258 1365 1258 1365 1336 1399.5 c 128,-1,6 - 1414 1434 1414 1434 1509 1434 c 1,7,-1 - 1509 1331 l 1,8,9 - 1462 1331 1462 1331 1419.5 1283.5 c 128,-1,10 - 1377 1236 1377 1236 1338 1160 c 128,-1,11 - 1299 1084 1299 1084 1258.5 1003 c 128,-1,12 - 1218 922 1218 922 1158 841.5 c 128,-1,13 - 1098 761 1098 761 1030 717 c 1,14,15 - 1100 671 1100 671 1174 591.5 c 128,-1,16 - 1248 512 1248 512 1309 423 c 128,-1,17 - 1370 334 1370 334 1417 252 c 128,-1,18 - 1464 170 1464 170 1495 102 c 1,19,-1 - 1663 102 l 1,20,-1 - 1663 -315 l 1,21,-1 - 1565 -315 l 1,22,23 - 1565 -250 1565 -250 1558 -193.5 c 128,-1,24 - 1551 -137 1551 -137 1541.5 -103 c 128,-1,25 - 1532 -69 1532 -69 1522.5 -44.5 c 128,-1,26 - 1513 -20 1513 -20 1506 -10 c 2,27,-1 - 1499 0 l 1,28,-1 - 1264 0 l 1,29,30 - 1264 23 1264 23 1216.5 146.5 c 128,-1,31 - 1169 270 1169 270 1089 422 c 128,-1,32 - 1009 574 1009 574 940 635 c 1,33,-1 - 940 0 l 1,34,-1 - 676 0 l 1,35,-1 - 676 635 l 1,36,37 - 607 574 607 574 527 422 c 128,-1,38 - 447 270 447 270 399.5 146.5 c 128,-1,39 - 352 23 352 23 352 0 c 1,40,-1 - 86 0 l 1,41,42 - 86 27 86 27 129 118 c 128,-1,43 - 172 209 172 209 238.5 320 c 128,-1,44 - 305 431 305 431 401 544.5 c 128,-1,45 - 497 658 497 658 586 717 c 1,46,47 - 518 761 518 761 458 841.5 c 128,-1,48 - 398 922 398 922 357 1003 c 128,-1,49 - 316 1084 316 1084 277 1160 c 128,-1,50 - 238 1236 238 1236 195.5 1283.5 c 128,-1,51 - 153 1331 153 1331 106 1331 c 1,52,-1 - 106 1434 l 1,53,54 - 201 1434 201 1434 279 1399.5 c 128,-1,55 - 357 1365 357 1365 406 1313 c 128,-1,56 - 455 1261 455 1261 497.5 1190.5 c 128,-1,57 - 540 1120 540 1120 565.5 1056.5 c 128,-1,58 - 591 993 591 993 621 926 c 128,-1,59 - 651 859 651 859 676 825 c 1,60,-1 - 676 1434 l 1,61,-1 - 940 1434 l 1,62,-1 - 940 825 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0497 -Encoding: 1175 1175 753 -Width: 1421 -VWidth: 0 -Flags: W -HStem: 0 43G<70 295 516 772> 799 102<70 154 1134 1219> -VStem: 70 225<0 112> 516 256<0 371 522 901> 1233 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -772 522 m 1,0,1 - 793 545 793 545 817 586.5 c 128,-1,2 - 841 628 841 628 859 667.5 c 128,-1,3 - 877 707 877 707 909 751 c 128,-1,4 - 941 795 941 795 978.5 827 c 128,-1,5 - 1016 859 1016 859 1078 880 c 128,-1,6 - 1140 901 1140 901 1219 901 c 1,7,-1 - 1219 799 l 1,8,9 - 1177 799 1177 799 1145.5 775.5 c 128,-1,10 - 1114 752 1114 752 1090.5 712 c 128,-1,11 - 1067 672 1067 672 1046 628.5 c 128,-1,12 - 1025 585 1025 585 992 535.5 c 128,-1,13 - 959 486 959 486 920 453 c 1,14,15 - 998 380 998 380 1068 283 c 128,-1,16 - 1138 186 1138 186 1182 102 c 1,17,-1 - 1331 102 l 1,18,-1 - 1331 -315 l 1,19,-1 - 1233 -315 l 1,20,21 - 1233 -250 1233 -250 1226 -193.5 c 128,-1,22 - 1219 -137 1219 -137 1209.5 -103 c 128,-1,23 - 1200 -69 1200 -69 1190.5 -44.5 c 128,-1,24 - 1181 -20 1181 -20 1174 -10 c 2,25,-1 - 1167 0 l 1,26,-1 - 993 0 l 1,27,28 - 993 55 993 55 922.5 174 c 128,-1,29 - 852 293 852 293 772 371 c 1,30,-1 - 772 0 l 1,31,-1 - 516 0 l 1,32,-1 - 516 371 l 1,33,34 - 436 293 436 293 365.5 174 c 128,-1,35 - 295 55 295 55 295 0 c 1,36,-1 - 70 0 l 1,37,38 - 70 49 70 49 162 196.5 c 128,-1,39 - 254 344 254 344 369 453 c 1,40,41 - 330 486 330 486 297 535.5 c 128,-1,42 - 264 585 264 585 243 628.5 c 128,-1,43 - 222 672 222 672 198.5 712 c 128,-1,44 - 175 752 175 752 143.5 775.5 c 128,-1,45 - 112 799 112 799 70 799 c 1,46,-1 - 70 901 l 1,47,48 - 163 901 163 901 232 872.5 c 128,-1,49 - 301 844 301 844 342 797 c 128,-1,50 - 383 750 383 750 410 702.5 c 128,-1,51 - 437 655 437 655 464.5 601.5 c 128,-1,52 - 492 548 492 548 516 522 c 1,53,-1 - 516 901 l 1,54,-1 - 772 901 l 1,55,-1 - 772 522 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0498 -Encoding: 1176 1176 754 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -360 49<385 528> -20 102<361 461> 799 102<373 549> 1352 102<359 598> -VStem: 575 158<-286 -144> 659 266<1001 1283> 721 266<267 622> -LayerCount: 2 -Fore -SplineSet -270 295 m 1,0,1 - 294 185 294 185 347 133.5 c 128,-1,2 - 400 82 400 82 500 82 c 0,3,4 - 549 82 549 82 592.5 120.5 c 128,-1,5 - 636 159 636 159 663 215.5 c 128,-1,6 - 690 272 690 272 705.5 332 c 128,-1,7 - 721 392 721 392 721 440 c 0,8,9 - 721 472 721 472 713.5 509.5 c 128,-1,10 - 706 547 706 547 691.5 588 c 128,-1,11 - 677 629 677 629 651.5 666 c 128,-1,12 - 626 703 626 703 593.5 733 c 128,-1,13 - 561 763 561 763 514.5 781 c 128,-1,14 - 468 799 468 799 414 799 c 2,15,-1 - 373 799 l 1,16,-1 - 373 901 l 1,17,18 - 439 901 439 901 490.5 917 c 128,-1,19 - 542 933 542 933 573 957.5 c 128,-1,20 - 604 982 604 982 624 1014.5 c 128,-1,21 - 644 1047 644 1047 651.5 1077 c 128,-1,22 - 659 1107 659 1107 659 1137 c 0,23,24 - 659 1227 659 1227 616 1289.5 c 128,-1,25 - 573 1352 573 1352 516 1352 c 0,26,27 - 461 1352 461 1352 422 1341 c 128,-1,28 - 383 1330 383 1330 358 1307.5 c 128,-1,29 - 333 1285 333 1285 319 1259 c 128,-1,30 - 305 1233 305 1233 293 1194 c 1,31,-1 - 129 1239 l 1,32,33 - 185 1343 185 1343 286 1398.5 c 128,-1,34 - 387 1454 387 1454 498 1454 c 0,35,36 - 692 1454 692 1454 809 1360.5 c 128,-1,37 - 926 1267 926 1267 926 1137 c 0,38,39 - 926 1047 926 1047 878 970.5 c 128,-1,40 - 830 894 830 894 725 850 c 1,41,42 - 796 817 796 817 849.5 765 c 128,-1,43 - 903 713 903 713 931.5 655.5 c 128,-1,44 - 960 598 960 598 973.5 544 c 128,-1,45 - 987 490 987 490 987 440 c 0,46,47 - 987 395 987 395 973.5 344 c 128,-1,48 - 960 293 960 293 929.5 237.5 c 128,-1,49 - 899 182 899 182 856 134 c 128,-1,50 - 813 86 813 86 747.5 47.5 c 128,-1,51 - 682 9 682 9 604 -8 c 1,52,-1 - 596 -72 l 1,53,54 - 657 -85 657 -85 695 -120 c 128,-1,55 - 733 -155 733 -155 733 -209 c 0,56,57 - 733 -274 733 -274 641.5 -317 c 128,-1,58 - 550 -360 550 -360 385 -360 c 1,59,-1 - 385 -311 l 1,60,61 - 575 -311 575 -311 575 -221 c 0,62,63 - 575 -175 575 -175 543.5 -151 c 128,-1,64 - 512 -127 512 -127 442 -123 c 1,65,-1 - 461 -20 l 1,66,67 - 313 -16 313 -16 220 55 c 128,-1,68 - 127 126 127 126 82 244 c 1,69,-1 - 270 295 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0499 -Encoding: 1177 1177 755 -Width: 897 -VWidth: 0 -Flags: W -HStem: -360 49<270 413> -16 98<297 346 487 519> 451 102<295 471> 819 102<300 489> -VStem: 461 158<-286 -144> 506 256<586 812> 555 256<110 400> -LayerCount: 2 -Fore -SplineSet -217 221 m 1,0,1 - 244 162 244 162 300.5 122 c 128,-1,2 - 357 82 357 82 432 82 c 0,3,4 - 489 82 489 82 522 120.5 c 128,-1,5 - 555 159 555 159 555 256 c 0,6,7 - 555 356 555 356 509.5 403.5 c 128,-1,8 - 464 451 464 451 367 451 c 2,9,-1 - 295 451 l 1,10,-1 - 295 553 l 1,11,-1 - 352 553 l 2,12,13 - 432 553 432 553 469 592.5 c 128,-1,14 - 506 632 506 632 506 694 c 0,15,16 - 506 819 506 819 432 819 c 0,17,18 - 348 819 348 819 312 787.5 c 128,-1,19 - 276 756 276 756 266 696 c 1,20,-1 - 100 735 l 1,21,22 - 128 814 128 814 204.5 868 c 128,-1,23 - 281 922 281 922 408 922 c 0,24,25 - 589 922 589 922 675.5 860.5 c 128,-1,26 - 762 799 762 799 762 694 c 0,27,28 - 762 647 762 647 728 597.5 c 128,-1,29 - 694 548 694 548 625 512 c 1,30,31 - 720 474 720 474 765.5 406.5 c 128,-1,32 - 811 339 811 339 811 256 c 0,33,34 - 811 142 811 142 731.5 70 c 128,-1,35 - 652 -2 652 -2 487 -16 c 1,36,-1 - 481 -72 l 1,37,38 - 542 -85 542 -85 580 -120 c 128,-1,39 - 618 -155 618 -155 618 -209 c 0,40,41 - 618 -274 618 -274 526.5 -317 c 128,-1,42 - 435 -360 435 -360 270 -360 c 1,43,-1 - 270 -311 l 1,44,45 - 461 -311 461 -311 461 -221 c 0,46,47 - 461 -175 461 -175 429.5 -151 c 128,-1,48 - 398 -127 398 -127 328 -123 c 1,49,-1 - 346 -16 l 1,50,51 - 246 0 246 0 171 56 c 128,-1,52 - 96 112 96 112 61 178 c 1,53,-1 - 217 221 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049A -Encoding: 1178 1178 756 -Width: 1488 -VWidth: 0 -Flags: W -HStem: 0 102<1103 1214> 1393 41G<174 440 899 1208> -VStem: 174 266<0 571 877 1434> 1257 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -1192 102 m 10,0,-1 - 1356 102 l 1,1,-1 - 1356 -315 l 1,2,-1 - 1257 -315 l 1,3,4 - 1257 -211 1257 -211 1240.5 -132.5 c 128,-1,5 - 1224 -54 1224 -54 1208 -27 c 2,6,-1 - 1192 0 l 1,7,8 - 1089 0 1089 0 1007 35.5 c 128,-1,9 - 925 71 925 71 874 128.5 c 128,-1,10 - 823 186 823 186 784 256 c 128,-1,11 - 745 326 745 326 718.5 399.5 c 128,-1,12 - 692 473 692 473 669.5 535 c 128,-1,13 - 647 597 647 597 619 643.5 c 128,-1,14 - 591 690 591 690 557 702 c 1,15,-1 - 440 571 l 1,16,-1 - 440 0 l 1,17,-1 - 174 0 l 1,18,-1 - 174 1434 l 1,19,-1 - 440 1434 l 1,20,-1 - 440 877 l 1,21,-1 - 936 1434 l 1,22,-1 - 1208 1434 l 1,23,-1 - 653 813 l 1,24,25 - 733 792 733 792 793.5 741.5 c 128,-1,26 - 854 691 854 691 889.5 627 c 128,-1,27 - 925 563 925 563 952.5 490.5 c 128,-1,28 - 980 418 980 418 1001.5 349.5 c 128,-1,29 - 1023 281 1023 281 1046.5 225.5 c 128,-1,30 - 1070 170 1070 170 1106.5 136 c 128,-1,31 - 1143 102 1143 102 1192 102 c 10,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049B -Encoding: 1179 1179 757 -Width: 1093 -VWidth: 0 -Flags: W -HStem: 0 102<834 862> 860 41G<147 403 611 877> -VStem: 147 256<0 371 627 901> 905 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -403 627 m 1,0,-1 - 647 901 l 1,1,-1 - 877 901 l 1,2,-1 - 520 502 l 1,3,-1 - 834 102 l 1,4,-1 - 1004 102 l 1,5,-1 - 1004 -315 l 1,6,-1 - 905 -315 l 1,7,8 - 905 -211 905 -211 888.5 -132.5 c 128,-1,9 - 872 -54 872 -54 856 -27 c 2,10,-1 - 840 0 l 1,11,-1 - 696 0 l 1,12,-1 - 403 371 l 1,13,-1 - 403 0 l 1,14,-1 - 147 0 l 1,15,-1 - 147 901 l 1,16,-1 - 403 901 l 1,17,-1 - 403 627 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049C -Encoding: 1180 1180 758 -Width: 1454 -VWidth: 0 -Flags: W -HStem: 0 119<1332 1409> 700 135<440 543> 1393 41G<174 440 1008 1423> -VStem: 174 266<0 700 836 1434> 543 115<455 700 891 1085> -LayerCount: 2 -Fore -SplineSet -440 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 440 1434 l 1,3,-1 - 440 836 l 1,4,-1 - 543 836 l 1,5,-1 - 543 1085 l 1,6,-1 - 657 1085 l 1,7,-1 - 657 891 l 1,8,9 - 709 938 709 938 808.5 1048 c 128,-1,10 - 908 1158 908 1158 1153 1434 c 1,11,-1 - 1423 1434 l 1,12,-1 - 874 817 l 1,13,14 - 946 799 946 799 1003 750.5 c 128,-1,15 - 1060 702 1060 702 1096 639 c 128,-1,16 - 1132 576 1132 576 1161.5 504.5 c 128,-1,17 - 1191 433 1191 433 1215 365 c 128,-1,18 - 1239 297 1239 297 1265 241.5 c 128,-1,19 - 1291 186 1291 186 1327 152.5 c 128,-1,20 - 1363 119 1363 119 1409 119 c 1,21,-1 - 1409 0 l 1,22,23 - 1316 0 1316 0 1243 24 c 128,-1,24 - 1170 48 1170 48 1123.5 88.5 c 128,-1,25 - 1077 129 1077 129 1041.5 181 c 128,-1,26 - 1006 233 1006 233 982.5 291 c 128,-1,27 - 959 349 959 349 938 407 c 128,-1,28 - 917 465 917 465 893.5 517.5 c 128,-1,29 - 870 570 870 570 840.5 610.5 c 128,-1,30 - 811 651 811 651 764.5 675.5 c 128,-1,31 - 718 700 718 700 657 700 c 1,32,-1 - 657 455 l 1,33,-1 - 543 455 l 1,34,-1 - 543 700 l 1,35,-1 - 440 700 l 1,36,-1 - 440 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049D -Encoding: 1181 1181 759 -Width: 1255 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403 938 1188> 451 102<403 475 590 608> 860 41G<147 403 885 1151> -VStem: 147 256<0 451 553 901> 475 115<184 451 553 815> -LayerCount: 2 -Fore -SplineSet -403 0 m 1,0,-1 - 147 0 l 1,1,-1 - 147 901 l 1,2,-1 - 403 901 l 1,3,-1 - 403 553 l 1,4,-1 - 475 553 l 1,5,-1 - 475 815 l 1,6,-1 - 590 815 l 1,7,-1 - 590 553 l 1,8,-1 - 610 553 l 1,9,-1 - 922 901 l 1,10,-1 - 1151 901 l 1,11,-1 - 795 502 l 1,12,-1 - 1188 0 l 1,13,-1 - 971 0 l 1,14,-1 - 608 451 l 1,15,-1 - 590 451 l 1,16,-1 - 590 184 l 1,17,-1 - 475 184 l 1,18,-1 - 475 451 l 1,19,-1 - 403 451 l 1,20,-1 - 403 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049E -Encoding: 1182 1182 760 -Width: 1316 -VWidth: 0 -Flags: W -HStem: 0 119<1181 1270> 1126 102<82 252 518 668> 1393 41G<252 518 977 1286> -VStem: 252 266<0 571 877 1126 1229 1434> -LayerCount: 2 -Fore -SplineSet -518 0 m 1,0,-1 - 252 0 l 1,1,-1 - 252 1126 l 1,2,-1 - 82 1126 l 1,3,-1 - 82 1229 l 1,4,-1 - 252 1229 l 1,5,-1 - 252 1434 l 1,6,-1 - 518 1434 l 1,7,-1 - 518 1229 l 1,8,-1 - 668 1229 l 1,9,-1 - 668 1126 l 1,10,-1 - 518 1126 l 1,11,-1 - 518 877 l 1,12,-1 - 1014 1434 l 1,13,-1 - 1286 1434 l 1,14,-1 - 731 813 l 1,15,16 - 811 792 811 792 871.5 742.5 c 128,-1,17 - 932 693 932 693 967.5 630.5 c 128,-1,18 - 1003 568 1003 568 1030.5 497 c 128,-1,19 - 1058 426 1058 426 1079.5 359.5 c 128,-1,20 - 1101 293 1101 293 1124.5 239 c 128,-1,21 - 1148 185 1148 185 1184.5 152 c 128,-1,22 - 1221 119 1221 119 1270 119 c 1,23,-1 - 1270 0 l 1,24,25 - 1167 0 1167 0 1085 35.5 c 128,-1,26 - 1003 71 1003 71 952 128.5 c 128,-1,27 - 901 186 901 186 862 256 c 128,-1,28 - 823 326 823 326 796.5 399.5 c 128,-1,29 - 770 473 770 473 747.5 535 c 128,-1,30 - 725 597 725 597 697 643.5 c 128,-1,31 - 669 690 669 690 635 702 c 1,32,-1 - 518 571 l 1,33,-1 - 518 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049F -Encoding: 1183 1183 761 -Width: 1046 -VWidth: 0 -Flags: W -HStem: 0 43G<213 469 729 979> 860 41G<676 942> 983 102<61 213 469 635> 1311 41G<213 469> -VStem: 213 256<0 371 627 983 1085 1352> -LayerCount: 2 -Fore -SplineSet -635 1085 m 1,0,-1 - 635 983 l 1,1,-1 - 469 983 l 1,2,-1 - 469 627 l 1,3,-1 - 713 901 l 1,4,-1 - 942 901 l 1,5,-1 - 586 502 l 1,6,-1 - 979 0 l 1,7,-1 - 762 0 l 1,8,-1 - 469 371 l 1,9,-1 - 469 0 l 1,10,-1 - 213 0 l 1,11,-1 - 213 983 l 1,12,-1 - 61 983 l 1,13,-1 - 61 1085 l 1,14,-1 - 213 1085 l 1,15,-1 - 213 1352 l 1,16,-1 - 469 1352 l 1,17,-1 - 469 1085 l 1,18,-1 - 635 1085 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A0 -Encoding: 1184 1184 762 -Width: 1546 -VWidth: 0 -Flags: W -HStem: 0 119<1411 1499> 1331 102<20 481> -VStem: 481 266<0 571 877 1331> -LayerCount: 2 -Fore -SplineSet -748 0 m 1,0,-1 - 481 0 l 1,1,-1 - 481 1331 l 1,2,-1 - 20 1331 l 1,3,-1 - 20 1434 l 1,4,-1 - 748 1434 l 1,5,-1 - 748 877 l 1,6,-1 - 1243 1434 l 1,7,-1 - 1516 1434 l 1,8,-1 - 961 813 l 1,9,10 - 1041 792 1041 792 1101.5 742.5 c 128,-1,11 - 1162 693 1162 693 1197.5 630.5 c 128,-1,12 - 1233 568 1233 568 1260.5 497 c 128,-1,13 - 1288 426 1288 426 1309 359.5 c 128,-1,14 - 1330 293 1330 293 1353.5 239 c 128,-1,15 - 1377 185 1377 185 1413.5 152 c 128,-1,16 - 1450 119 1450 119 1499 119 c 1,17,-1 - 1499 0 l 1,18,19 - 1396 0 1396 0 1314 35.5 c 128,-1,20 - 1232 71 1232 71 1181 128.5 c 128,-1,21 - 1130 186 1130 186 1091 256 c 128,-1,22 - 1052 326 1052 326 1025.5 399.5 c 128,-1,23 - 999 473 999 473 976.5 535 c 128,-1,24 - 954 597 954 597 926 643.5 c 128,-1,25 - 898 690 898 690 864 702 c 1,26,-1 - 748 571 l 1,27,-1 - 748 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A1 -Encoding: 1185 1185 763 -Width: 1163 -VWidth: 0 -Flags: W -HStem: 0 43G<330 586 846 1096> 799 102<31 330> -VStem: 330 256<0 371 627 799> -LayerCount: 2 -Fore -SplineSet -586 627 m 1,0,-1 - 829 901 l 1,1,-1 - 1059 901 l 1,2,-1 - 702 502 l 1,3,-1 - 1096 0 l 1,4,-1 - 879 0 l 1,5,-1 - 586 371 l 1,6,-1 - 586 0 l 1,7,-1 - 330 0 l 1,8,-1 - 330 799 l 1,9,-1 - 31 799 l 1,10,-1 - 31 901 l 1,11,-1 - 586 901 l 1,12,-1 - 586 627 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A2 -Encoding: 1186 1186 764 -Width: 1505 -VWidth: 0 -Flags: W -HStem: 0 102<1182 1231> 717 102<440 915> 1393 41G<174 440 915 1182> -VStem: 174 266<0 717 819 1434> 915 266<102 717 819 1434> 1274 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -440 1434 m 1,0,-1 - 440 819 l 1,1,-1 - 915 819 l 1,2,-1 - 915 1434 l 1,3,-1 - 1182 1434 l 1,4,-1 - 1182 102 l 1,5,-1 - 1372 102 l 1,6,-1 - 1372 -315 l 1,7,-1 - 1274 -315 l 1,8,9 - 1274 -250 1274 -250 1267 -193.5 c 128,-1,10 - 1260 -137 1260 -137 1250.5 -103 c 128,-1,11 - 1241 -69 1241 -69 1231.5 -44.5 c 128,-1,12 - 1222 -20 1222 -20 1215 -10 c 2,13,-1 - 1208 0 l 1,14,-1 - 915 0 l 1,15,-1 - 915 717 l 1,16,-1 - 440 717 l 1,17,-1 - 440 0 l 1,18,-1 - 174 0 l 1,19,-1 - 174 1434 l 1,20,-1 - 440 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A3 -Encoding: 1187 1187 765 -Width: 1228 -VWidth: 0 -Flags: W -HStem: 0 102<934 997> 440 102<379 678> 860 41G<123 379 678 934> -VStem: 123 256<0 440 543 901> 678 256<102 440 543 901> 1040 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 379 901 l 1,1,-1 - 379 543 l 1,2,-1 - 678 543 l 1,3,-1 - 678 901 l 1,4,-1 - 934 901 l 1,5,-1 - 934 102 l 1,6,-1 - 1139 102 l 1,7,-1 - 1139 -315 l 1,8,-1 - 1040 -315 l 1,9,10 - 1040 -250 1040 -250 1033.5 -193.5 c 128,-1,11 - 1027 -137 1027 -137 1017.5 -103 c 128,-1,12 - 1008 -69 1008 -69 998 -44.5 c 128,-1,13 - 988 -20 988 -20 982 -10 c 2,14,-1 - 975 0 l 1,15,-1 - 678 0 l 1,16,-1 - 678 440 l 1,17,-1 - 379 440 l 1,18,-1 - 379 0 l 1,19,-1 - 123 0 l 1,20,-1 - 123 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A4 -Encoding: 1188 1188 766 -Width: 1779 -VWidth: 0 -Flags: W -HStem: 0 43G<174 440 915 1182> 717 102<440 915> 1331 102<1182 1743> -VStem: 174 266<0 717 819 1434> 915 266<0 717 819 1331> -LayerCount: 2 -Fore -SplineSet -440 1434 m 1,0,-1 - 440 819 l 1,1,-1 - 915 819 l 1,2,-1 - 915 1434 l 1,3,-1 - 1743 1434 l 1,4,-1 - 1743 1331 l 1,5,-1 - 1182 1331 l 1,6,-1 - 1182 0 l 1,7,-1 - 915 0 l 1,8,-1 - 915 717 l 1,9,-1 - 440 717 l 1,10,-1 - 440 0 l 1,11,-1 - 174 0 l 1,12,-1 - 174 1434 l 1,13,-1 - 440 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A5 -Encoding: 1189 1189 767 -Width: 1323 -VWidth: 0 -Flags: W -HStem: 0 43G<123 379 678 934> 440 102<379 678> 799 102<934 1270> -VStem: 123 256<0 440 543 901> 678 256<0 440 543 799> -LayerCount: 2 -Fore -SplineSet -123 901 m 1,0,-1 - 379 901 l 1,1,-1 - 379 543 l 1,2,-1 - 678 543 l 1,3,-1 - 678 901 l 1,4,-1 - 1270 901 l 1,5,-1 - 1270 799 l 1,6,-1 - 934 799 l 1,7,-1 - 934 0 l 1,8,-1 - 678 0 l 1,9,-1 - 678 440 l 1,10,-1 - 379 440 l 1,11,-1 - 379 0 l 1,12,-1 - 123 0 l 1,13,-1 - 123 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A6 -Encoding: 1190 1190 768 -Width: 2050 -VWidth: 0 -Flags: W -HStem: -217 102<1387 1589> -59 41G<1302 1364> 0 43G<174 440 883 1149> 819 102<1226 1554> 1331 102<440 883> -VStem: 174 266<0 1331> 883 266<0 756 870 1331> 1645 266<39 681> -LayerCount: 2 -Fore -SplineSet -174 0 m 1,0,-1 - 174 1434 l 1,1,-1 - 1149 1434 l 1,2,-1 - 1149 870 l 1,3,4 - 1248 922 1248 922 1374 922 c 0,5,6 - 1484 922 1484 922 1579.5 895 c 128,-1,7 - 1675 868 1675 868 1750 816.5 c 128,-1,8 - 1825 765 1825 765 1868 681.5 c 128,-1,9 - 1911 598 1911 598 1911 492 c 2,10,-1 - 1911 291 l 2,11,12 - 1911 173 1911 173 1883.5 81 c 128,-1,13 - 1856 -11 1856 -11 1813 -65.5 c 128,-1,14 - 1770 -120 1770 -120 1711.5 -155.5 c 128,-1,15 - 1653 -191 1653 -191 1597 -204 c 128,-1,16 - 1541 -217 1541 -217 1481 -217 c 0,17,18 - 1423 -217 1423 -217 1353 -191.5 c 128,-1,19 - 1283 -166 1283 -166 1239 -125 c 1,20,-1 - 1341 -18 l 1,21,22 - 1407 -115 1407 -115 1511 -115 c 0,23,24 - 1645 -115 1645 -115 1645 246 c 2,25,-1 - 1645 467 l 2,26,27 - 1645 572 1645 572 1628 642.5 c 128,-1,28 - 1611 713 1611 713 1578 751 c 128,-1,29 - 1545 789 1545 789 1503.5 804 c 128,-1,30 - 1462 819 1462 819 1405 819 c 0,31,32 - 1336 819 1336 819 1268 793.5 c 128,-1,33 - 1200 768 1200 768 1149 723 c 1,34,-1 - 1149 0 l 1,35,-1 - 883 0 l 1,36,-1 - 883 1331 l 1,37,-1 - 440 1331 l 1,38,-1 - 440 0 l 1,39,-1 - 174 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A7 -Encoding: 1191 1191 769 -Width: 1691 -VWidth: 0 -Flags: W -HStem: -236 102<1100 1275> 0 43G<123 379 678 934> 487 102<996 1242> 799 102<379 678> -VStem: 123 256<0 799> 678 256<0 429 541 799> 1305 256<-32 382> -LayerCount: 2 -Fore -SplineSet -1305 135 m 4,0,1 - 1305 241 1305 241 1294.5 311 c 128,-1,2 - 1284 381 1284 381 1262.5 419 c 128,-1,3 - 1241 457 1241 457 1212.5 472 c 128,-1,4 - 1184 487 1184 487 1143 487 c 0,5,6 - 1079 487 1079 487 1035.5 465 c 128,-1,7 - 992 443 992 443 934 393 c 1,8,-1 - 934 0 l 1,9,-1 - 678 0 l 1,10,-1 - 678 799 l 1,11,-1 - 379 799 l 1,12,-1 - 379 0 l 1,13,-1 - 123 0 l 1,14,-1 - 123 901 l 1,15,-1 - 934 901 l 1,16,-1 - 934 541 l 1,17,18 - 986 568 986 568 1022.5 579 c 128,-1,19 - 1059 590 1059 590 1112 590 c 0,20,21 - 1330 590 1330 590 1445.5 482.5 c 128,-1,22 - 1561 375 1561 375 1561 160 c 0,23,24 - 1561 -16 1561 -16 1450.5 -126 c 128,-1,25 - 1340 -236 1340 -236 1182 -236 c 0,26,27 - 1113 -236 1113 -236 1052.5 -211.5 c 128,-1,28 - 992 -187 992 -187 961 -143 c 1,29,-1 - 1063 -37 l 1,30,31 - 1094 -92 1094 -92 1126 -112.5 c 128,-1,32 - 1158 -133 1158 -133 1212 -133 c 0,33,34 - 1241 -133 1241 -133 1260 -112.5 c 128,-1,35 - 1279 -92 1279 -92 1288.5 -52 c 128,-1,36 - 1298 -12 1298 -12 1301.5 31.5 c 128,-1,37 - 1305 75 1305 75 1305 135 c 4,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A8 -Encoding: 1192 1192 770 -Width: 1730 -VWidth: 0 -Flags: W -HStem: -20 102<597 915 1154 1430> 1268 84<1004 1126> 1352 84<587 702> -VStem: 102 266<424 1009> 641 266<448 1018> 1210 266<465 1018> -LayerCount: 2 -Fore -SplineSet -1632 145 m 1,0,1 - 1575 67 1575 67 1500 23.5 c 128,-1,2 - 1425 -20 1425 -20 1348 -20 c 0,3,4 - 1172 -20 1172 -20 1032 47 c 1,5,6 - 877 -20 877 -20 700 -20 c 0,7,8 - 618 -20 618 -20 535.5 7 c 128,-1,9 - 453 34 453 34 374.5 93 c 128,-1,10 - 296 152 296 152 235.5 236 c 128,-1,11 - 175 320 175 320 138.5 444.5 c 128,-1,12 - 102 569 102 569 102 717 c 128,-1,13 - 102 865 102 865 139 988 c 128,-1,14 - 176 1111 176 1111 236 1192 c 128,-1,15 - 296 1273 296 1273 375 1329.5 c 128,-1,16 - 454 1386 454 1386 536.5 1411 c 128,-1,17 - 619 1436 619 1436 702 1436 c 1,18,-1 - 705 1352 l 1,19,20 - 595 1335 595 1335 522.5 1268.5 c 128,-1,21 - 450 1202 450 1202 409.5 1065 c 128,-1,22 - 369 928 369 928 369 717 c 0,23,24 - 369 586 369 586 390.5 478 c 128,-1,25 - 412 370 412 370 447.5 298 c 128,-1,26 - 483 226 483 226 530.5 176 c 128,-1,27 - 578 126 578 126 628 104 c 128,-1,28 - 678 82 678 82 731 82 c 0,29,30 - 833 82 833 82 918 117 c 1,31,32 - 788 214 788 214 714.5 371 c 128,-1,33 - 641 528 641 528 641 733 c 0,34,35 - 641 1006 641 1006 765 1179 c 128,-1,36 - 889 1352 889 1352 1067 1352 c 0,37,38 - 1147 1352 1147 1352 1221.5 1307 c 128,-1,39 - 1296 1262 1296 1262 1352.5 1183 c 128,-1,40 - 1409 1104 1409 1104 1443 986.5 c 128,-1,41 - 1477 869 1477 869 1477 733 c 0,42,43 - 1477 524 1477 524 1389.5 366.5 c 128,-1,44 - 1302 209 1302 209 1153 111 c 1,45,46 - 1227 82 1227 82 1317 82 c 0,47,48 - 1374 82 1374 82 1425 120.5 c 128,-1,49 - 1476 159 1476 159 1513 229 c 1,50,-1 - 1632 145 l 1,0,1 -1038 193 m 1,51,52 - 1210 348 1210 348 1210 700 c 0,53,54 - 1210 947 1210 947 1172.5 1107.5 c 128,-1,55 - 1135 1268 1135 1268 1069 1268 c 0,56,57 - 994 1268 994 1268 950.5 1107 c 128,-1,58 - 907 946 907 946 907 700 c 0,59,60 - 907 340 907 340 1038 193 c 1,51,52 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A9 -Encoding: 1193 1193 771 -Width: 1392 -VWidth: 0 -Flags: W -HStem: -20 102<485 678 985 1129> 715 102<788 886> 799 102<442 514> -VStem: 90 256<269 680> 494 256<250 649> 920 256<251 639> -LayerCount: 2 -Fore -SplineSet -1331 145 m 1,0,1 - 1274 67 1274 67 1199 23.5 c 128,-1,2 - 1124 -20 1124 -20 1047 -20 c 0,3,4 - 935 -20 935 -20 829 12 c 1,5,6 - 732 -20 732 -20 604 -20 c 0,7,8 - 539 -20 539 -20 469 -1 c 128,-1,9 - 399 18 399 18 331 59 c 128,-1,10 - 263 100 263 100 209.5 156 c 128,-1,11 - 156 212 156 212 123 294 c 128,-1,12 - 90 376 90 376 90 471 c 0,13,14 - 90 662 90 662 203.5 781.5 c 128,-1,15 - 317 901 317 901 514 901 c 1,16,-1 - 514 799 l 1,17,18 - 430 775 430 775 388 697.5 c 128,-1,19 - 346 620 346 620 346 471 c 0,20,21 - 346 367 346 367 369 289.5 c 128,-1,22 - 392 212 392 212 433 168 c 128,-1,23 - 474 124 474 124 524.5 103 c 128,-1,24 - 575 82 575 82 635 82 c 0,25,26 - 666 82 666 82 680 84 c 1,27,28 - 591 147 591 147 542.5 241 c 128,-1,29 - 494 335 494 335 494 455 c 0,30,31 - 494 525 494 525 514 588 c 128,-1,32 - 534 651 534 651 573.5 703 c 128,-1,33 - 613 755 613 755 681 786 c 128,-1,34 - 749 817 749 817 836 817 c 0,35,36 - 943 817 943 817 1022 763.5 c 128,-1,37 - 1101 710 1101 710 1138.5 629 c 128,-1,38 - 1176 548 1176 548 1176 455 c 0,39,40 - 1176 213 1176 213 983 84 c 1,41,42 - 995 82 995 82 1016 82 c 0,43,44 - 1073 82 1073 82 1124 120.5 c 128,-1,45 - 1175 159 1175 159 1212 229 c 1,46,-1 - 1331 145 l 1,0,1 -836 152 m 1,47,48 - 920 236 920 236 920 422 c 0,49,50 - 920 560 920 560 898 637.5 c 128,-1,51 - 876 715 876 715 838 715 c 0,52,53 - 750 715 750 715 750 422 c 0,54,55 - 750 238 750 238 836 152 c 1,47,48 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AA -Encoding: 1194 1194 772 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -360 49<602 745> -16 98<618 678 819 936> 1352 102<571 902> -VStem: 102 266<442 1012> 793 158<-286 -144> -LayerCount: 2 -Fore -Refer: 171 199 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04AB -Encoding: 1195 1195 773 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -360 49<414 557> -16 98<447 489 633 697> 819 102<425 635> -VStem: 90 256<238 657> 604 158<-286 -144> -LayerCount: 2 -Fore -Refer: 172 231 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04AC -Encoding: 1196 1196 774 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 102<774 833> 1331 102<41 508 774 1239> -VStem: 508 266<102 1331> 877 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -41 1434 m 1,0,-1 - 1243 1434 l 1,1,-1 - 1239 1331 l 1,2,-1 - 774 1331 l 1,3,-1 - 774 102 l 1,4,-1 - 975 102 l 1,5,-1 - 975 -315 l 1,6,-1 - 877 -315 l 1,7,8 - 877 -250 877 -250 870 -193.5 c 128,-1,9 - 863 -137 863 -137 853.5 -103 c 128,-1,10 - 844 -69 844 -69 834.5 -44.5 c 128,-1,11 - 825 -20 825 -20 818 -10 c 2,12,-1 - 811 0 l 1,13,-1 - 508 0 l 1,14,-1 - 508 1331 l 1,15,-1 - 41 1331 l 1,16,-1 - 41 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AD -Encoding: 1197 1197 775 -Width: 940 -VWidth: 0 -Flags: W -HStem: 0 102<602 663> 799 102<53 346 602 895> -VStem: 346 256<102 799> 707 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -641 0 m 5,0,-1 - 346 0 l 1,1,-1 - 346 799 l 1,2,-1 - 53 799 l 1,3,-1 - 53 901 l 1,4,-1 - 895 901 l 1,5,-1 - 895 799 l 1,6,-1 - 602 799 l 1,7,-1 - 602 102 l 1,8,-1 - 805 102 l 1,9,-1 - 805 -315 l 1,10,-1 - 707 -315 l 1,11,12 - 707 -250 707 -250 700 -193.5 c 128,-1,13 - 693 -137 693 -137 683.5 -103 c 128,-1,14 - 674 -69 674 -69 664.5 -44.5 c 128,-1,15 - 655 -20 655 -20 648 -10 c 2,16,-1 - 641 0 l 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AE -Encoding: 1198 1198 776 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<383 649> 1393 41<23 301 768 973> -VStem: 383 266<0 727> -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04AF -Encoding: 1199 1199 777 -Width: 849 -VWidth: 0 -Flags: W -HStem: 860 41G<18 254 659 838> -VStem: 301 256<-410 123> -LayerCount: 2 -Fore -SplineSet -457 303 m 1,0,-1 - 674 901 l 1,1,-1 - 838 901 l 1,2,-1 - 557 129 l 1,3,-1 - 557 -410 l 1,4,-1 - 301 -410 l 1,5,-1 - 301 123 l 1,6,-1 - 18 901 l 1,7,-1 - 240 901 l 1,8,-1 - 457 303 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B0 -Encoding: 1200 1200 778 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43G<383 649> 418 102<229 383 649 803> 1393 41G<23 301 768 973> -VStem: 383 266<0 418 520 727> -LayerCount: 2 -Fore -SplineSet -229 418 m 1,0,-1 - 229 520 l 1,1,-1 - 383 520 l 1,2,-1 - 383 727 l 1,3,-1 - 23 1434 l 1,4,-1 - 281 1434 l 1,5,-1 - 535 936 l 1,6,-1 - 788 1434 l 1,7,-1 - 973 1434 l 1,8,-1 - 649 801 l 1,9,-1 - 649 520 l 1,10,-1 - 803 520 l 1,11,-1 - 803 418 l 1,12,-1 - 649 418 l 1,13,-1 - 649 0 l 1,14,-1 - 383 0 l 1,15,-1 - 383 418 l 1,16,-1 - 229 418 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B1 -Encoding: 1201 1201 779 -Width: 849 -VWidth: 0 -Flags: W -HStem: -102 102<141 301 557 715> 860 41G<18 254 659 838> -VStem: 301 256<-410 -102 0 123> -LayerCount: 2 -Fore -SplineSet -141 -102 m 1,0,-1 - 141 0 l 1,1,-1 - 301 0 l 1,2,-1 - 301 123 l 1,3,-1 - 18 901 l 1,4,-1 - 240 901 l 1,5,-1 - 457 303 l 1,6,-1 - 674 901 l 1,7,-1 - 838 901 l 1,8,-1 - 557 129 l 1,9,-1 - 557 0 l 1,10,-1 - 715 0 l 1,11,-1 - 715 -102 l 1,12,-1 - 557 -102 l 1,13,-1 - 557 -410 l 1,14,-1 - 301 -410 l 1,15,-1 - 301 -102 l 1,16,-1 - 141 -102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B2 -Encoding: 1202 1202 780 -Width: 1394 -VWidth: 0 -Flags: W -HStem: 0 102<1026 1120> 1393 41G<90 369 794 999> -VStem: 1163 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -1098 0 m 1,0,-1 - 821 0 l 1,1,-1 - 545 543 l 1,2,-1 - 268 0 l 1,3,-1 - 86 0 l 1,4,-1 - 453 721 l 1,5,-1 - 90 1434 l 1,6,-1 - 348 1434 l 1,7,-1 - 582 975 l 1,8,-1 - 815 1434 l 1,9,-1 - 999 1434 l 1,10,-1 - 674 795 l 1,11,-1 - 1026 102 l 1,12,-1 - 1262 102 l 1,13,-1 - 1262 -315 l 1,14,-1 - 1163 -315 l 1,15,16 - 1163 -211 1163 -211 1146.5 -132.5 c 128,-1,17 - 1130 -54 1130 -54 1114 -27 c 2,18,-1 - 1098 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B3 -Encoding: 1203 1203 781 -Width: 1122 -VWidth: 0 -Flags: W -HStem: 0 102<782 891> 860 41G<14 289 569 772> -VStem: 934 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -305 455 m 1,0,-1 - 14 901 l 1,1,-1 - 262 901 l 1,2,-1 - 430 645 l 1,3,-1 - 596 901 l 1,4,-1 - 772 901 l 1,5,-1 - 518 510 l 1,6,-1 - 782 102 l 1,7,-1 - 1032 102 l 1,8,-1 - 1032 -315 l 1,9,-1 - 934 -315 l 1,10,11 - 934 -250 934 -250 927 -193.5 c 128,-1,12 - 920 -137 920 -137 910.5 -103 c 128,-1,13 - 901 -69 901 -69 891.5 -44.5 c 128,-1,14 - 882 -20 882 -20 875 -10 c 2,15,-1 - 868 0 l 1,16,-1 - 600 0 l 1,17,-1 - 393 317 l 1,18,-1 - 186 0 l 1,19,-1 - 8 0 l 1,20,-1 - 305 455 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B4 -Encoding: 1204 1204 782 -Width: 1705 -VWidth: 0 -Flags: W -HStem: 0 102<682 1176> 1331 102<41 416 682 1055> -VStem: 416 266<102 1331> 1176 266<102 1434> 1475 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -416 1331 m 1,0,-1 - 41 1331 l 1,1,-1 - 41 1434 l 1,2,-1 - 1059 1434 l 1,3,-1 - 1055 1331 l 1,4,-1 - 682 1331 l 1,5,-1 - 682 102 l 1,6,-1 - 1176 102 l 1,7,-1 - 1176 1434 l 1,8,-1 - 1442 1434 l 1,9,-1 - 1442 102 l 1,10,-1 - 1573 102 l 1,11,-1 - 1573 -315 l 1,12,-1 - 1475 -315 l 1,13,14 - 1475 -250 1475 -250 1468 -193.5 c 128,-1,15 - 1461 -137 1461 -137 1451.5 -103 c 128,-1,16 - 1442 -69 1442 -69 1432.5 -44.5 c 128,-1,17 - 1423 -20 1423 -20 1416 -10 c 2,18,-1 - 1409 0 l 1,19,-1 - 416 0 l 1,20,-1 - 416 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B5 -Encoding: 1205 1205 783 -Width: 1378 -VWidth: 0 -Flags: W -HStem: 0 102<561 901> 799 102<53 305 561 813> -VStem: 305 256<102 799> 901 256<102 901> 1190 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -53 901 m 1,0,-1 - 813 901 l 1,1,-1 - 813 799 l 1,2,-1 - 561 799 l 1,3,-1 - 561 102 l 1,4,-1 - 901 102 l 1,5,-1 - 901 901 l 1,6,-1 - 1157 901 l 1,7,-1 - 1157 102 l 1,8,-1 - 1288 102 l 1,9,-1 - 1288 -315 l 1,10,-1 - 1190 -315 l 1,11,12 - 1190 -250 1190 -250 1183 -193.5 c 128,-1,13 - 1176 -137 1176 -137 1166.5 -103 c 128,-1,14 - 1157 -69 1157 -69 1147.5 -44.5 c 128,-1,15 - 1138 -20 1138 -20 1131 -10 c 2,16,-1 - 1124 0 l 1,17,-1 - 305 0 l 1,18,-1 - 305 799 l 1,19,-1 - 53 799 l 1,20,-1 - 53 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B6 -Encoding: 1206 1206 784 -Width: 1370 -VWidth: 0 -Flags: W -HStem: 0 102<1036 1095> 522 102<481 725> 1393 41G<123 389 770 1036> -VStem: 123 266<791 1434> 770 266<102 573 670 1434> 1139 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -1036 102 m 1,0,-1 - 1237 102 l 1,1,-1 - 1237 -315 l 1,2,-1 - 1139 -315 l 1,3,4 - 1139 -250 1139 -250 1132 -193.5 c 128,-1,5 - 1125 -137 1125 -137 1115.5 -103 c 128,-1,6 - 1106 -69 1106 -69 1096.5 -44.5 c 128,-1,7 - 1087 -20 1087 -20 1080 -10 c 2,8,-1 - 1073 0 l 1,9,-1 - 770 0 l 1,10,-1 - 770 573 l 1,11,12 - 700 522 700 522 571 522 c 0,13,14 - 350 522 350 522 236.5 658 c 128,-1,15 - 123 794 123 794 123 1085 c 2,16,-1 - 123 1434 l 1,17,-1 - 389 1434 l 1,18,-1 - 389 1110 l 2,19,20 - 389 983 389 983 400.5 892 c 128,-1,21 - 412 801 412 801 430 750 c 128,-1,22 - 448 699 448 699 478 670 c 128,-1,23 - 508 641 508 641 535.5 633 c 128,-1,24 - 563 625 563 625 602 625 c 0,25,26 - 710 625 710 625 770 721 c 1,27,-1 - 770 1434 l 1,28,-1 - 1036 1434 l 1,29,-1 - 1036 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B7 -Encoding: 1207 1207 785 -Width: 1112 -VWidth: 0 -Flags: W -HStem: 0 102<821 880> 313 102<369 555> 860 41G<82 338 565 821> -VStem: 82 256<488 901> 565 256<102 348 426 901> 924 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -821 102 m 5,0,-1 - 1022 102 l 5,1,-1 - 1022 -315 l 5,2,-1 - 924 -315 l 5,3,4 - 924 -250 924 -250 917 -193.5 c 132,-1,5 - 910 -137 910 -137 900.5 -103 c 132,-1,6 - 891 -69 891 -69 881.5 -44.5 c 132,-1,7 - 872 -20 872 -20 865 -10 c 6,8,-1 - 858 0 l 5,9,-1 - 565 0 l 5,10,-1 - 565 348 l 1,11,12 - 530 313 530 313 438 313 c 0,13,14 - 371 313 371 313 320 324 c 128,-1,15 - 269 335 269 335 230.5 355.5 c 128,-1,16 - 192 376 192 376 166 413 c 128,-1,17 - 140 450 140 450 123.5 493 c 128,-1,18 - 107 536 107 536 98 601.5 c 128,-1,19 - 89 667 89 667 85.5 735.5 c 128,-1,20 - 82 804 82 804 82 901 c 1,21,-1 - 338 901 l 1,22,23 - 338 579 338 579 355 500 c 0,24,25 - 369 436 369 436 408 423 c 0,26,27 - 427 416 427 416 469 416 c 0,28,29 - 565 416 565 416 565 512 c 2,30,-1 - 565 901 l 1,31,-1 - 821 901 l 1,32,-1 - 821 102 l 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B8 -Encoding: 1208 1208 786 -Width: 1247 -VWidth: 0 -Flags: W -HStem: 0 43G<852 1118> 524 102<668 800> 864 41G<553 668> 1393 41G<123 389 852 1118> -VStem: 123 266<810 1434> 553 115<274 528 639 905> 852 266<0 573 677 1434> -LayerCount: 2 -Fore -SplineSet -553 905 m 1,0,-1 - 668 905 l 1,1,-1 - 668 627 l 1,2,3 - 723 632 723 632 775.5 657.5 c 128,-1,4 - 828 683 828 683 852 721 c 1,5,-1 - 852 1434 l 1,6,-1 - 1118 1434 l 1,7,-1 - 1118 0 l 1,8,-1 - 852 0 l 1,9,-1 - 852 573 l 1,10,11 - 799 535 799 535 668 524 c 1,12,-1 - 668 274 l 1,13,-1 - 553 274 l 1,14,-1 - 553 524 l 1,15,16 - 353 542 353 542 238 680.5 c 128,-1,17 - 123 819 123 819 123 1085 c 2,18,-1 - 123 1434 l 1,19,-1 - 389 1434 l 1,20,-1 - 389 1110 l 2,21,22 - 389 706 389 706 553 639 c 1,23,-1 - 553 905 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B9 -Encoding: 1209 1209 787 -Width: 1024 -VWidth: 0 -Flags: W -HStem: 0 43G<647 903> 317 104<553 625> 860 41G<82 338 647 903> -VStem: 82 256<532 901> 438 115<135 318 424 612> 647 256<0 348 446 901> -LayerCount: 2 -Fore -SplineSet -438 612 m 1,0,-1 - 553 612 l 1,1,-1 - 553 422 l 1,2,3 - 596 433 596 433 621.5 462 c 128,-1,4 - 647 491 647 491 647 512 c 2,5,-1 - 647 901 l 1,6,-1 - 903 901 l 1,7,-1 - 903 0 l 1,8,-1 - 647 0 l 1,9,-1 - 647 348 l 1,10,11 - 626 327 626 327 553 317 c 1,12,-1 - 553 135 l 1,13,-1 - 438 135 l 1,14,-1 - 438 315 l 1,15,16 - 333 320 333 320 264 355 c 128,-1,17 - 195 390 195 390 154.5 464 c 128,-1,18 - 114 538 114 538 98 641.5 c 128,-1,19 - 82 745 82 745 82 901 c 1,20,-1 - 338 901 l 1,21,22 - 338 725 338 725 349 624 c 128,-1,23 - 360 523 360 523 380.5 480 c 128,-1,24 - 401 437 401 437 438 424 c 1,25,-1 - 438 612 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BA -Encoding: 1210 1210 788 -Width: 1394 -VWidth: 0 -Flags: W -HStem: 0 43G<147 414 997 1264> 819 102<547 887> 1393 41G<147 414> -VStem: 147 266<0 719 831 1434> 997 266<0 671> -LayerCount: 2 -Fore -SplineSet -147 0 m 9,0,-1 - 147 1434 l 1,1,-1 - 414 1434 l 1,2,-1 - 414 831 l 1,3,4 - 422 835 422 835 452 852 c 128,-1,5 - 482 869 482 869 500.5 878 c 128,-1,6 - 519 887 519 887 551 899 c 128,-1,7 - 583 911 583 911 620 916.5 c 128,-1,8 - 657 922 657 922 700 922 c 0,9,10 - 810 922 810 922 909.5 895 c 128,-1,11 - 1009 868 1009 868 1089 816.5 c 128,-1,12 - 1169 765 1169 765 1216.5 681 c 128,-1,13 - 1264 597 1264 597 1264 492 c 2,14,-1 - 1264 0 l 1,15,-1 - 997 0 l 1,16,-1 - 997 467 l 2,17,18 - 997 551 997 551 982.5 614 c 128,-1,19 - 968 677 968 677 944.5 715.5 c 128,-1,20 - 921 754 921 754 886 777.5 c 128,-1,21 - 851 801 851 801 814 810 c 128,-1,22 - 777 819 777 819 731 819 c 0,23,24 - 633 819 633 819 557.5 781 c 128,-1,25 - 482 743 482 743 414 684 c 1,26,-1 - 414 0 l 1,27,-1 - 147 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BB -Encoding: 1211 1211 789 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 403 692 948> 819 102<405 644> 1311 41<147 403> -VStem: 147 256<0 802 907 1352> 692 256<0 720> -LayerCount: 2 -Fore -Refer: 2 104 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04BC -Encoding: 1212 1212 790 -Width: 1785 -VWidth: 0 -Flags: W -HStem: -20 102<890 1222> 717 102<301 422 692 1434> 1352 102<932 1225> -VStem: 66 184<885 1085> 422 266<421 717 819 980> -LayerCount: 2 -Fore -SplineSet -688 717 m 1,0,1 - 688 82 688 82 1053 82 c 0,2,3 - 1111 82 1111 82 1153.5 92.5 c 128,-1,4 - 1196 103 1196 103 1228.5 129.5 c 128,-1,5 - 1261 156 1261 156 1278 176 c 128,-1,6 - 1295 196 1295 196 1325 239 c 0,7,8 - 1333 250 1333 250 1337 256 c 1,9,-1 - 1563 188 l 1,10,11 - 1396 -20 1396 -20 1022 -20 c 0,12,13 - 939 -20 939 -20 856.5 7 c 128,-1,14 - 774 34 774 34 695 93 c 128,-1,15 - 616 152 616 152 556 236 c 128,-1,16 - 496 320 496 320 459 444.5 c 128,-1,17 - 422 569 422 569 422 717 c 1,18,19 - 336 717 336 717 272 738.5 c 128,-1,20 - 208 760 208 760 169 796.5 c 128,-1,21 - 130 833 130 833 106.5 889 c 128,-1,22 - 83 945 83 945 74.5 1005 c 128,-1,23 - 66 1065 66 1065 66 1143 c 1,24,-1 - 250 1085 l 1,25,26 - 250 1030 250 1030 256.5 986.5 c 128,-1,27 - 263 943 263 943 271.5 915.5 c 128,-1,28 - 280 888 280 888 296.5 868.5 c 128,-1,29 - 313 849 313 849 325.5 839.5 c 128,-1,30 - 338 830 338 830 360 825 c 128,-1,31 - 382 820 382 820 394 819.5 c 128,-1,32 - 406 819 406 819 428 819 c 1,33,34 - 442 946 442 946 490.5 1053.5 c 128,-1,35 - 539 1161 539 1161 607 1233.5 c 128,-1,36 - 675 1306 675 1306 757.5 1357 c 128,-1,37 - 840 1408 840 1408 922 1431 c 128,-1,38 - 1004 1454 1004 1454 1081 1454 c 0,39,40 - 1165 1454 1165 1454 1250.5 1427 c 128,-1,41 - 1336 1400 1336 1400 1418 1341 c 128,-1,42 - 1500 1282 1500 1282 1563 1198 c 128,-1,43 - 1626 1114 1626 1114 1665 989.5 c 128,-1,44 - 1704 865 1704 865 1704 717 c 1,45,-1 - 688 717 l 1,0,1 -692 819 m 1,46,-1 - 1434 819 l 1,47,48 - 1424 955 1424 955 1390.5 1060.5 c 128,-1,49 - 1357 1166 1357 1166 1308.5 1228 c 128,-1,50 - 1260 1290 1260 1290 1204.5 1321 c 128,-1,51 - 1149 1352 1149 1352 1090 1352 c 0,52,53 - 1021 1352 1021 1352 956.5 1321 c 128,-1,54 - 892 1290 892 1290 835.5 1228 c 128,-1,55 - 779 1166 779 1166 740.5 1060.5 c 128,-1,56 - 702 955 702 955 692 819 c 1,46,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BD -Encoding: 1213 1213 791 -Width: 1359 -VWidth: 0 -Flags: W -HStem: -20 102<773 1037> 451 102<311 422 682 1016> 819 102<758 961> -VStem: 66 184<619 819> 422 256<235 451 553 653> -LayerCount: 2 -Fore -SplineSet -682 553 m 1,0,-1 - 1016 553 l 1,1,2 - 1014 615 1014 615 1007 659.5 c 128,-1,3 - 1000 704 1000 704 985 742 c 128,-1,4 - 970 780 970 780 942 799.5 c 128,-1,5 - 914 819 914 819 874 819 c 0,6,7 - 781 819 781 819 736 751.5 c 128,-1,8 - 691 684 691 684 682 553 c 1,0,-1 -678 451 m 1,9,10 - 678 379 678 379 684 325.5 c 128,-1,11 - 690 272 690 272 705.5 224.5 c 128,-1,12 - 721 177 721 177 747.5 147 c 128,-1,13 - 774 117 774 117 816 99.5 c 128,-1,14 - 858 82 858 82 915 82 c 0,15,16 - 989 82 989 82 1023.5 113 c 128,-1,17 - 1058 144 1058 144 1069 205 c 1,18,-1 - 1264 158 l 1,19,20 - 1199 76 1199 76 1102.5 28 c 128,-1,21 - 1006 -20 1006 -20 885 -20 c 0,22,23 - 683 -20 683 -20 552.5 109.5 c 128,-1,24 - 422 239 422 239 422 451 c 1,25,26 - 336 451 336 451 272 472.5 c 128,-1,27 - 208 494 208 494 169 530.5 c 128,-1,28 - 130 567 130 567 106.5 623 c 128,-1,29 - 83 679 83 679 74.5 739 c 128,-1,30 - 66 799 66 799 66 877 c 1,31,-1 - 250 819 l 1,32,33 - 250 746 250 746 263 693.5 c 128,-1,34 - 276 641 276 641 293.5 614.5 c 128,-1,35 - 311 588 311 588 338.5 573.5 c 128,-1,36 - 366 559 366 559 385.5 556 c 128,-1,37 - 405 553 405 553 432 553 c 1,38,39 - 465 718 465 718 584.5 820 c 128,-1,40 - 704 922 704 922 844 922 c 0,41,42 - 947 922 947 922 1031 880.5 c 128,-1,43 - 1115 839 1115 839 1166.5 770.5 c 128,-1,44 - 1218 702 1218 702 1246 619.5 c 128,-1,45 - 1274 537 1274 537 1274 451 c 1,46,-1 - 678 451 l 1,9,10 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BE -Encoding: 1214 1214 792 -Width: 1742 -VWidth: 0 -Flags: W -HStem: 717 102<301 422 692 1434> 1352 102<932 1225> -VStem: 66 184<885 1085> 422 266<421 717 819 980> 1028 98<-315 -41> -LayerCount: 2 -Fore -SplineSet -692 819 m 1,0,-1 - 1434 819 l 1,1,2 - 1424 955 1424 955 1390.5 1060.5 c 128,-1,3 - 1357 1166 1357 1166 1308.5 1228 c 128,-1,4 - 1260 1290 1260 1290 1204.5 1321 c 128,-1,5 - 1149 1352 1149 1352 1090 1352 c 0,6,7 - 1021 1352 1021 1352 956.5 1321 c 128,-1,8 - 892 1290 892 1290 835.5 1228 c 128,-1,9 - 779 1166 779 1166 740.5 1060.5 c 128,-1,10 - 702 955 702 955 692 819 c 1,0,-1 -688 717 m 1,11,12 - 688 82 688 82 1053 82 c 0,13,14 - 1111 82 1111 82 1153.5 92.5 c 128,-1,15 - 1196 103 1196 103 1228.5 129.5 c 128,-1,16 - 1261 156 1261 156 1278 176 c 128,-1,17 - 1295 196 1295 196 1325 239 c 0,18,19 - 1333 250 1333 250 1337 256 c 1,20,-1 - 1563 188 l 1,21,22 - 1418 11 1418 11 1126 -16 c 1,23,-1 - 1126 -315 l 1,24,-1 - 1028 -315 l 1,25,26 - 1028 -125 1028 -125 973 -18 c 1,27,28 - 893 -10 893 -10 816.5 21.5 c 128,-1,29 - 740 53 740 53 668 113.5 c 128,-1,30 - 596 174 596 174 541.5 257 c 128,-1,31 - 487 340 487 340 454.5 459 c 128,-1,32 - 422 578 422 578 422 717 c 1,33,34 - 336 717 336 717 272 738.5 c 128,-1,35 - 208 760 208 760 169 796.5 c 128,-1,36 - 130 833 130 833 106.5 889 c 128,-1,37 - 83 945 83 945 74.5 1005 c 128,-1,38 - 66 1065 66 1065 66 1143 c 1,39,-1 - 250 1085 l 1,40,41 - 250 1030 250 1030 256.5 986.5 c 128,-1,42 - 263 943 263 943 271.5 915.5 c 128,-1,43 - 280 888 280 888 296.5 868.5 c 128,-1,44 - 313 849 313 849 325.5 839.5 c 128,-1,45 - 338 830 338 830 360 825 c 128,-1,46 - 382 820 382 820 394 819.5 c 128,-1,47 - 406 819 406 819 428 819 c 1,48,49 - 442 946 442 946 490.5 1053.5 c 128,-1,50 - 539 1161 539 1161 607 1233.5 c 128,-1,51 - 675 1306 675 1306 757.5 1357 c 128,-1,52 - 840 1408 840 1408 922 1431 c 128,-1,53 - 1004 1454 1004 1454 1081 1454 c 0,54,55 - 1165 1454 1165 1454 1250.5 1427 c 128,-1,56 - 1336 1400 1336 1400 1418 1341 c 128,-1,57 - 1500 1282 1500 1282 1563 1198 c 128,-1,58 - 1626 1114 1626 1114 1665 989.5 c 128,-1,59 - 1704 865 1704 865 1704 717 c 1,60,-1 - 688 717 l 1,11,12 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BF -Encoding: 1215 1215 793 -Width: 1359 -VWidth: 0 -Flags: W -HStem: 451 102<311 422 682 1016> 819 102<758 961> -VStem: 66 184<619 819> 422 256<235 451 553 653> 862 98<-315 -36> -LayerCount: 2 -Fore -SplineSet -678 451 m 1,0,1 - 678 379 678 379 684 325.5 c 128,-1,2 - 690 272 690 272 705.5 224.5 c 128,-1,3 - 721 177 721 177 747.5 147 c 128,-1,4 - 774 117 774 117 816 99.5 c 128,-1,5 - 858 82 858 82 915 82 c 0,6,7 - 989 82 989 82 1023.5 113 c 128,-1,8 - 1058 144 1058 144 1069 205 c 1,9,-1 - 1264 158 l 1,10,11 - 1148 12 1148 12 961 -14 c 1,12,-1 - 961 -315 l 1,13,-1 - 862 -315 l 1,14,15 - 862 -115 862 -115 807 -14 c 1,16,17 - 635 11 635 11 528.5 136 c 128,-1,18 - 422 261 422 261 422 451 c 1,19,20 - 336 451 336 451 272 472.5 c 128,-1,21 - 208 494 208 494 169 530.5 c 128,-1,22 - 130 567 130 567 106.5 623 c 128,-1,23 - 83 679 83 679 74.5 739 c 128,-1,24 - 66 799 66 799 66 877 c 1,25,-1 - 250 819 l 1,26,27 - 250 757 250 757 258 710 c 128,-1,28 - 266 663 266 663 282 635 c 128,-1,29 - 298 607 298 607 314 589.5 c 128,-1,30 - 330 572 330 572 354 564.5 c 128,-1,31 - 378 557 378 557 393.5 555 c 128,-1,32 - 409 553 409 553 432 553 c 1,33,34 - 465 718 465 718 584.5 820 c 128,-1,35 - 704 922 704 922 844 922 c 0,36,37 - 947 922 947 922 1031 880.5 c 128,-1,38 - 1115 839 1115 839 1166.5 770.5 c 128,-1,39 - 1218 702 1218 702 1246 619.5 c 128,-1,40 - 1274 537 1274 537 1274 451 c 1,41,-1 - 678 451 l 1,0,1 -682 553 m 1,42,-1 - 1016 553 l 1,43,44 - 1014 615 1014 615 1007 659.5 c 128,-1,45 - 1000 704 1000 704 985 742 c 128,-1,46 - 970 780 970 780 942 799.5 c 128,-1,47 - 914 819 914 819 874 819 c 0,48,49 - 781 819 781 819 736 751.5 c 128,-1,50 - 691 684 691 684 682 553 c 1,42,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C0 -Encoding: 1216 1216 794 -Width: 610 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> -VStem: 172 266<0 1434> -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04C1 -Encoding: 1217 1217 795 -Width: 1560 -VWidth: 0 -Flags: W -HStem: 0 43<86 352 676 940 1264 1530> 1331 102<106 178 1438 1509> 1577 137<686 930> -VStem: 577 78<1753 1775> 676 264<0 635 825 1434> 962 78<1753 1775> -CounterMasks: 1 1c -LayerCount: 2 -Fore -Refer: 1076 57420 S 1 0 0 1 1397 246 2 -Refer: 402 1046 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04C2 -Encoding: 1218 1218 796 -Width: 1288 -VWidth: 0 -Flags: W -HStem: 0 43<70 295 516 772 993 1219> 799 102<70 154 1134 1219> 1044 137<522 766> -VStem: 70 225<0 112> 413 78<1221 1242> 516 256<0 371 522 901> 798 78<1221 1242> 993 225<0 112> -LayerCount: 2 -Fore -Refer: 1076 57420 N 1 0 0 1 1231 -184 2 -Refer: 434 1078 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04C3 -Encoding: 1219 1219 797 -Width: 1347 -VWidth: 0 -Flags: W -HStem: -217 102<679 880> -59 41G<593 655> 0 43G<174 440> 1393 41G<174 440 899 1208> -VStem: 174 266<0 571 877 1434> 936 266<39 683> -LayerCount: 2 -Fore -SplineSet -440 571 m 1,0,-1 - 440 0 l 1,1,-1 - 174 0 l 1,2,-1 - 174 1434 l 1,3,-1 - 440 1434 l 1,4,-1 - 440 877 l 1,5,-1 - 936 1434 l 1,6,-1 - 1208 1434 l 1,7,-1 - 750 918 l 1,8,9 - 846 908 846 908 926.5 877 c 128,-1,10 - 1007 846 1007 846 1069.5 794.5 c 128,-1,11 - 1132 743 1132 743 1167 665.5 c 128,-1,12 - 1202 588 1202 588 1202 492 c 2,13,-1 - 1202 291 l 2,14,15 - 1202 173 1202 173 1174.5 81 c 128,-1,16 - 1147 -11 1147 -11 1104 -65.5 c 128,-1,17 - 1061 -120 1061 -120 1002.5 -155.5 c 128,-1,18 - 944 -191 944 -191 888 -204 c 128,-1,19 - 832 -217 832 -217 772 -217 c 0,20,21 - 714 -217 714 -217 644 -191.5 c 128,-1,22 - 574 -166 574 -166 530 -125 c 1,23,-1 - 633 -18 l 1,24,25 - 699 -115 699 -115 803 -115 c 0,26,27 - 936 -115 936 -115 936 246 c 2,28,-1 - 936 467 l 2,29,30 - 936 572 936 572 919 642.5 c 128,-1,31 - 902 713 902 713 869 751 c 128,-1,32 - 836 789 836 789 794.5 804 c 128,-1,33 - 753 819 753 819 696 819 c 0,34,35 - 671 819 671 819 659 817 c 1,36,-1 - 440 571 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C4 -Encoding: 1220 1220 798 -Width: 1095 -VWidth: 0 -Flags: W -HStem: -236 102<545 720> 0 43G<147 403> 487 102<598 690> 860 41G<147 403 611 877> -VStem: 147 256<0 371 627 901> 750 256<-32 383> -LayerCount: 2 -Fore -SplineSet -403 371 m 1,0,-1 - 403 0 l 1,1,-1 - 147 0 l 1,2,-1 - 147 901 l 1,3,-1 - 403 901 l 1,4,-1 - 403 627 l 1,5,-1 - 647 901 l 1,6,-1 - 877 901 l 1,7,-1 - 598 590 l 1,8,9 - 796 581 796 581 901 472.5 c 128,-1,10 - 1006 364 1006 364 1006 160 c 0,11,12 - 1006 -16 1006 -16 895.5 -126 c 128,-1,13 - 785 -236 785 -236 627 -236 c 0,14,15 - 558 -236 558 -236 497.5 -211.5 c 128,-1,16 - 437 -187 437 -187 406 -143 c 1,17,-1 - 508 -37 l 1,18,19 - 539 -92 539 -92 571 -112.5 c 128,-1,20 - 603 -133 603 -133 657 -133 c 0,21,22 - 686 -133 686 -133 705 -112.5 c 128,-1,23 - 724 -92 724 -92 733.5 -52 c 128,-1,24 - 743 -12 743 -12 746.5 31.5 c 128,-1,25 - 750 75 750 75 750 135 c 0,26,27 - 750 241 750 241 739.5 311 c 128,-1,28 - 729 381 729 381 707.5 419 c 128,-1,29 - 686 457 686 457 657.5 472 c 128,-1,30 - 629 487 629 487 588 487 c 0,31,32 - 537 487 537 487 494 471 c 1,33,-1 - 403 371 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C5 -Encoding: 1221 1221 799 -Width: 1517 -VWidth: 0 -Flags: W -HStem: -20 102<129 347> 0 102<1245 1270> 1331 102<649 979> -VStem: 383 266<112 1331> 979 266<102 1331> -LayerCount: 2 -Fore -SplineSet -1245 102 m 1,0,-1 - 1462 102 l 1,1,-1 - 1311 -254 l 1,2,-1 - 1217 -254 l 1,3,-1 - 1270 0 l 1,4,-1 - 979 0 l 1,5,-1 - 979 1331 l 1,6,-1 - 649 1331 l 1,7,-1 - 649 260 l 2,8,9 - 649 -20 649 -20 242 -20 c 0,10,11 - 112 -20 112 -20 35 72 c 1,12,-1 - 164 133 l 1,13,14 - 200 82 200 82 272 82 c 0,15,16 - 332 82 332 82 357.5 140.5 c 128,-1,17 - 383 199 383 199 383 328 c 2,18,-1 - 383 1434 l 1,19,-1 - 1245 1434 l 1,20,-1 - 1245 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C6 -Encoding: 1222 1222 800 -Width: 1339 -VWidth: 0 -Flags: W -HStem: -20 102<155 375> 0 102<1063 1087> 799 102<666 807> -VStem: 410 256<110 799> 807 256<102 799> -LayerCount: 2 -Fore -SplineSet -1063 102 m 1,0,-1 - 1280 102 l 1,1,-1 - 1128 -254 l 1,2,-1 - 1034 -254 l 1,3,-1 - 1087 0 l 1,4,-1 - 807 0 l 1,5,-1 - 807 799 l 1,6,-1 - 666 799 l 1,7,-1 - 666 260 l 2,8,9 - 666 191 666 191 644 140 c 128,-1,10 - 622 89 622 89 586.5 58.5 c 128,-1,11 - 551 28 551 28 497.5 10 c 128,-1,12 - 444 -8 444 -8 390.5 -14 c 128,-1,13 - 337 -20 337 -20 268 -20 c 0,14,15 - 138 -20 138 -20 61 72 c 1,16,-1 - 190 133 l 1,17,18 - 226 82 226 82 299 82 c 0,19,20 - 359 82 359 82 384.5 140.5 c 128,-1,21 - 410 199 410 199 410 328 c 2,22,-1 - 410 901 l 1,23,-1 - 1063 901 l 1,24,-1 - 1063 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C7 -Encoding: 1223 1223 801 -Width: 1351 -VWidth: 0 -Flags: W -HStem: -217 102<658 860> -59 41G<573 635> 0 43G<174 440> 717 102<440 915> 1393 41G<174 440 915 1182> -VStem: 174 266<0 717 819 1434> 915 266<39 717 819 1434> -LayerCount: 2 -Fore -SplineSet -1182 291 m 2,0,1 - 1182 173 1182 173 1154.5 81 c 128,-1,2 - 1127 -11 1127 -11 1084 -65.5 c 128,-1,3 - 1041 -120 1041 -120 982.5 -155.5 c 128,-1,4 - 924 -191 924 -191 868 -204 c 128,-1,5 - 812 -217 812 -217 752 -217 c 0,6,7 - 694 -217 694 -217 624 -191.5 c 128,-1,8 - 554 -166 554 -166 510 -125 c 1,9,-1 - 612 -18 l 1,10,11 - 678 -115 678 -115 782 -115 c 0,12,13 - 915 -115 915 -115 915 246 c 2,14,-1 - 915 717 l 1,15,-1 - 440 717 l 1,16,-1 - 440 0 l 1,17,-1 - 174 0 l 1,18,-1 - 174 1434 l 1,19,-1 - 440 1434 l 1,20,-1 - 440 819 l 1,21,-1 - 915 819 l 1,22,-1 - 915 1434 l 1,23,-1 - 1182 1434 l 1,24,-1 - 1182 291 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C8 -Encoding: 1224 1224 802 -Width: 1054 -VWidth: 0 -Flags: W -HStem: -236 102<473 648> 0 43G<123 379> 440 102<379 678> 860 41G<123 379 678 934> -VStem: 123 256<0 440 543 901> 678 256<-30 440 543 901> -LayerCount: 2 -Fore -SplineSet -934 160 m 2,0,1 - 934 -16 934 -16 823.5 -126 c 128,-1,2 - 713 -236 713 -236 555 -236 c 0,3,4 - 486 -236 486 -236 425.5 -211.5 c 128,-1,5 - 365 -187 365 -187 334 -143 c 1,6,-1 - 436 -37 l 1,7,8 - 466 -92 466 -92 498.5 -112.5 c 128,-1,9 - 531 -133 531 -133 586 -133 c 0,10,11 - 615 -133 615 -133 634 -112.5 c 128,-1,12 - 653 -92 653 -92 662 -51.5 c 128,-1,13 - 671 -11 671 -11 674.5 32 c 128,-1,14 - 678 75 678 75 678 135 c 2,15,-1 - 678 440 l 1,16,-1 - 379 440 l 1,17,-1 - 379 0 l 1,18,-1 - 123 0 l 1,19,-1 - 123 901 l 1,20,-1 - 379 901 l 1,21,-1 - 379 543 l 1,22,-1 - 678 543 l 1,23,-1 - 678 901 l 1,24,-1 - 934 901 l 1,25,-1 - 934 160 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C9 -Encoding: 1225 1225 803 -Width: 1454 -VWidth: 0 -Flags: W -HStem: 0 102<1182 1206> 717 102<440 915> 1393 41G<174 440 915 1182> -VStem: 174 266<0 717 819 1434> 915 266<102 717 819 1434> -LayerCount: 2 -Fore -SplineSet -1182 102 m 1,0,-1 - 1399 102 l 1,1,-1 - 1247 -254 l 1,2,-1 - 1153 -254 l 1,3,-1 - 1206 0 l 1,4,-1 - 915 0 l 1,5,-1 - 915 717 l 1,6,-1 - 440 717 l 1,7,-1 - 440 0 l 1,8,-1 - 174 0 l 1,9,-1 - 174 1434 l 1,10,-1 - 440 1434 l 1,11,-1 - 440 819 l 1,12,-1 - 915 819 l 1,13,-1 - 915 1434 l 1,14,-1 - 1182 1434 l 1,15,-1 - 1182 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CA -Encoding: 1226 1226 804 -Width: 1212 -VWidth: 0 -Flags: W -HStem: 0 102<934 965> 440 102<379 678> 860 41G<123 379 678 934> -VStem: 123 256<0 440 543 901> 678 256<102 440 543 901> -LayerCount: 2 -Fore -SplineSet -934 102 m 1,0,-1 - 1157 102 l 1,1,-1 - 1006 -254 l 1,2,-1 - 911 -254 l 1,3,-1 - 965 0 l 1,4,-1 - 678 0 l 1,5,-1 - 678 440 l 1,6,-1 - 379 440 l 1,7,-1 - 379 0 l 1,8,-1 - 123 0 l 1,9,-1 - 123 901 l 1,10,-1 - 379 901 l 1,11,-1 - 379 543 l 1,12,-1 - 678 543 l 1,13,-1 - 678 901 l 1,14,-1 - 934 901 l 1,15,-1 - 934 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CB -Encoding: 1227 1227 805 -Width: 1206 -VWidth: 0 -Flags: W -HStem: 0 102<711 770> 522 102<481 725> 1393 41G<123 389 770 1036> -VStem: 123 266<791 1434> 569 98<-315 -38> 770 266<102 573 670 1434> -LayerCount: 2 -Fore -SplineSet -1036 1434 m 1,0,-1 - 1036 0 l 1,1,-1 - 733 0 l 1,2,3 - 730 -3 730 -3 726 -10 c 128,-1,4 - 722 -17 722 -17 710.5 -44 c 128,-1,5 - 699 -71 699 -71 690.5 -103.5 c 128,-1,6 - 682 -136 682 -136 675 -193 c 128,-1,7 - 668 -250 668 -250 668 -315 c 1,8,-1 - 569 -315 l 1,9,-1 - 569 102 l 1,10,-1 - 770 102 l 1,11,-1 - 770 573 l 1,12,13 - 700 522 700 522 571 522 c 0,14,15 - 350 522 350 522 236.5 658 c 128,-1,16 - 123 794 123 794 123 1085 c 2,17,-1 - 123 1434 l 1,18,-1 - 389 1434 l 1,19,-1 - 389 1110 l 2,20,21 - 389 983 389 983 400.5 892 c 128,-1,22 - 412 801 412 801 430 750 c 128,-1,23 - 448 699 448 699 478 670 c 128,-1,24 - 508 641 508 641 535.5 633 c 128,-1,25 - 563 625 563 625 602 625 c 0,26,27 - 710 625 710 625 770 721 c 1,28,-1 - 770 1434 l 1,29,-1 - 1036 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CC -Encoding: 1228 1228 806 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<506 565> 313 102<369 555> 860 41G<82 338 565 821> -VStem: 82 256<488 901> 365 98<-315 -38> 565 256<102 348 426 901> -LayerCount: 2 -Fore -SplineSet -821 901 m 1,0,-1 - 821 0 l 1,1,-1 - 528 0 l 1,2,3 - 525 -3 525 -3 521 -10 c 128,-1,4 - 517 -17 517 -17 505.5 -44 c 128,-1,5 - 494 -71 494 -71 485.5 -103.5 c 128,-1,6 - 477 -136 477 -136 470 -193 c 128,-1,7 - 463 -250 463 -250 463 -315 c 1,8,-1 - 365 -315 l 1,9,-1 - 365 102 l 1,10,-1 - 565 102 l 1,11,-1 - 565 348 l 1,12,13 - 530 313 530 313 438 313 c 0,14,15 - 371 313 371 313 320 324 c 128,-1,16 - 269 335 269 335 230.5 355.5 c 128,-1,17 - 192 376 192 376 166 413 c 128,-1,18 - 140 450 140 450 123.5 493 c 128,-1,19 - 107 536 107 536 98 601.5 c 128,-1,20 - 89 667 89 667 85.5 735.5 c 128,-1,21 - 82 804 82 804 82 901 c 1,22,-1 - 338 901 l 1,23,24 - 338 579 338 579 355 500 c 0,25,26 - 369 436 369 436 408 423 c 0,27,28 - 427 416 427 416 469 416 c 0,29,30 - 565 416 565 416 565 512 c 2,31,-1 - 565 901 l 1,32,-1 - 821 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CD -Encoding: 1229 1229 807 -Width: 1732 -VWidth: 0 -Flags: W -HStem: 0 102<1456 1481> 1393 41G<174 459 1171 1456> -VStem: 174 266<0 1047> 1190 266<102 1047> -LayerCount: 2 -Fore -SplineSet -1456 102 m 1,0,-1 - 1673 102 l 1,1,-1 - 1522 -254 l 1,2,-1 - 1427 -254 l 1,3,-1 - 1481 0 l 1,4,-1 - 1190 0 l 1,5,-1 - 1190 1047 l 1,6,-1 - 815 248 l 1,7,-1 - 440 1047 l 1,8,-1 - 440 0 l 1,9,-1 - 174 0 l 1,10,-1 - 174 1434 l 1,11,-1 - 440 1434 l 1,12,-1 - 815 631 l 1,13,-1 - 1190 1434 l 1,14,-1 - 1456 1434 l 1,15,-1 - 1456 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CE -Encoding: 1230 1230 808 -Width: 1523 -VWidth: 0 -Flags: W -HStem: 0 102<1241 1272> 860 41G<123 400 964 1241> -VStem: 123 256<0 543> 985 256<102 543> -LayerCount: 2 -Fore -SplineSet -1241 102 m 1,0,-1 - 1464 102 l 1,1,-1 - 1313 -254 l 1,2,-1 - 1219 -254 l 1,3,-1 - 1272 0 l 1,4,-1 - 985 0 l 1,5,-1 - 985 543 l 1,6,-1 - 707 0 l 1,7,-1 - 657 0 l 1,8,-1 - 379 543 l 1,9,-1 - 379 0 l 1,10,-1 - 123 0 l 1,11,-1 - 123 901 l 1,12,-1 - 379 901 l 1,13,-1 - 682 311 l 1,14,-1 - 985 901 l 1,15,-1 - 1241 901 l 1,16,-1 - 1241 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CF -Encoding: 1231 1231 809 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> -VStem: 123 256<0 901> -LayerCount: 2 -Fore -Refer: 112 305 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D0 -Encoding: 1232 1232 810 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1516 123<492 810> -VStem: 414 76<1645 1724> 813 76<1645 1724> -LayerCount: 2 -Fore -Refer: 1076 57420 N 1 0 0 1 1239 246 2 -Refer: 27 65 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D1 -Encoding: 1233 1233 811 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1085 123<330 649> -VStem: 94 256<132 467> 252 76<1215 1293> 602 256<87 518 616 771> 651 76<1215 1293> -LayerCount: 2 -Fore -Refer: 1076 57420 S 1 0 0 1 1077 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D2 -Encoding: 1234 1234 812 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> 1516 170<381 551 750 920> -VStem: 381 170<1516 1686> 750 170<1516 1686> -LayerCount: 2 -Fore -Refer: 142 196 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D3 -Encoding: 1235 1235 813 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 1085 170<219 389 588 758> -VStem: 94 256<132 467> 219 170<1085 1255> 588 170<1085 1255> 602 256<87 518 616 771> -LayerCount: 2 -Fore -Refer: 132 228 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D4 -Encoding: 1236 1236 814 -Width: 1813 -VWidth: 0 -Flags: W -HStem: 0 102<1136 1730> 410 102<716 869> 799 102<1136 1512> 1331 102<1136 1697> -VStem: 869 266<102 410 512 799 901 934> -LayerCount: 2 -Fore -Refer: 168 198 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D5 -Encoding: 1237 1237 815 -Width: 1632 -VWidth: 0 -Flags: W -HStem: -20 102<401 600 950 1217> 451 102<862 1196> 520 102<400 596> 819 102<338 556 938 1141> -VStem: 94 256<132 467> 602 256<188 451> -LayerCount: 2 -Fore -Refer: 169 230 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D6 -Encoding: 1238 1238 816 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> 1516 123<399 776> -VStem: 174 266<102 799 901 1331> 319 76<1645 1724> 780 76<1645 1724> -LayerCount: 2 -Fore -Refer: 1076 57420 N 1 0 0 1 1176 246 2 -Refer: 32 69 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D7 -Encoding: 1239 1239 817 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1085 123<330 706> -VStem: 90 256<235 451 553 656> 250 76<1215 1293> 711 76<1215 1293> -LayerCount: 2 -Fore -Refer: 1076 57420 N 1 0 0 1 1106 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D8 -Encoding: 1240 1240 818 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<560 852> 614 102<352 1094> 1352 102<564 896> -VStem: 1094 270<440 614 717 1012> -LayerCount: 2 -Fore -Refer: 652 399 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10846 -Encoding: 1241 1241 819 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<403 607> 348 102<348 682> 819 102<327 591> -VStem: 682 260<245 348 451 666> -LayerCount: 2 -Fore -Refer: 598 477 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04DA -Encoding: 1242 1242 820 -Width: 1445 -VWidth: 0 -Flags: W -HStem: -20 102<560 852> 614 102<352 1094> 1352 102<564 896> 1516 170<436 606 805 975> -VStem: 436 170<1516 1686> 805 170<1516 1686> 1094 270<440 614 717 1012> -LayerCount: 2 -Fore -Refer: 652 399 N 1 0 0 1 0 0 2 -Refer: 99 776 S 1 0 0 1 1294 246 2 -Validated: 1 -EndChar - -StartChar: uni04DB -Encoding: 1243 1243 821 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<403 607> 348 102<348 682> 819 102<327 591> 1085 170<211 381 580 750> -VStem: 211 170<1085 1255> 580 170<1085 1255> 682 260<245 348 451 666> -LayerCount: 2 -Fore -Refer: 598 477 N 1 0 0 1 0 0 2 -Refer: 99 776 S 1 0 0 1 1069 -184 2 -Validated: 1 -EndChar - -StartChar: uni04DC -Encoding: 1244 1244 822 -Width: 1560 -VWidth: 0 -Flags: W -HStem: 0 43<86 352 676 940 1264 1530> 1331 102<106 178 1438 1509> 1516 170<539 709 907 1077> -VStem: 539 170<1516 1686> 676 264<0 635 825 1434> 907 170<1516 1686> -LayerCount: 2 -Fore -Refer: 402 1046 N 1 0 0 1 0 0 3 -Refer: 99 776 S 1 0 0 1 1397 246 2 -Validated: 1 -EndChar - -StartChar: uni04DD -Encoding: 1245 1245 823 -Width: 1288 -VWidth: 0 -Flags: W -HStem: 0 43<70 295 516 772 993 1219> 799 102<70 154 1134 1219> 1085 170<375 545 743 913> -VStem: 70 225<0 112> 375 170<1085 1255> 516 256<0 371 522 901> 743 170<1085 1255> 993 225<0 112> -LayerCount: 2 -Fore -Refer: 434 1078 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1233 -184 2 -Validated: 1 -EndChar - -StartChar: uni04DE -Encoding: 1246 1246 824 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -20 102<356 594> 799 102<373 549> 1352 102<359 598> 1516 170<244 414 612 782> -VStem: 244 170<1516 1686> 612 170<1516 1686> 659 266<1001 1283> 721 266<268 622> -LayerCount: 2 -Fore -Refer: 403 1047 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1102 246 2 -Validated: 1 -EndChar - -StartChar: uni04DF -Encoding: 1247 1247 825 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<298 522> 451 102<295 471> 819 102<300 489> 1085 170<158 328 526 696> -VStem: 158 170<1085 1255> 506 256<586 812> 526 170<1085 1255> 555 256<108 400> -LayerCount: 2 -Fore -Refer: 435 1079 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1016 -184 2 -Validated: 1 -EndChar - -StartChar: uni04E0 -Encoding: 1248 1248 826 -Width: 1173 -VWidth: 0 -Flags: W -HStem: -20 102<378 674> 782 102<719 758> 1331 102<209 709> -VStem: 61 209<197 327> 813 266<241 634> -LayerCount: 2 -Fore -Refer: 625 439 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E1 -Encoding: 1249 1249 827 -Width: 1042 -VWidth: 0 -Flags: W -HStem: -410 102<295 603> 270 102<610 664> 799 102<141 600> -VStem: 705 256<-201 170> -LayerCount: 2 -Fore -Refer: 626 658 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E2 -Encoding: 1250 1250 828 -Width: 1509 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 1073 1339> 1393 41<174 440 1073 1339> 1556 115<520 991> -VStem: 174 266<0 92 401 1434> 520 471<1556 1671> 1073 266<0 1030 1341 1434> -LayerCount: 2 -Fore -Refer: 404 1048 N 1 0 0 1 0 0 2 -Refer: 96 772 N 1 0 0 1 1354 287 2 -Validated: 1 -EndChar - -StartChar: uni04E3 -Encoding: 1251 1251 829 -Width: 1146 -VWidth: 0 -Flags: W -HStem: 0 43<123 379 770 1026> 860 41<123 379 770 1026> 1126 115<334 805> -VStem: 123 256<0 61 291 901> 334 471<1126 1241> 770 256<0 604 836 901> -LayerCount: 2 -Fore -Refer: 436 1080 N 1 0 0 1 0 0 2 -Refer: 96 772 S 1 0 0 1 1167 -143 2 -Validated: 1 -EndChar - -StartChar: uni04E4 -Encoding: 1252 1252 830 -Width: 1509 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 1073 1339> 1393 41<174 440 1073 1339> 1516 170<487 657 856 1026> -VStem: 174 266<0 92 401 1434> 487 170<1516 1686> 856 170<1516 1686> 1073 266<0 1030 1341 1434> -LayerCount: 2 -Fore -Refer: 404 1048 N 1 0 0 1 0 0 2 -Refer: 99 776 N 1 0 0 1 1346 246 2 -Validated: 1 -EndChar - -StartChar: uni04E5 -Encoding: 1253 1253 831 -Width: 1146 -VWidth: 0 -Flags: W -HStem: 0 43<123 379 770 1026> 860 41<123 379 770 1026> 1085 170<303 473 672 842> -VStem: 123 256<0 61 291 901> 303 170<1085 1255> 672 170<1085 1255> 770 256<0 604 836 901> -LayerCount: 2 -Fore -Refer: 436 1080 N 1 0 0 1 0 0 2 -Refer: 99 776 S 1 0 0 1 1161 -184 2 -Validated: 1 -EndChar - -StartChar: uni04E6 -Encoding: 1254 1254 832 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> 1516 170<436 606 805 975> -VStem: 102 266<424 1012> 436 170<1516 1686> 805 170<1516 1686> 1071 266<414 1009> -LayerCount: 2 -Fore -Refer: 157 214 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E7 -Encoding: 1255 1255 833 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1085 170<264 434 633 803> -VStem: 90 256<214 657> 264 170<1085 1255> 633 170<1085 1255> 715 256<223 678> -LayerCount: 2 -Fore -Refer: 136 246 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E8 -Encoding: 1256 1256 834 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<585 859> 666 102<369 1071> 1352 102<568 857> -VStem: 102 266<428 666 768 1012> 1071 266<421 666 768 1012> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -Refer: 637 415 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E9 -Encoding: 1257 1257 835 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<427 645> 399 102<346 715> 819 102<427 643> -VStem: 90 256<214 399 502 656> 715 256<222 399 502 679> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -Refer: 644 629 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04EA -Encoding: 1258 1258 836 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<585 859> 666 102<369 1071> 1352 102<568 857> 1516 170<436 606 805 975> -VStem: 102 266<428 666 768 1012> 436 170<1516 1686> 805 170<1516 1686> 1071 266<421 666 768 1012> -LayerCount: 2 -Fore -Refer: 99 776 S 1 0 0 1 1294 246 2 -Refer: 637 415 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04EB -Encoding: 1259 1259 837 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<427 645> 399 102<346 715> 819 102<427 643> 1085 170<262 432 631 801> -VStem: 90 256<214 399 502 656> 262 170<1085 1255> 631 170<1085 1255> 715 256<222 399 502 679> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1120 -184 2 -Refer: 644 629 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04EC -Encoding: 1260 1260 838 -Width: 1347 -VWidth: 0 -Flags: W -HStem: -20 102<422 738> 713 102<569 981> 1352 102<461 787> 1516 170<354 524 723 893> -VStem: 354 170<1516 1686> 723 170<1516 1686> 983 266<425 713 815 1026> -LayerCount: 2 -Fore -Refer: 425 1069 N 1 0 0 1 0 0 2 -Refer: 99 776 N 1 0 0 1 1212 246 2 -Validated: 1 -EndChar - -StartChar: uni04ED -Encoding: 1261 1261 839 -Width: 989 -VWidth: 0 -Flags: W -HStem: -20 102<295 543> 430 102<358 643> 819 102<320 552> 1085 170<209 379 578 748> -VStem: 209 170<1085 1255> 578 170<1085 1255> 647 256<224 430 532 666> -LayerCount: 2 -Fore -Refer: 457 1101 N 1 0 0 1 0 0 2 -Refer: 99 776 S 1 0 0 1 1067 -184 2 -Validated: 1 -EndChar - -StartChar: uni04EE -Encoding: 1262 1262 840 -Width: 1224 -VWidth: 0 -Flags: W -HStem: -20 102<314 462> 1393 41<82 318 946 1206> 1556 115<391 862> -VStem: 391 471<1556 1671> -LayerCount: 2 -Fore -Refer: 415 1059 N 1 0 0 1 0 0 2 -Refer: 96 772 S 1 0 0 1 1225 287 2 -Validated: 1 -EndChar - -StartChar: uni04EF -Encoding: 1263 1263 841 -Width: 923 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 860 41<88 324 729 907> 1126 115<283 754> -VStem: 283 471<1126 1241> -LayerCount: 2 -Fore -Refer: 447 1091 N 1 0 0 1 0 0 2 -Refer: 96 772 S 1 0 0 1 1116 -143 2 -Validated: 1 -EndChar - -StartChar: uni04F0 -Encoding: 1264 1264 842 -Width: 1224 -VWidth: 0 -Flags: W -HStem: -20 102<314 462> 1393 41<82 318 946 1206> 1516 170<365 535 733 903> -VStem: 365 170<1516 1686> 733 170<1516 1686> -LayerCount: 2 -Fore -Refer: 415 1059 N 1 0 0 1 0 0 2 -Refer: 99 776 S 1 0 0 1 1223 246 2 -Validated: 1 -EndChar - -StartChar: uni04F1 -Encoding: 1265 1265 843 -Width: 923 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 860 41<88 324 729 907> 1085 170<233 403 602 772> -VStem: 233 170<1085 1255> 602 170<1085 1255> -LayerCount: 2 -Fore -Refer: 361 255 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F2 -Encoding: 1266 1266 844 -Width: 1224 -VWidth: 0 -Flags: W -HStem: -20 102<314 462> 1393 41<82 318 946 1206> 1495 403 -VStem: 416 371 694 371 -LayerCount: 2 -Fore -Refer: 415 1059 N 1 0 0 1 0 0 2 -Refer: 101 779 N 1 0 0 1 1243 246 2 -Validated: 1 -EndChar - -StartChar: uni04F3 -Encoding: 1267 1267 845 -Width: 923 -VWidth: 0 -Flags: W -HStem: -348 102<211 326> 860 41<88 324 729 907> 1065 403 -VStem: 258 371 537 371 -LayerCount: 2 -Fore -Refer: 447 1091 N 1 0 0 1 0 0 2 -Refer: 101 779 N 1 0 0 1 1085 -184 2 -Validated: 1 -EndChar - -StartChar: uni04F4 -Encoding: 1268 1268 846 -Width: 1206 -VWidth: 0 -Flags: W -HStem: 0 43<770 1036> 522 102<481 725> 1393 41<123 389 770 1036> 1516 170<315 485 684 854> -VStem: 123 266<791 1434> 315 170<1516 1686> 684 170<1516 1686> 770 266<0 573 670 1434> -LayerCount: 2 -Fore -Refer: 419 1063 N 1 0 0 1 0 0 2 -Refer: 99 776 N 1 0 0 1 1174 246 2 -Validated: 1 -EndChar - -StartChar: uni04F5 -Encoding: 1269 1269 847 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 43<565 821> 313 102<369 555> 860 41<82 338 565 821> 1085 170<182 352 551 721> -VStem: 82 256<488 901> 182 170<1085 1255> 551 170<1085 1255> 565 256<0 348 426 901> -LayerCount: 2 -Fore -Refer: 451 1095 N 1 0 0 1 0 0 2 -Refer: 99 776 N 1 0 0 1 1040 -184 2 -Validated: 1 -EndChar - -StartChar: uni04F8 -Encoding: 1272 1272 848 -Width: 1591 -VWidth: 0 -Flags: W -HStem: 0 43<1155 1421> 0 102<440 642> 799 102<440 643> 1393 41<174 440 1155 1421> 1516 170<539 709 907 1077> -VStem: 174 266<102 799 901 1434> 539 170<1516 1686> 772 266<260 638> 907 170<1516 1686> 1155 266<0 1434> -LayerCount: 2 -Fore -Refer: 423 1067 N 1 0 0 1 0 0 2 -Refer: 99 776 S 1 0 0 1 1397 246 2 -Validated: 1 -EndChar - -StartChar: uni04F9 -Encoding: 1273 1273 849 -Width: 1359 -VWidth: 0 -Flags: W -HStem: 0 43<983 1239> 0 102<420 590> 440 102<420 589> 860 41<164 420 983 1239> 1085 170<430 600 799 969> -VStem: 164 256<102 440 543 901> 430 170<1085 1255> 645 256<151 385> 799 170<1085 1255> 983 256<0 901> -LayerCount: 2 -Fore -Refer: 455 1099 N 1 0 0 1 0 0 2 -Refer: 99 776 N 1 0 0 1 1288 -184 2 -Validated: 1 -EndChar - -StartChar: uni04F6 -Encoding: 1270 1270 850 -Width: 1038 -VWidth: 0 -Flags: W -HStem: 0 102<440 499> 1331 102<440 1001> -VStem: 174 266<102 1331> 543 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -440 102 m 1,0,-1 - 641 102 l 1,1,-1 - 641 -315 l 1,2,-1 - 543 -315 l 1,3,4 - 543 -250 543 -250 536 -193.5 c 128,-1,5 - 529 -137 529 -137 519.5 -103 c 128,-1,6 - 510 -69 510 -69 500.5 -44.5 c 128,-1,7 - 491 -20 491 -20 484 -10 c 2,8,-1 - 477 0 l 1,9,-1 - 174 0 l 1,10,-1 - 174 1434 l 1,11,-1 - 1001 1434 l 1,12,-1 - 1001 1331 l 1,13,-1 - 440 1331 l 1,14,-1 - 440 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04F7 -Encoding: 1271 1271 851 -Width: 768 -VWidth: 0 -Flags: W -HStem: 0 102<379 440> 799 102<379 715> -VStem: 123 256<102 799> 483 98<-315 -38> -LayerCount: 2 -Fore -SplineSet -379 102 m 1,0,-1 - 582 102 l 1,1,-1 - 582 -315 l 1,2,-1 - 483 -315 l 1,3,4 - 483 -211 483 -211 466.5 -132.5 c 128,-1,5 - 450 -54 450 -54 434 -27 c 2,6,-1 - 418 0 l 1,7,-1 - 123 0 l 1,8,-1 - 123 901 l 1,9,-1 - 715 901 l 1,10,-1 - 715 799 l 1,11,-1 - 379 799 l 1,12,-1 - 379 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FA -Encoding: 1274 1274 852 -Width: 1136 -VWidth: 0 -Flags: W -HStem: -348 102<284 505> 799 102<82 272 539 748> 1331 102<539 1100> -VStem: 272 266<102 799 901 1331> 539 164<-216 0> -LayerCount: 2 -Fore -SplineSet -82 799 m 1,0,-1 - 82 901 l 1,1,-1 - 272 901 l 1,2,-1 - 272 1434 l 1,3,-1 - 1100 1434 l 1,4,-1 - 1100 1331 l 1,5,-1 - 539 1331 l 1,6,-1 - 539 901 l 1,7,-1 - 748 901 l 1,8,-1 - 748 799 l 1,9,-1 - 539 799 l 1,10,-1 - 539 102 l 1,11,-1 - 702 102 l 1,12,-1 - 702 -68 l 2,13,14 - 702 -141 702 -141 675 -197 c 128,-1,15 - 648 -253 648 -253 603 -284.5 c 128,-1,16 - 558 -316 558 -316 505.5 -332 c 128,-1,17 - 453 -348 453 -348 397 -348 c 0,18,19 - 267 -348 267 -348 190 -256 c 1,20,-1 - 319 -195 l 1,21,22 - 355 -246 355 -246 428 -246 c 0,23,24 - 488 -246 488 -246 513.5 -187.5 c 128,-1,25 - 539 -129 539 -129 539 0 c 1,26,-1 - 272 0 l 1,27,-1 - 272 799 l 1,28,-1 - 82 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FB -Encoding: 1275 1275 853 -Width: 892 -VWidth: 0 -Flags: W -HStem: -348 102<249 470> 479 102<51 248 504 717> 799 102<504 840> -VStem: 248 256<102 479 582 799> 504 164<-216 0> -LayerCount: 2 -Fore -SplineSet -51 479 m 1,0,-1 - 51 582 l 1,1,-1 - 248 582 l 1,2,-1 - 248 901 l 1,3,-1 - 840 901 l 1,4,-1 - 840 799 l 1,5,-1 - 504 799 l 1,6,-1 - 504 582 l 1,7,-1 - 717 582 l 1,8,-1 - 717 479 l 1,9,-1 - 504 479 l 1,10,-1 - 504 102 l 1,11,-1 - 668 102 l 1,12,-1 - 668 -68 l 2,13,14 - 668 -127 668 -127 650 -175 c 128,-1,15 - 632 -223 632 -223 602 -254.5 c 128,-1,16 - 572 -286 572 -286 531.5 -307.5 c 128,-1,17 - 491 -329 491 -329 448.5 -338.5 c 128,-1,18 - 406 -348 406 -348 362 -348 c 0,19,20 - 233 -348 233 -348 156 -256 c 1,21,-1 - 285 -195 l 1,22,23 - 321 -246 321 -246 393 -246 c 0,24,25 - 453 -246 453 -246 478.5 -187.5 c 128,-1,26 - 504 -129 504 -129 504 0 c 1,27,-1 - 248 0 l 1,28,-1 - 248 479 l 1,29,-1 - 51 479 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FC -Encoding: 1276 1276 854 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -217 102<537 742> -59 41G<452 514> 0 43G<86 289> 1393 41G<90 369 794 999> -VStem: 760 240<-91 196> -LayerCount: 2 -Fore -SplineSet -999 41 m 0,0,1 - 999 -42 999 -42 944.5 -102 c 128,-1,2 - 890 -162 890 -162 808.5 -189.5 c 128,-1,3 - 727 -217 727 -217 631 -217 c 0,4,5 - 573 -217 573 -217 503 -191.5 c 128,-1,6 - 433 -166 433 -166 389 -125 c 1,7,-1 - 492 -18 l 1,8,9 - 558 -115 558 -115 662 -115 c 0,10,11 - 719 -115 719 -115 739.5 -79.5 c 128,-1,12 - 760 -44 760 -44 760 29 c 0,13,14 - 760 96 760 96 728.5 171.5 c 128,-1,15 - 697 247 697 247 545 543 c 1,16,-1 - 268 0 l 1,17,-1 - 86 0 l 1,18,-1 - 453 721 l 1,19,-1 - 90 1434 l 1,20,-1 - 348 1434 l 1,21,-1 - 582 975 l 1,22,-1 - 815 1434 l 1,23,-1 - 999 1434 l 1,24,-1 - 674 795 l 1,25,26 - 886 381 886 381 942.5 251.5 c 128,-1,27 - 999 122 999 122 999 41 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FD -Encoding: 1277 1277 855 -Width: 849 -VWidth: 0 -Flags: W -HStem: -258 102<348 540> 0 43G<8 213> 860 41G<14 289 569 772> -VStem: 563 227<-137 120> -LayerCount: 2 -Fore -SplineSet -791 0 m 0,0,1 - 791 -131 791 -131 692.5 -194.5 c 128,-1,2 - 594 -258 594 -258 430 -258 c 0,3,4 - 361 -258 361 -258 300.5 -234 c 128,-1,5 - 240 -210 240 -210 209 -166 c 1,6,-1 - 311 -59 l 1,7,8 - 342 -114 342 -114 374.5 -135 c 128,-1,9 - 407 -156 407 -156 461 -156 c 0,10,11 - 511 -156 511 -156 537 -117 c 128,-1,12 - 563 -78 563 -78 563 23 c 0,13,14 - 563 46 563 46 534.5 95 c 128,-1,15 - 506 144 506 144 393 317 c 1,16,-1 - 186 0 l 1,17,-1 - 8 0 l 1,18,-1 - 305 455 l 1,19,-1 - 14 901 l 1,20,-1 - 262 901 l 1,21,-1 - 430 645 l 1,22,-1 - 596 901 l 1,23,-1 - 772 901 l 1,24,-1 - 518 510 l 1,25,26 - 707 219 707 219 749 142.5 c 128,-1,27 - 791 66 791 66 791 0 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FE -Encoding: 1278 1278 856 -Width: 1191 -VWidth: 0 -Flags: W -HStem: 0 43G<86 289 800 1079> 696 115<205 408 723 909> 1393 41G<90 369 794 999> -LayerCount: 2 -Fore -SplineSet -440 696 m 1,0,-1 - 205 696 l 1,1,-1 - 205 811 l 1,2,-1 - 408 811 l 1,3,-1 - 90 1434 l 1,4,-1 - 348 1434 l 1,5,-1 - 582 975 l 1,6,-1 - 815 1434 l 1,7,-1 - 999 1434 l 1,8,-1 - 682 811 l 1,9,-1 - 909 811 l 1,10,-1 - 909 696 l 1,11,-1 - 723 696 l 1,12,-1 - 1079 0 l 1,13,-1 - 821 0 l 1,14,-1 - 545 543 l 1,15,-1 - 268 0 l 1,16,-1 - 86 0 l 1,17,-1 - 440 696 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FF -Encoding: 1279 1279 857 -Width: 833 -VWidth: 0 -Flags: W -HStem: 0 43G<8 213 573 850> 422 115<57 252 575 762> 860 41G<14 289 569 772> -LayerCount: 2 -Fore -SplineSet -285 422 m 1,0,-1 - 57 422 l 1,1,-1 - 57 537 l 1,2,-1 - 252 537 l 1,3,-1 - 14 901 l 1,4,-1 - 262 901 l 1,5,-1 - 430 645 l 1,6,-1 - 596 901 l 1,7,-1 - 772 901 l 1,8,-1 - 535 537 l 1,9,-1 - 762 537 l 1,10,-1 - 762 422 l 1,11,-1 - 575 422 l 1,12,-1 - 850 0 l 1,13,-1 - 600 0 l 1,14,-1 - 393 317 l 1,15,-1 - 186 0 l 1,16,-1 - 8 0 l 1,17,-1 - 285 422 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0510 -Encoding: 1296 1296 858 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -20 102<475 713> 799 102<520 696> 1352 102<471 710> -VStem: 82 266<268 622> 143 266<1001 1283> -LayerCount: 2 -Fore -Refer: 613 400 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0511 -Encoding: 1297 1297 859 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<350 574> 451 102<401 578> 819 102<383 573> -VStem: 61 256<108 400> 111 256<586 812> -LayerCount: 2 -Fore -Refer: 614 603 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0512 -Encoding: 1298 1298 860 -Width: 1413 -VWidth: 0 -Flags: W -HStem: -348 102<755 959> -20 102<129 347> 1331 102<649 979> -VStem: 383 266<112 1331> 979 266<-203 1331> -LayerCount: 2 -Fore -SplineSet -979 1331 m 1,0,-1 - 649 1331 l 1,1,-1 - 649 260 l 2,2,3 - 649 -20 649 -20 242 -20 c 0,4,5 - 112 -20 112 -20 35 72 c 1,6,-1 - 164 133 l 1,7,8 - 200 82 200 82 272 82 c 0,9,10 - 332 82 332 82 357.5 140.5 c 128,-1,11 - 383 199 383 199 383 328 c 2,12,-1 - 383 1434 l 1,13,-1 - 1245 1434 l 1,14,-1 - 1245 -68 l 6,15,16 - 1245 -140 1245 -140 1207 -196.5 c 132,-1,17 - 1169 -253 1169 -253 1109.5 -284.5 c 132,-1,18 - 1050 -316 1050 -316 988 -332 c 132,-1,19 - 926 -348 926 -348 868 -348 c 4,20,21 - 739 -348 739 -348 662 -256 c 5,22,-1 - 791 -195 l 5,23,24 - 827 -246 827 -246 899 -246 c 4,25,26 - 926 -246 926 -246 942.5 -232.5 c 132,-1,27 - 959 -219 959 -219 967 -184.5 c 132,-1,28 - 975 -150 975 -150 977 -111 c 132,-1,29 - 979 -72 979 -72 979 0 c 6,30,-1 - 979 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0513 -Encoding: 1299 1299 861 -Width: 1183 -VWidth: 0 -Flags: W -HStem: -348 102<583 786> -20 102<155 375> 799 102<666 807> -VStem: 410 256<110 799> 807 256<-204 799> -LayerCount: 2 -Fore -SplineSet -1063 -68 m 6,0,1 - 1063 -140 1063 -140 1026.5 -196.5 c 132,-1,2 - 990 -253 990 -253 932.5 -284.5 c 132,-1,3 - 875 -316 875 -316 814.5 -332 c 132,-1,4 - 754 -348 754 -348 696 -348 c 4,5,6 - 566 -348 566 -348 489 -256 c 5,7,-1 - 618 -195 l 5,8,9 - 654 -246 654 -246 727 -246 c 4,10,11 - 754 -246 754 -246 770.5 -232.5 c 132,-1,12 - 787 -219 787 -219 795 -184.5 c 132,-1,13 - 803 -150 803 -150 805 -111 c 132,-1,14 - 807 -72 807 -72 807 0 c 6,15,-1 - 807 799 l 1,16,-1 - 666 799 l 1,17,-1 - 666 260 l 2,18,19 - 666 191 666 191 644 140 c 128,-1,20 - 622 89 622 89 586.5 58.5 c 128,-1,21 - 551 28 551 28 497.5 10 c 128,-1,22 - 444 -8 444 -8 390.5 -14 c 128,-1,23 - 337 -20 337 -20 268 -20 c 0,24,25 - 138 -20 138 -20 61 72 c 1,26,-1 - 190 133 l 1,27,28 - 226 82 226 82 299 82 c 0,29,30 - 359 82 359 82 384.5 140.5 c 128,-1,31 - 410 199 410 199 410 328 c 2,32,-1 - 410 901 l 1,33,-1 - 1063 901 l 1,34,-1 - 1063 -68 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni051A -Encoding: 1306 1306 862 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -348 102<997 1155> -348 430<717 1155> 1352 102<540 867> -VStem: 102 266<429 1012> 1071 266<409 1009> -LayerCount: 2 -Fore -Refer: 43 81 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051B -Encoding: 1307 1307 863 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -20 102<419 623> 819 102<418 650> -VStem: 90 256<216 685> 688 256<-410 4 152 754> -LayerCount: 2 -Fore -Refer: 17 113 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051C -Encoding: 1308 1308 864 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43<486 693 1087 1293> 860 41<775 1004> 1393 41<35 292 1488 1745> -LayerCount: 2 -Fore -Refer: 50 87 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051D -Encoding: 1309 1309 865 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43<341 535 939 1133> 860 41<29 265 669 863 1267 1446> -LayerCount: 2 -Fore -Refer: 22 119 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051E -Encoding: 1310 1310 866 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 119<1103 1192> 909 43G<945 1028> 1393 41G<174 440 899 1208> -VStem: 174 266<0 571 877 1434> -LayerCount: 2 -Fore -SplineSet -440 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 440 1434 l 1,3,-1 - 440 877 l 1,4,-1 - 694 1161 l 1,5,-1 - 543 1288 l 1,6,-1 - 616 1376 l 1,7,-1 - 770 1247 l 1,8,-1 - 936 1434 l 1,9,-1 - 1208 1434 l 1,10,-1 - 926 1116 l 1,11,-1 - 1067 997 l 1,12,-1 - 993 909 l 1,13,-1 - 848 1032 l 1,14,-1 - 653 813 l 1,15,16 - 733 792 733 792 793.5 742.5 c 128,-1,17 - 854 693 854 693 889.5 630.5 c 128,-1,18 - 925 568 925 568 952.5 497 c 128,-1,19 - 980 426 980 426 1001.5 359.5 c 128,-1,20 - 1023 293 1023 293 1046.5 239 c 128,-1,21 - 1070 185 1070 185 1106.5 152 c 128,-1,22 - 1143 119 1143 119 1192 119 c 1,23,-1 - 1192 0 l 1,24,25 - 1089 0 1089 0 1007 35.5 c 128,-1,26 - 925 71 925 71 874 128.5 c 128,-1,27 - 823 186 823 186 784 256 c 128,-1,28 - 745 326 745 326 718.5 399.5 c 128,-1,29 - 692 473 692 473 669.5 535 c 128,-1,30 - 647 597 647 597 619 643.5 c 128,-1,31 - 591 690 591 690 557 702 c 1,32,-1 - 440 571 l 1,33,-1 - 440 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni051F -Encoding: 1311 1311 867 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403 664 913> 860 41G<147 403 612 877> -VStem: 147 256<0 371 627 901> -LayerCount: 2 -Fore -SplineSet -680 680 m 1,0,-1 - 520 502 l 1,1,-1 - 913 0 l 1,2,-1 - 696 0 l 1,3,-1 - 403 371 l 1,4,-1 - 403 0 l 1,5,-1 - 147 0 l 1,6,-1 - 147 901 l 1,7,-1 - 403 901 l 1,8,-1 - 403 627 l 1,9,-1 - 549 791 l 1,10,-1 - 438 883 l 1,11,-1 - 494 948 l 1,12,-1 - 606 854 l 1,13,-1 - 647 901 l 1,14,-1 - 877 901 l 1,15,-1 - 737 743 l 1,16,-1 - 854 645 l 1,17,-1 - 799 580 l 1,18,-1 - 680 680 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0180 -Encoding: 384 384 868 -Width: 1120 -VWidth: 0 -Flags: W -HStem: -20 102<482 703> 819 102<470 705> 1085 102<82 180 436 567> 1311 41G<180 436> -VStem: 180 256<147 782 897 1085 1188 1352> 778 256<216 685> -LayerCount: 2 -Fore -SplineSet -436 897 m 1,0,1 - 509 922 509 922 590 922 c 0,2,3 - 709 922 709 922 797 885 c 128,-1,4 - 885 848 885 848 935.5 782 c 128,-1,5 - 986 716 986 716 1010 633.5 c 128,-1,6 - 1034 551 1034 551 1034 451 c 128,-1,7 - 1034 351 1034 351 1009.5 268.5 c 128,-1,8 - 985 186 985 186 934 120 c 128,-1,9 - 883 54 883 54 795.5 17 c 128,-1,10 - 708 -20 708 -20 590 -20 c 0,11,12 - 522 -20 522 -20 468 -12 c 128,-1,13 - 414 -4 414 -4 358 20.5 c 128,-1,14 - 302 45 302 45 264.5 86.5 c 128,-1,15 - 227 128 227 128 203.5 200 c 128,-1,16 - 180 272 180 272 180 369 c 2,17,-1 - 180 1085 l 1,18,-1 - 82 1085 l 1,19,-1 - 82 1188 l 1,20,-1 - 180 1188 l 1,21,-1 - 180 1352 l 1,22,-1 - 436 1352 l 1,23,-1 - 436 1188 l 1,24,-1 - 567 1188 l 1,25,-1 - 567 1085 l 1,26,-1 - 436 1085 l 1,27,-1 - 436 897 l 1,0,1 -436 745 m 1,28,-1 - 436 303 l 2,29,30 - 436 233 436 233 446.5 189 c 128,-1,31 - 457 145 457 145 482 121.5 c 128,-1,32 - 507 98 507 98 538.5 90 c 128,-1,33 - 570 82 570 82 621 82 c 0,34,35 - 664 82 664 82 696 114.5 c 128,-1,36 - 728 147 728 147 745 202 c 128,-1,37 - 762 257 762 257 770 319 c 128,-1,38 - 778 381 778 381 778 451 c 0,39,40 - 778 819 778 819 621 819 c 0,41,42 - 507 819 507 819 436 745 c 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Oslashacute -Encoding: 510 510 869 -Width: 1435 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<587 861> 0 43<324 543> 1352 102<565 855> 1393 41<887 1106> 1577 403 -VStem: 102 266<424 1012> 655 371 1071 266<414 1009> -AnchorPoint: "top" 707 1980 basechar 0 -AnchorPoint: "ogonek" 725 0 basechar 0 -AnchorPoint: "bottom" 721 0 basechar 0 -AnchorPoint: "horn" 1217 1085 basechar 0 -AnchorPoint: "cedilla" 700 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1343 328 2 -Refer: 166 216 N 1 0 0 1 0 0 3 -EndChar - -StartChar: oslashacute -Encoding: 511 511 870 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<456 644> 819 102<426 616> 1126 403 -VStem: 90 256<216 657> 467 371 715 256<223 680> -AnchorPoint: "top" 535 1530 basechar 0 -AnchorPoint: "ogonek" 537 0 basechar 0 -AnchorPoint: "bottom" 516 0 basechar 0 -AnchorPoint: "horn" 881 635 basechar 0 -AnchorPoint: "cedilla" 506 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1155 -123 2 -Refer: 167 248 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0228 -Encoding: 552 552 871 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -401 49<451 594> -164 164<537 625> 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> -VStem: 174 266<102 799 901 1331> 641 158<-327 -185> -AnchorPoint: "top" 614 1434 basechar 0 -AnchorPoint: "horn" 942 1384 basechar 0 -LayerCount: 2 -Fore -SplineSet -537 0 m 1,0,-1 - 174 0 l 1,1,-1 - 174 1434 l 1,2,-1 - 1001 1434 l 1,3,-1 - 1001 1331 l 1,4,-1 - 440 1331 l 1,5,-1 - 440 901 l 1,6,-1 - 817 901 l 1,7,-1 - 817 799 l 1,8,-1 - 440 799 l 1,9,-1 - 440 102 l 1,10,-1 - 1034 102 l 1,11,-1 - 1034 0 l 1,12,-1 - 676 0 l 1,13,-1 - 662 -113 l 1,14,15 - 723 -126 723 -126 761 -161 c 128,-1,16 - 799 -196 799 -196 799 -250 c 0,17,18 - 799 -315 799 -315 707.5 -358 c 128,-1,19 - 616 -401 616 -401 451 -401 c 1,20,-1 - 451 -352 l 1,21,22 - 641 -352 641 -352 641 -262 c 0,23,24 - 641 -216 641 -216 609.5 -192 c 128,-1,25 - 578 -168 578 -168 508 -164 c 1,26,-1 - 537 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0229 -Encoding: 553 553 872 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -401 49<377 520> -164 164<463 551> -20 102<441 705> 451 102<350 684> 819 102<425 629> -VStem: 90 256<235 451 553 656> 567 158<-327 -185> -AnchorPoint: "top" 530 1004 basechar 0 -AnchorPoint: "horn" 840 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -350 553 m 1,0,-1 - 684 553 l 1,1,2 - 682 616 682 616 675 660 c 128,-1,3 - 668 704 668 704 653 742.5 c 128,-1,4 - 638 781 638 781 610.5 800 c 128,-1,5 - 583 819 583 819 543 819 c 0,6,7 - 450 819 450 819 404.5 751.5 c 128,-1,8 - 359 684 359 684 350 553 c 1,0,-1 -346 451 m 1,9,10 - 346 379 346 379 352 325.5 c 128,-1,11 - 358 272 358 272 373.5 224.5 c 128,-1,12 - 389 177 389 177 415.5 147 c 128,-1,13 - 442 117 442 117 484.5 99.5 c 128,-1,14 - 527 82 527 82 584 82 c 0,15,16 - 658 82 658 82 692 112.5 c 128,-1,17 - 726 143 726 143 737 205 c 1,18,-1 - 932 158 l 1,19,20 - 874 84 874 84 789.5 37 c 128,-1,21 - 705 -10 705 -10 600 -19 c 1,22,-1 - 588 -113 l 1,23,24 - 649 -126 649 -126 687 -161 c 128,-1,25 - 725 -196 725 -196 725 -250 c 0,26,27 - 725 -315 725 -315 633.5 -358 c 128,-1,28 - 542 -401 542 -401 377 -401 c 1,29,-1 - 377 -352 l 1,30,31 - 567 -352 567 -352 567 -262 c 0,32,33 - 567 -216 567 -216 535.5 -192 c 128,-1,34 - 504 -168 504 -168 434 -164 c 1,35,-1 - 461 -13 l 1,36,37 - 295 16 295 16 192.5 140.5 c 128,-1,38 - 90 265 90 265 90 451 c 0,39,40 - 90 555 90 555 127 645 c 128,-1,41 - 164 735 164 735 224 794.5 c 128,-1,42 - 284 854 284 854 359.5 888 c 128,-1,43 - 435 922 435 922 512 922 c 0,44,45 - 615 922 615 922 699 880.5 c 128,-1,46 - 783 839 783 839 834.5 770.5 c 128,-1,47 - 886 702 886 702 914 619.5 c 128,-1,48 - 942 537 942 537 942 451 c 1,49,-1 - 346 451 l 1,9,10 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0243 -Encoding: 579 579 873 -Width: 1130 -VWidth: 0 -Flags: W -HStem: 0 102<455 670> 381 102<82 188 455 567> 727 102<455 588> 1331 102<455 616> -VStem: 188 266<102 381 483 727 829 1331> 700 266<944 1243> 786 266<216 579> -LayerCount: 2 -Fore -SplineSet -455 1331 m 1,0,-1 - 455 829 l 1,1,2 - 516 830 516 830 565.5 857 c 128,-1,3 - 615 884 615 884 643 923.5 c 128,-1,4 - 671 963 671 963 685.5 1003 c 128,-1,5 - 700 1043 700 1043 700 1075 c 0,6,7 - 700 1103 700 1103 696 1132.5 c 128,-1,8 - 692 1162 692 1162 678.5 1199 c 128,-1,9 - 665 1236 665 1236 643.5 1264 c 128,-1,10 - 622 1292 622 1292 584 1311.5 c 128,-1,11 - 546 1331 546 1331 496 1331 c 2,12,-1 - 455 1331 l 1,0,-1 -795 795 m 1,13,14 - 923 743 923 743 988 629.5 c 128,-1,15 - 1053 516 1053 516 1053 387 c 0,16,17 - 1053 308 1053 308 1027 240 c 128,-1,18 - 1001 172 1001 172 948 117 c 128,-1,19 - 895 62 895 62 805 31 c 128,-1,20 - 715 0 715 0 598 0 c 2,21,-1 - 188 0 l 1,22,-1 - 188 381 l 1,23,-1 - 82 381 l 1,24,-1 - 82 483 l 1,25,-1 - 188 483 l 1,26,-1 - 188 1434 l 1,27,-1 - 557 1434 l 2,28,29 - 652 1434 652 1434 725 1414.5 c 128,-1,30 - 798 1395 798 1395 843 1362.5 c 128,-1,31 - 888 1330 888 1330 916.5 1283 c 128,-1,32 - 945 1236 945 1236 956 1186 c 128,-1,33 - 967 1136 967 1136 967 1075 c 0,34,35 - 967 1010 967 1010 925.5 929.5 c 128,-1,36 - 884 849 884 849 795 795 c 1,13,14 -455 381 m 1,37,-1 - 455 102 l 1,38,-1 - 537 102 l 2,39,40 - 659 102 659 102 722.5 185.5 c 128,-1,41 - 786 269 786 269 786 387 c 0,42,43 - 786 443 786 443 771 500.5 c 128,-1,44 - 756 558 756 558 727 610 c 128,-1,45 - 698 662 698 662 648.5 694.5 c 128,-1,46 - 599 727 599 727 537 727 c 2,47,-1 - 455 727 l 1,48,-1 - 455 483 l 1,49,-1 - 567 483 l 1,50,-1 - 567 381 l 1,51,-1 - 455 381 l 1,37,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024A -Encoding: 586 586 874 -Width: 1474 -VWidth: 0 -Flags: W -HStem: -410 102<1349 1552> -20 102<672 1060> 1352 102<640 1028> 1393 41G<1063 1329> -VStem: 102 266<441 996> 1063 266<-265 16 105 1312 1419 1434> -LayerCount: 2 -Fore -SplineSet -1329 -61 m 2,0,1 - 1329 -133 1329 -133 1331 -172 c 128,-1,2 - 1333 -211 1333 -211 1341 -245.5 c 128,-1,3 - 1349 -280 1349 -280 1365.5 -293.5 c 128,-1,4 - 1382 -307 1382 -307 1409 -307 c 0,5,6 - 1482 -307 1482 -307 1518 -256 c 1,7,-1 - 1647 -317 l 1,8,9 - 1609 -362 1609 -362 1550.5 -386 c 128,-1,10 - 1492 -410 1492 -410 1430 -410 c 0,11,12 - 1385 -410 1385 -410 1337 -400.5 c 128,-1,13 - 1289 -391 1289 -391 1239.5 -369 c 128,-1,14 - 1190 -347 1190 -347 1151 -315.5 c 128,-1,15 - 1112 -284 1112 -284 1087.5 -235.5 c 128,-1,16 - 1063 -187 1063 -187 1063 -129 c 2,17,-1 - 1063 16 l 1,18,19 - 953 -20 953 -20 834 -20 c 0,20,21 - 725 -20 725 -20 621.5 7 c 128,-1,22 - 518 34 518 34 423.5 92.5 c 128,-1,23 - 329 151 329 151 258 235.5 c 128,-1,24 - 187 320 187 320 144.5 444 c 128,-1,25 - 102 568 102 568 102 717 c 0,26,27 - 102 865 102 865 144 989.5 c 128,-1,28 - 186 1114 186 1114 255 1198 c 128,-1,29 - 324 1282 324 1282 415 1341 c 128,-1,30 - 506 1400 506 1400 602 1427 c 128,-1,31 - 698 1454 698 1454 795 1454 c 0,32,33 - 947 1454 947 1454 1063 1419 c 1,34,-1 - 1063 1434 l 1,35,-1 - 1329 1434 l 1,36,-1 - 1329 -61 l 2,0,1 -1063 123 m 1,37,-1 - 1063 1288 l 1,38,39 - 960 1352 960 1352 825 1352 c 0,40,41 - 728 1352 728 1352 645.5 1312.5 c 128,-1,42 - 563 1273 563 1273 501 1196.5 c 128,-1,43 - 439 1120 439 1120 404 997 c 128,-1,44 - 369 874 369 874 369 717 c 0,45,46 - 369 586 369 586 398 478 c 128,-1,47 - 427 370 427 370 475 298 c 128,-1,48 - 523 226 523 226 587.5 176 c 128,-1,49 - 652 126 652 126 721 104 c 128,-1,50 - 790 82 790 82 864 82 c 0,51,52 - 976 82 976 82 1063 123 c 1,37,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024B -Encoding: 587 587 875 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -412 102<965 1168> -20 102<419 623> 819 102<418 650> -VStem: 90 256<216 685> 688 256<-267 4 152 754> -LayerCount: 2 -Fore -SplineSet -944 -63 m 2,0,1 - 944 -135 944 -135 946 -174 c 128,-1,2 - 948 -213 948 -213 956 -247.5 c 128,-1,3 - 964 -282 964 -282 980.5 -295.5 c 128,-1,4 - 997 -309 997 -309 1024 -309 c 0,5,6 - 1097 -309 1097 -309 1133 -258 c 1,7,-1 - 1262 -319 l 1,8,9 - 1184 -412 1184 -412 1055 -412 c 0,10,11 - 1010 -412 1010 -412 962 -402.5 c 128,-1,12 - 914 -393 914 -393 864.5 -371 c 128,-1,13 - 815 -349 815 -349 776 -317.5 c 128,-1,14 - 737 -286 737 -286 712.5 -237.5 c 128,-1,15 - 688 -189 688 -189 688 -131 c 2,16,-1 - 688 4 l 1,17,18 - 618 -20 618 -20 535 -20 c 0,19,20 - 416 -20 416 -20 328 17 c 128,-1,21 - 240 54 240 54 189 120 c 128,-1,22 - 138 186 138 186 114 268.5 c 128,-1,23 - 90 351 90 351 90 451 c 128,-1,24 - 90 551 90 551 114.5 633.5 c 128,-1,25 - 139 716 139 716 190.5 782 c 128,-1,26 - 242 848 242 848 329.5 885 c 128,-1,27 - 417 922 417 922 535 922 c 0,28,29 - 603 922 603 922 657 914 c 128,-1,30 - 711 906 711 906 767 881 c 128,-1,31 - 823 856 823 856 860 814.5 c 128,-1,32 - 897 773 897 773 920.5 701 c 128,-1,33 - 944 629 944 629 944 532 c 2,34,-1 - 944 -63 l 2,0,1 -688 430 m 2,35,-1 - 688 598 l 2,36,37 - 688 692 688 692 670 739.5 c 128,-1,38 - 652 787 652 787 615 803 c 128,-1,39 - 578 819 578 819 504 819 c 0,40,41 - 455 819 455 819 422 787.5 c 128,-1,42 - 389 756 389 756 373.5 698.5 c 128,-1,43 - 358 641 358 641 352 583.5 c 128,-1,44 - 346 526 346 526 346 451 c 0,45,46 - 346 82 346 82 504 82 c 0,47,48 - 545 82 545 82 576.5 94 c 128,-1,49 - 608 106 608 106 627.5 131 c 128,-1,50 - 647 156 647 156 659.5 184.5 c 128,-1,51 - 672 213 672 213 678 256.5 c 128,-1,52 - 684 300 684 300 686 338 c 128,-1,53 - 688 376 688 376 688 430 c 2,35,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024C -Encoding: 588 588 876 -Width: 1210 -VWidth: 0 -Flags: W -HStem: 0 43<246 512 901 1161> 655 102<82 567 512 615> 1331 102<512 737> -VStem: 82 485<655 758> 246 266<0 655 758 1331> 844 266<872 1217> 901 260<0 202> -LayerCount: 2 -Fore -SplineSet -246 655 m 1,0,-1 - 82 655 l 1,1,-1 - 82 758 l 1,2,-1 - 246 758 l 1,3,-1 - 246 1434 l 1,4,-1 - 666 1434 l 2,5,6 - 760 1434 760 1434 837.5 1409 c 128,-1,7 - 915 1384 915 1384 964.5 1344 c 128,-1,8 - 1014 1304 1014 1304 1048 1252 c 128,-1,9 - 1082 1200 1082 1200 1096 1148 c 128,-1,10 - 1110 1096 1110 1096 1110 1044 c 0,11,12 - 1110 975 1110 975 1085 908 c 128,-1,13 - 1060 841 1060 841 998.5 778 c 128,-1,14 - 937 715 937 715 848 684 c 1,15,16 - 953 585 953 585 1057 363.5 c 128,-1,17 - 1161 142 1161 142 1161 0 c 1,18,-1 - 901 0 l 1,19,20 - 901 142 901 142 793 355 c 128,-1,21 - 685 568 685 568 571 655 c 1,22,-1 - 512 655 l 1,23,-1 - 512 0 l 1,24,-1 - 246 0 l 1,25,-1 - 246 655 l 1,0,-1 -512 758 m 1,26,-1 - 604 758 l 2,27,28 - 666 758 666 758 714.5 785 c 128,-1,29 - 763 812 763 812 790 855.5 c 128,-1,30 - 817 899 817 899 830.5 947 c 128,-1,31 - 844 995 844 995 844 1044 c 0,32,33 - 844 1083 844 1083 836 1121.5 c 128,-1,34 - 828 1160 828 1160 809.5 1198 c 128,-1,35 - 791 1236 791 1236 764 1265.5 c 128,-1,36 - 737 1295 737 1295 695.5 1313 c 128,-1,37 - 654 1331 654 1331 604 1331 c 2,38,-1 - 512 1331 l 1,39,-1 - 512 758 l 1,26,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024D -Encoding: 589 589 877 -Width: 862 -VWidth: 0 -Flags: W -HStem: 0 43<193 468> 389 102<82 567> 819 102<516 829> 860 41<193 468> -VStem: 82 485<389 492> 193 276<0 774 874 901> -LayerCount: 2 -Fore -SplineSet -856 741 m 1,0,1 - 812 819 812 819 669 819 c 0,2,3 - 604 819 604 819 558 798 c 128,-1,4 - 512 777 512 777 468 735 c 1,5,-1 - 468 492 l 1,6,-1 - 567 492 l 1,7,-1 - 567 389 l 1,8,-1 - 468 389 l 1,9,-1 - 468 0 l 1,10,-1 - 193 0 l 1,11,-1 - 193 389 l 1,12,-1 - 82 389 l 1,13,-1 - 82 492 l 1,14,-1 - 193 492 l 1,15,-1 - 193 901 l 1,16,-1 - 468 901 l 1,17,-1 - 468 874 l 1,18,19 - 553 922 553 922 653 922 c 0,20,21 - 767 922 767 922 856 893 c 1,22,-1 - 856 741 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0266 -Encoding: 614 614 878 -Width: 1079 -VWidth: 0 -Flags: W -HStem: 0 43G<147 403 692 948> 819 102<405 644> 1270 102<424 627> -VStem: 147 256<0 802 907 1228> 692 256<0 720> -LayerCount: 2 -Fore -SplineSet -147 1092 m 2,0,1 - 147 1164 147 1164 183.5 1220.5 c 128,-1,2 - 220 1277 220 1277 277.5 1308.5 c 128,-1,3 - 335 1340 335 1340 395.5 1356 c 128,-1,4 - 456 1372 456 1372 514 1372 c 0,5,6 - 644 1372 644 1372 721 1280 c 1,7,-1 - 592 1219 l 1,8,9 - 556 1270 556 1270 483 1270 c 0,10,11 - 456 1270 456 1270 439.5 1256.5 c 128,-1,12 - 423 1243 423 1243 415 1208.5 c 128,-1,13 - 407 1174 407 1174 405 1135 c 128,-1,14 - 403 1096 403 1096 403 1024 c 2,15,-1 - 403 907 l 1,16,17 - 472 922 472 922 520 922 c 0,18,19 - 736 922 736 922 842 816 c 128,-1,20 - 948 710 948 710 948 492 c 2,21,-1 - 948 0 l 1,22,-1 - 692 0 l 1,23,-1 - 692 467 l 2,24,25 - 692 608 692 608 676 686 c 128,-1,26 - 660 764 660 764 631 791.5 c 128,-1,27 - 602 819 602 819 551 819 c 0,28,29 - 471 819 471 819 403 784 c 1,30,-1 - 403 0 l 1,31,-1 - 147 0 l 1,32,-1 - 147 1092 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni027E -Encoding: 638 638 879 -Width: 888 -VWidth: 0 -Flags: W -HStem: 0 43G<139 395> 819 102<452 644> -VStem: 139 256<0 754> -LayerCount: 2 -Fore -SplineSet -395 451 m 2,0,-1 - 395 0 l 1,1,-1 - 139 0 l 1,2,-1 - 139 414 l 2,3,4 - 139 496 139 496 141.5 554 c 128,-1,5 - 144 612 144 612 152 666 c 128,-1,6 - 160 720 160 720 173 755 c 128,-1,7 - 186 790 186 790 208.5 821 c 128,-1,8 - 231 852 231 852 260 869.5 c 128,-1,9 - 289 887 289 887 332 900 c 128,-1,10 - 375 913 375 913 427 917.5 c 128,-1,11 - 479 922 479 922 549 922 c 0,12,13 - 576 922 576 922 603 918 c 128,-1,14 - 630 914 630 914 647.5 909.5 c 128,-1,15 - 665 905 665 905 693.5 893 c 128,-1,16 - 722 881 722 881 733 875.5 c 128,-1,17 - 744 870 744 870 777.5 852 c 128,-1,18 - 811 834 811 834 821 829 c 1,19,-1 - 719 723 l 1,20,21 - 711 729 711 729 690 743.5 c 128,-1,22 - 669 758 669 758 663.5 762 c 128,-1,23 - 658 766 658 766 641.5 777 c 128,-1,24 - 625 788 625 788 619.5 790.5 c 128,-1,25 - 614 793 614 793 601 800 c 128,-1,26 - 588 807 588 807 581 809 c 128,-1,27 - 574 811 574 811 562.5 814 c 128,-1,28 - 551 817 551 817 540.5 818 c 128,-1,29 - 530 819 530 819 518 819 c 0,30,31 - 395 819 395 819 395 451 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0295 -Encoding: 661 661 880 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 43G<637 893> 557 98<495 637> 1270 102<465 818> -VStem: 92 256<800 1141> 637 256<0 557> -LayerCount: 2 -Fore -SplineSet -637 0 m 1,0,-1 - 637 557 l 1,1,2 - 550 557 550 557 456.5 583.5 c 128,-1,3 - 363 610 363 610 280.5 658 c 128,-1,4 - 198 706 198 706 145 784 c 128,-1,5 - 92 862 92 862 92 954 c 0,6,7 - 92 1038 92 1038 121 1107.5 c 128,-1,8 - 150 1177 150 1177 200 1225.5 c 128,-1,9 - 250 1274 250 1274 317 1307.5 c 128,-1,10 - 384 1341 384 1341 459.5 1356.5 c 128,-1,11 - 535 1372 535 1372 616 1372 c 0,12,13 - 743 1372 743 1372 869.5 1321.5 c 128,-1,14 - 996 1271 996 1271 1057 1194 c 1,15,-1 - 938 1102 l 1,16,17 - 917 1136 917 1136 895 1161.5 c 128,-1,18 - 873 1187 873 1187 839 1214 c 128,-1,19 - 805 1241 805 1241 756 1255.5 c 128,-1,20 - 707 1270 707 1270 647 1270 c 0,21,22 - 497 1270 497 1270 422.5 1194.5 c 128,-1,23 - 348 1119 348 1119 348 954 c 0,24,25 - 348 873 348 873 378 813 c 128,-1,26 - 408 753 408 753 458 719.5 c 128,-1,27 - 508 686 508 686 564 670.5 c 128,-1,28 - 620 655 620 655 682 655 c 2,29,-1 - 893 655 l 1,30,-1 - 893 0 l 1,31,-1 - 637 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57929 -Encoding: 700 700 881 -Width: 397 -VWidth: 0 -Flags: W -HStem: 985 367<-47 28> -VStem: 98 188<1139 1352> -LayerCount: 2 -Fore -Refer: 331 8217 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni02C0 -Encoding: 704 704 882 -Width: 638 -VWidth: 0 -Flags: W -HStem: 901 199<193 335> 1030 70<336 368> 1386 68<218 382> -VStem: 193 143<901 1030> 414 143<1133 1362> -LayerCount: 2 -Fore -SplineSet -336 901 m 1,0,-1 - 193 901 l 1,1,-1 - 193 1100 l 1,2,-1 - 254 1100 l 2,3,4 - 414 1100 414 1100 414 1239 c 0,5,6 - 414 1319 414 1319 383 1352.5 c 128,-1,7 - 352 1386 352 1386 295 1386 c 0,8,9 - 252 1386 252 1386 218 1355 c 128,-1,10 - 184 1324 184 1324 176 1290 c 1,11,-1 - 70 1337 l 1,12,13 - 92 1380 92 1380 167 1417 c 128,-1,14 - 242 1454 242 1454 305 1454 c 0,15,16 - 365 1454 365 1454 421 1431 c 128,-1,17 - 477 1408 477 1408 517 1357.5 c 128,-1,18 - 557 1307 557 1307 557 1239 c 0,19,20 - 557 1148 557 1148 486 1089 c 128,-1,21 - 415 1030 415 1030 336 1030 c 1,22,-1 - 336 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni02CA -Encoding: 714 714 883 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: 82 371 -LayerCount: 2 -Fore -Refer: 370 180 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni02CB -Encoding: 715 715 884 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: 45 371 -LayerCount: 2 -Fore -Refer: 377 96 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni030D -Encoding: 781 781 885 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1257 328<-631 -549> -VStem: -631 82<1257 1585> -AnchorPoint: "mktop" -588 1188 mark 0 -AnchorPoint: "mktop" -588 1597 basemark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --631 1257 m 1,0,-1 - -631 1585 l 1,1,-1 - -549 1585 l 1,2,-1 - -549 1257 l 1,3,-1 - -631 1257 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0329 -Encoding: 809 809 886 -Width: 0 -VWidth: 0 -Flags: W -HStem: -410 328<-631 -549> -VStem: -631 82<-410 -82> -AnchorPoint: "bottom" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --631 -410 m 1,0,-1 - -631 -82 l 1,1,-1 - -549 -82 l 1,2,-1 - -549 -410 l 1,3,-1 - -631 -410 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC4 -Encoding: 7620 7620 887 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 82<-834 -406> -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --260 1548 m 1,0,-1 - -150 1456 l 1,1,-1 - -362 1270 l 1,2,-1 - -834 1270 l 1,3,-1 - -834 1352 l 1,4,-1 - -406 1352 l 1,5,-1 - -260 1548 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC5 -Encoding: 7621 7621 888 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 82<-791 -362> -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --834 1270 m 1,0,-1 - -1047 1456 l 1,1,-1 - -936 1548 l 1,2,-1 - -791 1352 l 1,3,-1 - -362 1352 l 1,4,-1 - -362 1270 l 1,5,-1 - -834 1270 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC6 -Encoding: 7622 7622 889 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1331 82<-834 -406> -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --406 1331 m 1,0,-1 - -834 1331 l 1,1,-1 - -834 1413 l 1,2,-1 - -362 1413 l 1,3,-1 - -150 1227 l 1,4,-1 - -260 1135 l 1,5,-1 - -406 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC7 -Encoding: 7623 7623 890 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1331 82<-791 -362> -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --936 1135 m 1,0,-1 - -1047 1227 l 1,1,-1 - -834 1413 l 1,2,-1 - -362 1413 l 1,3,-1 - -362 1331 l 1,4,-1 - -791 1331 l 1,5,-1 - -936 1135 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E04 -Encoding: 7684 7684 891 -Width: 1116 -VWidth: 0 -Flags: W -HStem: -293 170<417 587> 0 102<440 656> 727 102<440 574> 1331 102<440 601> -VStem: 174 266<102 727 829 1331> 417 170<-293 -123> 686 266<944 1243> 772 266<216 579> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1093 -20 2 -Refer: 28 66 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E05 -Encoding: 7685 7685 892 -Width: 1079 -VWidth: 0 -Flags: W -HStem: -313 170<464 634> -20 102<441 662> 819 102<429 664> 1311 41<139 395> -VStem: 139 256<147 782 897 1352> 464 170<-313 -143> 737 256<216 685> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1140 -41 2 -Refer: 6 98 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0C -Encoding: 7692 7692 893 -Width: 1304 -VWidth: 0 -Flags: W -HStem: -293 170<460 630> 0 102<440 741> 1331 102<440 755> -VStem: 174 266<102 1331> 460 170<-293 -123> 938 266<394 1073> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1136 -20 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0D -Encoding: 7693 7693 894 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -313 170<419 589> -20 102<423 640> 0 43<688 944> 819 102<423 621> 1311 41<688 944> -VStem: 90 256<228 673> 419 170<-313 -143> 688 256<0 4 132 737 883 1352> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1095 -41 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0E -Encoding: 7694 7694 895 -Width: 1304 -VWidth: 0 -Flags: W -HStem: -238 115<309 780> 0 102<440 741> 1331 102<440 755> -VStem: 174 266<102 1331> 309 471<-238 -123> 938 266<394 1073> -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 1143 -16 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0F -Encoding: 7695 7695 896 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -258 115<268 739> -20 102<423 640> 0 43<688 944> 819 102<423 621> 1311 41<688 944> -VStem: 90 256<228 673> 268 471<-258 -143> 688 256<0 4 132 737 883 1352> -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 1102 -37 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E12 -Encoding: 7698 7698 897 -Width: 1304 -VWidth: 0 -Flags: W -HStem: -510 387 0 102<440 741> 1331 102<440 755> -VStem: 174 266<102 1331> 305 479 938 266<394 1073> -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 1130 -61 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E13 -Encoding: 7699 7699 898 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -530 387 -20 102<423 640> 0 43<688 944> 819 102<423 621> 1311 41<688 944> -VStem: 90 256<228 673> 264 479 688 256<0 4 132 737 883 1352> -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 1090 -82 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E24 -Encoding: 7716 7716 899 -Width: 1351 -VWidth: 0 -Flags: W -HStem: -293 170<593 763> 0 43<174 440 915 1182> 717 102<440 915> 1393 41<174 440 915 1182> -VStem: 174 266<0 717 819 1434> 593 170<-293 -123> 915 266<0 717 819 1434> -CounterMasks: 1 0e -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1269 -20 2 -Refer: 35 72 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E25 -Encoding: 7717 7717 900 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -293 170<463 633> 0 43<147 403 692 948> 819 102<405 644> 1311 41<147 403> -VStem: 147 256<0 802 907 1352> 463 170<-293 -123> 692 256<0 720> -CounterMasks: 1 0e -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1139 -20 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2E -Encoding: 7726 7726 901 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1516 170<37 207 406 575> 1739 301 -VStem: 37 170<1516 1686> 172 266<0 1434> 240 340 406 170<1516 1686> -LayerCount: 2 -Fore -Refer: 591 58624 N 1 0 0 1 92 258 2 -Refer: 151 207 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2F -Encoding: 7727 7727 902 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1085 170<-16 154 352 522> 1378 403 -VStem: -16 170<1085 1255> 123 256<0 901> 189 371 352 170<1085 1255> -LayerCount: 2 -Fore -Refer: 883 714 N 1 0 0 1 108 129 2 -Refer: 135 239 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E36 -Encoding: 7734 7734 903 -Width: 1083 -VWidth: 0 -Flags: W -HStem: -293 170<519 689> 0 102<440 1034> 1393 41<174 440> -VStem: 174 266<102 1434> 519 170<-293 -123> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1195 -20 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E37 -Encoding: 7735 7735 904 -Width: 548 -VWidth: 0 -Flags: W -HStem: -293 170<190 360> 0 43<147 403> 1311 41<147 403> -VStem: 147 256<0 1352> 190 170<-293 -123> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 866 -20 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3C -Encoding: 7740 7740 905 -Width: 1083 -VWidth: 0 -Flags: W -HStem: -510 387 0 102<440 1034> 1393 41<174 440> -VStem: 174 266<102 1434> 365 479 -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 1190 -61 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3D -Encoding: 7741 7741 906 -Width: 548 -VWidth: 0 -Flags: W -HStem: -510 387 0 43<147 403> 1311 41<147 403> -VStem: 36 479 147 256<0 1352> -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 861 -61 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3E -Encoding: 7742 7742 907 -Width: 1626 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 1190 1456> 1393 41<174 459 1171 1456> 1454 403 -VStem: 174 266<0 1047> 752 371 1190 266<0 1047> -LayerCount: 2 -Fore -Refer: 883 714 N 1 0 0 1 670 205 2 -Refer: 40 77 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3F -Encoding: 7743 7743 908 -Width: 1675 -VWidth: 0 -Flags: W -HStem: 0 43<147 403 723 979 1280 1536> 819 102<405 663 980 1220> 1044 403 -VStem: 147 256<0 811> 723 256<0 757> 724 371 1280 256<0 743> -LayerCount: 2 -Fore -Refer: 883 714 N 1 0 0 1 642 -205 2 -Refer: 11 109 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E44 -Encoding: 7748 7748 909 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 951 1237> 1393 41<174 463 971 1237> 1577 170<621 791> -VStem: 174 266<0 1075> 621 170<1577 1747> 971 266<367 1434> -CounterMasks: 1 1c -LayerCount: 2 -Fore -Refer: 376 729 N 1 0 0 1 569 307 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E45 -Encoding: 7749 7749 910 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 403 692 948> 819 102<405 644> 1044 170<463 633> -VStem: 147 256<0 802> 463 170<1044 1214> 692 256<0 720> -CounterMasks: 1 1c -LayerCount: 2 -Fore -Refer: 376 729 N 1 0 0 1 412 -225 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E46 -Encoding: 7750 7750 911 -Width: 1406 -VWidth: 0 -Flags: W -HStem: -293 170<621 791> 0 43<174 440 951 1237> 1393 41<174 463 971 1237> -VStem: 174 266<0 1075> 621 170<-293 -123> 971 266<367 1434> -CounterMasks: 1 1c -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1296 -20 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E47 -Encoding: 7751 7751 912 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -293 170<463 633> 0 43<147 403 692 948> 819 102<405 644> -VStem: 147 256<0 802> 463 170<-293 -123> 692 256<0 720> -CounterMasks: 1 1c -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1139 -20 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E4A -Encoding: 7754 7754 913 -Width: 1406 -VWidth: 0 -Flags: W -HStem: -510 387 0 43<174 440 951 1237> 1393 41<174 463 971 1237> -VStem: 174 266<0 1075> 466 479 971 266<367 1434> -CounterMasks: 1 1c -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 1291 -61 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E4B -Encoding: 7755 7755 914 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -510 387 0 43<147 403 692 948> 819 102<405 644> -VStem: 147 256<0 802> 308 479 692 256<0 720> -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 1134 -61 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E4C -Encoding: 7756 7756 915 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -18 102<572 877> 1145 102<552 871> 1296 141<710 908> 1362 141<525 724> 1501 301 -VStem: 102 266<365 872> 434 84<1296 1349> 664 340 915 84<1451 1503> 1071 266<356 870> -LayerCount: 2 -Fore -Refer: 591 58624 N 1 0 0 1 516 20 2 -Refer: 590 57441 N 1 0 0 1 0 0 2 -Refer: 95 771 N 1 0 0 1 1294 27 2 -Validated: 1 -EndChar - -StartChar: uni1E4D -Encoding: 7757 7757 916 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1085 141<538 736> 1151 141<353 552> 1315 403 -VStem: 90 256<214 657> 262 84<1085 1138> 504 371 715 256<223 678> 743 84<1240 1292> -LayerCount: 2 -Fore -Refer: 131 245 N 1 0 0 1 0 0 3 -Refer: 883 714 N 1 0 0 1 422 66 2 -Validated: 1 -EndChar - -StartChar: uni1E50 -Encoding: 7760 7760 917 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -18 102<572 877> 1145 102<552 871> 1352 115<461 932> 1501 301 -VStem: 102 266<365 872> 461 471<1352 1466> 475 340 1071 266<356 870> -LayerCount: 2 -Fore -Refer: 592 58625 N 1 0 0 1 328 20 2 -Refer: 590 57441 S 1 0 0 1 0 0 2 -Refer: 96 772 N 1 0 0 1 1294 82 2 -Validated: 1 -EndChar - -StartChar: uni1E51 -Encoding: 7761 7761 918 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1085 115<289 760> 1272 403 -VStem: 90 256<214 657> 209 371 289 471<1085 1200> 715 256<223 678> -LayerCount: 2 -Fore -Refer: 263 333 N 1 0 0 1 0 0 3 -Refer: 884 715 N 1 0 0 1 164 23 2 -Validated: 1 -EndChar - -StartChar: uni1E52 -Encoding: 7762 7762 919 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -18 102<572 877> 1145 102<552 871> 1352 115<461 932> 1501 301 -VStem: 102 266<365 872> 461 471<1352 1466> 664 340 1071 266<356 870> -LayerCount: 2 -Fore -Refer: 591 58624 N 1 0 0 1 516 20 2 -Refer: 590 57441 N 1 0 0 1 0 0 2 -Refer: 96 772 N 1 0 0 1 1294 82 2 -Validated: 1 -EndChar - -StartChar: uni1E53 -Encoding: 7763 7763 920 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1085 115<289 760> 1272 403 -VStem: 90 256<214 657> 289 471<1085 1200> 469 371 715 256<223 678> -LayerCount: 2 -Fore -Refer: 263 333 N 1 0 0 1 0 0 3 -Refer: 883 714 N 1 0 0 1 387 23 2 -Validated: 1 -EndChar - -StartChar: uni1E6C -Encoding: 7788 7788 921 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -293 170<556 726> 0 43<508 774> 1331 102<41 508 774 1239> -VStem: 508 266<0 1331> 556 170<-293 -123> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1232 -20 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6D -Encoding: 7789 7789 922 -Width: 657 -VWidth: 0 -Flags: W -HStem: -293 170<231 401> 0 43<188 444> 799 102<84 188 444 604> -VStem: 188 256<0 799 901 1198> 231 170<-293 -123> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 907 -20 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6E -Encoding: 7790 7790 923 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -238 115<406 877> 0 43<508 774> 1331 102<41 508 774 1239> -VStem: 406 471<-238 -123> 508 266<0 1331> -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 1239 -16 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6F -Encoding: 7791 7791 924 -Width: 657 -VWidth: 0 -Flags: W -HStem: -238 115<81 552> 0 43<188 444> 799 102<84 188 444 604> -VStem: 81 471<-238 -123> 188 256<0 799 901 1198> -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 914 -16 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E70 -Encoding: 7792 7792 925 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -510 387 0 43<508 774> 1331 102<41 508 774 1239> -VStem: 401 479 508 266<0 1331> -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 1227 -61 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E71 -Encoding: 7793 7793 926 -Width: 657 -VWidth: 0 -Flags: W -HStem: -510 387 0 43<188 444> 799 102<84 188 444 604> -VStem: 77 479 188 256<0 799 901 1198> -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 902 -61 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E92 -Encoding: 7826 7826 927 -Width: 1040 -VWidth: 0 -Flags: W -HStem: -293 170<437 607> 0 102<362 983> 1331 102<102 672> -VStem: 437 170<-293 -123> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1113 -20 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E93 -Encoding: 7827 7827 928 -Width: 860 -VWidth: 0 -Flags: W -HStem: -293 170<353 523> 0 102<352 823> 799 102<74 520> -VStem: 353 170<-293 -123> -AnchorPoint: "top" 438 1004 basechar 0 -AnchorPoint: "bottom" 442 0 basechar 0 -AnchorPoint: "cedilla" 442 0 basechar 0 -AnchorPoint: "ogonek" 717 0 basechar 0 -AnchorPoint: "horn" 651 717 basechar 0 -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1029 -20 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni2C72 -Encoding: 11378 11378 929 -Width: 2050 -VWidth: 0 -Flags: W -HStem: 0 43G<486 693 1087 1293> 860 41G<775 1004> 1346 113<1733 1911> 1393 41G<35 292> -VStem: 1948 143<1210 1310> -LayerCount: 2 -Fore -SplineSet -1280 0 m 1,0,-1 - 1100 0 l 1,1,-1 - 891 647 l 1,2,-1 - 680 0 l 1,3,-1 - 500 0 l 1,4,-1 - 35 1434 l 1,5,-1 - 279 1434 l 1,6,-1 - 618 381 l 1,7,-1 - 788 901 l 1,8,-1 - 991 901 l 1,9,-1 - 1159 381 l 1,10,-1 - 1419 1184 l 1,11,12 - 1469 1335 1469 1335 1572 1396.5 c 128,-1,13 - 1675 1458 1675 1458 1831 1458 c 0,14,15 - 1947 1458 1947 1458 2019 1382.5 c 128,-1,16 - 2091 1307 2091 1307 2091 1210 c 1,17,-1 - 1948 1198 l 1,18,19 - 1948 1260 1948 1260 1911.5 1303 c 128,-1,20 - 1875 1346 1875 1346 1823 1346 c 0,21,22 - 1767 1346 1767 1346 1723.5 1293 c 128,-1,23 - 1680 1240 1680 1240 1653 1155 c 2,24,-1 - 1280 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C73 -Encoding: 11379 11379 930 -Width: 1742 -VWidth: 0 -Flags: W -HStem: 0 43G<341 535 939 1133> 819 102<1416 1532> 860 41G<29 265 669 863> -LayerCount: 2 -Fore -SplineSet -1118 0 m 1,0,-1 - 954 0 l 1,1,-1 - 737 596 l 1,2,-1 - 520 0 l 1,3,-1 - 356 0 l 1,4,-1 - 29 901 l 1,5,-1 - 250 901 l 1,6,-1 - 467 303 l 1,7,-1 - 684 901 l 1,8,-1 - 848 901 l 1,9,-1 - 1065 305 l 1,10,-1 - 1182 623 l 2,11,12 - 1236 771 1236 771 1311 846.5 c 128,-1,13 - 1386 922 1386 922 1499 922 c 0,14,15 - 1570 922 1570 922 1644.5 879.5 c 128,-1,16 - 1719 837 1719 837 1753 754 c 1,17,-1 - 1556 725 l 1,18,19 - 1540 774 1540 774 1515 796.5 c 128,-1,20 - 1490 819 1490 819 1468 819 c 0,21,22 - 1417 819 1417 819 1343 618 c 2,23,-1 - 1118 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: dotlessistroke -Encoding: 58627 58627 931 -Width: 604 -VWidth: 0 -Flags: W -HStem: 0 43G<178 434> 518 102<45 178 434 561> 860 41G<178 434> -VStem: 178 256<0 518 621 901> -AnchorPoint: "top" 315 1004 basechar 0 -AnchorPoint: "ogonek" 383 0 basechar 0 -AnchorPoint: "bottom" 307 0 basechar 0 -AnchorPoint: "cedilla" 313 0 basechar 0 -AnchorPoint: "horn" 354 717 basechar 0 -LayerCount: 2 -Fore -SplineSet -45 518 m 1,0,-1 - 45 621 l 1,1,-1 - 178 621 l 1,2,-1 - 178 901 l 1,3,-1 - 434 901 l 1,4,-1 - 434 621 l 1,5,-1 - 561 621 l 1,6,-1 - 561 518 l 1,7,-1 - 434 518 l 1,8,-1 - 434 0 l 1,9,-1 - 178 0 l 1,10,-1 - 178 518 l 1,11,-1 - 45 518 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: istrokegrave -Encoding: 58628 58628 932 -Width: 604 -VWidth: 0 -Flags: W -HStem: 0 43<178 434> 518 102<45 178 434 561> 860 41<178 434> 1065 403 -VStem: 39 371 178 256<0 518 621 901> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 764 -184 2 -Refer: 931 58627 N 1 0 0 1 0 0 2 -Validated: 1 -LCarets2: 1 0 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" uni0268 gravecomb -EndChar - -StartChar: istrokeacute -Encoding: 58629 58629 933 -Width: 604 -VWidth: 0 -Flags: W -HStem: 0 43<178 434> 518 102<45 178 434 561> 860 41<178 434> 1065 403 -VStem: 178 256<0 518 621 901> 209 371 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 897 -184 2 -Refer: 931 58627 N 1 0 0 1 0 0 2 -Validated: 1 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" uni0268 acutecomb -EndChar - -StartChar: istrokecircumflex -Encoding: 58630 58630 934 -Width: 604 -VWidth: 0 -Flags: W -HStem: 0 43<178 434> 518 102<45 178 434 561> 860 41<178 434> 1073 299 -VStem: 35 551 178 256<0 518 621 901> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 897 -184 2 -Refer: 931 58627 N 1 0 0 1 0 0 2 -Validated: 1 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" uni0268 uni0302 -EndChar - -StartChar: istrokecaron -Encoding: 58631 58631 935 -Width: 604 -VWidth: 0 -Flags: W -HStem: 0 43<178 434> 518 102<45 178 434 561> 860 41<178 434> 1044 387 -VStem: 66 479 178 256<0 518 621 901> -LayerCount: 2 -Fore -Refer: 374 711 N 1 0 0 1 4 -94 2 -Refer: 931 58627 N 1 0 0 1 0 0 2 -Validated: 1 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" uni0268 uni030C -EndChar - -StartChar: Adieresislowered -Encoding: 58632 58632 936 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1255 178<201 365 938 1102> 1393 41<546 756> -VStem: 201 164<1255 1434> 938 164<1255 1434> -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 2 -Refer: 98 775 N 1 0 0 1 874 -14 2 -Refer: 98 775 N 1 0 0 1 1612 -14 2 -Validated: 1 -EndChar - -StartChar: Odieresislowered -Encoding: 58633 58633 937 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 877> 1255 178<82 246 1167 1331> 1352 102<551 871> -VStem: 82 164<1255 1434> 102 174<441 1012> 1163 174<438 1009> 1167 164<1255 1434> -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 3 -Refer: 98 775 N 1 0 0 1 756 -14 2 -Refer: 98 775 N 1 0 0 1 1841 -14 2 -Validated: 1 -EndChar - -StartChar: Udieresislowered -Encoding: 58634 58634 938 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<564 848> 1262 170<514 643 760 889> -VStem: 156 266<328 1434> 514 129<1262 1432> 760 129<1262 1432> 981 266<297 1434> -LayerCount: 2 -Fore -SplineSet -981 1434 m 1,0,-1 - 1247 1434 l 1,1,-1 - 1247 610 l 2,2,3 - 1247 461 1247 461 1217.5 348.5 c 128,-1,4 - 1188 236 1188 236 1139 167 c 128,-1,5 - 1090 98 1090 98 1017 55 c 128,-1,6 - 944 12 944 12 867 -4 c 128,-1,7 - 790 -20 790 -20 696 -20 c 0,8,9 - 625 -20 625 -20 556 -4.5 c 128,-1,10 - 487 11 487 11 412.5 55 c 128,-1,11 - 338 99 338 99 283 166.5 c 128,-1,12 - 228 234 228 234 192 348.5 c 128,-1,13 - 156 463 156 463 156 610 c 2,14,-1 - 156 1434 l 1,15,-1 - 422 1434 l 1,16,-1 - 422 610 l 2,17,18 - 422 480 422 480 439 382.5 c 128,-1,19 - 456 285 456 285 482.5 229 c 128,-1,20 - 509 173 509 173 548.5 138.5 c 128,-1,21 - 588 104 588 104 625.5 93 c 128,-1,22 - 663 82 663 82 709 82 c 0,23,24 - 759 82 759 82 797.5 95.5 c 128,-1,25 - 836 109 836 109 871.5 144.5 c 128,-1,26 - 907 180 907 180 930.5 238 c 128,-1,27 - 954 296 954 296 967.5 390 c 128,-1,28 - 981 484 981 484 981 610 c 2,29,-1 - 981 1434 l 1,0,-1 -760 1432 m 1,30,-1 - 889 1432 l 1,31,-1 - 889 1262 l 1,32,-1 - 760 1262 l 1,33,-1 - 760 1432 l 1,30,-1 -514 1432 m 1,34,-1 - 643 1432 l 1,35,-1 - 643 1262 l 1,36,-1 - 514 1262 l 1,37,-1 - 514 1432 l 1,34,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni25CC -Encoding: 9676 9676 939 -Width: 1081 -VWidth: 0 -Flags: W -HStem: 0 94<494 588> 119 94<209 303 778 872> 403 94<90 184 897 991> 688 94<209 303 778 872> 807 94<494 588> -VStem: 90 94<403 498> 209 94<119 213 688 782> 494 94<0 94 807 901> 778 94<119 213 688 782> 897 94<403 498> -AnchorPoint: "top" 545 1004 basechar 0 -AnchorPoint: "ogonek" 547 0 basechar 0 -AnchorPoint: "bottom" 526 0 basechar 0 -AnchorPoint: "horn" 891 635 basechar 0 -AnchorPoint: "cedilla" 516 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -872 688 m 1,0,-1 - 778 688 l 1,1,-1 - 778 782 l 1,2,-1 - 872 782 l 1,3,-1 - 872 688 l 1,0,-1 -303 119 m 1,4,-1 - 209 119 l 1,5,-1 - 209 213 l 1,6,-1 - 303 213 l 1,7,-1 - 303 119 l 1,4,-1 -778 119 m 1,8,-1 - 778 213 l 1,9,-1 - 872 213 l 1,10,-1 - 872 119 l 1,11,-1 - 778 119 l 1,8,-1 -209 688 m 1,12,-1 - 209 782 l 1,13,-1 - 303 782 l 1,14,-1 - 303 688 l 1,15,-1 - 209 688 l 1,12,-1 -897 403 m 1,16,-1 - 897 498 l 1,17,-1 - 991 498 l 1,18,-1 - 991 403 l 1,19,-1 - 897 403 l 1,16,-1 -90 403 m 1,20,-1 - 90 498 l 1,21,-1 - 184 498 l 1,22,-1 - 184 403 l 1,23,-1 - 90 403 l 1,20,-1 -494 94 m 1,24,-1 - 588 94 l 1,25,-1 - 588 0 l 1,26,-1 - 494 0 l 1,27,-1 - 494 94 l 1,24,-1 -494 901 m 1,28,-1 - 588 901 l 1,29,-1 - 588 807 l 1,30,-1 - 494 807 l 1,31,-1 - 494 901 l 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii299 -Encoding: 8206 8206 940 -Width: 731 -VWidth: 0 -Flags: W -HStem: 1337 61<225 512> -VStem: 164 61<-410 1337> -LayerCount: 2 -Fore -SplineSet -629 1368 m 1,0,-1 - 410 1149 l 1,1,-1 - 410 1235 l 1,2,-1 - 512 1337 l 1,3,-1 - 225 1337 l 1,4,-1 - 225 -410 l 1,5,-1 - 164 -410 l 1,6,-1 - 164 1399 l 1,7,-1 - 512 1399 l 1,8,-1 - 410 1501 l 1,9,-1 - 410 1589 l 1,10,-1 - 629 1368 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii300 -Encoding: 8207 8207 941 -Width: 731 -VWidth: 0 -Flags: W -HStem: 1337 61<219 506> -VStem: 506 61<-410 1337> -LayerCount: 2 -Fore -SplineSet -102 1368 m 1,0,-1 - 322 1589 l 1,1,-1 - 322 1501 l 1,2,-1 - 219 1399 l 1,3,-1 - 567 1399 l 1,4,-1 - 567 -410 l 1,5,-1 - 506 -410 l 1,6,-1 - 506 1337 l 1,7,-1 - 219 1337 l 1,8,-1 - 322 1235 l 1,9,-1 - 322 1149 l 1,10,-1 - 102 1368 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: underscoredbl -Encoding: 8215 8215 942 -Width: 692 -VWidth: 0 -Flags: W -HStem: -369 102<0 692> -184 102<0 692> -LayerCount: 2 -Fore -SplineSet -0 -266 m 1,0,-1 - 692 -266 l 1,1,-1 - 692 -369 l 1,2,-1 - 0 -369 l 1,3,-1 - 0 -266 l 1,0,-1 -0 -82 m 1,4,-1 - 692 -82 l 1,5,-1 - 692 -184 l 1,6,-1 - 0 -184 l 1,7,-1 - 0 -82 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57664 -Encoding: 1488 1488 943 -Width: 1316 -VWidth: 0 -Flags: W -HStem: 0 43G<86 340 922 1210> -VStem: 86 254<0 276> 977 254<810 1085> -LayerCount: 2 -Fore -SplineSet -463 629 m 1,0,-1 - 106 1085 l 1,1,-1 - 362 1085 l 1,2,-1 - 776 555 l 1,3,4 - 815 588 815 588 841.5 615.5 c 128,-1,5 - 868 643 868 643 896 687.5 c 128,-1,6 - 924 732 924 732 940 784 c 128,-1,7 - 956 836 956 836 966.5 912.5 c 128,-1,8 - 977 989 977 989 977 1085 c 1,9,-1 - 1231 1085 l 1,10,11 - 1231 1020 1231 1020 1223.5 962 c 128,-1,12 - 1216 904 1216 904 1205 858.5 c 128,-1,13 - 1194 813 1194 813 1173 770 c 128,-1,14 - 1152 727 1152 727 1134.5 696.5 c 128,-1,15 - 1117 666 1117 666 1085.5 633 c 128,-1,16 - 1054 600 1054 600 1033.5 580.5 c 128,-1,17 - 1013 561 1013 561 974.5 534 c 128,-1,18 - 936 507 936 507 915.5 494 c 128,-1,19 - 895 481 895 481 854 455 c 1,20,-1 - 1210 0 l 1,21,-1 - 954 0 l 1,22,-1 - 541 530 l 1,23,24 - 491 488 491 488 460 451.5 c 128,-1,25 - 429 415 429 415 398.5 355 c 128,-1,26 - 368 295 368 295 354 207.5 c 128,-1,27 - 340 120 340 120 340 0 c 1,28,-1 - 86 0 l 1,29,30 - 86 113 86 113 108.5 205 c 128,-1,31 - 131 297 131 297 163 356.5 c 128,-1,32 - 195 416 195 416 249 469.5 c 128,-1,33 - 303 523 303 523 346.5 553.5 c 128,-1,34 - 390 584 390 584 454 624 c 0,35,36 - 460 627 460 627 463 629 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57665 -Encoding: 1489 1489 944 -Width: 1105 -VWidth: 0 -Flags: W -HStem: 0 102<86 676 932 999> 907 43G<86 130> 1004 102<182 578> -VStem: 676 256<102 875> -LayerCount: 2 -Fore -SplineSet -86 1055 m 1,0,1 - 213 1106 213 1106 358 1106 c 0,2,3 - 932 1106 932 1106 932 676 c 2,4,-1 - 932 102 l 1,5,-1 - 999 102 l 1,6,-1 - 999 0 l 1,7,-1 - 86 0 l 1,8,-1 - 86 102 l 1,9,-1 - 676 102 l 1,10,-1 - 676 651 l 2,11,12 - 676 757 676 757 659 827 c 128,-1,13 - 642 897 642 897 605.5 935.5 c 128,-1,14 - 569 974 569 974 520 989 c 128,-1,15 - 471 1004 471 1004 397 1004 c 0,16,17 - 231 1004 231 1004 86 907 c 1,18,-1 - 86 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57666 -Encoding: 1490 1490 945 -Width: 1103 -VWidth: 0 -Flags: W -HStem: 0 43G<90 393 707 1001> 1004 102<313 578> -VStem: 90 260<0 122> 649 256<124 420 531 923> -LayerCount: 2 -Fore -SplineSet -1001 0 m 1,0,-1 - 733 0 l 1,1,2 - 649 176 649 176 649 401 c 2,3,-1 - 649 420 l 1,4,5 - 578 395 578 395 529.5 352 c 128,-1,6 - 481 309 481 309 437 224.5 c 128,-1,7 - 393 140 393 140 350 0 c 1,8,-1 - 90 0 l 1,9,10 - 113 85 113 85 145 155.5 c 128,-1,11 - 177 226 177 226 211 276.5 c 128,-1,12 - 245 327 245 327 289.5 368 c 128,-1,13 - 334 409 334 409 374 435.5 c 128,-1,14 - 414 462 414 462 465.5 483.5 c 128,-1,15 - 517 505 517 505 557 517 c 128,-1,16 - 597 529 597 529 649 541 c 1,17,-1 - 649 758 l 2,18,19 - 649 876 649 876 597 940 c 128,-1,20 - 545 1004 545 1004 477 1004 c 0,21,22 - 434 1004 434 1004 380 991.5 c 128,-1,23 - 326 979 326 979 307 952 c 1,24,-1 - 178 1014 l 1,25,26 - 214 1057 214 1057 296 1081.5 c 128,-1,27 - 378 1106 378 1106 446 1106 c 0,28,29 - 524 1106 524 1106 587.5 1097 c 128,-1,30 - 651 1088 651 1088 711.5 1064.5 c 128,-1,31 - 772 1041 772 1041 813.5 1003 c 128,-1,32 - 855 965 855 965 880 902.5 c 128,-1,33 - 905 840 905 840 905 758 c 2,34,-1 - 905 401 l 2,35,36 - 905 179 905 179 1001 0 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57667 -Encoding: 1491 1491 946 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 43G<610 866> 983 102<16 610 866 934> -VStem: 610 256<0 983> -LayerCount: 2 -Fore -SplineSet -866 0 m 1,0,-1 - 610 0 l 1,1,-1 - 610 983 l 1,2,-1 - 16 983 l 1,3,-1 - 16 1085 l 1,4,-1 - 934 1085 l 1,5,-1 - 934 983 l 1,6,-1 - 866 983 l 1,7,-1 - 866 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57668 -Encoding: 1492 1492 947 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43G<102 358 918 1174> 907 43G<102 146> 1004 102<222 727> -VStem: 102 256<0 571> 918 256<0 818> -LayerCount: 2 -Fore -SplineSet -358 571 m 9,0,-1 - 358 0 l 1,1,-1 - 102 0 l 1,2,-1 - 102 573 l 1,3,-1 - 358 571 l 9,0,-1 -102 1055 m 1,4,5 - 159 1078 159 1078 269.5 1092 c 128,-1,6 - 380 1106 380 1106 463 1106 c 0,7,8 - 634 1106 634 1106 758.5 1081 c 128,-1,9 - 883 1056 883 1056 963 1011.5 c 128,-1,10 - 1043 967 1043 967 1090 894.5 c 128,-1,11 - 1137 822 1137 822 1155.5 737 c 128,-1,12 - 1174 652 1174 652 1174 537 c 2,13,-1 - 1174 0 l 1,14,-1 - 918 0 l 1,15,-1 - 918 651 l 2,16,17 - 918 734 918 734 892 797.5 c 128,-1,18 - 866 861 866 861 825.5 899.5 c 128,-1,19 - 785 938 785 938 728.5 962 c 128,-1,20 - 672 986 672 986 617.5 995 c 128,-1,21 - 563 1004 563 1004 502 1004 c 0,22,23 - 406 1004 406 1004 285.5 976.5 c 128,-1,24 - 165 949 165 949 102 907 c 1,25,-1 - 102 1055 l 1,4,5 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57669 -Encoding: 1493 1493 948 -Width: 778 -VWidth: 0 -Flags: W -HStem: 0 43G<420 676> 952 102<216 391> -VStem: 420 256<0 916> -LayerCount: 2 -Fore -SplineSet -319 952 m 0,0,1 - 255 952 255 952 187 976 c 128,-1,2 - 119 1000 119 1000 82 1044 c 1,3,-1 - 211 1106 l 1,4,5 - 247 1055 247 1055 319 1055 c 0,6,7 - 364 1055 364 1055 411 1045.5 c 128,-1,8 - 458 1036 458 1036 506 1014 c 128,-1,9 - 554 992 554 992 591.5 960.5 c 128,-1,10 - 629 929 629 929 652.5 880.5 c 128,-1,11 - 676 832 676 832 676 774 c 2,12,-1 - 676 0 l 1,13,-1 - 420 0 l 1,14,-1 - 420 707 l 2,15,16 - 420 840 420 840 399 896 c 128,-1,17 - 378 952 378 952 319 952 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57670 -Encoding: 1494 1494 949 -Width: 796 -VWidth: 0 -Flags: W -HStem: 0 43G<258 514> -VStem: 258 256<0 762> -LayerCount: 2 -Fore -SplineSet -414 856 m 1,0,-1 - 82 948 l 1,1,-1 - 82 1085 l 1,2,-1 - 715 909 l 1,3,-1 - 715 772 l 1,4,-1 - 592 807 l 1,5,6 - 553 779 553 779 533.5 715 c 128,-1,7 - 514 651 514 651 514 526 c 2,8,-1 - 514 0 l 1,9,-1 - 258 0 l 1,10,-1 - 258 582 l 2,11,12 - 258 644 258 644 270.5 692 c 128,-1,13 - 283 740 283 740 307 771 c 128,-1,14 - 331 802 331 802 356 821 c 128,-1,15 - 381 840 381 840 414 856 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57671 -Encoding: 1495 1495 950 -Width: 1241 -VWidth: 0 -Flags: W -HStem: 0 43G<102 358 883 1139> 1004 102<361 719> -VStem: 102 256<0 997> 883 256<0 833> -LayerCount: 2 -Fore -SplineSet -102 1055 m 1,0,1 - 159 1078 159 1078 271 1092 c 128,-1,2 - 383 1106 383 1106 467 1106 c 0,3,4 - 818 1106 818 1106 978.5 989 c 128,-1,5 - 1139 872 1139 872 1139 594 c 2,6,-1 - 1139 0 l 1,7,-1 - 883 0 l 1,8,-1 - 883 651 l 2,9,10 - 883 1004 883 1004 506 1004 c 0,11,12 - 444 1004 444 1004 358 991 c 1,13,-1 - 358 0 l 1,14,-1 - 102 0 l 1,15,-1 - 102 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57672 -Encoding: 1496 1496 951 -Width: 1318 -VWidth: 0 -Flags: W -HStem: -20 102<518 802> 1001 102<706 926> -VStem: 102 256<275 1085> 961 256<275 953> -LayerCount: 2 -Fore -SplineSet -961 520 m 2,0,-1 - 961 756 l 2,1,2 - 961 885 961 885 935.5 943 c 128,-1,3 - 910 1001 910 1001 850 1001 c 0,4,5 - 777 1001 777 1001 741 950 c 1,6,-1 - 612 1012 l 1,7,8 - 689 1104 689 1104 819 1104 c 0,9,10 - 877 1104 877 1104 942 1088 c 128,-1,11 - 1007 1072 1007 1072 1070.5 1040.5 c 128,-1,12 - 1134 1009 1134 1009 1175.5 952 c 128,-1,13 - 1217 895 1217 895 1217 823 c 2,14,-1 - 1217 496 l 2,15,16 - 1217 263 1217 263 1067 121.5 c 128,-1,17 - 917 -20 917 -20 659 -20 c 0,18,19 - 406 -20 406 -20 254 122 c 128,-1,20 - 102 264 102 264 102 496 c 2,21,-1 - 102 1085 l 1,22,-1 - 358 1085 l 1,23,-1 - 358 520 l 2,24,25 - 358 404 358 404 384 316 c 128,-1,26 - 410 228 410 228 454.5 178.5 c 128,-1,27 - 499 129 499 129 550.5 105.5 c 128,-1,28 - 602 82 602 82 659 82 c 128,-1,29 - 716 82 716 82 767 105.5 c 128,-1,30 - 818 129 818 129 863 178.5 c 128,-1,31 - 908 228 908 228 934.5 316 c 128,-1,32 - 961 404 961 404 961 520 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57673 -Encoding: 1497 1497 952 -Width: 737 -VWidth: 0 -Flags: W -HStem: 1001 102<176 370> -VStem: 389 256<520 966> -LayerCount: 2 -Fore -SplineSet -389 520 m 9,0,-1 - 389 756 l 2,1,2 - 389 859 389 859 381 912.5 c 128,-1,3 - 373 966 373 966 359 983.5 c 128,-1,4 - 345 1001 345 1001 319 1001 c 0,5,6 - 247 1001 247 1001 211 950 c 1,7,-1 - 82 1012 l 1,8,9 - 159 1104 159 1104 289 1104 c 0,10,11 - 334 1104 334 1104 381 1094.5 c 128,-1,12 - 428 1085 428 1085 476 1063 c 128,-1,13 - 524 1041 524 1041 561 1009.5 c 128,-1,14 - 598 978 598 978 621.5 929.5 c 128,-1,15 - 645 881 645 881 645 823 c 2,16,-1 - 645 520 l 1,17,-1 - 389 520 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57674 -Encoding: 1498 1498 953 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 907 43G<16 60> 1004 102<122 568> -VStem: 694 256<-410 860> -LayerCount: 2 -Fore -SplineSet -16 1055 m 1,0,1 - 75 1079 75 1079 163.5 1092.5 c 128,-1,2 - 252 1106 252 1106 330 1106 c 0,3,4 - 619 1106 619 1106 784.5 997 c 128,-1,5 - 950 888 950 888 950 676 c 2,6,-1 - 950 -410 l 1,7,-1 - 694 -410 l 1,8,-1 - 694 651 l 2,9,10 - 694 735 694 735 677.5 797.5 c 128,-1,11 - 661 860 661 860 633.5 899 c 128,-1,12 - 606 938 606 938 563.5 962 c 128,-1,13 - 521 986 521 986 474.5 995 c 128,-1,14 - 428 1004 428 1004 369 1004 c 0,15,16 - 278 1004 278 1004 179.5 977.5 c 128,-1,17 - 81 951 81 951 16 907 c 1,18,-1 - 16 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57675 -Encoding: 1499 1499 954 -Width: 1122 -VWidth: 0 -Flags: W -HStem: -20 102<192 638> 907 43G<86 130> 1004 102<192 638> -VStem: 764 256<225 860> -LayerCount: 2 -Fore -SplineSet -1020 676 m 2,0,-1 - 1020 410 l 2,1,2 - 1020 198 1020 198 854 89 c 128,-1,3 - 688 -20 688 -20 399 -20 c 0,4,5 - 321 -20 321 -20 233 -6.5 c 128,-1,6 - 145 7 145 7 86 31 c 1,7,-1 - 86 178 l 1,8,9 - 151 135 151 135 249 108.5 c 128,-1,10 - 347 82 347 82 438 82 c 0,11,12 - 513 82 513 82 568.5 97 c 128,-1,13 - 624 112 624 112 670 149.5 c 128,-1,14 - 716 187 716 187 740 258.5 c 128,-1,15 - 764 330 764 330 764 434 c 2,16,-1 - 764 651 l 2,17,18 - 764 755 764 755 740 826.5 c 128,-1,19 - 716 898 716 898 670 935.5 c 128,-1,20 - 624 973 624 973 568.5 988.5 c 128,-1,21 - 513 1004 513 1004 438 1004 c 0,22,23 - 347 1004 347 1004 249 977.5 c 128,-1,24 - 151 951 151 951 86 907 c 1,25,-1 - 86 1055 l 1,26,27 - 145 1079 145 1079 233 1092.5 c 128,-1,28 - 321 1106 321 1106 399 1106 c 0,29,30 - 688 1106 688 1106 854 997 c 128,-1,31 - 1020 888 1020 888 1020 676 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57676 -Encoding: 1500 1500 955 -Width: 995 -VWidth: 0 -Flags: W -HStem: 0 43G<168 379> 983 102<328 533> 1393 41G<82 328> -VStem: 82 246<1085 1434> 168 211<0 168> 647 256<549 889> -LayerCount: 2 -Fore -SplineSet -82 983 m 1,0,-1 - 82 1434 l 1,1,-1 - 328 1434 l 1,2,-1 - 328 1085 l 1,3,4 - 638 1085 638 1085 770.5 1001.5 c 128,-1,5 - 903 918 903 918 903 717 c 0,6,7 - 903 631 903 631 874 566 c 128,-1,8 - 845 501 845 501 799 461 c 128,-1,9 - 753 421 753 421 697 388 c 128,-1,10 - 641 355 641 355 585 322.5 c 128,-1,11 - 529 290 529 290 483 251 c 128,-1,12 - 437 212 437 212 408 148.5 c 128,-1,13 - 379 85 379 85 379 0 c 1,14,-1 - 168 0 l 1,15,16 - 168 80 168 80 194.5 143.5 c 128,-1,17 - 221 207 221 207 263 248 c 128,-1,18 - 305 289 305 289 356.5 325 c 128,-1,19 - 408 361 408 361 459 397.5 c 128,-1,20 - 510 434 510 434 552 475.5 c 128,-1,21 - 594 517 594 517 620.5 581 c 128,-1,22 - 647 645 647 645 647 727 c 0,23,24 - 647 773 647 773 640 807.5 c 128,-1,25 - 633 842 633 842 611.5 876.5 c 128,-1,26 - 590 911 590 911 553 933 c 128,-1,27 - 516 955 516 955 452.5 969 c 128,-1,28 - 389 983 389 983 301 983 c 2,29,-1 - 82 983 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57677 -Encoding: 1501 1501 956 -Width: 1286 -VWidth: 0 -Flags: W -HStem: 0 102<358 928> 1004 102<361 763> -VStem: 102 256<102 992> 928 256<102 844> -LayerCount: 2 -Fore -SplineSet -102 1055 m 1,0,1 - 158 1077 158 1077 290.5 1091.5 c 128,-1,2 - 423 1106 423 1106 512 1106 c 0,3,4 - 654 1106 654 1106 774.5 1079.5 c 128,-1,5 - 895 1053 895 1053 987.5 1001 c 128,-1,6 - 1080 949 1080 949 1132 865.5 c 128,-1,7 - 1184 782 1184 782 1184 676 c 2,8,-1 - 1184 0 l 1,9,-1 - 102 0 l 1,10,-1 - 102 1055 l 1,0,1 -358 985 m 1,11,-1 - 358 102 l 1,12,-1 - 928 102 l 1,13,-1 - 928 651 l 2,14,15 - 928 1004 928 1004 551 1004 c 0,16,17 - 472 1004 472 1004 358 985 c 1,11,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57678 -Encoding: 1502 1502 957 -Width: 1396 -VWidth: 0 -Flags: W -HStem: 0 102<684 1028> 1004 102<603 932> -VStem: 1028 266<102 875> -LayerCount: 2 -Fore -SplineSet -100 0 m 1,0,-1 - 219 674 l 2,1,2 - 229 728 229 728 242 766 c 1,3,-1 - 92 1085 l 1,4,-1 - 313 1085 l 1,5,-1 - 369 969 l 1,6,7 - 440 1038 440 1038 532 1072 c 128,-1,8 - 624 1106 624 1106 721 1106 c 0,9,10 - 1294 1106 1294 1106 1294 676 c 2,11,-1 - 1294 0 l 1,12,-1 - 684 0 l 1,13,-1 - 684 102 l 1,14,-1 - 1028 102 l 1,15,-1 - 1028 651 l 2,16,17 - 1028 793 1028 793 998.5 870.5 c 128,-1,18 - 969 948 969 948 913.5 976 c 128,-1,19 - 858 1004 858 1004 760 1004 c 0,20,21 - 634 1004 634 1004 566.5 925 c 128,-1,22 - 499 846 499 846 463 645 c 2,23,-1 - 348 0 l 1,24,-1 - 100 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57679 -Encoding: 1503 1503 958 -Width: 757 -VWidth: 0 -Flags: W -HStem: 1001 102<165 371> -VStem: 399 256<-410 962> -LayerCount: 2 -Fore -SplineSet -399 -410 m 9,0,-1 - 399 756 l 2,1,2 - 399 889 399 889 380.5 945 c 128,-1,3 - 362 1001 362 1001 309 1001 c 0,4,5 - 237 1001 237 1001 201 950 c 1,6,-1 - 72 1012 l 1,7,8 - 149 1104 149 1104 279 1104 c 0,9,10 - 471 1104 471 1104 563 1022.5 c 128,-1,11 - 655 941 655 941 655 754 c 2,12,-1 - 655 -410 l 1,13,-1 - 399 -410 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57680 -Encoding: 1504 1504 959 -Width: 772 -VWidth: 0 -Flags: W -HStem: 0 102<86 414> 1001 102<180 387> -VStem: 414 256<102 953> -LayerCount: 2 -Fore -SplineSet -670 0 m 1,0,-1 - 86 0 l 1,1,-1 - 86 102 l 1,2,-1 - 414 102 l 1,3,-1 - 414 756 l 2,4,5 - 414 890 414 890 396 945.5 c 128,-1,6 - 378 1001 378 1001 324 1001 c 0,7,8 - 251 1001 251 1001 215 950 c 1,9,-1 - 86 1012 l 1,10,11 - 163 1104 163 1104 293 1104 c 0,12,13 - 366 1104 366 1104 420 1095.5 c 128,-1,14 - 474 1087 474 1087 523.5 1062.5 c 128,-1,15 - 573 1038 573 1038 603.5 996 c 128,-1,16 - 634 954 634 954 652 885 c 128,-1,17 - 670 816 670 816 670 721 c 2,18,-1 - 670 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57681 -Encoding: 1505 1505 960 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<542 867> 983 102<92 305 442 864> -VStem: 117 256<278 745> 1016 256<299 762> -LayerCount: 2 -Fore -SplineSet -92 1085 m 1,0,-1 - 696 1085 l 2,1,2 - 814 1085 814 1085 917 1050 c 128,-1,3 - 1020 1015 1020 1015 1099.5 947.5 c 128,-1,4 - 1179 880 1179 880 1225.5 773 c 128,-1,5 - 1272 666 1272 666 1272 532 c 0,6,7 - 1272 397 1272 397 1226 290 c 128,-1,8 - 1180 183 1180 183 1100 116.5 c 128,-1,9 - 1020 50 1020 50 917.5 15 c 128,-1,10 - 815 -20 815 -20 696 -20 c 0,11,12 - 601 -20 601 -20 516.5 -1.5 c 128,-1,13 - 432 17 432 17 358 58.5 c 128,-1,14 - 284 100 284 100 231 160 c 128,-1,15 - 178 220 178 220 147.5 308 c 128,-1,16 - 117 396 117 396 117 504 c 0,17,18 - 117 585 117 585 131.5 654.5 c 128,-1,19 - 146 724 146 724 177.5 785.5 c 128,-1,20 - 209 847 209 847 234.5 885.5 c 128,-1,21 - 260 924 260 924 305 983 c 1,22,-1 - 92 983 l 1,23,-1 - 92 1085 l 1,0,-1 -471 983 m 1,24,25 - 409 899 409 899 391 801.5 c 128,-1,26 - 373 704 373 704 373 504 c 0,27,28 - 373 391 373 391 400.5 307.5 c 128,-1,29 - 428 224 428 224 477.5 176 c 128,-1,30 - 527 128 527 128 589 105 c 128,-1,31 - 651 82 651 82 727 82 c 0,32,33 - 853 82 853 82 934.5 193.5 c 128,-1,34 - 1016 305 1016 305 1016 532 c 0,35,36 - 1016 652 1016 652 993 741 c 128,-1,37 - 970 830 970 830 929.5 882 c 128,-1,38 - 889 934 889 934 838.5 958.5 c 128,-1,39 - 788 983 788 983 727 983 c 2,40,-1 - 471 983 l 1,24,25 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57682 -Encoding: 1506 1506 961 -Width: 1175 -VWidth: 0 -Flags: W -HStem: -328 102<94 304> -VStem: 827 256<675 1085> -LayerCount: 2 -Fore -SplineSet -94 -328 m 1,0,-1 - 94 -225 l 1,1,2 - 287 -225 287 -225 436 -111 c 1,3,-1 - 115 1085 l 1,4,-1 - 338 1085 l 1,5,-1 - 604 78 l 1,6,7 - 719 261 719 261 773 526.5 c 128,-1,8 - 827 792 827 792 827 1085 c 1,9,-1 - 1083 1085 l 1,10,11 - 1083 952 1083 952 1064 814 c 128,-1,12 - 1045 676 1045 676 1005.5 537 c 128,-1,13 - 966 398 966 398 908.5 271.5 c 128,-1,14 - 851 145 851 145 768.5 35.5 c 128,-1,15 - 686 -74 686 -74 587.5 -155 c 128,-1,16 - 489 -236 489 -236 362.5 -282 c 128,-1,17 - 236 -328 236 -328 94 -328 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57683 -Encoding: 1507 1507 962 -Width: 1253 -VWidth: 0 -Flags: W -HStem: 471 102<369 600> 1004 102<351 758> -VStem: 90 256<616 989> 895 256<-410 856> -LayerCount: 2 -Fore -SplineSet -895 -410 m 1,0,-1 - 895 651 l 2,1,2 - 895 755 895 755 869 826.5 c 128,-1,3 - 843 898 843 898 794 935.5 c 128,-1,4 - 745 973 745 973 687.5 988.5 c 128,-1,5 - 630 1004 630 1004 555 1004 c 0,6,7 - 486 1004 486 1004 346 983 c 1,8,-1 - 346 819 l 2,9,10 - 346 763 346 763 347.5 728.5 c 128,-1,11 - 349 694 349 694 354 661 c 128,-1,12 - 359 628 359 628 369 610.5 c 128,-1,13 - 379 593 379 593 395.5 583 c 128,-1,14 - 412 573 412 573 436 573 c 0,15,16 - 476 573 476 573 521.5 585.5 c 128,-1,17 - 567 598 567 598 586 625 c 1,18,-1 - 674 563 l 1,19,20 - 597 471 597 471 467 471 c 0,21,22 - 422 471 422 471 373 480.5 c 128,-1,23 - 324 490 324 490 273 512 c 128,-1,24 - 222 534 222 534 181.5 565 c 128,-1,25 - 141 596 141 596 115.5 645 c 128,-1,26 - 90 694 90 694 90 752 c 2,27,-1 - 90 1055 l 1,28,29 - 145 1077 145 1077 285 1091.5 c 128,-1,30 - 425 1106 425 1106 516 1106 c 0,31,32 - 806 1106 806 1106 978.5 996.5 c 128,-1,33 - 1151 887 1151 887 1151 676 c 2,34,-1 - 1151 -410 l 1,35,-1 - 895 -410 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57684 -Encoding: 1508 1508 963 -Width: 1253 -VWidth: 0 -Flags: W -HStem: -20 102<214 726> 471 102<369 600> 1004 102<351 726> -VStem: 90 256<616 996> 895 256<241 844> -LayerCount: 2 -Fore -SplineSet -1151 676 m 2,0,-1 - 1151 410 l 2,1,2 - 1151 195 1151 195 975.5 87.5 c 128,-1,3 - 800 -20 800 -20 467 -20 c 0,4,5 - 382 -20 382 -20 264 -6 c 128,-1,6 - 146 8 146 8 90 31 c 1,7,-1 - 90 178 l 1,8,9 - 152 136 152 136 280 109 c 128,-1,10 - 408 82 408 82 506 82 c 0,11,12 - 566 82 566 82 618 90.5 c 128,-1,13 - 670 99 670 99 722.5 123.5 c 128,-1,14 - 775 148 775 148 812 186 c 128,-1,15 - 849 224 849 224 872 287.5 c 128,-1,16 - 895 351 895 351 895 434 c 2,17,-1 - 895 651 l 2,18,19 - 895 734 895 734 872 797.5 c 128,-1,20 - 849 861 849 861 812 899.5 c 128,-1,21 - 775 938 775 938 722.5 962 c 128,-1,22 - 670 986 670 986 618 995 c 128,-1,23 - 566 1004 566 1004 506 1004 c 0,24,25 - 435 1004 435 1004 346 989 c 1,26,-1 - 346 819 l 2,27,28 - 346 763 346 763 347.5 728.5 c 128,-1,29 - 349 694 349 694 354 661 c 128,-1,30 - 359 628 359 628 369 610.5 c 128,-1,31 - 379 593 379 593 395.5 583 c 128,-1,32 - 412 573 412 573 436 573 c 0,33,34 - 476 573 476 573 521.5 585.5 c 128,-1,35 - 567 598 567 598 586 625 c 1,36,-1 - 674 563 l 1,37,38 - 597 471 597 471 467 471 c 0,39,40 - 422 471 422 471 373 480.5 c 128,-1,41 - 324 490 324 490 273 512 c 128,-1,42 - 222 534 222 534 181.5 565 c 128,-1,43 - 141 596 141 596 115.5 645 c 128,-1,44 - 90 694 90 694 90 752 c 2,45,-1 - 90 1055 l 1,46,47 - 146 1078 146 1078 264 1092 c 128,-1,48 - 382 1106 382 1106 467 1106 c 0,49,50 - 800 1106 800 1106 975.5 998.5 c 128,-1,51 - 1151 891 1151 891 1151 676 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57685 -Encoding: 1509 1509 964 -Width: 1216 -VWidth: 0 -Flags: W -VStem: 78 256<824 1085> 639 256<-410 297> 862 256<847 1085> -LayerCount: 2 -Fore -SplineSet -639 -410 m 1,0,-1 - 639 143 l 2,1,2 - 639 199 639 199 620 247.5 c 128,-1,3 - 601 296 601 296 568.5 334 c 128,-1,4 - 536 372 536 372 494 408 c 128,-1,5 - 452 444 452 444 405.5 480.5 c 128,-1,6 - 359 517 359 517 312 557 c 128,-1,7 - 265 597 265 597 223 648.5 c 128,-1,8 - 181 700 181 700 148.5 760.5 c 128,-1,9 - 116 821 116 821 97 904 c 128,-1,10 - 78 987 78 987 78 1085 c 1,11,-1 - 334 1085 l 1,12,13 - 334 1011 334 1011 345 946 c 128,-1,14 - 356 881 356 881 372 832.5 c 128,-1,15 - 388 784 388 784 417 738.5 c 128,-1,16 - 446 693 446 693 470.5 663.5 c 128,-1,17 - 495 634 495 634 534.5 601 c 128,-1,18 - 574 568 574 568 599.5 550 c 128,-1,19 - 625 532 625 532 668 504 c 1,20,21 - 862 684 862 684 862 1085 c 1,22,-1 - 1118 1085 l 1,23,24 - 1118 982 1118 982 1088.5 883 c 128,-1,25 - 1059 784 1059 784 1008 702 c 128,-1,26 - 957 620 957 620 898 554.5 c 128,-1,27 - 839 489 839 489 770 434 c 1,28,29 - 830 386 830 386 862.5 332.5 c 128,-1,30 - 895 279 895 279 895 205 c 2,31,-1 - 895 -410 l 1,32,-1 - 639 -410 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57686 -Encoding: 1510 1510 965 -Width: 1122 -VWidth: 0 -Flags: W -HStem: 0 102<92 778> -VStem: 61 266<823 1085> 825 256<150 294 846 1085> -LayerCount: 2 -Fore -SplineSet -92 0 m 1,0,-1 - 92 102 l 1,1,-1 - 449 102 l 2,2,3 - 600 102 600 102 682 116 c 128,-1,4 - 764 130 764 130 794.5 158 c 128,-1,5 - 825 186 825 186 825 236 c 0,6,7 - 825 261 825 261 799 283.5 c 128,-1,8 - 773 306 773 306 728.5 326 c 128,-1,9 - 684 346 684 346 627 368 c 128,-1,10 - 570 390 570 390 506.5 420 c 128,-1,11 - 443 450 443 450 379.5 487.5 c 128,-1,12 - 316 525 316 525 259 581 c 128,-1,13 - 202 637 202 637 157.5 705.5 c 128,-1,14 - 113 774 113 774 87 871.5 c 128,-1,15 - 61 969 61 969 61 1085 c 1,16,-1 - 328 1085 l 1,17,18 - 328 984 328 984 345 899.5 c 128,-1,19 - 362 815 362 815 390 755 c 128,-1,20 - 418 695 418 695 459.5 646 c 128,-1,21 - 501 597 501 597 543.5 565.5 c 128,-1,22 - 586 534 586 534 639 508 c 1,23,24 - 819 682 819 682 819 1085 c 1,25,-1 - 1081 1085 l 1,26,27 - 1081 987 1081 987 1055 893 c 128,-1,28 - 1029 799 1029 799 983 720 c 128,-1,29 - 937 641 937 641 882.5 576.5 c 128,-1,30 - 828 512 828 512 764 457 c 1,31,32 - 786 449 786 449 824.5 436 c 128,-1,33 - 863 423 863 423 884 416 c 128,-1,34 - 905 409 905 409 936.5 396 c 128,-1,35 - 968 383 968 383 985.5 373 c 128,-1,36 - 1003 363 1003 363 1024 347.5 c 128,-1,37 - 1045 332 1045 332 1055.5 316 c 128,-1,38 - 1066 300 1066 300 1073.5 278 c 128,-1,39 - 1081 256 1081 256 1081 231 c 0,40,41 - 1081 142 1081 142 1022.5 93 c 128,-1,42 - 964 44 964 44 828.5 22 c 128,-1,43 - 693 0 693 0 449 0 c 2,44,-1 - 92 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57687 -Encoding: 1511 1511 966 -Width: 1222 -VWidth: 0 -Flags: W -HStem: 0 43G<477 729> 983 102<102 740> -VStem: 102 256<-410 571> 477 252<0 177> 877 256<536 876> -LayerCount: 2 -Fore -SplineSet -358 571 m 9,0,-1 - 358 -410 l 1,1,-1 - 102 -410 l 1,2,-1 - 102 573 l 1,3,-1 - 358 571 l 9,0,-1 -102 1085 m 1,4,-1 - 459 1085 l 2,5,6 - 601 1085 601 1085 704.5 1074.5 c 128,-1,7 - 808 1064 808 1064 892 1039 c 128,-1,8 - 976 1014 976 1014 1027.5 972 c 128,-1,9 - 1079 930 1079 930 1106 867 c 128,-1,10 - 1133 804 1133 804 1133 717 c 0,11,12 - 1133 631 1133 631 1110.5 565 c 128,-1,13 - 1088 499 1088 499 1052.5 457.5 c 128,-1,14 - 1017 416 1017 416 974 381.5 c 128,-1,15 - 931 347 931 347 888 314 c 128,-1,16 - 845 281 845 281 809.5 242 c 128,-1,17 - 774 203 774 203 751.5 141.5 c 128,-1,18 - 729 80 729 80 729 0 c 1,19,-1 - 477 0 l 1,20,21 - 477 75 477 75 499 136 c 128,-1,22 - 521 197 521 197 556.5 238.5 c 128,-1,23 - 592 280 592 280 634.5 317.5 c 128,-1,24 - 677 355 677 355 719.5 393 c 128,-1,25 - 762 431 762 431 797.5 474.5 c 128,-1,26 - 833 518 833 518 855 582.5 c 128,-1,27 - 877 647 877 647 877 727 c 0,28,29 - 877 773 877 773 868.5 807.5 c 128,-1,30 - 860 842 860 842 832.5 877 c 128,-1,31 - 805 912 805 912 757.5 933.5 c 128,-1,32 - 710 955 710 955 627 969 c 128,-1,33 - 544 983 544 983 430 983 c 2,34,-1 - 102 983 l 1,35,-1 - 102 1085 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57688 -Encoding: 1512 1512 967 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 43G<694 950> 907 43G<16 60> 1004 102<122 568> -VStem: 694 256<0 860> -LayerCount: 2 -Fore -SplineSet -16 1055 m 1,0,1 - 75 1079 75 1079 163.5 1092.5 c 128,-1,2 - 252 1106 252 1106 330 1106 c 0,3,4 - 619 1106 619 1106 784.5 997 c 128,-1,5 - 950 888 950 888 950 676 c 2,6,-1 - 950 0 l 1,7,-1 - 694 0 l 1,8,-1 - 694 651 l 2,9,10 - 694 735 694 735 677.5 797.5 c 128,-1,11 - 661 860 661 860 633.5 899 c 128,-1,12 - 606 938 606 938 563.5 962 c 128,-1,13 - 521 986 521 986 474.5 995 c 128,-1,14 - 428 1004 428 1004 369 1004 c 0,15,16 - 278 1004 278 1004 179.5 977.5 c 128,-1,17 - 81 951 81 951 16 907 c 1,18,-1 - 16 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57689 -Encoding: 1513 1513 968 -Width: 1550 -VWidth: 0 -Flags: W -HStem: 0 43G<273 751> 444 104<442 518> -VStem: 713 244<890 1085> 1221 248<758 1085> -LayerCount: 2 -Fore -SplineSet -90 1085 m 1,0,-1 - 330 1085 l 1,1,-1 - 424 549 l 1,2,3 - 495 567 495 567 547.5 613 c 128,-1,4 - 600 659 600 659 633 731 c 128,-1,5 - 666 803 666 803 685 888.5 c 128,-1,6 - 704 974 704 974 713 1085 c 1,7,-1 - 956 1085 l 1,8,9 - 921 806 921 806 786.5 642 c 128,-1,10 - 652 478 652 478 442 444 c 1,11,-1 - 500 111 l 1,12,13 - 595 120 595 120 674.5 140.5 c 128,-1,14 - 754 161 754 161 817.5 189.5 c 128,-1,15 - 881 218 881 218 932.5 260.5 c 128,-1,16 - 984 303 984 303 1022.5 350 c 128,-1,17 - 1061 397 1061 397 1091 460.5 c 128,-1,18 - 1121 524 1121 524 1142 588.5 c 128,-1,19 - 1163 653 1163 653 1178.5 737 c 128,-1,20 - 1194 821 1194 821 1203.5 901.5 c 128,-1,21 - 1213 982 1213 982 1221 1085 c 1,22,-1 - 1468 1085 l 1,23,24 - 1454 886 1454 886 1424 737 c 128,-1,25 - 1394 588 1394 588 1337 463 c 128,-1,26 - 1280 338 1280 338 1195.5 254 c 128,-1,27 - 1111 170 1111 170 988 111.5 c 128,-1,28 - 865 53 865 53 702.5 26.5 c 128,-1,29 - 540 0 540 0 328 0 c 2,30,-1 - 281 0 l 1,31,-1 - 90 1085 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57690 -Encoding: 1514 1514 969 -Width: 1290 -VWidth: 0 -Flags: W -HStem: 0 102<86 176> 907 43G<86 101> 1004 102<487 764> -VStem: 227 256<151 961> 932 256<0 844> -LayerCount: 2 -Fore -SplineSet -86 1055 m 1,0,1 - 142 1077 142 1077 277 1091.5 c 128,-1,2 - 412 1106 412 1106 502 1106 c 0,3,4 - 644 1106 644 1106 767 1079 c 128,-1,5 - 890 1052 890 1052 984.5 1000.5 c 128,-1,6 - 1079 949 1079 949 1133.5 865.5 c 128,-1,7 - 1188 782 1188 782 1188 676 c 2,8,-1 - 1188 0 l 1,9,-1 - 932 0 l 1,10,-1 - 932 651 l 2,11,12 - 932 734 932 734 909 797.5 c 128,-1,13 - 886 861 886 861 848.5 899.5 c 128,-1,14 - 811 938 811 938 758.5 962 c 128,-1,15 - 706 986 706 986 653.5 995 c 128,-1,16 - 601 1004 601 1004 541 1004 c 0,17,18 - 513 1004 513 1004 483 1001 c 1,19,-1 - 483 281 l 2,20,21 - 483 223 483 223 455.5 174 c 128,-1,22 - 428 125 428 125 384.5 94 c 128,-1,23 - 341 63 341 63 287 41 c 128,-1,24 - 233 19 233 19 182 9.5 c 128,-1,25 - 131 0 131 0 86 0 c 1,26,-1 - 86 102 l 1,27,28 - 158 102 158 102 192.5 162 c 128,-1,29 - 227 222 227 222 227 348 c 2,30,-1 - 227 961 l 1,31,32 - 136 939 136 939 86 907 c 1,33,-1 - 86 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni037A -Encoding: 890 890 970 -Width: 442 -VWidth: 0 -Flags: W -HStem: -430 53<283 336> -VStem: 102 174<-374 -55> 344 57<-375 -301> -LayerCount: 2 -Fore -SplineSet -102 -55 m 1,0,-1 - 276 -55 l 1,1,-1 - 276 -254 l 2,2,3 - 276 -318 276 -318 281.5 -347.5 c 128,-1,4 - 287 -377 287 -377 303 -377 c 0,5,6 - 344 -377 344 -377 344 -301 c 1,7,-1 - 401 -301 l 1,8,9 - 401 -364 401 -364 372.5 -397 c 128,-1,10 - 344 -430 344 -430 293 -430 c 0,11,12 - 247 -430 247 -430 215.5 -422 c 128,-1,13 - 184 -414 184 -414 156.5 -391 c 128,-1,14 - 129 -368 129 -368 115.5 -322 c 128,-1,15 - 102 -276 102 -276 102 -205 c 2,16,-1 - 102 -55 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tonos -Encoding: 900 900 971 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: 74 350 -LayerCount: 2 -Fore -Refer: 370 180 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: dieresistonos -Encoding: 901 901 972 -Width: 849 -VWidth: 0 -Flags: W -HStem: 1264 387 1270 178<53 217 627 791> -VStem: 53 164<1270 1448> 291 350 627 164<1270 1448> -LayerCount: 2 -Fore -Refer: 376 729 N 1 0 0 1 573 0 2 -Refer: 376 729 N 1 0 0 1 0 0 2 -Refer: 971 900 N 1 0 0 1 217 8 2 -Validated: 1 -EndChar - -StartChar: Alphatonos -Encoding: 902 902 973 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1255 387 1393 41<546 756> -VStem: 74 350 -LayerCount: 2 -Fore -Refer: 974 913 N 1 0 0 1 0 0 2 -Refer: 971 900 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Alpha -Encoding: 913 913 974 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 410 102<461 842> 1393 41<546 756> -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Beta -Encoding: 914 914 975 -Width: 1116 -VWidth: 0 -Flags: W -HStem: 0 102<440 656> 727 102<440 574> 1331 102<440 601> -VStem: 174 266<102 727 829 1331> 686 266<944 1243> 772 266<216 579> -LayerCount: 2 -Fore -Refer: 28 66 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Gamma -Encoding: 915 915 976 -Width: 1038 -VWidth: 0 -Flags: W -HStem: 0 43<174 440> 1331 102<440 1001> -VStem: 174 266<0 1331> -LayerCount: 2 -Fore -Refer: 399 1043 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Delta -Encoding: 916 916 977 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 102<311 991> 1393 41G<546 756> -LayerCount: 2 -Fore -SplineSet -991 102 m 1,0,-1 - 651 1034 l 1,1,-1 - 311 102 l 1,2,-1 - 991 102 l 1,0,-1 -1264 0 m 1,3,-1 - 39 0 l 1,4,-1 - 561 1434 l 1,5,-1 - 741 1434 l 1,6,-1 - 1264 0 l 1,3,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Epsilon -Encoding: 917 917 978 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> -VStem: 174 266<102 799 901 1331> -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Zeta -Encoding: 918 918 979 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<362 983> 1331 102<102 672> -LayerCount: 2 -Fore -Refer: 52 90 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Eta -Encoding: 919 919 980 -Width: 1351 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 915 1182> 717 102<440 915> 1393 41<174 440 915 1182> -VStem: 174 266<0 717 819 1434> 915 266<0 717 819 1434> -LayerCount: 2 -Fore -Refer: 35 72 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Theta -Encoding: 920 920 981 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 647 143<436 983> 1352 102<565 855> -VStem: 102 266<424 1012> 1071 266<414 1009> -LayerCount: 2 -Fore -SplineSet -705 -20 m 0,0,1 - 621 -20 621 -20 537.5 7 c 128,-1,2 - 454 34 454 34 375 93 c 128,-1,3 - 296 152 296 152 235.5 236 c 128,-1,4 - 175 320 175 320 138.5 444.5 c 128,-1,5 - 102 569 102 569 102 717 c 128,-1,6 - 102 865 102 865 136.5 989.5 c 128,-1,7 - 171 1114 171 1114 228.5 1198.5 c 128,-1,8 - 286 1283 286 1283 362 1341.5 c 128,-1,9 - 438 1400 438 1400 520 1427 c 128,-1,10 - 602 1454 602 1454 686 1454 c 0,11,12 - 788 1454 788 1454 882 1427 c 128,-1,13 - 976 1400 976 1400 1059.5 1341.5 c 128,-1,14 - 1143 1283 1143 1283 1204.5 1198 c 128,-1,15 - 1266 1113 1266 1113 1301.5 989.5 c 128,-1,16 - 1337 866 1337 866 1337 717 c 0,17,18 - 1337 531 1337 531 1286 387 c 128,-1,19 - 1235 243 1235 243 1146.5 155.5 c 128,-1,20 - 1058 68 1058 68 946 24 c 128,-1,21 - 834 -20 834 -20 705 -20 c 0,0,1 -698 1352 m 0,22,23 - 553 1352 553 1352 461 1189.5 c 128,-1,24 - 369 1027 369 1027 369 717 c 0,25,26 - 369 586 369 586 389.5 478 c 128,-1,27 - 410 370 410 370 444 298 c 128,-1,28 - 478 226 478 226 523.5 176 c 128,-1,29 - 569 126 569 126 617.5 104 c 128,-1,30 - 666 82 666 82 717 82 c 0,31,32 - 875 82 875 82 973 244.5 c 128,-1,33 - 1071 407 1071 407 1071 717 c 0,34,35 - 1071 1040 1071 1040 970 1196 c 128,-1,36 - 869 1352 869 1352 698 1352 c 0,22,23 -436 791 m 1,37,-1 - 983 791 l 1,38,-1 - 983 647 l 1,39,-1 - 436 647 l 1,40,-1 - 436 791 l 1,37,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Iota -Encoding: 921 921 982 -Width: 606 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> -VStem: 172 266<0 1434> -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Kappa -Encoding: 922 922 983 -Width: 1243 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 977 1233> 1393 41<174 440 936 1208> -VStem: 174 266<0 573 836 1434> -LayerCount: 2 -Fore -Refer: 38 75 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Lambda -Encoding: 923 923 984 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 289 1013 1264> 1393 41<546 756> -LayerCount: 2 -Fore -Refer: 721 581 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Mu -Encoding: 924 924 985 -Width: 1626 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 1190 1456> 1393 41<174 459 1171 1456> -VStem: 174 266<0 1047> 1190 266<0 1047> -LayerCount: 2 -Fore -Refer: 40 77 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Nu -Encoding: 925 925 986 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 951 1237> 1393 41<174 463 971 1237> -VStem: 174 266<0 1075> 971 266<367 1434> -LayerCount: 2 -Fore -Refer: 41 78 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Xi -Encoding: 926 926 987 -Width: 1384 -VWidth: 0 -Flags: W -HStem: 0 195<82 1143> 629 176<215 1010> 1239 195<82 1143> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -SplineSet -215 805 m 1,0,-1 - 1010 805 l 1,1,-1 - 1010 629 l 1,2,-1 - 215 629 l 1,3,-1 - 215 805 l 1,0,-1 -82 1434 m 1,4,-1 - 1143 1434 l 1,5,-1 - 1143 1239 l 1,6,-1 - 82 1239 l 1,7,-1 - 82 1434 l 1,4,-1 -82 195 m 1,8,-1 - 1143 195 l 1,9,-1 - 1143 0 l 1,10,-1 - 82 0 l 1,11,-1 - 82 195 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Omicron -Encoding: 927 927 988 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 1352 102<565 855> -VStem: 102 266<424 1012> 1071 266<414 1009> -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Pi -Encoding: 928 928 989 -Width: 1318 -VWidth: 0 -Flags: W -HStem: 0 43<174 440 883 1149> 1331 102<440 883> -VStem: 174 266<0 1331> 883 266<0 1331> -LayerCount: 2 -Fore -Refer: 411 1055 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Rho -Encoding: 929 929 990 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 0 43<174 440> 655 102<440 665> 1331 102<440 665> -VStem: 174 266<0 655 758 1331> 772 266<872 1217> -LayerCount: 2 -Fore -Refer: 29 80 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Sigma -Encoding: 931 931 991 -Width: 1167 -VWidth: 0 -Flags: W -HStem: 0 102<434 1110> 1331 102<444 1069> -LayerCount: 2 -Fore -Refer: 640 425 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Tau -Encoding: 932 932 992 -Width: 1280 -VWidth: 0 -Flags: W -HStem: 0 43<508 774> 1331 102<41 508 774 1239> -VStem: 508 266<0 1331> -LayerCount: 2 -Fore -Refer: 46 84 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Upsilon -Encoding: 933 933 993 -Width: 989 -VWidth: 0 -Flags: W -HStem: 0 43<383 649> 1393 41<23 301 768 973> -VStem: 383 266<0 727> -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Phi -Encoding: 934 934 994 -Width: 1435 -VWidth: 0 -Flags: W -HStem: 0 43<588 852> 1133 109<508 588> 1393 41<588 852> -VStem: 102 266<523 916> 588 264<0 204 309 1122 1234 1434> 1071 266<513 914> -CounterMasks: 1 1c -LayerCount: 2 -Fore -Refer: 416 1060 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Chi -Encoding: 935 935 995 -Width: 1228 -VWidth: 0 -Flags: W -HStem: 0 43<86 289 800 1079> 1393 41<90 369 794 999> -LayerCount: 2 -Fore -Refer: 49 88 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Psi -Encoding: 936 936 996 -Width: 1648 -VWidth: 0 -Flags: W -HStem: 0 43G<696 963> 440 104<586 696 963 1061> 1393 41G<156 422 696 963 1227 1493> -VStem: 156 266<810 1434> 696 266<0 445 547 1434> 1227 266<813 1434> -LayerCount: 2 -Fore -SplineSet -696 545 m 1,0,-1 - 696 1434 l 1,1,-1 - 963 1434 l 1,2,-1 - 963 547 l 1,3,4 - 1024 560 1024 560 1069 591 c 128,-1,5 - 1114 622 1114 622 1151 680 c 128,-1,6 - 1188 738 1188 738 1207.5 834.5 c 128,-1,7 - 1227 931 1227 931 1227 1065 c 2,8,-1 - 1227 1434 l 1,9,-1 - 1493 1434 l 1,10,-1 - 1493 1065 l 2,11,12 - 1493 937 1493 937 1458.5 832.5 c 128,-1,13 - 1424 728 1424 728 1371 661 c 128,-1,14 - 1318 594 1318 594 1245.5 545.5 c 128,-1,15 - 1173 497 1173 497 1104.5 473.5 c 128,-1,16 - 1036 450 1036 450 963 440 c 1,17,-1 - 963 0 l 1,18,-1 - 696 0 l 1,19,-1 - 696 440 l 1,20,21 - 623 449 623 449 553.5 471.5 c 128,-1,22 - 484 494 484 494 410 542 c 128,-1,23 - 336 590 336 590 281.5 656.5 c 128,-1,24 - 227 723 227 723 191.5 829 c 128,-1,25 - 156 935 156 935 156 1065 c 2,26,-1 - 156 1434 l 1,27,-1 - 422 1434 l 1,28,-1 - 422 1065 l 2,29,30 - 422 955 422 955 436 869.5 c 128,-1,31 - 450 784 450 784 474 728 c 128,-1,32 - 498 672 498 672 534 633 c 128,-1,33 - 570 594 570 594 609 574 c 128,-1,34 - 648 554 648 554 696 545 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Omega -Encoding: 937 937 997 -Width: 1607 -VWidth: 0 -Flags: W -HStem: 0 246<579 659 940 1020> 0 102<250 403 1196 1350> 1352 102<626 972> -VStem: 143 256<540 1035> 403 256<102 241> 940 256<102 241> 1200 256<540 1035> -LayerCount: 2 -Fore -SplineSet -799 1454 m 0,0,1 - 881 1454 881 1454 968 1430.5 c 128,-1,2 - 1055 1407 1055 1407 1143 1353.5 c 128,-1,3 - 1231 1300 1231 1300 1300 1224.5 c 128,-1,4 - 1369 1149 1369 1149 1412.5 1034 c 128,-1,5 - 1456 919 1456 919 1456 782 c 0,6,7 - 1456 611 1456 611 1377 452 c 128,-1,8 - 1298 293 1298 293 1196 195 c 1,9,-1 - 1196 102 l 1,10,-1 - 1350 102 l 1,11,-1 - 1350 0 l 1,12,-1 - 940 0 l 1,13,-1 - 940 246 l 1,14,15 - 1014 266 1014 266 1074 346 c 128,-1,16 - 1134 426 1134 426 1167 541.5 c 128,-1,17 - 1200 657 1200 657 1200 782 c 0,18,19 - 1200 921 1200 921 1169 1031 c 128,-1,20 - 1138 1141 1138 1141 1083 1210.5 c 128,-1,21 - 1028 1280 1028 1280 956 1316 c 128,-1,22 - 884 1352 884 1352 799 1352 c 0,23,24 - 625 1352 625 1352 512 1204 c 128,-1,25 - 399 1056 399 1056 399 782 c 0,26,27 - 399 657 399 657 432 541.5 c 128,-1,28 - 465 426 465 426 525 346 c 128,-1,29 - 585 266 585 266 659 246 c 1,30,-1 - 659 0 l 1,31,-1 - 250 0 l 1,32,-1 - 250 102 l 1,33,-1 - 403 102 l 1,34,-1 - 403 195 l 1,35,36 - 301 293 301 293 222 452 c 128,-1,37 - 143 611 143 611 143 782 c 0,38,39 - 143 881 143 881 165.5 968.5 c 128,-1,40 - 188 1056 188 1056 227 1123 c 128,-1,41 - 266 1190 266 1190 318.5 1245.5 c 128,-1,42 - 371 1301 371 1301 430.5 1339 c 128,-1,43 - 490 1377 490 1377 554.5 1403.5 c 128,-1,44 - 619 1430 619 1430 680.5 1442 c 128,-1,45 - 742 1454 742 1454 799 1454 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: alpha -Encoding: 945 945 998 -Width: 1228 -VWidth: 0 -Flags: W -HStem: -20 102<478 769 971 1142> 819 102<465 704> 860 41<754 999> -VStem: 90 246<235 670> 754 246<128 769 889 901> 1143 70<91 131> -LayerCount: 2 -Fore -Refer: 711 593 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: beta -Encoding: 946 946 999 -Width: 1271 -VWidth: 0 -Flags: W -HStem: -20 102<530 800> 645 102<422 725> 1229 102<510 741> -VStem: 166 256<-410 35 181 645 748 1104> 805 256<853 1132> 891 254<190 497> -LayerCount: 2 -Fore -SplineSet -686 82 m 0,0,1 - 742 82 742 82 784 108.5 c 128,-1,2 - 826 135 826 135 848 178.5 c 128,-1,3 - 870 222 870 222 880.5 267.5 c 128,-1,4 - 891 313 891 313 891 360 c 0,5,6 - 891 494 891 494 826 569.5 c 128,-1,7 - 761 645 761 645 627 645 c 2,8,-1 - 422 645 l 1,9,-1 - 422 279 l 2,10,11 - 422 216 422 216 497.5 149 c 128,-1,12 - 573 82 573 82 686 82 c 0,0,1 -422 985 m 2,13,-1 - 422 748 l 1,14,-1 - 602 748 l 2,15,16 - 651 748 651 748 689 767.5 c 128,-1,17 - 727 787 727 787 748 815.5 c 128,-1,18 - 769 844 769 844 782.5 880.5 c 128,-1,19 - 796 917 796 917 800.5 946 c 128,-1,20 - 805 975 805 975 805 1001 c 0,21,22 - 805 1036 805 1036 797 1072.5 c 128,-1,23 - 789 1109 789 1109 771.5 1146 c 128,-1,24 - 754 1183 754 1183 719 1206 c 128,-1,25 - 684 1229 684 1229 637 1229 c 0,26,27 - 580 1229 580 1229 536.5 1206 c 128,-1,28 - 493 1183 493 1183 469 1146 c 128,-1,29 - 445 1109 445 1109 433.5 1068 c 128,-1,30 - 422 1027 422 1027 422 985 c 2,13,-1 -166 -410 m 1,31,-1 - 166 930 l 2,32,33 - 166 1098 166 1098 293 1214.5 c 128,-1,34 - 420 1331 420 1331 598 1331 c 0,35,36 - 813 1331 813 1331 937 1226.5 c 128,-1,37 - 1061 1122 1061 1122 1061 969 c 0,38,39 - 1061 916 1061 916 1018 855 c 128,-1,40 - 975 794 975 794 928 756.5 c 128,-1,41 - 881 719 881 719 856 713 c 1,42,43 - 973 664 973 664 1059 559.5 c 128,-1,44 - 1145 455 1145 455 1145 367 c 0,45,46 - 1145 191 1145 191 1011.5 85.5 c 128,-1,47 - 878 -20 878 -20 645 -20 c 0,48,49 - 513 -20 513 -20 422 35 c 1,50,-1 - 422 -410 l 1,51,-1 - 166 -410 l 1,31,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: gamma -Encoding: 947 947 1000 -Width: 874 -VWidth: 0 -Flags: W -HStem: -418 102<414 466> 860 41<18 278 603 862> -VStem: 180 227<-313 -27> 473 225<-313 -27> -LayerCount: 2 -Fore -Refer: 620 611 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: delta -Encoding: 948 948 1001 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -29 102<511 774> 827 98<486 582> 1276 102<482 806> -VStem: 100 256<269 685> 211 256<1116 1257> 905 256<242 676> -LayerCount: 2 -Fore -SplineSet -610 827 m 0,0,1 - 510 827 510 827 433 736.5 c 128,-1,2 - 356 646 356 646 356 492 c 0,3,4 - 356 308 356 308 440.5 191 c 128,-1,5 - 525 74 525 74 623 74 c 0,6,7 - 763 74 763 74 834 175.5 c 128,-1,8 - 905 277 905 277 905 473 c 0,9,10 - 905 649 905 649 825 738 c 128,-1,11 - 745 827 745 827 610 827 c 0,0,1 -582 926 m 1,12,13 - 559 939 559 939 487 968.5 c 128,-1,14 - 415 998 415 998 360 1023 c 128,-1,15 - 305 1048 305 1048 258 1094 c 128,-1,16 - 211 1140 211 1140 211 1192 c 0,17,18 - 211 1378 211 1378 633 1378 c 0,19,20 - 776 1378 776 1378 858.5 1335.5 c 128,-1,21 - 941 1293 941 1293 999 1217 c 1,22,-1 - 868 1151 l 1,23,24 - 859 1163 859 1163 845.5 1184 c 128,-1,25 - 832 1205 832 1205 824.5 1215 c 128,-1,26 - 817 1225 817 1225 800 1239 c 128,-1,27 - 783 1253 783 1253 763.5 1259.5 c 128,-1,28 - 744 1266 744 1266 711 1271 c 128,-1,29 - 678 1276 678 1276 633 1276 c 0,30,31 - 587 1276 587 1276 554 1269.5 c 128,-1,32 - 521 1263 521 1263 504.5 1254.5 c 128,-1,33 - 488 1246 488 1246 479 1233 c 128,-1,34 - 470 1220 470 1220 468.5 1211.5 c 128,-1,35 - 467 1203 467 1203 467 1192 c 0,36,37 - 467 1150 467 1150 495.5 1127 c 128,-1,38 - 524 1104 524 1104 633 1053 c 0,39,40 - 807 972 807 972 874 931 c 0,41,42 - 1091 798 1091 798 1143 611 c 0,43,44 - 1161 546 1161 546 1161 473 c 0,45,46 - 1161 398 1161 398 1147 331.5 c 128,-1,47 - 1133 265 1133 265 1096 197 c 128,-1,48 - 1059 129 1059 129 1000.5 80.5 c 128,-1,49 - 942 32 942 32 845 1.5 c 128,-1,50 - 748 -29 748 -29 623 -29 c 0,51,52 - 451 -29 451 -29 332 37.5 c 128,-1,53 - 213 104 213 104 156.5 219.5 c 128,-1,54 - 100 335 100 335 100 492 c 0,55,56 - 100 590 100 590 134 668.5 c 128,-1,57 - 168 747 168 747 219.5 794 c 128,-1,58 - 271 841 271 841 338 872 c 128,-1,59 - 405 903 405 903 465 914.5 c 128,-1,60 - 525 926 525 926 582 926 c 1,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: epsilon -Encoding: 949 949 1002 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<350 574> 451 102<401 578> 819 102<383 573> -VStem: 61 256<108 400> 111 256<586 812> -LayerCount: 2 -Fore -Refer: 859 1297 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: zeta -Encoding: 950 950 1003 -Width: 1034 -VWidth: 0 -Flags: W -HStem: -10 104<464 673> 1249 102<152 707> -VStem: 129 256<193 671> 692 262<-277 -24> -LayerCount: 2 -Fore -SplineSet -594 -10 m 0,0,1 - 582 -10 582 -10 532 -13 c 128,-1,2 - 482 -16 482 -16 469 -16 c 0,3,4 - 436 -16 436 -16 406.5 -12 c 128,-1,5 - 377 -8 377 -8 341 4.5 c 128,-1,6 - 305 17 305 17 276.5 38 c 128,-1,7 - 248 59 248 59 219.5 95.5 c 128,-1,8 - 191 132 191 132 172 180.5 c 128,-1,9 - 153 229 153 229 141 300 c 128,-1,10 - 129 371 129 371 129 459 c 0,11,12 - 129 548 129 548 159 637.5 c 128,-1,13 - 189 727 189 727 240.5 807.5 c 128,-1,14 - 292 888 292 888 366 967 c 128,-1,15 - 440 1046 440 1046 524 1114.5 c 128,-1,16 - 608 1183 608 1183 707 1249 c 1,17,-1 - 152 1249 l 1,18,-1 - 152 1352 l 1,19,-1 - 924 1352 l 1,20,-1 - 924 1264 l 1,21,22 - 782 1182 782 1182 660 1052.5 c 128,-1,23 - 538 923 538 923 461.5 764 c 128,-1,24 - 385 605 385 605 385 459 c 0,25,26 - 385 287 385 287 429.5 190.5 c 128,-1,27 - 474 94 474 94 557 94 c 0,28,29 - 564 94 564 94 630 96 c 128,-1,30 - 696 98 696 98 717 98 c 0,31,32 - 760 98 760 98 798.5 84.5 c 128,-1,33 - 837 71 837 71 873.5 41 c 128,-1,34 - 910 11 910 11 932 -46.5 c 128,-1,35 - 954 -104 954 -104 954 -182 c 0,36,37 - 954 -232 954 -232 932 -270 c 128,-1,38 - 910 -308 910 -308 879 -329.5 c 128,-1,39 - 848 -351 848 -351 798 -366.5 c 128,-1,40 - 748 -382 748 -382 708 -388 c 128,-1,41 - 668 -394 668 -394 612 -399 c 1,42,-1 - 604 -291 l 1,43,44 - 609 -289 609 -289 624 -285 c 128,-1,45 - 639 -281 639 -281 648 -276.5 c 128,-1,46 - 657 -272 657 -272 668.5 -263 c 128,-1,47 - 680 -254 680 -254 686 -236.5 c 128,-1,48 - 692 -219 692 -219 692 -193 c 0,49,50 - 692 -144 692 -144 687 -109.5 c 128,-1,51 - 682 -75 682 -75 674 -56 c 128,-1,52 - 666 -37 666 -37 652 -26.5 c 128,-1,53 - 638 -16 638 -16 625.5 -13 c 128,-1,54 - 613 -10 613 -10 594 -10 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eta -Encoding: 951 951 1004 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 403> 819 102<405 644> -VStem: 147 256<0 802> 692 256<-410 720> -LayerCount: 2 -Fore -Refer: 653 414 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: theta -Encoding: 952 952 1005 -Width: 1179 -VWidth: 0 -Flags: W -HStem: -20 102<490 706> 627 102<377 807> 1270 102<490 705> -VStem: 121 256<350 627 729 1004> 807 256<337 627 729 1016> -LayerCount: 2 -Fore -SplineSet -1063 676 m 128,-1,1 - 1063 524 1063 524 1037 404 c 128,-1,2 - 1011 284 1011 284 966.5 205.5 c 128,-1,3 - 922 127 922 127 858.5 75.5 c 128,-1,4 - 795 24 795 24 724.5 2 c 128,-1,5 - 654 -20 654 -20 573 -20 c 0,6,7 - 513 -20 513 -20 453.5 1.5 c 128,-1,8 - 394 23 394 23 333 75.5 c 128,-1,9 - 272 128 272 128 225.5 205.5 c 128,-1,10 - 179 283 179 283 150 404.5 c 128,-1,11 - 121 526 121 526 121 676 c 128,-1,12 - 121 826 121 826 150 947.5 c 128,-1,13 - 179 1069 179 1069 225.5 1146.5 c 128,-1,14 - 272 1224 272 1224 333 1276.5 c 128,-1,15 - 394 1329 394 1329 453.5 1350.5 c 128,-1,16 - 513 1372 513 1372 573 1372 c 0,17,18 - 654 1372 654 1372 724.5 1350 c 128,-1,19 - 795 1328 795 1328 858.5 1276.5 c 128,-1,20 - 922 1225 922 1225 966.5 1146.5 c 128,-1,21 - 1011 1068 1011 1068 1037 948 c 128,-1,0 - 1063 828 1063 828 1063 676 c 128,-1,1 -807 627 m 1,22,-1 - 377 627 l 1,23,24 - 381 419 381 419 408.5 297.5 c 128,-1,25 - 436 176 436 176 482.5 129 c 128,-1,26 - 529 82 529 82 604 82 c 0,27,28 - 671 82 671 82 713 129 c 128,-1,29 - 755 176 755 176 779.5 297.5 c 128,-1,30 - 804 419 804 419 807 627 c 1,22,-1 -377 729 m 1,31,-1 - 807 729 l 1,32,33 - 803 935 803 935 778.5 1055.5 c 128,-1,34 - 754 1176 754 1176 712 1223 c 128,-1,35 - 670 1270 670 1270 604 1270 c 0,36,37 - 529 1270 529 1270 482.5 1223 c 128,-1,38 - 436 1176 436 1176 408.5 1055.5 c 128,-1,39 - 381 935 381 935 377 729 c 1,31,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: iota -Encoding: 953 953 1006 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> -VStem: 123 256<0 901> -LayerCount: 2 -Fore -Refer: 112 305 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: kappa -Encoding: 954 954 1007 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43<147 403 664 913> 860 41<147 403 611 877> -VStem: 147 256<0 371 627 901> -LayerCount: 2 -Fore -Refer: 305 312 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: lambda -Encoding: 955 955 1008 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 43G<45 209 685 926> 1311 41G<207 445> -LayerCount: 2 -Fore -SplineSet -430 1352 m 9,0,-1 - 926 0 l 1,1,-1 - 700 0 l 1,2,-1 - 446 696 l 1,3,-1 - 195 0 l 1,4,-1 - 45 0 l 1,5,-1 - 373 901 l 1,6,-1 - 207 1352 l 1,7,-1 - 430 1352 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: mu -Encoding: 956 956 1009 -Width: 972 -VWidth: 0 -Flags: W -HStem: -20 102<396 625> 0 43<627 883> 860 41<82 338 627 883> -VStem: 82 256<-293 -4 146 901> 627 256<0 14 94 901> -LayerCount: 2 -Fore -Refer: 346 181 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: nu -Encoding: 957 957 1010 -Width: 849 -VWidth: 0 -Flags: W -HStem: 0 43<331 525> 860 41<18 254 659 838> -LayerCount: 2 -Fore -Refer: 21 118 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: xi -Encoding: 958 958 1011 -Width: 1048 -VWidth: 0 -Flags: W -HStem: -399 109<614 672> -20 102<429 636> -10 109<528 677> 696 102<469 651> 1249 102<37 213 447 834> -VStem: 63 256<210 556> 113 256<907 1170> 694 272<-270 -17> -LayerCount: 2 -Fore -SplineSet -625 -10 m 0,0,1 - 612 -10 612 -10 580 -15 c 128,-1,2 - 548 -20 548 -20 516 -20 c 0,3,4 - 318 -20 318 -20 190.5 88.5 c 128,-1,5 - 63 197 63 197 63 379 c 0,6,7 - 63 513 63 513 138.5 614 c 128,-1,8 - 214 715 214 715 322 758 c 1,9,10 - 294 773 294 773 279.5 781 c 128,-1,11 - 265 789 265 789 239 806.5 c 128,-1,12 - 213 824 213 824 199 838.5 c 128,-1,13 - 185 853 185 853 166 877 c 128,-1,14 - 147 901 147 901 137 926.5 c 128,-1,15 - 127 952 127 952 120 987 c 128,-1,16 - 113 1022 113 1022 113 1063 c 0,17,18 - 113 1171 113 1171 213 1249 c 1,19,-1 - 37 1249 l 1,20,-1 - 37 1352 l 1,21,-1 - 834 1352 l 1,22,-1 - 834 1249 l 1,23,-1 - 555 1249 l 2,24,25 - 483 1249 483 1249 426 1186 c 128,-1,26 - 369 1123 369 1123 369 1063 c 0,27,28 - 369 1038 369 1038 375 1007 c 128,-1,29 - 381 976 381 976 397 938.5 c 128,-1,30 - 413 901 413 901 437 870.5 c 128,-1,31 - 461 840 461 840 502 819.5 c 128,-1,32 - 543 799 543 799 594 799 c 2,33,-1 - 651 799 l 1,34,-1 - 651 696 l 1,35,-1 - 580 696 l 2,36,37 - 516 696 516 696 464 665.5 c 128,-1,38 - 412 635 412 635 381.5 587 c 128,-1,39 - 351 539 351 539 335 485 c 128,-1,40 - 319 431 319 431 319 379 c 0,41,42 - 319 347 319 347 331 300.5 c 128,-1,43 - 343 254 343 254 366.5 203.5 c 128,-1,44 - 390 153 390 153 434.5 117.5 c 128,-1,45 - 479 82 479 82 535 82 c 0,46,47 - 565 82 565 82 597.5 90 c 128,-1,48 - 630 98 630 98 651 98 c 0,49,50 - 712 98 712 98 754 93 c 128,-1,51 - 796 88 796 88 839.5 71.5 c 128,-1,52 - 883 55 883 55 908.5 25.5 c 128,-1,53 - 934 -4 934 -4 950.5 -56 c 128,-1,54 - 967 -108 967 -108 967 -182 c 0,55,56 - 967 -237 967 -237 937 -279.5 c 128,-1,57 - 907 -322 907 -322 855.5 -346.5 c 128,-1,58 - 804 -371 804 -371 744 -384 c 128,-1,59 - 684 -397 684 -397 614 -399 c 1,60,-1 - 606 -291 l 1,61,62 - 608 -290 608 -290 618 -286 c 128,-1,63 - 628 -282 628 -282 632 -280.5 c 128,-1,64 - 636 -279 636 -279 646 -273.5 c 128,-1,65 - 656 -268 656 -268 661 -263.5 c 128,-1,66 - 666 -259 666 -259 673.5 -251.5 c 128,-1,67 - 681 -244 681 -244 684.5 -236 c 128,-1,68 - 688 -228 688 -228 691 -217 c 128,-1,69 - 694 -206 694 -206 694 -193 c 0,70,71 - 694 -99 694 -99 677.5 -54.5 c 128,-1,72 - 661 -10 661 -10 625 -10 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: omicron -Encoding: 959 959 1012 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> -VStem: 90 256<214 657> 715 256<223 678> -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: pi -Encoding: 960 960 1013 -Width: 1054 -VWidth: 0 -Flags: W -HStem: 0 43<123 379 678 934> 799 102<379 678> -VStem: 123 256<0 799> 678 256<0 799> -LayerCount: 2 -Fore -Refer: 443 1087 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: rho -Encoding: 961 961 1014 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -20 102<467 670> 819 102<440 671> -VStem: 145 256<-410 4 152 754> 743 256<216 685> -LayerCount: 2 -Fore -SplineSet -401 4 m 1,0,-1 - 401 -410 l 1,1,-1 - 145 -410 l 1,2,-1 - 145 532 l 2,3,4 - 145 629 145 629 168.5 701 c 128,-1,5 - 192 773 192 773 229.5 814.5 c 128,-1,6 - 267 856 267 856 323 881 c 128,-1,7 - 379 906 379 906 433 914 c 128,-1,8 - 487 922 487 922 555 922 c 0,9,10 - 673 922 673 922 760.5 885 c 128,-1,11 - 848 848 848 848 899 782 c 128,-1,12 - 950 716 950 716 974.5 633.5 c 128,-1,13 - 999 551 999 551 999 451 c 128,-1,14 - 999 351 999 351 975 268.5 c 128,-1,15 - 951 186 951 186 900.5 120 c 128,-1,16 - 850 54 850 54 762 17 c 128,-1,17 - 674 -20 674 -20 555 -20 c 0,18,19 - 472 -20 472 -20 401 4 c 1,0,-1 -401 430 m 2,20,21 - 401 365 401 365 404 320.5 c 128,-1,22 - 407 276 407 276 417.5 227 c 128,-1,23 - 428 178 428 178 447.5 149 c 128,-1,24 - 467 120 467 120 502 101 c 128,-1,25 - 537 82 537 82 586 82 c 0,26,27 - 743 82 743 82 743 451 c 0,28,29 - 743 526 743 526 737.5 583.5 c 128,-1,30 - 732 641 732 641 716.5 698.5 c 128,-1,31 - 701 756 701 756 668 787.5 c 128,-1,32 - 635 819 635 819 586 819 c 0,33,34 - 512 819 512 819 475 803 c 128,-1,35 - 438 787 438 787 419.5 739.5 c 128,-1,36 - 401 692 401 692 401 598 c 2,37,-1 - 401 430 l 2,20,21 -EndSplineSet -Validated: 1 -EndChar - -StartChar: sigma1 -Encoding: 962 962 1015 -Width: 1064 -VWidth: 0 -Flags: W -HStem: 799 102<544 907> -VStem: 129 276<291 673> 672 283<-276 -63> -LayerCount: 2 -Fore -SplineSet -907 901 m 1,0,-1 - 907 799 l 1,1,2 - 852 799 852 799 814 798 c 128,-1,3 - 776 797 776 797 731 794.5 c 128,-1,4 - 686 792 686 792 655.5 787 c 128,-1,5 - 625 782 625 782 591 773.5 c 128,-1,6 - 557 765 557 765 534.5 752.5 c 128,-1,7 - 512 740 512 740 489 722.5 c 128,-1,8 - 466 705 466 705 452.5 681.5 c 128,-1,9 - 439 658 439 658 427.5 628.5 c 128,-1,10 - 416 599 416 599 411 561.5 c 128,-1,11 - 406 524 406 524 406 479 c 0,12,13 - 406 391 406 391 429.5 324 c 128,-1,14 - 453 257 453 257 491.5 217.5 c 128,-1,15 - 530 178 530 178 579.5 146 c 128,-1,16 - 629 114 629 114 680 95 c 128,-1,17 - 731 76 731 76 780.5 51 c 128,-1,18 - 830 26 830 26 868.5 -0.5 c 128,-1,19 - 907 -27 907 -27 930.5 -73.5 c 128,-1,20 - 954 -120 954 -120 954 -182 c 0,21,22 - 954 -203 954 -203 946 -223.5 c 128,-1,23 - 938 -244 938 -244 922 -262 c 128,-1,24 - 906 -280 906 -280 889 -295 c 128,-1,25 - 872 -310 872 -310 845.5 -324.5 c 128,-1,26 - 819 -339 819 -339 800 -349 c 128,-1,27 - 781 -359 781 -359 750.5 -371 c 128,-1,28 - 720 -383 720 -383 705 -388.5 c 128,-1,29 - 690 -394 690 -394 663 -403 c 128,-1,30 - 636 -412 636 -412 631 -414 c 1,31,-1 - 604 -307 l 1,32,33 - 607 -305 607 -305 618 -299 c 128,-1,34 - 629 -293 629 -293 634 -290 c 128,-1,35 - 639 -287 639 -287 648 -278 c 128,-1,36 - 657 -269 657 -269 661 -259 c 128,-1,37 - 665 -249 665 -249 668.5 -232 c 128,-1,38 - 672 -215 672 -215 672 -193 c 0,39,40 - 672 -131 672 -131 642 -83 c 128,-1,41 - 612 -35 612 -35 564 -3.5 c 128,-1,42 - 516 28 516 28 458 57.5 c 128,-1,43 - 400 87 400 87 342.5 121.5 c 128,-1,44 - 285 156 285 156 237 200 c 128,-1,45 - 189 244 189 244 159 315.5 c 128,-1,46 - 129 387 129 387 129 479 c 0,47,48 - 129 554 129 554 149 614.5 c 128,-1,49 - 169 675 169 675 204 718.5 c 128,-1,50 - 239 762 239 762 293.5 794.5 c 128,-1,51 - 348 827 348 827 411 847 c 128,-1,52 - 474 867 474 867 556.5 879.5 c 128,-1,53 - 639 892 639 892 721.5 896.5 c 128,-1,54 - 804 901 804 901 907 901 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: sigma -Encoding: 963 963 1016 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -20 102<425 646> 799 102<426 647 829 1032> -VStem: 90 256<207 645> 715 256<212 666> -LayerCount: 2 -Fore -SplineSet -971 440 m 0,0,1 - 971 325 971 325 937 236 c 128,-1,2 - 903 147 903 147 841 91.5 c 128,-1,3 - 779 36 779 36 696 8 c 128,-1,4 - 613 -20 613 -20 512 -20 c 0,5,6 - 313 -20 313 -20 201.5 102 c 128,-1,7 - 90 224 90 224 90 440 c 0,8,9 - 90 544 90 544 127 632.5 c 128,-1,10 - 164 721 164 721 224 778.5 c 128,-1,11 - 284 836 284 836 359 868.5 c 128,-1,12 - 434 901 434 901 512 901 c 2,13,-1 - 1032 901 l 1,14,-1 - 1032 799 l 1,15,-1 - 829 799 l 1,16,17 - 971 676 971 676 971 440 c 0,0,1 -543 799 m 0,18,19 - 434 799 434 799 390 709 c 128,-1,20 - 346 619 346 619 346 440 c 0,21,22 - 346 257 346 257 388 169.5 c 128,-1,23 - 430 82 430 82 543 82 c 0,24,25 - 595 82 595 82 630 106.5 c 128,-1,26 - 665 131 665 131 683 181 c 128,-1,27 - 701 231 701 231 708 291.5 c 128,-1,28 - 715 352 715 352 715 440 c 0,29,30 - 715 526 715 526 707 588.5 c 128,-1,31 - 699 651 699 651 680.5 700 c 128,-1,32 - 662 749 662 749 627.5 774 c 128,-1,33 - 593 799 593 799 543 799 c 0,18,19 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tau -Encoding: 964 964 1017 -Width: 940 -VWidth: 0 -Flags: W -HStem: 0 43<346 602> 799 102<53 346 602 895> -VStem: 346 256<0 799> -LayerCount: 2 -Fore -Refer: 446 1090 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: upsilon -Encoding: 965 965 1018 -Width: 1159 -VWidth: 0 -Flags: W -HStem: -20 102<454 703> 860 41G<129 385 774 1030> -VStem: 129 256<224 901> 774 256<224 901> -LayerCount: 2 -Fore -SplineSet -385 901 m 1,0,-1 - 385 451 l 2,1,2 - 385 395 385 395 386 359 c 128,-1,3 - 387 323 387 323 392 280 c 128,-1,4 - 397 237 397 237 405.5 210.5 c 128,-1,5 - 414 184 414 184 429 157 c 128,-1,6 - 444 130 444 130 466 115 c 128,-1,7 - 488 100 488 100 519.5 91 c 128,-1,8 - 551 82 551 82 592 82 c 0,9,10 - 648 82 648 82 685 108 c 128,-1,11 - 722 134 722 134 741 186.5 c 128,-1,12 - 760 239 760 239 767 300.5 c 128,-1,13 - 774 362 774 362 774 451 c 2,14,-1 - 774 901 l 1,15,-1 - 1030 901 l 1,16,-1 - 1030 451 l 2,17,18 - 1030 223 1030 223 899.5 101.5 c 128,-1,19 - 769 -20 769 -20 561 -20 c 0,20,21 - 362 -20 362 -20 245.5 107.5 c 128,-1,22 - 129 235 129 235 129 451 c 2,23,-1 - 129 901 l 1,24,-1 - 385 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: phi -Encoding: 966 966 1019 -Width: 1486 -VWidth: 0 -Flags: W -HStem: -16 111<872 967> 819 102<928 1076> -VStem: 90 256<275 623> 616 256<-410 -13 102 732> 1145 256<270 687> -LayerCount: 2 -Fore -SplineSet -872 94 m 1,0,1 - 995 124 995 124 1070 220 c 128,-1,2 - 1145 316 1145 316 1145 451 c 0,3,4 - 1145 819 1145 819 997 819 c 0,5,6 - 942 819 942 819 907 742 c 128,-1,7 - 872 665 872 665 872 494 c 2,8,-1 - 872 94 l 1,0,1 -872 -16 m 1,9,-1 - 872 -410 l 1,10,-1 - 616 -410 l 1,11,-1 - 616 -14 l 1,12,13 - 356 10 356 10 223 131.5 c 128,-1,14 - 90 253 90 253 90 451 c 0,15,16 - 90 520 90 520 116 585.5 c 128,-1,17 - 142 651 142 651 186.5 703.5 c 128,-1,18 - 231 756 231 756 278 795.5 c 128,-1,19 - 325 835 325 835 377 866 c 1,20,-1 - 440 758 l 1,21,22 - 388 713 388 713 367 637.5 c 128,-1,23 - 346 562 346 562 346 451 c 0,24,25 - 346 322 346 322 418.5 230 c 128,-1,26 - 491 138 491 138 616 102 c 1,27,-1 - 616 494 l 2,28,29 - 616 712 616 712 711 817 c 128,-1,30 - 806 922 806 922 997 922 c 0,31,32 - 1181 922 1181 922 1291 798.5 c 128,-1,33 - 1401 675 1401 675 1401 451 c 0,34,35 - 1401 27 1401 27 872 -16 c 1,9,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: chi -Encoding: 967 967 1020 -Width: 854 -VWidth: 0 -Flags: W -HStem: 0 43<8 213 573 850> 860 41<14 289 569 772> -LayerCount: 2 -Fore -Refer: 23 120 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: psi -Encoding: 968 968 1021 -Width: 1456 -VWidth: 0 -Flags: W -HStem: 860 41G<129 385 606 862 1071 1327> -VStem: 129 256<296 901> 606 256<-410 -7 111 901> 1071 256<302 901> -LayerCount: 2 -Fore -SplineSet -385 901 m 1,0,-1 - 385 522 l 2,1,2 - 385 358 385 358 445 252 c 128,-1,3 - 505 146 505 146 606 106 c 1,4,-1 - 606 901 l 1,5,-1 - 862 901 l 1,6,-1 - 862 111 l 1,7,8 - 954 156 954 156 1012.5 260.5 c 128,-1,9 - 1071 365 1071 365 1071 522 c 2,10,-1 - 1071 901 l 1,11,-1 - 1327 901 l 1,12,-1 - 1327 522 l 2,13,14 - 1327 429 1327 429 1300.5 348.5 c 128,-1,15 - 1274 268 1274 268 1230 211 c 128,-1,16 - 1186 154 1186 154 1125 109 c 128,-1,17 - 1064 64 1064 64 999 37.5 c 128,-1,18 - 934 11 934 11 862 -4 c 1,19,-1 - 862 -410 l 1,20,-1 - 606 -410 l 1,21,-1 - 606 -14 l 1,22,23 - 532 -4 532 -4 465 20.5 c 128,-1,24 - 398 45 398 45 335.5 89 c 128,-1,25 - 273 133 273 133 228 192 c 128,-1,26 - 183 251 183 251 156 336 c 128,-1,27 - 129 421 129 421 129 522 c 2,28,-1 - 129 901 l 1,29,-1 - 385 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: omega -Encoding: 969 969 1022 -Width: 1579 -VWidth: 0 -Flags: W -HStem: -20 102<426 601 982 1157> 860 41G<206 492 1092 1377> -VStem: 90 256<214 704> 664 256<163 762> 1237 256<214 704> -CounterMasks: 1 38 -LayerCount: 2 -Fore -SplineSet -920 762 m 1,0,-1 - 920 592 l 2,1,2 - 920 319 920 319 952 200.5 c 128,-1,3 - 984 82 984 82 1051 82 c 0,4,5 - 1151 82 1151 82 1194 177 c 128,-1,6 - 1237 272 1237 272 1237 451 c 0,7,8 - 1237 500 1237 500 1231.5 547 c 128,-1,9 - 1226 594 1226 594 1214 636 c 128,-1,10 - 1202 678 1202 678 1191.5 709.5 c 128,-1,11 - 1181 741 1181 741 1163 776 c 128,-1,12 - 1145 811 1145 811 1136.5 827 c 128,-1,13 - 1128 843 1128 843 1110.5 871 c 128,-1,14 - 1093 899 1093 899 1092 901 c 1,15,-1 - 1352 901 l 1,16,17 - 1354 898 1354 898 1379 863.5 c 128,-1,18 - 1404 829 1404 829 1412.5 815 c 128,-1,19 - 1421 801 1421 801 1441 759 c 128,-1,20 - 1461 717 1461 717 1469 680 c 128,-1,21 - 1477 643 1477 643 1485 582 c 128,-1,22 - 1493 521 1493 521 1493 451 c 0,23,24 - 1493 230 1493 230 1381 105 c 128,-1,25 - 1269 -20 1269 -20 1051 -20 c 0,26,27 - 887 -20 887 -20 791 102 c 1,28,29 - 695 -20 695 -20 532 -20 c 0,30,31 - 314 -20 314 -20 202 105 c 128,-1,32 - 90 230 90 230 90 451 c 0,33,34 - 90 521 90 521 98 582 c 128,-1,35 - 106 643 106 643 114 680 c 128,-1,36 - 122 717 122 717 142 759 c 128,-1,37 - 162 801 162 801 170.5 815 c 128,-1,38 - 179 829 179 829 204 863.5 c 128,-1,39 - 229 898 229 898 231 901 c 1,40,-1 - 492 901 l 1,41,42 - 490 898 490 898 473 871 c 128,-1,43 - 456 844 456 844 447 827 c 128,-1,44 - 438 810 438 810 420.5 775.5 c 128,-1,45 - 403 741 403 741 392 709 c 128,-1,46 - 381 677 381 677 369 635.5 c 128,-1,47 - 357 594 357 594 351.5 547 c 128,-1,48 - 346 500 346 500 346 451 c 0,49,50 - 346 272 346 272 389 177 c 128,-1,51 - 432 82 432 82 532 82 c 0,52,53 - 600 82 600 82 632 201 c 128,-1,54 - 664 320 664 320 664 592 c 2,55,-1 - 664 762 l 1,56,-1 - 920 762 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Epsilontonos -Encoding: 904 904 1023 -Width: 1363 -VWidth: 0 -Flags: W -HStem: 0 102<686 1280> 799 102<686 1063> 1255 387 1331 102<686 1247> -VStem: 74 350 420 266<102 799 901 1331> -LayerCount: 2 -Fore -Refer: 978 917 N 1 0 0 1 246 0 2 -Refer: 971 900 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Etatonos -Encoding: 905 905 1024 -Width: 1597 -VWidth: 0 -Flags: W -HStem: 0 43<420 686 1161 1427> 717 102<686 1161> 1255 387 1393 41<420 686 1161 1427> -VStem: 74 350 420 266<0 717 819 1434> 1161 266<0 717 819 1434> -LayerCount: 2 -Fore -Refer: 980 919 N 1 0 0 1 246 0 2 -Refer: 971 900 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Iotatonos -Encoding: 906 906 1025 -Width: 851 -VWidth: 0 -Flags: W -HStem: 0 43<418 684> 1255 387 1393 41<418 684> -VStem: 74 350 418 266<0 1434> -LayerCount: 2 -Fore -Refer: 982 921 N 1 0 0 1 246 0 2 -Refer: 971 900 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Omicrontonos -Encoding: 908 908 1026 -Width: 1517 -VWidth: 0 -Flags: W -HStem: -20 102<668 943> 1255 387 1352 102<647 937> -VStem: 74 350 184 266<424 1012> 1153 266<414 1009> -LayerCount: 2 -Fore -Refer: 988 927 N 1 0 0 1 82 0 2 -Refer: 971 900 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Upsilontonos -Encoding: 910 910 1027 -Width: 1357 -VWidth: 0 -Flags: W -HStem: 0 43<752 1018> 1255 387 1393 41<391 670 1136 1341> -VStem: 74 350 752 266<0 727> -LayerCount: 2 -Fore -Refer: 993 933 N 1 0 0 1 369 0 2 -Refer: 971 900 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Omegatonos -Encoding: 911 911 1028 -Width: 1607 -VWidth: 0 -Flags: W -HStem: 0 102<250 403 1196 1350> 0 246<579 659 940 1020> 1255 387 1352 102<626 972> -VStem: 74 350 143 256<540 1035> 403 256<102 241> 940 256<102 241> 1200 256<540 1035> -LayerCount: 2 -Fore -Refer: 997 937 N 1 0 0 1 0 0 2 -Refer: 971 900 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: iotadieresistonos -Encoding: 912 912 1029 -Width: 620 -VWidth: 0 -Flags: W -HStem: 0 43<182 438> 860 41<182 438> 1079 387 1085 178<-59 104 514 678> -VStem: -59 164<1085 1264> 178 350 182 256<0 901> 514 164<1085 1264> -LayerCount: 2 -Fore -Refer: 1006 953 N 1 0 0 1 59 0 2 -Refer: 972 901 N 1 0 0 1 -113 -184 2 -Validated: 1 -EndChar - -StartChar: Iotadieresis -Encoding: 938 938 1030 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<172 438> 1393 41<172 438> 1516 170<37 207 406 575> -VStem: 37 170<1516 1686> 172 266<0 1434> 406 170<1516 1686> -LayerCount: 2 -Fore -Refer: 151 207 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Upsilondieresis -Encoding: 939 939 1031 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<383 649> 1393 41<23 301 768 973> 1516 170<244 414 612 782> -VStem: 244 170<1516 1686> 383 266<0 727> 612 170<1516 1686> -LayerCount: 2 -Fore -Refer: 272 376 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: alphatonos -Encoding: 940 940 1032 -Width: 1228 -VWidth: 0 -Flags: W -HStem: -20 102<478 769 971 1142> 819 102<465 704> 860 41<754 999> 1090 387 -VStem: 90 246<235 670> 461 350 754 246<128 769 889 901> 1143 70<91 131> -LayerCount: 2 -Fore -Refer: 998 945 N 1 0 0 1 0 0 2 -Refer: 971 900 N 1 0 0 1 387 -166 2 -Validated: 1 -EndChar - -StartChar: epsilontonos -Encoding: 941 941 1033 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<350 574> 451 102<401 578> 819 102<383 573> 1090 387 -VStem: 61 256<108 400> 111 256<586 812> 324 350 -LayerCount: 2 -Fore -Refer: 1002 949 N 1 0 0 1 0 0 2 -Refer: 971 900 N 1 0 0 1 250 -166 2 -Validated: 1 -EndChar - -StartChar: etatonos -Encoding: 942 942 1034 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<147 403> 819 102<405 644> 1090 387 -VStem: 147 256<0 802> 430 350 692 256<-410 720> -LayerCount: 2 -Fore -Refer: 1004 951 N 1 0 0 1 0 0 2 -Refer: 971 900 N 1 0 0 1 356 -166 2 -Validated: 1 -EndChar - -StartChar: iotatonos -Encoding: 943 943 1035 -Width: 491 -VWidth: 0 -Flags: W -HStem: 0 43<115 371> 860 41<115 371> 1090 387 -VStem: 106 350 115 256<0 901> -LayerCount: 2 -Fore -Refer: 1006 953 N 1 0 0 1 -8 0 2 -Refer: 971 900 N 1 0 0 1 33 -166 2 -Validated: 1 -EndChar - -StartChar: upsilondieresistonos -Encoding: 944 944 1036 -Width: 1159 -VWidth: 0 -Flags: W -HStem: -20 102<454 703> 860 41<129 385 774 1030> 1079 387 1085 178<209 373 782 946> -VStem: 129 256<224 901> 209 164<1085 1264> 446 350 774 256<224 901> 782 164<1085 1264> -LayerCount: 2 -Fore -Refer: 1018 965 N 1 0 0 1 0 0 2 -Refer: 972 901 N 1 0 0 1 156 -184 2 -Validated: 1 -EndChar - -StartChar: iotadieresis -Encoding: 970 970 1037 -Width: 499 -VWidth: 0 -Flags: W -HStem: 0 43<123 379> 860 41<123 379> 1087 170<-20 150 348 518> -VStem: -20 170<1087 1257> 123 256<0 901> 348 170<1087 1257> -LayerCount: 2 -Fore -Refer: 1006 953 N 1 0 0 1 0 0 2 -Refer: 368 168 S 1 0 0 1 -31 -182 2 -Validated: 1 -EndChar - -StartChar: upsilondieresis -Encoding: 971 971 1038 -Width: 1159 -VWidth: 0 -Flags: W -HStem: -20 102<454 703> 860 41<129 385 774 1030> 1087 170<303 473 672 842> -VStem: 129 256<224 901> 303 170<1087 1257> 672 170<1087 1257> 774 256<224 901> -LayerCount: 2 -Fore -Refer: 1018 965 N 1 0 0 1 0 0 2 -Refer: 368 168 N 1 0 0 1 293 -182 2 -Validated: 1 -EndChar - -StartChar: omicrontonos -Encoding: 972 972 1039 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<425 644> 819 102<426 643> 1090 387 -VStem: 90 256<214 657> 446 350 715 256<223 678> -LayerCount: 2 -Fore -Refer: 1012 959 N 1 0 0 1 0 0 2 -Refer: 971 900 S 1 0 0 1 373 -166 2 -Validated: 1 -EndChar - -StartChar: upsilontonos -Encoding: 973 973 1040 -Width: 1159 -VWidth: 0 -Flags: W -HStem: -20 102<454 703> 860 41<129 385 774 1030> 1090 387 -VStem: 129 256<224 901> 438 350 774 256<224 901> -LayerCount: 2 -Fore -Refer: 971 900 S 1 0 0 1 365 -166 2 -Refer: 1018 965 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: omegatonos -Encoding: 974 974 1041 -Width: 1579 -VWidth: 0 -Flags: W -HStem: -20 102<426 601 982 1157> 860 41<206 492 1092 1377> 1090 387 -VStem: 90 256<214 704> 664 256<163 762> 676 350 1237 256<214 704> -LayerCount: 2 -Fore -Refer: 1022 969 N 1 0 0 1 0 0 2 -Refer: 971 900 N 1 0 0 1 602 -166 2 -Validated: 1 -EndChar - -StartChar: uni037E -Encoding: 894 894 1042 -Width: 356 -VWidth: 0 -Flags: W -HStem: -203 367<-86 20> 614 164<92 307> -VStem: 90 219<-48 164> 92 215<614 778> -LayerCount: 2 -Fore -Refer: 64 59 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: anoteleia -Encoding: 903 903 1043 -Width: 272 -VWidth: 0 -Flags: W -HStem: 414 170<51 221> -VStem: 51 170<414 584> -LayerCount: 2 -Fore -Refer: 343 183 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: dagger -Encoding: 8224 8224 1044 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43G<462 488> 1311 41G<414 538> -LayerCount: 2 -Fore -SplineSet -543 967 m 17,0,-1 - 575 309 l 1,1,-1 - 475 0 l 1,2,-1 - 377 311 l 1,3,-1 - 442 965 l 1,4,-1 - 156 932 l 1,5,-1 - 90 997 l 1,6,-1 - 156 1065 l 1,7,-1 - 442 1032 l 1,8,-1 - 377 1286 l 1,9,-1 - 475 1352 l 1,10,-1 - 575 1286 l 1,11,-1 - 543 1032 l 1,12,-1 - 797 1065 l 1,13,-1 - 862 999 l 1,14,-1 - 797 934 l 1,15,-1 - 543 967 l 17,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: daggerdbl -Encoding: 8225 8225 1045 -Width: 952 -VWidth: 0 -Flags: W -HStem: 2 43G<414 539> 1311 41G<414 538> -LayerCount: 2 -Fore -SplineSet -575 676 m 25,0,-1 - 543 389 l 1,1,-1 - 797 422 l 1,2,-1 - 862 356 l 1,3,-1 - 797 289 l 1,4,-1 - 543 322 l 1,5,-1 - 575 68 l 1,6,-1 - 477 2 l 1,7,-1 - 377 68 l 1,8,-1 - 410 322 l 1,9,-1 - 156 289 l 1,10,-1 - 90 354 l 1,11,-1 - 156 420 l 1,12,-1 - 410 387 l 1,13,-1 - 377 678 l 1,14,-1 - 410 965 l 1,15,-1 - 156 932 l 1,16,-1 - 90 997 l 1,17,-1 - 156 1065 l 1,18,-1 - 410 1032 l 1,19,-1 - 377 1286 l 1,20,-1 - 475 1352 l 1,21,-1 - 575 1286 l 1,22,-1 - 543 1032 l 1,23,-1 - 797 1065 l 1,24,-1 - 862 999 l 1,25,-1 - 797 934 l 1,26,-1 - 543 967 l 1,27,-1 - 575 676 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: perthousand -Encoding: 8240 8240 1046 -Width: 1888 -VWidth: 0 -Flags: W -HStem: 156 109<845 973 1460 1588> 473 109<845 973 1460 1588> 729 109<292 421> 1047 109<292 421> -VStem: 82 201<844 1040> 430 201<844 1040> 635 201<271 467> 983 201<271 467> 1249 201<271 467> 1597 201<271 467> -LayerCount: 2 -Fore -SplineSet -1450 369 m 0,0,1 - 1450 264 1450 264 1524 264 c 0,2,3 - 1597 264 1597 264 1597 369 c 0,4,5 - 1597 473 1597 473 1524 473 c 0,6,7 - 1450 473 1450 473 1450 369 c 0,0,1 -1249 369 m 128,-1,9 - 1249 427 1249 427 1274.5 470.5 c 128,-1,10 - 1300 514 1300 514 1342.5 537.5 c 128,-1,11 - 1385 561 1385 561 1430.5 571.5 c 128,-1,12 - 1476 582 1476 582 1524 582 c 128,-1,13 - 1572 582 1572 582 1617.5 571.5 c 128,-1,14 - 1663 561 1663 561 1705 537.5 c 128,-1,15 - 1747 514 1747 514 1772.5 470.5 c 128,-1,16 - 1798 427 1798 427 1798 369 c 128,-1,17 - 1798 311 1798 311 1772.5 267.5 c 128,-1,18 - 1747 224 1747 224 1705 200.5 c 128,-1,19 - 1663 177 1663 177 1617.5 166.5 c 128,-1,20 - 1572 156 1572 156 1524 156 c 128,-1,21 - 1476 156 1476 156 1430.5 166.5 c 128,-1,22 - 1385 177 1385 177 1342.5 200.5 c 128,-1,23 - 1300 224 1300 224 1274.5 267.5 c 128,-1,8 - 1249 311 1249 311 1249 369 c 128,-1,9 -836 369 m 0,24,25 - 836 264 836 264 909 264 c 0,26,27 - 983 264 983 264 983 369 c 0,28,29 - 983 473 983 473 909 473 c 0,30,31 - 836 473 836 473 836 369 c 0,24,25 -635 369 m 128,-1,33 - 635 427 635 427 660.5 470.5 c 128,-1,34 - 686 514 686 514 728 537.5 c 128,-1,35 - 770 561 770 561 815.5 571.5 c 128,-1,36 - 861 582 861 582 909 582 c 128,-1,37 - 957 582 957 582 1002.5 571.5 c 128,-1,38 - 1048 561 1048 561 1090.5 537.5 c 128,-1,39 - 1133 514 1133 514 1158.5 470.5 c 128,-1,40 - 1184 427 1184 427 1184 369 c 128,-1,41 - 1184 311 1184 311 1158.5 267.5 c 128,-1,42 - 1133 224 1133 224 1090.5 200.5 c 128,-1,43 - 1048 177 1048 177 1002.5 166.5 c 128,-1,44 - 957 156 957 156 909 156 c 128,-1,45 - 861 156 861 156 815.5 166.5 c 128,-1,46 - 770 177 770 177 728 200.5 c 128,-1,47 - 686 224 686 224 660.5 267.5 c 128,-1,32 - 635 311 635 311 635 369 c 128,-1,33 -283 942 m 0,48,49 - 283 838 283 838 356 838 c 0,50,51 - 430 838 430 838 430 942 c 0,52,53 - 430 1047 430 1047 356 1047 c 0,54,55 - 283 1047 283 1047 283 942 c 0,48,49 -82 942 m 128,-1,57 - 82 1000 82 1000 107.5 1043.5 c 128,-1,58 - 133 1087 133 1087 175 1110.5 c 128,-1,59 - 217 1134 217 1134 262.5 1144.5 c 128,-1,60 - 308 1155 308 1155 356 1155 c 128,-1,61 - 404 1155 404 1155 449.5 1144.5 c 128,-1,62 - 495 1134 495 1134 537.5 1110.5 c 128,-1,63 - 580 1087 580 1087 605.5 1043.5 c 128,-1,64 - 631 1000 631 1000 631 942 c 128,-1,65 - 631 884 631 884 605.5 840.5 c 128,-1,66 - 580 797 580 797 537.5 773.5 c 128,-1,67 - 495 750 495 750 449.5 739.5 c 128,-1,68 - 404 729 404 729 356 729 c 128,-1,69 - 308 729 308 729 262.5 739.5 c 128,-1,70 - 217 750 217 750 175 773.5 c 128,-1,71 - 133 797 133 797 107.5 840.5 c 128,-1,56 - 82 884 82 884 82 942 c 128,-1,57 -143 264 m 1,72,-1 - 903 1047 l 1,73,-1 - 1122 1047 l 1,74,-1 - 362 264 l 1,75,-1 - 143 264 l 1,72,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tilde -Encoding: 732 732 1047 -Width: 729 -VWidth: 0 -Flags: W -HStem: 1270 141<357 556> 1335 141<173 372> -VStem: 82 84<1270 1322> 563 84<1424 1477> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 942 0 2 -Validated: 1 -EndChar - -StartChar: trademark -Encoding: 8482 8482 1048 -Width: 1501 -VWidth: 0 -Flags: W -HStem: 899 43G<1054 1097> 1386 47<74 307 440 674> -VStem: 307 133<786 1386> 756 133<786 1257> 1264 133<786 1257> -LayerCount: 2 -Fore -SplineSet -889 1434 m 1,0,-1 - 1075 1071 l 1,1,-1 - 1264 1434 l 1,2,-1 - 1397 1434 l 1,3,-1 - 1397 786 l 1,4,-1 - 1264 786 l 1,5,-1 - 1264 1257 l 1,6,-1 - 1075 899 l 1,7,-1 - 889 1257 l 1,8,-1 - 889 786 l 1,9,-1 - 756 786 l 1,10,-1 - 756 1434 l 1,11,-1 - 889 1434 l 1,0,-1 -74 1434 m 1,12,-1 - 674 1434 l 1,13,-1 - 674 1386 l 1,14,-1 - 440 1386 l 1,15,-1 - 440 786 l 1,16,-1 - 307 786 l 1,17,-1 - 307 1386 l 1,18,-1 - 74 1386 l 1,19,-1 - 74 1434 l 1,12,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: notequal -Encoding: 8800 8800 1049 -Width: 708 -VWidth: 0 -Flags: W -HStem: 0 43G<86 275> 348 102<82 209 420 627> 573 102<82 289 500 627> -VStem: 82 545<348 451 573 676> -LayerCount: 2 -Fore -SplineSet -209 348 m 1,0,-1 - 82 348 l 1,1,-1 - 82 451 l 1,2,-1 - 246 451 l 1,3,-1 - 289 573 l 1,4,-1 - 82 573 l 1,5,-1 - 82 676 l 1,6,-1 - 326 676 l 1,7,-1 - 449 1024 l 1,8,-1 - 623 1024 l 1,9,-1 - 500 676 l 1,10,-1 - 627 676 l 1,11,-1 - 627 573 l 1,12,-1 - 463 573 l 1,13,-1 - 420 451 l 1,14,-1 - 627 451 l 1,15,-1 - 627 348 l 1,16,-1 - 383 348 l 1,17,-1 - 260 0 l 1,18,-1 - 86 0 l 1,19,-1 - 209 348 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: infinity -Encoding: 8734 8734 1050 -Width: 1843 -VWidth: 0 -Flags: W -HStem: 127 102<401 629 1214 1442> 795 102<401 629 1214 1442> -VStem: 61 266<337 687> 1516 266<337 687> -LayerCount: 2 -Fore -SplineSet -1325 229 m 0,0,1 - 1369 229 1369 229 1403 245 c 128,-1,2 - 1437 261 1437 261 1458 287.5 c 128,-1,3 - 1479 314 1479 314 1492.5 351.5 c 128,-1,4 - 1506 389 1506 389 1511 428 c 128,-1,5 - 1516 467 1516 467 1516 512 c 128,-1,6 - 1516 557 1516 557 1511 596 c 128,-1,7 - 1506 635 1506 635 1492.5 672.5 c 128,-1,8 - 1479 710 1479 710 1458 736.5 c 128,-1,9 - 1437 763 1437 763 1403 779 c 128,-1,10 - 1369 795 1369 795 1325 795 c 0,11,12 - 1285 795 1285 795 1247.5 776 c 128,-1,13 - 1210 757 1210 757 1169 711 c 128,-1,14 - 1128 665 1128 665 1104 632.5 c 128,-1,15 - 1080 600 1080 600 1031 528 c 0,16,17 - 1024 517 1024 517 1020 512 c 1,18,19 - 1119 367 1119 367 1163 319 c 0,20,21 - 1246 229 1246 229 1325 229 c 0,0,1 -1325 897 m 128,-1,23 - 1410 897 1410 897 1490 873 c 128,-1,24 - 1570 849 1570 849 1636 803.5 c 128,-1,25 - 1702 758 1702 758 1742 682 c 128,-1,26 - 1782 606 1782 606 1782 512 c 128,-1,27 - 1782 418 1782 418 1742 342 c 128,-1,28 - 1702 266 1702 266 1636 220.5 c 128,-1,29 - 1570 175 1570 175 1490 151 c 128,-1,30 - 1410 127 1410 127 1325 127 c 128,-1,31 - 1240 127 1240 127 1163.5 162 c 128,-1,32 - 1087 197 1087 197 1033 247 c 128,-1,33 - 979 297 979 297 922 371 c 1,34,35 - 835 257 835 257 738 192 c 128,-1,36 - 641 127 641 127 518 127 c 0,37,38 - 433 127 433 127 353 151 c 128,-1,39 - 273 175 273 175 207 220.5 c 128,-1,40 - 141 266 141 266 101 342 c 128,-1,41 - 61 418 61 418 61 512 c 128,-1,42 - 61 606 61 606 101 682 c 128,-1,43 - 141 758 141 758 207 803.5 c 128,-1,44 - 273 849 273 849 353 873 c 128,-1,45 - 433 897 433 897 518 897 c 0,46,47 - 641 897 641 897 738 832 c 128,-1,48 - 835 767 835 767 922 653 c 1,49,50 - 979 727 979 727 1033 777 c 128,-1,51 - 1087 827 1087 827 1163.5 862 c 128,-1,22 - 1240 897 1240 897 1325 897 c 128,-1,23 -823 512 m 1,52,53 - 724 657 724 657 680 705 c 0,54,55 - 597 795 597 795 518 795 c 0,56,57 - 328 795 328 795 328 512 c 128,-1,58 - 328 229 328 229 518 229 c 0,59,60 - 558 229 558 229 595.5 248 c 128,-1,61 - 633 267 633 267 674 313 c 128,-1,62 - 715 359 715 359 739 391.5 c 128,-1,63 - 763 424 763 424 812 496 c 0,64,65 - 819 507 819 507 823 512 c 1,52,53 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni026A -Encoding: 618 618 1051 -Width: 600 -VWidth: 0 -Flags: W -HStem: 0 102<90 172 428 510> 799 102<90 172 428 510> -VStem: 172 256<102 799> -AnchorPoint: "cedilla" 305 0 basechar 0 -AnchorPoint: "bottom" 305 0 basechar 0 -AnchorPoint: "top" 305 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -90 901 m 1,0,-1 - 510 901 l 1,1,-1 - 510 799 l 1,2,-1 - 428 799 l 1,3,-1 - 428 102 l 1,4,-1 - 510 102 l 1,5,-1 - 510 0 l 1,6,-1 - 90 0 l 1,7,-1 - 90 102 l 1,8,-1 - 172 102 l 1,9,-1 - 172 799 l 1,10,-1 - 90 799 l 1,11,-1 - 90 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0298 -Encoding: 664 664 1052 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<587 861> 649 170<633 803> 1352 102<565 855> -VStem: 102 266<424 1012> 633 170<649 819> 1071 266<414 1009> -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 2 -Refer: 343 183 N 1 0 0 1 582 236 2 -Validated: 1 -EndChar - -StartChar: uni1E06 -Encoding: 7686 7686 1053 -Width: 1116 -VWidth: 0 -Flags: W -HStem: -221 115<317 788> 0 102<440 656> 727 102<440 574> 1331 102<440 601> -VStem: 174 266<102 727 829 1331> 317 471<-221 -106> 686 266<944 1243> 772 266<216 579> -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 1151 0 2 -Refer: 28 66 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E07 -Encoding: 7687 7687 1054 -Width: 1079 -VWidth: 0 -Flags: W -HStem: -221 115<305 776> -20 102<441 662> 819 102<429 664> 1311 41<139 395> -VStem: 139 256<147 782 897 1352> 305 471<-221 -106> 737 256<216 685> -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 1139 0 2 -Refer: 6 98 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E14 -Encoding: 7700 7700 1055 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 664 102<440 817> 1126 102<440 1001> 1352 115<369 840> 1501 301 -VStem: 174 266<102 664 766 1126> 369 471<1352 1466> 414 340 -LayerCount: 2 -Fore -Refer: 589 57371 N 1 0 0 1 0 0 2 -Refer: 96 772 N 1 0 0 1 1202 82 2 -Refer: 592 58625 N 1 0 0 1 266 20 2 -Validated: 1 -EndChar - -StartChar: uni1E15 -Encoding: 7701 7701 1056 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1085 115<285 756> 1325 403 -VStem: 90 256<235 451 553 656> 205 371 285 471<1085 1200> -LayerCount: 2 -Fore -Refer: 259 275 N 1 0 0 1 0 0 3 -Refer: 884 715 S 1 0 0 1 160 76 2 -Validated: 1 -EndChar - -StartChar: uni1E16 -Encoding: 7702 7702 1057 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<440 1034> 664 102<440 817> 1126 102<440 1001> 1352 115<369 840> 1501 301 -VStem: 174 266<102 664 766 1126> 369 471<1352 1466> 541 340 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1202 82 2 -Refer: 589 57371 N 1 0 0 1 0 0 2 -Refer: 591 58624 N 1 0 0 1 393 20 2 -Validated: 1 -EndChar - -StartChar: uni1E17 -Encoding: 7703 7703 1058 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<441 705> 451 102<350 684> 819 102<425 629> 1085 115<285 756> 1325 403 -VStem: 90 256<235 451 553 656> 285 471<1085 1200> 465 371 -LayerCount: 2 -Fore -Refer: 259 275 N 1 0 0 1 0 0 3 -Refer: 883 714 N 1 0 0 1 383 76 2 -Validated: 1 -EndChar - -StartChar: uni1E1A -Encoding: 7706 7706 1059 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -285 117<611 810> -219 117<427 626> 0 102<440 1034> 799 102<440 817> 1331 102<440 1001> -VStem: 174 266<102 799 901 1331> 336 84<-285 -234> 817 84<-153 -102> -LayerCount: 2 -Fore -Refer: 488 816 N 1 0 0 1 1217 0 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1B -Encoding: 7707 7707 1060 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -285 117<521 720> -219 117<337 535> -20 102<441 705> 451 102<350 684> 819 102<425 629> -VStem: 90 256<235 451 553 656> 246 84<-285 -234> 727 84<-153 -102> -LayerCount: 2 -Fore -Refer: 488 816 N 1 0 0 1 1126 0 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2C -Encoding: 7724 7724 1061 -Width: 606 -VWidth: 0 -Flags: W -HStem: -285 117<282 480> -219 117<97 296> 0 43<172 438> 1393 41<172 438> -VStem: 6 84<-285 -234> 172 266<0 1434> 487 84<-153 -102> -LayerCount: 2 -Fore -Refer: 488 816 N 1 0 0 1 887 0 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2D -Encoding: 7725 7725 1062 -Width: 499 -VWidth: 0 -Flags: W -HStem: -285 117<233 431> -219 117<48 247> 0 43<123 379> 860 41<123 379> 1065 164<143 358> -VStem: -43 84<-285 -234> 123 256<0 901> 143 215<1065 1229> 438 84<-153 -102> -LayerCount: 2 -Fore -Refer: 488 816 N 1 0 0 1 838 0 2 -Refer: 8 105 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uniA7AA -Encoding: 42922 42922 1063 -Width: 1708 -VWidth: 0 -Flags: W -HStem: 0 43G<530 797 1272 1538> 717 102<797 1272> 918 43G<240 313> 1331 102<360 530> -VStem: 41 238<1032 1255> 530 266<0 717 819 1331> 1272 266<0 717 819 1434> -LayerCount: 2 -Fore -SplineSet -797 1434 m 1,0,-1 - 797 819 l 1,1,-1 - 1272 819 l 1,2,-1 - 1272 1434 l 1,3,-1 - 1538 1434 l 1,4,-1 - 1538 0 l 1,5,-1 - 1272 0 l 1,6,-1 - 1272 717 l 1,7,-1 - 797 717 l 1,8,-1 - 797 0 l 1,9,-1 - 530 0 l 1,10,-1 - 530 1331 l 1,11,-1 - 477 1331 l 2,12,13 - 391 1331 391 1331 335 1271 c 128,-1,14 - 279 1211 279 1211 279 1139 c 0,15,16 - 279 1124 279 1124 280 1112 c 128,-1,17 - 281 1100 281 1100 283.5 1090 c 128,-1,18 - 286 1080 286 1080 287.5 1073 c 128,-1,19 - 289 1066 289 1066 294 1059.5 c 128,-1,20 - 299 1053 299 1053 301 1049 c 128,-1,21 - 303 1045 303 1045 309.5 1040.5 c 128,-1,22 - 316 1036 316 1036 318 1034.5 c 128,-1,23 - 320 1033 320 1033 327.5 1029 c 128,-1,24 - 335 1025 335 1025 336 1024 c 1,25,-1 - 299 918 l 1,26,27 - 233 927 233 927 178 949.5 c 128,-1,28 - 123 972 123 972 82 1018.5 c 128,-1,29 - 41 1065 41 1065 41 1128 c 0,30,31 - 41 1262 41 1262 158.5 1348 c 128,-1,32 - 276 1434 276 1434 457 1434 c 2,33,-1 - 797 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E94 -Encoding: 7828 7828 1064 -Width: 1040 -VWidth: 0 -Flags: W -HStem: -221 115<303 774> 0 102<362 983> 1331 102<102 672> -VStem: 303 471<-221 -106> -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 1137 0 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E95 -Encoding: 7829 7829 1065 -Width: 860 -VWidth: 0 -Flags: W -HStem: -221 115<197 668> 0 102<352 823> 799 102<74 520> -VStem: 197 471<-221 -106> -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 1030 0 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E96 -Encoding: 7830 7830 1066 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -221 115<287 758> 0 43<147 403 692 948> 819 102<405 644> 1311 41<147 403> -VStem: 147 256<0 802 907 1352> 287 471<-221 -106> 692 256<0 720> -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 1120 0 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni031D -Encoding: 797 797 1067 -Width: 0 -VWidth: 0 -Flags: W -HStem: -326 82<-754 -631 -549 -426> -VStem: -631 82<-244 -82> -AnchorPoint: "bottom" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --426 -326 m 1,0,-1 - -754 -326 l 1,1,-1 - -754 -244 l 1,2,-1 - -631 -244 l 1,3,-1 - -631 -82 l 1,4,-1 - -549 -82 l 1,5,-1 - -549 -244 l 1,6,-1 - -426 -244 l 1,7,-1 - -426 -326 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E42 -Encoding: 7746 7746 1068 -Width: 1626 -VWidth: 0 -Flags: W -HStem: -272 170<729 899> 0 43<174 440 1190 1456> 1393 41<174 459 1171 1456> -VStem: 174 266<0 1047> 729 170<-272 -102> 1190 266<0 1047> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1405 0 2 -Refer: 40 77 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E43 -Encoding: 7747 7747 1069 -Width: 1675 -VWidth: 0 -Flags: W -HStem: -272 170<768 938> 0 43<147 403 723 979 1280 1536> 819 102<405 663 980 1220> -VStem: 147 256<0 811> 723 256<0 757> 768 170<-272 -102> 1280 256<0 743> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1444 0 2 -Refer: 11 109 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0265 -Encoding: 613 613 1070 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<450 687> 860 41G<143 399 688 944> -VStem: 143 256<163 901> 688 256<91 901> -AnchorPoint: "cedilla" 522 0 basechar 0 -AnchorPoint: "horn" 944 635 basechar 0 -AnchorPoint: "bottom" 532 0 basechar 0 -AnchorPoint: "ogonek" 936 -410 basechar 0 -AnchorPoint: "top" 549 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -688 -1 m 1,0,1 - 619 -20 619 -20 541 -20 c 0,2,3 - 329 -20 329 -20 236 84 c 128,-1,4 - 143 188 143 188 143 410 c 2,5,-1 - 143 901 l 1,6,-1 - 399 901 l 1,7,-1 - 399 434 l 2,8,9 - 399 285 399 285 412.5 213 c 128,-1,10 - 426 141 426 141 461.5 111.5 c 128,-1,11 - 497 82 497 82 571 82 c 0,12,13 - 636 82 636 82 688 106 c 1,14,-1 - 688 901 l 1,15,-1 - 944 901 l 1,16,-1 - 944 -410 l 1,17,-1 - 688 -410 l 1,18,-1 - 688 -1 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA78B -Encoding: 42891 42891 1071 -Width: 448 -VWidth: 0 -Flags: W -HStem: 1393 41G<92 348> -VStem: 92 256<937 1434> 123 195<369 866> -LayerCount: 2 -Fore -SplineSet -348 1434 m 17,0,-1 - 317 369 l 1,1,-1 - 123 369 l 1,2,-1 - 92 1434 l 1,3,-1 - 348 1434 l 17,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA78C -Encoding: 42892 42892 1072 -Width: 428 -VWidth: 0 -Flags: W -LayerCount: 2 -Fore -Refer: 56 39 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uniA78D -Encoding: 42893 42893 1073 -Width: 1410 -VWidth: 0 -Flags: W -HStem: 0 21G<973 1240> 512 103<496.459 842.045> 1414 20G<123 390 973 1240> -VStem: 123 267<758.421 1434> 973 267<0 603 715.176 1434> -LayerCount: 2 -Fore -SplineSet -1240 1434 m 9,0,-1 - 1240 0 l 1,1,-1 - 973 0 l 1,2,-1 - 973 603 l 1,3,4 - 965 599 965 599 935 582 c 128,-1,5 - 905 565 905 565 886.5 556 c 128,-1,6 - 868 547 868 547 836 535 c 128,-1,7 - 804 523 804 523 767 517.5 c 128,-1,8 - 730 512 730 512 687 512 c 0,9,10 - 577 512 577 512 477.5 539 c 128,-1,11 - 378 566 378 566 298 617.5 c 128,-1,12 - 218 669 218 669 170.5 753 c 128,-1,13 - 123 837 123 837 123 942 c 2,14,-1 - 123 1434 l 1,15,-1 - 390 1434 l 1,16,-1 - 390 967 l 2,17,18 - 390 883 390 883 404.5 820 c 128,-1,19 - 419 757 419 757 442.5 718.5 c 128,-1,20 - 466 680 466 680 501 656.5 c 128,-1,21 - 536 633 536 633 573 624 c 128,-1,22 - 610 615 610 615 656 615 c 0,23,24 - 754 615 754 615 829.5 653 c 128,-1,25 - 905 691 905 691 973 750 c 1,26,-1 - 973 1434 l 1,27,-1 - 1240 1434 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA789 -Encoding: 42889 42889 1074 -Width: 407 -VWidth: 0 -Flags: W -LayerCount: 2 -Fore -Refer: 63 58 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uniA78A -Encoding: 42890 42890 1075 -Width: 565 -VWidth: 0 -Flags: W -HStem: 348 102<82 483> 573 102<82 483> -VStem: 82 401<348 451 573 676> -LayerCount: 2 -Fore -SplineSet -82 676 m 1,0,-1 - 483 676 l 1,1,-1 - 483 573 l 1,2,-1 - 82 573 l 1,3,-1 - 82 676 l 1,0,-1 -82 451 m 1,4,-1 - 483 451 l 1,5,-1 - 483 348 l 1,6,-1 - 82 348 l 1,7,-1 - 82 451 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniE04C -Encoding: 57420 57420 1076 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 123<-776 -399> -VStem: -856 76<1400 1478> -395 76<1400 1478> -AnchorPoint: "mktop" -586 1491 basemark 0 -AnchorPoint: "mktop" -586 1192 mark 0 -AnchorPoint: "top" -588 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --506 1393 m 2,0,1 - -395 1393 -395 1393 -395 1419 c 0,2,3 - -395 1428 -395 1428 -399 1441 c 128,-1,4 - -403 1454 -403 1454 -403 1458 c 0,5,6 - -403 1481 -403 1481 -373 1481 c 0,7,8 - -349 1481 -349 1481 -334 1460.5 c 128,-1,9 - -319 1440 -319 1440 -319 1407 c 0,10,11 - -319 1369 -319 1369 -361.5 1336.5 c 128,-1,12 - -404 1304 -404 1304 -465.5 1287 c 128,-1,13 - -527 1270 -527 1270 -588 1270 c 128,-1,14 - -649 1270 -649 1270 -710 1287 c 128,-1,15 - -771 1304 -771 1304 -813.5 1336.5 c 128,-1,16 - -856 1369 -856 1369 -856 1407 c 0,17,18 - -856 1440 -856 1440 -841 1460.5 c 128,-1,19 - -826 1481 -826 1481 -803 1481 c 0,20,21 - -772 1481 -772 1481 -772 1458 c 0,22,23 - -772 1454 -772 1454 -776 1441 c 128,-1,24 - -780 1428 -780 1428 -780 1419 c 0,25,26 - -780 1393 -780 1393 -670 1393 c 2,27,-1 - -506 1393 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01F8 -Encoding: 504 504 1077 -Width: 1406 -VWidth: 0 -HStem: 0 43<174 440 951 1237> 1393 41<174 463 971 1237> 1495 403 -VStem: 174 266<0 1075> 381 371 971 266<367 1434> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1106 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01F9 -Encoding: 505 505 1078 -Width: 1087 -VWidth: 0 -HStem: 0 43<147 403 692 948> 819 102<405 644> 1065 403 -VStem: 147 256<0 802> 279 371 692 256<0 720> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1004 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Aringacute -Encoding: 506 506 1079 -Width: 1298 -VWidth: 0 -Flags: HW -HStem: 0 21<39 281.317 1020.73 1264> 410 102<461 842> 1653 72<587.726 714.358> 1776 301 -VStem: 496 71<1506.18 1632.27> 582 340 735 72<1506.18 1632.27> -LayerCount: 2 -Fore -Refer: 143 197 N 1 0 0 1 0 0 2 -Refer: 591 58624 N 1 0 0 1 435 295 2 -EndChar - -StartChar: aringacute -Encoding: 507 507 1080 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<401 601> 520 102<400 596> 819 102<338 551> 983 72<422 557> 1223 72<422 557> 1347 403 -VStem: 94 256<132 467> 334 72<1071 1206> 389 371 573 72<1071 1206> 602 256<87 518 616 771> -LayerCount: 2 -Fore -Refer: 133 229 N 1 0 0 1 0 0 2 -Refer: 93 769 N 1 0 0 1 1077 98 2 -Validated: 1 -EndChar - -StartChar: AEacute -Encoding: 508 508 1081 -Width: 1813 -VWidth: 0 -Flags: W -HStem: 0 102<1136 1730> 410 102<461 869> 799 102<1136 1512> 1331 103<759 869 1136 1697> 1495 403 -VStem: 869 267<102 410 512 799 901 1331> 898 371 -LayerCount: 2 -Fore -Refer: 168 198 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1586 246 2 -Validated: 1 -EndChar - -StartChar: aeacute -Encoding: 509 509 1082 -Width: 1540 -VWidth: 0 -Flags: W -HStem: -20 102<401 600 950 1217> 451 102<862 1196> 520 102<400 596> 819 102<338 556 938 1141> 1065 403 -VStem: 94 256<132 467> 602 256<188 451> 718 371 -LayerCount: 2 -Fore -Refer: 169 230 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1406 -184 2 -Validated: 1 -EndChar - -StartChar: uni026C -Encoding: 620 620 1083 -Width: 816 -VWidth: 0 -Flags: W -HStem: 0 21G<303 559> 564 71<205.233 303> 844 57<164.276 297.992> 1332 20G<303 559> -VStem: 74 78<681.051 837.015> 303 256<0 573.548 657 839.359 881 1352> -AnchorPoint: "horn" 467 1085 basechar 0 -AnchorPoint: "ogonek" 435 0 basechar 0 -AnchorPoint: "bottom" 428 0 basechar 0 -AnchorPoint: "cedilla" 424 0 basechar 0 -AnchorPoint: "top" 430 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -767 735 m 1,0,1 - 667 633 667 633 559 586 c 1,2,-1 - 559 0 l 1,3,-1 - 303 0 l 1,4,-1 - 303 564 l 1,5,6 - 192 584 192 584 133 638.5 c 128,-1,7 - 74 693 74 693 74 758 c 128,-1,8 - 74 823 74 823 114.5 862 c 128,-1,9 - 155 901 155 901 210 901 c 128,-1,10 - 265 901 265 901 303 881 c 1,11,-1 - 303 1352 l 1,12,-1 - 559 1352 l 1,13,-1 - 559 657 l 1,14,15 - 667 698 667 698 738 774 c 1,16,-1 - 767 735 l 1,0,1 -303 635 m 1,17,-1 - 303 811 l 1,18,19 - 270 844 270 844 230 844 c 0,20,21 - 152 844 152 844 152 770 c 0,22,23 - 152 660 152 660 303 635 c 1,17,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA7AD -Encoding: 42925 42925 1084 -Width: 1213 -VWidth: 0 -Flags: W -HStem: 0 102<570 1164> 564 71<205.233 303> 844 57<164.276 297.992> 1414 20G<303.964 570> -VStem: 74 78<681.051 837.015> 303 267<102 573.548 661 839.359 881 1434> -AnchorPoint: "horn" 464 1085 basechar 0 -AnchorPoint: "ogonek" 881 0 basechar 0 -AnchorPoint: "bottom" 740 0 basechar 0 -AnchorPoint: "cedilla" 732 0 basechar 0 -AnchorPoint: "top" 621 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -303 635 m 1,0,-1 - 303 811 l 1,1,2 - 270 844 270 844 230 844 c 0,3,4 - 152 844 152 844 152 770 c 0,5,6 - 152 660 152 660 303 635 c 1,0,-1 -304 1434 m 1,7,-1 - 570 1434 l 1,8,-1 - 570 661 l 1,9,10 - 671 702 671 702 738 774 c 1,11,-1 - 767 735 l 1,12,13 - 672 638 672 638 570 591 c 1,14,-1 - 570 102 l 1,15,-1 - 1164 102 l 1,16,-1 - 1164 0 l 1,17,-1 - 303 0 l 1,18,-1 - 303 564 l 1,19,20 - 192 584 192 584 133 638.5 c 128,-1,21 - 74 693 74 693 74 758 c 128,-1,22 - 74 823 74 823 114.5 862 c 128,-1,23 - 155 901 155 901 210 901 c 128,-1,24 - 265 901 265 901 303 881 c 1,25,-1 - 304 1434 l 1,7,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0528 -Encoding: 1320 1320 1085 -Width: 1351 -VWidth: 0 -Flags: HW -HStem: -348 102<-48.7734 157.271> 0 21G<915 1182> 717 102<440 915> 1414 20G<174 440 915 1182> -VStem: 174 266<-206.629 717 819 1434> 915 267<0 717 819 1434> -AnchorPoint: "top" 680 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -441 -68 m 2,0,1 - 441 -140 441 -140 403 -196 c 128,-1,2 - 365 -252 365 -252 305 -284 c 0,3,4 - 185 -348 185 -348 60 -348 c 128,-1,5 - -65 -348 -65 -348 -142 -256 c 1,6,-1 - -13 -195 l 1,7,8 - 23 -246 23 -246 95 -246 c 0,9,10 - 149 -246 149 -246 163 -184 c 0,11,12 - 175 -132 175 -132 175 0 c 2,13,-1 - 174 1434 l 1,14,-1 - 440 1434 l 1,15,-1 - 440 819 l 1,16,-1 - 915 819 l 1,17,-1 - 915 1434 l 1,18,-1 - 1182 1434 l 1,19,-1 - 1182 0 l 1,20,-1 - 915 0 l 1,21,-1 - 915 717 l 1,22,-1 - 440 717 l 1,23,-1 - 441 -68 l 2,0,1 -EndSplineSet -Validated: 1048577 -EndChar - -StartChar: uni0529 -Encoding: 1321 1321 1086 -Width: 1054 -VWidth: 0 -Flags: HW -HStem: -348 102<-101.771 104.466> 0 21G<678 934> 440 103<379 678> 881 20G<123 379 678 934> -VStem: 123 256<-208.158 440 543 901> 678 256<0 440 543 901> -AnchorPoint: "top" 535 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -379 -68 m 2,0,1 - 379 -140 379 -140 342 -196 c 0,2,3 - 306 -252 306 -252 248 -284 c 0,4,5 - 132 -348 132 -348 7 -348 c 128,-1,6 - -118 -348 -118 -348 -195 -256 c 1,7,-1 - -66 -195 l 1,8,9 - -30 -246 -30 -246 43 -246 c 0,10,11 - 97 -246 97 -246 111 -184 c 0,12,13 - 123 -132 123 -132 123 0 c 2,14,-1 - 123 901 l 1,15,-1 - 379 901 l 1,16,-1 - 379 543 l 1,17,-1 - 678 543 l 1,18,-1 - 678 901 l 1,19,-1 - 934 901 l 1,20,-1 - 934 0 l 1,21,-1 - 678 0 l 1,22,-1 - 678 440 l 1,23,-1 - 379 440 l 1,24,-1 - 379 -68 l 2,0,1 -EndSplineSet -Validated: 1048577 -EndChar - -StartChar: uni052E -Encoding: 1326 1326 1087 -Width: 1579 -VWidth: 0 -Flags: W -HStem: -20 102<128.471 349.503> 0 102<1245 1282> 1331 103<649 979> -VStem: 383 266<142.345 1331> 979 266<102 1331> 1348 98<-315 -38.6016> -AnchorPoint: "top" 815 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1245 102 m 1,0,-1 - 1446 102 l 1,1,-1 - 1446 -315 l 1,2,-1 - 1348 -315 l 1,3,4 - 1348 -250 1348 -250 1341 -193.5 c 128,-1,5 - 1334 -137 1334 -137 1324.5 -103 c 128,-1,6 - 1315 -69 1315 -69 1305.5 -44.5 c 128,-1,7 - 1296 -20 1296 -20 1289 -10 c 2,8,-1 - 1282 0 l 1,9,-1 - 979 0 l 1,10,-1 - 979 1331 l 1,11,-1 - 649 1331 l 1,12,-1 - 649 260 l 2,13,14 - 649 -20 649 -20 242 -20 c 0,15,16 - 112 -20 112 -20 35 72 c 1,17,-1 - 164 133 l 1,18,19 - 200 82 200 82 272 82 c 0,20,21 - 332 82 332 82 357.5 140.5 c 128,-1,22 - 383 199 383 199 383 328 c 2,23,-1 - 383 1434 l 1,24,-1 - 1245 1434 l 1,25,-1 - 1245 102 l 1,0,-1 -EndSplineSet -Validated: 1048577 -EndChar - -StartChar: uni052F -Encoding: 1327 1327 1088 -Width: 1354 -VWidth: 0 -Flags: W -HStem: -20 102<154.473 377.234> 0 102<1063 1100> 799 102<666 807> -VStem: 410 256<142.345 799> 807 256<102 799> 1166 98<-315 -38.6016> -AnchorPoint: "top" 688 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1063 102 m 1,0,-1 - 1264 102 l 1,1,-1 - 1264 -315 l 1,2,-1 - 1166 -315 l 1,3,4 - 1166 -250 1166 -250 1159 -193.5 c 128,-1,5 - 1152 -137 1152 -137 1142.5 -103 c 128,-1,6 - 1133 -69 1133 -69 1123.5 -44.5 c 128,-1,7 - 1114 -20 1114 -20 1107 -10 c 2,8,-1 - 1100 0 l 1,9,-1 - 807 0 l 1,10,-1 - 807 799 l 1,11,-1 - 666 799 l 1,12,-1 - 666 260 l 2,13,14 - 666 191 666 191 644 140 c 128,-1,15 - 622 89 622 89 586.5 58.5 c 128,-1,16 - 551 28 551 28 497.5 10 c 128,-1,17 - 444 -8 444 -8 390.5 -14 c 128,-1,18 - 337 -20 337 -20 268 -20 c 0,19,20 - 138 -20 138 -20 61 72 c 1,21,-1 - 190 133 l 1,22,23 - 226 82 226 82 299 82 c 0,24,25 - 359 82 359 82 384.5 140.5 c 128,-1,26 - 410 199 410 199 410 328 c 2,27,-1 - 410 901 l 1,28,-1 - 1063 901 l 1,29,-1 - 1063 102 l 1,0,-1 -EndSplineSet -Validated: 1048577 -EndChar -EndChars -EndSplineFont diff --git a/examples/pfennigFont/PfennigBold.ttf b/examples/pfennigFont/PfennigBold.ttf deleted file mode 100644 index c125e13d4..000000000 Binary files a/examples/pfennigFont/PfennigBold.ttf and /dev/null differ diff --git a/examples/pfennigFont/PfennigBoldItalic.sfd b/examples/pfennigFont/PfennigBoldItalic.sfd deleted file mode 100644 index d35e0d26d..000000000 --- a/examples/pfennigFont/PfennigBoldItalic.sfd +++ /dev/null @@ -1,29182 +0,0 @@ -SplineFontDB: 3.0 -FontName: PfennigBoldItalic -FullName: Pfennig Bold Italic -FamilyName: Pfennig -Weight: Bold -Copyright: Copyright 2009-2012 by Daniel Johnson. Released under the terms of the SIL Open Font License. -UComments: "2009-7-16: Created." -Version: 20120410 -ItalicAngle: -13 -UnderlinePosition: -204 -UnderlineWidth: 102 -Ascent: 1638 -Descent: 410 -LayerCount: 2 -Layer: 0 0 "Back" 1 -Layer: 1 1 "Fore" 0 -NeedsXUIDChange: 1 -XUID: [1021 1003 1579404955 6722392] -FSType: 0 -OS2Version: 0 -OS2_WeightWidthSlopeOnly: 0 -OS2_UseTypoMetrics: 1 -CreationTime: 1247766582 -ModificationTime: 1334085701 -PfmFamily: 33 -TTFWeight: 700 -TTFWidth: 5 -LineGap: 0 -VLineGap: 0 -OS2TypoAscent: 2174 -OS2TypoAOffset: 0 -OS2TypoDescent: -531 -OS2TypoDOffset: 0 -OS2TypoLinegap: 0 -OS2WinAscent: 2174 -OS2WinAOffset: 0 -OS2WinDescent: 531 -OS2WinDOffset: 0 -HheadAscent: 2174 -HheadAOffset: 0 -HheadDescent: -531 -HheadDOffset: 0 -OS2FamilyClass: 2050 -OS2Vendor: 'PfEd' -Lookup: 1 0 0 "'locl' Localized Forms in Sami" {"'locl' Localized Forms in Sami-1" } ['locl' ('latn' <'ISM ' > 'latn' <'LSM ' > 'latn' <'NSM ' > 'latn' <'SKS ' > ) ] -Lookup: 4 0 1 "'liga' Standard Ligatures in Latin lookup 0" {"'liga' Standard Ligatures in Latin lookup 0-1" } ['liga' ('DFLT' <'dflt' > 'latn' <'dflt' > ) ] -Lookup: 258 0 0 "'kern' Horizontal Kerning lookup 1" {"'kern' Horizontal Kerning lookup 1-1" } ['kern' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'latn' <'dflt' > ) ] -Lookup: 260 0 0 "'mark' Mark Positioning in Latin lookup 0" {"'mark' Mark Positioning in Latin lookup 0-1" } ['mark' ('DFLT' <'dflt' > 'latn' <'dflt' > ) ] -MarkAttachClasses: 1 -DEI: 91125 -KernClass2: 9 9 "'kern' Horizontal Kerning lookup 1-1" - 109 A L Agrave Aacute Acircumflex Atilde Adieresis Aring Amacron Abreve Aogonek Lacute Lcommaaccent Lcaron Lslash - 515 B C E G H I J K M N R S U X Z Ccedilla Egrave Eacute Ecircumflex Edieresis Ntilde Ugrave Uacute Ucircumflex Udieresis Cacute Ccircumflex Cdotaccent Ccaron Emacron Edotaccent Eogonek Ecaron Gcircumflex Gbreve Gdotaccent Gcommaaccent Hcircumflex Hbar Itilde Imacron Iogonek Idotaccent Jcircumflex Kcommaaccent Nacute Ncommaaccent Ncaron Eng OE Racute Rcommaaccent Rcaron Sacute Scircumflex Scedilla Scaron Utilde Umacron Ubreve Uring Uhungarumlaut Uogonek Zacute Zdotaccent Zcaron Scommaaccent uni1E02 uni1E40 uni1E60 - 115 D O Eth Ograve Oacute Ocircumflex Otilde Odieresis Oslash Thorn Dcaron Dcroat Omacron Ohungarumlaut uni01EA uni1E0A - 140 F P T V W Y Yacute Tcommaaccent Tcaron Tbar Wcircumflex Ycircumflex Ydieresis uni021A uni1E1E uni1E56 uni1E6A Wgrave Wacute Wdieresis Ygrave - 532 a c g h i j k m n q s u x z agrave aacute acircumflex atilde adieresis aring ccedilla igrave iacute icircumflex idieresis ntilde ugrave uacute ucircumflex udieresis amacron abreve aogonek cacute ccircumflex cdotaccent ccaron gcircumflex gbreve gdotaccent gcommaaccent hcircumflex hbar itilde imacron iogonek dotlessi jcircumflex kcommaaccent kgreenlandic nacute ncommaaccent ncaron eng sacute scircumflex scedilla scaron utilde umacron ubreve uring uhungarumlaut uogonek zacute zdotaccent zcaron scommaaccent uni0237 uni1E41 uni1E61 - 186 b e o p egrave eacute ecircumflex edieresis eth ograve oacute ocircumflex otilde odieresis oslash thorn emacron edotaccent eogonek ecaron omacron ohungarumlaut oe uni01EB uni1E03 uni1E57 - 153 d f l t germandbls dcaron dcroat lacute lcommaaccent lcaron lslash tcommaaccent tcaron tbar uni021B uni1E0B uni1E1F uni1E6B uniFB00 fi fl uniFB03 uniFB04 - 112 r v w y yacute ydieresis racute rcommaaccent rcaron wcircumflex ycircumflex longs wgrave wacute wdieresis ygrave - 90 A J Agrave Aacute Acircumflex Atilde Adieresis Aring AE Amacron Abreve Aogonek Jcircumflex - 531 B D E F H I K L M N P R S U X Z Egrave Eacute Ecircumflex Edieresis Igrave Iacute Icircumflex Idieresis Eth Ntilde Ugrave Uacute Ucircumflex Udieresis Thorn Dcaron Dcroat Emacron Edotaccent Eogonek Ecaron Hcircumflex Hbar Itilde Imacron Iogonek Idotaccent Kcommaaccent Lacute Lcommaaccent Lcaron Lslash Nacute Ncommaaccent Ncaron Eng Racute Rcommaaccent Rcaron Sacute Scircumflex Scedilla Scaron Utilde Umacron Ubreve Uring Uhungarumlaut Uogonek Zacute Zdotaccent Zcaron Scommaaccent uni1E02 uni1E0A uni1E1E uni1E40 uni1E56 uni1E60 - 179 C G O Q Ccedilla Ograve Oacute Ocircumflex Otilde Odieresis Oslash Cacute Ccircumflex Cdotaccent Ccaron Gcircumflex Gbreve Gdotaccent Gcommaaccent Omacron Ohungarumlaut OE uni01EA - 113 T V W Y Tcommaaccent Tcaron Tbar Wcircumflex Ycircumflex Ydieresis uni021A uni1E6A Wgrave Wacute Wdieresis Ygrave - 435 i j m n p r s u x z agrave aacute acircumflex atilde adieresis aring ae igrave iacute icircumflex idieresis ntilde ugrave uacute ucircumflex udieresis amacron abreve aogonek itilde imacron iogonek dotlessi jcircumflex kgreenlandic nacute ncommaaccent ncaron eng racute rcommaaccent rcaron sacute scircumflex scedilla scaron utilde umacron ubreve uring uhungarumlaut uogonek zacute zdotaccent zcaron scommaaccent uni0237 uni1E41 uni1E61 - 185 b f h k l t germandbls thorn hcircumflex hbar kcommaaccent lacute lcommaaccent lcaron lslash tcommaaccent tcaron tbar longs uni021B uni1E03 uni1E1F uni1E6B uniFB00 fi fl uniFB03 uniFB04 - 281 a c d e g o q ccedilla egrave eacute ecircumflex edieresis eth ograve oacute ocircumflex otilde odieresis oslash cacute ccircumflex cdotaccent ccaron dcaron dcroat emacron edotaccent eogonek ecaron gcircumflex gbreve gdotaccent gcommaaccent omacron ohungarumlaut oe uni01EB uni1E0B - 77 v w y yacute ydieresis wcircumflex ycircumflex wgrave wacute wdieresis ygrave - 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -61 {} -123 {} 0 {} 0 {} 0 {} -61 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -41 {} 0 {} 0 {} -41 {} 0 {} 0 {} 0 {} 0 {} 0 {} -164 {} 41 {} 0 {} 82 {} -41 {} 102 {} -123 {} 0 {} 0 {} 0 {} 0 {} 0 {} -123 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -164 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -123 {} 0 {} 0 {} -123 {} 0 {} 0 {} 0 {} 0 {} -TtTable: prep -PUSHW_1 - 511 -SCANCTRL -PUSHB_1 - 4 -SCANTYPE -EndTTInstrs -LangName: 1033 "" "" "" "" "" "" "" "" "" "" "" "" "" "Copyright (c) 2009, Daniel Johnson (),+AAoA-with Reserved Font Name Pfennig.+AAoACgAA-This Font Software is licensed under the SIL Open Font License, Version 1.1.+AAoA-This license is copied below, and is also available with a FAQ at:+AAoA-http://scripts.sil.org/OFL+AAoACgAK------------------------------------------------------------+AAoA-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007+AAoA------------------------------------------------------------+AAoACgAA-PREAMBLE+AAoA-The goals of the Open Font License (OFL) are to stimulate worldwide+AAoA-development of collaborative font projects, to support the font creation+AAoA-efforts of academic and linguistic communities, and to provide a free and+AAoA-open framework in which fonts may be shared and improved in partnership+AAoA-with others.+AAoACgAA-The OFL allows the licensed fonts to be used, studied, modified and+AAoA-redistributed freely as long as they are not sold by themselves. The+AAoA-fonts, including any derivative works, can be bundled, embedded, +AAoA-redistributed and/or sold with any software provided that any reserved+AAoA-names are not used by derivative works. The fonts and derivatives,+AAoA-however, cannot be released under any other type of license. The+AAoA-requirement for fonts to remain under this license does not apply+AAoA-to any document created using the fonts or their derivatives.+AAoACgAA-DEFINITIONS+AAoAIgAA-Font Software+ACIA refers to the set of files released by the Copyright+AAoA-Holder(s) under this license and clearly marked as such. This may+AAoA-include source files, build scripts and documentation.+AAoACgAi-Reserved Font Name+ACIA refers to any names specified as such after the+AAoA-copyright statement(s).+AAoACgAi-Original Version+ACIA refers to the collection of Font Software components as+AAoA-distributed by the Copyright Holder(s).+AAoACgAi-Modified Version+ACIA refers to any derivative made by adding to, deleting,+AAoA-or substituting -- in part or in whole -- any of the components of the+AAoA-Original Version, by changing formats or by porting the Font Software to a+AAoA-new environment.+AAoACgAi-Author+ACIA refers to any designer, engineer, programmer, technical+AAoA-writer or other person who contributed to the Font Software.+AAoACgAA-PERMISSION & CONDITIONS+AAoA-Permission is hereby granted, free of charge, to any person obtaining+AAoA-a copy of the Font Software, to use, study, copy, merge, embed, modify,+AAoA-redistribute, and sell modified and unmodified copies of the Font+AAoA-Software, subject to the following conditions:+AAoACgAA-1) Neither the Font Software nor any of its individual components,+AAoA-in Original or Modified Versions, may be sold by itself.+AAoACgAA-2) Original or Modified Versions of the Font Software may be bundled,+AAoA-redistributed and/or sold with any software, provided that each copy+AAoA-contains the above copyright notice and this license. These can be+AAoA-included either as stand-alone text files, human-readable headers or+AAoA-in the appropriate machine-readable metadata fields within text or+AAoA-binary files as long as those fields can be easily viewed by the user.+AAoACgAA-3) No Modified Version of the Font Software may use the Reserved Font+AAoA-Name(s) unless explicit written permission is granted by the corresponding+AAoA-Copyright Holder. This restriction only applies to the primary font name as+AAoA-presented to the users.+AAoACgAA-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font+AAoA-Software shall not be used to promote, endorse or advertise any+AAoA-Modified Version, except to acknowledge the contribution(s) of the+AAoA-Copyright Holder(s) and the Author(s) or with their explicit written+AAoA-permission.+AAoACgAA-5) The Font Software, modified or unmodified, in part or in whole,+AAoA-must be distributed entirely under this license, and must not be+AAoA-distributed under any other license. The requirement for fonts to+AAoA-remain under this license does not apply to any document created+AAoA-using the Font Software.+AAoACgAA-TERMINATION+AAoA-This license becomes null and void if any of the above conditions are+AAoA-not met.+AAoACgAA-DISCLAIMER+AAoA-THE FONT SOFTWARE IS PROVIDED +ACIA-AS IS+ACIA, WITHOUT WARRANTY OF ANY KIND,+AAoA-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF+AAoA-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT+AAoA-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE+AAoA-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,+AAoA-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL+AAoA-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING+AAoA-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM+AAoA-OTHER DEALINGS IN THE FONT SOFTWARE." "http://scripts.sil.org/OFL" -GaspTable: 1 65535 3 -Encoding: UnicodeBmp -Compacted: 1 -UnicodeInterp: none -NameList: Adobe Glyph List -DisplaySize: -48 -AntiAlias: 1 -FitToEm: 1 -WinInfo: 720 18 11 -BeginPrivate: 1 -BlueValues 35 [-20 0 901 922 1372 1372 1434 1454] -EndPrivate -Grid --90.1123 1085.44 m 17 - 2228.22 1085.44 l 9 --90.1123 1433.6 m 25 - 2228.22 1433.6 l 25 --90.1123 901.12 m 17 - 2228.22 901.12 l 9 --90.1123 1351.68 m 25 - 2228.22 1351.68 l 25 -EndSplineSet -TeXData: 1 0 0 209715 104857 69905 461373 1048576 69905 783286 444596 497025 792723 393216 433062 380633 303038 157286 324010 404750 52429 2506097 1059062 262144 -AnchorClass2: "bottom" "'mark' Mark Positioning in Latin lookup 0-1" "horn" "'mark' Mark Positioning in Latin lookup 0-1" "ogonek" "'mark' Mark Positioning in Latin lookup 0-1" "cedilla" "'mark' Mark Positioning in Latin lookup 0-1" "top" "'mark' Mark Positioning in Latin lookup 0-1" -BeginChars: 65536 1081 - -StartChar: d -Encoding: 100 100 0 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -20 102<421 631 956 1082> 819 102<584 774> -VStem: 152 238<130 500> 1090 70<96 131> -AnchorPoint: "bottom" 481 0 basechar 0 -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -979 276 m 2,0,1 - 954 170 954 170 954 143 c 0,2,3 - 954 82 954 82 1012 82 c 0,4,5 - 1036 82 1036 82 1058.5 98 c 128,-1,6 - 1081 114 1081 114 1090 131 c 1,7,-1 - 1159 131 l 1,8,9 - 1145 73 1145 73 1085.5 26.5 c 128,-1,10 - 1026 -20 1026 -20 961 -20 c 0,11,12 - 825 -20 825 -20 756 43 c 1,13,14 - 638 -20 638 -20 471 -20 c 0,15,16 - 312 -20 312 -20 232 74.5 c 128,-1,17 - 152 169 152 169 152 317 c 0,18,19 - 152 398 152 398 176 483.5 c 128,-1,20 - 200 569 200 569 247 647 c 128,-1,21 - 294 725 294 725 357.5 786.5 c 128,-1,22 - 421 848 421 848 507 885 c 128,-1,23 - 593 922 593 922 688 922 c 0,24,25 - 786 922 786 922 862 883 c 1,26,-1 - 971 1352 l 1,27,-1 - 1227 1352 l 1,28,-1 - 979 276 l 2,0,1 -524 82 m 0,29,30 - 582 82 582 82 628.5 123 c 128,-1,31 - 675 164 675 164 703 229.5 c 128,-1,32 - 731 295 731 295 751 366 c 128,-1,33 - 771 437 771 437 779.5 508 c 128,-1,34 - 788 579 788 579 791.5 618 c 128,-1,35 - 795 657 795 657 795 672 c 0,36,37 - 795 819 795 819 694 819 c 0,38,39 - 638 819 638 819 591.5 787 c 128,-1,40 - 545 755 545 755 514.5 704.5 c 128,-1,41 - 484 654 484 654 460 592.5 c 128,-1,42 - 436 531 436 531 423 469 c 128,-1,43 - 410 407 410 407 402 356.5 c 128,-1,44 - 394 306 394 306 392 274 c 2,45,-1 - 389 242 l 1,46,47 - 389 82 389 82 524 82 c 0,29,30 -EndSplineSet -Validated: 1 -EndChar - -StartChar: a -Encoding: 97 97 1 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> -VStem: 154 246<136 485> 690 262<96 373> 1075 72<97 131> -AnchorPoint: "bottom" 594 0 basechar 0 -AnchorPoint: "ogonek" 891 0 basechar 0 -AnchorPoint: "top" 803 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1098 838 m 1,0,-1 - 967 276 l 2,1,2 - 952 215 952 215 952 166 c 0,3,4 - 952 82 952 82 997 82 c 0,5,6 - 1022 82 1022 82 1046.5 97 c 128,-1,7 - 1071 112 1071 112 1075 131 c 1,8,-1 - 1147 131 l 1,9,10 - 1133 74 1133 74 1072 27 c 128,-1,11 - 1011 -20 1011 -20 946 -20 c 0,12,13 - 830 -20 830 -20 766 25 c 1,14,15 - 706 4 706 4 622.5 -8 c 128,-1,16 - 539 -20 539 -20 471 -20 c 0,17,18 - 336 -20 336 -20 245 74 c 128,-1,19 - 154 168 154 168 154 309 c 0,20,21 - 154 461 154 461 234.5 602.5 c 128,-1,22 - 315 744 315 744 455 833 c 128,-1,23 - 595 922 595 922 754 922 c 0,24,25 - 833 922 833 922 902 908 c 128,-1,26 - 971 894 971 894 1009.5 879 c 128,-1,27 - 1048 864 1048 864 1098 838 c 1,0,-1 -836 815 m 1,28,29 - 790 819 790 819 760 819 c 0,30,31 - 678 819 678 819 607 757 c 128,-1,32 - 536 695 536 695 492.5 604.5 c 128,-1,33 - 449 514 449 514 424 420.5 c 128,-1,34 - 399 327 399 327 399 254 c 0,35,36 - 399 165 399 165 441 123.5 c 128,-1,37 - 483 82 483 82 524 82 c 0,38,39 - 634 82 634 82 702 100 c 1,40,41 - 690 130 690 130 690 164 c 0,42,43 - 690 189 690 189 696 213 c 2,44,-1 - 836 815 l 1,28,29 -EndSplineSet -Validated: 1 -EndChar - -StartChar: h -Encoding: 104 104 2 -Width: 1034 -VWidth: 0 -Flags: W -HStem: 0 43G<143 409 688 954> 819 102<610 813> 1270 102<289 504> -VStem: 213 70<1221 1259> 410 260<985 1268> 829 248<415 804> -AnchorPoint: "bottom" 553 0 basechar 0 -AnchorPoint: "top" 807 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -399 0 m 1,0,-1 - 143 0 l 1,1,-1 - 391 1075 l 2,2,3 - 410 1160 410 1160 410 1196 c 0,4,5 - 410 1270 410 1270 358 1270 c 0,6,7 - 305 1270 305 1270 283 1221 c 1,8,-1 - 213 1221 l 1,9,10 - 225 1279 225 1279 286 1325.5 c 128,-1,11 - 347 1372 347 1372 412 1372 c 0,12,13 - 543 1372 543 1372 606.5 1324 c 128,-1,14 - 670 1276 670 1276 670 1196 c 0,15,16 - 670 1166 670 1166 662 1139 c 1,17,-1 - 608 907 l 1,18,19 - 685 922 685 922 729 922 c 0,20,21 - 1077 922 1077 922 1077 641 c 0,22,23 - 1077 571 1077 571 1057 492 c 1,24,-1 - 944 0 l 1,25,-1 - 688 0 l 1,26,-1 - 797 467 l 2,27,28 - 829 606 829 606 829 692 c 0,29,30 - 829 762 829 762 805 790.5 c 128,-1,31 - 781 819 781 819 735 819 c 0,32,33 - 657 819 657 819 582 784 c 1,34,-1 - 399 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: e -Encoding: 101 101 3 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> -VStem: 150 246<143 446> 799 233<561 763> -AnchorPoint: "bottom" 535 0 basechar 0 -AnchorPoint: "cedilla" 512 0 basechar 0 -AnchorPoint: "ogonek" 559 0 basechar 0 -AnchorPoint: "top" 733 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -150 324 m 0,0,1 - 150 443 150 443 199.5 555.5 c 128,-1,2 - 249 668 249 668 327.5 747.5 c 128,-1,3 - 406 827 406 827 504 874.5 c 128,-1,4 - 602 922 602 922 696 922 c 0,5,6 - 780 922 780 922 846 893.5 c 128,-1,7 - 912 865 912 865 952 815.5 c 128,-1,8 - 992 766 992 766 1012 704 c 128,-1,9 - 1032 642 1032 642 1032 571 c 0,10,11 - 1032 516 1032 516 996.5 483.5 c 128,-1,12 - 961 451 961 451 887 451 c 2,13,-1 - 422 451 l 1,14,15 - 395 330 395 330 395 262 c 0,16,17 - 395 172 395 172 436.5 127 c 128,-1,18 - 478 82 478 82 573 82 c 0,19,20 - 647 82 647 82 689 113 c 128,-1,21 - 731 144 731 144 756 205 c 1,22,-1 - 940 158 l 1,23,24 - 856 76 856 76 748.5 28 c 128,-1,25 - 641 -20 641 -20 520 -20 c 0,26,27 - 351 -20 351 -20 250.5 72.5 c 128,-1,28 - 150 165 150 165 150 324 c 0,0,1 -449 553 m 1,29,-1 - 700 553 l 2,30,31 - 762 553 762 553 780.5 580.5 c 128,-1,32 - 799 608 799 608 799 694 c 0,33,34 - 799 755 799 755 777 787 c 128,-1,35 - 755 819 755 819 702 819 c 0,36,37 - 609 819 609 819 549 751.5 c 128,-1,38 - 489 684 489 684 449 553 c 1,29,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: n -Encoding: 110 110 4 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43G<184 450 729 994> 819 102<226 400 616 855> -VStem: 150 70<770 809> 346 260<527 780> 872 246<427 804> -AnchorPoint: "bottom" 580 0 basechar 0 -AnchorPoint: "cedilla" 578 0 basechar 0 -AnchorPoint: "top" 817 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 0 m 1,0,-1 - 184 0 l 1,1,-1 - 328 625 l 1,2,3 - 346 692 346 692 346 745 c 0,4,5 - 346 819 346 819 295 819 c 0,6,7 - 241 819 241 819 219 770 c 1,8,-1 - 150 770 l 1,9,10 - 162 828 162 828 222.5 875 c 128,-1,11 - 283 922 283 922 348 922 c 0,12,13 - 494 922 494 922 561 858 c 1,14,15 - 675 922 675 922 770 922 c 0,16,17 - 1118 922 1118 922 1118 641 c 0,18,19 - 1118 571 1118 571 1098 492 c 1,20,-1 - 985 0 l 1,21,-1 - 729 0 l 1,22,-1 - 838 467 l 1,23,24 - 872 621 872 621 872 700 c 0,25,26 - 872 766 872 766 848 792.5 c 128,-1,27 - 824 819 824 819 776 819 c 0,28,29 - 685 819 685 819 604 768 c 1,30,31 - 606 762 606 762 606 745 c 0,32,33 - 606 718 606 718 600 688 c 2,34,-1 - 440 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: c -Encoding: 99 99 5 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<439 698> 819 102<587 786> -VStem: 150 246<143 528> 801 219<671 782> -AnchorPoint: "bottom" 539 0 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -150 324 m 0,0,1 - 150 443 150 443 199.5 555.5 c 128,-1,2 - 249 668 249 668 327.5 747.5 c 128,-1,3 - 406 827 406 827 504 874.5 c 128,-1,4 - 602 922 602 922 696 922 c 0,5,6 - 830 922 830 922 912 854.5 c 128,-1,7 - 994 787 994 787 1020 676 c 1,8,-1 - 801 608 l 1,9,10 - 800 627 800 627 799.5 665 c 128,-1,11 - 799 703 799 703 798 718.5 c 128,-1,12 - 797 734 797 734 791.5 758.5 c 128,-1,13 - 786 783 786 783 776.5 793 c 128,-1,14 - 767 803 767 803 748.5 811 c 128,-1,15 - 730 819 730 819 702 819 c 0,16,17 - 629 819 629 819 571 766.5 c 128,-1,18 - 513 714 513 714 481.5 642 c 128,-1,19 - 450 570 450 570 429 485 c 128,-1,20 - 408 400 408 400 401.5 345 c 128,-1,21 - 395 290 395 290 395 262 c 0,22,23 - 395 172 395 172 436.5 127 c 128,-1,24 - 478 82 478 82 573 82 c 0,25,26 - 592 82 592 82 609 84.5 c 128,-1,27 - 626 87 626 87 638 90 c 128,-1,28 - 650 93 650 93 663.5 101.5 c 128,-1,29 - 677 110 677 110 684.5 114.5 c 128,-1,30 - 692 119 692 119 705.5 133.5 c 128,-1,31 - 719 148 719 148 723.5 153.5 c 128,-1,32 - 728 159 728 159 744 178.5 c 128,-1,33 - 760 198 760 198 766 205 c 1,34,-1 - 940 158 l 1,35,36 - 856 76 856 76 748.5 28 c 128,-1,37 - 641 -20 641 -20 520 -20 c 0,38,39 - 351 -20 351 -20 250.5 72.5 c 128,-1,40 - 150 165 150 165 150 324 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: b -Encoding: 98 98 6 -Width: 1069 -VWidth: 0 -Flags: W -HStem: -20 102<467 694> 819 102<648 849> 1270 102<289 504> -VStem: 211 242<100 425> 213 70<1221 1259> 410 260<983 1268> 877 244<389 787> -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "top" 813 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -602 82 m 0,0,1 - 664 82 664 82 714.5 137.5 c 128,-1,2 - 765 193 765 193 794 270 c 128,-1,3 - 823 347 823 347 843 435 c 128,-1,4 - 863 523 863 523 870 582 c 128,-1,5 - 877 641 877 641 877 666 c 0,6,7 - 877 819 877 819 772 819 c 0,8,9 - 714 819 714 819 669.5 792.5 c 128,-1,10 - 625 766 625 766 594.5 714 c 128,-1,11 - 564 662 564 662 545 606.5 c 128,-1,12 - 526 551 526 551 508 471 c 2,13,-1 - 469 303 l 1,14,15 - 453 225 453 225 453 186 c 0,16,17 - 453 124 453 124 487 103 c 128,-1,18 - 521 82 521 82 602 82 c 0,0,1 -1120 606 m 0,19,20 - 1120 561 1120 561 1112.5 510 c 128,-1,21 - 1105 459 1105 459 1086.5 397 c 128,-1,22 - 1068 335 1068 335 1040 277.5 c 128,-1,23 - 1012 220 1012 220 966 165 c 128,-1,24 - 920 110 920 110 863 69.5 c 128,-1,25 - 806 29 806 29 725 4.5 c 128,-1,26 - 644 -20 644 -20 549 -20 c 0,27,28 - 492 -20 492 -20 446.5 -14.5 c 128,-1,29 - 401 -9 401 -9 355.5 7 c 128,-1,30 - 310 23 310 23 279.5 50 c 128,-1,31 - 249 77 249 77 230 123 c 128,-1,32 - 211 169 211 169 211 231 c 0,33,34 - 211 292 211 292 229 369 c 2,35,-1 - 391 1075 l 2,36,37 - 410 1160 410 1160 410 1196 c 0,38,39 - 410 1270 410 1270 358 1270 c 0,40,41 - 305 1270 305 1270 283 1221 c 1,42,-1 - 213 1221 l 1,43,44 - 225 1279 225 1279 286 1325.5 c 128,-1,45 - 347 1372 347 1372 412 1372 c 0,46,47 - 543 1372 543 1372 606.5 1324 c 128,-1,48 - 670 1276 670 1276 670 1196 c 0,49,50 - 670 1166 670 1166 662 1139 c 1,51,-1 - 606 897 l 1,52,53 - 686 922 686 922 766 922 c 0,54,55 - 950 922 950 922 1035 837 c 128,-1,56 - 1120 752 1120 752 1120 606 c 0,19,20 -EndSplineSet -Validated: 1 -EndChar - -StartChar: s -Encoding: 115 115 7 -Width: 860 -VWidth: 0 -Flags: W -HStem: -20 102<290 523> 817 104<550 718> -VStem: 252 256<549 774> 596 258<167 388> -AnchorPoint: "bottom" 428 0 basechar 0 -AnchorPoint: "cedilla" 422 0 basechar 0 -AnchorPoint: "top" 621 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -252 641 m 0,0,1 - 252 690 252 690 276 739 c 128,-1,2 - 300 788 300 788 344 829 c 128,-1,3 - 388 870 388 870 458.5 896 c 128,-1,4 - 529 922 529 922 614 922 c 0,5,6 - 713 922 713 922 771 894.5 c 128,-1,7 - 829 867 829 867 913 795 c 1,8,-1 - 743 723 l 1,9,10 - 711 817 711 817 618 817 c 0,11,12 - 567 817 567 817 537.5 757 c 128,-1,13 - 508 697 508 697 508 641 c 0,14,15 - 508 600 508 600 526 573.5 c 128,-1,16 - 544 547 544 547 575 539 c 0,17,18 - 707 508 707 508 780.5 448 c 128,-1,19 - 854 388 854 388 854 305 c 0,20,21 - 854 269 854 269 841 228.5 c 128,-1,22 - 828 188 828 188 795 143 c 128,-1,23 - 762 98 762 98 713 62.5 c 128,-1,24 - 664 27 664 27 583 3.5 c 128,-1,25 - 502 -20 502 -20 403 -20 c 0,26,27 - 345 -20 345 -20 303.5 -12.5 c 128,-1,28 - 262 -5 262 -5 222.5 17 c 128,-1,29 - 183 39 183 39 160 57 c 128,-1,30 - 137 75 137 75 88 117 c 1,31,-1 - 236 201 l 1,32,33 - 265 141 265 141 308 111.5 c 128,-1,34 - 351 82 351 82 420 82 c 0,35,36 - 460 82 460 82 492.5 101 c 128,-1,37 - 525 120 525 120 543.5 147 c 128,-1,38 - 562 174 562 174 574.5 205.5 c 128,-1,39 - 587 237 587 237 591.5 259.5 c 128,-1,40 - 596 282 596 282 596 295 c 0,41,42 - 596 350 596 350 554.5 385.5 c 128,-1,43 - 513 421 513 421 463 434 c 1,44,45 - 365 462 365 462 308.5 514 c 128,-1,46 - 252 566 252 566 252 641 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: i -Encoding: 105 105 8 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41G<291 555> 1065 164<397 573> -VStem: 133 254<83 364> 520 70<96 131> -AnchorPoint: "bottom" 221 0 basechar 0 -AnchorPoint: "ogonek" 307 2 basechar 0 -LayerCount: 2 -Fore -SplineSet -397 1229 m 1,0,-1 - 612 1229 l 1,1,-1 - 573 1065 l 1,2,-1 - 358 1065 l 1,3,-1 - 397 1229 l 1,0,-1 -410 276 m 2,4,5 - 387 178 387 178 387 143 c 0,6,7 - 387 82 387 82 442 82 c 0,8,9 - 466 82 466 82 488.5 98 c 128,-1,10 - 511 114 511 114 520 131 c 1,11,-1 - 590 131 l 1,12,13 - 576 73 576 73 516 26.5 c 128,-1,14 - 456 -20 456 -20 391 -20 c 0,15,16 - 268 -20 268 -20 200.5 31.5 c 128,-1,17 - 133 83 133 83 133 164 c 0,18,19 - 133 189 133 189 139 213 c 2,20,-1 - 301 901 l 1,21,-1 - 555 901 l 1,22,-1 - 410 276 l 2,4,5 -EndSplineSet -Validated: 1 -EndChar - -StartChar: o -Encoding: 111 111 9 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> -VStem: 147 244<117 508> 821 244<380 773> -AnchorPoint: "bottom" 487 0 basechar 0 -AnchorPoint: "horn" 999 635 basechar 0 -AnchorPoint: "ogonek" 508 0 basechar 0 -AnchorPoint: "top" 737 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -821 664 m 0,0,1 - 821 819 821 819 702 819 c 0,2,3 - 627 819 627 819 568 763 c 128,-1,4 - 509 707 509 707 477 631 c 128,-1,5 - 445 555 445 555 424.5 466.5 c 128,-1,6 - 404 378 404 378 397.5 323.5 c 128,-1,7 - 391 269 391 269 391 246 c 0,8,9 - 391 165 391 165 424.5 123.5 c 128,-1,10 - 458 82 458 82 532 82 c 0,11,12 - 601 82 601 82 656 138 c 128,-1,13 - 711 194 711 194 740.5 271 c 128,-1,14 - 770 348 770 348 789.5 437 c 128,-1,15 - 809 526 809 526 815 582.5 c 128,-1,16 - 821 639 821 639 821 664 c 0,0,1 -1065 594 m 0,17,18 - 1065 546 1065 546 1056 492.5 c 128,-1,19 - 1047 439 1047 439 1026 378.5 c 128,-1,20 - 1005 318 1005 318 974.5 262 c 128,-1,21 - 944 206 944 206 896 154 c 128,-1,22 - 848 102 848 102 789.5 64 c 128,-1,23 - 731 26 731 26 651 3 c 128,-1,24 - 571 -20 571 -20 479 -20 c 0,25,26 - 318 -20 318 -20 232.5 64.5 c 128,-1,27 - 147 149 147 149 147 301 c 0,28,29 - 147 430 147 430 197.5 547.5 c 128,-1,30 - 248 665 248 665 327 745.5 c 128,-1,31 - 406 826 406 826 504 874 c 128,-1,32 - 602 922 602 922 696 922 c 0,33,34 - 867 922 867 922 966 838 c 128,-1,35 - 1065 754 1065 754 1065 594 c 0,17,18 -EndSplineSet -Validated: 1 -EndChar - -StartChar: t -Encoding: 116 116 10 -Width: 669 -VWidth: 0 -Flags: W -HStem: -20 102<395 610> 799 102<291 371 651 788> -VStem: 229 258<84 376> 616 70<93 131> -AnchorPoint: "bottom" 348 0 basechar 0 -AnchorPoint: "cedilla" 383 0 basechar 0 -AnchorPoint: "top" 582 1352 basechar 0 -LayerCount: 2 -Fore -SplineSet -506 276 m 2,0,1 - 487 191 487 191 487 156 c 0,2,3 - 487 82 487 82 539 82 c 0,4,5 - 594 82 594 82 616 131 c 1,6,-1 - 686 131 l 1,7,8 - 672 73 672 73 612 26.5 c 128,-1,9 - 552 -20 552 -20 487 -20 c 0,10,11 - 356 -20 356 -20 292.5 28 c 128,-1,12 - 229 76 229 76 229 156 c 0,13,14 - 229 178 229 178 236 213 c 1,15,-1 - 371 799 l 1,16,-1 - 236 799 l 1,17,-1 - 291 901 l 1,18,-1 - 395 901 l 1,19,-1 - 463 1198 l 1,20,-1 - 727 1229 l 1,21,-1 - 651 901 l 1,22,-1 - 813 901 l 1,23,-1 - 788 799 l 1,24,-1 - 627 799 l 1,25,-1 - 506 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: m -Encoding: 109 109 11 -Width: 1667 -VWidth: 0 -Flags: W -HStem: 0 43G<184 450 760 1025 1317 1582> 819 102<226 396 603 881 1198 1436> -VStem: 150 70<770 809> 346 260<527 795> 1460 252<431 796> -AnchorPoint: "bottom" 893 0 basechar 0 -AnchorPoint: "top" 1075 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -440 0 m 1,0,-1 - 184 0 l 1,1,-1 - 328 625 l 1,2,3 - 346 692 346 692 346 745 c 0,4,5 - 346 819 346 819 295 819 c 0,6,7 - 241 819 241 819 219 770 c 1,8,-1 - 150 770 l 1,9,10 - 162 828 162 828 222.5 875 c 128,-1,11 - 283 922 283 922 348 922 c 0,12,13 - 484 922 484 922 551 868 c 1,14,15 - 661 922 661 922 768 922 c 0,16,17 - 975 922 975 922 1055 836 c 1,18,19 - 1195 922 1195 922 1307 922 c 0,20,21 - 1503 922 1503 922 1607.5 861 c 128,-1,22 - 1712 800 1712 800 1712 657 c 0,23,24 - 1712 603 1712 603 1698 543 c 2,25,-1 - 1573 0 l 1,26,-1 - 1317 0 l 1,27,-1 - 1432 500 l 2,28,29 - 1460 624 1460 624 1460 686 c 0,30,31 - 1460 763 1460 763 1424.5 791 c 128,-1,32 - 1389 819 1389 819 1313 819 c 0,33,34 - 1250 819 1250 819 1200 799 c 1,35,-1 - 1016 0 l 1,36,-1 - 760 0 l 1,37,-1 - 874 500 l 2,38,39 - 903 626 903 626 903 684 c 0,40,41 - 903 763 903 763 865 791 c 128,-1,42 - 827 819 827 819 745 819 c 0,43,44 - 682 819 682 819 602 786 c 1,45,46 - 606 758 606 758 606 745 c 0,47,48 - 606 718 606 718 600 688 c 2,49,-1 - 440 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: f -Encoding: 102 102 12 -Width: 651 -VWidth: 0 -Flags: W -HStem: -276 102<36 155> 799 102<326 391 672 793> 1270 102<764 919> -VStem: -39 74<-170 -125> -AnchorPoint: "bottom" 236 -258 basechar 0 -AnchorPoint: "top" 756 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -647 799 m 1,0,-1 - 453 -43 l 2,1,2 - 430 -147 430 -147 339.5 -211.5 c 128,-1,3 - 249 -276 249 -276 94 -276 c 0,4,5 - 37 -276 37 -276 -1 -239.5 c 128,-1,6 - -39 -203 -39 -203 -39 -152 c 0,7,8 - -39 -141 -39 -141 -35 -125 c 1,9,-1 - 35 -125 l 1,10,11 - 35 -174 35 -174 88 -174 c 0,12,13 - 133 -174 133 -174 161 -123.5 c 128,-1,14 - 189 -73 189 -73 211 20 c 2,15,-1 - 391 799 l 1,16,-1 - 270 799 l 1,17,-1 - 326 901 l 1,18,-1 - 416 901 l 1,19,-1 - 461 1096 l 2,20,21 - 488 1217 488 1217 593.5 1294.5 c 128,-1,22 - 699 1372 699 1372 825 1372 c 0,23,24 - 910 1372 910 1372 965 1350 c 1,25,-1 - 897 1239 l 1,26,27 - 878 1270 878 1270 831 1270 c 0,28,29 - 788 1270 788 1270 762 1223 c 128,-1,30 - 736 1176 736 1176 705 1042 c 2,31,-1 - 672 901 l 1,32,-1 - 817 901 l 1,33,-1 - 793 799 l 1,34,-1 - 647 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: j -Encoding: 106 106 13 -Width: 438 -VWidth: 0 -Flags: W -HStem: -348 102<-190 25> 860 41G<292 557> 1065 164<397 573> -AnchorPoint: "bottom" -10 -328 basechar 0 -LayerCount: 2 -Fore -SplineSet --141 -195 m 1,0,1 - -119 -246 -119 -246 -45 -246 c 0,2,3 - 7 -246 7 -246 33.5 -193 c 128,-1,4 - 60 -140 60 -140 92 0 c 2,5,-1 - 301 901 l 1,6,-1 - 557 901 l 1,7,-1 - 332 -68 l 2,8,9 - 316 -140 316 -140 266.5 -196.5 c 128,-1,10 - 217 -253 217 -253 152.5 -284.5 c 128,-1,11 - 88 -316 88 -316 24 -332 c 128,-1,12 - -40 -348 -40 -348 -98 -348 c 0,13,14 - -228 -348 -228 -348 -285 -256 c 1,15,-1 - -141 -195 l 1,0,1 -397 1229 m 1,16,-1 - 612 1229 l 1,17,-1 - 573 1065 l 1,18,-1 - 358 1065 l 1,19,-1 - 397 1229 l 1,16,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: space -Encoding: 32 32 14 -Width: 614 -VWidth: 0 -Flags: W -LayerCount: 2 -EndChar - -StartChar: l -Encoding: 108 108 15 -Width: 575 -VWidth: 0 -Flags: W -HStem: -20 102<301 515> -VStem: 135 258<84 375> 522 70<93 131> -AnchorPoint: "bottom" 254 -4 basechar 0 -AnchorPoint: "cedilla" 330 0 basechar 0 -AnchorPoint: "top" 551 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -403 1352 m 25,0,-1 - 659 1352 l 1,1,-1 - 412 276 l 6,2,3 - 393 191 393 191 393 156 c 4,4,5 - 393 82 393 82 444 82 c 4,6,7 - 500 82 500 82 522 131 c 5,8,-1 - 592 131 l 5,9,10 - 578 73 578 73 518 26.5 c 132,-1,11 - 458 -20 458 -20 393 -20 c 4,12,13 - 262 -20 262 -20 198.5 28 c 132,-1,14 - 135 76 135 76 135 156 c 4,15,16 - 135 183 135 183 141 213 c 6,17,-1 - 403 1352 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: p -Encoding: 112 112 16 -Width: 1107 -VWidth: 0 -Flags: W -HStem: -16 102<553 741> 819 102<226 395 681 886> -VStem: 150 70<770 809> 909 248<366 760> -AnchorPoint: "bottom" 623 0 basechar 0 -AnchorPoint: "top" 850 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1157 575 m 0,0,1 - 1157 461 1157 461 1107.5 352 c 128,-1,2 - 1058 243 1058 243 978 162.5 c 128,-1,3 - 898 82 898 82 792.5 33 c 128,-1,4 - 687 -16 687 -16 580 -16 c 0,5,6 - 500 -16 500 -16 442 8 c 1,7,-1 - 346 -410 l 1,8,-1 - 90 -410 l 1,9,-1 - 328 625 l 1,10,11 - 346 692 346 692 346 745 c 0,12,13 - 346 819 346 819 295 819 c 0,14,15 - 241 819 241 819 219 770 c 1,16,-1 - 150 770 l 1,17,18 - 162 828 162 828 222.5 875 c 128,-1,19 - 283 922 283 922 348 922 c 0,20,21 - 484 922 484 922 551 868 c 1,22,23 - 659 926 659 926 817 926 c 0,24,25 - 974 926 974 926 1065.5 827 c 128,-1,26 - 1157 728 1157 728 1157 575 c 0,0,1 -635 86 m 0,27,28 - 697 86 697 86 747.5 136 c 128,-1,29 - 798 186 798 186 826.5 256 c 128,-1,30 - 855 326 855 326 875 408.5 c 128,-1,31 - 895 491 895 491 902 549 c 128,-1,32 - 909 607 909 607 909 639 c 0,33,34 - 909 722 909 722 888 772.5 c 128,-1,35 - 867 823 867 823 825 823 c 0,36,37 - 765 823 765 823 722 804 c 128,-1,38 - 679 785 679 785 648.5 742 c 128,-1,39 - 618 699 618 699 597.5 644 c 128,-1,40 - 577 589 577 589 557 504 c 0,41,42 - 524 357 524 357 524 264 c 0,43,44 - 524 86 524 86 635 86 c 0,27,28 -EndSplineSet -Validated: 1 -EndChar - -StartChar: q -Encoding: 113 113 17 -Width: 1081 -VWidth: 0 -Flags: W -HStem: -410 102<788 1003> -20 102<421 630> 819 102<573 811> -VStem: 156 244<115 512> 623 260<-305 -10> 825 242<489 801> 1010 70<-296 -258> -AnchorPoint: "bottom" 403 0 basechar 0 -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -156 295 m 0,0,1 - 156 340 156 340 163.5 391.5 c 128,-1,2 - 171 443 171 443 189.5 504.5 c 128,-1,3 - 208 566 208 566 236 623.5 c 128,-1,4 - 264 681 264 681 310 736 c 128,-1,5 - 356 791 356 791 413.5 832 c 128,-1,6 - 471 873 471 873 552.5 897.5 c 128,-1,7 - 634 922 634 922 729 922 c 0,8,9 - 785 922 785 922 830.5 916.5 c 128,-1,10 - 876 911 876 911 921.5 894.5 c 128,-1,11 - 967 878 967 878 998 851 c 128,-1,12 - 1029 824 1029 824 1048 778 c 128,-1,13 - 1067 732 1067 732 1067 670 c 128,-1,14 - 1067 608 1067 608 1049 532 c 2,15,-1 - 899 -113 l 2,16,17 - 883 -185 883 -185 883 -233 c 0,18,19 - 883 -307 883 -307 932 -307 c 0,20,21 - 988 -307 988 -307 1010 -258 c 1,22,-1 - 1079 -258 l 1,23,24 - 1065 -316 1065 -316 1005.5 -363 c 128,-1,25 - 946 -410 946 -410 881 -410 c 0,26,27 - 750 -410 750 -410 686.5 -361.5 c 128,-1,28 - 623 -313 623 -313 623 -233 c 0,29,30 - 623 -206 623 -206 629 -176 c 2,31,-1 - 670 4 l 1,32,33 - 594 -20 594 -20 512 -20 c 0,34,35 - 327 -20 327 -20 241.5 64.5 c 128,-1,36 - 156 149 156 149 156 295 c 0,0,1 -768 430 m 2,37,-1 - 807 598 l 2,38,39 - 825 672 825 672 825 715 c 0,40,41 - 825 777 825 777 790.5 798 c 128,-1,42 - 756 819 756 819 674 819 c 0,43,44 - 612 819 612 819 561.5 763.5 c 128,-1,45 - 511 708 511 708 482 631 c 128,-1,46 - 453 554 453 554 433 465.5 c 128,-1,47 - 413 377 413 377 406 317 c 128,-1,48 - 399 257 399 257 399 229 c 0,49,50 - 399 82 399 82 504 82 c 0,51,52 - 552 82 552 82 591 101 c 128,-1,53 - 630 120 630 120 656 149.5 c 128,-1,54 - 682 179 682 179 704 227 c 128,-1,55 - 726 275 726 275 739.5 320.5 c 128,-1,56 - 753 366 753 366 768 430 c 2,37,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: r -Encoding: 114 114 18 -Width: 862 -VWidth: 0 -Flags: W -HStem: 0 43G<184 450> 819 102<226 409 663 955> -VStem: 150 70<770 809> -AnchorPoint: "bottom" 319 0 basechar 0 -AnchorPoint: "cedilla" 313 0 basechar 0 -AnchorPoint: "top" 666 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -973 741 m 1,0,1 - 949 819 949 819 815 819 c 0,2,3 - 752 819 752 819 703.5 797 c 128,-1,4 - 655 775 655 775 606 731 c 1,5,6 - 605 724 605 724 603 709.5 c 128,-1,7 - 601 695 601 695 600 688 c 2,8,-1 - 440 0 l 1,9,-1 - 184 0 l 1,10,-1 - 328 625 l 1,11,12 - 346 692 346 692 346 745 c 0,13,14 - 346 819 346 819 295 819 c 0,15,16 - 241 819 241 819 219 770 c 1,17,-1 - 150 770 l 1,18,19 - 162 828 162 828 222.5 875 c 128,-1,20 - 283 922 283 922 348 922 c 0,21,22 - 519 922 519 922 578 840 c 1,23,24 - 651 883 651 883 704 902.5 c 128,-1,25 - 757 922 757 922 825 922 c 0,26,27 - 932 922 932 922 1008 893 c 1,28,-1 - 973 741 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: u -Encoding: 117 117 19 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41G<281 547 826 1092> -VStem: 154 256<105 501> 668 260<101 364> 1057 70<93 131> -AnchorPoint: "horn" 1030 635 basechar 0 -AnchorPoint: "bottom" 471 0 basechar 0 -AnchorPoint: "top" 715 1004 basechar 0 -AnchorPoint: "ogonek" 924 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -836 901 m 1,0,-1 - 1092 901 l 1,1,-1 - 946 276 l 2,2,3 - 928 195 928 195 928 156 c 0,4,5 - 928 82 928 82 979 82 c 0,6,7 - 1035 82 1035 82 1057 131 c 1,8,-1 - 1126 131 l 1,9,10 - 1112 73 1112 73 1052.5 26.5 c 128,-1,11 - 993 -20 993 -20 928 -20 c 0,12,13 - 778 -20 778 -20 715 43 c 1,14,15 - 567 -20 567 -20 475 -20 c 0,16,17 - 309 -20 309 -20 231.5 43.5 c 128,-1,18 - 154 107 154 107 154 240 c 0,19,20 - 154 311 154 311 176 410 c 1,21,-1 - 291 901 l 1,22,-1 - 547 901 l 1,23,-1 - 438 434 l 1,24,25 - 410 303 410 303 410 236 c 0,26,27 - 410 151 410 151 441 116.5 c 128,-1,28 - 472 82 472 82 528 82 c 0,29,30 - 609 82 609 82 670 127 c 1,31,32 - 670 131 670 131 669 140.5 c 128,-1,33 - 668 150 668 150 668 154 c 0,34,35 - 668 173 668 173 676 213 c 1,36,-1 - 836 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: g -Encoding: 103 103 20 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 516> -20 102<418 603> 819 102<553 784 1063 1186> -VStem: 147 238<126 481> 1186 72<770 815> -AnchorPoint: "bottom" 377 -332 basechar 0 -AnchorPoint: "top" 709 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -147 307 m 0,0,1 - 147 423 147 423 190.5 535.5 c 128,-1,2 - 234 648 234 648 305 733 c 128,-1,3 - 376 818 376 818 471.5 870 c 128,-1,4 - 567 922 567 922 666 922 c 0,5,6 - 796 922 796 922 881 856 c 1,7,8 - 973 922 973 922 1126 922 c 0,9,10 - 1183 922 1183 922 1220 885 c 128,-1,11 - 1257 848 1257 848 1257 797 c 0,12,13 - 1257 778 1257 778 1255 770 c 1,14,-1 - 1186 770 l 1,15,16 - 1186 819 1186 819 1130 819 c 0,17,18 - 1085 819 1085 819 1057.5 768.5 c 128,-1,19 - 1030 718 1030 718 1008 625 c 2,20,-1 - 901 160 l 2,21,22 - 876 51 876 51 854 -20.5 c 128,-1,23 - 832 -92 832 -92 800.5 -153 c 128,-1,24 - 769 -214 769 -214 733.5 -248.5 c 128,-1,25 - 698 -283 698 -283 644 -307 c 128,-1,26 - 590 -331 590 -331 524 -339.5 c 128,-1,27 - 458 -348 458 -348 365 -348 c 0,28,29 - 219 -348 219 -348 61 -256 c 1,30,-1 - 188 -150 l 1,31,32 - 304 -246 304 -246 418 -246 c 0,33,34 - 485 -246 485 -246 526 -193.5 c 128,-1,35 - 567 -141 567 -141 604 -8 c 1,36,37 - 549 -20 549 -20 489 -20 c 0,38,39 - 326 -20 326 -20 236.5 67 c 128,-1,40 - 147 154 147 154 147 307 c 0,0,1 -631 94 m 1,41,-1 - 768 688 l 2,42,43 - 777 723 777 723 795 762 c 1,44,45 - 753 819 753 819 672 819 c 0,46,47 - 627 819 627 819 591.5 801 c 128,-1,48 - 556 783 556 783 532 755.5 c 128,-1,49 - 508 728 508 728 487 676.5 c 128,-1,50 - 466 625 466 625 453 576.5 c 128,-1,51 - 440 528 440 528 422 451 c 0,52,53 - 385 288 385 288 385 229 c 0,54,55 - 385 155 385 155 421 118.5 c 128,-1,56 - 457 82 457 82 543 82 c 0,57,58 - 588 82 588 82 631 94 c 1,41,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: v -Encoding: 118 118 21 -Width: 931 -VWidth: 0 -Flags: W -HStem: 0 43G<384 577> 860 41G<270 497 901 1090> -AnchorPoint: "bottom" 467 0 basechar 0 -AnchorPoint: "top" 707 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -569 303 m 1,0,-1 - 926 901 l 1,1,-1 - 1090 901 l 1,2,-1 - 553 0 l 1,3,-1 - 389 0 l 1,4,-1 - 270 901 l 1,5,-1 - 492 901 l 1,6,-1 - 569 303 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: w -Encoding: 119 119 22 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43G<384 577 982 1175> 860 41G<270 497 901 1095 1499 1688> -AnchorPoint: "bottom" 791 0 basechar 0 -AnchorPoint: "top" 1024 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -569 303 m 1,0,-1 - 926 901 l 1,1,-1 - 1090 901 l 1,2,-1 - 1167 305 l 1,3,-1 - 1524 901 l 1,4,-1 - 1688 901 l 1,5,-1 - 1151 0 l 1,6,-1 - 987 0 l 1,7,-1 - 907 596 l 1,8,-1 - 553 0 l 1,9,-1 - 389 0 l 1,10,-1 - 270 901 l 1,11,-1 - 492 901 l 1,12,-1 - 569 303 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: x -Encoding: 120 120 23 -Width: 974 -VWidth: 0 -Flags: W -HStem: 0 43G<61 276 636 903> 860 41G<276 542 822 1034> -AnchorPoint: "bottom" 459 0 basechar 0 -AnchorPoint: "top" 707 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -463 455 m 1,0,-1 - 276 901 l 1,1,-1 - 524 901 l 1,2,-1 - 633 645 l 1,3,-1 - 858 901 l 1,4,-1 - 1034 901 l 1,5,-1 - 688 510 l 1,6,-1 - 903 0 l 1,7,-1 - 653 0 l 1,8,-1 - 520 317 l 1,9,-1 - 240 0 l 1,10,-1 - 61 0 l 1,11,-1 - 463 455 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: y -Encoding: 121 121 24 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<97 251> 860 41G<270 497 901 1090> -AnchorPoint: "bottom" 270 -328 basechar 0 -AnchorPoint: "top" 709 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -137 -348 m 0,0,1 - 66 -348 66 -348 1 -305.5 c 128,-1,2 - -64 -263 -64 -263 -78 -180 c 1,3,-1 - 125 -152 l 1,4,5 - 129 -201 129 -201 149 -223.5 c 128,-1,6 - 169 -246 169 -246 190 -246 c 0,7,8 - 241 -246 241 -246 362 -45 c 2,9,-1 - 389 0 l 1,10,-1 - 270 901 l 1,11,-1 - 492 901 l 1,12,-1 - 569 305 l 1,13,-1 - 926 901 l 1,14,-1 - 1090 901 l 1,15,-1 - 522 -49 l 2,16,17 - 434 -197 434 -197 342 -272.5 c 128,-1,18 - 250 -348 250 -348 137 -348 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: k -Encoding: 107 107 25 -Width: 978 -VWidth: 0 -Flags: W -HStem: 0 43G<143 409 659 909> 860 41G<796 1081> 1270 102<289 504> -VStem: 213 70<1221 1259> 410 260<987 1268> -AnchorPoint: "bottom" 524 0 basechar 0 -AnchorPoint: "top" 807 1434 basechar 0 -AnchorPoint: "cedilla" 504 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -399 0 m 1,0,-1 - 143 0 l 1,1,-1 - 391 1075 l 2,2,3 - 410 1160 410 1160 410 1196 c 0,4,5 - 410 1270 410 1270 358 1270 c 0,6,7 - 305 1270 305 1270 283 1221 c 1,8,-1 - 213 1221 l 1,9,10 - 225 1279 225 1279 286 1325.5 c 128,-1,11 - 347 1372 347 1372 412 1372 c 0,12,13 - 543 1372 543 1372 606.5 1324 c 128,-1,14 - 670 1276 670 1276 670 1196 c 0,15,16 - 670 1166 670 1166 662 1139 c 1,17,-1 - 547 639 l 1,18,-1 - 842 901 l 1,19,-1 - 1081 901 l 1,20,-1 - 631 502 l 1,21,-1 - 909 0 l 1,22,-1 - 682 0 l 1,23,-1 - 481 356 l 1,24,-1 - 399 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: z -Encoding: 122 122 26 -Width: 827 -VWidth: 0 -Flags: W -HStem: -233 82<115 253> 799 102<246 602> -VStem: 487 256<17 303> -AnchorPoint: "bottom" 336 -217 basechar 0 -AnchorPoint: "top" 590 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -88 -152 m 1,0,1 - 96 -151 96 -151 110.5 -149.5 c 128,-1,2 - 125 -148 125 -148 166.5 -139 c 128,-1,3 - 208 -130 208 -130 245.5 -117.5 c 128,-1,4 - 283 -105 283 -105 329 -80 c 128,-1,5 - 375 -55 375 -55 408.5 -24 c 128,-1,6 - 442 7 442 7 464.5 55 c 128,-1,7 - 487 103 487 103 487 160 c 128,-1,8 - 487 217 487 217 461 271 c 128,-1,9 - 435 325 435 325 397.5 361 c 128,-1,10 - 360 397 360 397 322.5 425 c 128,-1,11 - 285 453 285 453 259 466 c 2,12,-1 - 233 479 l 1,13,-1 - 602 799 l 1,14,-1 - 190 799 l 1,15,-1 - 246 901 l 1,16,-1 - 934 901 l 1,17,-1 - 487 512 l 1,18,19 - 530 486 530 486 568 456 c 128,-1,20 - 606 426 606 426 649 381.5 c 128,-1,21 - 692 337 692 337 717.5 280.5 c 128,-1,22 - 743 224 743 224 743 164 c 0,23,24 - 743 90 743 90 708.5 27.5 c 128,-1,25 - 674 -35 674 -35 619.5 -74.5 c 128,-1,26 - 565 -114 565 -114 498.5 -145 c 128,-1,27 - 432 -176 432 -176 365.5 -192 c 128,-1,28 - 299 -208 299 -208 244.5 -218 c 128,-1,29 - 190 -228 190 -228 156 -230 c 2,30,-1 - 121 -233 l 1,31,-1 - 88 -152 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: A -Encoding: 65 65 27 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43G<31 291 1014 1255> 410 102<571 952> 1393 41G<860 1070> -AnchorPoint: "bottom" 647 0 basechar 0 -AnchorPoint: "ogonek" 1092 0 basechar 0 -AnchorPoint: "top" 975 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1065 1434 m 1,0,-1 - 1255 0 l 1,1,-1 - 1020 0 l 1,2,-1 - 965 410 l 1,3,-1 - 510 410 l 1,4,-1 - 266 0 l 1,5,-1 - 31 0 l 1,6,-1 - 885 1434 l 1,7,-1 - 1065 1434 l 1,0,-1 -883 1034 m 1,8,-1 - 571 512 l 1,9,-1 - 952 512 l 1,10,-1 - 883 1034 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: B -Encoding: 66 66 28 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<373 608> 727 102<541 682> 1331 102<655 806> -VStem: 780 268<296 657> 852 270<1002 1290> -AnchorPoint: "bottom" 416 0 basechar 0 -AnchorPoint: "top" 741 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -455 102 m 2,0,1 - 554 102 554 102 630 160.5 c 128,-1,2 - 706 219 706 219 743 306 c 128,-1,3 - 780 393 780 393 780 489 c 0,4,5 - 780 591 780 591 736 659 c 128,-1,6 - 692 727 692 727 598 727 c 2,7,-1 - 516 727 l 1,8,-1 - 373 102 l 1,9,-1 - 455 102 l 2,0,1 -1122 1188 m 0,10,11 - 1122 1121 1122 1121 1102 1060 c 128,-1,12 - 1082 999 1082 999 1054.5 958 c 128,-1,13 - 1027 917 1027 917 989.5 881.5 c 128,-1,14 - 952 846 952 846 925.5 827.5 c 128,-1,15 - 899 809 899 809 872 795 c 1,16,17 - 963 754 963 754 1006 675.5 c 128,-1,18 - 1049 597 1049 597 1049 498 c 0,19,20 - 1049 406 1049 406 1015 320 c 128,-1,21 - 981 234 981 234 915.5 161 c 128,-1,22 - 850 88 850 88 740 44 c 128,-1,23 - 630 0 630 0 492 0 c 2,24,-1 - 82 0 l 1,25,-1 - 414 1434 l 1,26,-1 - 782 1434 l 2,27,28 - 1122 1434 1122 1434 1122 1188 c 0,10,11 -541 829 m 1,29,30 - 613 830 613 830 683.5 870.5 c 128,-1,31 - 754 911 754 911 803 988.5 c 128,-1,32 - 852 1066 852 1066 852 1159 c 0,33,34 - 852 1231 852 1231 816.5 1281 c 128,-1,35 - 781 1331 781 1331 696 1331 c 2,36,-1 - 655 1331 l 1,37,-1 - 541 829 l 1,29,30 -EndSplineSet -Validated: 1 -EndChar - -StartChar: P -Encoding: 80 80 29 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368> 655 102<532 758> 1331 102<666 881> -VStem: 940 266<951 1271> -AnchorPoint: "bottom" 426 0 basechar 0 -AnchorPoint: "top" 811 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1206 1128 m 0,0,1 - 1206 1066 1206 1066 1184 1001 c 128,-1,2 - 1162 936 1162 936 1116 874 c 128,-1,3 - 1070 812 1070 812 1007 763 c 128,-1,4 - 944 714 944 714 855 684.5 c 128,-1,5 - 766 655 766 655 664 655 c 2,6,-1 - 510 655 l 1,7,-1 - 358 0 l 1,8,-1 - 92 0 l 1,9,-1 - 424 1434 l 1,10,-1 - 844 1434 l 2,11,12 - 923 1434 923 1434 986 1416 c 128,-1,13 - 1049 1398 1049 1398 1089.5 1368.5 c 128,-1,14 - 1130 1339 1130 1339 1157 1299 c 128,-1,15 - 1184 1259 1184 1259 1195 1216.5 c 128,-1,16 - 1206 1174 1206 1174 1206 1128 c 0,0,1 -625 758 m 2,17,18 - 715 758 715 758 789.5 816 c 128,-1,19 - 864 874 864 874 902 958 c 128,-1,20 - 940 1042 940 1042 940 1128 c 0,21,22 - 940 1215 940 1215 896.5 1273 c 128,-1,23 - 853 1331 853 1331 758 1331 c 2,24,-1 - 666 1331 l 1,25,-1 - 532 758 l 1,26,-1 - 625 758 l 2,17,18 -EndSplineSet -Validated: 1 -EndChar - -StartChar: C -Encoding: 67 67 30 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<601 928> 1331 102<832 1172> -VStem: 201 260<280 770> -AnchorPoint: "bottom" 702 0 basechar 0 -AnchorPoint: "cedilla" 717 0 basechar 0 -AnchorPoint: "top" 1008 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1257 209 m 1,0,1 - 1153 106 1153 106 1005 43 c 128,-1,2 - 857 -20 857 -20 696 -20 c 0,3,4 - 626 -20 626 -20 557 -0.5 c 128,-1,5 - 488 19 488 19 423.5 61.5 c 128,-1,6 - 359 104 359 104 310 164.5 c 128,-1,7 - 261 225 261 225 231 314.5 c 128,-1,8 - 201 404 201 404 201 510 c 0,9,10 - 201 617 201 617 228 728 c 128,-1,11 - 255 839 255 839 304 941 c 128,-1,12 - 353 1043 353 1043 425.5 1133 c 128,-1,13 - 498 1223 498 1223 584 1290 c 128,-1,14 - 670 1357 670 1357 776 1395.5 c 128,-1,15 - 882 1434 882 1434 993 1434 c 0,16,17 - 1382 1434 1382 1434 1489 1245 c 1,18,-1 - 1249 1178 l 1,19,20 - 1229 1221 1229 1221 1214.5 1243.5 c 128,-1,21 - 1200 1266 1200 1266 1172.5 1289.5 c 128,-1,22 - 1145 1313 1145 1313 1103.5 1322 c 128,-1,23 - 1062 1331 1062 1331 999 1331 c 0,24,25 - 911 1331 911 1331 834.5 1292.5 c 128,-1,26 - 758 1254 758 1254 704 1192 c 128,-1,27 - 650 1130 650 1130 607 1048 c 128,-1,28 - 564 966 564 966 537.5 883 c 128,-1,29 - 511 800 511 800 493 716.5 c 128,-1,30 - 475 633 475 633 468 571 c 128,-1,31 - 461 509 461 509 461 465 c 0,32,33 - 461 275 461 275 543 178.5 c 128,-1,34 - 625 82 625 82 750 82 c 0,35,36 - 808 82 808 82 852 93 c 128,-1,37 - 896 104 896 104 935.5 130.5 c 128,-1,38 - 975 157 975 157 1004 185 c 128,-1,39 - 1033 213 1033 213 1077 264 c 1,40,-1 - 1257 209 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: D -Encoding: 68 68 31 -Width: 1216 -VWidth: 0 -Flags: W -HStem: 0 102<383 690> 1331 102<666 966> -VStem: 1065 264<718 1227> -AnchorPoint: "bottom" 477 0 basechar 0 -AnchorPoint: "top" 831 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1329 1020 m 0,0,1 - 1329 962 1329 962 1319.5 885.5 c 128,-1,2 - 1310 809 1310 809 1285.5 710 c 128,-1,3 - 1261 611 1261 611 1224.5 514.5 c 128,-1,4 - 1188 418 1188 418 1128.5 324 c 128,-1,5 - 1069 230 1069 230 995 159 c 128,-1,6 - 921 88 921 88 815.5 44 c 128,-1,7 - 710 0 710 0 588 0 c 2,8,-1 - 92 0 l 1,9,-1 - 424 1434 l 1,10,-1 - 920 1434 l 2,11,12 - 1329 1434 1329 1434 1329 1020 c 0,0,1 -666 1331 m 1,13,-1 - 383 102 l 1,14,-1 - 551 102 l 2,15,16 - 636 102 636 102 712.5 153 c 128,-1,17 - 789 204 789 204 843 287 c 128,-1,18 - 897 370 897 370 941 470.5 c 128,-1,19 - 985 571 985 571 1011.5 676 c 128,-1,20 - 1038 781 1038 781 1051.5 870 c 128,-1,21 - 1065 959 1065 959 1065 1024 c 0,22,23 - 1065 1185 1065 1185 1002 1258 c 128,-1,24 - 939 1331 939 1331 834 1331 c 2,25,-1 - 666 1331 l 1,13,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: E -Encoding: 69 69 32 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> -AnchorPoint: "bottom" 553 0 basechar 0 -AnchorPoint: "cedilla" 643 0 basechar 0 -AnchorPoint: "ogonek" 754 0 basechar 0 -AnchorPoint: "top" 854 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -942 0 m 1,0,-1 - 82 0 l 1,1,-1 - 414 1434 l 1,2,-1 - 1241 1434 l 1,3,-1 - 1217 1331 l 1,4,-1 - 655 1331 l 1,5,-1 - 557 901 l 1,6,-1 - 934 901 l 1,7,-1 - 909 799 l 1,8,-1 - 532 799 l 1,9,-1 - 373 102 l 1,10,-1 - 967 102 l 1,11,-1 - 942 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: F -Encoding: 70 70 33 -Width: 899 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368> 799 102<567 920> 1331 102<666 1227> -AnchorPoint: "bottom" 315 2 basechar 0 -AnchorPoint: "top" 854 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -92 0 m 1,0,-1 - 424 1434 l 1,1,-1 - 1251 1434 l 1,2,-1 - 1227 1331 l 1,3,-1 - 666 1331 l 1,4,-1 - 567 901 l 1,5,-1 - 944 901 l 1,6,-1 - 920 799 l 1,7,-1 - 543 799 l 1,8,-1 - 358 0 l 1,9,-1 - 92 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: G -Encoding: 71 71 34 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<601 956> 717 102<969 1118> 1331 102<832 1172> -VStem: 201 260<280 770> -AnchorPoint: "bottom" 686 0 basechar 0 -AnchorPoint: "cedilla" 717 0 basechar 0 -AnchorPoint: "top" 1008 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -969 819 m 1,0,-1 - 1397 819 l 1,1,-1 - 1257 209 l 1,2,3 - 1153 106 1153 106 1005 43 c 128,-1,4 - 857 -20 857 -20 696 -20 c 0,5,6 - 626 -20 626 -20 557 -0.5 c 128,-1,7 - 488 19 488 19 423.5 61.5 c 128,-1,8 - 359 104 359 104 310 164.5 c 128,-1,9 - 261 225 261 225 231 314.5 c 128,-1,10 - 201 404 201 404 201 510 c 0,11,12 - 201 617 201 617 228 728 c 128,-1,13 - 255 839 255 839 304 941 c 128,-1,14 - 353 1043 353 1043 425.5 1133 c 128,-1,15 - 498 1223 498 1223 584 1290 c 128,-1,16 - 670 1357 670 1357 776 1395.5 c 128,-1,17 - 882 1434 882 1434 993 1434 c 0,18,19 - 1382 1434 1382 1434 1489 1245 c 1,20,-1 - 1249 1178 l 1,21,22 - 1229 1221 1229 1221 1214.5 1243.5 c 128,-1,23 - 1200 1266 1200 1266 1172.5 1289.5 c 128,-1,24 - 1145 1313 1145 1313 1103.5 1322 c 128,-1,25 - 1062 1331 1062 1331 999 1331 c 0,26,27 - 911 1331 911 1331 834.5 1292.5 c 128,-1,28 - 758 1254 758 1254 704 1192 c 128,-1,29 - 650 1130 650 1130 607 1048 c 128,-1,30 - 564 966 564 966 537.5 883 c 128,-1,31 - 511 800 511 800 493 716.5 c 128,-1,32 - 475 633 475 633 468 571 c 128,-1,33 - 461 509 461 509 461 465 c 0,34,35 - 461 275 461 275 543 178.5 c 128,-1,36 - 625 82 625 82 750 82 c 0,37,38 - 874 82 874 82 983 135 c 1,39,-1 - 1118 717 l 1,40,-1 - 946 717 l 1,41,-1 - 969 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: H -Encoding: 72 72 35 -Width: 1189 -VWidth: 0 -Flags: W -HStem: 0 43G<82 358 823 1099> 717 102<537 989> 1393 41G<404 680 1146 1421> -AnchorPoint: "bottom" 588 0 basechar 0 -AnchorPoint: "top" 926 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -680 1434 m 1,0,-1 - 537 819 l 1,1,-1 - 1012 819 l 1,2,-1 - 1155 1434 l 1,3,-1 - 1421 1434 l 1,4,-1 - 1090 0 l 1,5,-1 - 823 0 l 1,6,-1 - 989 717 l 1,7,-1 - 514 717 l 1,8,-1 - 348 0 l 1,9,-1 - 82 0 l 1,10,-1 - 414 1434 l 1,11,-1 - 680 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: I -Encoding: 73 73 36 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368> 1393 41G<414 690> -VStem: 92 598 -AnchorPoint: "bottom" 233 0 basechar 0 -AnchorPoint: "ogonek" 201 0 basechar 0 -AnchorPoint: "top" 559 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -690 1434 m 25,0,-1 - 358 0 l 1,1,-1 - 92 0 l 1,2,-1 - 424 1434 l 1,3,-1 - 690 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: J -Encoding: 74 74 37 -Width: 894 -VWidth: 0 -Flags: W -HStem: -20 102<307 501> 1393 41G<851 1126> -AnchorPoint: "bottom" 403 0 basechar 0 -AnchorPoint: "top" 995 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -907 487 m 18,0,1 - 882 379 882 379 859 306.5 c 128,-1,2 - 836 234 836 234 803.5 174 c 128,-1,3 - 771 114 771 114 734 79.5 c 128,-1,4 - 697 45 697 45 641.5 21 c 128,-1,5 - 586 -3 586 -3 520 -11.5 c 128,-1,6 - 454 -20 454 -20 360 -20 c 0,7,8 - 215 -20 215 -20 57 72 c 1,9,-1 - 256 178 l 1,10,11 - 291 129 291 129 335.5 105.5 c 128,-1,12 - 380 82 380 82 414 82 c 0,13,14 - 482 82 482 82 533.5 163.5 c 128,-1,15 - 585 245 585 245 631 442 c 2,16,-1 - 860 1434 l 1,17,-1 - 1126 1434 l 1,18,-1 - 907 487 l 18,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: K -Encoding: 75 75 38 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368 905 1151> 1393 41G<414 690 1177 1458> -AnchorPoint: "bottom" 600 0 basechar 0 -AnchorPoint: "cedilla" 573 0 basechar 0 -AnchorPoint: "top" 825 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -492 573 m 1,0,-1 - 358 0 l 1,1,-1 - 92 0 l 1,2,-1 - 424 1434 l 1,3,-1 - 690 1434 l 1,4,-1 - 551 836 l 1,5,-1 - 1223 1434 l 1,6,-1 - 1458 1434 l 1,7,-1 - 719 776 l 1,8,-1 - 1151 0 l 1,9,-1 - 928 0 l 1,10,-1 - 569 643 l 1,11,-1 - 492 573 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: L -Encoding: 76 76 39 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 1393 41G<404 680> -AnchorPoint: "bottom" 535 0 basechar 0 -AnchorPoint: "cedilla" 504 0 basechar 0 -AnchorPoint: "top" 772 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -373 102 m 1,0,-1 - 967 102 l 1,1,-1 - 942 0 l 1,2,-1 - 82 0 l 1,3,-1 - 414 1434 l 1,4,-1 - 680 1434 l 1,5,-1 - 373 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: M -Encoding: 77 77 40 -Width: 1480 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368 1108 1384> 1393 41G<414 700 1411 1706> -AnchorPoint: "bottom" 758 0 basechar 0 -AnchorPoint: "top" 1065 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -690 1434 m 1,0,-1 - 879 631 l 1,1,-1 - 1440 1434 l 1,2,-1 - 1706 1434 l 1,3,-1 - 1374 0 l 1,4,-1 - 1108 0 l 1,5,-1 - 1350 1047 l 1,6,-1 - 791 248 l 1,7,-1 - 600 1047 l 1,8,-1 - 358 0 l 1,9,-1 - 92 0 l 1,10,-1 - 424 1434 l 1,11,-1 - 690 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: N -Encoding: 78 78 41 -Width: 1261 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368 878 1165> 1393 41G<414 703 1211 1487> -AnchorPoint: "bottom" 629 0 basechar 0 -AnchorPoint: "cedilla" 614 0 basechar 0 -AnchorPoint: "top" 967 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1487 1434 m 1,0,-1 - 1155 0 l 1,1,-1 - 889 0 l 1,2,-1 - 606 1075 l 1,3,-1 - 358 0 l 1,4,-1 - 92 0 l 1,5,-1 - 424 1434 l 1,6,-1 - 690 1434 l 1,7,-1 - 692 1434 l 1,8,-1 - 973 367 l 1,9,-1 - 1221 1434 l 1,10,-1 - 1487 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: O -Encoding: 79 79 42 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> -VStem: 199 258<251 749> 1235 256<698 1177> -AnchorPoint: "bottom" 680 0 basechar 0 -AnchorPoint: "horn" 1425 1085 basechar 0 -AnchorPoint: "ogonek" 684 0 basechar 0 -AnchorPoint: "top" 997 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -659 -20 m 0,0,1 - 571 -20 571 -20 490.5 11 c 128,-1,2 - 410 42 410 42 343.5 102 c 128,-1,3 - 277 162 277 162 238 262 c 128,-1,4 - 199 362 199 362 199 489 c 0,5,6 - 199 624 199 624 236.5 763 c 128,-1,7 - 274 902 274 902 345.5 1025 c 128,-1,8 - 417 1148 417 1148 511 1244.5 c 128,-1,9 - 605 1341 605 1341 727.5 1397.5 c 128,-1,10 - 850 1454 850 1454 981 1454 c 0,11,12 - 1088 1454 1088 1454 1179 1423 c 128,-1,13 - 1270 1392 1270 1392 1340.5 1332 c 128,-1,14 - 1411 1272 1411 1272 1451 1173.5 c 128,-1,15 - 1491 1075 1491 1075 1491 948 c 0,16,17 - 1491 863 1491 863 1475 772 c 128,-1,18 - 1459 681 1459 681 1425 586 c 128,-1,19 - 1391 491 1391 491 1342.5 403.5 c 128,-1,20 - 1294 316 1294 316 1224.5 238.5 c 128,-1,21 - 1155 161 1155 161 1072.5 103.5 c 128,-1,22 - 990 46 990 46 883.5 13 c 128,-1,23 - 777 -20 777 -20 659 -20 c 0,0,1 -694 82 m 0,24,25 - 799 82 799 82 890.5 150 c 128,-1,26 - 982 218 982 218 1043.5 322.5 c 128,-1,27 - 1105 427 1105 427 1149.5 554.5 c 128,-1,28 - 1194 682 1194 682 1214.5 799.5 c 128,-1,29 - 1235 917 1235 917 1235 1012 c 0,30,31 - 1235 1185 1235 1185 1165 1268.5 c 128,-1,32 - 1095 1352 1095 1352 969 1352 c 0,33,34 - 875 1352 875 1352 790.5 1287 c 128,-1,35 - 706 1222 706 1222 646.5 1120 c 128,-1,36 - 587 1018 587 1018 543 894.5 c 128,-1,37 - 499 771 499 771 478 653 c 128,-1,38 - 457 535 457 535 457 440 c 0,39,40 - 457 262 457 262 524.5 172 c 128,-1,41 - 592 82 592 82 694 82 c 0,24,25 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Q -Encoding: 81 81 43 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -348 102<908 1034> 1352 102<812 1130> -VStem: 199 254<256 745> 532 268<-142 -1> 1237 254<714 1178> -AnchorPoint: "top" 981 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -694 82 m 0,0,1 - 779 82 779 82 853.5 123 c 128,-1,2 - 928 164 928 164 982 231 c 128,-1,3 - 1036 298 1036 298 1080.5 385.5 c 128,-1,4 - 1125 473 1125 473 1153.5 563.5 c 128,-1,5 - 1182 654 1182 654 1201.5 745 c 128,-1,6 - 1221 836 1221 836 1229 906.5 c 128,-1,7 - 1237 977 1237 977 1237 1028 c 0,8,9 - 1237 1352 1237 1352 969 1352 c 0,10,11 - 891 1352 891 1352 822.5 1317 c 128,-1,12 - 754 1282 754 1282 705 1222.5 c 128,-1,13 - 656 1163 656 1163 615.5 1088.5 c 128,-1,14 - 575 1014 575 1014 548.5 929.5 c 128,-1,15 - 522 845 522 845 502.5 765.5 c 128,-1,16 - 483 686 483 686 472.5 611.5 c 128,-1,17 - 462 537 462 537 457.5 488 c 128,-1,18 - 453 439 453 439 453 410 c 0,19,20 - 453 244 453 244 517 163 c 128,-1,21 - 581 82 581 82 694 82 c 0,0,1 -535 -4 m 1,22,23 - 388 34 388 34 293.5 159.5 c 128,-1,24 - 199 285 199 285 199 489 c 0,25,26 - 199 624 199 624 236.5 763 c 128,-1,27 - 274 902 274 902 345.5 1025 c 128,-1,28 - 417 1148 417 1148 511 1244.5 c 128,-1,29 - 605 1341 605 1341 727.5 1397.5 c 128,-1,30 - 850 1454 850 1454 981 1454 c 0,31,32 - 1088 1454 1088 1454 1179 1423 c 128,-1,33 - 1270 1392 1270 1392 1340.5 1332 c 128,-1,34 - 1411 1272 1411 1272 1451 1173.5 c 128,-1,35 - 1491 1075 1491 1075 1491 948 c 0,36,37 - 1491 849 1491 849 1468.5 738 c 128,-1,38 - 1446 627 1446 627 1393 505 c 128,-1,39 - 1340 383 1340 383 1263 281 c 128,-1,40 - 1186 179 1186 179 1066 100.5 c 128,-1,41 - 946 22 946 22 801 -6 c 1,42,-1 - 801 -18 l 2,43,44 - 801 -117 801 -117 879 -181.5 c 128,-1,45 - 957 -246 957 -246 1057 -246 c 1,46,-1 - 1034 -348 l 1,47,48 - 957 -348 957 -348 875 -331 c 128,-1,49 - 793 -314 793 -314 713.5 -279.5 c 128,-1,50 - 634 -245 634 -245 583 -181.5 c 128,-1,51 - 532 -118 532 -118 532 -35 c 0,52,53 - 532 -19 532 -19 535 -4 c 1,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: R -Encoding: 82 82 44 -Width: 1122 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368 748 1012> 655 102<532 607> 1331 102<666 881> -VStem: 758 262<0 382> 940 266<951 1271> -AnchorPoint: "bottom" 549 0 basechar 0 -AnchorPoint: "cedilla" 508 0 basechar 0 -AnchorPoint: "top" 811 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1206 1128 m 0,0,1 - 1206 1042 1206 1042 1166 955.5 c 128,-1,2 - 1126 869 1126 869 1043.5 794.5 c 128,-1,3 - 961 720 961 720 852 684 c 1,4,5 - 918 606 918 606 969 434.5 c 128,-1,6 - 1020 263 1020 263 1020 115 c 0,7,8 - 1020 52 1020 52 1008 0 c 1,9,-1 - 748 0 l 1,10,11 - 758 41 758 41 758 106 c 0,12,13 - 758 254 758 254 702 419 c 128,-1,14 - 646 584 646 584 569 655 c 1,15,-1 - 510 655 l 1,16,-1 - 358 0 l 1,17,-1 - 92 0 l 1,18,-1 - 424 1434 l 1,19,-1 - 844 1434 l 2,20,21 - 923 1434 923 1434 986 1416 c 128,-1,22 - 1049 1398 1049 1398 1089.5 1368.5 c 128,-1,23 - 1130 1339 1130 1339 1157 1299 c 128,-1,24 - 1184 1259 1184 1259 1195 1216.5 c 128,-1,25 - 1206 1174 1206 1174 1206 1128 c 0,0,1 -625 758 m 2,26,27 - 715 758 715 758 789.5 816 c 128,-1,28 - 864 874 864 874 902 958 c 128,-1,29 - 940 1042 940 1042 940 1128 c 0,30,31 - 940 1215 940 1215 896.5 1273 c 128,-1,32 - 853 1331 853 1331 758 1331 c 2,33,-1 - 666 1331 l 1,34,-1 - 532 758 l 1,35,-1 - 625 758 l 2,26,27 -EndSplineSet -Validated: 1 -EndChar - -StartChar: S -Encoding: 83 83 45 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -20 102<527 773> 1352 102<812 1024> -VStem: 207 238<177 350> 430 270<940 1185> 932 270<279 555> -AnchorPoint: "bottom" 627 0 basechar 0 -AnchorPoint: "cedilla" 598 0 basechar 0 -AnchorPoint: "top" 926 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1202 465 m 0,0,1 - 1202 358 1202 358 1153 266.5 c 128,-1,2 - 1104 175 1104 175 1020.5 113 c 128,-1,3 - 937 51 937 51 824.5 15.5 c 128,-1,4 - 712 -20 712 -20 586 -20 c 0,5,6 - 410 -20 410 -20 310 86.5 c 128,-1,7 - 210 193 210 193 207 350 c 1,8,-1 - 446 381 l 1,9,10 - 444 367 444 367 444 342 c 0,11,12 - 444 234 444 234 497 158 c 128,-1,13 - 550 82 550 82 623 82 c 0,14,15 - 695 82 695 82 752.5 111.5 c 128,-1,16 - 810 141 810 141 842 182.5 c 128,-1,17 - 874 224 874 224 895.5 275.5 c 128,-1,18 - 917 327 917 327 924.5 365.5 c 128,-1,19 - 932 404 932 404 932 432 c 0,20,21 - 932 491 932 491 904.5 538 c 128,-1,22 - 877 585 877 585 832.5 617.5 c 128,-1,23 - 788 650 788 650 734.5 679 c 128,-1,24 - 681 708 681 708 627.5 738.5 c 128,-1,25 - 574 769 574 769 529.5 804 c 128,-1,26 - 485 839 485 839 457.5 892.5 c 128,-1,27 - 430 946 430 946 430 1012 c 0,28,29 - 430 1091 430 1091 462.5 1162.5 c 128,-1,30 - 495 1234 495 1234 548.5 1286 c 128,-1,31 - 602 1338 602 1338 668.5 1377 c 128,-1,32 - 735 1416 735 1416 805 1435 c 128,-1,33 - 875 1454 875 1454 938 1454 c 0,34,35 - 1021 1454 1021 1454 1082 1441.5 c 128,-1,36 - 1143 1429 1143 1429 1179.5 1412 c 128,-1,37 - 1216 1395 1216 1395 1244.5 1361 c 128,-1,38 - 1273 1327 1273 1327 1286.5 1300 c 128,-1,39 - 1300 1273 1300 1273 1319 1225 c 1,40,-1 - 1085 1182 l 1,41,42 - 1070 1231 1070 1231 1058.5 1257.5 c 128,-1,43 - 1047 1284 1047 1284 1026 1308.5 c 128,-1,44 - 1005 1333 1005 1333 974.5 1342.5 c 128,-1,45 - 944 1352 944 1352 897 1352 c 128,-1,46 - 850 1352 850 1352 802.5 1297.5 c 128,-1,47 - 755 1243 755 1243 727.5 1173 c 128,-1,48 - 700 1103 700 1103 700 1051 c 0,49,50 - 700 1005 700 1005 721.5 966.5 c 128,-1,51 - 743 928 743 928 778.5 900.5 c 128,-1,52 - 814 873 814 873 859 844.5 c 128,-1,53 - 904 816 904 816 951 792.5 c 128,-1,54 - 998 769 998 769 1043 736 c 128,-1,55 - 1088 703 1088 703 1123.5 667.5 c 128,-1,56 - 1159 632 1159 632 1180.5 579.5 c 128,-1,57 - 1202 527 1202 527 1202 465 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: T -Encoding: 84 84 46 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43G<487 763> 1331 102<352 795 1061 1526> -AnchorPoint: "bottom" 621 0 basechar 0 -AnchorPoint: "cedilla" 618 0 basechar 0 -AnchorPoint: "top" 954 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -352 1434 m 1,0,-1 - 1554 1434 l 1,1,-1 - 1526 1331 l 1,2,-1 - 1061 1331 l 1,3,-1 - 754 0 l 1,4,-1 - 487 0 l 1,5,-1 - 795 1331 l 1,6,-1 - 328 1331 l 1,7,-1 - 352 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: U -Encoding: 85 85 47 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41G<384 659 1209 1485> -VStem: 176 254<182 636> -AnchorPoint: "bottom" 627 0 basechar 0 -AnchorPoint: "horn" 1403 1085 basechar 0 -AnchorPoint: "ogonek" 676 0 basechar 0 -AnchorPoint: "top" 958 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1219 1434 m 1,0,-1 - 1485 1434 l 1,1,-1 - 1294 610 l 2,2,3 - 1259 461 1259 461 1203.5 348.5 c 128,-1,4 - 1148 236 1148 236 1083 167 c 128,-1,5 - 1018 98 1018 98 935.5 55 c 128,-1,6 - 853 12 853 12 772.5 -4 c 128,-1,7 - 692 -20 692 -20 598 -20 c 0,8,9 - 538 -20 538 -20 483 -9 c 128,-1,10 - 428 2 428 2 370.5 31 c 128,-1,11 - 313 60 313 60 271 105.5 c 128,-1,12 - 229 151 229 151 202.5 226 c 128,-1,13 - 176 301 176 301 176 397 c 0,14,15 - 176 490 176 490 203 610 c 2,16,-1 - 393 1434 l 1,17,-1 - 659 1434 l 1,18,-1 - 469 610 l 2,19,20 - 430 444 430 444 430 334 c 0,21,22 - 430 259 430 259 446.5 207 c 128,-1,23 - 463 155 463 155 493 129 c 128,-1,24 - 523 103 523 103 556.5 92.5 c 128,-1,25 - 590 82 590 82 633 82 c 0,26,27 - 683 82 683 82 725 95.5 c 128,-1,28 - 767 109 767 109 810.5 144.5 c 128,-1,29 - 854 180 854 180 891 238 c 128,-1,30 - 928 296 928 296 963.5 390 c 128,-1,31 - 999 484 999 484 1028 610 c 2,32,-1 - 1219 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: V -Encoding: 86 86 48 -Width: 1101 -VWidth: 0 -Flags: W -HStem: 0 43G<461 668> 1393 41G<332 579 1175 1442> -AnchorPoint: "bottom" 561 0 basechar 0 -AnchorPoint: "top" 881 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -465 0 m 1,0,-1 - 332 1434 l 1,1,-1 - 575 1434 l 1,2,-1 - 664 473 l 1,3,-1 - 1198 1434 l 1,4,-1 - 1442 1434 l 1,5,-1 - 645 0 l 1,6,-1 - 465 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: X -Encoding: 88 88 49 -Width: 1095 -VWidth: 0 -Flags: W -HStem: 0 43G<41 254 765 1034> 1393 41G<377 646 1071 1286> -AnchorPoint: "bottom" 524 -2 basechar 0 -AnchorPoint: "top" 862 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -813 795 m 1,0,-1 - 1034 0 l 1,1,-1 - 776 0 l 1,2,-1 - 625 543 l 1,3,-1 - 223 0 l 1,4,-1 - 41 0 l 1,5,-1 - 573 721 l 1,6,-1 - 377 1434 l 1,7,-1 - 635 1434 l 1,8,-1 - 762 975 l 1,9,-1 - 1102 1434 l 1,10,-1 - 1286 1434 l 1,11,-1 - 813 795 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: W -Encoding: 87 87 50 -Width: 1701 -VWidth: 0 -Flags: W -HStem: 0 43G<461 668 1061 1268> 860 41G<940 1169> 1393 41G<332 579 1775 2042> -AnchorPoint: "bottom" 860 0 basechar 0 -AnchorPoint: "top" 1171 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1165 901 m 1,0,-1 - 1212 381 l 1,1,-1 - 1798 1434 l 1,2,-1 - 2042 1434 l 1,3,-1 - 1245 0 l 1,4,-1 - 1065 0 l 1,5,-1 - 1006 647 l 1,6,-1 - 645 0 l 1,7,-1 - 465 0 l 1,8,-1 - 332 1434 l 1,9,-1 - 575 1434 l 1,10,-1 - 672 381 l 1,11,-1 - 963 901 l 1,12,-1 - 1165 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Y -Encoding: 89 89 51 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43G<406 681> 1393 41G<377 646 1112 1327> -AnchorPoint: "bottom" 549 0 basechar 0 -AnchorPoint: "top" 868 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -774 936 m 1,0,-1 - 1143 1434 l 1,1,-1 - 1327 1434 l 1,2,-1 - 856 801 l 1,3,-1 - 672 0 l 1,4,-1 - 406 0 l 1,5,-1 - 573 727 l 1,6,-1 - 377 1434 l 1,7,-1 - 635 1434 l 1,8,-1 - 774 936 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Z -Encoding: 90 90 52 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 102<367 963> 1331 102<414 958> -AnchorPoint: "bottom" 537 0 basechar 0 -AnchorPoint: "top" 823 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -958 1331 m 1,0,-1 - 358 1331 l 1,1,-1 - 414 1434 l 1,2,-1 - 1286 1434 l 1,3,-1 - 367 102 l 1,4,-1 - 987 102 l 1,5,-1 - 963 0 l 1,6,-1 - 41 0 l 1,7,-1 - 958 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: exclam -Encoding: 33 33 53 -Width: 448 -VWidth: 0 -Flags: W -HStem: 0 164<150 328> 1393 41G<416 680> -VStem: 113 567 -LayerCount: 2 -Fore -SplineSet -150 164 m 5,0,-1 - 365 164 l 1,1,-1 - 328 0 l 1,2,-1 - 113 0 l 1,3,-1 - 150 164 l 5,0,-1 -680 1434 m 17,4,-1 - 403 369 l 1,5,-1 - 209 369 l 1,6,-1 - 424 1434 l 1,7,-1 - 680 1434 l 17,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: period -Encoding: 46 46 54 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 164<129 307> -VStem: 92 252 -LayerCount: 2 -Fore -SplineSet -129 164 m 1,0,-1 - 344 164 l 1,1,-1 - 307 0 l 1,2,-1 - 92 0 l 1,3,-1 - 129 164 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: comma -Encoding: 44 44 55 -Width: 448 -VWidth: 0 -Flags: W -HStem: -203 367<144 213> -VStem: 55 309 -LayerCount: 2 -Fore -SplineSet -55 -203 m 1,0,1 - 143 -109 143 -109 143 -12 c 0,2,3 - 143 2 143 2 140 36 c 128,-1,4 - 137 70 137 70 137 90 c 0,5,6 - 137 128 137 128 145 164 c 1,7,-1 - 365 164 l 1,8,9 - 350 100 350 100 333.5 47 c 128,-1,10 - 317 -6 317 -6 306.5 -36 c 128,-1,11 - 296 -66 296 -66 276.5 -99.5 c 128,-1,12 - 257 -133 257 -133 251.5 -141.5 c 128,-1,13 - 246 -150 246 -150 224.5 -176 c 128,-1,14 - 203 -202 203 -202 203 -203 c 1,15,-1 - 55 -203 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quotesingle -Encoding: 39 39 56 -Width: 428 -VWidth: 0 -Flags: W -HStem: 1024 410<424 532> -VStem: 358 301 -LayerCount: 2 -Fore -SplineSet -659 1434 m 25,0,-1 - 532 1024 l 1,1,-1 - 358 1024 l 1,2,-1 - 424 1434 l 1,3,-1 - 659 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quotedbl -Encoding: 34 34 57 -Width: 724 -VWidth: 0 -Flags: W -HStem: 1024 410<424 532 721 829> -VStem: 358 301 655 301 -LayerCount: 2 -Fore -Refer: 56 39 N 1 0 0 1 297 0 2 -Refer: 56 39 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: dollar -Encoding: 36 36 58 -Width: 1044 -VWidth: 0 -Flags: W -HStem: 0 43G<385 479 551 644> 150 102<528 586> 158 109<314 422> 1112 102<750 807> -VStem: 276 256<834 1029> 827 256<373 593> -LayerCount: 2 -Fore -SplineSet -1165 1087 m 1,0,-1 - 1030 1016 l 1,1,2 - 979 1067 979 1067 887 1094 c 1,3,-1 - 807 750 l 1,4,5 - 932 709 932 709 1007.5 640 c 128,-1,6 - 1083 571 1083 571 1083 496 c 0,7,8 - 1083 396 1083 396 968.5 298.5 c 128,-1,9 - 854 201 854 201 672 164 c 1,10,-1 - 635 0 l 1,11,-1 - 551 0 l 1,12,-1 - 586 152 l 1,13,14 - 570 150 570 150 535 150 c 2,15,-1 - 504 150 l 1,16,-1 - 469 0 l 1,17,-1 - 385 0 l 1,18,-1 - 422 158 l 1,19,20 - 242 187 242 187 127 287 c 1,21,-1 - 233 362 l 1,22,23 - 320 290 320 290 446 266 c 1,24,-1 - 543 682 l 1,25,26 - 426 722 426 722 351 780.5 c 128,-1,27 - 276 839 276 839 276 915 c 0,28,29 - 276 1009 276 1009 384.5 1097.5 c 128,-1,30 - 493 1186 493 1186 664 1208 c 1,31,-1 - 696 1352 l 1,32,-1 - 780 1352 l 1,33,-1 - 750 1214 l 1,34,35 - 788 1214 788 1214 829 1208 c 1,36,-1 - 862 1352 l 1,37,-1 - 946 1352 l 1,38,-1 - 911 1196 l 1,39,40 - 1079 1162 1079 1162 1165 1087 c 1,0,-1 -635 1079 m 1,41,42 - 591 1051 591 1051 561.5 1009 c 128,-1,43 - 532 967 532 967 532 922 c 0,44,45 - 532 867 532 867 578 831 c 1,46,-1 - 635 1079 l 1,41,42 -623 662 m 1,47,-1 - 528 254 l 1,48,49 - 546 252 546 252 588 252 c 2,50,-1 - 608 252 l 1,51,-1 - 698 643 l 1,52,53 - 668 653 668 653 623 662 c 1,47,-1 -651 791 m 1,54,55 - 681 781 681 781 729 772 c 1,56,-1 - 807 1108 l 1,57,58 - 767 1112 767 1112 745 1112 c 0,59,60 - 731 1112 731 1112 725 1110 c 1,61,-1 - 651 791 l 1,54,55 -698 279 m 1,62,63 - 759 311 759 311 793 379 c 128,-1,64 - 827 447 827 447 827 498 c 0,65,66 - 827 559 827 559 774 602 c 1,67,-1 - 698 279 l 1,62,63 -EndSplineSet -Validated: 1 -EndChar - -StartChar: bar -Encoding: 124 124 59 -Width: 356 -VWidth: 0 -Flags: W -HStem: 0 43G<92 265> 1393 41G<414 588> -VStem: 92 496 -LayerCount: 2 -Fore -SplineSet -588 1434 m 25,0,-1 - 256 0 l 1,1,-1 - 92 0 l 1,2,-1 - 424 1434 l 1,3,-1 - 588 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: slash -Encoding: 47 47 60 -Width: 905 -VWidth: 0 -Flags: W -HStem: 0 43G<61 290> 1393 41G<947 1176> -LayerCount: 2 -Fore -SplineSet -1176 1434 m 1,0,-1 - 264 0 l 1,1,-1 - 61 0 l 1,2,-1 - 973 1434 l 1,3,-1 - 1176 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: backslash -Encoding: 92 92 61 -Width: 905 -VWidth: 0 -Flags: W -HStem: 0 43G<634 844> 1393 41G<393 603> -VStem: 393 451 -LayerCount: 2 -Fore -SplineSet -393 1434 m 1,0,-1 - 596 1434 l 1,1,-1 - 844 0 l 1,2,-1 - 641 0 l 1,3,-1 - 393 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: question -Encoding: 63 63 62 -Width: 944 -VWidth: 0 -Flags: W -HStem: 0 164<328 506> 369 215<416 571> 1270 102<563 810> -VStem: 860 246<830 1201> -LayerCount: 2 -Fore -SplineSet -328 164 m 1,0,-1 - 543 164 l 1,1,-1 - 506 0 l 1,2,-1 - 291 0 l 1,3,-1 - 328 164 l 1,0,-1 -1106 1022 m 0,4,5 - 1106 914 1106 914 1065 818.5 c 128,-1,6 - 1024 723 1024 723 954.5 656 c 128,-1,7 - 885 589 885 589 797.5 545.5 c 128,-1,8 - 710 502 710 502 614 487 c 1,9,-1 - 571 369 l 1,10,-1 - 397 369 l 1,11,-1 - 416 584 l 1,12,-1 - 524 584 l 2,13,14 - 585 584 585 584 636.5 607 c 128,-1,15 - 688 630 688 630 721.5 666.5 c 128,-1,16 - 755 703 755 703 781.5 751.5 c 128,-1,17 - 808 800 808 800 822 847 c 128,-1,18 - 836 894 836 894 845.5 943 c 128,-1,19 - 855 992 855 992 857.5 1024 c 128,-1,20 - 860 1056 860 1056 860 1079 c 0,21,22 - 860 1172 860 1172 815.5 1221 c 128,-1,23 - 771 1270 771 1270 672 1270 c 0,24,25 - 642 1270 642 1270 621.5 1265 c 128,-1,26 - 601 1260 601 1260 585 1247.5 c 128,-1,27 - 569 1235 569 1235 559.5 1223.5 c 128,-1,28 - 550 1212 550 1212 532.5 1188 c 128,-1,29 - 515 1164 515 1164 500 1147 c 1,30,-1 - 317 1194 l 1,31,32 - 495 1372 495 1372 727 1372 c 0,33,34 - 898 1372 898 1372 1002 1277.5 c 128,-1,35 - 1106 1183 1106 1183 1106 1022 c 0,4,5 -EndSplineSet -Validated: 1 -EndChar - -StartChar: colon -Encoding: 58 58 63 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 164<129 307> 614 164<270 449> -VStem: 92 252 233 252 -LayerCount: 2 -Fore -Refer: 54 46 N 1 0 0 1 141 614 2 -Refer: 54 46 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: semicolon -Encoding: 59 59 64 -Width: 407 -VWidth: 0 -Flags: W -HStem: -203 367<125 195> 614 164<272 451> -VStem: 37 309 236 252 -LayerCount: 2 -Fore -Refer: 54 46 N 1 0 0 1 143 614 2 -Refer: 55 44 N 1 0 0 1 -18 0 2 -Validated: 1 -EndChar - -StartChar: percent -Encoding: 37 37 65 -Width: 1273 -VWidth: 0 -Flags: W -HStem: 156 109<919 1044> 473 109<945 1071> 729 109<497 623> 1047 109<524 650> -VStem: 293 201<839 1019> 653 201<865 1045> 715 201<265 446> 1073 203<289 472> -LayerCount: 2 -Fore -SplineSet -1018 473 m 0,0,1 - 989 473 989 473 967 455 c 128,-1,2 - 945 437 945 437 934.5 411 c 128,-1,3 - 924 385 924 385 919.5 362.5 c 128,-1,4 - 915 340 915 340 915 324 c 0,5,6 - 915 264 915 264 971 264 c 0,7,8 - 1001 264 1001 264 1023 282 c 128,-1,9 - 1045 300 1045 300 1055 326.5 c 128,-1,10 - 1065 353 1065 353 1069 375 c 128,-1,11 - 1073 397 1073 397 1073 414 c 0,12,13 - 1073 473 1073 473 1018 473 c 0,0,1 -715 317 m 0,14,15 - 715 435 715 435 809 508.5 c 128,-1,16 - 903 582 903 582 1044 582 c 0,17,18 - 1102 582 1102 582 1151.5 568 c 128,-1,19 - 1201 554 1201 554 1238.5 516 c 128,-1,20 - 1276 478 1276 478 1276 420 c 0,21,22 - 1276 302 1276 302 1181 229 c 128,-1,23 - 1086 156 1086 156 946 156 c 0,24,25 - 887 156 887 156 838 169.5 c 128,-1,26 - 789 183 789 183 752 221 c 128,-1,27 - 715 259 715 259 715 317 c 0,14,15 -598 1047 m 0,28,29 - 568 1047 568 1047 546 1029 c 128,-1,30 - 524 1011 524 1011 513.5 984.5 c 128,-1,31 - 503 958 503 958 498.5 936 c 128,-1,32 - 494 914 494 914 494 897 c 0,33,34 - 494 838 494 838 549 838 c 0,35,36 - 588 838 588 838 613.5 869.5 c 128,-1,37 - 639 901 639 901 646 931.5 c 128,-1,38 - 653 962 653 962 653 987 c 0,39,40 - 653 1047 653 1047 598 1047 c 0,28,29 -293 891 m 0,41,42 - 293 1009 293 1009 388 1082 c 128,-1,43 - 483 1155 483 1155 623 1155 c 0,44,45 - 716 1155 716 1155 785 1116 c 128,-1,46 - 854 1077 854 1077 854 993 c 0,47,48 - 854 875 854 875 759 802 c 128,-1,49 - 664 729 664 729 524 729 c 0,50,51 - 466 729 466 729 417 743 c 128,-1,52 - 368 757 368 757 330.5 795 c 128,-1,53 - 293 833 293 833 293 891 c 0,41,42 -205 264 m 1,54,-1 - 1145 1047 l 1,55,-1 - 1364 1047 l 1,56,-1 - 424 264 l 1,57,-1 - 205 264 l 1,54,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: numbersign -Encoding: 35 35 66 -Width: 1124 -VWidth: 0 -Flags: W -HStem: 410 102<221 322 600 662 942 1065> 840 102<371 498 774 838 1116 1217> -LayerCount: 2 -Fore -SplineSet -559 410 m 1,0,-1 - 442 123 l 1,1,-1 - 205 123 l 1,2,-1 - 322 410 l 1,3,-1 - 197 410 l 1,4,-1 - 221 512 l 1,5,-1 - 362 512 l 1,6,-1 - 498 840 l 1,7,-1 - 348 840 l 1,8,-1 - 371 942 l 1,9,-1 - 537 942 l 1,10,-1 - 655 1229 l 1,11,-1 - 893 1229 l 1,12,-1 - 774 942 l 1,13,-1 - 879 942 l 1,14,-1 - 995 1229 l 1,15,-1 - 1233 1229 l 1,16,-1 - 1116 942 l 1,17,-1 - 1239 942 l 1,18,-1 - 1217 840 l 1,19,-1 - 1075 840 l 1,20,-1 - 942 512 l 1,21,-1 - 1090 512 l 1,22,-1 - 1065 410 l 1,23,-1 - 899 410 l 1,24,-1 - 784 123 l 1,25,-1 - 547 123 l 1,26,-1 - 662 410 l 1,27,-1 - 559 410 l 1,0,-1 -600 512 m 1,28,-1 - 705 512 l 1,29,-1 - 838 840 l 1,30,-1 - 735 840 l 1,31,-1 - 600 512 l 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: zero -Encoding: 48 48 67 -Width: 942 -VWidth: 0 -Flags: W -HStem: -20 102<401 599> 1004 102<611 789> -VStem: 135 233<151 539> 819 238<523 919> -LayerCount: 2 -Fore -SplineSet -715 1004 m 0,0,1 - 647 1004 647 1004 587 940 c 128,-1,2 - 527 876 527 876 488.5 782.5 c 128,-1,3 - 450 689 450 689 421.5 581.5 c 128,-1,4 - 393 474 393 474 381 389.5 c 128,-1,5 - 369 305 369 305 369 258 c 0,6,7 - 369 82 369 82 502 82 c 0,8,9 - 568 82 568 82 624 148 c 128,-1,10 - 680 214 680 214 714.5 309 c 128,-1,11 - 749 404 749 404 774 512 c 128,-1,12 - 799 620 799 620 809 700.5 c 128,-1,13 - 819 781 819 781 819 823 c 0,14,15 - 819 1004 819 1004 715 1004 c 0,0,1 -1057 707 m 0,16,17 - 1057 577 1057 577 1008 445.5 c 128,-1,18 - 959 314 959 314 877.5 211.5 c 128,-1,19 - 796 109 796 109 682.5 44.5 c 128,-1,20 - 569 -20 569 -20 449 -20 c 0,21,22 - 347 -20 347 -20 274.5 33 c 128,-1,23 - 202 86 202 86 168.5 172.5 c 128,-1,24 - 135 259 135 259 135 369 c 0,25,26 - 135 489 135 489 174 605 c 128,-1,27 - 213 721 213 721 276 809 c 128,-1,28 - 339 897 339 897 415 965.5 c 128,-1,29 - 491 1034 491 1034 568 1070 c 128,-1,30 - 645 1106 645 1106 709 1106 c 0,31,32 - 869 1106 869 1106 963 995.5 c 128,-1,33 - 1057 885 1057 885 1057 707 c 0,16,17 -EndSplineSet -Validated: 1 -EndChar - -StartChar: one -Encoding: 49 49 68 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 43G<350 616> -VStem: 350 510 -LayerCount: 2 -Fore -SplineSet -860 1096 m 1,0,-1 - 606 0 l 1,1,-1 - 350 0 l 1,2,-1 - 573 967 l 1,3,-1 - 512 961 l 1,4,-1 - 537 1063 l 1,5,-1 - 860 1096 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: two -Encoding: 50 50 69 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<401 817> 983 102<595 823> -VStem: 752 244<700 982> -LayerCount: 2 -Fore -SplineSet -121 0 m 1,0,1 - 140 83 140 83 174.5 153 c 128,-1,2 - 209 223 209 223 249.5 271 c 128,-1,3 - 290 319 290 319 338 361 c 128,-1,4 - 386 403 386 403 434 436.5 c 128,-1,5 - 482 470 482 470 528.5 503.5 c 128,-1,6 - 575 537 575 537 615.5 575 c 128,-1,7 - 656 613 656 613 686.5 657.5 c 128,-1,8 - 717 702 717 702 734.5 764.5 c 128,-1,9 - 752 827 752 827 752 903 c 0,10,11 - 752 983 752 983 694 983 c 0,12,13 - 638 983 638 983 602.5 949 c 128,-1,14 - 567 915 567 915 512 827 c 1,15,-1 - 324 877 l 1,16,17 - 472 1085 472 1085 748 1085 c 0,18,19 - 860 1085 860 1085 927.5 1017.5 c 128,-1,20 - 995 950 995 950 995 842 c 0,21,22 - 995 763 995 763 966 695.5 c 128,-1,23 - 937 628 937 628 889.5 579 c 128,-1,24 - 842 530 842 530 784 486 c 128,-1,25 - 726 442 726 442 665 400.5 c 128,-1,26 - 604 359 604 359 550.5 317 c 128,-1,27 - 497 275 497 275 456 220 c 128,-1,28 - 415 165 415 165 401 102 c 1,29,-1 - 842 102 l 1,30,-1 - 817 0 l 1,31,-1 - 121 0 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: three -Encoding: 51 51 70 -Width: 942 -VWidth: 0 -Flags: W -HStem: -258 102<295 502> 422 102<479 603> 983 102<556 744> -VStem: 70 190<-122 -41> 653 248<48 372> 758 248<663 965> -LayerCount: 2 -Fore -SplineSet -401 -156 m 4,0,1 - 467 -156 467 -156 527 -90 c 128,-1,2 - 587 -24 587 -24 620 71 c 128,-1,3 - 653 166 653 166 653 256 c 0,4,5 - 653 335 653 335 609 378.5 c 128,-1,6 - 565 422 565 422 457 422 c 1,7,-1 - 479 524 l 1,8,9 - 549 524 549 524 601.5 550 c 128,-1,10 - 654 576 654 576 683 613 c 128,-1,11 - 712 650 712 650 730 701 c 128,-1,12 - 748 752 748 752 753 792.5 c 128,-1,13 - 758 833 758 833 758 874 c 0,14,15 - 758 931 758 931 735.5 957 c 128,-1,16 - 713 983 713 983 666 983 c 0,17,18 - 639 983 639 983 618.5 977.5 c 128,-1,19 - 598 972 598 972 584.5 965.5 c 128,-1,20 - 571 959 571 959 556.5 941.5 c 128,-1,21 - 542 924 542 924 534.5 912.5 c 128,-1,22 - 527 901 527 901 510.5 872.5 c 128,-1,23 - 494 844 494 844 483 827 c 1,24,-1 - 315 877 l 1,25,26 - 385 975 385 975 479.5 1030 c 128,-1,27 - 574 1085 574 1085 719 1085 c 0,28,29 - 838 1085 838 1085 922 1011 c 128,-1,30 - 1006 937 1006 937 1006 825 c 0,31,32 - 1006 781 1006 781 992 735 c 128,-1,33 - 978 689 978 689 948.5 640.5 c 128,-1,34 - 919 592 919 592 865 547.5 c 128,-1,35 - 811 503 811 503 739 473 c 1,36,37 - 901 393 901 393 901 213 c 0,38,39 - 901 129 901 129 866.5 52 c 128,-1,40 - 832 -25 832 -25 777 -80 c 128,-1,41 - 722 -135 722 -135 656 -176 c 128,-1,42 - 590 -217 590 -217 526 -237.5 c 128,-1,43 - 462 -258 462 -258 410 -258 c 0,44,45 - 263 -258 263 -258 178.5 -198.5 c 128,-1,46 - 94 -139 94 -139 70 -45 c 1,47,-1 - 260 4 l 1,48,49 - 267 -40 267 -40 274 -64 c 128,-1,50 - 281 -88 281 -88 295.5 -112 c 128,-1,51 - 310 -136 310 -136 335.5 -146 c 128,-1,52 - 361 -156 361 -156 401 -156 c 4,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: four -Encoding: 52 52 71 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<248 524 805 891> -LayerCount: 2 -Fore -SplineSet -68 68 m 1,0,-1 - 776 1085 l 1,1,-1 - 1030 1085 l 1,2,-1 - 805 102 l 1,3,-1 - 915 102 l 1,4,-1 - 891 0 l 1,5,-1 - 780 0 l 1,6,-1 - 725 -238 l 1,7,-1 - 469 -238 l 1,8,-1 - 524 0 l 1,9,-1 - 51 0 l 1,10,-1 - 68 68 l 1,0,-1 -549 102 m 1,11,-1 - 696 748 l 1,12,-1 - 248 102 l 1,13,-1 - 549 102 l 1,11,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: five -Encoding: 53 53 72 -Width: 942 -VWidth: 0 -Flags: W -HStem: -258 102<322 507> 983 102<741 1034> -VStem: 653 248<95 476> -LayerCount: 2 -Fore -SplineSet -901 322 m 0,0,1 - 901 206 901 206 859.5 97.5 c 128,-1,2 - 818 -11 818 -11 751.5 -88 c 128,-1,3 - 685 -165 685 -165 600 -211.5 c 128,-1,4 - 515 -258 515 -258 430 -258 c 0,5,6 - 283 -258 283 -258 198.5 -198.5 c 128,-1,7 - 114 -139 114 -139 90 -45 c 1,8,-1 - 291 4 l 1,9,10 - 305 -84 305 -84 319 -109 c 0,11,12 - 345 -156 345 -156 422 -156 c 0,13,14 - 478 -156 478 -156 525.5 -91.5 c 128,-1,15 - 573 -27 573 -27 599 62 c 128,-1,16 - 625 151 625 151 639 229 c 128,-1,17 - 653 307 653 307 653 350 c 0,18,19 - 653 399 653 399 637.5 434.5 c 128,-1,20 - 622 470 622 470 584.5 498 c 128,-1,21 - 547 526 547 526 478.5 540.5 c 128,-1,22 - 410 555 410 555 311 555 c 1,23,-1 - 524 1085 l 1,24,-1 - 1057 1085 l 1,25,-1 - 1034 983 l 1,26,-1 - 741 983 l 1,27,-1 - 602 635 l 1,28,29 - 761 601 761 601 831 522.5 c 128,-1,30 - 901 444 901 444 901 322 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: six -Encoding: 54 54 73 -Width: 942 -VWidth: 0 -Flags: W -HStem: -20 102<405 588> 586 102<522 696> -VStem: 152 240<133 443> 715 254<258 570> -LayerCount: 2 -Fore -SplineSet -481 82 m 128,-1,1 - 528 82 528 82 568 110 c 128,-1,2 - 608 138 608 138 634.5 180 c 128,-1,3 - 661 222 661 222 679.5 273 c 128,-1,4 - 698 324 698 324 706.5 370 c 128,-1,5 - 715 416 715 416 715 451 c 0,6,7 - 715 586 715 586 616 586 c 0,8,9 - 553 586 553 586 473 569 c 1,10,11 - 436 467 436 467 413.5 363 c 128,-1,12 - 391 259 391 259 391 201 c 0,13,14 - 391 140 391 140 412.5 111 c 128,-1,0 - 434 82 434 82 481 82 c 128,-1,1 -969 434 m 0,15,16 - 969 352 969 352 932 270.5 c 128,-1,17 - 895 189 895 189 832.5 124.5 c 128,-1,18 - 770 60 770 60 679 20 c 128,-1,19 - 588 -20 588 -20 489 -20 c 0,20,21 - 348 -20 348 -20 250 66 c 128,-1,22 - 152 152 152 152 152 293 c 0,23,24 - 152 421 152 421 200 550.5 c 128,-1,25 - 248 680 248 680 325 784.5 c 128,-1,26 - 402 889 402 889 495 985.5 c 128,-1,27 - 588 1082 588 1082 681 1153 c 128,-1,28 - 774 1224 774 1224 851 1277 c 128,-1,29 - 928 1330 928 1330 976 1357 c 2,30,-1 - 1024 1384 l 1,31,-1 - 1079 1323 l 1,32,33 - 1065 1315 1065 1315 1040 1299.5 c 128,-1,34 - 1015 1284 1015 1284 943 1227 c 128,-1,35 - 871 1170 871 1170 805 1102.5 c 128,-1,36 - 739 1035 739 1035 658.5 921.5 c 128,-1,37 - 578 808 578 808 520 682 c 1,38,39 - 564 688 564 688 610 688 c 0,40,41 - 683 688 683 688 745.5 674 c 128,-1,42 - 808 660 808 660 859 630.5 c 128,-1,43 - 910 601 910 601 939.5 551 c 128,-1,44 - 969 501 969 501 969 434 c 0,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: seven -Encoding: 55 55 74 -Width: 942 -VWidth: 0 -Flags: W -HStem: 983 102<420 793> -LayerCount: 2 -Fore -SplineSet -420 1085 m 1,0,-1 - 1053 1085 l 1,1,-1 - 1030 983 l 1,2,-1 - 420 -238 l 1,3,-1 - 182 -238 l 1,4,-1 - 793 983 l 1,5,-1 - 367 983 l 1,6,-1 - 420 1085 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: nine -Encoding: 57 57 75 -Width: 942 -VWidth: 0 -Flags: W -HStem: 397 102<512 674> 1004 102<596 757> -VStem: 221 258<524 807> 788 248<593 945> -LayerCount: 2 -Fore -SplineSet -680 1004 m 0,0,1 - 637 1004 637 1004 597 961.5 c 128,-1,2 - 557 919 557 919 532.5 860 c 128,-1,3 - 508 801 508 801 493.5 745.5 c 128,-1,4 - 479 690 479 690 479 657 c 0,5,6 - 479 594 479 594 506 547 c 128,-1,7 - 533 500 533 500 575 500 c 0,8,9 - 646 500 646 500 721 516 c 1,10,11 - 788 702 788 702 788 827 c 0,12,13 - 788 911 788 911 759.5 957.5 c 128,-1,14 - 731 1004 731 1004 680 1004 c 0,0,1 -221 633 m 0,15,16 - 221 712 221 712 258 795 c 128,-1,17 - 295 878 295 878 359 947.5 c 128,-1,18 - 423 1017 423 1017 522.5 1061.5 c 128,-1,19 - 622 1106 622 1106 735 1106 c 0,20,21 - 853 1106 853 1106 944.5 1011 c 128,-1,22 - 1036 916 1036 916 1036 772 c 0,23,24 - 1036 671 1036 671 1006.5 570 c 128,-1,25 - 977 469 977 469 926.5 383 c 128,-1,26 - 876 297 876 297 811 215 c 128,-1,27 - 746 133 746 133 674 66.5 c 128,-1,28 - 602 -0 602 -0 530 -59 c 128,-1,29 - 458 -118 458 -118 393 -161.5 c 128,-1,30 - 328 -205 328 -205 278 -236 c 0,31,32 - 228 -267 228 -267 198 -283 c 2,33,-1 - 168 -299 l 1,34,-1 - 113 -238 l 1,35,36 - 128 -231 128 -231 153.5 -216 c 128,-1,37 - 179 -201 179 -201 252 -144.5 c 128,-1,38 - 325 -88 325 -88 392 -21 c 128,-1,39 - 459 46 459 46 539.5 160 c 128,-1,40 - 620 274 620 274 676 403 c 1,41,42 - 633 397 633 397 584 397 c 0,43,44 - 509 397 509 397 447 408.5 c 128,-1,45 - 385 420 385 420 332.5 446 c 128,-1,46 - 280 472 280 472 250.5 519.5 c 128,-1,47 - 221 567 221 567 221 633 c 0,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eight -Encoding: 56 56 76 -Width: 942 -VWidth: 0 -Flags: W -HStem: -20 102<394 603> 1352 102<696 854> -VStem: 117 254<128 456> 332 272<920 1183> 729 270<278 580> 872 258<1004 1322> -LayerCount: 2 -Fore -SplineSet -735 840 m 1,0,1 - 787 889 787 889 820.5 977 c 128,-1,2 - 854 1065 854 1065 863 1124.5 c 128,-1,3 - 872 1184 872 1184 872 1223 c 0,4,5 - 872 1352 872 1352 786 1352 c 0,6,7 - 734 1352 734 1352 695 1310 c 128,-1,8 - 656 1268 656 1268 638 1209.5 c 128,-1,9 - 620 1151 620 1151 612 1107.5 c 128,-1,10 - 604 1064 604 1064 604 1042 c 0,11,12 - 604 978 604 978 637.5 932.5 c 128,-1,13 - 671 887 671 887 735 840 c 1,0,1 -117 287 m 0,14,15 - 117 419 117 419 215 540.5 c 128,-1,16 - 313 662 313 662 467 752 c 1,17,18 - 402 801 402 801 367 857 c 128,-1,19 - 332 913 332 913 332 997 c 0,20,21 - 332 1082 332 1082 364.5 1158 c 128,-1,22 - 397 1234 397 1234 449 1287 c 128,-1,23 - 501 1340 501 1340 566.5 1378.5 c 128,-1,24 - 632 1417 632 1417 699 1435.5 c 128,-1,25 - 766 1454 766 1454 827 1454 c 0,26,27 - 956 1454 956 1454 1043 1373.5 c 128,-1,28 - 1130 1293 1130 1293 1130 1167 c 0,29,30 - 1130 954 1130 954 844 762 c 1,31,32 - 917 709 917 709 958 643.5 c 128,-1,33 - 999 578 999 578 999 481 c 0,34,35 - 999 336 999 336 922.5 220 c 128,-1,36 - 846 104 846 104 722 42 c 128,-1,37 - 598 -20 598 -20 453 -20 c 0,38,39 - 304 -20 304 -20 210.5 68.5 c 128,-1,40 - 117 157 117 157 117 287 c 0,14,15 -561 686 m 1,41,42 - 504 643 504 643 463 568.5 c 128,-1,43 - 422 494 422 494 404 418 c 128,-1,44 - 386 342 386 342 378.5 291.5 c 128,-1,45 - 371 241 371 241 371 217 c 0,46,47 - 371 151 371 151 398 116.5 c 128,-1,48 - 425 82 425 82 489 82 c 0,49,50 - 535 82 535 82 572.5 102 c 128,-1,51 - 610 122 610 122 634 152.5 c 128,-1,52 - 658 183 658 183 676.5 223 c 128,-1,53 - 695 263 695 263 704.5 299.5 c 128,-1,54 - 714 336 714 336 720 371 c 128,-1,55 - 726 406 726 406 727.5 422.5 c 128,-1,56 - 729 439 729 439 729 444 c 0,57,58 - 729 526 729 526 685.5 580 c 128,-1,59 - 642 634 642 634 561 686 c 1,41,42 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ampersand -Encoding: 38 38 77 -Width: 1265 -VWidth: 0 -Flags: W -HStem: -20 102<476 799> 0 43G<911 1153> 1270 102<847 1035> -VStem: 154 250<174 539> 553 233<873 1181> 1176 205<700 833> -LayerCount: 2 -Fore -SplineSet -553 1010 m 0,0,1 - 553 1049 553 1049 561.5 1090.5 c 128,-1,2 - 570 1132 570 1132 598.5 1184.5 c 128,-1,3 - 627 1237 627 1237 672.5 1277 c 128,-1,4 - 718 1317 718 1317 799.5 1344.5 c 128,-1,5 - 881 1372 881 1372 987 1372 c 0,6,7 - 1104 1372 1104 1372 1181.5 1319 c 128,-1,8 - 1259 1266 1259 1266 1270 1208 c 1,9,-1 - 1053 1174 l 1,10,11 - 1046 1204 1046 1204 1041.5 1216.5 c 128,-1,12 - 1037 1229 1037 1229 1025 1244.5 c 128,-1,13 - 1013 1260 1013 1260 991 1265 c 128,-1,14 - 969 1270 969 1270 932 1270 c 0,15,16 - 897 1270 897 1270 869.5 1248 c 128,-1,17 - 842 1226 842 1226 827 1195 c 128,-1,18 - 812 1164 812 1164 802 1126.5 c 128,-1,19 - 792 1089 792 1089 789 1063 c 128,-1,20 - 786 1037 786 1037 786 1020 c 0,21,22 - 786 900 786 900 858 725 c 2,23,-1 - 1010 352 l 1,24,25 - 1092 513 1092 513 1176 877 c 1,26,-1 - 1380 829 l 1,27,28 - 1341 663 1341 663 1260 499.5 c 128,-1,29 - 1179 336 1179 336 1065 213 c 1,30,-1 - 1153 0 l 1,31,-1 - 928 0 l 1,32,-1 - 897 74 l 1,33,34 - 747 -20 747 -20 571 -20 c 0,35,36 - 392 -20 392 -20 273 80 c 128,-1,37 - 154 180 154 180 154 346 c 0,38,39 - 154 511 154 511 268.5 662.5 c 128,-1,40 - 383 814 383 814 573 885 c 1,41,42 - 553 950 553 950 553 1010 c 0,0,1 -610 774 m 1,43,44 - 513 706 513 706 458 567 c 128,-1,45 - 403 428 403 428 403 311 c 0,46,47 - 403 202 403 202 459 142 c 128,-1,48 - 515 82 515 82 625 82 c 0,49,50 - 766 82 766 82 862 160 c 1,51,-1 - 610 774 l 1,43,44 -EndSplineSet -Validated: 1 -EndChar - -StartChar: parenleft -Encoding: 40 40 78 -Width: 641 -VWidth: 0 -Flags: W -HStem: 0 43G<362 539> 1393 41G<707 870> -VStem: 233 246<164 720> -LayerCount: 2 -Fore -SplineSet -707 1434 m 9,0,-1 - 870 1434 l 1,1,2 - 862 1425 862 1425 848 1408 c 128,-1,3 - 834 1391 834 1391 793 1333 c 128,-1,4 - 752 1275 752 1275 715.5 1212 c 128,-1,5 - 679 1149 679 1149 633.5 1050 c 128,-1,6 - 588 951 588 951 555.5 849 c 128,-1,7 - 523 747 523 747 501 614 c 128,-1,8 - 479 481 479 481 479 348 c 0,9,10 - 479 246 479 246 494 159 c 128,-1,11 - 509 72 509 72 524 36 c 2,12,-1 - 539 0 l 1,13,-1 - 375 0 l 1,14,15 - 369 5 369 5 359.5 15.5 c 128,-1,16 - 350 26 350 26 325.5 65 c 128,-1,17 - 301 104 301 104 282.5 150 c 128,-1,18 - 264 196 264 196 248.5 273 c 128,-1,19 - 233 350 233 350 233 436 c 0,20,21 - 233 565 233 565 257.5 687.5 c 128,-1,22 - 282 810 282 810 318 902.5 c 128,-1,23 - 354 995 354 995 405 1081 c 128,-1,24 - 456 1167 456 1167 499 1223 c 128,-1,25 - 542 1279 542 1279 591 1329 c 128,-1,26 - 640 1379 640 1379 662.5 1398 c 128,-1,27 - 685 1417 685 1417 703 1431 c 2,28,-1 - 707 1434 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: parenright -Encoding: 41 41 79 -Width: 641 -VWidth: 0 -Flags: W -HStem: 0 43G<102 266> 1393 41G<434 611> -VStem: 494 246<714 1269> -LayerCount: 2 -Fore -SplineSet -266 0 m 9,0,-1 - 102 0 l 1,1,2 - 110 9 110 9 124 26 c 128,-1,3 - 138 43 138 43 179 100.5 c 128,-1,4 - 220 158 220 158 257 221.5 c 128,-1,5 - 294 285 294 285 339 384 c 128,-1,6 - 384 483 384 483 416.5 584.5 c 128,-1,7 - 449 686 449 686 471.5 819 c 128,-1,8 - 494 952 494 952 494 1085 c 0,9,10 - 494 1187 494 1187 479 1274 c 0,11,12 - 464 1362 464 1362 449 1398 c 2,13,-1 - 434 1434 l 1,14,-1 - 598 1434 l 1,15,16 - 604 1429 604 1429 613.5 1418.5 c 128,-1,17 - 623 1408 623 1408 647 1369 c 128,-1,18 - 671 1330 671 1330 690 1284 c 128,-1,19 - 709 1238 709 1238 724 1160.5 c 128,-1,20 - 739 1083 739 1083 739 997 c 0,21,22 - 739 868 739 868 714.5 745.5 c 128,-1,23 - 690 623 690 623 654 531 c 128,-1,24 - 618 439 618 439 567.5 352.5 c 128,-1,25 - 517 266 517 266 473.5 210.5 c 128,-1,26 - 430 155 430 155 381.5 105 c 128,-1,27 - 333 55 333 55 310.5 36 c 128,-1,28 - 288 17 288 17 270 3 c 2,29,-1 - 266 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: asterisk -Encoding: 42 42 80 -Width: 921 -VWidth: 0 -Flags: W -HStem: 1333 41G<684 866> -LayerCount: 2 -Fore -SplineSet -647 1092 m 1,0,-1 - 690 1374 l 1,1,-1 - 866 1374 l 1,2,-1 - 778 1092 l 1,3,-1 - 1067 1200 l 1,4,-1 - 1081 1032 l 1,5,-1 - 791 967 l 1,6,-1 - 924 750 l 1,7,-1 - 760 645 l 1,8,-1 - 666 887 l 1,9,-1 - 461 645 l 1,10,-1 - 342 750 l 1,11,-1 - 578 967 l 1,12,-1 - 315 1032 l 1,13,-1 - 408 1200 l 1,14,-1 - 647 1092 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: plus -Encoding: 43 43 81 -Width: 856 -VWidth: 0 -Flags: W -HStem: 348 102<186 412 629 854> -LayerCount: 2 -Fore -SplineSet -604 348 m 1,0,-1 - 537 53 l 1,1,-1 - 344 53 l 1,2,-1 - 412 348 l 1,3,-1 - 162 348 l 1,4,-1 - 186 451 l 1,5,-1 - 436 451 l 1,6,-1 - 504 745 l 1,7,-1 - 696 745 l 1,8,-1 - 629 451 l 1,9,-1 - 879 451 l 1,10,-1 - 854 348 l 1,11,-1 - 604 348 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: hyphen -Encoding: 45 45 82 -Width: 649 -VWidth: 0 -Flags: W -HStem: 348 102<186 647> -VStem: 162 510 -LayerCount: 2 -Fore -SplineSet -186 451 m 1,0,-1 - 672 451 l 1,1,-1 - 647 348 l 1,2,-1 - 162 348 l 1,3,-1 - 186 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: less -Encoding: 60 60 83 -Width: 917 -VWidth: 0 -Flags: W -HStem: 860 41G<864 951> -LayerCount: 2 -Fore -SplineSet -223 473 m 1,0,-1 - 932 901 l 1,1,-1 - 985 786 l 1,2,-1 - 463 473 l 1,3,-1 - 840 162 l 1,4,-1 - 733 47 l 1,5,-1 - 223 473 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: greater -Encoding: 62 62 84 -Width: 917 -VWidth: 0 -Flags: W -HStem: 860 41G<365 452> -LayerCount: 2 -Fore -SplineSet -913 475 m 1,0,-1 - 205 47 l 1,1,-1 - 152 162 l 1,2,-1 - 674 475 l 1,3,-1 - 297 786 l 1,4,-1 - 403 901 l 1,5,-1 - 913 475 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: equal -Encoding: 61 61 85 -Width: 708 -VWidth: 0 -Flags: W -HStem: 348 102<186 707> 573 102<238 760> -VStem: 162 621 -LayerCount: 2 -Fore -SplineSet -238 676 m 1,0,-1 - 782 676 l 1,1,-1 - 760 573 l 1,2,-1 - 215 573 l 1,3,-1 - 238 676 l 1,0,-1 -186 451 m 1,4,-1 - 731 451 l 1,5,-1 - 707 348 l 1,6,-1 - 162 348 l 1,7,-1 - 186 451 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: at -Encoding: 64 64 86 -Width: 1488 -VWidth: 0 -Flags: W -HStem: -20 102<652 1085> 262 102<1022 1185> 279 66<762 915> 860 66<869 989> 1126 102<836 1169> -VStem: 186 256<287 702> 596 141<358 698> 913 141<366 634> 991 141<599 860> 1292 256<632 998> -LayerCount: 2 -Fore -SplineSet -1133 791 m 0,0,1 - 1133 761 1133 761 1094 612 c 128,-1,2 - 1055 463 1055 463 1055 416 c 0,3,4 - 1055 387 1055 387 1064 376 c 128,-1,5 - 1073 365 1073 365 1092 365 c 0,6,7 - 1146 365 1146 365 1186.5 408 c 128,-1,8 - 1227 451 1227 451 1249 522 c 128,-1,9 - 1271 593 1271 593 1281.5 671 c 128,-1,10 - 1292 749 1292 749 1292 831 c 0,11,12 - 1292 966 1292 966 1213.5 1046 c 128,-1,13 - 1135 1126 1135 1126 1034 1126 c 0,14,15 - 931 1126 931 1126 837 1087.5 c 128,-1,16 - 743 1049 743 1049 672.5 983.5 c 128,-1,17 - 602 918 602 918 549 834.5 c 128,-1,18 - 496 751 496 751 469 657.5 c 128,-1,19 - 442 564 442 564 442 473 c 0,20,21 - 442 393 442 393 466.5 326.5 c 128,-1,22 - 491 260 491 260 530.5 215.5 c 128,-1,23 - 570 171 570 171 621.5 140.5 c 128,-1,24 - 673 110 673 110 726 96 c 128,-1,25 - 779 82 779 82 831 82 c 0,26,27 - 959 82 959 82 1100 131.5 c 128,-1,28 - 1241 181 1241 181 1313 264 c 1,29,-1 - 1421 209 l 1,30,31 - 1309 98 1309 98 1162 39 c 128,-1,32 - 1015 -20 1015 -20 778 -20 c 0,33,34 - 687 -20 687 -20 601.5 -1.5 c 128,-1,35 - 516 17 516 17 440.5 56.5 c 128,-1,36 - 365 96 365 96 308.5 152.5 c 128,-1,37 - 252 209 252 209 219 290 c 128,-1,38 - 186 371 186 371 186 467 c 0,39,40 - 186 595 186 595 234.5 714.5 c 128,-1,41 - 283 834 283 834 366.5 926 c 128,-1,42 - 450 1018 450 1018 557 1087 c 128,-1,43 - 664 1156 664 1156 786 1192.5 c 128,-1,44 - 908 1229 908 1229 1028 1229 c 0,45,46 - 1267 1229 1267 1229 1407.5 1125.5 c 128,-1,47 - 1548 1022 1548 1022 1548 840 c 0,48,49 - 1548 765 1548 765 1524 684 c 128,-1,50 - 1500 603 1500 603 1453.5 528.5 c 128,-1,51 - 1407 454 1407 454 1346 394 c 128,-1,52 - 1285 334 1285 334 1204.5 298 c 128,-1,53 - 1124 262 1124 262 1038 262 c 0,54,55 - 972 262 972 262 938 309 c 1,56,57 - 880 279 880 279 793 279 c 0,58,59 - 696 279 696 279 646 340.5 c 128,-1,60 - 596 402 596 402 596 506 c 0,61,62 - 596 598 596 598 630.5 679.5 c 128,-1,63 - 665 761 665 761 718 813.5 c 128,-1,64 - 771 866 771 866 832.5 896 c 128,-1,65 - 894 926 894 926 950 926 c 0,66,67 - 1028 926 1028 926 1080.5 893 c 128,-1,68 - 1133 860 1133 860 1133 791 c 0,0,1 -956 860 m 0,69,70 - 902 860 902 860 857.5 819.5 c 128,-1,71 - 813 779 813 779 788 718 c 128,-1,72 - 763 657 763 657 750 595 c 128,-1,73 - 737 533 737 533 737 481 c 0,74,75 - 737 344 737 344 827 344 c 0,76,77 - 882 344 882 344 915 367 c 1,78,79 - 913 381 913 381 913 412 c 0,80,81 - 913 473 913 473 952 621 c 128,-1,82 - 991 769 991 769 991 807 c 0,83,84 - 991 860 991 860 956 860 c 0,69,70 -EndSplineSet -Validated: 1 -EndChar - -StartChar: bracketleft -Encoding: 91 91 87 -Width: 524 -VWidth: 0 -Flags: W -HStem: 0 82<315 432> 1270 82<590 725> -VStem: 92 651 -LayerCount: 2 -Fore -SplineSet -432 0 m 1,0,-1 - 92 0 l 1,1,-1 - 403 1352 l 1,2,-1 - 743 1352 l 1,3,-1 - 725 1270 l 1,4,-1 - 590 1270 l 1,5,-1 - 315 82 l 1,6,-1 - 451 82 l 1,7,-1 - 432 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: bracketright -Encoding: 93 93 88 -Width: 524 -VWidth: 0 -Flags: W -HStem: 0 82<111 246> 1270 82<403 520> -VStem: 92 651 -LayerCount: 2 -Fore -SplineSet -403 1352 m 1,0,-1 - 743 1352 l 1,1,-1 - 432 0 l 1,2,-1 - 92 0 l 1,3,-1 - 111 82 l 1,4,-1 - 246 82 l 1,5,-1 - 520 1270 l 1,6,-1 - 385 1270 l 1,7,-1 - 403 1352 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: underscore -Encoding: 95 95 89 -Width: 692 -VWidth: 0 -Flags: W -HStem: -184 102<-18 649> -LayerCount: 2 -Fore -SplineSet --18 -82 m 1,0,-1 - 674 -82 l 1,1,-1 - 649 -184 l 1,2,-1 - -43 -184 l 1,3,-1 - -18 -82 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: braceleft -Encoding: 123 123 90 -Width: 571 -VWidth: 0 -Flags: W -HStem: 0 43G<308 489> 1393 41G<521 821> -VStem: 250 188<47 361> 297 221<329 691> -LayerCount: 2 -Fore -SplineSet -518 559 m 0,0,1 - 518 494 518 494 478 344.5 c 128,-1,2 - 438 195 438 195 438 131 c 0,3,4 - 438 45 438 45 489 0 c 1,5,-1 - 346 0 l 1,6,7 - 250 62 250 62 250 207 c 0,8,9 - 250 270 250 270 273.5 399 c 128,-1,10 - 297 528 297 528 297 582 c 0,11,12 - 297 673 297 673 248 717 c 1,13,14 - 293 745 293 745 325.5 792.5 c 128,-1,15 - 358 840 358 840 377 894 c 128,-1,16 - 396 948 396 948 412.5 1008.5 c 128,-1,17 - 429 1069 429 1069 448.5 1130 c 128,-1,18 - 468 1191 468 1191 494.5 1247 c 128,-1,19 - 521 1303 521 1303 567.5 1352.5 c 128,-1,20 - 614 1402 614 1402 678 1434 c 1,21,-1 - 821 1434 l 1,22,23 - 772 1403 772 1403 739 1354 c 128,-1,24 - 706 1305 706 1305 689.5 1250 c 128,-1,25 - 673 1195 673 1195 661 1134 c 128,-1,26 - 649 1073 649 1073 635.5 1012 c 128,-1,27 - 622 951 622 951 601.5 896.5 c 128,-1,28 - 581 842 581 842 541 794.5 c 128,-1,29 - 501 747 501 747 442 717 c 1,30,31 - 518 668 518 668 518 559 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: braceright -Encoding: 125 125 91 -Width: 571 -VWidth: 0 -Flags: W -HStem: 0 43G<82 382> 1393 41G<414 594> -VStem: 383 223<746 1105> 463 190<1073 1385> -LayerCount: 2 -Fore -SplineSet -383 874 m 0,0,1 - 383 939 383 939 423 1088.5 c 128,-1,2 - 463 1238 463 1238 463 1303 c 0,3,4 - 463 1390 463 1390 414 1434 c 1,5,-1 - 557 1434 l 1,6,7 - 653 1370 653 1370 653 1227 c 0,8,9 - 653 1164 653 1164 629.5 1035 c 128,-1,10 - 606 906 606 906 606 852 c 0,11,12 - 606 761 606 761 655 717 c 1,13,14 - 610 689 610 689 577.5 641.5 c 128,-1,15 - 545 594 545 594 526 540 c 128,-1,16 - 507 486 507 486 490.5 425.5 c 128,-1,17 - 474 365 474 365 454.5 304 c 128,-1,18 - 435 243 435 243 408.5 187 c 128,-1,19 - 382 131 382 131 335.5 81.5 c 128,-1,20 - 289 32 289 32 225 0 c 1,21,-1 - 82 0 l 1,22,23 - 131 31 131 31 164 80 c 128,-1,24 - 197 129 197 129 213.5 184 c 128,-1,25 - 230 239 230 239 242 300 c 128,-1,26 - 254 361 254 361 267.5 422 c 128,-1,27 - 281 483 281 483 301.5 537.5 c 128,-1,28 - 322 592 322 592 362 639.5 c 128,-1,29 - 402 687 402 687 461 717 c 1,30,31 - 383 768 383 768 383 874 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: gravecomb -Encoding: 768 768 92 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: -373 319 -AnchorPoint: "top" -180 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --195 1653 m 25,0,-1 - -53 1303 l 1,1,-1 - -129 1249 l 1,2,-1 - -373 1530 l 1,3,-1 - -195 1653 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: acutecomb -Encoding: 769 769 93 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: -387 422 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --86 1653 m 25,0,-1 - 35 1530 l 1,1,-1 - -336 1249 l 1,2,-1 - -387 1303 l 1,3,-1 - -86 1653 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0302 -Encoding: 770 770 94 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1257 299 -VStem: -551 551 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet -0 1348 m 1,0,-1 - -113 1257 l 1,1,-1 - -254 1434 l 1,2,-1 - -479 1257 l 1,3,-1 - -551 1348 l 1,4,-1 - -227 1556 l 1,5,-1 - 0 1348 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tildecomb -Encoding: 771 771 95 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 141<-250 -73> 1335 141<-449 -271> -VStem: -567 612 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --39 1477 m 1,0,-1 - 45 1477 l 1,1,2 - 16 1393 16 1393 -51.5 1331.5 c 128,-1,3 - -119 1270 -119 1270 -203 1270 c 0,4,5 - -241 1270 -241 1270 -291 1302.5 c 128,-1,6 - -341 1335 -341 1335 -360 1335 c 0,7,8 - -460 1335 -460 1335 -483 1270 c 1,9,-1 - -567 1270 l 1,10,11 - -536 1354 -536 1354 -469.5 1415.5 c 128,-1,12 - -403 1477 -403 1477 -319 1477 c 0,13,14 - -281 1477 -281 1477 -230 1444 c 128,-1,15 - -179 1411 -179 1411 -160 1411 c 0,16,17 - -62 1411 -62 1411 -39 1477 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0304 -Encoding: 772 772 96 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 115<-514 -70> -VStem: -541 498 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --514 1384 m 1,0,-1 - -43 1384 l 1,1,-1 - -70 1270 l 1,2,-1 - -541 1270 l 1,3,-1 - -514 1384 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0306 -Encoding: 774 774 97 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 137<-373 -145> -VStem: -483 88<1435 1460> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --262 1407 m 0,0,1 - -206 1407 -206 1407 -153 1436.5 c 128,-1,2 - -100 1466 -100 1466 -88 1501 c 1,3,-1 - -18 1460 l 1,4,5 - -46 1382 -46 1382 -126.5 1326 c 128,-1,6 - -207 1270 -207 1270 -295 1270 c 0,7,8 - -377 1270 -377 1270 -430 1319 c 128,-1,9 - -483 1368 -483 1368 -483 1440 c 0,10,11 - -483 1443 -483 1443 -482 1450 c 128,-1,12 - -481 1457 -481 1457 -481 1460 c 1,13,-1 - -395 1501 l 1,14,-1 - -395 1497 l 2,15,16 - -395 1464 -395 1464 -355.5 1435.5 c 128,-1,17 - -316 1407 -316 1407 -262 1407 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0307 -Encoding: 775 775 98 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 170<-344 -213> -VStem: -383 209 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --344 1440 m 1,0,-1 - -174 1440 l 1,1,-1 - -213 1270 l 1,2,-1 - -383 1270 l 1,3,-1 - -344 1440 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0308 -Encoding: 776 776 99 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 170<-487 -356 -201 -70> -VStem: -526 209 -240 209 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 143 0 2 -Refer: 98 775 N 1 0 0 1 -143 0 2 -Validated: 1 -EndChar - -StartChar: uni030A -Encoding: 778 778 100 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1167 72<-361 -225> 1407 72<-340 -204> -VStem: -442 74<1245 1380> -197 74<1266 1401> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --262 1407 m 0,0,1 - -301 1407 -301 1407 -335 1377 c 128,-1,2 - -369 1347 -369 1347 -369 1305 c 0,3,4 - -369 1277 -369 1277 -350 1258 c 128,-1,5 - -331 1239 -331 1239 -301 1239 c 0,6,7 - -263 1239 -263 1239 -230 1269 c 128,-1,8 - -197 1299 -197 1299 -197 1341 c 0,9,10 - -197 1369 -197 1369 -215 1388 c 128,-1,11 - -233 1407 -233 1407 -262 1407 c 0,0,1 --442 1288 m 0,12,13 - -442 1365 -442 1365 -380 1422 c 128,-1,14 - -318 1479 -318 1479 -246 1479 c 0,15,16 - -191 1479 -191 1479 -157 1445 c 128,-1,17 - -123 1411 -123 1411 -123 1358 c 0,18,19 - -123 1281 -123 1281 -184.5 1224 c 128,-1,20 - -246 1167 -246 1167 -317 1167 c 0,21,22 - -372 1167 -372 1167 -407 1201 c 128,-1,23 - -442 1235 -442 1235 -442 1288 c 0,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni030B -Encoding: 779 779 101 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: -571 422 -203 422 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 -184 0 2 -Refer: 93 769 N 1 0 0 1 184 0 2 -Validated: 1 -EndChar - -StartChar: uni030C -Encoding: 780 780 102 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1139 387 -VStem: -487 479 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --326 1139 m 1,0,-1 - -487 1473 l 1,1,-1 - -412 1526 l 1,2,-1 - -276 1346 l 1,3,-1 - -59 1526 l 1,4,-1 - -8 1473 l 1,5,-1 - -326 1139 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni030F -Encoding: 783 783 103 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: -537 319 -209 319 -AnchorPoint: "top" -180 1188 mark 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 -164 0 2 -Refer: 92 768 N 1 0 0 1 164 0 2 -Validated: 1 -EndChar - -StartChar: uni0311 -Encoding: 785 785 104 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1343 137<-396 -168> -VStem: -145 88<1291 1317> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --279 1343 m 0,0,1 - -335 1343 -335 1343 -388 1313.5 c 128,-1,2 - -441 1284 -441 1284 -453 1249 c 1,3,-1 - -522 1290 l 1,4,5 - -494 1368 -494 1368 -414 1424.5 c 128,-1,6 - -334 1481 -334 1481 -246 1481 c 0,7,8 - -164 1481 -164 1481 -110.5 1431 c 128,-1,9 - -57 1381 -57 1381 -57 1309 c 0,10,11 - -57 1296 -57 1296 -59 1290 c 1,12,-1 - -145 1249 l 1,13,-1 - -145 1253 l 2,14,15 - -145 1286 -145 1286 -185 1314.5 c 128,-1,16 - -225 1343 -225 1343 -279 1343 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0312 -Encoding: 786 786 105 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 367<-240 -209> -VStem: -391 180<1270 1342> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --121 1636 m 1,0,1 - -209 1539 -209 1539 -209 1446 c 0,2,3 - -209 1432 -209 1432 -206 1398 c 128,-1,4 - -203 1364 -203 1364 -203 1343 c 0,5,6 - -203 1306 -203 1306 -211 1270 c 1,7,-1 - -391 1270 l 1,8,9 - -376 1334 -376 1334 -359.5 1386.5 c 128,-1,10 - -343 1439 -343 1439 -332 1470 c 128,-1,11 - -321 1501 -321 1501 -302.5 1533.5 c 128,-1,12 - -284 1566 -284 1566 -277.5 1575 c 128,-1,13 - -271 1584 -271 1584 -250.5 1609 c 128,-1,14 - -230 1634 -230 1634 -229 1636 c 1,15,-1 - -121 1636 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0313 -Encoding: 787 787 106 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 367<-268 -237> -VStem: -266 180<1564 1636> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --356 1270 m 1,0,1 - -268 1364 -268 1364 -268 1460 c 0,2,3 - -268 1475 -268 1475 -271 1509 c 128,-1,4 - -274 1543 -274 1543 -274 1563 c 0,5,6 - -274 1600 -274 1600 -266 1636 c 1,7,-1 - -86 1636 l 1,8,9 - -101 1572 -101 1572 -117.5 1519.5 c 128,-1,10 - -134 1467 -134 1467 -145 1436 c 128,-1,11 - -156 1405 -156 1405 -174.5 1372.5 c 128,-1,12 - -193 1340 -193 1340 -199.5 1331 c 128,-1,13 - -206 1322 -206 1322 -226.5 1297 c 128,-1,14 - -247 1272 -247 1272 -248 1270 c 1,15,-1 - -356 1270 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0314 -Encoding: 788 788 107 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 367<-351 -262> -VStem: -375 113<1271 1503> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --162 1636 m 1,0,1 - -171 1596 -171 1596 -189 1557.5 c 128,-1,2 - -207 1519 -207 1519 -222.5 1495 c 128,-1,3 - -238 1471 -238 1471 -250 1435.5 c 128,-1,4 - -262 1400 -262 1400 -262 1362 c 0,5,6 - -262 1322 -262 1322 -240 1270 c 1,7,-1 - -348 1270 l 1,8,9 - -350 1276 -350 1276 -356 1293.5 c 128,-1,10 - -362 1311 -362 1311 -365.5 1322.5 c 128,-1,11 - -369 1334 -369 1334 -372 1356 c 128,-1,12 - -375 1378 -375 1378 -375 1403 c 0,13,14 - -375 1489 -375 1489 -342 1636 c 1,15,-1 - -162 1636 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0326 -Encoding: 806 806 108 -Width: 0 -VWidth: 0 -Flags: W -HStem: -401 49<-827 -675> -164 57<-696 -632> -VStem: -612 160<-313 -176> -AnchorPoint: "cedilla" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --827 -352 m 17,0,1 - -612 -352 -612 -352 -612 -233 c 0,2,3 - -612 -203 -612 -203 -634.5 -187.5 c 128,-1,4 - -657 -172 -657 -172 -709 -164 c 1,5,-1 - -696 -106 l 1,6,7 - -588 -106 -588 -106 -520.5 -141.5 c 128,-1,8 - -453 -177 -453 -177 -453 -231 c 0,9,10 - -453 -259 -453 -259 -473.5 -287 c 128,-1,11 - -494 -315 -494 -315 -536 -341.5 c 128,-1,12 - -578 -368 -578 -368 -656.5 -384.5 c 128,-1,13 - -735 -401 -735 -401 -838 -401 c 1,14,-1 - -827 -352 l 17,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0327 -Encoding: 807 807 109 -Width: 0 -VWidth: 0 -Flags: W -HStem: -401 49<-827 -680> -41 41G<-676 -520> -VStem: -612 162<-312 -178> -AnchorPoint: "cedilla" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --827 -352 m 1,0,1 - -612 -352 -612 -352 -612 -236 c 0,2,3 - -612 -173 -612 -173 -725 -164 c 1,4,-1 - -659 0 l 1,5,-1 - -520 0 l 1,6,-1 - -561 -113 l 1,7,8 - -511 -124 -511 -124 -481 -151.5 c 128,-1,9 - -451 -179 -451 -179 -451 -221 c 0,10,11 - -451 -281 -451 -281 -509.5 -323.5 c 128,-1,12 - -568 -366 -568 -366 -652.5 -383.5 c 128,-1,13 - -737 -401 -737 -401 -838 -401 c 1,14,-1 - -827 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0328 -Encoding: 808 808 110 -Width: 0 -VWidth: 0 -Flags: W -HStem: -319 37<-583 -504> -VStem: -774 152<-267 -104> -AnchorPoint: "ogonek" -483 0 mark 0 -LayerCount: 2 -Fore -SplineSet --477 25 m 9,0,-1 - -483 0 l 1,1,2 - -525 -18 -525 -18 -574 -72 c 128,-1,3 - -623 -126 -623 -126 -623 -193 c 0,4,5 - -623 -283 -623 -283 -496 -283 c 1,6,-1 - -504 -319 l 1,7,8 - -647 -319 -647 -319 -710.5 -285 c 128,-1,9 - -774 -251 -774 -251 -774 -203 c 0,10,11 - -774 -186 -774 -186 -769 -168.5 c 128,-1,12 - -764 -151 -764 -151 -745.5 -124 c 128,-1,13 - -727 -97 -727 -97 -697 -73 c 128,-1,14 - -667 -49 -667 -49 -610 -22 c 128,-1,15 - -553 5 -553 5 -477 25 c 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0237 -Encoding: 567 567 111 -Width: 438 -VWidth: 0 -Flags: W -HStem: -348 102<-200 13> 860 41G<281 547> -AnchorPoint: "top" 440 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet --152 -195 m 1,0,1 - -130 -246 -130 -246 -55 -246 c 0,2,3 - -7 -246 -7 -246 22 -190.5 c 128,-1,4 - 51 -135 51 -135 82 0 c 2,5,-1 - 291 901 l 1,6,-1 - 547 901 l 1,7,-1 - 322 -68 l 2,8,9 - 306 -140 306 -140 256.5 -196.5 c 128,-1,10 - 207 -253 207 -253 142.5 -284.5 c 128,-1,11 - 78 -316 78 -316 13.5 -332 c 128,-1,12 - -51 -348 -51 -348 -109 -348 c 0,13,14 - -238 -348 -238 -348 -295 -256 c 1,15,-1 - -152 -195 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: dotlessi -Encoding: 305 305 112 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41G<291 555> -VStem: 133 254<83 364> 520 70<96 131> -AnchorPoint: "top" 457 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -410 276 m 6,0,1 - 387 178 387 178 387 143 c 0,2,3 - 387 82 387 82 442 82 c 0,4,5 - 466 82 466 82 488.5 98 c 128,-1,6 - 511 114 511 114 520 131 c 1,7,-1 - 590 131 l 1,8,9 - 576 73 576 73 516 26.5 c 128,-1,10 - 456 -20 456 -20 391 -20 c 0,11,12 - 268 -20 268 -20 200.5 31.5 c 128,-1,13 - 133 83 133 83 133 164 c 0,14,15 - 133 189 133 189 139 213 c 2,16,-1 - 301 901 l 1,17,-1 - 555 901 l 1,18,-1 - 410 276 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: agrave -Encoding: 224 224 113 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1065 403 -VStem: 154 246<136 485> 610 319 690 262<96 373> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 92 768 S 1 0 0 1 983 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: egrave -Encoding: 232 232 114 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1065 403 -VStem: 150 246<143 446> 541 319 799 233<561 763> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 913 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: igrave -Encoding: 236 236 115 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1065 403 -VStem: 133 254<83 364> 264 319 520 70<96 131> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 637 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ograve -Encoding: 242 242 116 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1065 403 -VStem: 147 244<117 508> 545 319 821 244<380 773> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 918 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ugrave -Encoding: 249 249 117 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1065 403 -VStem: 154 256<105 501> 522 319 668 260<101 364> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 895 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: aacute -Encoding: 225 225 118 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1065 403 -VStem: 154 246<136 485> 690 262<96 373> 729 422 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1116 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: eacute -Encoding: 233 233 119 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1065 403 -VStem: 150 246<143 446> 659 422 799 233<561 763> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: iacute -Encoding: 237 237 120 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1065 403 -VStem: 133 254<83 364> 383 422 520 70<96 131> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 770 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: oacute -Encoding: 243 243 121 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1065 403 -VStem: 147 244<117 508> 664 422 821 244<380 773> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uacute -Encoding: 250 250 122 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1065 403 -VStem: 154 256<105 501> 641 422 668 260<101 364> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1028 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: yacute -Encoding: 253 253 123 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<97 251> 860 41<270 497 901 1090> 1065 403 -VStem: 635 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1022 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: acircumflex -Encoding: 226 226 124 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1073 299 -VStem: 154 246<136 485> 565 551 690 262<96 373> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1116 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ecircumflex -Encoding: 234 234 125 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1073 299 -VStem: 150 246<143 446> 496 551 799 233<561 763> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: icircumflex -Encoding: 238 238 126 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1073 299 -VStem: 133 254<83 364> 219 551 520 70<96 131> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 770 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ocircumflex -Encoding: 244 244 127 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1073 299 -VStem: 147 244<117 508> 500 551 821 244<380 773> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ucircumflex -Encoding: 251 251 128 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1073 299 -VStem: 154 256<105 501> 477 551 668 260<101 364> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1028 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: atilde -Encoding: 227 227 129 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1085 141<866 1043> 1151 141<667 845> -VStem: 154 246<136 485> 549 612 690 262<96 373> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1116 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ntilde -Encoding: 241 241 130 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<184 450 729 994> 819 102<226 400 616 855> 1085 141<817 994> 1151 141<618 796> -VStem: 150 70<770 809> 346 260<527 780> 500 612 872 246<427 804> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1067 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: otilde -Encoding: 245 245 131 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1085 141<800 978> 1151 141<602 779> -VStem: 147 244<117 508> 483 612 821 244<380 773> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: adieresis -Encoding: 228 228 132 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1085 170<629 760 915 1047> -VStem: 154 246<136 485> 590 209 690 262<96 373> 877 209 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1116 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: aring -Encoding: 229 229 133 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 983 72<756 891> 1223 72<776 912> -VStem: 154 246<136 485> 674 74<1061 1195> 690 262<96 373> 920 74<1082 1216> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 100 778 N 1 0 0 1 1116 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: edieresis -Encoding: 235 235 134 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1085 170<559 690 846 977> -VStem: 150 246<143 446> 520 209 799 233<561 763> 807 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: idieresis -Encoding: 239 239 135 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1085 170<283 414 569 700> -VStem: 133 254<83 364> 244 209 520 70<96 131> 530 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 770 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: odieresis -Encoding: 246 246 136 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1085 170<563 694 850 981> -VStem: 147 244<117 508> 524 209 811 209 821 244<380 773> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: udieresis -Encoding: 252 252 137 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1085 170<541 672 827 958> -VStem: 154 256<105 501> 502 209 668 260<101 364> 788 209 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1028 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Agrave -Encoding: 192 192 138 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1495 403 -VStem: 782 319 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1155 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Aacute -Encoding: 193 193 139 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1495 403 -VStem: 901 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Acircumflex -Encoding: 194 194 140 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1503 299 -VStem: 737 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Atilde -Encoding: 195 195 141 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1516 141<1038 1215> 1581 141<840 1017> -VStem: 721 612 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Adieresis -Encoding: 196 196 142 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1516 170<801 932 1087 1219> -VStem: 762 209 1049 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Aring -Encoding: 197 197 143 -Width: 1275 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 21G<31 277.902 1017.32 1255> 410 102<571 952> 1653 72<946.91 1083.84> -VStem: 846 73<1491.72 1624.17> 1091 75<1511.87 1647.23> -LayerCount: 2 -Fore -SplineSet -897 1434 m 1,0,1 - 846 1472 846 1472 846 1541.5 c 128,-1,2 - 846 1611 846 1611 908 1668 c 128,-1,3 - 970 1725 970 1725 1033.5 1725 c 128,-1,4 - 1097 1725 1097 1725 1131.5 1691 c 128,-1,5 - 1166 1657 1166 1657 1166 1592 c 2,6,-1 - 1166 1591 l 2,7,8 - 1166 1527 1166 1527 1104 1470 c 0,9,10 - 1080 1448 1080 1448 1054 1434 c 1,11,-1 - 1065 1434 l 1,12,-1 - 1255 0 l 1,13,-1 - 1020 0 l 1,14,-1 - 965 410 l 1,15,-1 - 510 410 l 1,16,-1 - 266 0 l 1,17,-1 - 31 0 l 1,18,-1 - 885 1434 l 1,19,-1 - 897 1434 l 1,0,1 -1091 1580 m 0,20,21 - 1091 1653 1091 1653 1021 1653 c 0,22,23 - 987 1653 987 1653 953 1623 c 128,-1,24 - 919 1593 919 1593 919 1558 c 0,25,26 - 919 1485 919 1485 991 1485 c 0,27,28 - 1025 1485 1025 1485 1058 1515 c 128,-1,29 - 1091 1545 1091 1545 1091 1580 c 0,20,21 -883 1034 m 1,30,-1 - 571 512 l 1,31,-1 - 952 512 l 1,32,-1 - 883 1034 l 1,30,-1 -EndSplineSet -EndChar - -StartChar: Egrave -Encoding: 200 200 144 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1495 403 -VStem: 662 319 -LayerCount: 2 -Fore -Refer: 92 768 S 1 0 0 1 1034 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Eacute -Encoding: 201 201 145 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1495 403 -VStem: 780 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1167 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ecircumflex -Encoding: 202 202 146 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1503 299 -VStem: 616 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1167 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Edieresis -Encoding: 203 203 147 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1516 170<680 811 967 1098> -VStem: 641 209 928 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1167 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Igrave -Encoding: 204 204 148 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1495 403 -VStem: 92 598 367 319 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 739 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Iacute -Encoding: 205 205 149 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1495 403 -VStem: 92 598 485 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 872 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Icircumflex -Encoding: 206 206 150 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1503 299 -VStem: 92 598 322 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 872 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Idieresis -Encoding: 207 207 151 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1516 170<385 516 672 803> -VStem: 92 598 346 209 633 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 872 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ntilde -Encoding: 209 209 152 -Width: 1261 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 878 1165> 1393 41<414 703 1211 1487> 1516 141<1030 1207> 1581 141<831 1009> -VStem: 713 612 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1280 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ograve -Encoding: 210 210 153 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1495 403 -VStem: 199 258<251 749> 805 319 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1178 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Oacute -Encoding: 211 211 154 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1495 403 -VStem: 199 258<251 749> 924 422 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ocircumflex -Encoding: 212 212 155 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1503 299 -VStem: 199 258<251 749> 760 551 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Otilde -Encoding: 213 213 156 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1516 141<1060 1238> 1581 141<862 1039> -VStem: 199 258<251 749> 743 612 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Odieresis -Encoding: 214 214 157 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1516 170<823 954 1110 1241> -VStem: 199 258<251 749> 784 209 1071 209 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ugrave -Encoding: 217 217 158 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1495 403 -VStem: 176 254<182 636> 766 319 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1139 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Uacute -Encoding: 218 218 159 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1495 403 -VStem: 176 254<182 636> 885 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ucircumflex -Encoding: 219 219 160 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1503 299 -VStem: 176 254<182 636> 721 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Udieresis -Encoding: 220 220 161 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1516 170<784 915 1071 1202> -VStem: 176 254<182 636> 745 209 1032 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Yacute -Encoding: 221 221 162 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<406 681> 1393 41<377 646 1112 1327> 1495 403 -VStem: 795 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1182 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Thorn -Encoding: 222 222 163 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368> 328 102<457 683> 1004 102<614 805> 1393 41G<414 690> -VStem: 866 266<623 944> -LayerCount: 2 -Fore -SplineSet -1133 801 m 0,0,1 - 1133 739 1133 739 1110.5 674 c 128,-1,2 - 1088 609 1088 609 1042 547 c 128,-1,3 - 996 485 996 485 932.5 436 c 128,-1,4 - 869 387 869 387 779.5 357.5 c 128,-1,5 - 690 328 690 328 588 328 c 2,6,-1 - 434 328 l 1,7,-1 - 358 0 l 1,8,-1 - 92 0 l 1,9,-1 - 424 1434 l 1,10,-1 - 690 1434 l 1,11,-1 - 614 1106 l 1,12,-1 - 768 1106 l 2,13,14 - 866 1106 866 1106 939.5 1079.5 c 128,-1,15 - 1013 1053 1013 1053 1054 1008 c 128,-1,16 - 1095 963 1095 963 1114 911 c 128,-1,17 - 1133 859 1133 859 1133 801 c 0,0,1 -549 430 m 2,18,19 - 617 430 617 430 678 464.5 c 128,-1,20 - 739 499 739 499 779 553 c 128,-1,21 - 819 607 819 607 842.5 672.5 c 128,-1,22 - 866 738 866 738 866 801 c 0,23,24 - 866 887 866 887 821.5 945.5 c 128,-1,25 - 777 1004 777 1004 682 1004 c 2,26,-1 - 590 1004 l 1,27,-1 - 457 430 l 1,28,-1 - 549 430 l 2,18,19 -EndSplineSet -Validated: 1 -EndChar - -StartChar: thorn -Encoding: 254 254 164 -Width: 1138 -VWidth: 0 -Flags: W -HStem: 0 102<428 605> 823 102<672 919> -VStem: 944 252<461 802> -LayerCount: 2 -Fore -SplineSet -403 0 m 1,0,-1 - 309 -410 l 1,1,-1 - 53 -410 l 1,2,-1 - 459 1352 l 1,3,-1 - 715 1352 l 1,4,-1 - 604 866 l 1,5,6 - 713 926 713 926 821 926 c 0,7,8 - 1196 926 1196 926 1196 674 c 0,9,10 - 1196 490 1196 490 1092 337.5 c 128,-1,11 - 988 185 988 185 806.5 96 c 128,-1,12 - 625 7 625 7 403 0 c 1,0,-1 -428 102 m 1,13,14 - 567 105 567 105 686 184.5 c 128,-1,15 - 805 264 805 264 874.5 398.5 c 128,-1,16 - 944 533 944 533 944 690 c 0,17,18 - 944 823 944 823 829 823 c 0,19,20 - 698 823 698 823 627 743.5 c 128,-1,21 - 556 664 556 664 520 508 c 2,22,-1 - 428 102 l 1,13,14 -EndSplineSet -Validated: 1 -EndChar - -StartChar: multiply -Encoding: 215 215 165 -Width: 856 -VWidth: 0 -Flags: W -HStem: 229 561 -VStem: 217 657 -LayerCount: 2 -Fore -SplineSet -616 510 m 1,0,-1 - 778 301 l 1,1,-1 - 690 229 l 1,2,-1 - 528 438 l 1,3,-1 - 272 229 l 1,4,-1 - 217 301 l 1,5,-1 - 473 510 l 1,6,-1 - 313 719 l 1,7,-1 - 401 791 l 1,8,-1 - 563 582 l 1,9,-1 - 819 791 l 1,10,-1 - 874 719 l 1,11,-1 - 616 510 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Oslash -Encoding: 216 216 166 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<573 844> 0 43G<289 498> 1352 102<823 1118> 1393 41G<1190 1403> -VStem: 199 258<294 748> 1235 256<700 1145> -LayerCount: 2 -Fore -SplineSet -969 1352 m 0,0,1 - 875 1352 875 1352 790.5 1286.5 c 128,-1,2 - 706 1221 706 1221 646.5 1119 c 128,-1,3 - 587 1017 587 1017 543 893 c 128,-1,4 - 499 769 499 769 478 650.5 c 128,-1,5 - 457 532 457 532 457 436 c 0,6,7 - 457 357 457 357 473 291 c 1,8,-1 - 1120 1309 l 1,9,10 - 1059 1352 1059 1352 969 1352 c 0,0,1 -694 82 m 0,11,12 - 800 82 800 82 892.5 151.5 c 128,-1,13 - 985 221 985 221 1046 326.5 c 128,-1,14 - 1107 432 1107 432 1151 560 c 128,-1,15 - 1195 688 1195 688 1215 804 c 128,-1,16 - 1235 920 1235 920 1235 1010 c 0,17,18 - 1235 1085 1235 1085 1219 1147 c 1,19,-1 - 571 125 l 1,20,21 - 626 82 626 82 694 82 c 0,11,12 -1190 1419 m 1,22,-1 - 1200 1434 l 1,23,-1 - 1403 1434 l 1,24,-1 - 1337 1333 l 1,25,26 - 1491 1199 1491 1199 1491 948 c 0,27,28 - 1491 863 1491 863 1475 772 c 128,-1,29 - 1459 681 1459 681 1425 586 c 128,-1,30 - 1391 491 1391 491 1342.5 403.5 c 128,-1,31 - 1294 316 1294 316 1224.5 238.5 c 128,-1,32 - 1155 161 1155 161 1072.5 103.5 c 128,-1,33 - 990 46 990 46 883.5 13 c 128,-1,34 - 777 -20 777 -20 659 -20 c 0,35,36 - 569 -20 569 -20 498 8 c 1,37,-1 - 492 0 l 1,38,-1 - 289 0 l 1,39,-1 - 350 96 l 1,40,41 - 199 237 199 237 199 487 c 0,42,43 - 199 624 199 624 237 763.5 c 128,-1,44 - 275 903 275 903 347 1026 c 128,-1,45 - 419 1149 419 1149 513.5 1245.5 c 128,-1,46 - 608 1342 608 1342 730 1398 c 128,-1,47 - 852 1454 852 1454 981 1454 c 0,48,49 - 1102 1454 1102 1454 1190 1419 c 1,22,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: oslash -Encoding: 248 248 167 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<451 637> 819 102<585 771> -VStem: 147 244<206 505> 821 242<381 686> -LayerCount: 2 -Fore -SplineSet -1063 594 m 0,0,1 - 1063 524 1063 524 1045.5 447 c 128,-1,2 - 1028 370 1028 370 984.5 285.5 c 128,-1,3 - 941 201 941 201 877 134 c 128,-1,4 - 813 67 813 67 709.5 23.5 c 128,-1,5 - 606 -20 606 -20 479 -20 c 0,6,7 - 431 -20 431 -20 379 -10 c 1,8,-1 - 319 -102 l 1,9,-1 - 199 -102 l 1,10,-1 - 281 27 l 1,11,12 - 147 108 147 108 147 299 c 0,13,14 - 147 429 147 429 197.5 547.5 c 128,-1,15 - 248 666 248 666 327 746.5 c 128,-1,16 - 406 827 406 827 504 874.5 c 128,-1,17 - 602 922 602 922 696 922 c 0,18,19 - 770 922 770 922 838 903 c 1,20,-1 - 901 1004 l 1,21,-1 - 1022 1004 l 1,22,-1 - 932 862 l 1,23,24 - 1063 779 1063 779 1063 594 c 0,0,1 -393 205 m 1,25,-1 - 772 801 l 1,26,27 - 748 819 748 819 702 819 c 0,28,29 - 631 819 631 819 574 768 c 128,-1,30 - 517 717 517 717 484 644.5 c 128,-1,31 - 451 572 451 572 429 487 c 128,-1,32 - 407 402 407 402 399 340.5 c 128,-1,33 - 391 279 391 279 391 242 c 0,34,35 - 391 236 391 236 392 223.5 c 128,-1,36 - 393 211 393 211 393 205 c 1,25,-1 -451 102 m 1,37,38 - 480 82 480 82 532 82 c 0,39,40 - 601 82 601 82 656 138.5 c 128,-1,41 - 711 195 711 195 740.5 271.5 c 128,-1,42 - 770 348 770 348 789.5 437.5 c 128,-1,43 - 809 527 809 527 815 582.5 c 128,-1,44 - 821 638 821 638 821 662 c 0,45,46 - 821 678 821 678 819 686 c 1,47,-1 - 451 102 l 1,37,38 -EndSplineSet -Validated: 1 -EndChar - -StartChar: AE -Encoding: 198 198 168 -Width: 1813 -VWidth: 0 -Flags: W -HStem: 0 102<1160 1730> 410 102<579 964> 799 102<1344 1696> 1331 103<1067 1177 1443 2004> -AnchorPoint: "horn" 1951 1384 basechar 0 -AnchorPoint: "cedilla" 982 0 basechar 0 -AnchorPoint: "bottom" 1005 0 basechar 0 -AnchorPoint: "ogonek" 1533 0 basechar 0 -AnchorPoint: "top" 1360 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -987 512 m 1,0,-1 - 1177 1332 l 1,1,-1 - 1067 1332 l 1,2,-1 - 579 512 l 1,3,-1 - 987 512 l 1,0,-1 -964 410 m 1,4,-1 - 519 410 l 1,5,-1 - 274 0 l 1,6,-1 - 39 0 l 1,7,-1 - 892 1434 l 1,8,-1 - 2028 1434 l 1,9,-1 - 2004 1331 l 1,10,-1 - 1443 1331 l 1,11,-1 - 1344 901 l 1,12,-1 - 1720 901 l 1,13,-1 - 1696 799 l 1,14,-1 - 1320 799 l 1,15,-1 - 1160 102 l 1,16,-1 - 1754 102 l 1,17,-1 - 1730 0 l 1,18,-1 - 869 0 l 1,19,-1 - 964 410 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ae -Encoding: 230 230 169 -Width: 1478 -VWidth: 0 -Flags: W -HStem: -20 102<404 599 952 1219> 451 102<963 1304> 520 102<488 694> 819 102<492 708 1089 1295> -VStem: 127 256<101 396> 1313 233<554 763> -AnchorPoint: "top" 991 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -127 211 m 0,0,1 - 127 273 127 273 144 331.5 c 128,-1,2 - 161 390 161 390 198 443 c 128,-1,3 - 235 496 235 496 287.5 536 c 128,-1,4 - 340 576 340 576 417.5 599.5 c 128,-1,5 - 495 623 495 623 588 623 c 0,6,7 - 646 623 646 623 711 616 c 1,8,9 - 719 665 719 665 719 709 c 0,10,11 - 719 768 719 768 698 793.5 c 128,-1,12 - 677 819 677 819 631 819 c 0,13,14 - 524 819 524 819 428 723 c 1,15,-1 - 281 829 l 1,16,17 - 478 922 478 922 625 922 c 0,18,19 - 759 922 759 922 834 901 c 128,-1,20 - 909 880 909 880 942 829 c 1,21,22 - 1078 922 1078 922 1210 922 c 0,23,24 - 1294 922 1294 922 1360 893.5 c 128,-1,25 - 1426 865 1426 865 1466 815.5 c 128,-1,26 - 1506 766 1506 766 1526 704 c 128,-1,27 - 1546 642 1546 642 1546 571 c 0,28,29 - 1546 523 1546 523 1532 451 c 1,30,-1 - 936 451 l 1,31,32 - 909 330 909 330 909 262 c 0,33,34 - 909 172 909 172 950.5 127 c 128,-1,35 - 992 82 992 82 1087 82 c 0,36,37 - 1161 82 1161 82 1203 113 c 128,-1,38 - 1245 144 1245 144 1270 205 c 1,39,-1 - 1454 158 l 1,40,41 - 1370 76 1370 76 1262.5 28 c 128,-1,42 - 1155 -20 1155 -20 1034 -20 c 0,43,44 - 873 -20 873 -20 774 63 c 1,45,46 - 736 51 736 51 687 35 c 128,-1,47 - 638 19 638 19 620.5 13 c 128,-1,48 - 603 7 603 7 574.5 -1.5 c 128,-1,49 - 546 -10 546 -10 536.5 -12 c 128,-1,50 - 527 -14 527 -14 508 -16.5 c 128,-1,51 - 489 -19 489 -19 475.5 -19.5 c 128,-1,52 - 462 -20 462 -20 440 -20 c 0,53,54 - 127 -20 127 -20 127 211 c 0,0,1 -963 553 m 1,55,-1 - 1296 553 l 1,56,57 - 1313 643 1313 643 1313 694 c 0,58,59 - 1313 755 1313 755 1291.5 787 c 128,-1,60 - 1270 819 1270 819 1217 819 c 0,61,62 - 1124 819 1124 819 1063.5 751.5 c 128,-1,63 - 1003 684 1003 684 963 553 c 1,55,-1 -596 520 m 128,-1,65 - 548 520 548 520 509 495.5 c 128,-1,66 - 470 471 470 471 447.5 435 c 128,-1,67 - 425 399 425 399 409.5 355 c 128,-1,68 - 394 311 394 311 388.5 275 c 128,-1,69 - 383 239 383 239 383 211 c 0,70,71 - 383 82 383 82 494 82 c 0,72,73 - 548 82 548 82 598 98 c 1,74,-1 - 694 514 l 1,75,64 - 644 520 644 520 596 520 c 128,-1,65 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eth -Encoding: 240 240 170 -Width: 1007 -VWidth: 0 -Flags: W -HStem: -20 102<465 645> 819 102<606 787> -VStem: 172 252<144 545> 807 258<383 805> -LayerCount: 2 -Fore -SplineSet -172 330 m 0,0,1 - 172 400 172 400 193 478.5 c 128,-1,2 - 214 557 214 557 258.5 636.5 c 128,-1,3 - 303 716 303 716 364.5 779 c 128,-1,4 - 426 842 426 842 516 882 c 128,-1,5 - 606 922 606 922 709 922 c 0,6,7 - 765 922 765 922 831 905 c 1,8,9 - 819 1030 819 1030 760 1126 c 1,10,-1 - 643 1044 l 1,11,-1 - 608 1100 l 1,12,-1 - 721 1180 l 1,13,14 - 675 1234 675 1234 612 1286 c 1,15,-1 - 737 1380 l 1,16,17 - 787 1332 787 1332 844 1266 c 1,18,-1 - 965 1352 l 1,19,-1 - 999 1294 l 1,20,-1 - 885 1212 l 1,21,22 - 1065 962 1065 962 1065 672 c 0,23,24 - 1065 358 1065 358 905.5 169 c 128,-1,25 - 746 -20 746 -20 492 -20 c 0,26,27 - 347 -20 347 -20 259.5 79 c 128,-1,28 - 172 178 172 178 172 330 c 0,0,1 -715 819 m 0,29,30 - 645 819 645 819 587 762 c 128,-1,31 - 529 705 529 705 495 621 c 128,-1,32 - 461 537 461 537 442.5 451 c 128,-1,33 - 424 365 424 365 424 297 c 0,34,35 - 424 202 424 202 454.5 142 c 128,-1,36 - 485 82 485 82 545 82 c 0,37,38 - 606 82 606 82 655 130 c 128,-1,39 - 704 178 704 178 731.5 246.5 c 128,-1,40 - 759 315 759 315 777 399.5 c 128,-1,41 - 795 484 795 484 801 548.5 c 128,-1,42 - 807 613 807 613 807 662 c 0,43,44 - 807 819 807 819 715 819 c 0,29,30 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ccedilla -Encoding: 199 199 171 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -401 49<479 627> -41 41<631 786> -20 102<601 928> 1331 102<832 1172> -VStem: 201 260<280 770> 694 162<-312 -178> -LayerCount: 2 -Fore -SplineSet -479 -352 m 1,0,1 - 694 -352 694 -352 694 -236 c 0,2,3 - 694 -173 694 -173 582 -164 c 1,4,-1 - 640 -17 l 1,5,6 - 586 -11 586 -11 533.5 7.5 c 128,-1,7 - 481 26 481 26 431.5 55.5 c 128,-1,8 - 382 85 382 85 340.5 129.5 c 128,-1,9 - 299 174 299 174 267.5 229 c 128,-1,10 - 236 284 236 284 218.5 356 c 128,-1,11 - 201 428 201 428 201 510 c 0,12,13 - 201 617 201 617 228 728 c 128,-1,14 - 255 839 255 839 304 941 c 128,-1,15 - 353 1043 353 1043 425.5 1133 c 128,-1,16 - 498 1223 498 1223 584 1290 c 128,-1,17 - 670 1357 670 1357 776 1395.5 c 128,-1,18 - 882 1434 882 1434 993 1434 c 0,19,20 - 1382 1434 1382 1434 1489 1245 c 1,21,-1 - 1249 1178 l 1,22,23 - 1229 1221 1229 1221 1214.5 1243.5 c 128,-1,24 - 1200 1266 1200 1266 1172.5 1289.5 c 128,-1,25 - 1145 1313 1145 1313 1103.5 1322 c 128,-1,26 - 1062 1331 1062 1331 999 1331 c 0,27,28 - 911 1331 911 1331 834.5 1292.5 c 128,-1,29 - 758 1254 758 1254 704 1192 c 128,-1,30 - 650 1130 650 1130 607 1048 c 128,-1,31 - 564 966 564 966 537.5 883 c 128,-1,32 - 511 800 511 800 493 716.5 c 128,-1,33 - 475 633 475 633 468 571 c 128,-1,34 - 461 509 461 509 461 465 c 0,35,36 - 461 275 461 275 543 178.5 c 128,-1,37 - 625 82 625 82 750 82 c 0,38,39 - 808 82 808 82 852 93 c 128,-1,40 - 896 104 896 104 935.5 130.5 c 128,-1,41 - 975 157 975 157 1004 185 c 128,-1,42 - 1033 213 1033 213 1077 264 c 1,43,-1 - 1257 209 l 1,44,45 - 1166 120 1166 120 1042.5 59.5 c 128,-1,46 - 919 -1 919 -1 781 -16 c 1,47,-1 - 745 -113 l 1,48,49 - 795 -124 795 -124 825.5 -151.5 c 128,-1,50 - 856 -179 856 -179 856 -221 c 0,51,52 - 856 -281 856 -281 797.5 -323.5 c 128,-1,53 - 739 -366 739 -366 654.5 -383.5 c 128,-1,54 - 570 -401 570 -401 469 -401 c 1,55,-1 - 479 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ccedilla -Encoding: 231 231 172 -Width: 944 -VWidth: 0 -Flags: W -HStem: -401 49<303 451> -41 41<455 610> -20 102<439 698> 819 102<587 786> -VStem: 150 246<143 528> 518 162<-312 -178> 801 219<671 782> -LayerCount: 2 -Fore -SplineSet -303 -352 m 1,0,1 - 518 -352 518 -352 518 -236 c 0,2,3 - 518 -173 518 -173 406 -164 c 1,4,-1 - 464 -18 l 1,5,6 - 318 -3 318 -3 234 88 c 128,-1,7 - 150 179 150 179 150 324 c 0,8,9 - 150 443 150 443 199.5 555.5 c 128,-1,10 - 249 668 249 668 327.5 747.5 c 128,-1,11 - 406 827 406 827 504 874.5 c 128,-1,12 - 602 922 602 922 696 922 c 0,13,14 - 830 922 830 922 912 854.5 c 128,-1,15 - 994 787 994 787 1020 676 c 1,16,-1 - 801 608 l 1,17,18 - 800 627 800 627 799.5 665 c 128,-1,19 - 799 703 799 703 798 718.5 c 128,-1,20 - 797 734 797 734 791.5 758.5 c 128,-1,21 - 786 783 786 783 776.5 793 c 128,-1,22 - 767 803 767 803 748.5 811 c 128,-1,23 - 730 819 730 819 702 819 c 0,24,25 - 629 819 629 819 571 766.5 c 128,-1,26 - 513 714 513 714 481.5 642 c 128,-1,27 - 450 570 450 570 429 485 c 128,-1,28 - 408 400 408 400 401.5 345 c 128,-1,29 - 395 290 395 290 395 262 c 0,30,31 - 395 172 395 172 436.5 127 c 128,-1,32 - 478 82 478 82 573 82 c 0,33,34 - 592 82 592 82 609 84.5 c 128,-1,35 - 626 87 626 87 638 90 c 128,-1,36 - 650 93 650 93 663.5 101.5 c 128,-1,37 - 677 110 677 110 684.5 114.5 c 128,-1,38 - 692 119 692 119 705.5 133.5 c 128,-1,39 - 719 148 719 148 723.5 153.5 c 128,-1,40 - 728 159 728 159 744 178.5 c 128,-1,41 - 760 198 760 198 766 205 c 1,42,-1 - 940 158 l 1,43,44 - 793 15 793 15 605 -14 c 1,45,-1 - 569 -113 l 1,46,47 - 619 -124 619 -124 649.5 -151.5 c 128,-1,48 - 680 -179 680 -179 680 -221 c 0,49,50 - 680 -281 680 -281 621.5 -323.5 c 128,-1,51 - 563 -366 563 -366 478.5 -383.5 c 128,-1,52 - 394 -401 394 -401 293 -401 c 1,53,-1 - 303 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Eth -Encoding: 208 208 173 -Width: 1216 -VWidth: 0 -Flags: W -HStem: 0 102<383 690> 692 102<203 252 543 791> 1331 102<666 966> -VStem: 1065 264<718 1227> -LayerCount: 2 -Fore -SplineSet -1329 1020 m 0,0,1 - 1329 962 1329 962 1319.5 885.5 c 128,-1,2 - 1310 809 1310 809 1285.5 710 c 128,-1,3 - 1261 611 1261 611 1224.5 514.5 c 128,-1,4 - 1188 418 1188 418 1128.5 324 c 128,-1,5 - 1069 230 1069 230 995 159 c 128,-1,6 - 921 88 921 88 815.5 44 c 128,-1,7 - 710 0 710 0 588 0 c 2,8,-1 - 92 0 l 1,9,-1 - 252 692 l 1,10,-1 - 178 692 l 1,11,-1 - 203 795 l 1,12,-1 - 276 795 l 1,13,-1 - 424 1434 l 1,14,-1 - 920 1434 l 2,15,16 - 1329 1434 1329 1434 1329 1020 c 0,0,1 -518 692 m 1,17,-1 - 383 102 l 1,18,-1 - 551 102 l 2,19,20 - 636 102 636 102 712.5 153 c 128,-1,21 - 789 204 789 204 843 287 c 128,-1,22 - 897 370 897 370 941 470.5 c 128,-1,23 - 985 571 985 571 1011.5 676 c 128,-1,24 - 1038 781 1038 781 1051.5 870 c 128,-1,25 - 1065 959 1065 959 1065 1024 c 0,26,27 - 1065 1185 1065 1185 1002 1258 c 128,-1,28 - 939 1331 939 1331 834 1331 c 2,29,-1 - 666 1331 l 1,30,-1 - 543 795 l 1,31,-1 - 815 795 l 1,32,-1 - 791 692 l 1,33,-1 - 518 692 l 1,17,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: germandbls -Encoding: 223 223 174 -Width: 1026 -VWidth: 0 -Flags: W -HStem: -276 102<-78 40> 799 102<557 805> 1270 102<684 879> -VStem: -154 74<-170 -125> 719 240<31 295> -LayerCount: 2 -Fore -SplineSet -424 -152 m 1,0,1 - 436 -148 436 -148 456 -140.5 c 128,-1,2 - 476 -133 476 -133 526.5 -106 c 128,-1,3 - 577 -79 577 -79 616 -47.5 c 128,-1,4 - 655 -16 655 -16 687 36 c 128,-1,5 - 719 88 719 88 719 145 c 0,6,7 - 719 191 719 191 699.5 242.5 c 128,-1,8 - 680 294 680 294 652 334 c 128,-1,9 - 624 374 624 374 596 408 c 0,10,11 - 568 442 568 442 548 460 c 2,12,-1 - 528 479 l 1,13,-1 - 805 799 l 1,14,-1 - 532 799 l 1,15,-1 - 338 -43 l 2,16,17 - 315 -147 315 -147 224.5 -211.5 c 128,-1,18 - 134 -276 134 -276 -20 -276 c 0,19,20 - -77 -276 -77 -276 -115.5 -239.5 c 128,-1,21 - -154 -203 -154 -203 -154 -152 c 0,22,23 - -154 -141 -154 -141 -150 -125 c 1,24,-1 - -80 -125 l 1,25,26 - -80 -174 -80 -174 -27 -174 c 0,27,28 - 18 -174 18 -174 46 -123.5 c 128,-1,29 - 74 -73 74 -73 96 20 c 2,30,-1 - 291 864 l 2,31,32 - 317 974 317 974 338.5 1044.5 c 128,-1,33 - 360 1115 360 1115 390.5 1177 c 128,-1,34 - 421 1239 421 1239 455 1272.5 c 128,-1,35 - 489 1306 489 1306 542.5 1330.5 c 128,-1,36 - 596 1355 596 1355 661 1363.5 c 128,-1,37 - 726 1372 726 1372 819 1372 c 0,38,39 - 843 1372 843 1372 863.5 1370 c 128,-1,40 - 884 1368 884 1368 904.5 1362 c 128,-1,41 - 925 1356 925 1356 938.5 1351.5 c 128,-1,42 - 952 1347 952 1347 972.5 1336 c 128,-1,43 - 993 1325 993 1325 1002.5 1320 c 128,-1,44 - 1012 1315 1012 1315 1036 1300 c 128,-1,45 - 1060 1285 1060 1285 1069 1280 c 1,46,-1 - 942 1174 l 1,47,48 - 936 1179 936 1179 918 1194.5 c 128,-1,49 - 900 1210 900 1210 896 1213.5 c 128,-1,50 - 892 1217 892 1217 878 1228 c 128,-1,51 - 864 1239 864 1239 859 1241.5 c 128,-1,52 - 854 1244 854 1244 842.5 1251.5 c 128,-1,53 - 831 1259 831 1259 824.5 1260.5 c 128,-1,54 - 818 1262 818 1262 807 1265.5 c 128,-1,55 - 796 1269 796 1269 786 1269.5 c 128,-1,56 - 776 1270 776 1270 764 1270 c 0,57,58 - 640 1270 640 1270 557 901 c 1,59,-1 - 1108 901 l 1,60,-1 - 764 502 l 1,61,62 - 958 364 958 364 958 178 c 0,63,64 - 958 114 958 114 931 57 c 128,-1,65 - 904 -0 904 -0 860 -40 c 128,-1,66 - 816 -80 816 -80 764 -113 c 128,-1,67 - 712 -146 712 -146 658 -167.5 c 128,-1,68 - 604 -189 604 -189 560.5 -203 c 128,-1,69 - 517 -217 517 -217 487.5 -224.5 c 128,-1,70 - 458 -232 458 -232 457 -233 c 1,71,-1 - 424 -152 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Lcaron -Encoding: 317 317 175 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 1067 367<795 864> 1393 41<404 680> -VStem: 707 309 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 651 1270 2 -Refer: 39 76 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Sacute -Encoding: 346 346 176 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -20 102<527 773> 1352 102<812 1024> 1495 403 -VStem: 207 238<177 350> 430 270<940 1185> 852 422 932 270<279 555> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1239 246 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Scaron -Encoding: 352 352 177 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -20 102<527 773> 1352 102<812 1024> 1384 387 -VStem: 207 238<177 350> 430 270<940 1185> 752 479 932 270<279 555> -LayerCount: 2 -Fore -SplineSet -1202 465 m 0,0,1 - 1202 358 1202 358 1153 266.5 c 128,-1,2 - 1104 175 1104 175 1020.5 113 c 128,-1,3 - 937 51 937 51 824.5 15.5 c 128,-1,4 - 712 -20 712 -20 586 -20 c 0,5,6 - 410 -20 410 -20 310 86.5 c 128,-1,7 - 210 193 210 193 207 350 c 1,8,-1 - 446 381 l 1,9,10 - 444 367 444 367 444 342 c 0,11,12 - 444 234 444 234 497 158 c 128,-1,13 - 550 82 550 82 623 82 c 0,14,15 - 695 82 695 82 752.5 111.5 c 128,-1,16 - 810 141 810 141 842 182.5 c 128,-1,17 - 874 224 874 224 895.5 275.5 c 128,-1,18 - 917 327 917 327 924.5 365.5 c 128,-1,19 - 932 404 932 404 932 432 c 0,20,21 - 932 491 932 491 904.5 538 c 128,-1,22 - 877 585 877 585 832.5 617.5 c 128,-1,23 - 788 650 788 650 734.5 679 c 128,-1,24 - 681 708 681 708 627.5 738.5 c 128,-1,25 - 574 769 574 769 529.5 804 c 128,-1,26 - 485 839 485 839 457.5 892.5 c 128,-1,27 - 430 946 430 946 430 1012 c 0,28,29 - 430 1102 430 1102 471.5 1181.5 c 128,-1,30 - 513 1261 513 1261 580 1315.5 c 128,-1,31 - 647 1370 647 1370 725 1405 c 128,-1,32 - 803 1440 803 1440 881 1450 c 1,33,-1 - 752 1718 l 1,34,-1 - 827 1772 l 1,35,-1 - 963 1591 l 1,36,-1 - 1180 1772 l 1,37,-1 - 1231 1718 l 1,38,-1 - 979 1453 l 1,39,40 - 1051 1450 1051 1450 1104.5 1436.5 c 128,-1,41 - 1158 1423 1158 1423 1190.5 1405.5 c 128,-1,42 - 1223 1388 1223 1388 1249 1355 c 128,-1,43 - 1275 1322 1275 1322 1288 1296.5 c 128,-1,44 - 1301 1271 1301 1271 1319 1225 c 1,45,-1 - 1085 1182 l 1,46,47 - 1070 1231 1070 1231 1058.5 1257.5 c 128,-1,48 - 1047 1284 1047 1284 1026 1308.5 c 128,-1,49 - 1005 1333 1005 1333 974.5 1342.5 c 128,-1,50 - 944 1352 944 1352 897 1352 c 128,-1,51 - 850 1352 850 1352 802.5 1297.5 c 128,-1,52 - 755 1243 755 1243 727.5 1173 c 128,-1,53 - 700 1103 700 1103 700 1051 c 0,54,55 - 700 1005 700 1005 721.5 966.5 c 128,-1,56 - 743 928 743 928 778.5 900.5 c 128,-1,57 - 814 873 814 873 859 844.5 c 128,-1,58 - 904 816 904 816 951 792.5 c 128,-1,59 - 998 769 998 769 1043 736 c 128,-1,60 - 1088 703 1088 703 1123.5 667.5 c 128,-1,61 - 1159 632 1159 632 1180.5 579.5 c 128,-1,62 - 1202 527 1202 527 1202 465 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Scedilla -Encoding: 350 350 178 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -401 49<360 508> -41 41<512 668> -20 102<527 773> 1352 102<812 1024> -VStem: 207 238<177 350> 430 270<940 1185> 575 162<-312 -178> 932 270<279 555> -LayerCount: 2 -Fore -SplineSet -360 -352 m 1,0,1 - 575 -352 575 -352 575 -236 c 0,2,3 - 575 -173 575 -173 463 -164 c 1,4,-1 - 522 -16 l 1,5,6 - 375 4 375 4 292.5 106.5 c 128,-1,7 - 210 209 210 209 207 350 c 1,8,-1 - 446 381 l 1,9,10 - 444 367 444 367 444 342 c 0,11,12 - 444 234 444 234 497 158 c 128,-1,13 - 550 82 550 82 623 82 c 0,14,15 - 695 82 695 82 752.5 111.5 c 128,-1,16 - 810 141 810 141 842 182.5 c 128,-1,17 - 874 224 874 224 895.5 275.5 c 128,-1,18 - 917 327 917 327 924.5 365.5 c 128,-1,19 - 932 404 932 404 932 432 c 0,20,21 - 932 491 932 491 904.5 538 c 128,-1,22 - 877 585 877 585 832.5 617.5 c 128,-1,23 - 788 650 788 650 734.5 679 c 128,-1,24 - 681 708 681 708 627.5 738.5 c 128,-1,25 - 574 769 574 769 529.5 804 c 128,-1,26 - 485 839 485 839 457.5 892.5 c 128,-1,27 - 430 946 430 946 430 1012 c 0,28,29 - 430 1091 430 1091 462.5 1162.5 c 128,-1,30 - 495 1234 495 1234 548.5 1286 c 128,-1,31 - 602 1338 602 1338 668.5 1377 c 128,-1,32 - 735 1416 735 1416 805 1435 c 128,-1,33 - 875 1454 875 1454 938 1454 c 0,34,35 - 1021 1454 1021 1454 1082 1441.5 c 128,-1,36 - 1143 1429 1143 1429 1179.5 1412 c 128,-1,37 - 1216 1395 1216 1395 1244.5 1361 c 128,-1,38 - 1273 1327 1273 1327 1286.5 1300 c 128,-1,39 - 1300 1273 1300 1273 1319 1225 c 1,40,-1 - 1085 1182 l 1,41,42 - 1070 1231 1070 1231 1058.5 1257.5 c 128,-1,43 - 1047 1284 1047 1284 1026 1308.5 c 128,-1,44 - 1005 1333 1005 1333 974.5 1342.5 c 128,-1,45 - 944 1352 944 1352 897 1352 c 128,-1,46 - 850 1352 850 1352 802.5 1297.5 c 128,-1,47 - 755 1243 755 1243 727.5 1173 c 128,-1,48 - 700 1103 700 1103 700 1051 c 0,49,50 - 700 1005 700 1005 721.5 966.5 c 128,-1,51 - 743 928 743 928 778.5 900.5 c 128,-1,52 - 814 873 814 873 859 844.5 c 128,-1,53 - 904 816 904 816 951 792.5 c 128,-1,54 - 998 769 998 769 1043 736 c 128,-1,55 - 1088 703 1088 703 1123.5 667.5 c 128,-1,56 - 1159 632 1159 632 1180.5 579.5 c 128,-1,57 - 1202 527 1202 527 1202 465 c 0,58,59 - 1202 268 1202 268 1048 136 c 128,-1,60 - 894 4 894 4 661 -17 c 1,61,-1 - 627 -113 l 1,62,63 - 677 -124 677 -124 707 -151.5 c 128,-1,64 - 737 -179 737 -179 737 -221 c 0,65,66 - 737 -281 737 -281 678.5 -323.5 c 128,-1,67 - 620 -366 620 -366 535.5 -383.5 c 128,-1,68 - 451 -401 451 -401 350 -401 c 1,69,-1 - 360 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Tcaron -Encoding: 356 356 179 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43<487 763> 1331 102<352 795 1061 1526> 1384 387 -VStem: 780 479 -LayerCount: 2 -Fore -SplineSet -918 1434 m 1,0,-1 - 780 1718 l 1,1,-1 - 856 1772 l 1,2,-1 - 991 1591 l 1,3,-1 - 1208 1772 l 1,4,-1 - 1260 1718 l 1,5,-1 - 989 1434 l 1,6,-1 - 1554 1434 l 1,7,-1 - 1526 1331 l 1,8,-1 - 1061 1331 l 1,9,-1 - 754 0 l 1,10,-1 - 487 0 l 1,11,-1 - 795 1331 l 1,12,-1 - 328 1331 l 1,13,-1 - 352 1434 l 1,14,-1 - 918 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Zacute -Encoding: 377 377 180 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 102<367 963> 1331 102<414 958> 1495 403 -VStem: 750 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1137 246 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Zcaron -Encoding: 381 381 181 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 102<367 963> 1331 102<414 958> 1384 387 -VStem: 649 479 -LayerCount: 2 -Fore -SplineSet -958 1331 m 1,0,-1 - 358 1331 l 1,1,-1 - 414 1434 l 1,2,-1 - 787 1434 l 1,3,-1 - 649 1718 l 1,4,-1 - 725 1772 l 1,5,-1 - 860 1591 l 1,6,-1 - 1077 1772 l 1,7,-1 - 1128 1718 l 1,8,-1 - 858 1434 l 1,9,-1 - 1286 1434 l 1,10,-1 - 367 102 l 1,11,-1 - 987 102 l 1,12,-1 - 963 0 l 1,13,-1 - 41 0 l 1,14,-1 - 958 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Zdotaccent -Encoding: 379 379 182 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 102<367 963> 1331 102<414 958> 1516 170<793 924> -VStem: 754 209 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1137 246 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: lcaron -Encoding: 318 318 183 -Width: 575 -VWidth: 0 -Flags: W -HStem: -20 102<301 515> 985 367<737 807> -VStem: 135 258<84 375> 522 70<93 131> 649 309 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 594 1188 2 -Refer: 15 108 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: sacute -Encoding: 347 347 184 -Width: 860 -VWidth: 0 -Flags: W -HStem: -20 102<290 523> 817 104<550 718> 1065 403 -VStem: 252 256<549 774> 547 422 596 258<167 388> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 934 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scaron -Encoding: 353 353 185 -Width: 860 -VWidth: 0 -Flags: W -HStem: -20 102<290 523> 817 104<550 718> 954 387 -VStem: 252 256<549 774> 446 479 596 258<167 388> -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 934 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scedilla -Encoding: 351 351 186 -Width: 860 -VWidth: 0 -Flags: W -HStem: -401 49<184 332> -41 41<336 492> -20 102<290 523> 817 104<550 718> -VStem: 252 256<549 774> 399 162<-312 -178> 596 258<167 388> -LayerCount: 2 -Fore -SplineSet -184 -352 m 1,0,1 - 399 -352 399 -352 399 -236 c 0,2,3 - 399 -173 399 -173 287 -164 c 1,4,-1 - 345 -18 l 1,5,6 - 290 -13 290 -13 243.5 7.5 c 128,-1,7 - 197 28 197 28 171.5 47.5 c 128,-1,8 - 146 67 146 67 88 117 c 1,9,-1 - 236 201 l 1,10,11 - 265 141 265 141 308 111.5 c 128,-1,12 - 351 82 351 82 420 82 c 0,13,14 - 460 82 460 82 492.5 101 c 128,-1,15 - 525 120 525 120 543.5 147 c 128,-1,16 - 562 174 562 174 574.5 205.5 c 128,-1,17 - 587 237 587 237 591.5 259.5 c 128,-1,18 - 596 282 596 282 596 295 c 0,19,20 - 596 350 596 350 554.5 385.5 c 128,-1,21 - 513 421 513 421 463 434 c 1,22,23 - 365 462 365 462 308.5 514 c 128,-1,24 - 252 566 252 566 252 641 c 0,25,26 - 252 690 252 690 276 739 c 128,-1,27 - 300 788 300 788 344 829 c 128,-1,28 - 388 870 388 870 458.5 896 c 128,-1,29 - 529 922 529 922 614 922 c 0,30,31 - 713 922 713 922 771 894.5 c 128,-1,32 - 829 867 829 867 913 795 c 1,33,-1 - 743 723 l 1,34,35 - 711 817 711 817 618 817 c 0,36,37 - 567 817 567 817 537.5 757 c 128,-1,38 - 508 697 508 697 508 641 c 0,39,40 - 508 600 508 600 526 573.5 c 128,-1,41 - 544 547 544 547 575 539 c 0,42,43 - 707 508 707 508 780.5 448 c 128,-1,44 - 854 388 854 388 854 305 c 0,45,46 - 854 272 854 272 843 235.5 c 128,-1,47 - 832 199 832 199 805 157.5 c 128,-1,48 - 778 116 778 116 738 81.5 c 128,-1,49 - 698 47 698 47 632.5 20 c 128,-1,50 - 567 -7 567 -7 486 -16 c 1,51,-1 - 451 -113 l 1,52,53 - 501 -124 501 -124 531 -151.5 c 128,-1,54 - 561 -179 561 -179 561 -221 c 0,55,56 - 561 -281 561 -281 502.5 -323.5 c 128,-1,57 - 444 -366 444 -366 359.5 -383.5 c 128,-1,58 - 275 -401 275 -401 174 -401 c 1,59,-1 - 184 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tcaron -Encoding: 357 357 187 -Width: 669 -VWidth: 0 -Flags: W -HStem: -20 102<395 610> 799 102<291 371 651 788> 985 367<842 911> -VStem: 229 258<84 376> 616 70<93 131> 754 309 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 698 1188 2 -Refer: 10 116 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: zacute -Encoding: 378 378 188 -Width: 827 -VWidth: 0 -Flags: W -HStem: -233 82<115 253> 799 102<246 602> 1065 403 -VStem: 487 256<17 303> 516 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 903 -184 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: zcaron -Encoding: 382 382 189 -Width: 827 -VWidth: 0 -Flags: W -HStem: -233 82<115 253> 799 102<246 602> 954 387 -VStem: 416 479 487 256<17 303> -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 903 -184 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: zdotaccent -Encoding: 380 380 190 -Width: 827 -VWidth: 0 -Flags: W -HStem: -233 82<115 253> 799 102<246 602> 1085 170<559 690> -VStem: 487 256<17 303> 520 209 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 903 -184 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Racute -Encoding: 340 340 191 -Width: 1122 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 748 1012> 655 102<532 607> 1331 102<666 881> 1495 403 -VStem: 737 422 758 262<0 382> 940 266<951 1271> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1124 246 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Abreve -Encoding: 258 258 192 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1516 137<916 1144> -VStem: 805 88<1681 1706> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Lacute -Encoding: 313 313 193 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 1393 41<404 680> 1495 403 -VStem: 698 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1085 246 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Cacute -Encoding: 262 262 194 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<601 928> 1331 102<832 1172> 1495 403 -VStem: 201 260<280 770> 934 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1321 246 2 -Refer: 30 67 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ccaron -Encoding: 268 268 195 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<601 928> 1331 102<832 1172> 1384 387 -VStem: 201 260<280 770> 834 479 -LayerCount: 2 -Fore -SplineSet -1257 209 m 1,0,1 - 1153 106 1153 106 1005 43 c 128,-1,2 - 857 -20 857 -20 696 -20 c 0,3,4 - 626 -20 626 -20 557 -0.5 c 128,-1,5 - 488 19 488 19 423.5 61.5 c 128,-1,6 - 359 104 359 104 310 164.5 c 128,-1,7 - 261 225 261 225 231 314.5 c 128,-1,8 - 201 404 201 404 201 510 c 0,9,10 - 201 615 201 615 227.5 724 c 128,-1,11 - 254 833 254 833 301.5 934 c 128,-1,12 - 349 1035 349 1035 419.5 1124.5 c 128,-1,13 - 490 1214 490 1214 573.5 1281 c 128,-1,14 - 657 1348 657 1348 760 1388.5 c 128,-1,15 - 863 1429 863 1429 972 1433 c 1,16,-1 - 834 1718 l 1,17,-1 - 909 1772 l 1,18,-1 - 1044 1591 l 1,19,-1 - 1262 1772 l 1,20,-1 - 1313 1718 l 1,21,-1 - 1041 1433 l 1,22,23 - 1389 1422 1389 1422 1489 1245 c 1,24,-1 - 1249 1178 l 1,25,26 - 1229 1221 1229 1221 1214.5 1243.5 c 128,-1,27 - 1200 1266 1200 1266 1172.5 1289.5 c 128,-1,28 - 1145 1313 1145 1313 1103.5 1322 c 128,-1,29 - 1062 1331 1062 1331 999 1331 c 0,30,31 - 911 1331 911 1331 834.5 1292.5 c 128,-1,32 - 758 1254 758 1254 704 1192 c 128,-1,33 - 650 1130 650 1130 607 1048 c 128,-1,34 - 564 966 564 966 537.5 883 c 128,-1,35 - 511 800 511 800 493 716.5 c 128,-1,36 - 475 633 475 633 468 571 c 128,-1,37 - 461 509 461 509 461 465 c 0,38,39 - 461 275 461 275 543 178.5 c 128,-1,40 - 625 82 625 82 750 82 c 0,41,42 - 808 82 808 82 852 93 c 128,-1,43 - 896 104 896 104 935.5 130.5 c 128,-1,44 - 975 157 975 157 1004 185 c 128,-1,45 - 1033 213 1033 213 1077 264 c 1,46,-1 - 1257 209 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ecaron -Encoding: 282 282 196 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1384 387 -VStem: 680 479 -LayerCount: 2 -Fore -SplineSet -942 0 m 1,0,-1 - 82 0 l 1,1,-1 - 414 1434 l 1,2,-1 - 818 1434 l 1,3,-1 - 680 1718 l 1,4,-1 - 756 1772 l 1,5,-1 - 891 1591 l 1,6,-1 - 1108 1772 l 1,7,-1 - 1159 1718 l 1,8,-1 - 888 1434 l 1,9,-1 - 1241 1434 l 1,10,-1 - 1217 1331 l 1,11,-1 - 655 1331 l 1,12,-1 - 557 901 l 1,13,-1 - 934 901 l 1,14,-1 - 909 799 l 1,15,-1 - 532 799 l 1,16,-1 - 373 102 l 1,17,-1 - 967 102 l 1,18,-1 - 942 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Dcaron -Encoding: 270 270 197 -Width: 1216 -VWidth: 0 -Flags: W -HStem: 0 102<383 690> 1331 102<666 966> 1384 387 -VStem: 657 479 1065 264<718 1227> -LayerCount: 2 -Fore -SplineSet -666 1331 m 1,0,-1 - 383 102 l 1,1,-1 - 551 102 l 2,2,3 - 636 102 636 102 712.5 153 c 128,-1,4 - 789 204 789 204 843 287 c 128,-1,5 - 897 370 897 370 941 470.5 c 128,-1,6 - 985 571 985 571 1011.5 676 c 128,-1,7 - 1038 781 1038 781 1051.5 870 c 128,-1,8 - 1065 959 1065 959 1065 1024 c 0,9,10 - 1065 1185 1065 1185 1002 1258 c 128,-1,11 - 939 1331 939 1331 834 1331 c 2,12,-1 - 666 1331 l 1,0,-1 -1329 1020 m 0,13,14 - 1329 962 1329 962 1319.5 885.5 c 128,-1,15 - 1310 809 1310 809 1285.5 710 c 128,-1,16 - 1261 611 1261 611 1224.5 514.5 c 128,-1,17 - 1188 418 1188 418 1128.5 324 c 128,-1,18 - 1069 230 1069 230 995 159 c 128,-1,19 - 921 88 921 88 815.5 44 c 128,-1,20 - 710 0 710 0 588 0 c 2,21,-1 - 92 0 l 1,22,-1 - 424 1434 l 1,23,-1 - 795 1434 l 1,24,-1 - 657 1718 l 1,25,-1 - 733 1772 l 1,26,-1 - 868 1591 l 1,27,-1 - 1085 1772 l 1,28,-1 - 1137 1718 l 1,29,-1 - 866 1434 l 1,30,-1 - 920 1434 l 2,31,32 - 1329 1434 1329 1434 1329 1020 c 0,13,14 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Dcroat -Encoding: 272 272 198 -Width: 1216 -VWidth: 0 -Flags: W -HStem: 0 102<383 690> 692 102<203 252 543 791> 1331 102<666 966> -VStem: 1065 264<718 1227> -LayerCount: 2 -Fore -Refer: 173 208 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Nacute -Encoding: 323 323 199 -Width: 1261 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 878 1165> 1393 41<414 703 1211 1487> 1495 403 -VStem: 893 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1280 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ncaron -Encoding: 327 327 200 -Width: 1261 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 878 1165> 1384 387 1393 41<414 703 1211 1487> -VStem: 793 479 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1280 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ohungarumlaut -Encoding: 336 336 201 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1495 403 -VStem: 199 258<251 749> 739 422 1108 422 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Rcaron -Encoding: 344 344 202 -Width: 1122 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 748 1012> 655 102<532 607> 1331 102<666 881> 1384 387 -VStem: 637 479 758 262<0 382> 940 266<951 1271> -LayerCount: 2 -Fore -SplineSet -625 758 m 2,0,1 - 715 758 715 758 789.5 816 c 128,-1,2 - 864 874 864 874 902 958 c 128,-1,3 - 940 1042 940 1042 940 1128 c 0,4,5 - 940 1215 940 1215 896.5 1273 c 128,-1,6 - 853 1331 853 1331 758 1331 c 2,7,-1 - 666 1331 l 1,8,-1 - 532 758 l 1,9,-1 - 625 758 l 2,0,1 -1206 1128 m 0,10,11 - 1206 1042 1206 1042 1166 955.5 c 128,-1,12 - 1126 869 1126 869 1043.5 794.5 c 128,-1,13 - 961 720 961 720 852 684 c 1,14,15 - 918 606 918 606 969 434.5 c 128,-1,16 - 1020 263 1020 263 1020 115 c 0,17,18 - 1020 52 1020 52 1008 0 c 1,19,-1 - 748 0 l 1,20,21 - 758 41 758 41 758 106 c 0,22,23 - 758 254 758 254 702 419 c 128,-1,24 - 646 584 646 584 569 655 c 1,25,-1 - 510 655 l 1,26,-1 - 358 0 l 1,27,-1 - 92 0 l 1,28,-1 - 424 1434 l 1,29,-1 - 775 1434 l 1,30,-1 - 637 1718 l 1,31,-1 - 713 1772 l 1,32,-1 - 848 1591 l 1,33,-1 - 1065 1772 l 1,34,-1 - 1116 1718 l 1,35,-1 - 845 1434 l 1,36,37 - 942 1434 942 1434 1015 1407 c 128,-1,38 - 1088 1380 1088 1380 1128 1335 c 128,-1,39 - 1168 1290 1168 1290 1187 1238 c 128,-1,40 - 1206 1186 1206 1186 1206 1128 c 0,10,11 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Uring -Encoding: 366 366 203 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1413 72<911 1047> 1653 72<932 1068> -VStem: 176 254<182 636> 829 74<1491 1625> 1075 74<1512 1646> -LayerCount: 2 -Fore -Refer: 100 778 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Uhungarumlaut -Encoding: 368 368 204 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1495 403 -VStem: 176 254<182 636> 700 422 1069 422 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Tcommaaccent -Encoding: 354 354 205 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -401 49<381 528> -41 41<532 688> 0 43<487 763> 1331 102<352 795 1061 1526> -VStem: 596 162<-312 -178> -LayerCount: 2 -Fore -SplineSet -381 -352 m 1,0,1 - 596 -352 596 -352 596 -236 c 0,2,3 - 596 -173 596 -173 483 -164 c 1,4,-1 - 549 0 l 1,5,-1 - 487 0 l 1,6,-1 - 795 1331 l 1,7,-1 - 328 1331 l 1,8,-1 - 352 1434 l 1,9,-1 - 1554 1434 l 1,10,-1 - 1526 1331 l 1,11,-1 - 1061 1331 l 1,12,-1 - 754 0 l 1,13,-1 - 688 0 l 1,14,-1 - 647 -113 l 1,15,16 - 697 -124 697 -124 727.5 -151.5 c 128,-1,17 - 758 -179 758 -179 758 -221 c 0,18,19 - 758 -281 758 -281 699.5 -323.5 c 128,-1,20 - 641 -366 641 -366 556.5 -383.5 c 128,-1,21 - 472 -401 472 -401 371 -401 c 1,22,-1 - 381 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: racute -Encoding: 341 341 206 -Width: 862 -VWidth: 0 -Flags: W -HStem: 0 43<184 450> 819 102<226 409 663 955> 1065 403 -VStem: 150 70<770 809> 592 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 979 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: abreve -Encoding: 259 259 207 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1085 137<743 972> -VStem: 154 246<136 485> 633 88<1251 1276> 690 262<96 373> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1116 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: lacute -Encoding: 314 314 208 -Width: 575 -VWidth: 0 -Flags: W -HStem: -20 102<301 515> 1495 403 -VStem: 135 258<84 375> 477 422 522 70<93 131> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 864 246 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: cacute -Encoding: 263 263 209 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<439 698> 819 102<587 786> 1065 403 -VStem: 150 246<143 528> 662 422 801 219<671 782> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1049 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ccaron -Encoding: 269 269 210 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<439 698> 819 102<587 786> 954 387 -VStem: 150 246<143 528> 561 479 801 219<671 782> -LayerCount: 2 -Fore -Refer: 102 780 S 1 0 0 1 1049 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ecaron -Encoding: 283 283 211 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 954 387 -VStem: 150 246<143 446> 559 479 799 233<561 763> -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: dcaron -Encoding: 271 271 212 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -20 102<421 631 956 1082> 819 102<584 774> 985 367<1301 1370> -VStem: 152 238<130 500> 1090 70<96 131> 1212 309 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 1157 1188 2 -Refer: 0 100 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: nacute -Encoding: 324 324 213 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<184 450 729 994> 819 102<226 400 616 855> 1065 403 -VStem: 150 70<770 809> 346 260<527 780> 743 422 872 246<427 804> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1130 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ncaron -Encoding: 328 328 214 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<184 450 729 994> 819 102<226 400 616 855> 954 387 -VStem: 150 70<770 809> 346 260<527 780> 612 479 872 246<427 804> -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1100 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ohungarumlaut -Encoding: 337 337 215 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1065 403 -VStem: 147 244<117 508> 479 422 821 244<380 773> 848 422 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: rcaron -Encoding: 345 345 216 -Width: 862 -VWidth: 0 -Flags: W -HStem: 0 43<184 450> 819 102<226 409 663 955> 954 387 -VStem: 150 70<770 809> 492 479 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 979 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uring -Encoding: 367 367 217 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 983 72<667 803> 1223 72<688 824> -VStem: 154 256<105 501> 586 74<1061 1195> 668 260<101 364> 831 74<1082 1216> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 100 778 N 1 0 0 1 1028 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uhungarumlaut -Encoding: 369 369 218 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1065 403 -VStem: 154 256<105 501> 457 422 668 260<101 364> 825 422 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1028 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: tcommaaccent -Encoding: 355 355 219 -Width: 669 -VWidth: 0 -Flags: W -HStem: -401 49<145 293> -41 41<297 453> -20 102<395 610> 799 102<291 371 651 788> -VStem: 229 258<84 376> 360 162<-312 -178> 616 70<93 131> -LayerCount: 2 -Fore -SplineSet -180 -352 m 1,0,1 - 395 -352 395 -352 395 -236 c 0,2,3 - 395 -173 395 -173 283 -164 c 1,4,-1 - 348 -1 l 1,5,6 - 229 41 229 41 229 156 c 0,7,8 - 229 178 229 178 236 213 c 1,9,-1 - 371 799 l 1,10,-1 - 236 799 l 1,11,-1 - 291 901 l 1,12,-1 - 395 901 l 1,13,-1 - 463 1198 l 1,14,-1 - 727 1229 l 1,15,-1 - 651 901 l 1,16,-1 - 813 901 l 1,17,-1 - 788 799 l 1,18,-1 - 627 799 l 1,19,-1 - 506 276 l 2,20,21 - 487 191 487 191 487 156 c 0,22,23 - 487 82 487 82 539 82 c 0,24,25 - 594 82 594 82 616 131 c 1,26,-1 - 686 131 l 1,27,28 - 672 73 672 73 612 26.5 c 128,-1,29 - 552 -20 552 -20 487 -20 c 2,30,-1 - 480 -20 l 1,31,-1 - 446 -113 l 1,32,33 - 496 -124 496 -124 526.5 -151.5 c 128,-1,34 - 557 -179 557 -179 557 -221 c 0,35,36 - 557 -281 557 -281 498.5 -323.5 c 128,-1,37 - 440 -366 440 -366 355.5 -383.5 c 128,-1,38 - 271 -401 271 -401 170 -401 c 1,39,-1 - 180 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Aogonek -Encoding: 260 260 220 -Width: 1275 -VWidth: 0 -Flags: W -HStem: -319 37<992 1071> 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> -VStem: 801 152<-267 -104> -LayerCount: 2 -Fore -SplineSet -883 1034 m 1,0,-1 - 571 512 l 1,1,-1 - 952 512 l 1,2,-1 - 883 1034 l 1,0,-1 -1065 1434 m 1,3,-1 - 1255 0 l 1,4,-1 - 1092 0 l 1,5,6 - 1050 -18 1050 -18 1001 -72 c 128,-1,7 - 952 -126 952 -126 952 -193 c 0,8,9 - 952 -283 952 -283 1079 -283 c 1,10,-1 - 1071 -319 l 1,11,12 - 928 -319 928 -319 864.5 -285 c 128,-1,13 - 801 -251 801 -251 801 -203 c 0,14,15 - 801 -184 801 -184 808.5 -163.5 c 128,-1,16 - 816 -143 816 -143 836.5 -114 c 128,-1,17 - 857 -85 857 -85 904.5 -55 c 128,-1,18 - 952 -25 952 -25 1020 0 c 1,19,-1 - 965 410 l 1,20,-1 - 510 410 l 1,21,-1 - 266 0 l 1,22,-1 - 31 0 l 1,23,-1 - 885 1434 l 1,24,-1 - 1065 1434 l 1,3,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Eogonek -Encoding: 280 280 221 -Width: 962 -VWidth: 0 -Flags: W -HStem: -319 37<654 733> 0 102<373 942> 799 102<557 909> 1331 102<655 1217> -VStem: 463 152<-267 -104> -LayerCount: 2 -Fore -SplineSet -754 0 m 1,0,1 - 712 -18 712 -18 663 -72 c 128,-1,2 - 614 -126 614 -126 614 -193 c 0,3,4 - 614 -283 614 -283 741 -283 c 1,5,-1 - 733 -319 l 1,6,7 - 590 -319 590 -319 526.5 -285 c 128,-1,8 - 463 -251 463 -251 463 -203 c 0,9,10 - 463 -184 463 -184 470.5 -163.5 c 128,-1,11 - 478 -143 478 -143 498.5 -114 c 128,-1,12 - 519 -85 519 -85 566 -55 c 128,-1,13 - 613 -25 613 -25 681 0 c 1,14,-1 - 82 0 l 1,15,-1 - 414 1434 l 1,16,-1 - 1241 1434 l 1,17,-1 - 1217 1331 l 1,18,-1 - 655 1331 l 1,19,-1 - 557 901 l 1,20,-1 - 934 901 l 1,21,-1 - 909 799 l 1,22,-1 - 532 799 l 1,23,-1 - 373 102 l 1,24,-1 - 967 102 l 1,25,-1 - 942 0 l 1,26,-1 - 754 0 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: aogonek -Encoding: 261 261 222 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -319 37<932 1012> -20 102<443 701 907 1067> 819 102<633 835> -VStem: 154 246<136 485> 690 262<96 373> 741 152<-267 -104> 1075 72<97 131> -LayerCount: 2 -Fore -SplineSet -836 815 m 1,0,1 - 790 819 790 819 760 819 c 0,2,3 - 678 819 678 819 607 757 c 128,-1,4 - 536 695 536 695 492.5 604.5 c 128,-1,5 - 449 514 449 514 424 420.5 c 128,-1,6 - 399 327 399 327 399 254 c 0,7,8 - 399 165 399 165 441 123.5 c 128,-1,9 - 483 82 483 82 524 82 c 0,10,11 - 634 82 634 82 702 100 c 1,12,13 - 690 130 690 130 690 164 c 0,14,15 - 690 189 690 189 696 213 c 2,16,-1 - 836 815 l 1,0,1 -1098 838 m 1,17,-1 - 967 276 l 2,18,19 - 952 215 952 215 952 166 c 0,20,21 - 952 82 952 82 997 82 c 0,22,23 - 1022 82 1022 82 1046.5 97 c 128,-1,24 - 1071 112 1071 112 1075 131 c 1,25,-1 - 1147 131 l 1,26,27 - 1137 92 1137 92 1102 54.5 c 128,-1,28 - 1067 17 1067 17 1021 -3 c 1,29,30 - 977 -27 977 -27 933 -78.5 c 128,-1,31 - 889 -130 889 -130 889 -193 c 0,32,33 - 889 -283 889 -283 1016 -283 c 1,34,-1 - 1008 -319 l 1,35,36 - 864 -319 864 -319 800.5 -285 c 128,-1,37 - 737 -251 737 -251 737 -203 c 0,38,39 - 737 -190 737 -190 740 -176 c 128,-1,40 - 743 -162 743 -162 754 -141.5 c 128,-1,41 - 765 -121 765 -121 782.5 -102 c 128,-1,42 - 800 -83 800 -83 832.5 -60.5 c 128,-1,43 - 865 -38 865 -38 908 -19 c 1,44,45 - 818 -11 818 -11 766 25 c 1,46,47 - 706 4 706 4 622.5 -8 c 128,-1,48 - 539 -20 539 -20 471 -20 c 0,49,50 - 336 -20 336 -20 245 74 c 128,-1,51 - 154 168 154 168 154 309 c 0,52,53 - 154 461 154 461 234.5 602.5 c 128,-1,54 - 315 744 315 744 455 833 c 128,-1,55 - 595 922 595 922 754 922 c 0,56,57 - 833 922 833 922 902 908 c 128,-1,58 - 971 894 971 894 1009.5 879 c 128,-1,59 - 1048 864 1048 864 1098 838 c 1,17,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eogonek -Encoding: 281 281 223 -Width: 964 -VWidth: 0 -Flags: W -HStem: -319 37<459 539> -20 102<439 705> 451 102<449 789> 819 102<575 781> -VStem: 150 246<143 446> 268 152<-267 -104> 799 233<561 763> -LayerCount: 2 -Fore -SplineSet -449 553 m 1,0,-1 - 700 553 l 2,1,2 - 762 553 762 553 780.5 580.5 c 128,-1,3 - 799 608 799 608 799 694 c 0,4,5 - 799 755 799 755 777 787 c 128,-1,6 - 755 819 755 819 702 819 c 0,7,8 - 609 819 609 819 549 751.5 c 128,-1,9 - 489 684 489 684 449 553 c 1,0,-1 -150 324 m 0,10,11 - 150 443 150 443 199.5 555.5 c 128,-1,12 - 249 668 249 668 327.5 747.5 c 128,-1,13 - 406 827 406 827 504 874.5 c 128,-1,14 - 602 922 602 922 696 922 c 0,15,16 - 780 922 780 922 846 893.5 c 128,-1,17 - 912 865 912 865 952 815.5 c 128,-1,18 - 992 766 992 766 1012 704 c 128,-1,19 - 1032 642 1032 642 1032 571 c 0,20,21 - 1032 516 1032 516 996.5 483.5 c 128,-1,22 - 961 451 961 451 887 451 c 2,23,-1 - 422 451 l 1,24,25 - 395 330 395 330 395 262 c 0,26,27 - 395 172 395 172 436.5 127 c 128,-1,28 - 478 82 478 82 573 82 c 0,29,30 - 647 82 647 82 689 113 c 128,-1,31 - 731 144 731 144 756 205 c 1,32,-1 - 940 158 l 1,33,34 - 856 76 856 76 750.5 28.5 c 128,-1,35 - 645 -19 645 -19 525 -20 c 1,36,37 - 483 -50 483 -50 451.5 -95 c 128,-1,38 - 420 -140 420 -140 420 -193 c 0,39,40 - 420 -283 420 -283 547 -283 c 1,41,-1 - 539 -319 l 1,42,43 - 395 -319 395 -319 331.5 -285 c 128,-1,44 - 268 -251 268 -251 268 -203 c 0,45,46 - 268 -186 268 -186 274.5 -167 c 128,-1,47 - 281 -148 281 -148 298 -122 c 128,-1,48 - 315 -96 315 -96 353 -68 c 128,-1,49 - 391 -40 391 -40 447 -16 c 1,50,51 - 309 4 309 4 229.5 93.5 c 128,-1,52 - 150 183 150 183 150 324 c 0,10,11 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Lslash -Encoding: 321 321 224 -Width: 1052 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 102<373 942> 1393 41G<404 680> -LayerCount: 2 -Fore -SplineSet -373 102 m 1,0,-1 - 967 102 l 1,1,-1 - 942 0 l 1,2,-1 - 82 0 l 1,3,-1 - 246 707 l 1,4,-1 - 174 670 l 1,5,-1 - 129 762 l 1,6,-1 - 276 838 l 1,7,-1 - 414 1434 l 1,8,-1 - 680 1434 l 1,9,-1 - 578 991 l 1,10,-1 - 655 1030 l 1,11,-1 - 700 938 l 1,12,-1 - 547 860 l 1,13,-1 - 373 102 l 1,0,-1 -EndSplineSet -EndChar - -StartChar: lslash -Encoding: 322 322 225 -Width: 575 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<301 515> -VStem: 135 258<84 377> 522 70<93 131> -LayerCount: 2 -Fore -SplineSet -403 1352 m 1,0,-1 - 659 1352 l 1,1,-1 - 575 989 l 1,2,-1 - 655 1030 l 1,3,-1 - 700 938 l 1,4,-1 - 547 860 l 1,5,-1 - 412 276 l 2,6,7 - 393 191 393 191 393 156 c 0,8,9 - 393 82 393 82 444 82 c 0,10,11 - 500 82 500 82 522 131 c 1,12,-1 - 592 131 l 1,13,14 - 578 73 578 73 518 26.5 c 128,-1,15 - 458 -20 458 -20 393 -20 c 0,16,17 - 262 -20 262 -20 198.5 28 c 128,-1,18 - 135 76 135 76 135 156 c 0,19,20 - 135 183 135 183 141 213 c 2,21,-1 - 256 711 l 1,22,-1 - 174 670 l 1,23,-1 - 129 762 l 1,24,-1 - 287 842 l 1,25,-1 - 403 1352 l 1,0,-1 -EndSplineSet -EndChar - -StartChar: dcroat -Encoding: 273 273 226 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -20 102<421 631 956 1082> 819 102<584 774> 1085 102<778 909 1190 1239> -VStem: 152 238<130 500> 1090 70<96 131> -LayerCount: 2 -Fore -SplineSet -524 82 m 0,0,1 - 582 82 582 82 628.5 123 c 128,-1,2 - 675 164 675 164 703 229.5 c 128,-1,3 - 731 295 731 295 751 366 c 128,-1,4 - 771 437 771 437 779.5 508 c 128,-1,5 - 788 579 788 579 791.5 618 c 128,-1,6 - 795 657 795 657 795 672 c 0,7,8 - 795 819 795 819 694 819 c 0,9,10 - 638 819 638 819 591.5 787 c 128,-1,11 - 545 755 545 755 514.5 704.5 c 128,-1,12 - 484 654 484 654 460 592.5 c 128,-1,13 - 436 531 436 531 423 469 c 128,-1,14 - 410 407 410 407 402 356.5 c 128,-1,15 - 394 306 394 306 392 274 c 2,16,-1 - 389 242 l 1,17,18 - 389 82 389 82 524 82 c 0,0,1 -979 276 m 2,19,20 - 954 170 954 170 954 143 c 0,21,22 - 954 82 954 82 1012 82 c 0,23,24 - 1036 82 1036 82 1058.5 98 c 128,-1,25 - 1081 114 1081 114 1090 131 c 1,26,-1 - 1159 131 l 1,27,28 - 1145 73 1145 73 1085.5 26.5 c 128,-1,29 - 1026 -20 1026 -20 961 -20 c 0,30,31 - 825 -20 825 -20 756 43 c 1,32,33 - 638 -20 638 -20 471 -20 c 0,34,35 - 312 -20 312 -20 232 74.5 c 128,-1,36 - 152 169 152 169 152 317 c 0,37,38 - 152 398 152 398 176 483.5 c 128,-1,39 - 200 569 200 569 247 647 c 128,-1,40 - 294 725 294 725 357.5 786.5 c 128,-1,41 - 421 848 421 848 507 885 c 128,-1,42 - 593 922 593 922 688 922 c 0,43,44 - 786 922 786 922 862 883 c 1,45,-1 - 909 1085 l 1,46,-1 - 754 1085 l 1,47,-1 - 778 1188 l 1,48,-1 - 932 1188 l 1,49,-1 - 971 1352 l 1,50,-1 - 1227 1352 l 1,51,-1 - 1190 1188 l 1,52,-1 - 1264 1188 l 1,53,-1 - 1239 1085 l 1,54,-1 - 1165 1085 l 1,55,-1 - 979 276 l 2,19,20 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Hcircumflex -Encoding: 292 292 227 -Width: 1189 -VWidth: 0 -Flags: W -HStem: 0 43<82 358 823 1099> 717 102<537 989> 1393 41<404 680 1146 1421> 1503 299 -VStem: 688 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1239 246 2 -Refer: 35 72 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Idotaccent -Encoding: 304 304 228 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1516 170<528 659> -VStem: 92 598 489 209 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 872 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gbreve -Encoding: 286 286 229 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<601 956> 717 102<969 1118> 1331 102<832 1172> 1516 137<948 1176> -VStem: 201 260<280 770> 838 88<1681 1706> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1321 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Jcircumflex -Encoding: 308 308 230 -Width: 894 -VWidth: 0 -Flags: W -HStem: -20 102<307 501> 1393 41<851 1126> 1503 299 -VStem: 758 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1309 246 2 -Refer: 37 74 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: hcircumflex -Encoding: 293 293 231 -Width: 1034 -VWidth: 0 -Flags: W -HStem: 0 43<143 409 688 954> 819 102<610 813> 1270 102<289 504> 1503 299 -VStem: 213 70<1221 1259> 410 260<985 1268> 569 551 829 248<415 804> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1120 246 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gbreve -Encoding: 287 287 232 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 516> -20 102<418 603> 819 102<553 784 1063 1186> 1085 137<649 877> -VStem: 147 238<126 481> 539 88<1251 1276> 1186 72<770 815> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1022 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: jcircumflex -Encoding: 309 309 233 -Width: 438 -VWidth: 0 -Flags: W -HStem: -348 102<-200 13> 860 41<281 547> 1073 299 -VStem: 203 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 754 -184 2 -Refer: 111 567 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Cdotaccent -Encoding: 266 266 234 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<601 928> 1331 102<832 1172> 1516 170<977 1108> -VStem: 201 260<280 770> 938 209 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1321 246 2 -Refer: 30 67 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ccircumflex -Encoding: 264 264 235 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<601 928> 1331 102<832 1172> 1503 299 -VStem: 201 260<280 770> 770 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1321 246 2 -Refer: 30 67 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gdotaccent -Encoding: 288 288 236 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<601 956> 717 102<969 1118> 1331 102<832 1172> 1516 170<977 1108> -VStem: 201 260<280 770> 938 209 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1321 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gcircumflex -Encoding: 284 284 237 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<601 956> 717 102<969 1118> 1331 102<832 1172> 1503 299 -VStem: 201 260<280 770> 770 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1321 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ubreve -Encoding: 364 364 238 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1516 137<899 1127> -VStem: 176 254<182 636> 788 88<1681 1706> -LayerCount: 2 -Fore -Refer: 97 774 S 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Scircumflex -Encoding: 348 348 239 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -20 102<527 773> 1352 102<812 1024> 1503 299 -VStem: 207 238<177 350> 430 270<940 1185> 688 551 932 270<279 555> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1239 246 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: cdotaccent -Encoding: 267 267 240 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<439 698> 819 102<587 786> 1085 170<705 836> -VStem: 150 246<143 528> 666 209 801 219<671 782> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1049 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ccircumflex -Encoding: 265 265 241 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<439 698> 819 102<587 786> 1073 299 -VStem: 150 246<143 528> 498 551 801 219<671 782> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1049 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gdotaccent -Encoding: 289 289 242 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 516> -20 102<418 603> 819 102<553 784 1063 1186> 1085 170<678 809> -VStem: 147 238<126 481> 639 209 1186 72<770 815> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1022 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gcircumflex -Encoding: 285 285 243 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 516> -20 102<418 603> 819 102<553 784 1063 1186> 1073 299 -VStem: 147 238<126 481> 471 551 1186 72<770 815> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1022 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ubreve -Encoding: 365 365 244 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1085 137<655 884> -VStem: 154 256<105 501> 545 88<1251 1276> 668 260<101 364> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 97 774 S 1 0 0 1 1028 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scircumflex -Encoding: 349 349 245 -Width: 860 -VWidth: 0 -Flags: W -HStem: -20 102<290 523> 817 104<550 718> 1073 299 -VStem: 252 256<549 774> 383 551 596 258<167 388> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 934 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Hbar -Encoding: 294 294 246 -Width: 1189 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 43G<82 358 823 1099> 717 102<537 989> 1159 102<291 350 639 1092 1382 1440> 1393 41G<404 680 1145 1421> -LayerCount: 2 -Fore -SplineSet -350 1159 m 1,0,-1 - 268 1159 l 1,1,-1 - 291 1262 l 1,2,-1 - 375 1262 l 1,3,-1 - 414 1434 l 1,4,-1 - 680 1434 l 1,5,-1 - 639 1262 l 1,6,-1 - 1114 1262 l 1,7,-1 - 1155 1434 l 1,8,-1 - 1421 1434 l 1,9,-1 - 1382 1262 l 1,10,-1 - 1462 1262 l 1,11,-1 - 1440 1159 l 1,12,-1 - 1358 1159 l 1,13,-1 - 1090 0 l 1,14,-1 - 823 0 l 1,15,-1 - 989 717 l 1,16,-1 - 514 717 l 1,17,-1 - 348 0 l 1,18,-1 - 82 0 l 1,19,-1 - 350 1159 l 1,0,-1 -1092 1159 m 1,20,-1 - 616 1159 l 1,21,-1 - 537 819 l 1,22,-1 - 1012 819 l 1,23,-1 - 1092 1159 l 1,20,-1 -EndSplineSet -EndChar - -StartChar: hbar -Encoding: 295 295 247 -Width: 972 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 43G<82 347 627 892> 819 102<548 751> 1085 102<287 332 608 748> 1270 102<228 442> -VStem: 152 70<1221 1259> 768 248<415 804> -LayerCount: 2 -Fore -SplineSet -262 1085 m 5,0,-1 - 287 1188 l 1,1,-1 - 348 1188 l 1,2,3 - 348 1196 l 2,4,5 - 348 1270 348 1270 297 1270 c 0,6,7 - 243 1270 243 1270 221 1221 c 1,8,-1 - 152 1221 l 1,9,10 - 164 1279 164 1279 224.5 1325.5 c 128,-1,11 - 285 1372 285 1372 350 1372 c 0,12,13 - 481 1372 481 1372 544.5 1324 c 128,-1,14 - 608 1276 608 1276 608 1196 c 2,15,-1 - 608 1188 l 1,16,-1 - 772 1188 l 1,17,-1 - 748 1085 l 1,18,-1 - 588 1085 l 1,19,-1 - 547 907 l 1,20,21 - 624 922 624 922 668 922 c 0,22,23 - 1016 922 1016 922 1016 641 c 0,24,25 - 1016 574 1016 574 995 492 c 1,26,-1 - 883 0 l 1,27,-1 - 627 0 l 1,28,-1 - 735 467 l 2,29,30 - 768 610 768 610 768 692 c 0,31,32 - 768 762 768 762 744 790.5 c 128,-1,33 - 720 819 720 819 674 819 c 0,34,35 - 595 819 595 819 520 784 c 1,36,-1 - 338 0 l 1,37,-1 - 82 0 l 1,38,-1 - 332 1085 l 1,39,-1 - 262 1085 l 5,0,-1 -EndSplineSet -EndChar - -StartChar: Iogonek -Encoding: 302 302 248 -Width: 458 -VWidth: 0 -Flags: W -HStem: -319 37<101 180> 0 43<92 368> 1393 41<414 690> -VStem: -90 152<-267 -104> 92 598 -LayerCount: 2 -Fore -SplineSet -690 1434 m 1,0,-1 - 358 0 l 1,1,-1 - 201 0 l 1,2,3 - 159 -18 159 -18 110 -72 c 128,-1,4 - 61 -126 61 -126 61 -193 c 0,5,6 - 61 -283 61 -283 188 -283 c 1,7,-1 - 180 -319 l 1,8,9 - 37 -319 37 -319 -26.5 -285 c 128,-1,10 - -90 -251 -90 -251 -90 -203 c 0,11,12 - -90 -184 -90 -184 -82.5 -163.5 c 128,-1,13 - -75 -143 -75 -143 -54.5 -114 c 128,-1,14 - -34 -85 -34 -85 13 -55 c 128,-1,15 - 60 -25 60 -25 128 0 c 1,16,-1 - 92 0 l 1,17,-1 - 424 1434 l 1,18,-1 - 690 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Uogonek -Encoding: 370 370 249 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -319 37<576 655> -20 102<498 781> 1393 41<384 659 1209 1485> -VStem: 176 254<182 636> 385 152<-267 -104> -LayerCount: 2 -Fore -SplineSet -1219 1434 m 1,0,-1 - 1485 1434 l 1,1,-1 - 1294 610 l 2,2,3 - 1261 468 1261 468 1209 359.5 c 128,-1,4 - 1157 251 1157 251 1096.5 181.5 c 128,-1,5 - 1036 112 1036 112 959.5 67 c 128,-1,6 - 883 22 883 22 807 3 c 128,-1,7 - 731 -16 731 -16 643 -20 c 1,8,9 - 601 -50 601 -50 569 -95 c 128,-1,10 - 537 -140 537 -140 537 -193 c 0,11,12 - 537 -283 537 -283 664 -283 c 1,13,-1 - 655 -319 l 1,14,15 - 512 -319 512 -319 448.5 -285 c 128,-1,16 - 385 -251 385 -251 385 -203 c 0,17,18 - 385 -190 385 -190 388 -176 c 128,-1,19 - 391 -162 391 -162 402 -141.5 c 128,-1,20 - 413 -121 413 -121 430.5 -102 c 128,-1,21 - 448 -83 448 -83 480.5 -60.5 c 128,-1,22 - 513 -38 513 -38 556 -19 c 1,23,24 - 500 -15 500 -15 449 -1 c 128,-1,25 - 398 13 398 13 347 44 c 128,-1,26 - 296 75 296 75 259 120 c 128,-1,27 - 222 165 222 165 199 236.5 c 128,-1,28 - 176 308 176 308 176 397 c 0,29,30 - 176 490 176 490 203 610 c 2,31,-1 - 393 1434 l 1,32,-1 - 659 1434 l 1,33,-1 - 469 610 l 2,34,35 - 430 444 430 444 430 334 c 0,36,37 - 430 259 430 259 446.5 207 c 128,-1,38 - 463 155 463 155 493 129 c 128,-1,39 - 523 103 523 103 556.5 92.5 c 128,-1,40 - 590 82 590 82 633 82 c 0,41,42 - 683 82 683 82 725 95.5 c 128,-1,43 - 767 109 767 109 810.5 144.5 c 128,-1,44 - 854 180 854 180 891 238 c 128,-1,45 - 928 296 928 296 963.5 390 c 128,-1,46 - 999 484 999 484 1028 610 c 2,47,-1 - 1219 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: iogonek -Encoding: 303 303 250 -Width: 573 -VWidth: 0 -Flags: W -HStem: -317 37<207 287> -20 102<305 513> 860 41<291 555> 1065 164<397 573> -VStem: 16 152<-265 -102> 133 254<83 364> 520 70<96 131> -LayerCount: 2 -Fore -SplineSet -410 276 m 2,0,1 - 387 178 387 178 387 143 c 0,2,3 - 387 82 387 82 442 82 c 0,4,5 - 466 82 466 82 488.5 98 c 128,-1,6 - 511 114 511 114 520 131 c 1,7,-1 - 590 131 l 1,8,9 - 576 73 576 73 516 26.5 c 128,-1,10 - 456 -20 456 -20 391 -20 c 0,11,12 - 329 -20 329 -20 288 -9 c 1,13,14 - 243 -37 243 -37 205.5 -84 c 128,-1,15 - 168 -131 168 -131 168 -190 c 0,16,17 - 168 -281 168 -281 295 -281 c 1,18,-1 - 287 -317 l 1,19,20 - 143 -317 143 -317 79.5 -283 c 128,-1,21 - 16 -249 16 -249 16 -201 c 0,22,23 - 16 -182 16 -182 24 -160.5 c 128,-1,24 - 32 -139 32 -139 53.5 -109.5 c 128,-1,25 - 75 -80 75 -80 124.5 -49.5 c 128,-1,26 - 174 -19 174 -19 245 6 c 1,27,28 - 190 30 190 30 161.5 71 c 128,-1,29 - 133 112 133 112 133 164 c 0,30,31 - 133 189 133 189 139 213 c 2,32,-1 - 301 901 l 1,33,-1 - 555 901 l 1,34,-1 - 410 276 l 2,0,1 -397 1229 m 1,35,-1 - 612 1229 l 1,36,-1 - 573 1065 l 1,37,-1 - 358 1065 l 1,38,-1 - 397 1229 l 1,35,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uogonek -Encoding: 371 371 251 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -319 37<824 903> -20 102<435 668 876 1050> 860 41<281 547 826 1092> -VStem: 154 256<105 501> 633 152<-267 -104> 668 260<101 364> 1057 70<93 131> -LayerCount: 2 -Fore -SplineSet -836 901 m 1,0,-1 - 1092 901 l 1,1,-1 - 946 276 l 2,2,3 - 928 195 928 195 928 156 c 0,4,5 - 928 82 928 82 979 82 c 0,6,7 - 1035 82 1035 82 1057 131 c 1,8,-1 - 1126 131 l 1,9,10 - 1112 73 1112 73 1052.5 26.5 c 128,-1,11 - 993 -20 993 -20 928 -20 c 0,12,13 - 903 -20 903 -20 891 -19 c 1,14,15 - 849 -49 849 -49 816.5 -94.5 c 128,-1,16 - 784 -140 784 -140 784 -193 c 0,17,18 - 784 -283 784 -283 911 -283 c 1,19,-1 - 903 -319 l 1,20,21 - 760 -319 760 -319 696.5 -285 c 128,-1,22 - 633 -251 633 -251 633 -203 c 0,23,24 - 633 -185 633 -185 639.5 -165.5 c 128,-1,25 - 646 -146 646 -146 664 -119 c 128,-1,26 - 682 -92 682 -92 723.5 -63 c 128,-1,27 - 765 -34 765 -34 824 -10 c 1,28,29 - 752 6 752 6 715 43 c 1,30,31 - 567 -20 567 -20 475 -20 c 0,32,33 - 309 -20 309 -20 231.5 43.5 c 128,-1,34 - 154 107 154 107 154 240 c 0,35,36 - 154 311 154 311 176 410 c 1,37,-1 - 291 901 l 1,38,-1 - 547 901 l 1,39,-1 - 438 434 l 1,40,41 - 410 303 410 303 410 236 c 0,42,43 - 410 151 410 151 441 116.5 c 128,-1,44 - 472 82 472 82 528 82 c 0,45,46 - 609 82 609 82 670 127 c 1,47,48 - 670 131 670 131 669 140.5 c 128,-1,49 - 668 150 668 150 668 154 c 0,50,51 - 668 173 668 173 676 213 c 1,52,-1 - 836 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Amacron -Encoding: 256 256 252 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1516 115<774 1219> -VStem: 748 498 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Emacron -Encoding: 274 274 253 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1516 115<653 1098> -VStem: 627 498 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1167 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Edotaccent -Encoding: 278 278 254 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1516 170<823 954> -VStem: 784 209 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1167 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Imacron -Encoding: 298 298 255 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1516 115<358 803> -VStem: 92 598 332 498 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 872 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Omacron -Encoding: 332 332 256 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1516 115<797 1241> -VStem: 199 258<251 749> 770 498 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Umacron -Encoding: 362 362 257 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1516 115<758 1202> -VStem: 176 254<182 636> 731 498 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: amacron -Encoding: 257 257 258 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1085 115<602 1047> -VStem: 154 246<136 485> 575 498 690 262<96 373> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1116 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: emacron -Encoding: 275 275 259 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1085 115<532 977> -VStem: 150 246<143 446> 506 498 799 233<561 763> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: edotaccent -Encoding: 279 279 260 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1085 170<702 834> -VStem: 150 246<143 446> 664 209 799 233<561 763> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gcommaaccent -Encoding: 291 291 261 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 516> -20 102<418 603> 819 102<553 784 1063 1186> 1085 367<782 813> -VStem: 147 238<126 481> 631 180<1085 1158> 1186 72<770 815> -LayerCount: 2 -Fore -Refer: 105 786 N 1 0 0 1 1022 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: imacron -Encoding: 299 299 262 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1085 115<256 700> -VStem: 133 254<83 364> 229 498 520 70<96 131> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 770 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: omacron -Encoding: 333 333 263 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1085 115<537 981> -VStem: 147 244<117 508> 510 498 821 244<380 773> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: umacron -Encoding: 363 363 264 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1085 115<514 958> -VStem: 154 256<105 501> 487 498 668 260<101 364> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1028 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E02 -Encoding: 7682 7682 265 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<373 608> 727 102<541 682> 1331 102<655 806> 1516 170<711 842> -VStem: 672 209 780 268<296 657> 852 270<1002 1290> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1055 246 2 -Refer: 28 66 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E03 -Encoding: 7683 7683 266 -Width: 1069 -VWidth: 0 -Flags: W -HStem: -20 102<467 694> 819 102<648 849> 1085 170<782 913> 1270 102<289 504> -VStem: 211 242<100 425> 213 70<1221 1259> 410 260<983 1268> 743 209 877 244<389 787> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1126 -184 2 -Refer: 6 98 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0A -Encoding: 7690 7690 267 -Width: 1216 -VWidth: 0 -Flags: W -HStem: 0 102<383 690> 1331 102<666 966> 1516 170<801 932> -VStem: 762 209 1065 264<718 1227> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1145 246 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wgrave -Encoding: 7808 7808 268 -Width: 1701 -VWidth: 0 -Flags: W -HStem: 0 43<461 668 1061 1268> 860 41<940 1169> 1085 403 1393 41<332 579 1775 2042> -VStem: 872 319 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1245 -164 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wacute -Encoding: 7810 7810 269 -Width: 1701 -VWidth: 0 -Flags: W -HStem: 0 43<461 668 1061 1268> 860 41<940 1169> 1083 403 1393 41<332 579 1775 2042> -VStem: 1008 422 -LayerCount: 2 -Fore -Refer: 93 769 S 1 0 0 1 1395 -166 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0B -Encoding: 7691 7691 270 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -20 102<421 631 956 1082> 819 102<584 774> 1085 170<705 836> -VStem: 152 238<130 500> 666 209 1090 70<96 131> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1049 -184 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ygrave -Encoding: 7922 7922 271 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<406 681> 1393 41<377 646 1112 1327> 1495 403 -VStem: 676 319 -AnchorPoint: "ogonek" 569 0 basechar 0 -AnchorPoint: "bottom" 537 0 basechar 0 -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 1049 246 2 -Validated: 1 -EndChar - -StartChar: Ydieresis -Encoding: 376 376 272 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<406 681> 1393 41<377 646 1112 1327> 1516 170<694 825 981 1112> -VStem: 655 209 942 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1182 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1E -Encoding: 7710 7710 273 -Width: 899 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 799 102<567 920> 1331 102<666 1227> 1516 170<823 954> -VStem: 784 209 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1167 246 2 -Refer: 33 70 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1F -Encoding: 7711 7711 274 -Width: 651 -VWidth: 0 -Flags: W -HStem: -276 102<36 155> 799 102<326 391 672 793> 1270 102<764 919> 1516 170<725 856> -VStem: -39 74<-170 -125> 686 209 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1069 246 2 -Refer: 12 102 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E40 -Encoding: 7744 7744 275 -Width: 1480 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 1108 1384> 1393 41<414 700 1411 1706> 1516 170<1034 1165> -VStem: 995 209 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1378 246 2 -Refer: 40 77 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E41 -Encoding: 7745 7745 276 -Width: 1667 -VWidth: 0 -Flags: W -HStem: 0 43<184 450 760 1025 1317 1582> 819 102<226 396 603 881 1198 1436> 1085 170<1044 1176> -VStem: 150 70<770 809> 346 260<527 795> 1006 209 1460 252<431 796> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1389 -184 2 -Refer: 11 109 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E56 -Encoding: 7766 7766 277 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 655 102<532 758> 1331 102<666 881> 1516 170<780 911> -VStem: 741 209 940 266<951 1271> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1124 246 2 -Refer: 29 80 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wgrave -Encoding: 7809 7809 278 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43<384 577 982 1175> 860 41<270 497 901 1095 1499 1688> 1065 403 -VStem: 831 319 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1204 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E57 -Encoding: 7767 7767 279 -Width: 1107 -VWidth: 0 -Flags: W -HStem: -16 102<553 741> 819 102<226 395 681 886> 1085 170<717 848> -VStem: 150 70<770 809> 678 209 909 248<366 760> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1061 -184 2 -Refer: 16 112 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wacute -Encoding: 7811 7811 280 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43<384 577 982 1175> 860 41<270 497 901 1095 1499 1688> 1065 403 -VStem: 950 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1337 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E60 -Encoding: 7776 7776 281 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -20 102<527 773> 1352 102<812 1024> 1516 170<895 1026> -VStem: 207 238<177 350> 430 270<940 1185> 856 209 932 270<279 555> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1239 246 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ygrave -Encoding: 7923 7923 282 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<97 251> 860 41<270 497 901 1090> 1065 403 -VStem: 516 319 -AnchorPoint: "ogonek" 631 0 basechar 0 -AnchorPoint: "bottom" 299 -315 basechar 0 -LayerCount: 2 -Fore -Refer: 24 121 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 889 -184 2 -Validated: 1 -EndChar - -StartChar: Wdieresis -Encoding: 7812 7812 283 -Width: 1701 -VWidth: 0 -Flags: W -HStem: 0 43<461 668 1061 1268> 860 41<940 1169> 1180 170<915 1047 1202 1333> 1393 41<332 579 1775 2042> -VStem: 877 209 1163 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1403 -90 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wdieresis -Encoding: 7813 7813 284 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43<384 577 982 1175> 860 41<270 497 901 1095 1499 1688> 1085 170<850 981 1137 1268> -VStem: 811 209 1098 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1337 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E61 -Encoding: 7777 7777 285 -Width: 860 -VWidth: 0 -Flags: W -HStem: -20 102<290 523> 817 104<550 718> 1085 170<590 721> -VStem: 252 256<549 774> 551 209 596 258<167 388> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 934 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wcircumflex -Encoding: 372 372 286 -Width: 1701 -VWidth: 0 -Flags: W -HStem: 0 43<461 668 1061 1268> 860 41<940 1169> 1393 41<332 579 1775 2042> 1503 299 -VStem: 934 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1485 246 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6A -Encoding: 7786 7786 287 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43<487 763> 1331 102<352 795 1061 1526> 1516 170<924 1055> -VStem: 885 209 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1268 246 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ycircumflex -Encoding: 374 374 288 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<406 681> 1393 41<377 646 1112 1327> 1503 299 -VStem: 631 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1182 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wcircumflex -Encoding: 373 373 289 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43<384 577 982 1175> 860 41<270 497 901 1095 1499 1688> 1073 299 -VStem: 786 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1337 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6B -Encoding: 7787 7787 290 -Width: 669 -VWidth: 0 -Flags: W -HStem: -20 102<395 610> 799 102<291 371 651 788> 1434 170<551 682> -VStem: 229 258<84 376> 512 209 616 70<93 131> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 895 164 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ycircumflex -Encoding: 375 375 291 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<97 251> 860 41<270 497 901 1090> 1073 299 -VStem: 471 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1022 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Rcommaaccent -Encoding: 342 342 292 -Width: 1122 -VWidth: 0 -Flags: W -HStem: -401 49<270 423> -164 57<401 466> 0 43<92 368 748 1012> 655 102<532 607> 1331 102<666 881> -VStem: 485 160<-313 -176> 758 262<0 382> 940 266<951 1271> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1098 0 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Itilde -Encoding: 296 296 293 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1516 141<622 800> 1581 141<424 601> -VStem: 92 598 305 612 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 872 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Lcommaaccent -Encoding: 315 315 294 -Width: 1052 -VWidth: 0 -Flags: W -HStem: -401 49<266 419> -164 57<397 462> 0 102<373 942> 1393 41<404 680> -VStem: 481 160<-313 -176> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1094 0 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gcommaaccent -Encoding: 290 290 295 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -401 49<479 632> -164 57<610 675> -20 102<601 956> 717 102<969 1118> 1331 102<832 1172> -VStem: 201 260<280 770> 694 160<-313 -176> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1307 0 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: rcommaaccent -Encoding: 343 343 296 -Width: 862 -VWidth: 0 -Flags: W -HStem: -401 49<76 228> -164 57<207 271> 0 43<184 450> 819 102<226 409 663 955> -VStem: 150 70<770 809> 291 160<-313 -176> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 903 0 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: itilde -Encoding: 297 297 297 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1085 141<520 697> 1151 141<321 499> -VStem: 133 254<83 364> 203 612 520 70<96 131> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 770 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: lcommaaccent -Encoding: 316 316 298 -Width: 575 -VWidth: 0 -Flags: W -HStem: -401 49<92 245> -164 57<223 288> -20 102<301 515> -VStem: 135 258<84 375> 307 160<-313 -176> 522 70<93 131> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 920 0 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ncommaaccent -Encoding: 325 325 299 -Width: 1261 -VWidth: 0 -Flags: W -HStem: -401 49<377 529> -164 57<508 572> 0 43<92 368 878 1165> 1393 41<414 703 1211 1487> -VStem: 592 160<-313 -176> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1204 0 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Kcommaaccent -Encoding: 310 310 300 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -401 49<336 489> -164 57<467 531> 0 43<92 368 905 1151> 1393 41<414 690 1177 1458> -VStem: 551 160<-313 -176> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1163 0 2 -Refer: 38 75 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Utilde -Encoding: 360 360 301 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1516 141<1021 1199> 1581 141<823 1000> -VStem: 176 254<182 636> 705 612 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ncommaaccent -Encoding: 326 326 302 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -401 49<340 493> -164 57<471 536> 0 43<184 450 729 994> 819 102<226 400 616 855> -VStem: 150 70<770 809> 346 260<527 780> 555 160<-313 -176> 872 246<427 804> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1167 0 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: kcommaaccent -Encoding: 311 311 303 -Width: 978 -VWidth: 0 -Flags: W -HStem: -401 49<266 419> -164 57<397 462> 0 43<143 409 659 909> 860 41<796 1081> 1270 102<289 504> -VStem: 213 70<1221 1259> 410 260<987 1268> 481 160<-313 -176> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1094 0 2 -Refer: 25 107 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: utilde -Encoding: 361 361 304 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1085 141<778 955> 1151 141<579 757> -VStem: 154 256<105 501> 461 612 668 260<101 364> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1028 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: kgreenlandic -Encoding: 312 312 305 -Width: 917 -VWidth: 0 -Flags: W -HStem: 0 43G<82 347 608 848> 860 41G<281 547 745 1020> -LayerCount: 2 -Fore -SplineSet -483 627 m 1,0,-1 - 791 901 l 1,1,-1 - 1020 901 l 1,2,-1 - 571 502 l 1,3,-1 - 848 0 l 1,4,-1 - 631 0 l 1,5,-1 - 424 371 l 1,6,-1 - 338 0 l 1,7,-1 - 82 0 l 1,8,-1 - 291 901 l 1,9,-1 - 547 901 l 1,10,-1 - 483 627 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Tbar -Encoding: 358 358 306 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43G<487 763> 901 102<567 696 985 1110> 1331 102<352 795 1061 1526> -LayerCount: 2 -Fore -SplineSet -543 901 m 1,0,-1 - 567 1004 l 1,1,-1 - 719 1004 l 1,2,-1 - 795 1331 l 1,3,-1 - 328 1331 l 1,4,-1 - 352 1434 l 1,5,-1 - 1554 1434 l 1,6,-1 - 1526 1331 l 1,7,-1 - 1061 1331 l 1,8,-1 - 985 1004 l 1,9,-1 - 1135 1004 l 1,10,-1 - 1110 901 l 1,11,-1 - 963 901 l 1,12,-1 - 754 0 l 1,13,-1 - 487 0 l 1,14,-1 - 696 901 l 1,15,-1 - 543 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tbar -Encoding: 359 359 307 -Width: 669 -VWidth: 0 -Flags: W -HStem: -20 102<395 610> 500 102<193 301 582 735> 799 102<291 371 651 788> -VStem: 229 258<84 380> 616 70<93 131> -LayerCount: 2 -Fore -SplineSet -168 500 m 1,0,-1 - 193 602 l 1,1,-1 - 326 602 l 1,2,-1 - 371 799 l 1,3,-1 - 236 799 l 1,4,-1 - 291 901 l 1,5,-1 - 395 901 l 1,6,-1 - 463 1198 l 1,7,-1 - 727 1229 l 1,8,-1 - 651 901 l 1,9,-1 - 813 901 l 1,10,-1 - 788 799 l 1,11,-1 - 627 799 l 1,12,-1 - 582 602 l 1,13,-1 - 760 602 l 1,14,-1 - 735 500 l 1,15,-1 - 557 500 l 1,16,-1 - 506 276 l 2,17,18 - 487 191 487 191 487 156 c 0,19,20 - 487 82 487 82 539 82 c 0,21,22 - 594 82 594 82 616 131 c 1,23,-1 - 686 131 l 1,24,25 - 672 73 672 73 612 26.5 c 128,-1,26 - 552 -20 552 -20 487 -20 c 0,27,28 - 356 -20 356 -20 292.5 28 c 128,-1,29 - 229 76 229 76 229 156 c 0,30,31 - 229 178 229 178 236 213 c 2,32,-1 - 301 500 l 1,33,-1 - 168 500 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Eng -Encoding: 330 330 308 -Width: 1394 -VWidth: 0 -Flags: W -HStem: -20 102<716 932> 0 43G<147 423> 1270 102<828 1170> -VStem: 1229 264<811 1191> -LayerCount: 2 -Fore -SplineSet -1399 590 m 2,0,1 - 1328 281 1328 281 1179.5 130.5 c 128,-1,2 - 1031 -20 1031 -20 793 -20 c 0,3,4 - 705 -20 705 -20 649 0 c 128,-1,5 - 593 20 593 20 545 72 c 1,6,-1 - 672 178 l 1,7,8 - 730 82 730 82 846 82 c 0,9,10 - 928 82 928 82 1007 230 c 128,-1,11 - 1086 378 1086 378 1135 594 c 2,12,-1 - 1208 918 l 1,13,14 - 1229 1006 1229 1006 1229 1069 c 0,15,16 - 1229 1181 1229 1181 1174 1225.5 c 128,-1,17 - 1119 1270 1119 1270 1024 1270 c 0,18,19 - 926 1270 926 1270 842 1232 c 128,-1,20 - 758 1194 758 1194 676 1135 c 1,21,-1 - 414 0 l 1,22,-1 - 147 0 l 1,23,-1 - 459 1352 l 1,24,-1 - 725 1352 l 1,25,-1 - 711 1282 l 1,26,27 - 721 1287 721 1287 754.5 1303.5 c 128,-1,28 - 788 1320 788 1320 809 1328.5 c 128,-1,29 - 830 1337 830 1337 864.5 1349 c 128,-1,30 - 899 1361 899 1361 937 1366.5 c 128,-1,31 - 975 1372 975 1372 1018 1372 c 0,32,33 - 1149 1372 1149 1372 1254 1336 c 128,-1,34 - 1359 1300 1359 1300 1426 1221.5 c 128,-1,35 - 1493 1143 1493 1143 1493 1034 c 0,36,37 - 1493 992 1493 992 1481 942 c 2,38,-1 - 1399 590 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eng -Encoding: 331 331 309 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -348 102<447 662> 0 43G<184 450> 819 102<226 400 616 855> -VStem: 150 70<770 809> 346 260<527 780> 872 246<427 804> -LayerCount: 2 -Fore -SplineSet -969 -68 m 2,0,1 - 953 -140 953 -140 903.5 -196.5 c 128,-1,2 - 854 -253 854 -253 789.5 -284.5 c 128,-1,3 - 725 -316 725 -316 661 -332 c 128,-1,4 - 597 -348 597 -348 539 -348 c 0,5,6 - 409 -348 409 -348 352 -256 c 1,7,-1 - 496 -195 l 1,8,9 - 518 -246 518 -246 592 -246 c 0,10,11 - 644 -246 644 -246 670.5 -193 c 128,-1,12 - 697 -140 697 -140 729 0 c 2,13,-1 - 838 467 l 1,14,15 - 872 621 872 621 872 700 c 0,16,17 - 872 766 872 766 848 792.5 c 128,-1,18 - 824 819 824 819 776 819 c 0,19,20 - 685 819 685 819 604 768 c 1,21,22 - 606 762 606 762 606 745 c 0,23,24 - 606 718 606 718 600 688 c 2,25,-1 - 440 0 l 1,26,-1 - 184 0 l 1,27,-1 - 328 625 l 1,28,29 - 346 692 346 692 346 745 c 0,30,31 - 346 819 346 819 295 819 c 0,32,33 - 241 819 241 819 219 770 c 1,34,-1 - 150 770 l 1,35,36 - 162 828 162 828 222.5 875 c 128,-1,37 - 283 922 283 922 348 922 c 0,38,39 - 494 922 494 922 561 858 c 1,40,41 - 675 922 675 922 770 922 c 0,42,43 - 1118 922 1118 922 1118 641 c 0,44,45 - 1118 571 1118 571 1098 492 c 1,46,-1 - 969 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: asciicircum -Encoding: 94 94 310 -Width: 917 -VWidth: 0 -Flags: W -LayerCount: 2 -Fore -SplineSet -647 819 m 1,0,-1 - 934 209 l 1,1,-1 - 801 131 l 1,2,-1 - 592 578 l 1,3,-1 - 178 131 l 1,4,-1 - 82 209 l 1,5,-1 - 647 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: asciitilde -Encoding: 126 126 311 -Width: 831 -VWidth: 0 -Flags: W -HStem: 399 158<571 750> 465 158<317 496> -LayerCount: 2 -Fore -SplineSet -809 623 m 1,0,-1 - 893 623 l 1,1,2 - 865 540 865 540 785 469.5 c 128,-1,3 - 705 399 705 399 621 399 c 0,4,5 - 565 399 565 399 527.5 409.5 c 128,-1,6 - 490 420 490 420 476 432 c 128,-1,7 - 462 444 462 444 442.5 454.5 c 128,-1,8 - 423 465 423 465 399 465 c 0,9,10 - 350 465 350 465 309.5 448 c 128,-1,11 - 269 431 269 431 258 399 c 1,12,-1 - 174 399 l 1,13,14 - 204 482 204 482 283 552.5 c 128,-1,15 - 362 623 362 623 446 623 c 0,16,17 - 502 623 502 623 539.5 612.5 c 128,-1,18 - 577 602 577 602 591 590 c 128,-1,19 - 605 578 605 578 624.5 567.5 c 128,-1,20 - 644 557 644 557 668 557 c 0,21,22 - 717 557 717 557 757.5 574 c 128,-1,23 - 798 591 798 591 809 623 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: exclamdown -Encoding: 161 161 312 -Width: 448 -VWidth: 0 -Flags: W -HStem: 1032 164<389 565> -VStem: 37 567 -LayerCount: 2 -Fore -SplineSet -565 1032 m 1,0,-1 - 350 1032 l 1,1,-1 - 389 1196 l 1,2,-1 - 604 1196 l 1,3,-1 - 565 1032 l 1,0,-1 -37 -238 m 17,4,-1 - 313 827 l 1,5,-1 - 508 827 l 1,6,-1 - 293 -238 l 1,7,-1 - 37 -238 l 17,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: questiondown -Encoding: 191 191 313 -Width: 944 -VWidth: 0 -Flags: W -HStem: -176 102<390 637> 612 215<629 784> 1032 164<694 870> -VStem: 94 246<-5 366> -LayerCount: 2 -Fore -SplineSet -870 1032 m 1,0,-1 - 655 1032 l 1,1,-1 - 694 1196 l 1,2,-1 - 909 1196 l 1,3,-1 - 870 1032 l 1,0,-1 -94 174 m 0,4,5 - 94 282 94 282 135 377 c 128,-1,6 - 176 472 176 472 245.5 539 c 128,-1,7 - 315 606 315 606 402.5 649.5 c 128,-1,8 - 490 693 490 693 586 709 c 1,9,-1 - 629 827 l 1,10,-1 - 803 827 l 1,11,-1 - 784 612 l 1,12,-1 - 676 612 l 2,13,14 - 615 612 615 612 563.5 589 c 128,-1,15 - 512 566 512 566 478.5 529.5 c 128,-1,16 - 445 493 445 493 418.5 444.5 c 128,-1,17 - 392 396 392 396 378 349 c 128,-1,18 - 364 302 364 302 354.5 253 c 128,-1,19 - 345 204 345 204 342.5 172 c 128,-1,20 - 340 140 340 140 340 117 c 0,21,22 - 340 24 340 24 384.5 -25 c 128,-1,23 - 429 -74 429 -74 528 -74 c 0,24,25 - 558 -74 558 -74 578.5 -69 c 128,-1,26 - 599 -64 599 -64 615 -51.5 c 128,-1,27 - 631 -39 631 -39 640.5 -27.5 c 128,-1,28 - 650 -16 650 -16 667.5 8 c 128,-1,29 - 685 32 685 32 700 49 c 1,30,-1 - 883 2 l 1,31,32 - 702 -176 702 -176 473 -176 c 0,33,34 - 302 -176 302 -176 198 -81.5 c 128,-1,35 - 94 13 94 13 94 174 c 0,4,5 -EndSplineSet -Validated: 1 -EndChar - -StartChar: cent -Encoding: 162 162 314 -Width: 944 -VWidth: 0 -Flags: W -HStem: 20 102<478 530> 778 102<648 706> -VStem: 141 248<198 530> 797 211<630 736> -LayerCount: 2 -Fore -SplineSet -141 336 m 0,0,1 - 141 513 141 513 258 665.5 c 128,-1,2 - 375 818 375 818 563 864 c 1,3,-1 - 596 1004 l 1,4,-1 - 676 1004 l 1,5,-1 - 647 879 l 1,6,7 - 659 881 659 881 686 881 c 0,8,9 - 715 881 715 881 729 879 c 1,10,-1 - 758 1004 l 1,11,-1 - 838 1004 l 1,12,-1 - 805 864 l 1,13,14 - 966 811 966 811 1008 635 c 1,15,-1 - 797 567 l 1,16,17 - 796 582 796 582 795 618 c 128,-1,18 - 794 654 794 654 792.5 669 c 128,-1,19 - 791 684 791 684 787 705 c 128,-1,20 - 783 726 783 726 776 739 c 1,21,-1 - 637 129 l 1,22,23 - 661 135 661 135 677 149 c 128,-1,24 - 693 163 693 163 717.5 196.5 c 128,-1,25 - 742 230 742 230 756 246 c 1,26,-1 - 907 199 l 1,27,28 - 835 127 835 127 766 84 c 128,-1,29 - 697 41 697 41 612 27 c 1,30,-1 - 582 -102 l 1,31,-1 - 502 -102 l 1,32,-1 - 530 20 l 1,33,-1 - 528 20 l 2,34,35 - 518 20 518 20 451 25 c 1,36,-1 - 420 -102 l 1,37,-1 - 340 -102 l 1,38,-1 - 373 39 l 1,39,40 - 264 71 264 71 202.5 146 c 128,-1,41 - 141 221 141 221 141 336 c 0,0,1 -530 715 m 1,42,43 - 466 653 466 653 427.5 515.5 c 128,-1,44 - 389 378 389 378 389 291 c 0,45,46 - 389 233 389 233 410 195 c 1,47,-1 - 530 715 l 1,42,43 -477 139 m 1,48,49 - 510 126 510 126 555 123 c 1,50,-1 - 707 778 l 1,51,-1 - 694 778 l 2,52,53 - 650 778 650 778 623 770 c 1,54,-1 - 477 139 l 1,48,49 -EndSplineSet -Validated: 1 -EndChar - -StartChar: brokenbar -Encoding: 166 166 315 -Width: 376 -VWidth: 0 -Flags: W -HStem: 0 43G<92 286> 1393 41G<414 608> -VStem: 92 516 -LayerCount: 2 -Fore -SplineSet -608 1434 m 25,0,-1 - 457 778 l 1,1,-1 - 272 778 l 1,2,-1 - 424 1434 l 1,3,-1 - 608 1434 l 25,0,-1 -428 655 m 25,4,-1 - 276 0 l 1,5,-1 - 92 0 l 1,6,-1 - 244 655 l 1,7,-1 - 428 655 l 25,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: OE -Encoding: 338 338 316 -Width: 1851 -VWidth: 0 -Flags: W -HStem: -20 102<571 852> 0 102<1262 1831> 799 102<1446 1798> 1331 102<1544 2105> 1352 102<822 1121> -VStem: 199 258<251 749> -LayerCount: 2 -Fore -SplineSet -1831 0 m 1,0,-1 - 971 0 l 1,1,-1 - 983 53 l 1,2,3 - 828 -20 828 -20 659 -20 c 0,4,5 - 571 -20 571 -20 490.5 11 c 128,-1,6 - 410 42 410 42 343.5 102 c 128,-1,7 - 277 162 277 162 238 262 c 128,-1,8 - 199 362 199 362 199 489 c 0,9,10 - 199 624 199 624 236.5 763 c 128,-1,11 - 274 902 274 902 345.5 1025 c 128,-1,12 - 417 1148 417 1148 511 1244.5 c 128,-1,13 - 605 1341 605 1341 727.5 1397.5 c 128,-1,14 - 850 1454 850 1454 981 1454 c 0,15,16 - 1160 1454 1160 1454 1288 1372 c 1,17,-1 - 1303 1434 l 1,18,-1 - 2130 1434 l 1,19,-1 - 2105 1331 l 1,20,-1 - 1544 1331 l 1,21,-1 - 1446 901 l 1,22,-1 - 1823 901 l 1,23,-1 - 1798 799 l 1,24,-1 - 1421 799 l 1,25,-1 - 1262 102 l 1,26,-1 - 1855 102 l 1,27,-1 - 1831 0 l 1,0,-1 -969 1352 m 0,28,29 - 875 1352 875 1352 790.5 1287 c 128,-1,30 - 706 1222 706 1222 646.5 1120 c 128,-1,31 - 587 1018 587 1018 543 894.5 c 128,-1,32 - 499 771 499 771 478 653 c 128,-1,33 - 457 535 457 535 457 440 c 0,34,35 - 457 262 457 262 524.5 172 c 128,-1,36 - 592 82 592 82 694 82 c 0,37,38 - 790 82 790 82 881 143.5 c 128,-1,39 - 972 205 972 205 1047 326 c 1,40,-1 - 1227 1110 l 1,41,42 - 1207 1233 1207 1233 1140.5 1292.5 c 128,-1,43 - 1074 1352 1074 1352 969 1352 c 0,28,29 -EndSplineSet -Validated: 1 -EndChar - -StartChar: oe -Encoding: 339 339 317 -Width: 1589 -VWidth: 0 -Flags: W -HStem: -20 102<427 646 1063 1330> 451 102<1073 1415> 819 102<586 795 1201 1406> -VStem: 147 244<117 508> 1423 233<554 763> -LayerCount: 2 -Fore -SplineSet -1073 553 m 1,0,-1 - 1407 553 l 1,1,2 - 1423 638 1423 638 1423 694 c 0,3,4 - 1423 755 1423 755 1401.5 787 c 128,-1,5 - 1380 819 1380 819 1327 819 c 0,6,7 - 1234 819 1234 819 1173.5 751.5 c 128,-1,8 - 1113 684 1113 684 1073 553 c 1,0,-1 -147 301 m 0,9,10 - 147 430 147 430 197.5 547.5 c 128,-1,11 - 248 665 248 665 327 745.5 c 128,-1,12 - 406 826 406 826 504 874 c 128,-1,13 - 602 922 602 922 696 922 c 0,14,15 - 913 922 913 922 1006 795 c 1,16,17 - 1079 856 1079 856 1161.5 889 c 128,-1,18 - 1244 922 1244 922 1321 922 c 0,19,20 - 1405 922 1405 922 1471 893.5 c 128,-1,21 - 1537 865 1537 865 1577 815.5 c 128,-1,22 - 1617 766 1617 766 1637 704 c 128,-1,23 - 1657 642 1657 642 1657 571 c 0,24,25 - 1657 528 1657 528 1642 451 c 1,26,-1 - 1047 451 l 1,27,28 - 1020 330 1020 330 1020 262 c 0,29,30 - 1020 172 1020 172 1061.5 127 c 128,-1,31 - 1103 82 1103 82 1198 82 c 0,32,33 - 1272 82 1272 82 1313.5 113 c 128,-1,34 - 1355 144 1355 144 1380 205 c 1,35,-1 - 1565 158 l 1,36,37 - 1481 76 1481 76 1373.5 28 c 128,-1,38 - 1266 -20 1266 -20 1145 -20 c 0,39,40 - 944 -20 944 -20 846 104 c 1,41,42 - 695 -20 695 -20 479 -20 c 0,43,44 - 318 -20 318 -20 232.5 64.5 c 128,-1,45 - 147 149 147 149 147 301 c 0,9,10 -791 451 m 1,46,47 - 821 588 821 588 821 664 c 0,48,49 - 821 819 821 819 702 819 c 0,50,51 - 627 819 627 819 568 763 c 128,-1,52 - 509 707 509 707 477 631 c 128,-1,53 - 445 555 445 555 424.5 466.5 c 128,-1,54 - 404 378 404 378 397.5 323.5 c 128,-1,55 - 391 269 391 269 391 246 c 0,56,57 - 391 165 391 165 424.5 123.5 c 128,-1,58 - 458 82 458 82 532 82 c 0,59,60 - 584 82 584 82 625 108 c 128,-1,61 - 666 134 666 134 696.5 186 c 128,-1,62 - 727 238 727 238 748.5 300.5 c 128,-1,63 - 770 363 770 363 791 451 c 1,46,47 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Euro -Encoding: 8364 8364 318 -Width: 1204 -VWidth: 0 -Flags: W -HStem: -20 102<638 886> 512 102<244 309 571 848> 819 102<315 365 649 918> 1331 102<867 1143> -VStem: 309 244<247 512> 317 254<614 810> -LayerCount: 2 -Fore -SplineSet -1171 209 m 1,0,1 - 1083 107 1083 107 958.5 43.5 c 128,-1,2 - 834 -20 834 -20 705 -20 c 0,3,4 - 636 -20 636 -20 568 10.5 c 128,-1,5 - 500 41 500 41 441 100 c 128,-1,6 - 382 159 382 159 345.5 259.5 c 128,-1,7 - 309 360 309 360 309 485 c 2,8,-1 - 309 512 l 1,9,-1 - 190 512 l 1,10,-1 - 244 614 l 1,11,-1 - 317 614 l 1,12,13 - 333 710 333 710 365 819 c 1,14,-1 - 260 819 l 1,15,-1 - 315 922 l 1,16,-1 - 403 922 l 1,17,18 - 446 1027 446 1027 505.5 1114 c 128,-1,19 - 565 1201 565 1201 628 1259 c 128,-1,20 - 691 1317 691 1317 759.5 1357.5 c 128,-1,21 - 828 1398 828 1398 890 1416 c 128,-1,22 - 952 1434 952 1434 1008 1434 c 0,23,24 - 1329 1434 1329 1434 1405 1245 c 1,25,-1 - 1198 1178 l 1,26,27 - 1185 1216 1185 1216 1178.5 1232 c 128,-1,28 - 1172 1248 1172 1248 1157 1272 c 128,-1,29 - 1142 1296 1142 1296 1125 1305.5 c 128,-1,30 - 1108 1315 1108 1315 1078.5 1323 c 128,-1,31 - 1049 1331 1049 1331 1008 1331 c 0,32,33 - 890 1331 890 1331 803 1232.5 c 128,-1,34 - 716 1134 716 1134 649 922 c 1,35,-1 - 942 922 l 1,36,-1 - 918 819 l 1,37,-1 - 618 819 l 1,38,39 - 583 676 583 676 571 614 c 1,40,-1 - 870 614 l 1,41,-1 - 848 512 l 1,42,-1 - 559 512 l 1,43,44 - 553 453 553 453 553 403 c 0,45,46 - 553 242 553 242 607.5 162 c 128,-1,47 - 662 82 662 82 752 82 c 0,48,49 - 773 82 773 82 790 83.5 c 128,-1,50 - 807 85 807 85 824 92 c 128,-1,51 - 841 99 841 99 852 102.5 c 128,-1,52 - 863 106 863 106 879 120 c 128,-1,53 - 895 134 895 134 902 139.5 c 128,-1,54 - 909 145 909 145 926 165.5 c 128,-1,55 - 943 186 943 186 948 193 c 128,-1,56 - 953 200 953 200 973.5 227.5 c 128,-1,57 - 994 255 994 255 1001 264 c 1,58,-1 - 1171 209 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: yen -Encoding: 165 165 319 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43G<406 681> 336 102<395 483 772 856> 549 102<444 532 821 905> 1393 41G<377 646 1112 1327> -AnchorPoint: "top" 868 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -774 936 m 1,0,-1 - 1143 1434 l 1,1,-1 - 1327 1434 l 1,2,-1 - 856 801 l 1,3,-1 - 821 651 l 1,4,-1 - 930 651 l 1,5,-1 - 905 549 l 1,6,-1 - 799 549 l 1,7,-1 - 772 438 l 1,8,-1 - 881 438 l 1,9,-1 - 856 336 l 1,10,-1 - 750 336 l 1,11,-1 - 672 0 l 1,12,-1 - 406 0 l 1,13,-1 - 483 336 l 1,14,-1 - 371 336 l 1,15,-1 - 395 438 l 1,16,-1 - 506 438 l 1,17,-1 - 532 549 l 1,18,-1 - 420 549 l 1,19,-1 - 444 651 l 1,20,-1 - 555 651 l 1,21,-1 - 573 727 l 1,22,-1 - 377 1434 l 1,23,-1 - 635 1434 l 1,24,-1 - 774 936 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: sterling -Encoding: 163 163 320 -Width: 903 -VWidth: 0 -Flags: W -HStem: 0 102<76 134 274 821> 696 102<332 358 629 819> 1169 102<725 934> -LayerCount: 2 -Fore -SplineSet -428 991 m 2,0,1 - 445 1064 445 1064 487.5 1120 c 128,-1,2 - 530 1176 530 1176 588 1208 c 128,-1,3 - 646 1240 646 1240 709.5 1256 c 128,-1,4 - 773 1272 773 1272 840 1272 c 0,5,6 - 912 1272 912 1272 955 1250 c 128,-1,7 - 998 1228 998 1228 1028 1180 c 1,8,-1 - 883 1118 l 1,9,10 - 861 1169 861 1169 788 1169 c 0,11,12 - 770 1169 770 1169 757 1162.5 c 128,-1,13 - 744 1156 744 1156 727.5 1133 c 128,-1,14 - 711 1110 711 1110 693.5 1058.5 c 128,-1,15 - 676 1007 676 1007 657 924 c 2,16,-1 - 629 799 l 1,17,-1 - 844 799 l 1,18,-1 - 819 696 l 1,19,-1 - 604 696 l 1,20,-1 - 547 446 l 2,21,22 - 534 388 534 388 502 332.5 c 128,-1,23 - 470 277 470 277 437 240 c 128,-1,24 - 404 203 404 203 364 169 c 128,-1,25 - 324 135 324 135 306 122.5 c 128,-1,26 - 288 110 288 110 274 102 c 1,27,-1 - 846 102 l 1,28,-1 - 821 0 l 1,29,-1 - 51 0 l 1,30,-1 - 76 102 l 1,31,32 - 96 102 96 102 142 154 c 128,-1,33 - 188 206 188 206 236 289.5 c 128,-1,34 - 284 373 284 373 301 446 c 2,35,-1 - 358 696 l 1,36,-1 - 276 696 l 1,37,-1 - 332 799 l 1,38,-1 - 383 799 l 1,39,-1 - 428 991 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: section -Encoding: 167 167 321 -Width: 808 -VWidth: 0 -Flags: W -HStem: -18 102<303 479> 1268 102<642 818> -VStem: 119 150<115 219> 274 227<544 775> 344 227<970 1175> 551 225<176 382> 621 225<575 806> 854 147<1133 1230> -LayerCount: 2 -Fore -SplineSet -776 324 m 0,0,1 - 776 233 776 233 718 153.5 c 128,-1,2 - 660 74 660 74 566.5 28 c 128,-1,3 - 473 -18 473 -18 371 -18 c 0,4,5 - 151 -18 151 -18 119 217 c 1,6,-1 - 268 238 l 1,7,8 - 272 206 272 206 277.5 184 c 128,-1,9 - 283 162 283 162 296 136.5 c 128,-1,10 - 309 111 309 111 334.5 97.5 c 128,-1,11 - 360 84 360 84 397 84 c 0,12,13 - 441 84 441 84 478.5 125.5 c 128,-1,14 - 516 167 516 167 533.5 215.5 c 128,-1,15 - 551 264 551 264 551 299 c 0,16,17 - 551 335 551 335 530.5 360.5 c 128,-1,18 - 510 386 510 386 479 399.5 c 128,-1,19 - 448 413 448 413 412.5 430 c 128,-1,20 - 377 447 377 447 346 465.5 c 128,-1,21 - 315 484 315 484 294.5 520.5 c 128,-1,22 - 274 557 274 557 274 608 c 0,23,24 - 274 627 274 627 278 652.5 c 128,-1,25 - 282 678 282 678 295 720.5 c 128,-1,26 - 308 763 308 763 340 809.5 c 128,-1,27 - 372 856 372 856 420 893 c 1,28,29 - 344 944 344 944 344 1028 c 0,30,31 - 344 1165 344 1165 469 1267.5 c 128,-1,32 - 594 1370 594 1370 750 1370 c 0,33,34 - 969 1370 969 1370 1001 1135 c 1,35,-1 - 854 1114 l 1,36,37 - 849 1147 849 1147 843.5 1168 c 128,-1,38 - 838 1189 838 1189 824.5 1215 c 128,-1,39 - 811 1241 811 1241 785.5 1254.5 c 128,-1,40 - 760 1268 760 1268 723 1268 c 0,41,42 - 679 1268 679 1268 642 1226.5 c 128,-1,43 - 605 1185 605 1185 588 1136.5 c 128,-1,44 - 571 1088 571 1088 571 1053 c 0,45,46 - 571 1011 571 1011 599.5 983.5 c 128,-1,47 - 628 956 628 956 668 939 c 128,-1,48 - 708 922 708 922 748.5 902.5 c 128,-1,49 - 789 883 789 883 817.5 843 c 128,-1,50 - 846 803 846 803 846 743 c 0,51,52 - 846 723 846 723 842 698.5 c 128,-1,53 - 838 674 838 674 826 631 c 128,-1,54 - 814 588 814 588 782 542 c 128,-1,55 - 750 496 750 496 702 459 c 1,56,57 - 776 407 776 407 776 324 c 0,0,1 -549 541 m 1,58,59 - 583 575 583 575 602 627 c 128,-1,60 - 621 679 621 679 621 717 c 0,61,62 - 621 777 621 777 571 811 c 1,63,64 - 538 778 538 778 520 726 c 128,-1,65 - 502 674 502 674 502 635 c 0,66,67 - 502 573 502 573 549 541 c 1,58,59 -EndSplineSet -Validated: 1 -EndChar - -StartChar: copyright -Encoding: 169 169 322 -Width: 1101 -VWidth: 0 -Flags: W -HStem: -20 82<447 689> 193 61<568 694> 733 61<661 776> 946 82<634 876> -VStem: 125 209<181 595> 389 168<272 584> 989 209<422 827> -LayerCount: 2 -Fore -SplineSet -764 946 m 0,0,1 - 690 946 690 946 612 896 c 128,-1,2 - 534 846 534 846 473 766.5 c 128,-1,3 - 412 687 412 687 373 581 c 128,-1,4 - 334 475 334 475 334 371 c 0,5,6 - 334 233 334 233 398 147 c 128,-1,7 - 462 61 462 61 559 61 c 0,8,9 - 618 61 618 61 680.5 93 c 128,-1,10 - 743 125 743 125 797.5 181.5 c 128,-1,11 - 852 238 852 238 895.5 309.5 c 128,-1,12 - 939 381 939 381 964 467 c 128,-1,13 - 989 553 989 553 989 637 c 0,14,15 - 989 774 989 774 925 860 c 128,-1,16 - 861 946 861 946 764 946 c 0,0,1 -143 504 m 0,17,18 - 170 622 170 622 227.5 716.5 c 128,-1,19 - 285 811 285 811 353 868 c 128,-1,20 - 421 925 421 925 501.5 962.5 c 128,-1,21 - 582 1000 582 1000 650.5 1014 c 128,-1,22 - 719 1028 719 1028 782 1028 c 0,23,24 - 836 1028 836 1028 890 1017.5 c 128,-1,25 - 944 1007 944 1007 1000.5 979.5 c 128,-1,26 - 1057 952 1057 952 1100 910.5 c 128,-1,27 - 1143 869 1143 869 1170.5 802 c 128,-1,28 - 1198 735 1198 735 1198 651 c 0,29,30 - 1198 587 1198 587 1180 504 c 0,31,32 - 1153 385 1153 385 1095 291 c 128,-1,33 - 1037 197 1037 197 969.5 140 c 128,-1,34 - 902 83 902 83 821.5 45.5 c 128,-1,35 - 741 8 741 8 672.5 -6 c 128,-1,36 - 604 -20 604 -20 541 -20 c 0,37,38 - 487 -20 487 -20 433 -9.5 c 128,-1,39 - 379 1 379 1 322.5 28.5 c 128,-1,40 - 266 56 266 56 223 97 c 128,-1,41 - 180 138 180 138 152.5 205 c 128,-1,42 - 125 272 125 272 125 356 c 0,43,44 - 125 422 125 422 143 504 c 0,17,18 -389 412 m 0,45,46 - 389 557 389 557 487 676 c 128,-1,47 - 585 795 585 795 719 795 c 0,48,49 - 811 795 811 795 858 773 c 128,-1,50 - 905 751 905 751 930 705 c 1,51,-1 - 788 670 l 1,52,53 - 785 676 785 676 780.5 692.5 c 128,-1,54 - 776 709 776 709 772 715 c 128,-1,55 - 768 721 768 721 754 727 c 128,-1,56 - 740 733 740 733 717 733 c 0,57,58 - 680 733 680 733 649.5 692.5 c 128,-1,59 - 619 652 619 652 602.5 594 c 128,-1,60 - 586 536 586 536 575 478 c 0,61,62 - 564 418 564 418 560 378 c 2,63,-1 - 557 338 l 1,64,65 - 557 294 557 294 573 274 c 128,-1,66 - 589 254 589 254 623 254 c 0,67,68 - 655 254 655 254 673.5 265 c 128,-1,69 - 692 276 692 276 707.5 300.5 c 128,-1,70 - 723 325 723 325 727 330 c 1,71,-1 - 840 299 l 1,72,73 - 734 193 734 193 596 193 c 0,74,75 - 515 193 515 193 452 249.5 c 128,-1,76 - 389 306 389 306 389 412 c 0,45,46 -EndSplineSet -Validated: 1 -EndChar - -StartChar: registered -Encoding: 174 174 323 -Width: 1101 -VWidth: 0 -Flags: W -HStem: -20 82<447 690> 739 61<676 732> 946 82<632 876> -VStem: 125 209<181 590> 666 133<207 430> 741 139<561 736> 989 209<418 827> -LayerCount: 2 -Fore -SplineSet -764 946 m 0,0,1 - 690 946 690 946 612 896 c 128,-1,2 - 534 846 534 846 473 766.5 c 128,-1,3 - 412 687 412 687 373 581 c 128,-1,4 - 334 475 334 475 334 371 c 0,5,6 - 334 233 334 233 398 147 c 128,-1,7 - 462 61 462 61 559 61 c 0,8,9 - 618 61 618 61 680.5 93 c 128,-1,10 - 743 125 743 125 797.5 181.5 c 128,-1,11 - 852 238 852 238 895.5 309.5 c 128,-1,12 - 939 381 939 381 964 467 c 128,-1,13 - 989 553 989 553 989 637 c 0,14,15 - 989 774 989 774 925 860 c 128,-1,16 - 861 946 861 946 764 946 c 0,0,1 -782 1028 m 0,17,18 - 836 1028 836 1028 890 1017.5 c 128,-1,19 - 944 1007 944 1007 1000.5 979.5 c 128,-1,20 - 1057 952 1057 952 1100 910.5 c 128,-1,21 - 1143 869 1143 869 1170.5 802 c 128,-1,22 - 1198 735 1198 735 1198 651 c 0,23,24 - 1198 516 1198 516 1145.5 392 c 128,-1,25 - 1093 268 1093 268 1005 177.5 c 128,-1,26 - 917 87 917 87 795.5 33.5 c 128,-1,27 - 674 -20 674 -20 541 -20 c 0,28,29 - 487 -20 487 -20 433 -9.5 c 128,-1,30 - 379 1 379 1 322.5 28.5 c 128,-1,31 - 266 56 266 56 223 97 c 128,-1,32 - 180 138 180 138 152.5 205 c 128,-1,33 - 125 272 125 272 125 356 c 0,34,35 - 125 537 125 537 213 691.5 c 128,-1,36 - 301 846 301 846 452.5 937 c 128,-1,37 - 604 1028 604 1028 782 1028 c 0,17,18 -881 670 m 0,38,39 - 881 614 881 614 841.5 561 c 128,-1,40 - 802 508 802 508 741 485 c 1,41,42 - 759 454 759 454 779 392 c 128,-1,43 - 799 330 799 330 799 268 c 0,44,45 - 799 234 799 234 791 207 c 1,46,-1 - 657 207 l 1,47,48 - 666 242 666 242 666 272 c 0,49,50 - 666 328 666 328 648.5 375.5 c 128,-1,51 - 631 423 631 423 608 446 c 1,52,-1 - 553 207 l 1,53,-1 - 412 207 l 1,54,-1 - 549 801 l 1,55,-1 - 727 801 l 2,56,57 - 809 801 809 801 845 762.5 c 128,-1,58 - 881 724 881 724 881 670 c 0,38,39 -629 530 m 1,59,60 - 679 530 679 530 710 574 c 128,-1,61 - 741 618 741 618 741 666 c 0,62,63 - 741 739 741 739 676 739 c 1,64,-1 - 629 530 l 1,59,60 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ordfeminine -Encoding: 170 170 324 -Width: 677 -VWidth: 0 -Flags: W -HStem: 348 61<166 694> 516 61<327 507 578 704> 938 61<452 576> -VStem: 229 137<579 838> 508 150<585 698> 709 45<581 602> -LayerCount: 2 -Fore -SplineSet -166 410 m 1,0,-1 - 709 410 l 1,1,-1 - 694 348 l 1,2,-1 - 152 348 l 1,3,-1 - 166 410 l 1,0,-1 -229 686 m 0,4,5 - 229 801 229 801 316 900 c 128,-1,6 - 403 999 403 999 500 999 c 0,7,8 - 538 999 538 999 569.5 996.5 c 128,-1,9 - 601 994 601 994 619.5 992 c 128,-1,10 - 638 990 638 990 658.5 983.5 c 128,-1,11 - 679 977 679 977 685 974.5 c 128,-1,12 - 691 972 691 972 708.5 963.5 c 128,-1,13 - 726 955 726 955 729 954 c 1,14,-1 - 664 672 l 2,15,16 - 657 640 657 640 657 625 c 0,17,18 - 657 603 657 603 662 590.5 c 128,-1,19 - 667 578 667 578 674 578 c 0,20,21 - 703 578 703 578 709 602 c 1,22,-1 - 754 602 l 1,23,24 - 745 562 745 562 689 539 c 128,-1,25 - 633 516 633 516 592 516 c 0,26,27 - 555 516 555 516 526 549 c 1,28,29 - 445 516 445 516 375 516 c 0,30,31 - 308 516 308 516 268.5 564 c 128,-1,32 - 229 612 229 612 229 686 c 0,4,5 -502 938 m 0,33,34 - 452 938 452 938 409.5 835.5 c 128,-1,35 - 367 733 367 733 367 645 c 0,36,37 - 367 578 367 578 406 578 c 0,38,39 - 453 578 453 578 508 600 c 1,40,41 - 506 614 506 614 510 639 c 1,42,-1 - 578 928 l 1,43,44 - 545 938 545 938 502 938 c 0,33,34 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ordmasculine -Encoding: 186 186 325 -Width: 620 -VWidth: 0 -Flags: W -HStem: 348 61<166 629> 516 61<403 500> 938 61<472 570> -VStem: 250 141<580 846> 580 139<669 937> -LayerCount: 2 -Fore -SplineSet -166 410 m 1,0,-1 - 643 410 l 1,1,-1 - 629 348 l 1,2,-1 - 152 348 l 1,3,-1 - 166 410 l 1,0,-1 -451 578 m 0,4,5 - 479 578 479 578 504 607 c 128,-1,6 - 529 636 529 636 545 679 c 128,-1,7 - 561 722 561 722 570.5 768.5 c 128,-1,8 - 580 815 580 815 580 852 c 0,9,10 - 580 938 580 938 535 938 c 0,11,12 - 498 938 498 938 468 904.5 c 128,-1,13 - 438 871 438 871 422.5 823 c 128,-1,14 - 407 775 407 775 399 733 c 128,-1,15 - 391 691 391 691 391 664 c 0,16,17 - 391 578 391 578 451 578 c 0,4,5 -719 831 m 0,18,19 - 719 795 719 795 710 755.5 c 128,-1,20 - 701 716 701 716 678.5 672.5 c 128,-1,21 - 656 629 656 629 623 595 c 128,-1,22 - 590 561 590 561 537 538.5 c 128,-1,23 - 484 516 484 516 420 516 c 0,24,25 - 338 516 338 516 294 560 c 128,-1,26 - 250 604 250 604 250 682 c 0,27,28 - 250 750 250 750 276.5 810.5 c 128,-1,29 - 303 871 303 871 344.5 911.5 c 128,-1,30 - 386 952 386 952 436 975.5 c 128,-1,31 - 486 999 486 999 532 999 c 0,32,33 - 619 999 619 999 669 956 c 128,-1,34 - 719 913 719 913 719 831 c 0,18,19 -EndSplineSet -Validated: 1 -EndChar - -StartChar: guilsinglright -Encoding: 8250 8250 326 -Width: 630 -VWidth: 0 -Flags: W -VStem: 131 502 -LayerCount: 2 -Fore -SplineSet -481 451 m 1,0,-1 - 283 778 l 1,1,-1 - 379 864 l 1,2,-1 - 633 451 l 1,3,-1 - 188 39 l 1,4,-1 - 131 125 l 1,5,-1 - 481 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: guilsinglleft -Encoding: 8249 8249 327 -Width: 630 -VWidth: 0 -Flags: W -VStem: 207 502 -LayerCount: 2 -Fore -SplineSet -358 453 m 1,0,-1 - 557 125 l 1,1,-1 - 459 39 l 1,2,-1 - 207 453 l 1,3,-1 - 649 864 l 1,4,-1 - 709 778 l 1,5,-1 - 358 453 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: guillemotleft -Encoding: 171 171 328 -Width: 856 -VWidth: 0 -Flags: W -VStem: 207 502 473 502 -LayerCount: 2 -Fore -Refer: 327 8249 N 1 0 0 1 266 0 2 -Refer: 327 8249 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: guillemotright -Encoding: 187 187 329 -Width: 856 -VWidth: 0 -Flags: W -VStem: 131 502 397 502 -LayerCount: 2 -Fore -Refer: 326 8250 N 1 0 0 1 266 0 2 -Refer: 326 8250 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: quoteleft -Encoding: 8216 8216 330 -Width: 397 -VWidth: 0 -Flags: W -HStem: 985 367<471 510> -VStem: 319 188<985 1058> -LayerCount: 2 -Fore -SplineSet -598 1352 m 1,0,1 - 510 1255 510 1255 510 1161 c 0,2,3 - 510 1146 510 1146 513 1113 c 128,-1,4 - 516 1080 516 1080 516 1059 c 0,5,6 - 516 1021 516 1021 508 985 c 1,7,-1 - 319 985 l 1,8,9 - 334 1049 334 1049 350.5 1102 c 128,-1,10 - 367 1155 367 1155 377.5 1185 c 128,-1,11 - 388 1215 388 1215 407.5 1248.5 c 128,-1,12 - 427 1282 427 1282 432.5 1290.5 c 128,-1,13 - 438 1299 438 1299 459.5 1325 c 128,-1,14 - 481 1351 481 1351 481 1352 c 1,15,-1 - 598 1352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quoteright -Encoding: 8217 8217 331 -Width: 397 -VWidth: 0 -Flags: W -HStem: 985 367<408 447> -VStem: 410 188<1279 1352> -LayerCount: 2 -Fore -SplineSet -319 985 m 1,0,1 - 408 1081 408 1081 408 1176 c 0,2,3 - 408 1190 408 1190 404.5 1224 c 128,-1,4 - 401 1258 401 1258 401 1278 c 0,5,6 - 401 1312 401 1312 410 1352 c 1,7,-1 - 598 1352 l 1,8,9 - 583 1288 583 1288 566.5 1235 c 128,-1,10 - 550 1182 550 1182 539.5 1152 c 128,-1,11 - 529 1122 529 1122 509.5 1088.5 c 128,-1,12 - 490 1055 490 1055 484.5 1046.5 c 128,-1,13 - 479 1038 479 1038 457.5 1012 c 128,-1,14 - 436 986 436 986 436 985 c 1,15,-1 - 319 985 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quotedblleft -Encoding: 8220 8220 332 -Width: 663 -VWidth: 0 -Flags: W -HStem: 985 367<471 510 737 776> -VStem: 319 188<985 1058> 586 188<985 1058> -LayerCount: 2 -Fore -Refer: 330 8216 N 1 0 0 1 0 0 2 -Refer: 330 8216 N 1 0 0 1 266 0 2 -Validated: 1 -EndChar - -StartChar: quotedblright -Encoding: 8221 8221 333 -Width: 663 -VWidth: 0 -Flags: W -HStem: 985 367<408 447 674 713> -VStem: 410 188<1279 1352> 676 188<1279 1352> -LayerCount: 2 -Fore -Refer: 331 8217 N 1 0 0 1 0 0 2 -Refer: 331 8217 N 1 0 0 1 266 0 2 -Validated: 1 -EndChar - -StartChar: quotesinglbase -Encoding: 8218 8218 334 -Width: 356 -VWidth: 0 -Flags: W -HStem: -203 367<117 156> -VStem: 119 188<91 164> -LayerCount: 2 -Fore -Refer: 331 8217 N 1 0 0 1 -291 -1188 2 -Validated: 1 -EndChar - -StartChar: quotedblbase -Encoding: 8222 8222 335 -Width: 663 -VWidth: 0 -Flags: W -HStem: -203 367<113 152 379 418> -VStem: 115 188<91 164> 381 188<91 164> -LayerCount: 2 -Fore -Refer: 333 8221 N 1 0 0 1 -295 -1188 2 -Validated: 1 -EndChar - -StartChar: ellipsis -Encoding: 8230 8230 336 -Width: 1114 -VWidth: 0 -Flags: W -HStem: 0 164<129 307 477 655 825 1004> -VStem: 92 252 440 252 788 252 -CounterMasks: 1 70 -LayerCount: 2 -Fore -Refer: 54 46 N 1 0 0 1 0 0 2 -Refer: 54 46 N 1 0 0 1 348 0 2 -Refer: 54 46 N 1 0 0 1 696 0 2 -Validated: 1 -EndChar - -StartChar: bullet -Encoding: 8226 8226 337 -Width: 718 -VWidth: 0 -Flags: W -HStem: 287 483<374 585> -VStem: 199 555<444 611> -LayerCount: 2 -Fore -SplineSet -754 584 m 0,0,1 - 754 464 754 464 652.5 375.5 c 128,-1,2 - 551 287 551 287 412 287 c 0,3,4 - 321 287 321 287 260 338.5 c 128,-1,5 - 199 390 199 390 199 475 c 0,6,7 - 199 528 199 528 222.5 576 c 128,-1,8 - 246 624 246 624 282.5 658.5 c 128,-1,9 - 319 693 319 693 362.5 719 c 128,-1,10 - 406 745 406 745 448.5 757.5 c 128,-1,11 - 491 770 491 770 524 770 c 0,12,13 - 621 770 621 770 687.5 721 c 128,-1,14 - 754 672 754 672 754 584 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: endash -Encoding: 8211 8211 338 -Width: 802 -VWidth: 0 -Flags: W -HStem: 348 102<186 801> -VStem: 162 664 -LayerCount: 2 -Fore -SplineSet -186 451 m 1,0,-1 - 825 451 l 1,1,-1 - 801 348 l 1,2,-1 - 162 348 l 1,3,-1 - 186 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: emdash -Encoding: 8212 8212 339 -Width: 1110 -VWidth: 0 -Flags: W -HStem: 348 102<186 1108> -LayerCount: 2 -Fore -SplineSet -186 451 m 1,0,-1 - 1133 451 l 1,1,-1 - 1108 348 l 1,2,-1 - 162 348 l 1,3,-1 - 186 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00AD -Encoding: 173 173 340 -Width: 649 -VWidth: 0 -Flags: W -HStem: 348 102<186 647> -VStem: 162 510 -LayerCount: 2 -Fore -Refer: 82 45 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: currency -Encoding: 164 164 341 -Width: 724 -VWidth: 0 -Flags: W -HStem: 248 96<392 511> 561 96<423 542> -VStem: 215 176<344 535> 543 176<371 561> -LayerCount: 2 -Fore -SplineSet -391 395 m 0,0,1 - 391 344 391 344 442 344 c 0,2,3 - 468 344 468 344 487.5 360.5 c 128,-1,4 - 507 377 507 377 517 398.5 c 128,-1,5 - 527 420 527 420 533.5 446.5 c 128,-1,6 - 540 473 540 473 541.5 488 c 128,-1,7 - 543 503 543 503 543 510 c 0,8,9 - 543 561 543 561 492 561 c 0,10,11 - 466 561 466 561 446.5 544.5 c 128,-1,12 - 427 528 427 528 417 506.5 c 128,-1,13 - 407 485 407 485 400.5 458.5 c 128,-1,14 - 394 432 394 432 392.5 417 c 128,-1,15 - 391 402 391 402 391 395 c 0,0,1 -719 500 m 0,16,17 - 719 398 719 398 637 326 c 1,18,-1 - 698 244 l 1,19,-1 - 610 172 l 1,20,-1 - 537 268 l 1,21,22 - 484 248 484 248 420 248 c 0,23,24 - 358 248 358 248 311 268 c 1,25,-1 - 193 172 l 1,26,-1 - 137 244 l 1,27,-1 - 240 326 l 1,28,29 - 215 357 215 357 215 406 c 0,30,31 - 215 505 215 505 297 580 c 1,32,-1 - 236 662 l 1,33,-1 - 324 733 l 1,34,-1 - 397 637 l 1,35,36 - 450 657 450 657 514 657 c 0,37,38 - 576 657 576 657 623 637 c 1,39,-1 - 741 733 l 1,40,-1 - 797 662 l 1,41,-1 - 694 580 l 1,42,43 - 719 549 719 549 719 500 c 0,16,17 -EndSplineSet -Validated: 1 -EndChar - -StartChar: periodcentered -Encoding: 183 183 342 -Width: 272 -VWidth: 0 -Flags: W -HStem: 414 170<186 317> -VStem: 147 209 -LayerCount: 2 -Fore -SplineSet -186 584 m 1,0,-1 - 356 584 l 1,1,-1 - 317 414 l 1,2,-1 - 147 414 l 1,3,-1 - 186 584 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: logicalnot -Encoding: 172 172 343 -Width: 696 -VWidth: 0 -Flags: W -HStem: 195 256<520 659> 348 102<186 520> -VStem: 162 557 -LayerCount: 2 -Fore -SplineSet -186 451 m 1,0,-1 - 719 451 l 1,1,-1 - 659 195 l 1,2,-1 - 485 195 l 1,3,-1 - 520 348 l 1,4,-1 - 162 348 l 1,5,-1 - 186 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: plusminus -Encoding: 177 177 344 -Width: 856 -VWidth: 0 -Flags: W -HStem: 53 102<119 786> 453 102<211 436 653 879> -LayerCount: 2 -Fore -SplineSet -119 156 m 1,0,-1 - 811 156 l 1,1,-1 - 786 53 l 1,2,-1 - 94 53 l 1,3,-1 - 119 156 l 1,0,-1 -629 453 m 1,4,-1 - 584 260 l 1,5,-1 - 391 260 l 1,6,-1 - 436 453 l 1,7,-1 - 186 453 l 1,8,-1 - 211 555 l 1,9,-1 - 461 555 l 1,10,-1 - 504 748 l 1,11,-1 - 696 748 l 1,12,-1 - 653 555 l 1,13,-1 - 903 555 l 1,14,-1 - 879 453 l 1,15,-1 - 629 453 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B5 -Encoding: 181 181 345 -Width: 972 -VWidth: 0 -Flags: W -HStem: -20 102<425 640> 0 43G<627 892> 860 41G<281 547 826 1092> -LayerCount: 2 -Fore -SplineSet -653 119 m 1,0,-1 - 836 901 l 1,1,-1 - 1092 901 l 1,2,-1 - 883 0 l 1,3,-1 - 627 0 l 1,4,-1 - 631 14 l 1,5,6 - 556 -20 556 -20 475 -20 c 0,7,8 - 397 -20 397 -20 338 -4 c 1,9,-1 - 270 -293 l 1,10,-1 - 14 -293 l 1,11,-1 - 291 901 l 1,12,-1 - 547 901 l 1,13,-1 - 446 467 l 1,14,15 - 406 300 406 300 406 213 c 0,16,17 - 406 143 406 143 434.5 112.5 c 128,-1,18 - 463 82 463 82 528 82 c 0,19,20 - 597 82 597 82 653 119 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: divide -Encoding: 247 247 346 -Width: 710 -VWidth: 0 -Flags: W -HStem: 96 170<315 467> 348 102<186 709> 532 170<416 567> -VStem: 162 571 -CounterMasks: 1 e0 -LayerCount: 2 -Fore -SplineSet -315 266 m 1,0,-1 - 506 266 l 1,1,-1 - 467 96 l 1,2,-1 - 276 96 l 1,3,-1 - 315 266 l 1,0,-1 -416 702 m 1,4,-1 - 606 702 l 1,5,-1 - 567 532 l 1,6,-1 - 377 532 l 1,7,-1 - 416 702 l 1,4,-1 -186 451 m 1,8,-1 - 733 451 l 1,9,-1 - 709 348 l 1,10,-1 - 162 348 l 1,11,-1 - 186 451 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: paragraph -Encoding: 182 182 347 -Width: 995 -VWidth: 0 -Flags: W -HStem: 0 43G<457 650 711 904> 1331 102<948 1018> -VStem: 313 266<818 1140> -LayerCount: 2 -Fore -SplineSet -313 963 m 0,0,1 - 313 1041 313 1041 349 1122 c 128,-1,2 - 385 1203 385 1203 451 1273.5 c 128,-1,3 - 517 1344 517 1344 624 1389 c 128,-1,4 - 731 1434 731 1434 858 1434 c 2,5,-1 - 1227 1434 l 1,6,-1 - 895 0 l 1,7,-1 - 711 0 l 1,8,-1 - 1018 1331 l 1,9,-1 - 948 1331 l 1,10,-1 - 641 0 l 1,11,-1 - 457 0 l 1,12,-1 - 608 659 l 1,13,14 - 529 668 529 668 470 697.5 c 128,-1,15 - 411 727 411 727 378 770 c 128,-1,16 - 345 813 345 813 329 861.5 c 128,-1,17 - 313 910 313 910 313 963 c 0,0,1 -754 1290 m 1,18,19 - 675 1241 675 1241 627.5 1147.5 c 128,-1,20 - 580 1054 580 1054 580 961 c 0,21,22 - 580 849 580 849 641 799 c 1,23,-1 - 754 1290 l 1,18,19 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B9 -Encoding: 185 185 348 -Width: 366 -VWidth: 0 -Flags: W -HStem: 1282 66<393 436> -VStem: 313 287 -LayerCount: 2 -Fore -SplineSet -600 1366 m 1,0,-1 - 459 754 l 1,1,-1 - 313 754 l 1,2,-1 - 436 1288 l 1,3,-1 - 379 1282 l 1,4,-1 - 393 1348 l 1,5,-1 - 600 1366 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B2 -Encoding: 178 178 349 -Width: 559 -VWidth: 0 -Flags: W -HStem: 752 66<418 651> 1292 66<496 652> -VStem: 608 141<1109 1292> -LayerCount: 2 -Fore -SplineSet -258 752 m 1,0,1 - 272 812 272 812 299 860 c 128,-1,2 - 326 908 326 908 357.5 937.5 c 128,-1,3 - 389 967 389 967 424 992.5 c 128,-1,4 - 459 1018 459 1018 491.5 1040.5 c 128,-1,5 - 524 1063 524 1063 550.5 1088.5 c 128,-1,6 - 577 1114 577 1114 592.5 1152 c 128,-1,7 - 608 1190 608 1190 608 1239 c 0,8,9 - 608 1292 608 1292 578 1292 c 0,10,11 - 545 1292 545 1292 521 1278 c 128,-1,12 - 497 1264 497 1264 487 1250 c 128,-1,13 - 477 1236 477 1236 459 1204 c 1,14,-1 - 367 1235 l 1,15,16 - 457 1358 457 1358 610 1358 c 0,17,18 - 673 1358 673 1358 711.5 1320.5 c 128,-1,19 - 750 1283 750 1283 750 1221 c 0,20,21 - 750 1161 750 1161 720 1112.5 c 128,-1,22 - 690 1064 690 1064 645.5 1031 c 128,-1,23 - 601 998 601 998 555 968 c 128,-1,24 - 509 938 509 938 469.5 899.5 c 128,-1,25 - 430 861 430 861 418 817 c 1,26,-1 - 666 817 l 1,27,-1 - 651 752 l 1,28,-1 - 258 752 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B3 -Encoding: 179 179 350 -Width: 583 -VWidth: 0 -Flags: W -HStem: 741 68<403 536> 1034 66<492 566> 1290 68<511 621> -VStem: 283 104<817 871> 578 141<839 1026> 623 137<1125 1289> -LayerCount: 2 -Fore -SplineSet -473 809 m 0,0,1 - 502 809 502 809 524.5 828 c 128,-1,2 - 547 847 547 847 557.5 874 c 128,-1,3 - 568 901 568 901 573 923.5 c 128,-1,4 - 578 946 578 946 578 961 c 0,5,6 - 578 1034 578 1034 477 1034 c 1,7,-1 - 492 1100 l 1,8,9 - 623 1100 623 1100 623 1241 c 0,10,11 - 623 1290 623 1290 584 1290 c 0,12,13 - 568 1290 568 1290 555 1286.5 c 128,-1,14 - 542 1283 542 1283 534 1279.5 c 128,-1,15 - 526 1276 526 1276 516 1265 c 128,-1,16 - 506 1254 506 1254 502.5 1249 c 128,-1,17 - 499 1244 499 1244 488.5 1226.5 c 128,-1,18 - 478 1209 478 1209 475 1204 c 1,19,-1 - 385 1235 l 1,20,21 - 427 1293 427 1293 480.5 1325.5 c 128,-1,22 - 534 1358 534 1358 616 1358 c 0,23,24 - 680 1358 680 1358 720 1318 c 128,-1,25 - 760 1278 760 1278 760 1223 c 0,26,27 - 760 1122 760 1122 651 1067 c 1,28,29 - 719 1027 719 1027 719 958 c 0,30,31 - 719 872 719 872 646.5 806.5 c 128,-1,32 - 574 741 574 741 475 741 c 0,33,34 - 315 741 315 741 283 866 c 1,35,-1 - 387 897 l 1,36,37 - 390 876 390 876 393 865 c 128,-1,38 - 396 854 396 854 404 838.5 c 128,-1,39 - 412 823 412 823 429.5 816 c 128,-1,40 - 447 809 447 809 473 809 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: threequarters -Encoding: 190 190 351 -Width: 1081 -VWidth: 0 -Flags: W -HStem: 0 43G<731 886> 131 66<610 762 922 969> 741 68<403 536> 1034 66<492 567> 1290 68<511 621> -VStem: 283 104<817 871> 580 139<839 1026> 623 137<1125 1289> -LayerCount: 2 -Fore -SplineSet -473 809 m 0,0,1 - 502 809 502 809 524.5 828 c 128,-1,2 - 547 847 547 847 558 874.5 c 128,-1,3 - 569 902 569 902 574.5 925 c 128,-1,4 - 580 948 580 948 580 963 c 0,5,6 - 580 1034 580 1034 477 1034 c 1,7,-1 - 492 1100 l 1,8,9 - 623 1100 623 1100 623 1241 c 0,10,11 - 623 1290 623 1290 584 1290 c 0,12,13 - 568 1290 568 1290 555 1286.5 c 128,-1,14 - 542 1283 542 1283 534 1279.5 c 128,-1,15 - 526 1276 526 1276 516 1265 c 128,-1,16 - 506 1254 506 1254 502.5 1249 c 128,-1,17 - 499 1244 499 1244 488.5 1226.5 c 128,-1,18 - 478 1209 478 1209 475 1204 c 1,19,-1 - 385 1235 l 1,20,21 - 427 1293 427 1293 480.5 1325.5 c 128,-1,22 - 534 1358 534 1358 616 1358 c 0,23,24 - 680 1358 680 1358 720 1318 c 128,-1,25 - 760 1278 760 1278 760 1223 c 0,26,27 - 760 1122 760 1122 651 1067 c 1,28,29 - 719 1027 719 1027 719 958 c 0,30,31 - 719 872 719 872 646.5 806.5 c 128,-1,32 - 574 741 574 741 475 741 c 0,33,34 - 315 741 315 741 283 866 c 1,35,-1 - 387 897 l 1,36,37 - 390 876 390 876 393 865 c 128,-1,38 - 396 854 396 854 404 838.5 c 128,-1,39 - 412 823 412 823 429.5 816 c 128,-1,40 - 447 809 447 809 473 809 c 0,0,1 -143 264 m 1,41,-1 - 1083 1047 l 1,42,-1 - 1241 1047 l 1,43,-1 - 301 264 l 1,44,-1 - 143 264 l 1,41,-1 -512 174 m 1,45,-1 - 872 606 l 1,46,-1 - 1016 606 l 1,47,-1 - 922 197 l 1,48,-1 - 983 197 l 1,49,-1 - 969 131 l 1,50,-1 - 907 131 l 1,51,-1 - 877 0 l 1,52,-1 - 731 0 l 1,53,-1 - 762 131 l 1,54,-1 - 502 131 l 1,55,-1 - 512 174 l 1,45,-1 -840 473 m 1,56,-1 - 610 197 l 1,57,-1 - 776 197 l 1,58,-1 - 840 473 l 1,56,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: onequarter -Encoding: 188 188 352 -Width: 1081 -VWidth: 0 -Flags: W -HStem: 0 43G<731 886> 131 66<610 762 922 969> 1282 66<526 569> -LayerCount: 2 -Fore -SplineSet -733 1366 m 1,0,-1 - 592 754 l 1,1,-1 - 446 754 l 1,2,-1 - 569 1288 l 1,3,-1 - 512 1282 l 1,4,-1 - 526 1348 l 1,5,-1 - 733 1366 l 1,0,-1 -143 264 m 1,6,-1 - 1083 1047 l 1,7,-1 - 1241 1047 l 1,8,-1 - 301 264 l 1,9,-1 - 143 264 l 1,6,-1 -512 174 m 1,10,-1 - 872 606 l 1,11,-1 - 1016 606 l 1,12,-1 - 922 197 l 1,13,-1 - 983 197 l 1,14,-1 - 969 131 l 1,15,-1 - 907 131 l 1,16,-1 - 877 0 l 1,17,-1 - 731 0 l 1,18,-1 - 762 131 l 1,19,-1 - 502 131 l 1,20,-1 - 512 174 l 1,10,-1 -840 473 m 1,21,-1 - 610 197 l 1,22,-1 - 776 197 l 1,23,-1 - 840 473 l 1,21,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: onehalf -Encoding: 189 189 353 -Width: 1085 -VWidth: 0 -Flags: W -HStem: 0 66<770 1004> 541 66<848 1005> 1282 66<526 569> -VStem: 961 141<355 540> -LayerCount: 2 -Fore -SplineSet -610 0 m 1,0,1 - 624 60 624 60 651.5 108 c 128,-1,2 - 679 156 679 156 710.5 185.5 c 128,-1,3 - 742 215 742 215 777.5 240.5 c 128,-1,4 - 813 266 813 266 845 288.5 c 128,-1,5 - 877 311 877 311 903.5 336.5 c 128,-1,6 - 930 362 930 362 945.5 400 c 128,-1,7 - 961 438 961 438 961 487 c 0,8,9 - 961 513 961 513 952 527 c 128,-1,10 - 943 541 943 541 930 541 c 0,11,12 - 897 541 897 541 873 527 c 128,-1,13 - 849 513 849 513 839 499 c 128,-1,14 - 829 485 829 485 811 453 c 1,15,-1 - 719 483 l 1,16,17 - 809 606 809 606 963 606 c 0,18,19 - 1026 606 1026 606 1064 568.5 c 128,-1,20 - 1102 531 1102 531 1102 469 c 0,21,22 - 1102 409 1102 409 1072 360.5 c 128,-1,23 - 1042 312 1042 312 997.5 279 c 128,-1,24 - 953 246 953 246 907 216.5 c 128,-1,25 - 861 187 861 187 821.5 148.5 c 128,-1,26 - 782 110 782 110 770 66 c 1,27,-1 - 1018 66 l 1,28,-1 - 1004 0 l 1,29,-1 - 610 0 l 1,0,1 -733 1366 m 1,30,-1 - 592 754 l 1,31,-1 - 446 754 l 1,32,-1 - 569 1288 l 1,33,-1 - 512 1282 l 1,34,-1 - 526 1348 l 1,35,-1 - 733 1366 l 1,30,-1 -143 264 m 1,36,-1 - 1083 1047 l 1,37,-1 - 1241 1047 l 1,38,-1 - 301 264 l 1,39,-1 - 143 264 l 1,36,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii00208 -Encoding: 8213 8213 354 -Width: 1384 -VWidth: 0 -Flags: W -HStem: 348 102<186 1382> -LayerCount: 2 -Fore -SplineSet -186 451 m 1,0,-1 - 1407 451 l 1,1,-1 - 1382 348 l 1,2,-1 - 162 348 l 1,3,-1 - 186 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Scommaaccent -Encoding: 536 536 355 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -401 49<360 513> -164 57<492 556> -20 102<527 773> 1352 102<812 1024> -VStem: 207 238<177 350> 430 270<940 1185> 575 160<-313 -176> 932 270<279 555> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1188 0 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scommaaccent -Encoding: 537 537 356 -Width: 860 -VWidth: 0 -Flags: W -HStem: -401 49<184 337> -164 57<315 380> -20 102<290 523> 817 104<550 718> -VStem: 252 256<549 774> 399 160<-313 -176> 596 258<167 388> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1012 0 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021A -Encoding: 538 538 357 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -401 49<381 534> -164 57<512 577> 0 43<487 763> 1331 102<352 795 1061 1526> -VStem: 596 160<-313 -176> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1208 0 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021B -Encoding: 539 539 358 -Width: 669 -VWidth: 0 -Flags: W -HStem: -401 49<145 298> -164 57<276 341> -20 102<395 610> 799 102<291 371 651 788> -VStem: 229 258<84 376> 360 160<-313 -176> 616 70<93 131> -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 973 0 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: longs -Encoding: 383 383 359 -Width: 731 -VWidth: 0 -Flags: W -HStem: 0 43G<92 358> 1270 102<684 879> -LayerCount: 2 -Fore -SplineSet -92 0 m 1,0,-1 - 291 864 l 2,1,2 - 317 974 317 974 338.5 1044.5 c 128,-1,3 - 360 1115 360 1115 390.5 1177 c 128,-1,4 - 421 1239 421 1239 455 1272.5 c 128,-1,5 - 489 1306 489 1306 542.5 1330.5 c 128,-1,6 - 596 1355 596 1355 661 1363.5 c 128,-1,7 - 726 1372 726 1372 819 1372 c 0,8,9 - 843 1372 843 1372 863.5 1370 c 128,-1,10 - 884 1368 884 1368 904.5 1362 c 128,-1,11 - 925 1356 925 1356 938.5 1351.5 c 128,-1,12 - 952 1347 952 1347 972.5 1336 c 128,-1,13 - 993 1325 993 1325 1002.5 1320 c 128,-1,14 - 1012 1315 1012 1315 1036 1300 c 128,-1,15 - 1060 1285 1060 1285 1069 1280 c 1,16,-1 - 942 1174 l 1,17,18 - 936 1179 936 1179 918 1194.5 c 128,-1,19 - 900 1210 900 1210 896 1213.5 c 128,-1,20 - 892 1217 892 1217 878 1228 c 128,-1,21 - 864 1239 864 1239 859 1241.5 c 128,-1,22 - 854 1244 854 1244 842.5 1251.5 c 128,-1,23 - 831 1259 831 1259 824.5 1260.5 c 128,-1,24 - 818 1262 818 1262 807 1265.5 c 128,-1,25 - 796 1269 796 1269 786 1269.5 c 128,-1,26 - 776 1270 776 1270 764 1270 c 0,27,28 - 641 1270 641 1270 559 909 c 1,29,-1 - 348 0 l 1,30,-1 - 92 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ydieresis -Encoding: 255 255 360 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<97 251> 860 41<270 497 901 1090> 1085 170<535 666 821 952> -VStem: 496 209 782 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1022 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uniFB00 -Encoding: 64256 64256 361 -Width: 1282 -VWidth: 0 -Flags: W -HStem: -276 102<-238 -120 427 546> 799 102<51 117 397 782 1063 1184> 1270 102<489 645 1155 1310> -VStem: -313 74<-170 -125> 352 74<-170 -125> -LayerCount: 2 -Fore -SplineSet -373 799 m 1,0,-1 - 178 -43 l 2,1,2 - 153 -147 153 -147 63.5 -211.5 c 128,-1,3 - -26 -276 -26 -276 -180 -276 c 0,4,5 - -237 -276 -237 -276 -275 -239.5 c 128,-1,6 - -313 -203 -313 -203 -313 -152 c 0,7,8 - -313 -141 -313 -141 -309 -125 c 1,9,-1 - -240 -125 l 1,10,11 - -240 -174 -240 -174 -186 -174 c 0,12,13 - -141 -174 -141 -174 -113 -123.5 c 128,-1,14 - -85 -73 -85 -73 -63 20 c 2,15,-1 - 117 799 l 1,16,-1 - -4 799 l 1,17,-1 - 51 901 l 1,18,-1 - 141 901 l 1,19,-1 - 186 1096 l 2,20,21 - 213 1217 213 1217 319 1294.5 c 128,-1,22 - 425 1372 425 1372 551 1372 c 0,23,24 - 635 1372 635 1372 690 1350 c 1,25,-1 - 623 1239 l 1,26,27 - 604 1270 604 1270 557 1270 c 0,28,29 - 514 1270 514 1270 487 1223 c 128,-1,30 - 460 1176 460 1176 430 1042 c 1,31,-1 - 397 901 l 1,32,-1 - 807 901 l 1,33,-1 - 852 1096 l 2,34,35 - 879 1217 879 1217 985 1294.5 c 128,-1,36 - 1091 1372 1091 1372 1217 1372 c 0,37,38 - 1301 1372 1301 1372 1356 1350 c 1,39,-1 - 1288 1239 l 1,40,41 - 1269 1270 1269 1270 1223 1270 c 0,42,43 - 1180 1270 1180 1270 1153 1223 c 128,-1,44 - 1126 1176 1126 1176 1096 1042 c 1,45,-1 - 1063 901 l 1,46,-1 - 1208 901 l 1,47,-1 - 1184 799 l 1,48,-1 - 1038 799 l 1,49,-1 - 844 -43 l 1,50,51 - 819 -147 819 -147 729 -211.5 c 128,-1,52 - 639 -276 639 -276 485 -276 c 0,53,54 - 428 -276 428 -276 390 -239.5 c 128,-1,55 - 352 -203 352 -203 352 -152 c 0,56,57 - 352 -141 352 -141 356 -125 c 1,58,-1 - 426 -125 l 1,59,60 - 426 -174 426 -174 479 -174 c 0,61,62 - 524 -174 524 -174 552 -123.5 c 128,-1,63 - 580 -73 580 -73 602 20 c 2,64,-1 - 782 799 l 1,65,-1 - 373 799 l 1,0,-1 -EndSplineSet -Validated: 1 -LCarets2: 1 0 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f f -EndChar - -StartChar: fi -Encoding: 64257 64257 362 -Width: 1286 -VWidth: 0 -Flags: W -HStem: -276 102<36 155> -20 102<999 1207> 799 102<326 391 672 971> 1065 164<1090 1266> 1270 102<764 919> -VStem: -39 74<-170 -125> 827 254<83 366> 1214 70<96 131> -LayerCount: 2 -Fore -SplineSet -1090 1229 m 1,0,-1 - 1305 1229 l 1,1,-1 - 1266 1065 l 1,2,-1 - 1051 1065 l 1,3,-1 - 1090 1229 l 1,0,-1 -1104 276 m 2,4,5 - 1081 178 1081 178 1081 143 c 0,6,7 - 1081 82 1081 82 1137 82 c 0,8,9 - 1161 82 1161 82 1183 98 c 128,-1,10 - 1205 114 1205 114 1214 131 c 1,11,-1 - 1284 131 l 1,12,13 - 1270 73 1270 73 1210 26.5 c 128,-1,14 - 1150 -20 1150 -20 1085 -20 c 0,15,16 - 962 -20 962 -20 894.5 31.5 c 128,-1,17 - 827 83 827 83 827 164 c 0,18,19 - 827 185 827 185 834 213 c 2,20,-1 - 971 799 l 1,21,-1 - 647 799 l 1,22,-1 - 453 -43 l 1,23,24 - 428 -147 428 -147 338 -211.5 c 128,-1,25 - 248 -276 248 -276 94 -276 c 0,26,27 - 37 -276 37 -276 -1 -239.5 c 128,-1,28 - -39 -203 -39 -203 -39 -152 c 0,29,30 - -39 -141 -39 -141 -35 -125 c 1,31,-1 - 35 -125 l 1,32,33 - 35 -174 35 -174 88 -174 c 0,34,35 - 133 -174 133 -174 161 -123.5 c 128,-1,36 - 189 -73 189 -73 211 20 c 2,37,-1 - 391 799 l 1,38,-1 - 270 799 l 1,39,-1 - 326 901 l 1,40,-1 - 416 901 l 1,41,-1 - 461 1096 l 2,42,43 - 488 1217 488 1217 593.5 1294.5 c 128,-1,44 - 699 1372 699 1372 825 1372 c 0,45,46 - 910 1372 910 1372 965 1350 c 1,47,-1 - 897 1239 l 1,48,49 - 878 1270 878 1270 831 1270 c 0,50,51 - 788 1270 788 1270 762 1223 c 128,-1,52 - 736 1176 736 1176 705 1042 c 2,53,-1 - 672 901 l 1,54,-1 - 1249 901 l 1,55,-1 - 1104 276 l 2,4,5 -EndSplineSet -Validated: 1 -LCarets2: 1 0 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f i -EndChar - -StartChar: fl -Encoding: 64258 64258 363 -Width: 1273 -VWidth: 0 -Flags: W -HStem: -276 102<36 155> -20 102<999 1214> 799 102<326 391 672 793> 1270 102<799 1074> -VStem: -39 74<-170 -125> 834 258<84 375> 1221 70<93 131> -LayerCount: 2 -Fore -SplineSet -647 799 m 1,0,-1 - 453 -43 l 1,1,2 - 428 -147 428 -147 338 -211.5 c 128,-1,3 - 248 -276 248 -276 94 -276 c 0,4,5 - 37 -276 37 -276 -1 -239.5 c 128,-1,6 - -39 -203 -39 -203 -39 -152 c 0,7,8 - -39 -141 -39 -141 -35 -125 c 1,9,-1 - 35 -125 l 1,10,11 - 35 -174 35 -174 88 -174 c 0,12,13 - 133 -174 133 -174 161 -123.5 c 128,-1,14 - 189 -73 189 -73 211 20 c 2,15,-1 - 391 799 l 1,16,-1 - 270 799 l 1,17,-1 - 326 901 l 1,18,-1 - 416 901 l 1,19,-1 - 461 1096 l 1,20,21 - 523 1372 523 1372 930 1372 c 0,22,23 - 1040 1372 1040 1372 1102 1352 c 1,24,-1 - 1358 1352 l 1,25,-1 - 1110 276 l 2,26,27 - 1092 195 1092 195 1092 156 c 0,28,29 - 1092 82 1092 82 1143 82 c 0,30,31 - 1199 82 1199 82 1221 131 c 1,32,-1 - 1290 131 l 1,33,34 - 1276 73 1276 73 1216.5 26.5 c 128,-1,35 - 1157 -20 1157 -20 1092 -20 c 0,36,37 - 961 -20 961 -20 897.5 28 c 128,-1,38 - 834 76 834 76 834 156 c 0,39,40 - 834 183 834 183 840 213 c 2,41,-1 - 1075 1237 l 1,42,43 - 1015 1270 1015 1270 936 1270 c 0,44,45 - 846 1270 846 1270 790 1220 c 128,-1,46 - 734 1170 734 1170 705 1042 c 2,47,-1 - 672 901 l 1,48,-1 - 817 901 l 1,49,-1 - 793 799 l 1,50,-1 - 647 799 l 1,0,-1 -EndSplineSet -Validated: 1 -LCarets2: 1 0 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f l -EndChar - -StartChar: uniFB03 -Encoding: 64259 64259 364 -Width: 1931 -VWidth: 0 -Flags: W -HStem: -276 102<36 155 702 821> -20 102<1665 1873> 799 102<326 391 672 1057 1337 1636> 1065 164<1755 1931> 1270 102<764 919 1430 1585> -VStem: -39 74<-170 -125> 627 74<-170 -125> 1493 254<83 366> 1880 70<96 131> -LayerCount: 2 -Fore -SplineSet -647 799 m 1,0,-1 - 453 -43 l 1,1,2 - 428 -147 428 -147 338 -211.5 c 128,-1,3 - 248 -276 248 -276 94 -276 c 0,4,5 - 37 -276 37 -276 -1 -239.5 c 128,-1,6 - -39 -203 -39 -203 -39 -152 c 0,7,8 - -39 -141 -39 -141 -35 -125 c 1,9,-1 - 35 -125 l 1,10,11 - 35 -174 35 -174 88 -174 c 0,12,13 - 133 -174 133 -174 161 -123.5 c 128,-1,14 - 189 -73 189 -73 211 20 c 2,15,-1 - 391 799 l 1,16,-1 - 270 799 l 1,17,-1 - 326 901 l 1,18,-1 - 416 901 l 1,19,-1 - 461 1096 l 2,20,21 - 488 1217 488 1217 593.5 1294.5 c 128,-1,22 - 699 1372 699 1372 825 1372 c 0,23,24 - 910 1372 910 1372 965 1350 c 1,25,-1 - 897 1239 l 1,26,27 - 878 1270 878 1270 831 1270 c 0,28,29 - 788 1270 788 1270 762 1223 c 128,-1,30 - 736 1176 736 1176 705 1042 c 2,31,-1 - 672 901 l 1,32,-1 - 1081 901 l 1,33,-1 - 1126 1096 l 2,34,35 - 1153 1217 1153 1217 1259 1294.5 c 128,-1,36 - 1365 1372 1365 1372 1491 1372 c 0,37,38 - 1575 1372 1575 1372 1630 1350 c 1,39,-1 - 1563 1239 l 1,40,41 - 1544 1270 1544 1270 1497 1270 c 0,42,43 - 1454 1270 1454 1270 1427 1223 c 128,-1,44 - 1400 1176 1400 1176 1370 1042 c 1,45,-1 - 1337 901 l 1,46,-1 - 1915 901 l 1,47,-1 - 1769 276 l 2,48,49 - 1747 182 1747 182 1747 143 c 0,50,51 - 1747 82 1747 82 1802 82 c 0,52,53 - 1826 82 1826 82 1848.5 98 c 128,-1,54 - 1871 114 1871 114 1880 131 c 1,55,-1 - 1950 131 l 1,56,57 - 1936 73 1936 73 1876 26.5 c 128,-1,58 - 1816 -20 1816 -20 1751 -20 c 0,59,60 - 1628 -20 1628 -20 1560.5 31.5 c 128,-1,61 - 1493 83 1493 83 1493 164 c 0,62,63 - 1493 189 1493 189 1499 213 c 2,64,-1 - 1636 799 l 1,65,-1 - 1313 799 l 1,66,-1 - 1118 -43 l 2,67,68 - 1093 -147 1093 -147 1003.5 -211.5 c 128,-1,69 - 914 -276 914 -276 760 -276 c 0,70,71 - 703 -276 703 -276 665 -239.5 c 128,-1,72 - 627 -203 627 -203 627 -152 c 0,73,74 - 627 -141 627 -141 631 -125 c 1,75,-1 - 700 -125 l 1,76,77 - 700 -174 700 -174 754 -174 c 0,78,79 - 799 -174 799 -174 827 -123.5 c 128,-1,80 - 855 -73 855 -73 877 20 c 2,81,-1 - 1057 799 l 1,82,-1 - 647 799 l 1,0,-1 -1755 1229 m 1,83,-1 - 1970 1229 l 1,84,-1 - 1931 1065 l 1,85,-1 - 1716 1065 l 1,86,-1 - 1755 1229 l 1,83,-1 -EndSplineSet -Validated: 1 -LCarets2: 2 0 0 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f f i -EndChar - -StartChar: uniFB04 -Encoding: 64260 64260 365 -Width: 1939 -VWidth: 0 -Flags: W -HStem: -276 102<36 155 702 821> -20 102<1665 1879> 799 102<326 391 672 1057 1337 1458> 1270 102<764 919 1464 1740> -VStem: -39 74<-170 -125> 627 74<-170 -125> 1499 258<84 375> 1886 70<93 131> -LayerCount: 2 -Fore -SplineSet -1313 799 m 1,0,-1 - 1118 -43 l 2,1,2 - 1093 -147 1093 -147 1003.5 -211.5 c 128,-1,3 - 914 -276 914 -276 760 -276 c 0,4,5 - 703 -276 703 -276 665 -239.5 c 128,-1,6 - 627 -203 627 -203 627 -152 c 0,7,8 - 627 -141 627 -141 631 -125 c 1,9,-1 - 700 -125 l 1,10,11 - 700 -174 700 -174 754 -174 c 0,12,13 - 799 -174 799 -174 827 -123.5 c 128,-1,14 - 855 -73 855 -73 877 20 c 2,15,-1 - 1057 799 l 1,16,-1 - 647 799 l 1,17,-1 - 453 -43 l 1,18,19 - 428 -147 428 -147 338 -211.5 c 128,-1,20 - 248 -276 248 -276 94 -276 c 0,21,22 - 37 -276 37 -276 -1 -239.5 c 128,-1,23 - -39 -203 -39 -203 -39 -152 c 0,24,25 - -39 -141 -39 -141 -35 -125 c 1,26,-1 - 35 -125 l 1,27,28 - 35 -174 35 -174 88 -174 c 0,29,30 - 133 -174 133 -174 161 -123.5 c 128,-1,31 - 189 -73 189 -73 211 20 c 2,32,-1 - 391 799 l 1,33,-1 - 270 799 l 1,34,-1 - 326 901 l 1,35,-1 - 416 901 l 1,36,-1 - 461 1096 l 2,37,38 - 488 1217 488 1217 593.5 1294.5 c 128,-1,39 - 699 1372 699 1372 825 1372 c 0,40,41 - 910 1372 910 1372 965 1350 c 1,42,-1 - 897 1239 l 1,43,44 - 878 1270 878 1270 831 1270 c 0,45,46 - 788 1270 788 1270 762 1223 c 128,-1,47 - 736 1176 736 1176 705 1042 c 2,48,-1 - 672 901 l 1,49,-1 - 1081 901 l 1,50,-1 - 1126 1096 l 1,51,52 - 1188 1372 1188 1372 1595 1372 c 0,53,54 - 1705 1372 1705 1372 1767 1352 c 1,55,-1 - 2023 1352 l 1,56,-1 - 1776 276 l 2,57,58 - 1757 191 1757 191 1757 156 c 0,59,60 - 1757 82 1757 82 1808 82 c 0,61,62 - 1864 82 1864 82 1886 131 c 1,63,-1 - 1956 131 l 1,64,65 - 1942 73 1942 73 1882 26.5 c 128,-1,66 - 1822 -20 1822 -20 1757 -20 c 0,67,68 - 1626 -20 1626 -20 1562.5 28 c 128,-1,69 - 1499 76 1499 76 1499 156 c 0,70,71 - 1499 183 1499 183 1505 213 c 2,72,-1 - 1741 1237 l 1,73,74 - 1681 1270 1681 1270 1602 1270 c 0,75,76 - 1512 1270 1512 1270 1455.5 1220 c 128,-1,77 - 1399 1170 1399 1170 1370 1042 c 2,78,-1 - 1337 901 l 1,79,-1 - 1483 901 l 1,80,-1 - 1458 799 l 1,81,-1 - 1313 799 l 1,0,-1 -EndSplineSet -Validated: 1 -LCarets2: 2 565 946 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f f l -EndChar - -StartChar: uni00A0 -Encoding: 160 160 366 -Width: 409 -VWidth: 0 -Flags: W -LayerCount: 2 -EndChar - -StartChar: grave -Encoding: 96 96 367 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: 397 319 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 770 0 2 -Validated: 1 -EndChar - -StartChar: dieresis -Encoding: 168 168 368 -Width: 559 -VWidth: 0 -Flags: W -HStem: 1270 170<381 512 668 799> -VStem: 342 209 629 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 868 0 2 -Validated: 1 -EndChar - -StartChar: macron -Encoding: 175 175 369 -Width: 593 -VWidth: 0 -Flags: W -HStem: 1270 115<381 825> -VStem: 354 498 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 895 0 2 -Validated: 1 -EndChar - -StartChar: degree -Encoding: 176 176 370 -Width: 577 -VWidth: 0 -Flags: W -HStem: 1010 96<478 633> 1286 96<499 652> -VStem: 373 100<1111 1260> 657 98<1132 1281> -LayerCount: 2 -Fore -SplineSet -586 1286 m 0,0,1 - 546 1286 546 1286 509.5 1254.5 c 128,-1,2 - 473 1223 473 1223 473 1176 c 0,3,4 - 473 1146 473 1146 493 1126 c 128,-1,5 - 513 1106 513 1106 545 1106 c 0,6,7 - 585 1106 585 1106 621 1138 c 128,-1,8 - 657 1170 657 1170 657 1217 c 0,9,10 - 657 1247 657 1247 637.5 1266.5 c 128,-1,11 - 618 1286 618 1286 586 1286 c 0,0,1 -373 1155 m 0,12,13 - 373 1242 373 1242 445.5 1312 c 128,-1,14 - 518 1382 518 1382 608 1382 c 0,15,16 - 674 1382 674 1382 715 1341 c 128,-1,17 - 756 1300 756 1300 756 1237 c 0,18,19 - 756 1150 756 1150 683 1080 c 128,-1,20 - 610 1010 610 1010 522 1010 c 0,21,22 - 456 1010 456 1010 414.5 1051 c 128,-1,23 - 373 1092 373 1092 373 1155 c 0,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: acute -Encoding: 180 180 371 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: 383 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 770 0 2 -Validated: 1 -EndChar - -StartChar: cedilla -Encoding: 184 184 372 -Width: 471 -VWidth: 0 -Flags: W -HStem: -401 49<-20 127> -41 41<131 287> -VStem: 195 162<-312 -178> -LayerCount: 2 -Fore -Refer: 109 807 N 1 0 0 1 807 0 2 -Validated: 1 -EndChar - -StartChar: breve -Encoding: 728 728 373 -Width: 585 -VWidth: 0 -Flags: W -HStem: 1270 137<508 736> -VStem: 397 88<1435 1460> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 881 0 2 -Validated: 1 -EndChar - -StartChar: ogonek -Encoding: 731 731 374 -Width: 405 -VWidth: 0 -Flags: W -HStem: -319 37<191 270> -VStem: 0 152<-267 -104> -LayerCount: 2 -Fore -Refer: 110 808 N 1 0 0 1 774 0 2 -Validated: 1 -EndChar - -StartChar: caron -Encoding: 711 711 375 -Width: 602 -VWidth: 0 -Flags: W -HStem: 1139 387 -VStem: 401 479 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 889 0 2 -Validated: 1 -EndChar - -StartChar: hungarumlaut -Encoding: 733 733 376 -Width: 755 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: 309 422 678 422 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 881 0 2 -Validated: 1 -EndChar - -StartChar: dotaccent -Encoding: 729 729 377 -Width: 272 -VWidth: 0 -Flags: W -HStem: 1270 170<383 514> -VStem: 344 209 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 727 0 2 -Validated: 1 -EndChar - -StartChar: uni01EA -Encoding: 490 490 378 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -319 37<576 655> -20 102<571 843> 1352 102<822 1122> -VStem: 199 258<251 749> 385 152<-267 -104> 1235 256<698 1177> -LayerCount: 2 -Fore -SplineSet -694 82 m 0,0,1 - 799 82 799 82 890.5 150 c 128,-1,2 - 982 218 982 218 1043.5 322.5 c 128,-1,3 - 1105 427 1105 427 1149.5 554.5 c 128,-1,4 - 1194 682 1194 682 1214.5 799.5 c 128,-1,5 - 1235 917 1235 917 1235 1012 c 0,6,7 - 1235 1185 1235 1185 1165 1268.5 c 128,-1,8 - 1095 1352 1095 1352 969 1352 c 0,9,10 - 875 1352 875 1352 790.5 1287 c 128,-1,11 - 706 1222 706 1222 646.5 1120 c 128,-1,12 - 587 1018 587 1018 543 894.5 c 128,-1,13 - 499 771 499 771 478 653 c 128,-1,14 - 457 535 457 535 457 440 c 0,15,16 - 457 262 457 262 524.5 172 c 128,-1,17 - 592 82 592 82 694 82 c 0,0,1 -642 -20 m 1,18,19 - 600 -50 600 -50 568.5 -95 c 128,-1,20 - 537 -140 537 -140 537 -193 c 0,21,22 - 537 -283 537 -283 664 -283 c 1,23,-1 - 655 -319 l 1,24,25 - 512 -319 512 -319 448.5 -285 c 128,-1,26 - 385 -251 385 -251 385 -203 c 0,27,28 - 385 -189 385 -189 388.5 -175 c 128,-1,29 - 392 -161 392 -161 403.5 -139.5 c 128,-1,30 - 415 -118 415 -118 434.5 -98 c 128,-1,31 - 454 -78 454 -78 489 -55 c 128,-1,32 - 524 -32 524 -32 571 -13 c 1,33,34 - 495 1 495 1 429.5 38 c 128,-1,35 - 364 75 364 75 311.5 135.5 c 128,-1,36 - 259 196 259 196 229 287 c 128,-1,37 - 199 378 199 378 199 489 c 0,38,39 - 199 624 199 624 236.5 763 c 128,-1,40 - 274 902 274 902 345.5 1025 c 128,-1,41 - 417 1148 417 1148 511 1244.5 c 128,-1,42 - 605 1341 605 1341 727.5 1397.5 c 128,-1,43 - 850 1454 850 1454 981 1454 c 0,44,45 - 1088 1454 1088 1454 1179 1423 c 128,-1,46 - 1270 1392 1270 1392 1340.5 1332 c 128,-1,47 - 1411 1272 1411 1272 1451 1173.5 c 128,-1,48 - 1491 1075 1491 1075 1491 948 c 0,49,50 - 1491 863 1491 863 1475 772 c 128,-1,51 - 1459 681 1459 681 1425 586 c 128,-1,52 - 1391 491 1391 491 1342.5 403.5 c 128,-1,53 - 1294 316 1294 316 1224.5 238.5 c 128,-1,54 - 1155 161 1155 161 1072.5 103.5 c 128,-1,55 - 990 46 990 46 883.5 13 c 128,-1,56 - 777 -20 777 -20 659 -20 c 2,57,-1 - 642 -20 l 1,18,19 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01EB -Encoding: 491 491 379 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -319 37<451 530> -20 102<427 637> 819 102<586 795> -VStem: 147 244<117 508> 260 152<-267 -104> 821 244<380 773> -LayerCount: 2 -Fore -SplineSet -821 664 m 0,0,1 - 821 819 821 819 702 819 c 0,2,3 - 627 819 627 819 568 763 c 128,-1,4 - 509 707 509 707 477 631 c 128,-1,5 - 445 555 445 555 424.5 466.5 c 128,-1,6 - 404 378 404 378 397.5 323.5 c 128,-1,7 - 391 269 391 269 391 246 c 0,8,9 - 391 165 391 165 424.5 123.5 c 128,-1,10 - 458 82 458 82 532 82 c 0,11,12 - 601 82 601 82 656 138 c 128,-1,13 - 711 194 711 194 740.5 271 c 128,-1,14 - 770 348 770 348 789.5 437 c 128,-1,15 - 809 526 809 526 815 582.5 c 128,-1,16 - 821 639 821 639 821 664 c 0,0,1 -432 -18 m 1,17,18 - 293 -6 293 -6 220 77 c 128,-1,19 - 147 160 147 160 147 301 c 0,20,21 - 147 430 147 430 197.5 547.5 c 128,-1,22 - 248 665 248 665 327 745.5 c 128,-1,23 - 406 826 406 826 504 874 c 128,-1,24 - 602 922 602 922 696 922 c 0,25,26 - 867 922 867 922 966 838 c 128,-1,27 - 1065 754 1065 754 1065 594 c 0,28,29 - 1065 527 1065 527 1048.5 452 c 128,-1,30 - 1032 377 1032 377 991 294.5 c 128,-1,31 - 950 212 950 212 890 146 c 128,-1,32 - 830 80 830 80 733 33.5 c 128,-1,33 - 636 -13 636 -13 518 -19 c 1,34,35 - 476 -49 476 -49 444 -94.5 c 128,-1,36 - 412 -140 412 -140 412 -193 c 0,37,38 - 412 -283 412 -283 539 -283 c 1,39,-1 - 530 -319 l 1,40,41 - 387 -319 387 -319 323.5 -285 c 128,-1,42 - 260 -251 260 -251 260 -203 c 0,43,44 - 260 -186 260 -186 266 -167 c 128,-1,45 - 272 -148 272 -148 288.5 -122.5 c 128,-1,46 - 305 -97 305 -97 342 -69.5 c 128,-1,47 - 379 -42 379 -42 432 -18 c 1,17,18 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0400 -Encoding: 1024 1024 380 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1495 403 -VStem: 662 319 -LayerCount: 2 -Fore -Refer: 144 200 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10023 -Encoding: 1025 1025 381 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1516 170<680 811 967 1098> -VStem: 641 209 928 209 -LayerCount: 2 -Fore -Refer: 147 203 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10051 -Encoding: 1026 1026 382 -Width: 1449 -VWidth: 0 -Flags: W -HStem: -348 102<744 982> 0 43G<487 761> 819 102<958 1212> 1331 102<352 795 1059 1526> -VStem: 1229 248<418 804> -AnchorPoint: "top" 954 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -752 0 m 1,0,-1 - 487 0 l 1,1,-1 - 795 1331 l 1,2,-1 - 328 1331 l 1,3,-1 - 352 1434 l 1,4,-1 - 1554 1434 l 1,5,-1 - 1526 1331 l 1,6,-1 - 1059 1331 l 1,7,-1 - 956 891 l 1,8,9 - 1044 922 1044 922 1128 922 c 0,10,11 - 1477 922 1477 922 1477 641 c 0,12,13 - 1477 574 1477 574 1456 492 c 1,14,-1 - 1380 160 l 2,15,16 - 1352 39 1352 39 1312 -50 c 128,-1,17 - 1272 -139 1272 -139 1225 -196 c 128,-1,18 - 1178 -253 1178 -253 1116 -287 c 128,-1,19 - 1054 -321 1054 -321 989.5 -334.5 c 128,-1,20 - 925 -348 925 -348 844 -348 c 0,21,22 - 699 -348 699 -348 541 -256 c 1,23,-1 - 668 -150 l 1,24,25 - 784 -246 784 -246 897 -246 c 0,26,27 - 1030 -246 1030 -246 1114 115 c 2,28,-1 - 1196 467 l 2,29,30 - 1229 608 1229 608 1229 690 c 0,31,32 - 1229 761 1229 761 1205 790 c 128,-1,33 - 1181 819 1181 819 1135 819 c 0,34,35 - 1032 819 1032 819 926 758 c 1,36,-1 - 752 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10052 -Encoding: 1027 1027 383 -Width: 899 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1331 102<666 1227> 1495 403 -VStem: 780 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1167 246 2 -Refer: 399 1043 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10053 -Encoding: 1028 1028 384 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<617 918> 713 102<518 1061> 1352 102<857 1143> -VStem: 201 264<279 708> -AnchorPoint: "top" 1008 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -492 713 m 1,0,1 - 465 578 465 578 465 483 c 0,2,3 - 465 381 465 381 490.5 301.5 c 128,-1,4 - 516 222 516 222 558 175.5 c 128,-1,5 - 600 129 600 129 649 105.5 c 128,-1,6 - 698 82 698 82 750 82 c 0,7,8 - 931 82 931 82 1108 285 c 1,9,-1 - 1257 209 l 1,10,11 - 1153 106 1153 106 1005 43 c 128,-1,12 - 857 -20 857 -20 696 -20 c 0,13,14 - 626 -20 626 -20 557 -0.5 c 128,-1,15 - 488 19 488 19 423.5 61.5 c 128,-1,16 - 359 104 359 104 310 164.5 c 128,-1,17 - 261 225 261 225 231 314.5 c 128,-1,18 - 201 404 201 404 201 510 c 0,19,20 - 201 683 201 683 266.5 855 c 128,-1,21 - 332 1027 332 1027 439.5 1158.5 c 128,-1,22 - 547 1290 547 1290 694.5 1372 c 128,-1,23 - 842 1454 842 1454 997 1454 c 0,24,25 - 1371 1454 1371 1454 1489 1245 c 1,26,-1 - 1270 1157 l 1,27,28 - 1232 1238 1232 1238 1162 1295 c 128,-1,29 - 1092 1352 1092 1352 1004 1352 c 0,30,31 - 922 1352 922 1352 845 1307 c 128,-1,32 - 768 1262 768 1262 707 1185 c 128,-1,33 - 646 1108 646 1108 598.5 1014.5 c 128,-1,34 - 551 921 551 921 518 815 c 1,35,-1 - 1085 815 l 1,36,-1 - 1061 713 l 1,37,-1 - 492 713 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10054 -Encoding: 1029 1029 385 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -20 102<527 773> 1352 102<812 1024> -VStem: 207 238<177 350> 430 270<940 1185> 932 270<279 555> -LayerCount: 2 -Fore -Refer: 45 83 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10055 -Encoding: 1030 1030 386 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> -VStem: 92 598 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10056 -Encoding: 1031 1031 387 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1516 170<385 516 672 803> -VStem: 92 598 346 209 633 209 -LayerCount: 2 -Fore -Refer: 151 207 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10057 -Encoding: 1032 1032 388 -Width: 894 -VWidth: 0 -Flags: W -HStem: -20 102<307 501> 1393 41<851 1126> -AnchorPoint: "top" 711 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 37 74 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10058 -Encoding: 1033 1033 389 -Width: 1843 -VWidth: 0 -Flags: W -HStem: -20 102<144 384> 0 102<1184 1365> 799 102<1368 1520> 1331 102<952 1200> -VStem: 1587 264<362 724> -AnchorPoint: "top" 1096 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1851 547 m 0,0,1 - 1851 482 1851 482 1828 408.5 c 128,-1,2 - 1805 335 1805 335 1756.5 262.5 c 128,-1,3 - 1708 190 1708 190 1642 131.5 c 128,-1,4 - 1576 73 1576 73 1482 36.5 c 128,-1,5 - 1388 0 1388 0 1282 0 c 2,6,-1 - 893 0 l 1,7,-1 - 1200 1331 l 1,8,-1 - 952 1331 l 1,9,-1 - 705 260 l 1,10,11 - 642 -20 642 -20 254 -20 c 0,12,13 - 191 -20 191 -20 133 3.5 c 128,-1,14 - 75 27 75 27 47 72 c 1,15,-1 - 190 133 l 1,16,17 - 212 82 212 82 307 82 c 0,18,19 - 364 82 364 82 393.5 136.5 c 128,-1,20 - 423 191 423 191 455 328 c 2,21,-1 - 711 1434 l 1,22,-1 - 1491 1434 l 1,23,-1 - 1368 901 l 1,24,-1 - 1487 901 l 2,25,26 - 1574 901 1574 901 1644.5 871 c 128,-1,27 - 1715 841 1715 841 1759.5 791 c 128,-1,28 - 1804 741 1804 741 1827.5 678.5 c 128,-1,29 - 1851 616 1851 616 1851 547 c 0,0,1 -1245 102 m 2,30,31 - 1332 102 1332 102 1413 173.5 c 128,-1,32 - 1494 245 1494 245 1540.5 351.5 c 128,-1,33 - 1587 458 1587 458 1587 561 c 0,34,35 - 1587 608 1587 608 1577 649 c 128,-1,36 - 1567 690 1567 690 1546.5 724.5 c 128,-1,37 - 1526 759 1526 759 1490 779 c 128,-1,38 - 1454 799 1454 799 1405 799 c 2,39,-1 - 1343 799 l 1,40,-1 - 1184 102 l 1,41,-1 - 1245 102 l 2,30,31 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10059 -Encoding: 1034 1034 390 -Width: 1783 -VWidth: 0 -Flags: W -HStem: 0 102<1124 1306> 799 102<557 1018 1309 1460> 1393 41G<404 680 1156 1432> -VStem: 1528 264<362 724> -AnchorPoint: "top" 930 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1792 547 m 0,0,1 - 1792 482 1792 482 1769 408.5 c 128,-1,2 - 1746 335 1746 335 1697.5 262.5 c 128,-1,3 - 1649 190 1649 190 1583 131.5 c 128,-1,4 - 1517 73 1517 73 1423 36.5 c 128,-1,5 - 1329 0 1329 0 1223 0 c 2,6,-1 - 834 0 l 1,7,-1 - 1018 799 l 1,8,-1 - 532 799 l 1,9,-1 - 348 0 l 1,10,-1 - 82 0 l 1,11,-1 - 414 1434 l 1,12,-1 - 680 1434 l 1,13,-1 - 557 901 l 1,14,-1 - 1042 901 l 1,15,-1 - 1165 1434 l 1,16,-1 - 1432 1434 l 1,17,-1 - 1309 901 l 1,18,-1 - 1427 901 l 2,19,20 - 1514 901 1514 901 1585 871 c 128,-1,21 - 1656 841 1656 841 1700 791 c 128,-1,22 - 1744 741 1744 741 1768 678.5 c 128,-1,23 - 1792 616 1792 616 1792 547 c 0,0,1 -1186 102 m 2,24,25 - 1273 102 1273 102 1354 173.5 c 128,-1,26 - 1435 245 1435 245 1481.5 351.5 c 128,-1,27 - 1528 458 1528 458 1528 561 c 0,28,29 - 1528 608 1528 608 1518 649 c 128,-1,30 - 1508 690 1508 690 1487.5 724.5 c 128,-1,31 - 1467 759 1467 759 1431 779 c 128,-1,32 - 1395 799 1395 799 1346 799 c 2,33,-1 - 1284 799 l 1,34,-1 - 1124 102 l 1,35,-1 - 1186 102 l 2,24,25 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10060 -Encoding: 1035 1035 391 -Width: 1449 -VWidth: 0 -Flags: W -HStem: 0 43G<487 761 1087 1353> 819 102<958 1212> 1331 102<352 795 1059 1526> -VStem: 1229 248<415 804> -AnchorPoint: "top" 954 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1087 0 m 9,0,-1 - 1196 467 l 2,1,2 - 1229 608 1229 608 1229 690 c 0,3,4 - 1229 761 1229 761 1205 790 c 128,-1,5 - 1181 819 1181 819 1135 819 c 0,6,7 - 1032 819 1032 819 926 758 c 1,8,-1 - 752 0 l 1,9,-1 - 487 0 l 1,10,-1 - 795 1331 l 1,11,-1 - 328 1331 l 1,12,-1 - 352 1434 l 1,13,-1 - 1554 1434 l 1,14,-1 - 1526 1331 l 1,15,-1 - 1059 1331 l 1,16,-1 - 956 891 l 1,17,18 - 1044 922 1044 922 1128 922 c 0,19,20 - 1477 922 1477 922 1477 641 c 0,21,22 - 1477 574 1477 574 1456 492 c 1,23,-1 - 1343 0 l 1,24,-1 - 1087 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10061 -Encoding: 1036 1036 392 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 119<1065 1110> 1393 41<414 690 1140 1458> 1495 403 -VStem: 782 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1169 246 2 -Refer: 406 1050 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni040D -Encoding: 1037 1037 393 -Width: 1363 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 991 1267> 1393 41<414 690 1313 1589> 1495 403 -VStem: 803 319 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1176 246 2 -Refer: 404 1048 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10062 -Encoding: 1038 1038 394 -Width: 1146 -VWidth: 0 -Flags: W -HStem: -29 102<324 474> 1384 41<395 622 1249 1520> 1434 123<757 1118> -VStem: 676 80<1521 1631> 1141 76<1564 1645> -LayerCount: 2 -Back -SplineSet -968.704 1652.74 m 0 - 1044.48 1652.74 1126.4 1701.89 1142.78 1746.94 c 1 - 1212.42 1705.98 l 1 - 1175.55 1603.58 1054.72 1515.52 935.936 1515.52 c 0 - 825.344 1515.52 747.52 1591.3 747.52 1685.5 c 0 - 747.52 1691.65 749.568 1699.84 749.568 1705.98 c 1 - 835.584 1746.94 l 1 - 835.584 1742.85 l 2 - 835.584 1699.84 894.976 1652.74 968.704 1652.74 c 0 -EndSplineSet -Refer: 415 1059 N 1 0 0 1 0 0 2 -Fore -Refer: 1068 57420 S 1 0 0 1 1208 164 2 -Refer: 415 1059 N 1 0 0 1 33 -8 2 -Validated: 1 -EndChar - -StartChar: afii10145 -Encoding: 1039 1039 395 -Width: 1173 -VWidth: 0 -Flags: W -HStem: 0 102<383 508 643 825> 1393 41G<414 690 1123 1399> -VStem: 535 158<-320 -186> -AnchorPoint: "top" 897 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -92 0 m 1,0,-1 - 424 1434 l 1,1,-1 - 690 1434 l 1,2,-1 - 383 102 l 1,3,-1 - 825 102 l 1,4,-1 - 1133 1434 l 1,5,-1 - 1399 1434 l 1,6,-1 - 1067 0 l 1,7,-1 - 643 0 l 1,8,-1 - 602 -125 l 1,9,10 - 647 -141 647 -141 669.5 -174 c 128,-1,11 - 692 -207 692 -207 692 -238 c 0,12,13 - 692 -287 692 -287 638 -329 c 128,-1,14 - 584 -371 584 -371 512 -397 c 1,15,-1 - 457 -373 l 1,16,17 - 487 -353 487 -353 511 -320.5 c 128,-1,18 - 535 -288 535 -288 535 -254 c 0,19,20 - 535 -194 535 -194 442 -164 c 1,21,-1 - 508 0 l 1,22,-1 - 92 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10017 -Encoding: 1040 1040 396 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> -AnchorPoint: "top" 975 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10018 -Encoding: 1041 1041 397 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<373 575> 799 102<557 729> 1331 102<655 1073> -VStem: 797 264<362 724> -AnchorPoint: "top" 844 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1061 547 m 0,0,1 - 1061 482 1061 482 1038 408.5 c 128,-1,2 - 1015 335 1015 335 966.5 262.5 c 128,-1,3 - 918 190 918 190 852 131.5 c 128,-1,4 - 786 73 786 73 692 36.5 c 128,-1,5 - 598 0 598 0 492 0 c 2,6,-1 - 82 0 l 1,7,-1 - 414 1434 l 1,8,-1 - 1098 1434 l 1,9,-1 - 1073 1331 l 1,10,-1 - 655 1331 l 1,11,-1 - 557 901 l 1,12,-1 - 696 901 l 2,13,14 - 783 901 783 901 854 871 c 128,-1,15 - 925 841 925 841 969 791 c 128,-1,16 - 1013 741 1013 741 1037 678.5 c 128,-1,17 - 1061 616 1061 616 1061 547 c 0,0,1 -455 102 m 2,18,19 - 542 102 542 102 623 173.5 c 128,-1,20 - 704 245 704 245 750.5 351.5 c 128,-1,21 - 797 458 797 458 797 561 c 0,22,23 - 797 661 797 661 752.5 730 c 128,-1,24 - 708 799 708 799 614 799 c 2,25,-1 - 532 799 l 1,26,-1 - 373 102 l 1,27,-1 - 455 102 l 2,18,19 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10019 -Encoding: 1042 1042 398 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<373 608> 727 102<541 682> 1331 102<655 806> -VStem: 780 268<296 657> 852 270<1002 1290> -AnchorPoint: "top" 741 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 28 66 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10020 -Encoding: 1043 1043 399 -Width: 899 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368> 1331 102<666 1227> -AnchorPoint: "top" 854 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -358 0 m 1,0,-1 - 92 0 l 1,1,-1 - 424 1434 l 1,2,-1 - 1251 1434 l 1,3,-1 - 1227 1331 l 1,4,-1 - 666 1331 l 1,5,-1 - 358 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10021 -Encoding: 1044 1044 400 -Width: 1230 -VWidth: 0 -Flags: W -HStem: -141 244<90 236 1049 1145> 0 102<416 782> 1331 102<772 786 974 1065 1331 1374> -VStem: 786 197<1223 1331> -AnchorPoint: "top" 1079 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -772 1434 m 1,0,-1 - 1399 1434 l 1,1,-1 - 1374 1331 l 1,2,-1 - 1331 1331 l 1,3,-1 - 1049 102 l 1,4,-1 - 1202 102 l 1,5,-1 - 1145 -141 l 1,6,-1 - 930 -141 l 1,7,-1 - 963 0 l 1,8,9 - 281 0 l 1,10,-1 - 248 -141 l 1,11,-1 - 33 -141 l 1,12,-1 - 90 102 l 1,13,-1 - 209 102 l 1,14,15 - 259 177 259 177 315 272.5 c 128,-1,16 - 371 368 371 368 453 524 c 128,-1,17 - 535 680 535 680 623 891.5 c 128,-1,18 - 711 1103 711 1103 786 1331 c 1,19,-1 - 748 1331 l 1,20,-1 - 772 1434 l 1,0,-1 -1065 1331 m 1,21,-1 - 983 1331 l 1,22,23 - 915 1125 915 1125 831 922 c 128,-1,24 - 747 719 747 719 666 559 c 128,-1,25 - 585 399 585 399 526.5 293 c 128,-1,26 - 468 187 468 187 416 102 c 1,27,-1 - 782 102 l 1,28,-1 - 1065 1331 l 1,21,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10022 -Encoding: 1045 1045 401 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> -AnchorPoint: "top" 854 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10024 -Encoding: 1046 1046 402 -Width: 1525 -VWidth: 0 -Flags: W -HStem: 0 43G<37 307 627 900 1214 1481> 1331 102<389 425 1685 1767> -VStem: 1214 268<0 209> -AnchorPoint: "top" 1094 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1081 825 m 1,0,1 - 1113 859 1113 859 1159 926 c 128,-1,2 - 1205 993 1205 993 1245 1056.5 c 128,-1,3 - 1285 1120 1285 1120 1344 1190.5 c 128,-1,4 - 1403 1261 1403 1261 1464 1313 c 128,-1,5 - 1525 1365 1525 1365 1611 1399.5 c 128,-1,6 - 1697 1434 1697 1434 1792 1434 c 1,7,-1 - 1767 1331 l 1,8,9 - 1720 1331 1720 1331 1666.5 1283 c 128,-1,10 - 1613 1235 1613 1235 1556.5 1159.5 c 128,-1,11 - 1500 1084 1500 1084 1440.5 1002.5 c 128,-1,12 - 1381 921 1381 921 1302.5 840.5 c 128,-1,13 - 1224 760 1224 760 1147 717 c 1,14,15 - 1219 661 1219 661 1285 555.5 c 128,-1,16 - 1351 450 1351 450 1392.5 343.5 c 128,-1,17 - 1434 237 1434 237 1458.5 146.5 c 128,-1,18 - 1483 56 1483 56 1483 14 c 0,19,20 - 1483 11 1483 11 1482 6.5 c 128,-1,21 - 1481 2 1481 2 1481 0 c 1,22,-1 - 1214 0 l 1,23,-1 - 1214 10 l 2,24,25 - 1214 44 1214 44 1202 124 c 128,-1,26 - 1190 204 1190 204 1169.5 302.5 c 128,-1,27 - 1149 401 1149 401 1113.5 496 c 128,-1,28 - 1078 591 1078 591 1038 635 c 1,29,-1 - 891 0 l 1,30,-1 - 627 0 l 1,31,-1 - 774 635 l 1,32,33 - 710 588 710 588 624.5 484.5 c 128,-1,34 - 539 381 539 381 471.5 279 c 128,-1,35 - 404 177 404 177 355 96 c 128,-1,36 - 306 15 306 15 303 0 c 1,37,-1 - 37 0 l 1,38,39 - 43 27 43 27 107 117.5 c 128,-1,40 - 171 208 171 208 262.5 319 c 128,-1,41 - 354 430 354 430 475.5 544 c 128,-1,42 - 597 658 597 658 700 717 c 1,43,44 - 643 760 643 760 602 840.5 c 128,-1,45 - 561 921 561 921 539.5 1002.5 c 128,-1,46 - 518 1084 518 1084 497 1159.5 c 128,-1,47 - 476 1235 476 1235 444 1283 c 128,-1,48 - 412 1331 412 1331 365 1331 c 1,49,-1 - 389 1434 l 1,50,51 - 461 1434 461 1434 518.5 1414.5 c 128,-1,52 - 576 1395 576 1395 613 1362.5 c 128,-1,53 - 650 1330 650 1330 679 1284.5 c 128,-1,54 - 708 1239 708 1239 723.5 1191 c 128,-1,55 - 739 1143 739 1143 752.5 1089.5 c 128,-1,56 - 766 1036 766 1036 773.5 990 c 128,-1,57 - 781 944 781 944 792.5 898.5 c 128,-1,58 - 804 853 804 853 817 825 c 1,59,-1 - 958 1434 l 1,60,-1 - 1223 1434 l 1,61,-1 - 1081 825 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10025 -Encoding: 1047 1047 403 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<356 590> 799 102<551 707> 1352 102<630 870> -VStem: 801 268<356 704> 899 264<1056 1329> -AnchorPoint: "top" 817 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1069 537 m 0,0,1 - 1069 461 1069 461 1038 381 c 128,-1,2 - 1007 301 1007 301 949 230 c 128,-1,3 - 891 159 891 159 815.5 102.5 c 128,-1,4 - 740 46 740 46 643 13 c 128,-1,5 - 546 -20 546 -20 444 -20 c 0,6,7 - 150 -20 150 -20 106 244 c 1,8,-1 - 307 295 l 1,9,-1 - 307 285 l 2,10,11 - 307 180 307 180 348 131 c 128,-1,12 - 389 82 389 82 487 82 c 0,13,14 - 552 82 552 82 626.5 152.5 c 128,-1,15 - 701 223 701 223 751 328.5 c 128,-1,16 - 801 434 801 434 801 526 c 0,17,18 - 801 582 801 582 789.5 626.5 c 128,-1,19 - 778 671 778 671 762 699 c 128,-1,20 - 746 727 746 727 719 747.5 c 128,-1,21 - 692 768 692 768 670.5 777.5 c 128,-1,22 - 649 787 649 787 617.5 792.5 c 128,-1,23 - 586 798 586 798 569 798.5 c 128,-1,24 - 552 799 552 799 526 799 c 1,25,-1 - 551 901 l 1,26,27 - 626 901 626 901 687 921.5 c 128,-1,28 - 748 942 748 942 786.5 973.5 c 128,-1,29 - 825 1005 825 1005 851 1046.5 c 128,-1,30 - 877 1088 877 1088 888 1128 c 128,-1,31 - 899 1168 899 1168 899 1206 c 0,32,33 - 899 1270 899 1270 870 1311 c 128,-1,34 - 841 1352 841 1352 797 1352 c 0,35,36 - 724 1352 724 1352 673 1330.5 c 128,-1,37 - 622 1309 622 1309 594 1278 c 128,-1,38 - 566 1247 566 1247 539 1194 c 1,39,-1 - 385 1239 l 1,40,41 - 465 1343 465 1343 578.5 1398.5 c 128,-1,42 - 692 1454 692 1454 803 1454 c 0,43,44 - 979 1454 979 1454 1071 1378 c 128,-1,45 - 1163 1302 1163 1302 1163 1190 c 0,46,47 - 1163 1089 1163 1089 1091 995 c 128,-1,48 - 1019 901 1019 901 891 850 c 1,49,50 - 985 801 985 801 1027 717 c 128,-1,51 - 1069 633 1069 633 1069 537 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10026 -Encoding: 1048 1048 404 -Width: 1363 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368 991 1267> 1393 41G<414 690 1313 1589> -AnchorPoint: "top" 995 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -358 0 m 1,0,-1 - 92 0 l 1,1,-1 - 424 1434 l 1,2,-1 - 690 1434 l 1,3,-1 - 451 401 l 1,4,-1 - 1300 1341 l 1,5,-1 - 1323 1434 l 1,6,-1 - 1589 1434 l 1,7,-1 - 1257 0 l 1,8,-1 - 991 0 l 1,9,-1 - 1229 1030 l 1,10,-1 - 379 92 l 1,11,-1 - 358 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10027 -Encoding: 1049 1049 405 -Width: 1363 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 991 1267> 1393 41<414 690 1313 1589> 1434 123<831 1191> -VStem: 750 80<1521 1631> 1214 76<1564 1645> -LayerCount: 2 -Back -SplineSet -1013.76 1570.82 m 0 - 1089.54 1570.82 1171.46 1619.97 1187.84 1665.02 c 1 - 1257.47 1624.06 l 1 - 1220.61 1521.66 1099.78 1433.6 980.992 1433.6 c 0 - 870.4 1433.6 792.576 1509.38 792.576 1603.58 c 0 - 792.576 1609.73 794.624 1617.92 794.624 1624.06 c 1 - 880.64 1665.02 l 1 - 880.64 1660.93 l 2 - 880.64 1617.92 940.032 1570.82 1013.76 1570.82 c 0 -EndSplineSet -Refer: 404 1048 N 1 0 0 1 0 0 3 -Fore -Refer: 1068 57420 S 1 0 0 1 1282 164 2 -Refer: 404 1048 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10028 -Encoding: 1050 1050 406 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 119<1065 1110> 1393 41G<414 690 1140 1458> -AnchorPoint: "top" 856 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -358 0 m 1,0,-1 - 92 0 l 1,1,-1 - 424 1434 l 1,2,-1 - 690 1434 l 1,3,-1 - 561 877 l 1,4,-1 - 1186 1434 l 1,5,-1 - 1458 1434 l 1,6,-1 - 760 813 l 1,7,8 - 835 792 835 792 884 742.5 c 128,-1,9 - 933 693 933 693 954 630.5 c 128,-1,10 - 975 568 975 568 986.5 497 c 128,-1,11 - 998 426 998 426 1004 359.5 c 128,-1,12 - 1010 293 1010 293 1020.5 239 c 128,-1,13 - 1031 185 1031 185 1059.5 152 c 128,-1,14 - 1088 119 1088 119 1137 119 c 1,15,-1 - 1110 0 l 1,16,17 - 1007 0 1007 0 933.5 35.5 c 128,-1,18 - 860 71 860 71 822 128.5 c 128,-1,19 - 784 186 784 186 761 256 c 128,-1,20 - 738 326 738 326 728.5 399.5 c 128,-1,21 - 719 473 719 473 711 535 c 128,-1,22 - 703 597 703 597 685.5 643.5 c 128,-1,23 - 668 690 668 690 637 702 c 1,24,-1 - 492 571 l 1,25,-1 - 358 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10029 -Encoding: 1051 1051 407 -Width: 1347 -VWidth: 0 -Flags: W -HStem: -20 102<142 374> 0 43G<975 1251> 1331 102<952 1282> -AnchorPoint: "top" 1143 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -975 0 m 1,0,-1 - 1282 1331 l 1,1,-1 - 952 1331 l 1,2,-1 - 705 260 l 2,3,4 - 641 -20 641 -20 233 -20 c 0,5,6 - 104 -20 104 -20 47 72 c 1,7,-1 - 190 133 l 1,8,9 - 212 82 212 82 287 82 c 0,10,11 - 347 82 347 82 386 140.5 c 128,-1,12 - 425 199 425 199 455 328 c 2,13,-1 - 711 1434 l 1,14,-1 - 1573 1434 l 1,15,-1 - 1241 0 l 1,16,-1 - 975 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10030 -Encoding: 1052 1052 408 -Width: 1480 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 1108 1384> 1393 41<414 700 1411 1706> -AnchorPoint: "top" 1065 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 40 77 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10031 -Encoding: 1053 1053 409 -Width: 1189 -VWidth: 0 -Flags: W -HStem: 0 43<82 358 823 1099> 717 102<537 989> 1393 41<404 680 1146 1421> -AnchorPoint: "top" 926 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 35 72 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10032 -Encoding: 1054 1054 410 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> -VStem: 199 258<251 749> 1235 256<698 1177> -AnchorPoint: "top" 997 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10033 -Encoding: 1055 1055 411 -Width: 1173 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368 801 1076> 1331 102<666 1108> -AnchorPoint: "top" 907 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -92 0 m 9,0,-1 - 424 1434 l 1,1,-1 - 1399 1434 l 1,2,-1 - 1067 0 l 1,3,-1 - 801 0 l 1,4,-1 - 1108 1331 l 1,5,-1 - 666 1331 l 1,6,-1 - 358 0 l 1,7,-1 - 92 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10034 -Encoding: 1056 1056 412 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 655 102<532 758> 1331 102<666 881> -VStem: 940 266<951 1271> -AnchorPoint: "top" 811 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 29 80 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10035 -Encoding: 1057 1057 413 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<601 928> 1331 102<832 1172> -VStem: 201 260<280 770> -AnchorPoint: "top" 1008 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 30 67 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10036 -Encoding: 1058 1058 414 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43<487 763> 1331 102<352 795 1061 1526> -AnchorPoint: "top" 954 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 46 84 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10037 -Encoding: 1059 1059 415 -Width: 1146 -VWidth: 0 -Flags: W -HStem: -20 102<292 442> 1393 41G<362 589 1217 1487> -AnchorPoint: "top" 924 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1241 1434 m 1,0,-1 - 1487 1434 l 1,1,-1 - 797 279 l 2,2,3 - 744 189 744 189 688 129 c 128,-1,4 - 632 69 632 69 571 37 c 128,-1,5 - 510 5 510 5 449 -7.5 c 128,-1,6 - 388 -20 388 -20 311 -20 c 0,7,8 - 251 -20 251 -20 193 17.5 c 128,-1,9 - 135 55 135 55 94 115 c 1,10,-1 - 260 180 l 1,11,12 - 293 115 293 115 312.5 98.5 c 128,-1,13 - 332 82 332 82 362 82 c 0,14,15 - 428 82 428 82 522 231 c 1,16,-1 - 362 1434 l 1,17,-1 - 584 1434 l 1,18,-1 - 702 530 l 1,19,-1 - 1241 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10038 -Encoding: 1060 1060 416 -Width: 1370 -VWidth: 0 -Flags: W -HStem: 0 43G<547 820> 197 111<555 592> 1122 111<1096 1136> 1393 41G<869 1143> -VStem: 215 258<432 807> 1214 260<638 1003> -AnchorPoint: "top" 1014 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -618 307 m 1,0,-1 - 809 1130 l 1,1,2 - 729 1107 729 1107 666.5 1050.5 c 128,-1,3 - 604 994 604 994 569 928.5 c 128,-1,4 - 534 863 534 863 511 787 c 128,-1,5 - 488 711 488 711 480.5 657 c 128,-1,6 - 473 603 473 603 473 563 c 0,7,8 - 473 366 473 366 618 307 c 1,0,-1 -834 1241 m 1,9,-1 - 879 1434 l 1,10,-1 - 1143 1434 l 1,11,-1 - 1096 1233 l 1,12,13 - 1265 1195 1265 1195 1370 1087.5 c 128,-1,14 - 1475 980 1475 980 1475 825 c 0,15,16 - 1475 607 1475 607 1298 425.5 c 128,-1,17 - 1121 244 1121 244 856 197 c 1,18,-1 - 811 0 l 1,19,-1 - 547 0 l 1,20,-1 - 592 197 l 1,21,22 - 432 230 432 230 323.5 340.5 c 128,-1,23 - 215 451 215 451 215 612 c 0,24,25 - 215 763 215 763 306.5 901.5 c 128,-1,26 - 398 1040 398 1040 539 1128 c 128,-1,27 - 680 1216 680 1216 834 1241 c 1,9,-1 -1069 1122 m 1,28,-1 - 883 309 l 1,29,30 - 968 340 968 340 1035 407 c 128,-1,31 - 1102 474 1102 474 1139.5 556 c 128,-1,32 - 1177 638 1177 638 1195.5 718.5 c 128,-1,33 - 1214 799 1214 799 1214 870 c 0,34,35 - 1214 1061 1214 1061 1069 1122 c 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10039 -Encoding: 1061 1061 417 -Width: 1095 -VWidth: 0 -Flags: W -HStem: 0 43<41 254 765 1034> 1393 41<377 646 1071 1286> -LayerCount: 2 -Fore -Refer: 49 88 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10040 -Encoding: 1062 1062 418 -Width: 1290 -VWidth: 0 -Flags: W -HStem: 0 102<383 825> 1393 41G<414 690 1123 1399> -VStem: 1104 158<-320 -186> -AnchorPoint: "top" 897 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -92 0 m 1,0,-1 - 424 1434 l 1,1,-1 - 690 1434 l 1,2,-1 - 383 102 l 1,3,-1 - 825 102 l 1,4,-1 - 1133 1434 l 1,5,-1 - 1399 1434 l 1,6,-1 - 1092 102 l 1,7,-1 - 1245 102 l 1,8,-1 - 1171 -125 l 1,9,10 - 1216 -141 1216 -141 1239 -174 c 128,-1,11 - 1262 -207 1262 -207 1262 -238 c 0,12,13 - 1262 -287 1262 -287 1207.5 -329 c 128,-1,14 - 1153 -371 1153 -371 1081 -397 c 1,15,-1 - 1026 -373 l 1,16,17 - 1056 -353 1056 -353 1080 -320.5 c 128,-1,18 - 1104 -288 1104 -288 1104 -254 c 0,19,20 - 1104 -194 1104 -194 1012 -164 c 1,21,-1 - 1077 0 l 1,22,-1 - 92 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10041 -Encoding: 1063 1063 419 -Width: 1101 -VWidth: 0 -Flags: W -HStem: 0 43G<729 1005> 522 102<591 838> 1393 41G<404 680 1051 1327> -VStem: 303 256<661 1109> -AnchorPoint: "top" 856 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -895 721 m 1,0,-1 - 1061 1434 l 1,1,-1 - 1327 1434 l 1,2,-1 - 995 0 l 1,3,-1 - 729 0 l 1,4,-1 - 862 573 l 1,5,6 - 780 522 780 522 651 522 c 0,7,8 - 480 522 480 522 391.5 603.5 c 128,-1,9 - 303 685 303 685 303 858 c 0,10,11 - 303 946 303 946 332 1085 c 1,12,-1 - 414 1434 l 1,13,-1 - 680 1434 l 1,14,-1 - 604 1110 l 2,15,16 - 559 914 559 914 559 805 c 0,17,18 - 559 748 559 748 570 710.5 c 128,-1,19 - 581 673 581 673 603 655.5 c 128,-1,20 - 625 638 625 638 648.5 631.5 c 128,-1,21 - 672 625 672 625 705 625 c 0,22,23 - 815 625 815 625 895 721 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10042 -Encoding: 1064 1064 420 -Width: 1644 -VWidth: 0 -Flags: W -HStem: 0 102<383 707 973 1296> 1393 41G<414 690 1004 1280 1594 1870> -AnchorPoint: "top" 1155 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1870 1434 m 1,0,-1 - 1538 0 l 1,1,-1 - 92 0 l 1,2,-1 - 424 1434 l 1,3,-1 - 690 1434 l 1,4,-1 - 383 102 l 1,5,-1 - 707 102 l 1,6,-1 - 1014 1434 l 1,7,-1 - 1280 1434 l 1,8,-1 - 973 102 l 1,9,-1 - 1296 102 l 1,10,-1 - 1604 1434 l 1,11,-1 - 1870 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10043 -Encoding: 1065 1065 421 -Width: 1761 -VWidth: 0 -Flags: W -HStem: 0 102<383 707 973 1296> 1393 41G<414 690 1004 1280 1594 1870> -VStem: 1575 158<-320 -186> -AnchorPoint: "top" 1155 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1548 0 m 1,0,-1 - 92 0 l 1,1,-1 - 424 1434 l 1,2,-1 - 690 1434 l 1,3,-1 - 383 102 l 1,4,-1 - 707 102 l 1,5,-1 - 1014 1434 l 1,6,-1 - 1280 1434 l 1,7,-1 - 973 102 l 1,8,-1 - 1296 102 l 1,9,-1 - 1604 1434 l 1,10,-1 - 1870 1434 l 1,11,-1 - 1563 102 l 1,12,-1 - 1716 102 l 1,13,-1 - 1642 -125 l 1,14,15 - 1687 -141 1687 -141 1710 -174 c 128,-1,16 - 1733 -207 1733 -207 1733 -238 c 0,17,18 - 1733 -287 1733 -287 1678.5 -329 c 128,-1,19 - 1624 -371 1624 -371 1552 -397 c 1,20,-1 - 1497 -373 l 1,21,22 - 1527 -353 1527 -353 1551 -320.5 c 128,-1,23 - 1575 -288 1575 -288 1575 -254 c 0,24,25 - 1575 -194 1575 -194 1483 -164 c 1,26,-1 - 1548 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10044 -Encoding: 1066 1066 422 -Width: 1306 -VWidth: 0 -Flags: W -HStem: 0 102<627 829> 799 102<811 983> 1331 102<352 643> -VStem: 1051 264<362 724> -AnchorPoint: "top" 801 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1315 547 m 0,0,1 - 1315 482 1315 482 1291.5 408.5 c 128,-1,2 - 1268 335 1268 335 1220 262.5 c 128,-1,3 - 1172 190 1172 190 1106 131.5 c 128,-1,4 - 1040 73 1040 73 945.5 36.5 c 128,-1,5 - 851 0 851 0 745 0 c 2,6,-1 - 336 0 l 1,7,-1 - 643 1331 l 1,8,-1 - 328 1331 l 1,9,-1 - 352 1434 l 1,10,-1 - 934 1434 l 1,11,-1 - 811 901 l 1,12,-1 - 950 901 l 2,13,14 - 1037 901 1037 901 1108 871 c 128,-1,15 - 1179 841 1179 841 1223 791 c 128,-1,16 - 1267 741 1267 741 1291 678.5 c 128,-1,17 - 1315 616 1315 616 1315 547 c 0,0,1 -709 102 m 2,18,19 - 796 102 796 102 877 173.5 c 128,-1,20 - 958 245 958 245 1004.5 351.5 c 128,-1,21 - 1051 458 1051 458 1051 561 c 0,22,23 - 1051 661 1051 661 1006.5 730 c 128,-1,24 - 962 799 962 799 868 799 c 2,25,-1 - 786 799 l 1,26,-1 - 627 102 l 1,27,-1 - 709 102 l 2,18,19 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10045 -Encoding: 1067 1067 423 -Width: 1441 -VWidth: 0 -Flags: W -HStem: 0 43<1075 1351> 0 102<373 575> 799 102<557 729> 1393 41<404 680 1397 1673> -VStem: 797 264<362 724> 1075 598 -AnchorPoint: "top" 1024 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 983 0 2 -Refer: 424 1068 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10046 -Encoding: 1068 1068 424 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<373 575> 799 102<557 729> 1393 41G<404 680> -VStem: 797 264<362 724> -AnchorPoint: "top" 745 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -455 102 m 2,0,1 - 542 102 542 102 623 173.5 c 128,-1,2 - 704 245 704 245 750.5 351.5 c 128,-1,3 - 797 458 797 458 797 561 c 0,4,5 - 797 661 797 661 752.5 730 c 128,-1,6 - 708 799 708 799 614 799 c 2,7,-1 - 532 799 l 1,8,-1 - 373 102 l 1,9,-1 - 455 102 l 2,0,1 -1061 547 m 0,10,11 - 1061 482 1061 482 1038 408.5 c 128,-1,12 - 1015 335 1015 335 966.5 262.5 c 128,-1,13 - 918 190 918 190 852 131.5 c 128,-1,14 - 786 73 786 73 692 36.5 c 128,-1,15 - 598 0 598 0 492 0 c 2,16,-1 - 82 0 l 1,17,-1 - 414 1434 l 1,18,-1 - 680 1434 l 1,19,-1 - 557 901 l 1,20,-1 - 696 901 l 2,21,22 - 783 901 783 901 854 871 c 128,-1,23 - 925 841 925 841 969 791 c 128,-1,24 - 1013 741 1013 741 1037 678.5 c 128,-1,25 - 1061 616 1061 616 1061 547 c 0,10,11 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10047 -Encoding: 1069 1069 425 -Width: 1282 -VWidth: 0 -Flags: W -HStem: -20 102<409 735> 713 102<717 1108> 1352 102<721 1050> -VStem: 1147 258<825 1195> -AnchorPoint: "top" 926 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -111 209 m 1,0,-1 - 293 285 l 1,1,2 - 314 236 314 236 335 203 c 128,-1,3 - 356 170 356 170 389.5 140.5 c 128,-1,4 - 423 111 423 111 472 96.5 c 128,-1,5 - 521 82 521 82 588 82 c 0,6,7 - 693 82 693 82 797.5 168.5 c 128,-1,8 - 902 255 902 255 983 398.5 c 128,-1,9 - 1064 542 1064 542 1108 713 c 1,10,-1 - 692 713 l 1,11,-1 - 717 815 l 1,12,-1 - 1128 815 l 1,13,14 - 1147 923 1147 923 1147 1020 c 0,15,16 - 1147 1184 1147 1184 1087 1268 c 128,-1,17 - 1027 1352 1027 1352 920 1352 c 0,18,19 - 850 1352 850 1352 791.5 1336.5 c 128,-1,20 - 733 1321 733 1321 684.5 1289 c 128,-1,21 - 636 1257 636 1257 605 1229.5 c 128,-1,22 - 574 1202 574 1202 532 1157 c 1,23,-1 - 354 1245 l 1,24,25 - 458 1344 458 1344 588.5 1399 c 128,-1,26 - 719 1454 719 1454 913 1454 c 0,27,28 - 1020 1454 1020 1454 1108.5 1424.5 c 128,-1,29 - 1197 1395 1197 1395 1264 1336 c 128,-1,30 - 1331 1277 1331 1277 1368 1182 c 128,-1,31 - 1405 1087 1405 1087 1405 963 c 0,32,33 - 1405 848 1405 848 1379 731 c 128,-1,34 - 1353 614 1353 614 1304 504.5 c 128,-1,35 - 1255 395 1255 395 1178.5 299.5 c 128,-1,36 - 1102 204 1102 204 1008.5 133 c 128,-1,37 - 915 62 915 62 792.5 21 c 128,-1,38 - 670 -20 670 -20 535 -20 c 0,39,40 - 237 -20 237 -20 111 209 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10048 -Encoding: 1070 1070 426 -Width: 1708 -VWidth: 0 -Flags: W -HStem: -20 102<957 1218> 0 43G<92 368> 713 102<547 645> 1352 102<1214 1493> 1393 41G<414 690> -VStem: 616 254<226 701> 1581 250<735 1209> -AnchorPoint: "top" 913 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1348 1352 m 0,0,1 - 1277 1352 1277 1352 1213.5 1310 c 128,-1,2 - 1150 1268 1150 1268 1102.5 1200 c 128,-1,3 - 1055 1132 1055 1132 1015.5 1043.5 c 128,-1,4 - 976 955 976 955 949.5 862.5 c 128,-1,5 - 923 770 923 770 904.5 679.5 c 128,-1,6 - 886 589 886 589 878 517 c 128,-1,7 - 870 445 870 445 870 397 c 0,8,9 - 870 238 870 238 925 160 c 128,-1,10 - 980 82 980 82 1073 82 c 0,11,12 - 1163 82 1163 82 1241 139 c 128,-1,13 - 1319 196 1319 196 1372.5 287.5 c 128,-1,14 - 1426 379 1426 379 1468 488 c 128,-1,15 - 1510 597 1510 597 1533.5 708.5 c 128,-1,16 - 1557 820 1557 820 1569 908.5 c 128,-1,17 - 1581 997 1581 997 1581 1055 c 0,18,19 - 1581 1208 1581 1208 1522.5 1280 c 128,-1,20 - 1464 1352 1464 1352 1348 1352 c 0,0,1 -1831 971 m 0,21,22 - 1831 896 1831 896 1818.5 810.5 c 128,-1,23 - 1806 725 1806 725 1777 628 c 128,-1,24 - 1748 531 1748 531 1705 440 c 128,-1,25 - 1662 349 1662 349 1597 264.5 c 128,-1,26 - 1532 180 1532 180 1453.5 117.5 c 128,-1,27 - 1375 55 1375 55 1267.5 17.5 c 128,-1,28 - 1160 -20 1160 -20 1038 -20 c 0,29,30 - 952 -20 952 -20 877.5 9.5 c 128,-1,31 - 803 39 803 39 743.5 97 c 128,-1,32 - 684 155 684 155 650 250 c 128,-1,33 - 616 345 616 345 616 467 c 0,34,35 - 616 580 616 580 645 713 c 1,36,-1 - 522 713 l 1,37,-1 - 358 0 l 1,38,-1 - 92 0 l 1,39,-1 - 424 1434 l 1,40,-1 - 690 1434 l 1,41,-1 - 547 815 l 1,42,-1 - 674 815 l 1,43,44 - 713 944 713 944 772 1051 c 128,-1,45 - 831 1158 831 1158 899.5 1231.5 c 128,-1,46 - 968 1305 968 1305 1046.5 1356 c 128,-1,47 - 1125 1407 1125 1407 1203.5 1430.5 c 128,-1,48 - 1282 1454 1282 1454 1360 1454 c 0,49,50 - 1574 1454 1574 1454 1702.5 1333 c 128,-1,51 - 1831 1212 1831 1212 1831 971 c 0,21,22 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10049 -Encoding: 1071 1071 427 -Width: 1120 -VWidth: 0 -Flags: W -HStem: 0 119<68 170> 655 102<754 899> 1331 102<830 1055> -VStem: 381 266<817 1139> -AnchorPoint: "top" 958 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -963 1331 m 2,0,1 - 895 1331 895 1331 834.5 1297 c 128,-1,2 - 774 1263 774 1263 734 1209 c 128,-1,3 - 694 1155 694 1155 670.5 1089.5 c 128,-1,4 - 647 1024 647 1024 647 961 c 0,5,6 - 647 875 647 875 691 816.5 c 128,-1,7 - 735 758 735 758 829 758 c 2,8,-1 - 922 758 l 1,9,-1 - 1055 1331 l 1,10,-1 - 963 1331 l 2,0,1 -381 963 m 0,11,12 - 381 1041 381 1041 417 1122 c 128,-1,13 - 453 1203 453 1203 519 1273.5 c 128,-1,14 - 585 1344 585 1344 692 1389 c 128,-1,15 - 799 1434 799 1434 926 1434 c 2,16,-1 - 1346 1434 l 1,17,-1 - 1014 0 l 1,18,-1 - 748 0 l 1,19,-1 - 899 655 l 1,20,-1 - 786 655 l 1,21,22 - 749 618 749 618 701.5 547.5 c 128,-1,23 - 654 477 654 477 614 408.5 c 128,-1,24 - 574 340 574 340 514.5 264 c 128,-1,25 - 455 188 455 188 392 131 c 128,-1,26 - 329 74 329 74 237.5 37 c 128,-1,27 - 146 0 146 0 41 0 c 1,28,-1 - 68 119 l 1,29,30 - 118 119 118 119 168 156 c 128,-1,31 - 218 193 218 193 265.5 257.5 c 128,-1,32 - 313 322 313 322 358.5 391.5 c 128,-1,33 - 404 461 404 461 464.5 543 c 128,-1,34 - 525 625 525 625 582 680 c 1,35,36 - 479 716 479 716 430 793 c 128,-1,37 - 381 870 381 870 381 963 c 0,11,12 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10065 -Encoding: 1072 1072 428 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> -VStem: 154 246<136 485> 690 262<96 373> 1075 72<97 131> -AnchorPoint: "top" 731 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10066 -Encoding: 1073 1073 429 -Width: 1007 -VWidth: 0 -Flags: W -HStem: -20 102<453 618> 819 102<571 773> 1202 102<691 913> -VStem: 182 240<123 548> 803 256<375 785> 1071 61<1367 1377> -AnchorPoint: "top" 862 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -182 330 m 0,0,1 - 182 443 182 443 213.5 576.5 c 128,-1,2 - 245 710 245 710 303 837.5 c 128,-1,3 - 361 965 361 965 436 1070.5 c 128,-1,4 - 511 1176 511 1176 606.5 1240.5 c 128,-1,5 - 702 1305 702 1305 799 1305 c 2,6,-1 - 850 1305 l 2,7,8 - 911 1305 911 1305 977.5 1331.5 c 128,-1,9 - 1044 1358 1044 1358 1071 1397 c 1,10,-1 - 1133 1370 l 1,11,12 - 1130 1362 1130 1362 1125 1349 c 128,-1,13 - 1120 1336 1120 1336 1101 1303 c 128,-1,14 - 1082 1270 1082 1270 1059 1245 c 128,-1,15 - 1036 1220 1036 1220 997.5 1199 c 128,-1,16 - 959 1178 959 1178 915 1178 c 0,17,18 - 886 1178 886 1178 849 1190 c 128,-1,19 - 812 1202 812 1202 776 1202 c 0,20,21 - 711 1202 711 1202 660 1132 c 128,-1,22 - 609 1062 609 1062 557 899 c 1,23,24 - 641 922 641 922 705 922 c 0,25,26 - 888 922 888 922 973.5 835.5 c 128,-1,27 - 1059 749 1059 749 1059 602 c 0,28,29 - 1059 439 1059 439 981.5 295.5 c 128,-1,30 - 904 152 904 152 771.5 66 c 128,-1,31 - 639 -20 639 -20 487 -20 c 0,32,33 - 447 -20 447 -20 410 -12.5 c 128,-1,34 - 373 -5 373 -5 329.5 17.5 c 128,-1,35 - 286 40 286 40 255 77 c 128,-1,36 - 224 114 224 114 203 179 c 128,-1,37 - 182 244 182 244 182 330 c 0,0,1 -541 82 m 0,38,39 - 579 82 579 82 625.5 130.5 c 128,-1,40 - 672 179 672 179 711 254 c 128,-1,41 - 750 329 750 329 776.5 428 c 128,-1,42 - 803 527 803 527 803 618 c 0,43,44 - 803 706 803 706 779.5 762.5 c 128,-1,45 - 756 819 756 819 711 819 c 0,46,47 - 633 819 633 819 569.5 773.5 c 128,-1,48 - 506 728 506 728 483 629 c 0,49,50 - 481 617 481 617 468.5 563 c 128,-1,51 - 456 509 456 509 447 467.5 c 128,-1,52 - 438 426 438 426 430 367.5 c 128,-1,53 - 422 309 422 309 422 264 c 0,54,55 - 422 82 422 82 541 82 c 0,38,39 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10067 -Encoding: 1074 1074 430 -Width: 1007 -VWidth: 0 -Flags: W -HStem: -20 102<445 628> 440 102<461 675> 819 102<558 720> -VStem: 147 266<108 438> 721 252<183 410 589 814> -AnchorPoint: "top" 674 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -973 311 m 0,0,1 - 973 255 973 255 941 198 c 128,-1,2 - 909 141 909 141 849 91.5 c 128,-1,3 - 789 42 789 42 688.5 11 c 128,-1,4 - 588 -20 588 -20 465 -20 c 0,5,6 - 325 -20 325 -20 236 50.5 c 128,-1,7 - 147 121 147 121 147 246 c 0,8,9 - 147 273 147 273 158 326 c 2,10,-1 - 217 590 l 2,11,12 - 225 626 225 626 247.5 668.5 c 128,-1,13 - 270 711 270 711 308 756.5 c 128,-1,14 - 346 802 346 802 393 838.5 c 128,-1,15 - 440 875 440 875 503.5 898.5 c 128,-1,16 - 567 922 567 922 635 922 c 0,17,18 - 736 922 736 922 808 904.5 c 128,-1,19 - 880 887 880 887 916 856 c 128,-1,20 - 952 825 952 825 967.5 792 c 128,-1,21 - 983 759 983 759 983 719 c 0,22,23 - 983 669 983 669 965.5 630 c 128,-1,24 - 948 591 948 591 927 570.5 c 128,-1,25 - 906 550 906 550 875 534.5 c 128,-1,26 - 844 519 844 519 829.5 515 c 128,-1,27 - 815 511 815 511 797 508 c 1,28,29 - 884 494 884 494 928.5 438 c 128,-1,30 - 973 382 973 382 973 311 c 0,0,1 -528 82 m 0,31,32 - 598 82 598 82 659.5 155.5 c 128,-1,33 - 721 229 721 229 721 317 c 0,34,35 - 721 440 721 440 553 440 c 2,36,-1 - 438 440 l 1,37,38 - 414 342 414 342 414 254 c 0,39,40 - 414 82 414 82 528 82 c 0,31,32 -461 543 m 1,41,-1 - 551 543 l 2,42,43 - 596 543 596 543 630.5 558 c 128,-1,44 - 665 573 665 573 683.5 594 c 128,-1,45 - 702 615 702 615 713.5 642.5 c 128,-1,46 - 725 670 725 670 728 689.5 c 128,-1,47 - 731 709 731 709 731 727 c 0,48,49 - 731 769 731 769 707.5 794 c 128,-1,50 - 684 819 684 819 649 819 c 0,51,52 - 612 819 612 819 582.5 800 c 128,-1,53 - 553 781 553 781 531 742.5 c 128,-1,54 - 509 704 509 704 493 657 c 128,-1,55 - 477 610 477 610 461 543 c 1,41,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10068 -Encoding: 1075 1075 431 -Width: 835 -VWidth: 0 -Flags: W -HStem: -20 102<411 606> 819 102<385 580> -VStem: 131 270<91 264> 590 268<664 811> -AnchorPoint: "top" 621 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -590 741 m 0,0,1 - 590 771 590 771 568 795 c 128,-1,2 - 546 819 546 819 506 819 c 0,3,4 - 453 819 453 819 378 772.5 c 128,-1,5 - 303 726 303 726 276 678 c 1,6,-1 - 211 694 l 1,7,8 - 264 800 264 800 356 861 c 128,-1,9 - 448 922 448 922 557 922 c 0,10,11 - 642 922 642 922 703 909 c 128,-1,12 - 764 896 764 896 796.5 872.5 c 128,-1,13 - 829 849 829 849 843.5 822 c 128,-1,14 - 858 795 858 795 858 762 c 0,15,16 - 858 707 858 707 811 641 c 128,-1,17 - 764 575 764 575 697 513.5 c 128,-1,18 - 630 452 630 452 562.5 391.5 c 128,-1,19 - 495 331 495 331 448 270 c 128,-1,20 - 401 209 401 209 401 162 c 0,21,22 - 401 128 401 128 422.5 105 c 128,-1,23 - 444 82 444 82 485 82 c 0,24,25 - 539 82 539 82 613.5 128 c 128,-1,26 - 688 174 688 174 713 221 c 1,27,-1 - 778 205 l 1,28,29 - 725 100 725 100 633.5 40 c 128,-1,30 - 542 -20 542 -20 434 -20 c 0,31,32 - 322 -20 322 -20 253.5 -0.5 c 128,-1,33 - 185 19 185 19 158 52 c 128,-1,34 - 131 85 131 85 131 135 c 0,35,36 - 131 205 131 205 178.5 282 c 128,-1,37 - 226 359 226 359 293.5 423 c 128,-1,38 - 361 487 361 487 428 545.5 c 128,-1,39 - 495 604 495 604 542.5 655.5 c 128,-1,40 - 590 707 590 707 590 741 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10069 -Encoding: 1076 1076 432 -Width: 1007 -VWidth: 0 -Flags: W -HStem: -20 102<465 645> 819 102<606 787> -VStem: 172 252<144 545> 807 258<383 799> -LayerCount: 2 -Fore -SplineSet -1065 672 m 0,0,1 - 1065 358 1065 358 905.5 169 c 128,-1,2 - 746 -20 746 -20 492 -20 c 0,3,4 - 347 -20 347 -20 259.5 79 c 128,-1,5 - 172 178 172 178 172 330 c 0,6,7 - 172 400 172 400 193 478.5 c 128,-1,8 - 214 557 214 557 258.5 636.5 c 128,-1,9 - 303 716 303 716 364.5 779 c 128,-1,10 - 426 842 426 842 516 882 c 128,-1,11 - 606 922 606 922 709 922 c 0,12,13 - 765 922 765 922 831 905 c 1,14,15 - 821 1022 821 1022 768 1112 c 128,-1,16 - 715 1202 715 1202 612 1286 c 1,17,-1 - 737 1380 l 1,18,19 - 886 1239 886 1239 975.5 1060.5 c 128,-1,20 - 1065 882 1065 882 1065 672 c 0,0,1 -715 819 m 0,21,22 - 645 819 645 819 587 762 c 128,-1,23 - 529 705 529 705 495 621 c 128,-1,24 - 461 537 461 537 442.5 451 c 128,-1,25 - 424 365 424 365 424 297 c 0,26,27 - 424 202 424 202 454.5 142 c 128,-1,28 - 485 82 485 82 545 82 c 0,29,30 - 606 82 606 82 655 130 c 128,-1,31 - 704 178 704 178 731.5 246.5 c 128,-1,32 - 759 315 759 315 777 399.5 c 128,-1,33 - 795 484 795 484 801 548.5 c 128,-1,34 - 807 613 807 613 807 662 c 0,35,36 - 807 819 807 819 715 819 c 0,21,22 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10070 -Encoding: 1077 1077 433 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> -VStem: 150 246<143 446> 799 233<561 763> -AnchorPoint: "top" 733 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10072 -Encoding: 1078 1078 434 -Width: 1288 -VWidth: 0 -Flags: W -HStem: -20 102<41 151> 0 43G<516 782 993 1219> 799 102<279 336 1302 1403> -VStem: -33 74<85 131> 995 225<0 184> -AnchorPoint: "top" 877 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -602 371 m 1,0,1 - 533 316 533 316 476 250.5 c 128,-1,2 - 419 185 419 185 388 141 c 128,-1,3 - 357 97 357 97 319.5 58 c 128,-1,4 - 282 19 282 19 230 -0.5 c 128,-1,5 - 178 -20 178 -20 100 -20 c 0,6,7 - 42 -20 42 -20 4.5 13 c 128,-1,8 - -33 46 -33 46 -33 98 c 0,9,10 - -33 111 -33 111 -29 131 c 1,11,-1 - 41 131 l 1,12,-1 - 41 123 l 2,13,14 - 41 106 41 106 56.5 94 c 128,-1,15 - 72 82 72 82 94 82 c 0,16,17 - 118 82 118 82 143 113 c 1,18,19 - 294 313 294 313 473 453 c 1,20,21 - 441 486 441 486 419.5 535.5 c 128,-1,22 - 398 585 398 585 387 628.5 c 128,-1,23 - 376 672 376 672 362.5 712 c 128,-1,24 - 349 752 349 752 322.5 775.5 c 128,-1,25 - 296 799 296 799 254 799 c 1,26,-1 - 279 901 l 1,27,28 - 358 901 358 901 415 880 c 128,-1,29 - 472 859 472 859 502 827 c 128,-1,30 - 532 795 532 795 553.5 751 c 128,-1,31 - 575 707 575 707 584 667.5 c 128,-1,32 - 593 628 593 628 607 586.5 c 128,-1,33 - 621 545 621 545 637 522 c 1,34,-1 - 725 901 l 1,35,-1 - 981 901 l 1,36,-1 - 893 522 l 1,37,38 - 923 548 923 548 963 601.5 c 128,-1,39 - 1003 655 1003 655 1041 702.5 c 128,-1,40 - 1079 750 1079 750 1131 797 c 128,-1,41 - 1183 844 1183 844 1258.5 872.5 c 128,-1,42 - 1334 901 1334 901 1427 901 c 1,43,-1 - 1403 799 l 1,44,45 - 1361 799 1361 799 1324 775.5 c 128,-1,46 - 1287 752 1287 752 1254.5 712 c 128,-1,47 - 1222 672 1222 672 1191 628.5 c 128,-1,48 - 1160 585 1160 585 1115.5 535.5 c 128,-1,49 - 1071 486 1071 486 1024 453 c 1,50,51 - 1108 353 1108 353 1164.5 217.5 c 128,-1,52 - 1221 82 1221 82 1221 16 c 0,53,54 - 1221 13 1221 13 1220 7.5 c 128,-1,55 - 1219 2 1219 2 1219 0 c 1,56,-1 - 993 0 l 1,57,58 - 995 8 995 8 995 27 c 0,59,60 - 995 92 995 92 954 196.5 c 128,-1,61 - 913 301 913 301 858 371 c 1,62,-1 - 772 0 l 1,63,-1 - 516 0 l 1,64,-1 - 602 371 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10073 -Encoding: 1079 1079 435 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<326 550> 451 102<422 598> 819 102<480 671> -VStem: 623 256<165 425> 674 254<620 818> -AnchorPoint: "top" 662 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -879 319 m 0,0,1 - 879 275 879 275 866.5 231.5 c 128,-1,2 - 854 188 854 188 820 141.5 c 128,-1,3 - 786 95 786 95 734.5 60 c 128,-1,4 - 683 25 683 25 597.5 2.5 c 128,-1,5 - 512 -20 512 -20 403 -20 c 0,6,7 - 282 -20 282 -20 204 40.5 c 128,-1,8 - 126 101 126 101 102 178 c 1,9,-1 - 268 221 l 1,10,11 - 281 162 281 162 328.5 122 c 128,-1,12 - 376 82 376 82 451 82 c 0,13,14 - 494 82 494 82 527 104 c 128,-1,15 - 560 126 560 126 577.5 156 c 128,-1,16 - 595 186 595 186 606 223.5 c 128,-1,17 - 617 261 617 261 620 285.5 c 128,-1,18 - 623 310 623 310 623 328 c 0,19,20 - 623 451 623 451 471 451 c 2,21,-1 - 399 451 l 1,22,-1 - 422 553 l 1,23,-1 - 479 553 l 2,24,25 - 537 553 537 553 578.5 575.5 c 128,-1,26 - 620 598 620 598 639 632.5 c 128,-1,27 - 658 667 658 667 666 697.5 c 128,-1,28 - 674 728 674 728 674 756 c 0,29,30 - 674 819 674 819 621 819 c 0,31,32 - 537 819 537 819 494 787.5 c 128,-1,33 - 451 756 451 756 426 696 c 1,34,-1 - 270 735 l 1,35,36 - 315 814 315 814 404.5 868 c 128,-1,37 - 494 922 494 922 621 922 c 0,38,39 - 778 922 778 922 853 874.5 c 128,-1,40 - 928 827 928 827 928 745 c 0,41,42 - 928 603 928 603 743 512 c 1,43,44 - 879 451 879 451 879 319 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10074 -Encoding: 1080 1080 436 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> -VStem: 154 256<105 501> 668 260<101 364> 1057 70<93 131> -AnchorPoint: "top" 715 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 19 117 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10075 -Encoding: 1081 1081 437 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1085 123<575 935> -VStem: 154 256<105 501> 494 80<1172 1283> 668 260<101 364> 958 76<1216 1296> 1057 70<93 131> -LayerCount: 2 -Back -SplineSet -765.952 1222.66 m 0 - 841.729 1222.66 923.648 1271.81 940.032 1316.86 c 1 - 1009.66 1275.9 l 1 - 972.8 1173.5 851.968 1085.44 733.184 1085.44 c 0 - 622.592 1085.44 544.768 1161.22 544.768 1255.42 c 0 - 544.768 1261.57 546.816 1269.76 546.816 1275.9 c 1 - 632.832 1316.86 l 1 - 632.832 1312.77 l 2 - 632.832 1269.76 692.224 1222.66 765.952 1222.66 c 0 -835.584 901.12 m 1 - 1091.58 901.12 l 1 - 946.176 276.48 l 2 - 935.936 231.424 927.744 188.416 927.744 155.648 c 0 - 927.744 110.592 942.08 81.9199 978.944 81.9199 c 0 - 1011.71 81.9199 1040.38 96.2559 1056.77 131.072 c 1 - 1126.4 131.072 l 1 - 1107.97 55.2959 1015.81 -20.4805 927.744 -20.4805 c 0 - 823.296 -20.4805 753.664 4.0957 714.752 43.0078 c 1 - 667.648 22.5283 571.392 -20.4805 475.136 -20.4805 c 0 - 251.904 -20.4805 153.6 63.4883 153.6 239.616 c 0 - 153.6 288.768 161.792 346.112 176.128 409.6 c 2 - 290.816 901.12 l 1 - 546.816 901.12 l 1 - 438.272 434.176 l 2 - 419.84 350.208 409.6 286.72 409.6 235.52 c 0 - 409.6 114.688 460.8 81.9199 528.384 81.9199 c 0 - 598.016 81.9199 638.976 104.448 669.696 126.976 c 1 - 669.696 135.168 667.648 145.408 667.648 153.6 c 0 - 667.648 172.032 671.744 192.512 675.84 212.992 c 2 - 835.584 901.12 l 1 -EndSplineSet -Fore -Refer: 1068 57420 S 1 0 0 1 1026 -184 2 -Refer: 436 1080 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10076 -Encoding: 1082 1082 438 -Width: 917 -VWidth: 0 -Flags: W -HStem: 0 43<82 347 608 848> 860 41<281 547 745 1020> -AnchorPoint: "top" 608 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 305 312 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10077 -Encoding: 1083 1083 439 -Width: 1351 -VWidth: 0 -Flags: W -HStem: -20 102<142 372 1078 1294> 799 102<869 1015> -VStem: 909 268<83 368> 1022 258<484 791> 1298 70<94 131> -AnchorPoint: "top" 981 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1188 276 m 1,0,1 - 1178 224 1178 224 1178 184 c 0,2,3 - 1178 82 1178 82 1221 82 c 0,4,5 - 1246 82 1246 82 1270 96.5 c 128,-1,6 - 1294 111 1294 111 1298 131 c 1,7,-1 - 1368 131 l 1,8,9 - 1354 69 1354 69 1296 24.5 c 128,-1,10 - 1238 -20 1238 -20 1169 -20 c 0,11,12 - 1037 -20 1037 -20 973 25.5 c 128,-1,13 - 909 71 909 71 909 152 c 0,14,15 - 909 161 909 161 918 213 c 1,16,-1 - 1006 592 l 1,17,18 - 1022 674 1022 674 1022 711 c 0,19,20 - 1022 764 1022 764 999 781.5 c 128,-1,21 - 976 799 976 799 926 799 c 0,22,23 - 880 799 880 799 819 665.5 c 128,-1,24 - 758 532 758 532 694 260 c 1,25,26 - 660 111 660 111 547 45.5 c 128,-1,27 - 434 -20 434 -20 233 -20 c 0,28,29 - 104 -20 104 -20 47 72 c 1,30,-1 - 190 133 l 1,31,32 - 212 82 212 82 287 82 c 0,33,34 - 347 82 347 82 386 140.5 c 128,-1,35 - 425 199 425 199 455 328 c 0,36,37 - 478 428 478 428 514 512.5 c 128,-1,38 - 550 597 550 597 589.5 654.5 c 128,-1,39 - 629 712 629 712 675 757 c 128,-1,40 - 721 802 721 802 762 828.5 c 128,-1,41 - 803 855 803 855 844 872 c 128,-1,42 - 885 889 885 889 914 895 c 128,-1,43 - 943 901 943 901 965 901 c 0,44,45 - 1006 901 1006 901 1046 896 c 128,-1,46 - 1086 891 1086 891 1129.5 877 c 128,-1,47 - 1173 863 1173 863 1205.5 841 c 128,-1,48 - 1238 819 1238 819 1259 782.5 c 128,-1,49 - 1280 746 1280 746 1280 700 c 0,50,51 - 1280 670 1280 670 1272 643 c 1,52,-1 - 1188 276 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10078 -Encoding: 1084 1084 440 -Width: 1411 -VWidth: 0 -Flags: W -HStem: -20 102<75 184> 0 43G<709 800 1049 1314> 860 41G<386 663 1227 1513> -VStem: 0 74<85 131> -AnchorPoint: "top" 983 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -492 213 m 2,0,1 - 463 87 463 87 370.5 33.5 c 128,-1,2 - 278 -20 278 -20 133 -20 c 0,3,4 - 74 -20 74 -20 37 14 c 128,-1,5 - 0 48 0 48 0 100 c 0,6,7 - 0 111 0 111 4 131 c 1,8,-1 - 74 131 l 1,9,-1 - 74 123 l 2,10,11 - 74 105 74 105 88.5 93.5 c 128,-1,12 - 103 82 103 82 127 82 c 0,13,14 - 161 82 161 82 199 147 c 128,-1,15 - 237 212 237 212 250 276 c 1,16,-1 - 395 901 l 1,17,-1 - 651 901 l 1,18,-1 - 817 311 l 1,19,-1 - 1257 901 l 1,20,-1 - 1513 901 l 1,21,-1 - 1305 0 l 1,22,-1 - 1049 0 l 1,23,-1 - 1174 543 l 1,24,-1 - 770 0 l 1,25,-1 - 721 0 l 1,26,-1 - 567 543 l 1,27,-1 - 492 213 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10079 -Encoding: 1085 1085 441 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<869 1075> 0 43G<92 358> 440 102<473 750> 860 41G<292 557 846 1112> -VStem: 688 268<84 367> 1077 70<93 131> -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -967 276 m 1,0,1 - 956 223 956 223 956 184 c 0,2,3 - 956 82 956 82 999 82 c 0,4,5 - 1026 82 1026 82 1049.5 96.5 c 128,-1,6 - 1073 111 1073 111 1077 131 c 1,7,-1 - 1147 131 l 1,8,9 - 1132 68 1132 68 1074.5 24 c 128,-1,10 - 1017 -20 1017 -20 948 -20 c 0,11,12 - 820 -20 820 -20 754 16.5 c 128,-1,13 - 688 53 688 53 688 143 c 0,14,15 - 688 177 688 177 696 213 c 2,16,-1 - 750 440 l 1,17,-1 - 451 440 l 1,18,-1 - 348 0 l 1,19,-1 - 92 0 l 1,20,-1 - 301 901 l 1,21,-1 - 557 901 l 1,22,-1 - 473 543 l 1,23,-1 - 772 543 l 1,24,-1 - 856 901 l 1,25,-1 - 1112 901 l 1,26,-1 - 967 276 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10080 -Encoding: 1086 1086 442 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> -VStem: 147 244<117 508> 821 244<380 773> -AnchorPoint: "top" 737 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10081 -Encoding: 1087 1087 443 -Width: 1009 -VWidth: 0 -Flags: W -HStem: 0 43G<92 358 647 913> 799 102<532 831> -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1112 901 m 1,0,-1 - 903 0 l 1,1,-1 - 647 0 l 1,2,-1 - 831 799 l 1,3,-1 - 532 799 l 1,4,-1 - 348 0 l 1,5,-1 - 92 0 l 1,6,-1 - 301 901 l 1,7,-1 - 1112 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10082 -Encoding: 1088 1088 444 -Width: 1107 -VWidth: 0 -Flags: W -HStem: -16 102<553 741> 819 102<226 395 681 886> -VStem: 150 70<770 809> 909 248<366 760> -AnchorPoint: "top" 748 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 16 112 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10083 -Encoding: 1089 1089 445 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<439 698> 819 102<587 786> -VStem: 150 246<143 528> 801 219<671 782> -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 5 99 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10084 -Encoding: 1090 1090 446 -Width: 1667 -VWidth: 0 -Flags: W -HStem: 0 43<184 450 760 1025 1317 1582> 819 102<226 396 603 881 1198 1436> -VStem: 150 70<770 809> 346 260<527 795> 1460 252<431 796> -LayerCount: 2 -Fore -Refer: 11 109 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10085 -Encoding: 1091 1091 447 -Width: 972 -VWidth: 0 -Flags: W -HStem: -348 102<305 537> -20 102<415 625> 860 41G<281 547 826 1092> -VStem: 154 246<99 456> -AnchorPoint: "top" 719 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -920 160 m 2,0,1 - 895 51 895 51 873 -21 c 128,-1,2 - 851 -93 851 -93 819.5 -153.5 c 128,-1,3 - 788 -214 788 -214 752 -248.5 c 128,-1,4 - 716 -283 716 -283 662 -307 c 128,-1,5 - 608 -331 608 -331 542 -339.5 c 128,-1,6 - 476 -348 476 -348 383 -348 c 0,7,8 - 238 -348 238 -348 80 -256 c 1,9,-1 - 258 -150 l 1,10,11 - 323 -246 323 -246 436 -246 c 0,12,13 - 507 -246 507 -246 551.5 -191 c 128,-1,14 - 596 -136 596 -136 627 0 c 1,15,16 - 548 -20 548 -20 475 -20 c 0,17,18 - 309 -20 309 -20 231.5 43.5 c 128,-1,19 - 154 107 154 107 154 240 c 0,20,21 - 154 311 154 311 176 410 c 1,22,-1 - 291 901 l 1,23,-1 - 547 901 l 1,24,-1 - 438 434 l 2,25,26 - 399 269 399 269 399 199 c 0,27,28 - 399 133 399 133 429 107.5 c 128,-1,29 - 459 82 459 82 528 82 c 0,30,31 - 592 82 592 82 651 106 c 1,32,-1 - 836 901 l 1,33,-1 - 1092 901 l 1,34,-1 - 920 160 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10086 -Encoding: 1092 1092 448 -Width: 1521 -VWidth: 0 -Flags: W -HStem: -430 102<429 546> -16 102<439 630 959 1160> 823 102<581 759 1111 1326> 1253 102<1192 1310> -VStem: 158 252<113 532> 356 72<-324 -279> 1311 72<1204 1249> 1335 244<419 813> -AnchorPoint: "top" 1092 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1090 86 m 0,0,1 - 1136 86 1136 86 1182.5 154 c 128,-1,2 - 1229 222 1229 222 1261.5 319 c 128,-1,3 - 1294 416 1294 416 1314.5 521 c 128,-1,4 - 1335 626 1335 626 1335 702 c 0,5,6 - 1335 823 1335 823 1280 823 c 0,7,8 - 1133 823 1133 823 1057 731 c 1,9,-1 - 930 180 l 1,10,11 - 963 86 963 86 1090 86 c 0,0,1 -655 823 m 0,12,13 - 593 823 593 823 534 725 c 128,-1,14 - 475 627 475 627 442.5 499.5 c 128,-1,15 - 410 372 410 372 410 270 c 0,16,17 - 410 86 410 86 506 86 c 0,18,19 - 608 86 608 86 676 180 c 1,20,-1 - 797 700 l 1,21,22 - 767 823 767 823 655 823 c 0,12,13 -158 301 m 0,23,24 - 158 359 158 359 170.5 425 c 128,-1,25 - 183 491 183 491 207 562 c 128,-1,26 - 231 633 231 633 272 697.5 c 128,-1,27 - 313 762 313 762 365 813.5 c 128,-1,28 - 417 865 417 865 490 895.5 c 128,-1,29 - 563 926 563 926 647 926 c 0,30,31 - 766 926 766 926 842 893 c 1,32,-1 - 895 1122 l 2,33,34 - 920 1229 920 1229 1008 1292.5 c 128,-1,35 - 1096 1356 1096 1356 1249 1356 c 0,36,37 - 1303 1356 1303 1356 1342.5 1324 c 128,-1,38 - 1382 1292 1382 1292 1382 1239 c 0,39,40 - 1382 1228 1382 1228 1378 1204 c 1,41,-1 - 1309 1204 l 1,42,43 - 1309 1205 1309 1205 1310 1208 c 128,-1,44 - 1311 1211 1311 1211 1311 1212 c 0,45,46 - 1311 1228 1311 1228 1295.5 1240.5 c 128,-1,47 - 1280 1253 1280 1253 1255 1253 c 0,48,49 - 1179 1253 1179 1253 1133 1059 c 1,50,-1 - 1096 895 l 1,51,52 - 1165 926 1165 926 1272 926 c 0,53,54 - 1579 926 1579 926 1579 633 c 0,55,56 - 1579 465 1579 465 1508 316 c 128,-1,57 - 1437 167 1437 167 1310.5 75.5 c 128,-1,58 - 1184 -16 1184 -16 1034 -16 c 0,59,60 - 946 -16 946 -16 895 23 c 1,61,-1 - 844 -197 l 2,62,63 - 819 -304 819 -304 730.5 -367 c 128,-1,64 - 642 -430 642 -430 489 -430 c 0,65,66 - 434 -430 434 -430 395 -398 c 128,-1,67 - 356 -366 356 -366 356 -313 c 0,68,69 - 356 -291 356 -291 360 -279 c 1,70,-1 - 430 -279 l 1,71,72 - 430 -281 430 -281 429 -284.5 c 128,-1,73 - 428 -288 428 -288 428 -289 c 0,74,75 - 428 -305 428 -305 442 -316.5 c 128,-1,76 - 456 -328 456 -328 481 -328 c 0,77,78 - 517 -328 517 -328 549 -278.5 c 128,-1,79 - 581 -229 581 -229 604 -133 c 2,80,-1 - 641 27 l 1,81,82 - 550 -16 550 -16 451 -16 c 0,83,84 - 306 -16 306 -16 232 71 c 128,-1,85 - 158 158 158 158 158 301 c 0,23,24 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10087 -Encoding: 1093 1093 449 -Width: 954 -VWidth: 0 -Flags: W -HStem: 0 43<61 276 636 903> 860 41<276 542 822 1034> -AnchorPoint: "top" 707 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 23 120 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10088 -Encoding: 1094 1094 450 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668> 860 41G<281 547 826 1092> -VStem: 154 256<105 501> 668 260<101 364> 881 158<-320 -186> 1057 70<93 131> -AnchorPoint: "top" 715 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -836 901 m 1,0,-1 - 1092 901 l 1,1,-1 - 946 276 l 2,2,3 - 928 195 928 195 928 156 c 0,4,5 - 928 82 928 82 979 82 c 0,6,7 - 1035 82 1035 82 1057 131 c 1,8,-1 - 1126 131 l 1,9,10 - 1115 87 1115 87 1075.5 47 c 128,-1,11 - 1036 7 1036 7 985 -10 c 1,12,-1 - 948 -125 l 1,13,14 - 993 -141 993 -141 1015.5 -174 c 128,-1,15 - 1038 -207 1038 -207 1038 -238 c 0,16,17 - 1038 -287 1038 -287 984 -329 c 128,-1,18 - 930 -371 930 -371 858 -397 c 1,19,-1 - 803 -373 l 1,20,21 - 833 -353 833 -353 857 -320.5 c 128,-1,22 - 881 -288 881 -288 881 -254 c 0,23,24 - 881 -194 881 -194 788 -164 c 1,25,-1 - 848 -14 l 1,26,27 - 757 1 757 1 715 43 c 1,28,29 - 567 -20 567 -20 475 -20 c 0,30,31 - 309 -20 309 -20 231.5 43.5 c 128,-1,32 - 154 107 154 107 154 240 c 0,33,34 - 154 311 154 311 176 410 c 1,35,-1 - 291 901 l 1,36,-1 - 547 901 l 1,37,-1 - 438 434 l 1,38,39 - 410 303 410 303 410 236 c 0,40,41 - 410 151 410 151 441 116.5 c 128,-1,42 - 472 82 472 82 528 82 c 0,43,44 - 609 82 609 82 670 127 c 1,45,46 - 670 131 670 131 669 140.5 c 128,-1,47 - 668 150 668 150 668 154 c 0,48,49 - 668 173 668 173 676 213 c 1,50,-1 - 836 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10089 -Encoding: 1095 1095 451 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<785 1002> 313 102<489 654> 860 41G<284 557 775 1040> -VStem: 244 238<420 765> 616 268<85 263> 1006 70<94 131> -AnchorPoint: "top" 698 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -895 276 m 1,0,1 - 885 224 885 224 885 184 c 0,2,3 - 885 82 885 82 928 82 c 0,4,5 - 953 82 953 82 977.5 96.5 c 128,-1,6 - 1002 111 1002 111 1006 131 c 1,7,-1 - 1075 131 l 1,8,9 - 1061 69 1061 69 1003.5 24.5 c 128,-1,10 - 946 -20 946 -20 877 -20 c 0,11,12 - 745 -20 745 -20 680.5 25.5 c 128,-1,13 - 616 71 616 71 616 152 c 0,14,15 - 616 161 616 161 625 213 c 1,16,-1 - 655 348 l 1,17,18 - 610 313 610 313 520 313 c 0,19,20 - 369 313 369 313 306.5 368 c 128,-1,21 - 244 423 244 423 244 549 c 0,22,23 - 244 662 244 662 301 901 c 1,24,-1 - 557 901 l 1,25,26 - 481 578 481 578 481 496 c 0,27,28 - 481 444 481 444 501.5 430 c 128,-1,29 - 522 416 522 416 575 416 c 0,30,31 - 673 416 673 416 694 512 c 1,32,-1 - 784 901 l 1,33,-1 - 1040 901 l 1,34,-1 - 895 276 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10090 -Encoding: 1096 1096 452 -Width: 1699 -VWidth: 0 -Flags: W -HStem: -20 102<429 667 985 1263 1469 1640> 860 41G<283 549 840 1106 1416 1681> -VStem: 154 252<105 470> 1260 260<106 374> 1647 70<92 131> -AnchorPoint: "top" 995 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1425 901 m 1,0,-1 - 1681 901 l 1,1,-1 - 1538 276 l 1,2,3 - 1520 208 1520 208 1520 156 c 0,4,5 - 1520 82 1520 82 1571 82 c 0,6,7 - 1625 82 1625 82 1647 131 c 1,8,-1 - 1716 131 l 1,9,10 - 1704 73 1704 73 1643.5 26.5 c 128,-1,11 - 1583 -20 1583 -20 1518 -20 c 0,12,13 - 1381 -20 1381 -20 1315 33 c 1,14,15 - 1207 -20 1207 -20 1098 -20 c 0,16,17 - 891 -20 891 -20 811 66 c 1,18,19 - 671 -20 671 -20 559 -20 c 0,20,21 - 363 -20 363 -20 258.5 40.5 c 128,-1,22 - 154 101 154 101 154 244 c 0,23,24 - 154 298 154 298 168 358 c 2,25,-1 - 293 901 l 1,26,-1 - 549 901 l 1,27,-1 - 434 401 l 2,28,29 - 406 277 406 277 406 215 c 0,30,31 - 406 138 406 138 441.5 110 c 128,-1,32 - 477 82 477 82 553 82 c 0,33,34 - 616 82 616 82 666 102 c 1,35,-1 - 850 901 l 1,36,-1 - 1106 901 l 1,37,-1 - 991 401 l 2,38,39 - 963 280 963 280 963 217 c 0,40,41 - 963 138 963 138 1000.5 110 c 128,-1,42 - 1038 82 1038 82 1120 82 c 0,43,44 - 1184 82 1184 82 1264 115 c 1,45,46 - 1260 143 1260 143 1260 156 c 0,47,48 - 1260 183 1260 183 1266 213 c 2,49,-1 - 1425 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10091 -Encoding: 1097 1097 453 -Width: 1699 -VWidth: 0 -Flags: W -HStem: -20 102<429 667 985 1263> 860 41G<283 549 840 1106 1416 1681> -VStem: 154 252<105 470> 1260 260<106 374> 1481 158<-320 -186> 1647 70<93 131> -AnchorPoint: "top" 995 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1425 901 m 1,0,-1 - 1681 901 l 1,1,-1 - 1538 276 l 1,2,3 - 1520 208 1520 208 1520 156 c 0,4,5 - 1520 82 1520 82 1571 82 c 0,6,7 - 1625 82 1625 82 1647 131 c 1,8,-1 - 1716 131 l 1,9,10 - 1707 90 1707 90 1671 52.5 c 128,-1,11 - 1635 15 1635 15 1587 -6 c 1,12,-1 - 1548 -125 l 1,13,14 - 1593 -141 1593 -141 1615.5 -174 c 128,-1,15 - 1638 -207 1638 -207 1638 -238 c 0,16,17 - 1638 -287 1638 -287 1584 -329 c 128,-1,18 - 1530 -371 1530 -371 1458 -397 c 1,19,-1 - 1403 -373 l 1,20,21 - 1433 -353 1433 -353 1457 -320.5 c 128,-1,22 - 1481 -288 1481 -288 1481 -254 c 0,23,24 - 1481 -194 1481 -194 1389 -164 c 1,25,-1 - 1448 -16 l 1,26,27 - 1361 -4 1361 -4 1315 33 c 1,28,29 - 1207 -20 1207 -20 1098 -20 c 0,30,31 - 891 -20 891 -20 811 66 c 1,32,33 - 671 -20 671 -20 559 -20 c 0,34,35 - 363 -20 363 -20 258.5 40.5 c 128,-1,36 - 154 101 154 101 154 244 c 0,37,38 - 154 298 154 298 168 358 c 2,39,-1 - 293 901 l 1,40,-1 - 549 901 l 1,41,-1 - 434 401 l 2,42,43 - 406 277 406 277 406 215 c 0,44,45 - 406 138 406 138 441.5 110 c 128,-1,46 - 477 82 477 82 553 82 c 0,47,48 - 616 82 616 82 666 102 c 1,49,-1 - 850 901 l 1,50,-1 - 1106 901 l 1,51,-1 - 991 401 l 2,52,53 - 963 280 963 280 963 217 c 0,54,55 - 963 138 963 138 1000.5 110 c 128,-1,56 - 1038 82 1038 82 1120 82 c 0,57,58 - 1184 82 1184 82 1264 115 c 1,59,60 - 1260 143 1260 143 1260 156 c 0,61,62 - 1260 183 1260 183 1266 213 c 2,63,-1 - 1425 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10092 -Encoding: 1098 1098 454 -Width: 1155 -VWidth: 0 -Flags: W -HStem: -20 102<642 801> 481 102<708 866> 799 102<256 504> -VStem: 385 244<92 425> 879 256<201 476> -AnchorPoint: "top" 639 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1135 381 m 0,0,1 - 1135 329 1135 329 1122 277.5 c 128,-1,2 - 1109 226 1109 226 1074.5 171 c 128,-1,3 - 1040 116 1040 116 988 74.5 c 128,-1,4 - 936 33 936 33 850.5 6.5 c 128,-1,5 - 765 -20 765 -20 657 -20 c 0,6,7 - 629 -20 629 -20 599 -15.5 c 128,-1,8 - 569 -11 569 -11 529 5 c 128,-1,9 - 489 21 489 21 458.5 46.5 c 128,-1,10 - 428 72 428 72 406.5 120.5 c 128,-1,11 - 385 169 385 169 385 233 c 0,12,13 - 385 288 385 288 399 348 c 2,14,-1 - 504 799 l 1,15,-1 - 231 799 l 1,16,-1 - 256 901 l 1,17,-1 - 784 901 l 1,18,-1 - 707 567 l 1,19,20 - 770 584 770 584 811 584 c 0,21,22 - 981 584 981 584 1058 534 c 128,-1,23 - 1135 484 1135 484 1135 381 c 0,0,1 -680 453 m 1,24,-1 - 639 276 l 2,25,26 - 629 235 629 235 629 190 c 0,27,28 - 629 82 629 82 721 82 c 0,29,30 - 765 82 765 82 798.5 119.5 c 128,-1,31 - 832 157 832 157 848 210 c 128,-1,32 - 864 263 864 263 871.5 306 c 128,-1,33 - 879 349 879 349 879 375 c 0,34,35 - 879 423 879 423 862 452 c 128,-1,36 - 845 481 845 481 811 481 c 0,37,38 - 738 481 738 481 680 453 c 1,24,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10093 -Encoding: 1099 1099 455 -Width: 1392 -VWidth: 0 -Flags: W -HStem: -20 102<404 564 1124 1332> 481 102<470 628> 860 41<281 547 1111 1374> -VStem: 147 244<92 426> 641 256<200 476> 952 254<83 364> 1339 70<96 131> -AnchorPoint: "top" 649 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 112 305 N 1 0 0 1 819 0 2 -Refer: 456 1100 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10094 -Encoding: 1100 1100 456 -Width: 917 -VWidth: 0 -Flags: W -HStem: -20 102<404 564> 481 102<470 628> 860 41G<281 547> -VStem: 147 244<92 426> 641 256<200 476> -AnchorPoint: "top" 629 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -442 453 m 1,0,-1 - 401 276 l 2,1,2 - 391 235 391 235 391 190 c 0,3,4 - 391 82 391 82 483 82 c 0,5,6 - 527 82 527 82 560.5 120.5 c 128,-1,7 - 594 159 594 159 610 213 c 128,-1,8 - 626 267 626 267 633.5 309.5 c 128,-1,9 - 641 352 641 352 641 375 c 0,10,11 - 641 423 641 423 624 452 c 128,-1,12 - 607 481 607 481 573 481 c 0,13,14 - 500 481 500 481 442 453 c 1,0,-1 -897 381 m 0,15,16 - 897 329 897 329 884 277.5 c 128,-1,17 - 871 226 871 226 836.5 171 c 128,-1,18 - 802 116 802 116 750.5 74.5 c 128,-1,19 - 699 33 699 33 613.5 6.5 c 128,-1,20 - 528 -20 528 -20 420 -20 c 0,21,22 - 392 -20 392 -20 362 -15.5 c 128,-1,23 - 332 -11 332 -11 291.5 5 c 128,-1,24 - 251 21 251 21 220.5 46.5 c 128,-1,25 - 190 72 190 72 168.5 120.5 c 128,-1,26 - 147 169 147 169 147 233 c 0,27,28 - 147 284 147 284 162 348 c 2,29,-1 - 291 901 l 1,30,-1 - 547 901 l 1,31,-1 - 469 567 l 1,32,33 - 532 584 532 584 573 584 c 0,34,35 - 743 584 743 584 820 534 c 128,-1,36 - 897 484 897 484 897 381 c 0,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10095 -Encoding: 1101 1101 457 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<325 574> 430 102<481 745> 819 102<500 729> -VStem: 772 252<451 763> -AnchorPoint: "top" 692 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1024 584 m 0,0,1 - 1024 538 1024 538 1016 487 c 128,-1,2 - 1008 436 1008 436 987.5 376.5 c 128,-1,3 - 967 317 967 317 936.5 262 c 128,-1,4 - 906 207 906 207 856.5 155 c 128,-1,5 - 807 103 807 103 745 64.5 c 128,-1,6 - 683 26 683 26 595.5 3 c 128,-1,7 - 508 -20 508 -20 406 -20 c 0,8,9 - 288 -20 288 -20 216.5 26 c 128,-1,10 - 145 72 145 72 98 158 c 1,11,-1 - 276 225 l 1,12,13 - 279 217 279 217 289.5 189 c 128,-1,14 - 300 161 300 161 304 153 c 128,-1,15 - 308 145 308 145 322.5 126 c 128,-1,16 - 337 107 337 107 352.5 101 c 128,-1,17 - 368 95 368 95 395.5 88.5 c 128,-1,18 - 423 82 423 82 459 82 c 0,19,20 - 550 82 550 82 627.5 176.5 c 128,-1,21 - 705 271 705 271 745 430 c 1,22,-1 - 457 430 l 1,23,-1 - 481 532 l 1,24,-1 - 766 532 l 1,25,26 - 772 576 772 576 772 612 c 0,27,28 - 772 708 772 708 740 763.5 c 128,-1,29 - 708 819 708 819 657 819 c 0,30,31 - 622 819 622 819 594 814 c 128,-1,32 - 566 809 566 809 546 804 c 128,-1,33 - 526 799 526 799 507 783 c 128,-1,34 - 488 767 488 767 477.5 757.5 c 128,-1,35 - 467 748 467 748 451 721 c 128,-1,36 - 435 694 435 694 428 681 c 128,-1,37 - 421 668 421 668 403 631 c 1,38,-1 - 248 709 l 1,39,40 - 324 817 324 817 419 869.5 c 128,-1,41 - 514 922 514 922 651 922 c 0,42,43 - 827 922 827 922 925.5 832 c 128,-1,44 - 1024 742 1024 742 1024 584 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10096 -Encoding: 1102 1102 458 -Width: 1355 -VWidth: 0 -Flags: W -HStem: -20 102<813 992> 0 43G<92 358> 430 102<471 563> 819 102<973 1148> 860 41G<292 557> -VStem: 547 244<103 425> 1167 240<408 786> -AnchorPoint: "top" 786 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1407 606 m 0,0,1 - 1407 565 1407 565 1400.5 517 c 128,-1,2 - 1394 469 1394 469 1377 407 c 128,-1,3 - 1360 345 1360 345 1333.5 287 c 128,-1,4 - 1307 229 1307 229 1263 172.5 c 128,-1,5 - 1219 116 1219 116 1163 74 c 128,-1,6 - 1107 32 1107 32 1027 6 c 128,-1,7 - 947 -20 947 -20 852 -20 c 0,8,9 - 699 -20 699 -20 623 58.5 c 128,-1,10 - 547 137 547 137 547 281 c 0,11,12 - 547 345 547 345 563 430 c 1,13,-1 - 446 430 l 1,14,-1 - 348 0 l 1,15,-1 - 92 0 l 1,16,-1 - 301 901 l 1,17,-1 - 557 901 l 1,18,-1 - 471 532 l 1,19,-1 - 594 532 l 1,20,21 - 657 708 657 708 792 815 c 128,-1,22 - 927 922 927 922 1069 922 c 0,23,24 - 1229 922 1229 922 1318 841.5 c 128,-1,25 - 1407 761 1407 761 1407 606 c 0,0,1 -1167 686 m 0,26,27 - 1167 752 1167 752 1145.5 785.5 c 128,-1,28 - 1124 819 1124 819 1075 819 c 0,29,30 - 1024 819 1024 819 980.5 786 c 128,-1,31 - 937 753 937 753 908.5 700.5 c 128,-1,32 - 880 648 880 648 857.5 584.5 c 128,-1,33 - 835 521 835 521 823 457.5 c 128,-1,34 - 811 394 811 394 803.5 341.5 c 128,-1,35 - 796 289 796 289 794 256 c 2,36,-1 - 791 223 l 1,37,38 - 791 153 791 153 817.5 117.5 c 128,-1,39 - 844 82 844 82 905 82 c 0,40,41 - 960 82 960 82 1006.5 137 c 128,-1,42 - 1053 192 1053 192 1081.5 270 c 128,-1,43 - 1110 348 1110 348 1130.5 436.5 c 128,-1,44 - 1151 525 1151 525 1159 590 c 128,-1,45 - 1167 655 1167 655 1167 686 c 0,26,27 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10097 -Encoding: 1103 1103 459 -Width: 1064 -VWidth: 0 -Flags: W -HStem: -20 102<787 1008> 0 102<82 186> 358 102<553 664> 799 102<601 766> -VStem: 240 260<513 715> 621 264<84 355> 1012 70<94 131> -AnchorPoint: "top" 754 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -766 799 m 1,0,1 - 649 799 649 799 574.5 742 c 128,-1,2 - 500 685 500 685 500 610 c 0,3,4 - 500 549 500 549 550.5 505 c 128,-1,5 - 601 461 601 461 688 461 c 1,6,-1 - 766 799 l 1,0,1 -240 569 m 0,7,8 - 240 666 240 666 302.5 743 c 128,-1,9 - 365 820 365 820 463.5 860.5 c 128,-1,10 - 562 901 562 901 674 901 c 2,11,-1 - 1047 901 l 1,12,-1 - 901 276 l 2,13,14 - 885 208 885 208 885 156 c 0,15,16 - 885 82 885 82 934 82 c 0,17,18 - 959 82 959 82 983.5 96.5 c 128,-1,19 - 1008 111 1008 111 1012 131 c 1,20,-1 - 1081 131 l 1,21,22 - 1067 69 1067 69 1009.5 24.5 c 128,-1,23 - 952 -20 952 -20 883 -20 c 0,24,25 - 743 -20 743 -20 682 17.5 c 128,-1,26 - 621 55 621 55 621 135 c 0,27,28 - 621 165 621 165 631 213 c 2,29,-1 - 664 358 l 1,30,-1 - 631 358 l 2,31,32 - 590 358 590 358 559 338.5 c 128,-1,33 - 528 319 528 319 506 287 c 128,-1,34 - 484 255 484 255 461 217 c 128,-1,35 - 438 179 438 179 405.5 141 c 128,-1,36 - 373 103 373 103 330.5 71 c 128,-1,37 - 288 39 288 39 218 19.5 c 128,-1,38 - 148 0 148 0 57 0 c 1,39,-1 - 82 102 l 1,40,41 - 122 102 122 102 154 120.5 c 128,-1,42 - 186 139 186 139 211 171 c 128,-1,43 - 236 203 236 203 259.5 237.5 c 128,-1,44 - 283 272 283 272 316.5 312.5 c 128,-1,45 - 350 353 350 353 387 381 c 1,46,47 - 240 432 240 432 240 569 c 0,7,8 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0450 -Encoding: 1104 1104 460 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1065 403 -VStem: 150 246<143 446> 541 319 799 233<561 763> -LayerCount: 2 -Fore -Refer: 114 232 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10071 -Encoding: 1105 1105 461 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1085 170<559 690 846 977> -VStem: 150 246<143 446> 520 209 799 233<561 763> 807 209 -LayerCount: 2 -Fore -Refer: 134 235 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10099 -Encoding: 1106 1106 462 -Width: 1026 -VWidth: 0 -Flags: W -HStem: -348 102<358 590> 0 43G<135 401> 819 102<601 806> 1085 102<328 385 666 725> -VStem: 823 246<427 804> -LayerCount: 2 -Fore -SplineSet -973 160 m 2,0,1 - 948 51 948 51 926 -21 c 128,-1,2 - 904 -93 904 -93 872.5 -153.5 c 128,-1,3 - 841 -214 841 -214 805 -248.5 c 128,-1,4 - 769 -283 769 -283 715 -307 c 128,-1,5 - 661 -331 661 -331 595 -339.5 c 128,-1,6 - 529 -348 529 -348 436 -348 c 0,7,8 - 291 -348 291 -348 133 -256 c 1,9,-1 - 311 -150 l 1,10,11 - 376 -246 376 -246 489 -246 c 0,12,13 - 558 -246 558 -246 603 -191.5 c 128,-1,14 - 648 -137 648 -137 678 -8 c 2,15,-1 - 788 467 l 1,16,17 - 823 625 823 625 823 700 c 0,18,19 - 823 766 823 766 799 792.5 c 128,-1,20 - 775 819 775 819 727 819 c 0,21,22 - 649 819 649 819 571 784 c 1,23,-1 - 391 0 l 1,24,-1 - 135 0 l 1,25,-1 - 385 1085 l 1,26,-1 - 303 1085 l 1,27,-1 - 328 1188 l 1,28,-1 - 410 1188 l 1,29,-1 - 446 1352 l 1,30,-1 - 702 1352 l 1,31,-1 - 666 1188 l 1,32,-1 - 750 1188 l 1,33,-1 - 725 1085 l 1,34,-1 - 641 1085 l 1,35,-1 - 600 907 l 1,36,37 - 673 922 673 922 721 922 c 0,38,39 - 1069 922 1069 922 1069 641 c 0,40,41 - 1069 571 1069 571 1049 492 c 1,42,-1 - 973 160 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10100 -Encoding: 1107 1107 463 -Width: 835 -VWidth: 0 -Flags: W -HStem: -20 102<411 606> 819 102<385 580> 1065 403 -VStem: 131 270<91 264> 547 422 590 268<664 811> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 934 -184 2 -Refer: 431 1075 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10101 -Encoding: 1108 1108 464 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<448 706> 430 102<444 727> 819 102<587 825> -VStem: 150 248<142 428> 872 168<704 770> -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -150 324 m 0,0,1 - 150 443 150 443 199.5 555.5 c 128,-1,2 - 249 668 249 668 327.5 747.5 c 128,-1,3 - 406 827 406 827 504 874.5 c 128,-1,4 - 602 922 602 922 696 922 c 0,5,6 - 838 922 838 922 926.5 868.5 c 128,-1,7 - 1015 815 1015 815 1040 711 c 1,8,-1 - 872 635 l 1,9,10 - 867 728 867 728 826.5 773.5 c 128,-1,11 - 786 819 786 819 702 819 c 0,12,13 - 619 819 619 819 552.5 743.5 c 128,-1,14 - 486 668 486 668 444 532 c 1,15,-1 - 752 532 l 1,16,-1 - 727 430 l 1,17,-1 - 416 430 l 1,18,19 - 397 322 397 322 397 276 c 0,20,21 - 397 82 397 82 573 82 c 0,22,23 - 622 82 622 82 664 101.5 c 128,-1,24 - 706 121 706 121 733 146.5 c 128,-1,25 - 760 172 760 172 797 217 c 1,26,-1 - 940 158 l 1,27,28 - 856 76 856 76 748.5 28 c 128,-1,29 - 641 -20 641 -20 520 -20 c 0,30,31 - 351 -20 351 -20 250.5 72.5 c 128,-1,32 - 150 165 150 165 150 324 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10102 -Encoding: 1109 1109 465 -Width: 860 -VWidth: 0 -Flags: W -HStem: -20 102<290 523> 817 104<550 718> -VStem: 252 256<549 774> 596 258<167 388> -AnchorPoint: "top" 389 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 7 115 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10103 -Encoding: 1110 1110 466 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1065 164<397 573> -VStem: 133 254<83 364> 520 70<96 131> -LayerCount: 2 -Fore -Refer: 8 105 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10104 -Encoding: 1111 1111 467 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1085 170<283 414 569 700> -VStem: 133 254<83 364> 244 209 520 70<96 131> 530 209 -LayerCount: 2 -Fore -Refer: 135 239 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10105 -Encoding: 1112 1112 468 -Width: 438 -VWidth: 0 -Flags: W -HStem: -348 102<-190 25> 860 41<292 557> 1065 164<397 573> -LayerCount: 2 -Fore -Refer: 13 106 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10106 -Encoding: 1113 1113 469 -Width: 1703 -VWidth: 0 -Flags: W -HStem: -20 102<142 372 1190 1350> 481 102<1257 1415> 799 102<869 1015> -VStem: 934 244<92 425> 1022 258<569 791> 1427 256<200 476> -AnchorPoint: "top" 981 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1229 453 m 1,0,-1 - 1188 276 l 2,1,2 - 1178 235 1178 235 1178 190 c 0,3,4 - 1178 82 1178 82 1270 82 c 0,5,6 - 1314 82 1314 82 1347.5 120.5 c 128,-1,7 - 1381 159 1381 159 1396.5 213 c 128,-1,8 - 1412 267 1412 267 1419.5 309 c 128,-1,9 - 1427 351 1427 351 1427 375 c 0,10,11 - 1427 423 1427 423 1410.5 452 c 128,-1,12 - 1394 481 1394 481 1360 481 c 0,13,14 - 1287 481 1287 481 1229 453 c 1,0,-1 -1006 592 m 1,15,16 - 1022 674 1022 674 1022 711 c 0,17,18 - 1022 764 1022 764 999 781.5 c 128,-1,19 - 976 799 976 799 926 799 c 0,20,21 - 880 799 880 799 819 665.5 c 128,-1,22 - 758 532 758 532 694 260 c 1,23,24 - 660 111 660 111 547 45.5 c 128,-1,25 - 434 -20 434 -20 233 -20 c 0,26,27 - 104 -20 104 -20 47 72 c 1,28,-1 - 190 133 l 1,29,30 - 212 82 212 82 287 82 c 0,31,32 - 347 82 347 82 386 140.5 c 128,-1,33 - 425 199 425 199 455 328 c 0,34,35 - 478 428 478 428 514 512.5 c 128,-1,36 - 550 597 550 597 589.5 654.5 c 128,-1,37 - 629 712 629 712 675 757 c 128,-1,38 - 721 802 721 802 762 828.5 c 128,-1,39 - 803 855 803 855 844 872 c 128,-1,40 - 885 889 885 889 914 895 c 128,-1,41 - 943 901 943 901 965 901 c 0,42,43 - 1006 901 1006 901 1046 896 c 128,-1,44 - 1086 891 1086 891 1129.5 877 c 128,-1,45 - 1173 863 1173 863 1205.5 841 c 128,-1,46 - 1238 819 1238 819 1259 782.5 c 128,-1,47 - 1280 746 1280 746 1280 700 c 0,48,49 - 1280 670 1280 670 1272 643 c 1,50,-1 - 1255 567 l 1,51,52 - 1318 584 1318 584 1360 584 c 0,53,54 - 1530 584 1530 584 1606.5 534 c 128,-1,55 - 1683 484 1683 484 1683 381 c 0,56,57 - 1683 329 1683 329 1670 277.5 c 128,-1,58 - 1657 226 1657 226 1622.5 171 c 128,-1,59 - 1588 116 1588 116 1536.5 74.5 c 128,-1,60 - 1485 33 1485 33 1399.5 6.5 c 128,-1,61 - 1314 -20 1314 -20 1206 -20 c 0,62,63 - 1178 -20 1178 -20 1148 -15.5 c 128,-1,64 - 1118 -11 1118 -11 1078 5 c 128,-1,65 - 1038 21 1038 21 1007.5 46.5 c 128,-1,66 - 977 72 977 72 955.5 120.5 c 128,-1,67 - 934 169 934 169 934 233 c 0,68,69 - 934 288 934 288 948 348 c 2,70,-1 - 1006 592 l 1,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10107 -Encoding: 1114 1114 470 -Width: 1482 -VWidth: 0 -Flags: W -HStem: -20 102<969 1129> 0 43G<92 358> 440 102<473 750> 481 102<1035 1193> 860 41G<292 557 846 1112> -VStem: 713 244<92 426> 1206 256<200 476> -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1462 381 m 0,0,1 - 1462 329 1462 329 1449 277.5 c 128,-1,2 - 1436 226 1436 226 1401.5 171 c 128,-1,3 - 1367 116 1367 116 1315.5 74.5 c 128,-1,4 - 1264 33 1264 33 1178.5 6.5 c 128,-1,5 - 1093 -20 1093 -20 985 -20 c 0,6,7 - 957 -20 957 -20 927 -15.5 c 128,-1,8 - 897 -11 897 -11 857 5 c 128,-1,9 - 817 21 817 21 786.5 46.5 c 128,-1,10 - 756 72 756 72 734.5 120.5 c 128,-1,11 - 713 169 713 169 713 233 c 0,12,13 - 713 288 713 288 727 348 c 2,14,-1 - 750 440 l 1,15,-1 - 451 440 l 1,16,-1 - 348 0 l 1,17,-1 - 92 0 l 1,18,-1 - 301 901 l 1,19,-1 - 557 901 l 1,20,-1 - 473 543 l 1,21,-1 - 772 543 l 1,22,-1 - 856 901 l 1,23,-1 - 1112 901 l 1,24,-1 - 1034 567 l 1,25,26 - 1097 584 1097 584 1139 584 c 0,27,28 - 1309 584 1309 584 1385.5 534 c 128,-1,29 - 1462 484 1462 484 1462 381 c 0,0,1 -1008 453 m 1,30,-1 - 967 276 l 2,31,32 - 956 231 956 231 956 190 c 0,33,34 - 956 82 956 82 1049 82 c 0,35,36 - 1093 82 1093 82 1126.5 120.5 c 128,-1,37 - 1160 159 1160 159 1175.5 213 c 128,-1,38 - 1191 267 1191 267 1198.5 309 c 128,-1,39 - 1206 351 1206 351 1206 375 c 0,40,41 - 1206 423 1206 423 1189.5 452 c 128,-1,42 - 1173 481 1173 481 1139 481 c 0,43,44 - 1066 481 1066 481 1008 453 c 1,30,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10108 -Encoding: 1115 1115 471 -Width: 1026 -VWidth: 0 -Flags: W -HStem: 0 43G<135 401 680 945> 819 102<601 806> 1085 102<328 385 666 725> -VStem: 823 246<427 804> -LayerCount: 2 -Fore -SplineSet -571 784 m 1,0,-1 - 391 0 l 1,1,-1 - 135 0 l 1,2,-1 - 385 1085 l 1,3,-1 - 303 1085 l 1,4,-1 - 328 1188 l 1,5,-1 - 410 1188 l 1,6,-1 - 446 1352 l 1,7,-1 - 702 1352 l 1,8,-1 - 666 1188 l 1,9,-1 - 750 1188 l 1,10,-1 - 725 1085 l 1,11,-1 - 641 1085 l 1,12,-1 - 600 907 l 1,13,14 - 673 922 673 922 721 922 c 0,15,16 - 1069 922 1069 922 1069 641 c 0,17,18 - 1069 571 1069 571 1049 492 c 1,19,-1 - 936 0 l 1,20,-1 - 680 0 l 1,21,-1 - 788 467 l 1,22,23 - 823 625 823 625 823 700 c 0,24,25 - 823 766 823 766 799 792.5 c 128,-1,26 - 775 819 775 819 727 819 c 0,27,28 - 649 819 649 819 571 784 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10109 -Encoding: 1116 1116 472 -Width: 917 -VWidth: 0 -Flags: W -HStem: 0 43<82 347 608 848> 860 41<281 547 745 1020> 1065 403 -VStem: 535 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 922 -184 2 -Refer: 438 1082 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni045D -Encoding: 1117 1117 473 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1065 403 -VStem: 154 256<105 501> 522 319 668 260<101 364> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 895 -184 2 -Refer: 436 1080 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10110 -Encoding: 1118 1118 474 -Width: 972 -VWidth: 0 -Flags: W -HStem: -348 102<305 537> -20 102<415 625> 860 41<281 547 826 1092> 1085 123<575 935> -VStem: 154 246<99 456> 494 80<1172 1283> 958 76<1216 1296> -LayerCount: 2 -Back -SplineSet -765.952 1222.66 m 0 - 841.729 1222.66 923.648 1271.81 940.032 1316.86 c 1 - 1009.66 1275.9 l 1 - 972.8 1173.5 851.968 1085.44 733.184 1085.44 c 0 - 622.592 1085.44 544.768 1161.22 544.768 1255.42 c 0 - 544.768 1261.57 546.816 1269.76 546.816 1275.9 c 1 - 632.832 1316.86 l 1 - 632.832 1312.77 l 2 - 632.832 1269.76 692.224 1222.66 765.952 1222.66 c 0 -EndSplineSet -Refer: 447 1091 N 1 0 0 1 0 0 2 -Fore -Refer: 1068 57420 S 1 0 0 1 1026 -184 2 -Refer: 447 1091 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10193 -Encoding: 1119 1119 475 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<446 668 877 1050> 860 41G<281 547 826 1092> -VStem: 154 256<104 501> 344 158<-320 -186> 668 260<101 364> 1057 70<93 131> -AnchorPoint: "top" 715 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -836 901 m 1,0,-1 - 1092 901 l 1,1,-1 - 946 276 l 2,2,3 - 928 195 928 195 928 156 c 0,4,5 - 928 82 928 82 979 82 c 0,6,7 - 1035 82 1035 82 1057 131 c 1,8,-1 - 1126 131 l 1,9,10 - 1112 73 1112 73 1052.5 26.5 c 128,-1,11 - 993 -20 993 -20 928 -20 c 0,12,13 - 778 -20 778 -20 715 43 c 1,14,15 - 567 -20 567 -20 475 -20 c 2,16,-1 - 446 -20 l 1,17,-1 - 412 -125 l 1,18,19 - 457 -141 457 -141 479.5 -174 c 128,-1,20 - 502 -207 502 -207 502 -238 c 0,21,22 - 502 -287 502 -287 448 -329 c 128,-1,23 - 394 -371 394 -371 322 -397 c 1,24,-1 - 266 -373 l 1,25,26 - 296 -353 296 -353 320 -320.5 c 128,-1,27 - 344 -288 344 -288 344 -254 c 0,28,29 - 344 -194 344 -194 252 -164 c 1,30,-1 - 317 0 l 1,31,32 - 154 50 154 50 154 240 c 0,33,34 - 154 311 154 311 176 410 c 1,35,-1 - 291 901 l 1,36,-1 - 547 901 l 1,37,-1 - 438 434 l 1,38,39 - 410 303 410 303 410 236 c 0,40,41 - 410 151 410 151 441 116.5 c 128,-1,42 - 472 82 472 82 528 82 c 0,43,44 - 609 82 609 82 670 127 c 1,45,46 - 670 131 670 131 669 140.5 c 128,-1,47 - 668 150 668 150 668 154 c 0,48,49 - 668 173 668 173 676 213 c 1,50,-1 - 836 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii61352 -Encoding: 8470 8470 476 -Width: 2086 -VWidth: 0 -Flags: W -HStem: -20 102<122 351> 0 43G<1227 1431> 348 61<1612 2075> 516 61<1839 1952> 938 61<1919 2025> 1352 102<1759 1989> 1393 41G<681 882> -VStem: 1696 135<580 841> 2032 133<667 937> -LayerCount: 2 -Fore -SplineSet -1612 410 m 1,0,-1 - 2089 410 l 1,1,-1 - 2075 348 l 1,2,-1 - 1597 348 l 1,3,-1 - 1612 410 l 1,0,-1 -1896 578 m 0,4,5 - 1934 578 1934 578 1963 619.5 c 128,-1,6 - 1992 661 1992 661 2005.5 717 c 128,-1,7 - 2019 773 2019 773 2025.5 814.5 c 128,-1,8 - 2032 856 2032 856 2032 872 c 0,9,10 - 2032 938 2032 938 1980 938 c 0,11,12 - 1939 938 1939 938 1907 898 c 128,-1,13 - 1875 858 1875 858 1860 803.5 c 128,-1,14 - 1845 749 1845 749 1838 707 c 128,-1,15 - 1831 665 1831 665 1831 645 c 0,16,17 - 1831 611 1831 611 1846 594.5 c 128,-1,18 - 1861 578 1861 578 1896 578 c 0,4,5 -2165 831 m 0,19,20 - 2165 795 2165 795 2156 755.5 c 128,-1,21 - 2147 716 2147 716 2124.5 672.5 c 128,-1,22 - 2102 629 2102 629 2069 595 c 128,-1,23 - 2036 561 2036 561 1983 538.5 c 128,-1,24 - 1930 516 1930 516 1866 516 c 0,25,26 - 1784 516 1784 516 1740 560 c 128,-1,27 - 1696 604 1696 604 1696 682 c 0,28,29 - 1696 750 1696 750 1722.5 810.5 c 128,-1,30 - 1749 871 1749 871 1790.5 911.5 c 128,-1,31 - 1832 952 1832 952 1882 975.5 c 128,-1,32 - 1932 999 1932 999 1978 999 c 0,33,34 - 2066 999 2066 999 2115.5 956 c 128,-1,35 - 2165 913 2165 913 2165 831 c 0,19,20 -1421 0 m 1,36,-1 - 1243 0 l 1,37,-1 - 854 993 l 1,38,-1 - 686 262 l 2,39,40 - 669 189 669 189 614.5 132 c 128,-1,41 - 560 75 560 75 489.5 43.5 c 128,-1,42 - 419 12 419 12 350 -4 c 128,-1,43 - 281 -20 281 -20 223 -20 c 0,44,45 - 161 -20 161 -20 108 3.5 c 128,-1,46 - 55 27 55 27 27 72 c 1,47,-1 - 170 133 l 1,48,49 - 192 82 192 82 266 82 c 0,50,51 - 326 82 326 82 365 140.5 c 128,-1,52 - 404 199 404 199 434 328 c 2,53,-1 - 690 1434 l 1,54,-1 - 866 1434 l 1,55,-1 - 1255 438 l 1,56,-1 - 1425 1171 l 2,57,58 - 1442 1244 1442 1244 1496.5 1301 c 128,-1,59 - 1551 1358 1551 1358 1621.5 1390 c 128,-1,60 - 1692 1422 1692 1422 1761 1438 c 128,-1,61 - 1830 1454 1830 1454 1888 1454 c 0,62,63 - 1950 1454 1950 1454 2003.5 1430.5 c 128,-1,64 - 2057 1407 2057 1407 2085 1362 c 1,65,-1 - 1942 1300 l 1,66,67 - 1919 1352 1919 1352 1843 1352 c 0,68,69 - 1783 1352 1783 1352 1745 1293.5 c 128,-1,70 - 1707 1235 1707 1235 1677 1106 c 2,71,-1 - 1421 0 l 1,36,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10050 -Encoding: 1168 1168 477 -Width: 899 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368> 1331 102<666 1116> -AnchorPoint: "top" 854 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -358 0 m 1,0,-1 - 92 0 l 1,1,-1 - 424 1434 l 1,2,-1 - 1116 1434 l 1,3,-1 - 1155 1606 l 1,4,-1 - 1290 1606 l 1,5,-1 - 1227 1331 l 1,6,-1 - 666 1331 l 1,7,-1 - 358 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10098 -Encoding: 1169 1169 478 -Width: 714 -VWidth: 0 -Flags: W -HStem: 0 43G<92 358> 799 102<532 758> -AnchorPoint: "top" 623 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 0 m 1,0,-1 - 92 0 l 1,1,-1 - 301 901 l 1,2,-1 - 758 901 l 1,3,-1 - 799 1085 l 1,4,-1 - 934 1085 l 1,5,-1 - 868 799 l 1,6,-1 - 532 799 l 1,7,-1 - 348 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: hookabovecomb -Encoding: 777 777 479 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1438 61<-334 -171> -VStem: -219 117<1343 1437> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --281 1227 m 9,0,-1 - -332 1227 l 1,1,2 - -323 1266 -323 1266 -308 1292.5 c 128,-1,3 - -293 1319 -293 1319 -278 1331 c 128,-1,4 - -263 1343 -263 1343 -249.5 1352 c 128,-1,5 - -236 1361 -236 1361 -227.5 1374.5 c 128,-1,6 - -219 1388 -219 1388 -219 1409 c 0,7,8 - -219 1438 -219 1438 -258 1438 c 0,9,10 - -282 1438 -282 1438 -306 1434 c 0,11,12 - -328 1430 -328 1430 -340 1426 c 2,13,-1 - -352 1421 l 1,14,-1 - -342 1464 l 1,15,16 - -278 1499 -278 1499 -215 1499 c 0,17,18 - -155 1499 -155 1499 -128.5 1475.5 c 128,-1,19 - -102 1452 -102 1452 -102 1419 c 128,-1,20 - -102 1386 -102 1386 -117.5 1366 c 128,-1,21 - -133 1346 -133 1346 -156.5 1336.5 c 128,-1,22 - -180 1327 -180 1327 -204.5 1317 c 128,-1,23 - -229 1307 -229 1307 -251 1285 c 128,-1,24 - -273 1263 -273 1263 -281 1227 c 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni031B -Encoding: 795 795 480 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1055 43<-70 98> -VStem: 184 164<1185 1465> -AnchorPoint: "horn" 4 1075 mark 0 -LayerCount: 2 -Fore -SplineSet -131 1391 m 0,0,1 - 131 1447 131 1447 171.5 1478 c 128,-1,2 - 212 1509 212 1509 272 1509 c 0,3,4 - 348 1509 348 1509 348 1425 c 0,5,6 - 348 1317 348 1317 293.5 1230 c 128,-1,7 - 239 1143 239 1143 160 1099 c 128,-1,8 - 81 1055 81 1055 0 1055 c 2,9,-1 - -80 1055 l 1,10,-1 - -70 1098 l 1,11,-1 - 10 1098 l 2,12,13 - 69 1098 69 1098 126.5 1135 c 128,-1,14 - 184 1172 184 1172 184 1217 c 0,15,16 - 184 1241 184 1241 157.5 1297 c 128,-1,17 - 131 1353 131 1353 131 1391 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: dotbelowcomb -Encoding: 803 803 481 -Width: 0 -VWidth: 0 -Flags: W -HStem: -272 170<-700 -569> -VStem: -739 209 -AnchorPoint: "bottom" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --700 -102 m 1,0,-1 - -530 -102 l 1,1,-1 - -569 -272 l 1,2,-1 - -739 -272 l 1,3,-1 - -700 -102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0324 -Encoding: 804 804 482 -Width: 0 -VWidth: 0 -Flags: W -HStem: -272 170<-832 -701 -545 -414> -VStem: -871 209 -584 209 -AnchorPoint: "bottom" -586 0 mark 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 -488 -1542 2 -Refer: 98 775 N 1 0 0 1 -201 -1542 2 -Validated: 1 -EndChar - -StartChar: uni0325 -Encoding: 805 805 483 -Width: 0 -VWidth: 0 -Flags: W -HStem: -393 72<-721 -585> -154 72<-698 -564> -VStem: -803 74<-315 -184> -557 74<-294 -160> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --623 -154 m 0,0,1 - -661 -154 -661 -154 -695 -184 c 128,-1,2 - -729 -214 -729 -214 -729 -256 c 0,3,4 - -729 -284 -729 -284 -710.5 -303 c 128,-1,5 - -692 -322 -692 -322 -662 -322 c 0,6,7 - -624 -322 -624 -322 -590.5 -291.5 c 128,-1,8 - -557 -261 -557 -261 -557 -219 c 0,9,10 - -557 -191 -557 -191 -575.5 -172.5 c 128,-1,11 - -594 -154 -594 -154 -623 -154 c 0,0,1 --803 -272 m 0,12,13 - -803 -195 -803 -195 -740.5 -138.5 c 128,-1,14 - -678 -82 -678 -82 -606 -82 c 0,15,16 - -551 -82 -551 -82 -517 -116 c 128,-1,17 - -483 -150 -483 -150 -483 -203 c 0,18,19 - -483 -280 -483 -280 -545 -336.5 c 128,-1,20 - -607 -393 -607 -393 -678 -393 c 0,21,22 - -733 -393 -733 -393 -768 -359 c 128,-1,23 - -803 -325 -803 -325 -803 -272 c 0,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032C -Encoding: 812 812 484 -Width: 0 -VWidth: 0 -Flags: W -HStem: -449 387 -VStem: -852 479 -AnchorPoint: "bottom" -586 0 mark 0 -LayerCount: 2 -Fore -SplineSet --690 -449 m 1,0,-1 - -852 -115 l 1,1,-1 - -776 -61 l 1,2,-1 - -641 -242 l 1,3,-1 - -424 -61 l 1,4,-1 - -373 -115 l 1,5,-1 - -690 -449 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032D -Encoding: 813 813 485 -Width: 0 -VWidth: 0 -Flags: W -HStem: -449 387 -VStem: -918 479 -AnchorPoint: "bottom" -586 0 mark 0 -LayerCount: 2 -Fore -SplineSet --600 -61 m 1,0,-1 - -438 -395 l 1,1,-1 - -514 -449 l 1,2,-1 - -647 -268 l 1,3,-1 - -866 -449 l 1,4,-1 - -918 -395 l 1,5,-1 - -600 -61 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032E -Encoding: 814 814 486 -Width: 0 -VWidth: 0 -Flags: W -HStem: -272 117<-736 -502> -VStem: -840 84<-126 -82> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --625 -156 m 0,0,1 - -569 -156 -569 -156 -515 -126 c 128,-1,2 - -461 -96 -461 -96 -449 -61 c 1,3,-1 - -375 -82 l 1,4,5 - -403 -160 -403 -160 -483 -216 c 128,-1,6 - -563 -272 -563 -272 -651 -272 c 0,7,8 - -733 -272 -733 -272 -786.5 -222 c 128,-1,9 - -840 -172 -840 -172 -840 -100 c 0,10,11 - -840 -88 -840 -88 -838 -82 c 1,12,-1 - -756 -61 l 1,13,-1 - -756 -66 l 2,14,15 - -756 -101 -756 -101 -717.5 -128.5 c 128,-1,16 - -679 -156 -679 -156 -625 -156 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032F -Encoding: 815 815 487 -Width: 0 -VWidth: 0 -Flags: W -HStem: -199 117<-756 -522> -VStem: -502 84<-272 -228> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --633 -199 m 0,0,1 - -689 -199 -689 -199 -743 -228.5 c 128,-1,2 - -797 -258 -797 -258 -809 -293 c 1,3,-1 - -883 -272 l 1,4,5 - -855 -194 -855 -194 -774.5 -138 c 128,-1,6 - -694 -82 -694 -82 -606 -82 c 0,7,8 - -524 -82 -524 -82 -471 -132 c 128,-1,9 - -418 -182 -418 -182 -418 -254 c 0,10,11 - -418 -266 -418 -266 -420 -272 c 1,12,-1 - -502 -293 l 1,13,-1 - -502 -289 l 2,14,15 - -502 -254 -502 -254 -540.5 -226.5 c 128,-1,16 - -579 -199 -579 -199 -633 -199 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0330 -Encoding: 816 816 488 -Width: 0 -VWidth: 0 -Flags: W -HStem: -285 117<-635 -440> -219 117<-846 -651> -VStem: -946 606 -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --424 -102 m 1,0,-1 - -340 -102 l 1,1,2 - -368 -182 -368 -182 -432 -233.5 c 128,-1,3 - -496 -285 -496 -285 -582 -285 c 0,4,5 - -620 -285 -620 -285 -671 -252 c 128,-1,6 - -722 -219 -722 -219 -741 -219 c 0,7,8 - -839 -219 -839 -219 -862 -285 c 1,9,-1 - -946 -285 l 1,10,11 - -918 -205 -918 -205 -854.5 -153.5 c 128,-1,12 - -791 -102 -791 -102 -705 -102 c 0,13,14 - -667 -102 -667 -102 -615.5 -135 c 128,-1,15 - -564 -168 -564 -168 -545 -168 c 0,16,17 - -447 -168 -447 -168 -424 -102 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0331 -Encoding: 817 817 489 -Width: 0 -VWidth: 0 -Flags: W -HStem: -205 82<-862 -410> -VStem: -881 489 -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --862 -123 m 1,0,-1 - -391 -123 l 1,1,-1 - -410 -205 l 1,2,-1 - -881 -205 l 1,3,-1 - -862 -123 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ohorn -Encoding: 416 416 490 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1120> -VStem: 199 258<251 749> 1235 256<698 1087> 1606 164<1200 1475> -AnchorPoint: "bottom" 680 0 basechar 0 -AnchorPoint: "ogonek" 684 0 basechar 0 -AnchorPoint: "top" 997 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1552 1401 m 0,0,1 - 1552 1457 1552 1457 1593 1488.5 c 128,-1,2 - 1634 1520 1634 1520 1694 1520 c 0,3,4 - 1769 1520 1769 1520 1769 1436 c 0,5,6 - 1769 1295 1769 1295 1683 1195.5 c 128,-1,7 - 1597 1096 1597 1096 1481 1071 c 1,8,9 - 1491 1006 1491 1006 1491 948 c 0,10,11 - 1491 863 1491 863 1475 772 c 128,-1,12 - 1459 681 1459 681 1425 586 c 128,-1,13 - 1391 491 1391 491 1342.5 403.5 c 128,-1,14 - 1294 316 1294 316 1224.5 238.5 c 128,-1,15 - 1155 161 1155 161 1072.5 103.5 c 128,-1,16 - 990 46 990 46 883.5 13 c 128,-1,17 - 777 -20 777 -20 659 -20 c 0,18,19 - 571 -20 571 -20 490.5 11 c 128,-1,20 - 410 42 410 42 343.5 102 c 128,-1,21 - 277 162 277 162 238 262 c 128,-1,22 - 199 362 199 362 199 489 c 0,23,24 - 199 624 199 624 236.5 763 c 128,-1,25 - 274 902 274 902 345.5 1025 c 128,-1,26 - 417 1148 417 1148 511 1244.5 c 128,-1,27 - 605 1341 605 1341 727.5 1397.5 c 128,-1,28 - 850 1454 850 1454 981 1454 c 0,29,30 - 1161 1454 1161 1454 1293.5 1367 c 128,-1,31 - 1426 1280 1426 1280 1470 1112 c 1,32,33 - 1523 1123 1523 1123 1564.5 1156 c 128,-1,34 - 1606 1189 1606 1189 1606 1227 c 0,35,36 - 1606 1251 1606 1251 1579 1307 c 128,-1,37 - 1552 1363 1552 1363 1552 1401 c 0,0,1 -694 82 m 0,38,39 - 799 82 799 82 890.5 150 c 128,-1,40 - 982 218 982 218 1043.5 322.5 c 128,-1,41 - 1105 427 1105 427 1149.5 554.5 c 128,-1,42 - 1194 682 1194 682 1214.5 799.5 c 128,-1,43 - 1235 917 1235 917 1235 1012 c 0,44,45 - 1235 1185 1235 1185 1165 1268.5 c 128,-1,46 - 1095 1352 1095 1352 969 1352 c 0,47,48 - 875 1352 875 1352 790.5 1287 c 128,-1,49 - 706 1222 706 1222 646.5 1120 c 128,-1,50 - 587 1018 587 1018 543 894.5 c 128,-1,51 - 499 771 499 771 478 653 c 128,-1,52 - 457 535 457 535 457 440 c 0,53,54 - 457 262 457 262 524.5 172 c 128,-1,55 - 592 82 592 82 694 82 c 0,38,39 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ohorn -Encoding: 417 417 491 -Width: 1073 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 794> -VStem: 147 244<117 508> 821 244<382 635> 1180 164<752 1025> -AnchorPoint: "bottom" 487 0 basechar 0 -AnchorPoint: "top" 737 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1126 950 m 0,0,1 - 1126 1006 1126 1006 1167 1037.5 c 128,-1,2 - 1208 1069 1208 1069 1268 1069 c 0,3,4 - 1343 1069 1343 1069 1343 985 c 0,5,6 - 1343 847 1343 847 1260.5 749 c 128,-1,7 - 1178 651 1178 651 1065 623 c 1,8,-1 - 1065 594 l 2,9,10 - 1065 546 1065 546 1056 492.5 c 128,-1,11 - 1047 439 1047 439 1026 378.5 c 128,-1,12 - 1005 318 1005 318 974.5 262 c 128,-1,13 - 944 206 944 206 896 154 c 128,-1,14 - 848 102 848 102 789.5 64 c 128,-1,15 - 731 26 731 26 651 3 c 128,-1,16 - 571 -20 571 -20 479 -20 c 0,17,18 - 318 -20 318 -20 232.5 64.5 c 128,-1,19 - 147 149 147 149 147 301 c 0,20,21 - 147 430 147 430 197.5 547.5 c 128,-1,22 - 248 665 248 665 327 745.5 c 128,-1,23 - 406 826 406 826 504 874 c 128,-1,24 - 602 922 602 922 696 922 c 0,25,26 - 846 922 846 922 942 857 c 128,-1,27 - 1038 792 1038 792 1059 666 c 1,28,29 - 1108 681 1108 681 1144 711 c 128,-1,30 - 1180 741 1180 741 1180 776 c 0,31,32 - 1180 800 1180 800 1153 856 c 128,-1,33 - 1126 912 1126 912 1126 950 c 0,0,1 -821 664 m 0,34,35 - 821 819 821 819 702 819 c 0,36,37 - 627 819 627 819 568 763 c 128,-1,38 - 509 707 509 707 477 631 c 128,-1,39 - 445 555 445 555 424.5 466.5 c 128,-1,40 - 404 378 404 378 397.5 323.5 c 128,-1,41 - 391 269 391 269 391 246 c 0,42,43 - 391 165 391 165 424.5 123.5 c 128,-1,44 - 458 82 458 82 532 82 c 0,45,46 - 601 82 601 82 656 138 c 128,-1,47 - 711 194 711 194 740.5 271 c 128,-1,48 - 770 348 770 348 789.5 437 c 128,-1,49 - 809 526 809 526 815 582.5 c 128,-1,50 - 821 639 821 639 821 664 c 0,34,35 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Uhorn -Encoding: 431 431 492 -Width: 1378 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1065 43<1409 1546> 1393 41G<384 659 1209 1485> -VStem: 176 254<182 636> 1632 164<1195 1475> -AnchorPoint: "bottom" 627 0 basechar 0 -AnchorPoint: "top" 958 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1579 1401 m 0,0,1 - 1579 1457 1579 1457 1619.5 1488.5 c 128,-1,2 - 1660 1520 1660 1520 1720 1520 c 0,3,4 - 1796 1520 1796 1520 1796 1436 c 0,5,6 - 1796 1354 1796 1354 1764 1282.5 c 128,-1,7 - 1732 1211 1732 1211 1681 1164.5 c 128,-1,8 - 1630 1118 1630 1118 1569 1091.5 c 128,-1,9 - 1508 1065 1508 1065 1448 1065 c 2,10,-1 - 1399 1065 l 1,11,-1 - 1294 610 l 2,12,13 - 1259 461 1259 461 1203.5 348.5 c 128,-1,14 - 1148 236 1148 236 1083 167 c 128,-1,15 - 1018 98 1018 98 935.5 55 c 128,-1,16 - 853 12 853 12 772.5 -4 c 128,-1,17 - 692 -20 692 -20 598 -20 c 0,18,19 - 538 -20 538 -20 483 -9 c 128,-1,20 - 428 2 428 2 370.5 31 c 128,-1,21 - 313 60 313 60 271 105.5 c 128,-1,22 - 229 151 229 151 202.5 226 c 128,-1,23 - 176 301 176 301 176 397 c 0,24,25 - 176 490 176 490 203 610 c 2,26,-1 - 393 1434 l 1,27,-1 - 659 1434 l 1,28,-1 - 469 610 l 2,29,30 - 430 444 430 444 430 334 c 0,31,32 - 430 259 430 259 446.5 207 c 128,-1,33 - 463 155 463 155 493 129 c 128,-1,34 - 523 103 523 103 556.5 92.5 c 128,-1,35 - 590 82 590 82 633 82 c 0,36,37 - 683 82 683 82 725 95.5 c 128,-1,38 - 767 109 767 109 810.5 144.5 c 128,-1,39 - 854 180 854 180 891 238 c 128,-1,40 - 928 296 928 296 963.5 390 c 128,-1,41 - 999 484 999 484 1028 610 c 2,42,-1 - 1219 1434 l 1,43,-1 - 1485 1434 l 1,44,-1 - 1409 1108 l 1,45,-1 - 1458 1108 l 2,46,47 - 1517 1108 1517 1108 1574.5 1145 c 128,-1,48 - 1632 1182 1632 1182 1632 1227 c 0,49,50 - 1632 1251 1632 1251 1605.5 1307 c 128,-1,51 - 1579 1363 1579 1363 1579 1401 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uhorn -Encoding: 432 432 493 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 614 43<1034 1150> 860 41G<281 547 826 1092> -VStem: 154 256<105 501> 668 260<101 364> 1057 70<93 131> 1237 164<744 1025> -AnchorPoint: "bottom" 471 0 basechar 0 -AnchorPoint: "top" 719 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1184 950 m 0,0,1 - 1184 1006 1184 1006 1224.5 1037.5 c 128,-1,2 - 1265 1069 1265 1069 1325 1069 c 0,3,4 - 1401 1069 1401 1069 1401 985 c 0,5,6 - 1401 903 1401 903 1369 831.5 c 128,-1,7 - 1337 760 1337 760 1286 713.5 c 128,-1,8 - 1235 667 1235 667 1174 640.5 c 128,-1,9 - 1113 614 1113 614 1053 614 c 2,10,-1 - 1024 614 l 1,11,-1 - 946 276 l 2,12,13 - 928 195 928 195 928 156 c 0,14,15 - 928 82 928 82 979 82 c 0,16,17 - 1035 82 1035 82 1057 131 c 1,18,-1 - 1126 131 l 1,19,20 - 1112 73 1112 73 1052.5 26.5 c 128,-1,21 - 993 -20 993 -20 928 -20 c 0,22,23 - 778 -20 778 -20 715 43 c 1,24,25 - 567 -20 567 -20 475 -20 c 0,26,27 - 309 -20 309 -20 231.5 43.5 c 128,-1,28 - 154 107 154 107 154 240 c 0,29,30 - 154 311 154 311 176 410 c 1,31,-1 - 291 901 l 1,32,-1 - 547 901 l 1,33,-1 - 438 434 l 1,34,35 - 410 303 410 303 410 236 c 0,36,37 - 410 151 410 151 441 116.5 c 128,-1,38 - 472 82 472 82 528 82 c 0,39,40 - 609 82 609 82 670 127 c 1,41,42 - 670 131 670 131 669 140.5 c 128,-1,43 - 668 150 668 150 668 154 c 0,44,45 - 668 173 668 173 676 213 c 1,46,-1 - 836 901 l 1,47,-1 - 1092 901 l 1,48,-1 - 1034 657 l 1,49,-1 - 1063 657 l 2,50,51 - 1122 657 1122 657 1179.5 694 c 128,-1,52 - 1237 731 1237 731 1237 776 c 0,53,54 - 1237 800 1237 800 1210.5 856 c 128,-1,55 - 1184 912 1184 912 1184 950 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ebreve -Encoding: 276 276 494 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1516 137<795 1023> -VStem: 684 88<1681 1706> -AnchorPoint: "bottom" 537 0 basechar 0 -AnchorPoint: "ogonek" 754 0 basechar 0 -AnchorPoint: "top" 922 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1167 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ebreve -Encoding: 277 277 495 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1085 137<674 902> -VStem: 150 246<143 446> 563 88<1251 1276> 799 233<561 763> -AnchorPoint: "top" 815 1352 basechar 0 -AnchorPoint: "ogonek" 559 0 basechar 0 -AnchorPoint: "bottom" 510 0 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ibreve -Encoding: 300 300 496 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1516 137<455 683> -VStem: 92 598 344 88<1681 1706> -AnchorPoint: "top" 580 1720 basechar 0 -AnchorPoint: "ogonek" 156 0 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 827 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ibreve -Encoding: 301 301 497 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1085 137<348 576> -VStem: 133 254<83 364> 238 88<1251 1276> 520 70<96 131> -AnchorPoint: "top" 487 1352 basechar 0 -AnchorPoint: "bottom" 172 0 basechar 0 -AnchorPoint: "ogonek" 248 0 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 721 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Obreve -Encoding: 334 334 498 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1516 137<938 1166> -VStem: 199 258<251 749> 827 88<1681 1706> 1235 256<698 1177> -AnchorPoint: "top" 1071 1720 basechar 0 -AnchorPoint: "ogonek" 684 0 basechar 0 -AnchorPoint: "bottom" 680 0 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: obreve -Encoding: 335 335 499 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1085 137<678 906> -VStem: 147 244<117 508> 567 88<1251 1276> 821 244<380 773> -AnchorPoint: "top" 817 1352 basechar 0 -AnchorPoint: "bottom" 487 0 basechar 0 -AnchorPoint: "ogonek" 508 0 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EA0 -Encoding: 7840 7840 500 -Width: 1275 -VWidth: 0 -Flags: W -HStem: -272 170<528 659> 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> -VStem: 489 209 -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1229 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA1 -Encoding: 7841 7841 501 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -272 170<459 590> -20 102<443 701 907 1067> 819 102<633 835> -VStem: 154 246<136 485> 420 209 690 262<96 373> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 3 -Refer: 481 803 S 1 0 0 1 1159 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA2 -Encoding: 7842 7842 502 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1683 61<954 1117> -VStem: 1069 117<1589 1683> -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1288 246 2 -Validated: 1 -EndChar - -StartChar: uni1EA3 -Encoding: 7843 7843 503 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1253 61<711 873> -VStem: 154 246<136 485> 690 262<96 373> 825 117<1159 1253> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1044 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EA4 -Encoding: 7844 7844 504 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<39 315 946 1204> 332 102<553 891> 1264 299 1481 301 -VStem: 655 551 1096 375 -LayerCount: 2 -Fore -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 94 770 S 1 0 0 1 1206 6 2 -Refer: 929 58624 S 1 0 0 1 594 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA5 -Encoding: 7845 7845 505 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1022 299 1239 301 -VStem: 154 246<136 485> 553 551 690 262<96 373> 993 375 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1104 -236 2 -Refer: 929 58624 N 1 0 0 1 492 -242 2 -Validated: 1 -EndChar - -StartChar: uni1EA6 -Encoding: 7846 7846 506 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<39 315 946 1204> 332 102<553 891> 1268 299 1481 301 -VStem: 655 551 979 305 -LayerCount: 2 -Fore -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1206 10 2 -Refer: 930 58625 N 1 0 0 1 442 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA7 -Encoding: 7847 7847 507 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1022 299 1235 301 -VStem: 154 246<136 485> 496 551 690 262<96 373> 819 305 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1047 -236 2 -Refer: 930 58625 N 1 0 0 1 283 -246 2 -Validated: 1 -EndChar - -StartChar: uni1EA8 -Encoding: 7848 7848 508 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<39 315 946 1204> 332 102<553 891> 1264 299 1737 61<1114 1277> -VStem: 655 551 1229 117<1642 1736> -LayerCount: 2 -Fore -Refer: 479 777 S 1 0 0 1 1448 299 2 -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 94 770 S 1 0 0 1 1206 6 2 -Validated: 1 -EndChar - -StartChar: uni1EA9 -Encoding: 7849 7849 509 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1073 299 1561 61<1000 1162> -VStem: 154 246<136 485> 565 551 690 262<96 373> 1075 72<97 131> 1114 117<1466 1560> -LayerCount: 2 -Fore -Refer: 124 226 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1333 123 2 -Validated: 1 -EndChar - -StartChar: uni1EAA -Encoding: 7850 7850 510 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<39 315 946 1204> 332 102<553 891> 1264 299 1618 141<1021 1199> 1683 141<823 1000> -VStem: 655 551 705 612 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1272 348 2 -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1206 6 2 -Validated: 1 -EndChar - -StartChar: uni1EAB -Encoding: 7851 7851 511 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1073 299 1434 141<878 1056> 1499 141<680 857> -VStem: 154 246<136 485> 561 612 565 551 690 262<96 373> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 124 226 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1128 164 2 -Validated: 1 -EndChar - -StartChar: uni1EAC -Encoding: 7852 7852 512 -Width: 1275 -VWidth: 0 -Flags: W -HStem: -272 170<528 659> 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1503 299 -VStem: 489 209 737 551 -LayerCount: 2 -Fore -Refer: 500 7840 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1288 246 2 -Validated: 1 -EndChar - -StartChar: uni1EAD -Encoding: 7853 7853 513 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -272 170<459 590> -20 102<443 701 907 1067> 819 102<633 835> 1073 299 -VStem: 154 246<136 485> 420 209 494 551 690 262<96 373> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 501 7841 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1045 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EAE -Encoding: 7854 7854 514 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<39 315 946 1204> 332 102<553 891> 1294 137<848 1076> 1481 301 -VStem: 737 88<1460 1485> 932 375 -LayerCount: 2 -Fore -Refer: 926 57344 S 1 0 0 1 0 0 2 -Refer: 97 774 S 1 0 0 1 1221 25 2 -Refer: 929 58624 N 1 0 0 1 430 0 2 -Validated: 1 -EndChar - -StartChar: uni1EAF -Encoding: 7855 7855 515 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1085 137<743 972> 1280 403 -VStem: 154 246<136 485> 633 88<1251 1276> 690 262<96 373> 813 422 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 207 259 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1200 31 2 -Validated: 1 -EndChar - -StartChar: uni1EB0 -Encoding: 7856 7856 516 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<39 315 946 1204> 332 102<553 891> 1294 137<848 1076> 1481 301 -VStem: 737 88<1460 1485> 750 305 -LayerCount: 2 -Fore -Refer: 97 774 S 1 0 0 1 1221 25 2 -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 930 58625 S 1 0 0 1 213 0 2 -Validated: 1 -EndChar - -StartChar: uni1EB1 -Encoding: 7857 7857 517 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1085 137<743 972> 1280 403 -VStem: 154 246<136 485> 614 319 633 88<1251 1276> 690 262<96 373> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 207 259 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 987 31 2 -Validated: 1 -EndChar - -StartChar: uni1EB2 -Encoding: 7858 7858 518 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<39 315 946 1204> 332 102<553 891> 1294 137<848 1076> 1726 61<883 1046> -VStem: 737 88<1460 1485> 997 117<1632 1726> -LayerCount: 2 -Fore -Refer: 479 777 S 1 0 0 1 1217 289 2 -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 97 774 S 1 0 0 1 1221 25 2 -Validated: 1 -EndChar - -StartChar: uni1EB3 -Encoding: 7859 7859 519 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1085 137<743 972> 1489 61<811 974> -VStem: 154 246<136 485> 633 88<1251 1276> 690 262<96 373> 926 117<1394 1488> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 207 259 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1145 51 2 -Validated: 1 -EndChar - -StartChar: uni1EB4 -Encoding: 7860 7860 520 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<39 315 946 1204> 332 102<553 891> 1294 137<848 1076> 1587 141<1032 1209> 1653 141<833 1011> -VStem: 715 612 737 88<1460 1485> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1282 317 2 -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 97 774 N 1 0 0 1 1221 25 2 -Validated: 1 -EndChar - -StartChar: uni1EB5 -Encoding: 7861 7861 521 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1085 137<743 972> 1434 141<921 1099> 1499 141<723 900> -VStem: 154 246<136 485> 604 612 633 88<1251 1276> 690 262<96 373> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 95 771 S 1 0 0 1 1171 164 2 -Refer: 207 259 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EB6 -Encoding: 7862 7862 522 -Width: 1275 -VWidth: 0 -Flags: W -HStem: -272 170<528 659> 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1516 137<916 1144> -VStem: 489 209 805 88<1681 1706> -LayerCount: 2 -Fore -Refer: 500 7840 N 1 0 0 1 0 0 2 -Refer: 97 774 N 1 0 0 1 1288 246 2 -Validated: 1 -EndChar - -StartChar: uni1EB7 -Encoding: 7863 7863 523 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -272 170<459 590> -20 102<443 701 907 1067> 819 102<633 835> 1085 137<672 900> -VStem: 154 246<136 485> 420 209 561 88<1251 1276> 690 262<96 373> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 501 7841 N 1 0 0 1 0 0 2 -Refer: 97 774 N 1 0 0 1 1044 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EB8 -Encoding: 7864 7864 524 -Width: 962 -VWidth: 0 -Flags: W -HStem: -272 170<426 557> 0 102<373 942> 799 102<557 909> 1331 102<655 1217> -VStem: 387 209 -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1126 0 2 -Validated: 1 -EndChar - -StartChar: uni1EB9 -Encoding: 7865 7865 525 -Width: 964 -VWidth: 0 -Flags: W -HStem: -272 170<399 530> -20 102<439 705> 451 102<449 789> 819 102<575 781> -VStem: 150 246<143 446> 360 209 799 233<561 763> -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1100 0 2 -Validated: 1 -EndChar - -StartChar: uni1EBA -Encoding: 7866 7866 526 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1683 61<834 996> -VStem: 948 117<1589 1683> -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1167 246 2 -Validated: 1 -EndChar - -StartChar: uni1EBB -Encoding: 7867 7867 527 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1253 61<713 876> -VStem: 150 246<143 446> 799 233<561 763> 827 117<1159 1253> -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1047 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EBC -Encoding: 7868 7868 528 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1516 141<917 1094> 1581 141<719 896> -VStem: 600 612 -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1167 246 2 -Validated: 1 -EndChar - -StartChar: uni1EBD -Encoding: 7869 7869 529 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1085 141<796 974> 1151 141<598 775> -VStem: 150 246<143 446> 479 612 799 233<561 763> -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1047 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EBE -Encoding: 7870 7870 530 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<464 1034> 664 102<617 970> 1126 102<700 1262> 1264 299 1481 301 -VStem: 655 551 1096 375 -LayerCount: 2 -Fore -Refer: 927 57371 N 1 0 0 1 0 0 2 -Refer: 94 770 S 1 0 0 1 1206 6 2 -Refer: 929 58624 S 1 0 0 1 594 0 2 -Validated: 1 -EndChar - -StartChar: uni1EBF -Encoding: 7871 7871 531 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1059 299 1276 301 -VStem: 150 246<143 446> 569 551 799 233<561 763> 1010 375 -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1120 -199 2 -Refer: 929 58624 N 1 0 0 1 508 -205 2 -Validated: 1 -EndChar - -StartChar: uni1EC0 -Encoding: 7872 7872 532 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<464 1034> 664 102<617 970> 1126 102<700 1262> 1268 299 1481 301 -VStem: 655 551 979 305 -LayerCount: 2 -Fore -Refer: 927 57371 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1206 10 2 -Refer: 930 58625 N 1 0 0 1 442 0 2 -Validated: 1 -EndChar - -StartChar: uni1EC1 -Encoding: 7873 7873 533 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1063 299 1276 301 -VStem: 150 246<143 446> 563 551 799 233<561 763> 887 305 -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1114 -195 2 -Refer: 930 58625 N 1 0 0 1 350 -205 2 -Validated: 1 -EndChar - -StartChar: uni1EC2 -Encoding: 7874 7874 534 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<464 1034> 664 102<617 970> 1126 102<700 1262> 1264 299 1737 61<1114 1277> -VStem: 655 551 1229 117<1642 1736> -LayerCount: 2 -Fore -Refer: 927 57371 N 1 0 0 1 0 0 2 -Refer: 479 777 S 1 0 0 1 1448 299 2 -Refer: 94 770 S 1 0 0 1 1206 6 2 -Validated: 1 -EndChar - -StartChar: uni1EC3 -Encoding: 7875 7875 535 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1073 299 1561 61<1000 1162> -VStem: 150 246<143 446> 496 551 799 233<561 763> 1114 117<1466 1560> -LayerCount: 2 -Fore -Refer: 125 234 N 1 0 0 1 0 0 3 -Refer: 479 777 S 1 0 0 1 1333 123 2 -Validated: 1 -EndChar - -StartChar: uni1EC4 -Encoding: 7876 7876 536 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<464 1034> 664 102<617 970> 1126 102<700 1262> 1264 299 1618 141<1030 1207> 1683 141<831 1009> -VStem: 655 551 713 612 -LayerCount: 2 -Fore -Refer: 927 57371 N 1 0 0 1 0 0 2 -Refer: 95 771 N 1 0 0 1 1280 348 2 -Refer: 94 770 N 1 0 0 1 1206 6 2 -Validated: 1 -EndChar - -StartChar: uni1EC5 -Encoding: 7877 7877 537 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1073 299 1434 141<878 1056> 1499 141<680 857> -VStem: 150 246<143 446> 496 551 561 612 799 233<561 763> -LayerCount: 2 -Fore -Refer: 125 234 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1128 164 2 -Validated: 1 -EndChar - -StartChar: uni1EC6 -Encoding: 7878 7878 538 -Width: 962 -VWidth: 0 -Flags: W -HStem: -272 170<426 557> 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1503 299 -VStem: 387 209 617 551 -LayerCount: 2 -Fore -Refer: 524 7864 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1168 246 2 -Validated: 1 -EndChar - -StartChar: uni1EC7 -Encoding: 7879 7879 539 -Width: 964 -VWidth: 0 -Flags: W -HStem: -272 170<399 530> -20 102<439 705> 451 102<449 789> 819 102<575 781> 1073 299 -VStem: 150 246<143 446> 360 209 496 551 799 233<561 763> -AnchorPoint: "top" 815 1352 basechar 0 -LayerCount: 2 -Fore -Refer: 525 7865 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1047 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EC8 -Encoding: 7880 7880 540 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1683 61<494 656> -VStem: 92 598 608 117<1589 1683> -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 827 246 2 -Validated: 1 -EndChar - -StartChar: uni1EC9 -Encoding: 7881 7881 541 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1253 61<387 550> -VStem: 133 254<83 364> 502 117<1159 1253> 520 70<96 131> -LayerCount: 2 -Fore -Refer: 112 305 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 721 -184 2 -Validated: 1 -EndChar - -StartChar: uni1ECA -Encoding: 7882 7882 542 -Width: 458 -VWidth: 0 -Flags: W -HStem: -272 170<71 202> 0 43<92 368> 1393 41<414 690> -VStem: 32 209 92 598 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 771 0 2 -Validated: 1 -EndChar - -StartChar: uni1ECB -Encoding: 7883 7883 543 -Width: 573 -VWidth: 0 -Flags: W -HStem: -272 170<61 193> -20 102<305 513> 860 41<291 555> 1065 164<397 573> -VStem: 23 209 133 254<83 364> 520 70<96 131> -LayerCount: 2 -Fore -Refer: 8 105 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 762 0 2 -Validated: 1 -EndChar - -StartChar: uni1ECC -Encoding: 7884 7884 544 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -272 170<569 700> -20 102<571 843> 1352 102<822 1122> -VStem: 199 258<251 749> 530 209 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1270 0 2 -Validated: 1 -EndChar - -StartChar: uni1ECD -Encoding: 7885 7885 545 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -272 170<377 508> -20 102<427 637> 819 102<586 795> -VStem: 147 244<117 508> 338 209 821 244<380 773> -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1077 0 2 -Validated: 1 -EndChar - -StartChar: uni1ECE -Encoding: 7886 7886 546 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1683 61<977 1140> -VStem: 199 258<251 749> 1092 117<1589 1683> 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1311 246 2 -Validated: 1 -EndChar - -StartChar: uni1ECF -Encoding: 7887 7887 547 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1253 61<717 880> -VStem: 147 244<117 508> 821 244<380 773> 831 117<1159 1253> -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1051 -184 2 -Validated: 1 -EndChar - -StartChar: uni1ED0 -Encoding: 7888 7888 548 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -18 102<597 893> 1145 102<822 1130> 1264 299 1481 301 -VStem: 223 260<236 697> 758 551 1198 375 1243 258<555 996> -LayerCount: 2 -Fore -Refer: 928 57441 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1309 6 2 -Refer: 929 58624 N 1 0 0 1 696 0 2 -Validated: 1 -EndChar - -StartChar: uni1ED1 -Encoding: 7889 7889 549 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1059 299 1276 301 -VStem: 147 244<117 508> 567 551 821 244<380 773> 1008 375 -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1118 -199 2 -Refer: 929 58624 N 1 0 0 1 506 -205 2 -Validated: 1 -EndChar - -StartChar: uni1ED2 -Encoding: 7890 7890 550 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -18 102<597 893> 1145 102<822 1130> 1268 299 1481 301 -VStem: 223 260<236 697> 758 551 1081 305 1243 258<555 996> -LayerCount: 2 -Fore -Refer: 928 57441 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1309 10 2 -Refer: 930 58625 N 1 0 0 1 545 0 2 -Validated: 1 -EndChar - -StartChar: uni1ED3 -Encoding: 7891 7891 551 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1063 299 1276 301 -VStem: 147 244<117 508> 567 551 821 244<380 773> 891 305 -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1118 -195 2 -Refer: 930 58625 N 1 0 0 1 354 -205 2 -Validated: 1 -EndChar - -StartChar: uni1ED4 -Encoding: 7892 7892 552 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -18 102<597 893> 1145 102<822 1130> 1264 299 1737 61<1217 1379> -VStem: 223 260<236 697> 758 551 1243 258<555 996> 1331 117<1642 1736> -LayerCount: 2 -Fore -Refer: 928 57441 N 1 0 0 1 0 0 2 -Refer: 479 777 S 1 0 0 1 1550 299 2 -Refer: 94 770 S 1 0 0 1 1309 6 2 -Validated: 1 -EndChar - -StartChar: uni1ED5 -Encoding: 7893 7893 553 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1073 299 1561 61<1002 1164> -VStem: 147 244<117 508> 500 551 821 244<380 773> 1116 117<1466 1560> -LayerCount: 2 -Fore -Refer: 127 244 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1335 123 2 -Validated: 1 -EndChar - -StartChar: uni1ED6 -Encoding: 7894 7894 554 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -18 102<597 893> 1145 102<822 1130> 1264 299 1618 141<1136 1314> 1683 141<938 1115> -VStem: 223 260<236 697> 758 551 819 612 1243 258<555 996> -LayerCount: 2 -Fore -Refer: 928 57441 N 1 0 0 1 0 0 2 -Refer: 95 771 N 1 0 0 1 1386 348 2 -Refer: 94 770 N 1 0 0 1 1309 6 2 -Validated: 1 -EndChar - -StartChar: uni1ED7 -Encoding: 7895 7895 555 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1073 299 1434 141<880 1058> 1499 141<682 859> -VStem: 147 244<117 508> 500 551 563 612 821 244<380 773> -LayerCount: 2 -Fore -Refer: 127 244 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1130 164 2 -Validated: 1 -EndChar - -StartChar: uni1ED8 -Encoding: 7896 7896 556 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -272 170<569 700> -20 102<571 843> 1352 102<822 1122> 1503 299 -VStem: 199 258<251 749> 530 209 760 551 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 544 7884 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1311 246 2 -Validated: 1 -EndChar - -StartChar: uni1ED9 -Encoding: 7897 7897 557 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -272 170<377 508> -20 102<427 637> 819 102<586 795> 1073 299 -VStem: 147 244<117 508> 338 209 500 551 821 244<380 773> -LayerCount: 2 -Fore -Refer: 545 7885 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1051 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EDA -Encoding: 7898 7898 558 -Width: 1370 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1120> 1495 403 -VStem: 199 258<251 749> 924 422 1235 256<698 1087> 1606 164<1200 1475> -LayerCount: 2 -Fore -Refer: 490 416 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1311 246 2 -EndChar - -StartChar: uni1EDB -Encoding: 7899 7899 559 -Width: 1073 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<427 637> 819 102<586 794> 1065 403 -VStem: 147 244<117 508> 664 422 821 244<382 635> 1180 164<752 1025> -LayerCount: 2 -Fore -Refer: 491 417 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1051 -184 2 -EndChar - -StartChar: uni1EDC -Encoding: 7900 7900 560 -Width: 1370 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1120> 1495 403 -VStem: 199 258<251 749> 805 319 1235 256<698 1087> 1606 164<1200 1475> -LayerCount: 2 -Fore -Refer: 490 416 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 1178 246 2 -EndChar - -StartChar: uni1EDD -Encoding: 7901 7901 561 -Width: 1073 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<427 637> 819 102<586 794> 1065 403 -VStem: 147 244<117 508> 545 319 821 244<382 635> 1180 164<752 1025> -LayerCount: 2 -Fore -Refer: 491 417 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 918 -184 2 -EndChar - -StartChar: uni1EDE -Encoding: 7902 7902 562 -Width: 1370 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1120> 1683 61<977 1140> -VStem: 199 258<251 749> 1092 117<1589 1683> 1235 256<698 1087> 1606 164<1200 1475> -LayerCount: 2 -Fore -Refer: 490 416 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1311 246 2 -EndChar - -StartChar: uni1EDF -Encoding: 7903 7903 563 -Width: 1073 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<427 637> 819 102<586 794> 1253 61<717 880> -VStem: 147 244<117 508> 821 244<382 635> 831 117<1159 1253> 1180 164<752 1025> -LayerCount: 2 -Fore -Refer: 491 417 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1051 -184 2 -EndChar - -StartChar: uni1EE0 -Encoding: 7904 7904 564 -Width: 1370 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1120> 1516 141<1060 1238> 1581 141<862 1039> -VStem: 199 258<251 749> 743 612 1235 256<698 1087> 1606 164<1200 1475> -LayerCount: 2 -Fore -Refer: 490 416 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1311 246 2 -EndChar - -StartChar: uni1EE1 -Encoding: 7905 7905 565 -Width: 1073 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -20 102<427 637> 819 102<586 794> 1085 141<800 978> 1151 141<602 779> -VStem: 147 244<117 508> 483 612 821 244<382 635> 1180 164<752 1025> -LayerCount: 2 -Fore -Refer: 491 417 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1051 -184 2 -EndChar - -StartChar: uni1EE2 -Encoding: 7906 7906 566 -Width: 1370 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -272 170<569 700> -20 102<571 843> 1352 102<822 1120> -VStem: 199 258<251 749> 530 209 1235 256<698 1087> 1606 164<1200 1475> -LayerCount: 2 -Fore -Refer: 490 416 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1270 0 2 -EndChar - -StartChar: uni1EE3 -Encoding: 7907 7907 567 -Width: 1073 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: -272 170<377 508> -20 102<427 637> 819 102<586 794> -VStem: 147 244<117 508> 338 209 821 244<382 635> 1180 164<752 1025> -LayerCount: 2 -Fore -Refer: 491 417 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1077 0 2 -EndChar - -StartChar: uni1EE4 -Encoding: 7908 7908 568 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -272 170<516 647> -20 102<498 781> 1393 41<384 659 1209 1485> -VStem: 176 254<182 636> 477 209 -LayerCount: 2 -Fore -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1217 0 2 -Validated: 1 -EndChar - -StartChar: uni1EE5 -Encoding: 7909 7909 569 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -272 170<360 492> -20 102<435 668 876 1050> 860 41<281 547 826 1092> -VStem: 154 256<105 501> 322 209 668 260<101 364> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 19 117 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1061 0 2 -Validated: 1 -EndChar - -StartChar: uni1EE6 -Encoding: 7910 7910 570 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1683 61<938 1101> -VStem: 176 254<182 636> 1053 117<1589 1683> -LayerCount: 2 -Fore -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1272 246 2 -Validated: 1 -EndChar - -StartChar: uni1EE7 -Encoding: 7911 7911 571 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1253 61<698 861> -VStem: 154 256<105 501> 668 260<101 364> 813 117<1159 1253> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 19 117 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1032 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EE8 -Encoding: 7912 7912 572 -Width: 1378 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1065 43<1409 1546> 1393 41<384 659 1209 1485> 1495 403 -VStem: 176 254<182 636> 885 422 1632 164<1195 1475> -LayerCount: 2 -Fore -Refer: 492 431 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1272 246 2 -Validated: 1 -EndChar - -StartChar: uni1EE9 -Encoding: 7913 7913 573 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 614 43<1034 1150> 860 41<281 547 826 1092> 1065 403 -VStem: 154 256<105 501> 645 422 668 260<101 364> 1057 70<93 131> 1237 164<744 1025> -LayerCount: 2 -Fore -Refer: 493 432 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1032 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EEA -Encoding: 7914 7914 574 -Width: 1378 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1065 43<1409 1546> 1393 41<384 659 1209 1485> 1495 403 -VStem: 176 254<182 636> 766 319 1632 164<1195 1475> -LayerCount: 2 -Fore -Refer: 492 431 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 1139 246 2 -Validated: 1 -EndChar - -StartChar: uni1EEB -Encoding: 7915 7915 575 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 614 43<1034 1150> 860 41<281 547 826 1092> 1065 403 -VStem: 154 256<105 501> 527 319 668 260<101 364> 1057 70<93 131> 1237 164<744 1025> -LayerCount: 2 -Fore -Refer: 493 432 N 1 0 0 1 0 0 3 -Refer: 92 768 N 1 0 0 1 899 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EEC -Encoding: 7916 7916 576 -Width: 1378 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1065 43<1409 1546> 1393 41<384 659 1209 1485> 1683 61<938 1101> -VStem: 176 254<182 636> 1053 117<1589 1683> 1632 164<1195 1475> -LayerCount: 2 -Fore -Refer: 492 431 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1272 246 2 -Validated: 1 -EndChar - -StartChar: uni1EED -Encoding: 7917 7917 577 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 614 43<1034 1150> 860 41<281 547 826 1092> 1253 61<698 861> -VStem: 154 256<105 501> 668 260<101 364> 813 117<1159 1253> 1057 70<93 131> 1237 164<744 1025> -LayerCount: 2 -Fore -Refer: 493 432 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1032 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EEE -Encoding: 7918 7918 578 -Width: 1378 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1065 43<1409 1546> 1393 41<384 659 1209 1485> 1516 141<1021 1199> 1581 141<823 1000> -VStem: 176 254<182 636> 705 612 1632 164<1195 1475> -LayerCount: 2 -Fore -Refer: 492 431 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1272 246 2 -Validated: 1 -EndChar - -StartChar: uni1EEF -Encoding: 7919 7919 579 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 614 43<1034 1150> 860 41<281 547 826 1092> 1085 141<782 959> 1151 141<584 761> -VStem: 154 256<105 501> 465 612 668 260<101 364> 1057 70<93 131> 1237 164<744 1025> -LayerCount: 2 -Fore -Refer: 493 432 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1032 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EF0 -Encoding: 7920 7920 580 -Width: 1378 -VWidth: 0 -Flags: W -HStem: -272 170<516 647> -20 102<498 781> 1065 43<1409 1546> 1393 41<384 659 1209 1485> -VStem: 176 254<182 636> 477 209 1632 164<1195 1475> -LayerCount: 2 -Fore -Refer: 492 431 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1217 0 2 -Validated: 1 -EndChar - -StartChar: uni1EF1 -Encoding: 7921 7921 581 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -272 170<360 492> -20 102<435 668 876 1050> 614 43<1034 1150> 860 41<281 547 826 1092> -VStem: 154 256<105 501> 322 209 668 260<101 364> 1057 70<93 131> 1237 164<744 1025> -LayerCount: 2 -Fore -Refer: 493 432 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1061 0 2 -Validated: 1 -EndChar - -StartChar: uni1EF4 -Encoding: 7924 7924 582 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -272 170<426 557> 0 43<406 681> 1393 41<377 646 1112 1327> -VStem: 387 209 -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1126 0 2 -Validated: 1 -EndChar - -StartChar: uni1EF5 -Encoding: 7925 7925 583 -Width: 931 -VWidth: 0 -Flags: W -HStem: -412 170<487 618> -348 102<97 251> 860 41<270 497 901 1090> -VStem: 449 209 -LayerCount: 2 -Fore -Refer: 24 121 N 1 0 0 1 0 0 3 -Refer: 481 803 N 1 0 0 1 1188 -139 2 -Validated: 1 -EndChar - -StartChar: uni1EF6 -Encoding: 7926 7926 584 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<406 681> 1393 41<377 646 1112 1327> 1683 61<848 1011> -VStem: 963 117<1589 1683> -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1182 246 2 -Validated: 1 -EndChar - -StartChar: uni1EF7 -Encoding: 7927 7927 585 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<97 251> 860 41<270 497 901 1090> 1253 61<688 851> -VStem: 803 117<1159 1253> -LayerCount: 2 -Fore -Refer: 24 121 N 1 0 0 1 0 0 3 -Refer: 479 777 N 1 0 0 1 1022 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EF8 -Encoding: 7928 7928 586 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<406 681> 1393 41<377 646 1112 1327> 1516 141<931 1109> 1581 141<733 910> -VStem: 614 612 -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1182 246 2 -Validated: 1 -EndChar - -StartChar: uni1EF9 -Encoding: 7929 7929 587 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<97 251> 860 41<270 497 901 1090> 1085 141<772 949> 1151 141<573 751> -VStem: 455 612 -LayerCount: 2 -Fore -Refer: 24 121 N 1 0 0 1 0 0 3 -Refer: 95 771 N 1 0 0 1 1022 -184 2 -Validated: 1 -EndChar - -StartChar: uni0181 -Encoding: 385 385 588 -Width: 1398 -VWidth: 0 -Flags: W -HStem: 0 102<748 982> 727 102<915 1058> 918 43G<459 534> 1331 102<663 762 1030 1181> -VStem: 297 238<1007 1219> 1155 268<296 656> 1227 270<998 1290> -LayerCount: 2 -Fore -SplineSet -915 829 m 1,0,1 - 969 830 969 830 1024 854.5 c 128,-1,2 - 1079 879 1079 879 1124.5 921 c 128,-1,3 - 1170 963 1170 963 1198.5 1026 c 128,-1,4 - 1227 1089 1227 1089 1227 1159 c 0,5,6 - 1227 1232 1227 1232 1191.5 1281.5 c 128,-1,7 - 1156 1331 1156 1331 1071 1331 c 2,8,-1 - 1030 1331 l 1,9,-1 - 915 829 l 1,0,1 -1497 1188 m 0,10,11 - 1497 1121 1497 1121 1477.5 1060 c 128,-1,12 - 1458 999 1458 999 1430.5 958 c 128,-1,13 - 1403 917 1403 917 1366 881.5 c 128,-1,14 - 1329 846 1329 846 1301.5 827.5 c 128,-1,15 - 1274 809 1274 809 1247 795 c 1,16,17 - 1337 754 1337 754 1380 675.5 c 128,-1,18 - 1423 597 1423 597 1423 498 c 0,19,20 - 1423 406 1423 406 1389 320 c 128,-1,21 - 1355 234 1355 234 1289.5 161 c 128,-1,22 - 1224 88 1224 88 1114 44 c 128,-1,23 - 1004 0 1004 0 866 0 c 2,24,-1 - 457 0 l 1,25,-1 - 762 1325 l 1,26,27 - 703 1315 703 1315 658.5 1290 c 128,-1,28 - 614 1265 614 1265 591.5 1237 c 128,-1,29 - 569 1209 569 1209 555 1175.5 c 128,-1,30 - 541 1142 541 1142 538 1122 c 128,-1,31 - 535 1102 535 1102 535 1085 c 0,32,33 - 535 1073 535 1073 537 1064 c 128,-1,34 - 539 1055 539 1055 543.5 1048 c 128,-1,35 - 548 1041 548 1041 550.5 1038.5 c 128,-1,36 - 553 1036 553 1036 561.5 1030.5 c 128,-1,37 - 570 1025 570 1025 571 1024 c 1,38,-1 - 510 918 l 1,39,40 - 422 930 422 930 359.5 973.5 c 128,-1,41 - 297 1017 297 1017 297 1090 c 0,42,43 - 297 1144 297 1144 330 1203 c 128,-1,44 - 363 1262 363 1262 422.5 1314 c 128,-1,45 - 482 1366 482 1366 578.5 1400 c 128,-1,46 - 675 1434 675 1434 788 1434 c 2,47,-1 - 1157 1434 l 2,48,49 - 1497 1434 1497 1434 1497 1188 c 0,10,11 -829 102 m 2,50,51 - 904 102 904 102 967 136 c 128,-1,52 - 1030 170 1030 170 1070 225.5 c 128,-1,53 - 1110 281 1110 281 1132.5 349.5 c 128,-1,54 - 1155 418 1155 418 1155 489 c 0,55,56 - 1155 536 1155 536 1145 577 c 128,-1,57 - 1135 618 1135 618 1114.5 652.5 c 128,-1,58 - 1094 687 1094 687 1058 707 c 128,-1,59 - 1022 727 1022 727 973 727 c 2,60,-1 - 891 727 l 1,61,-1 - 748 102 l 1,62,-1 - 829 102 l 2,50,51 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni018A -Encoding: 394 394 589 -Width: 1587 -VWidth: 0 -Flags: W -HStem: 0 102<748 1057> 918 43G<459 534> 1331 102<663 762 1030 1331> -VStem: 297 238<1007 1219> 1430 264<716 1227> -LayerCount: 2 -Fore -SplineSet -1030 1331 m 1,0,-1 - 748 102 l 1,1,-1 - 915 102 l 2,2,3 - 982 102 982 102 1048.5 138.5 c 128,-1,4 - 1115 175 1115 175 1178.5 249 c 128,-1,5 - 1242 323 1242 323 1297.5 448.5 c 128,-1,6 - 1353 574 1353 574 1391 737 c 0,7,8 - 1430 903 1430 903 1430 1024 c 0,9,10 - 1430 1185 1430 1185 1366.5 1258 c 128,-1,11 - 1303 1331 1303 1331 1198 1331 c 2,12,-1 - 1030 1331 l 1,0,-1 -1694 1020 m 0,13,14 - 1694 962 1694 962 1684.5 885.5 c 128,-1,15 - 1675 809 1675 809 1650.5 710 c 128,-1,16 - 1626 611 1626 611 1589.5 514.5 c 128,-1,17 - 1553 418 1553 418 1493 324 c 128,-1,18 - 1433 230 1433 230 1359 159 c 128,-1,19 - 1285 88 1285 88 1179.5 44 c 128,-1,20 - 1074 0 1074 0 952 0 c 2,21,-1 - 457 0 l 1,22,-1 - 762 1325 l 1,23,24 - 703 1315 703 1315 658.5 1290 c 128,-1,25 - 614 1265 614 1265 591.5 1237 c 128,-1,26 - 569 1209 569 1209 555 1175.5 c 128,-1,27 - 541 1142 541 1142 538 1122 c 128,-1,28 - 535 1102 535 1102 535 1085 c 0,29,30 - 535 1073 535 1073 537 1064 c 128,-1,31 - 539 1055 539 1055 543.5 1048 c 128,-1,32 - 548 1041 548 1041 550.5 1038.5 c 128,-1,33 - 553 1036 553 1036 561.5 1030.5 c 128,-1,34 - 570 1025 570 1025 571 1024 c 1,35,-1 - 510 918 l 1,36,37 - 422 930 422 930 359.5 973.5 c 128,-1,38 - 297 1017 297 1017 297 1090 c 0,39,40 - 297 1144 297 1144 330 1203 c 128,-1,41 - 363 1262 363 1262 422.5 1314 c 128,-1,42 - 482 1366 482 1366 578.5 1400 c 128,-1,43 - 675 1434 675 1434 788 1434 c 2,44,-1 - 1284 1434 l 2,45,46 - 1694 1434 1694 1434 1694 1020 c 0,13,14 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0253 -Encoding: 595 595 590 -Width: 1079 -VWidth: 0 -Flags: W -HStem: -20 102<469 688> 819 102<607 843> 1270 102<699 913> -VStem: 207 244<100 430> 870 246<392 786> -LayerCount: 2 -Fore -SplineSet -1116 606 m 0,0,1 - 1116 561 1116 561 1109 510 c 128,-1,2 - 1102 459 1102 459 1083.5 397.5 c 128,-1,3 - 1065 336 1065 336 1037 278.5 c 128,-1,4 - 1009 221 1009 221 963 166 c 128,-1,5 - 917 111 917 111 860 70 c 128,-1,6 - 803 29 803 29 721.5 4.5 c 128,-1,7 - 640 -20 640 -20 545 -20 c 0,8,9 - 473 -20 473 -20 418.5 -10.5 c 128,-1,10 - 364 -1 364 -1 313 24.5 c 128,-1,11 - 262 50 262 50 234.5 102 c 128,-1,12 - 207 154 207 154 207 231 c 0,13,14 - 207 292 207 292 225 369 c 2,15,-1 - 391 1092 l 2,16,17 - 408 1164 408 1164 457.5 1220.5 c 128,-1,18 - 507 1277 507 1277 571.5 1308.5 c 128,-1,19 - 636 1340 636 1340 700.5 1356 c 128,-1,20 - 765 1372 765 1372 823 1372 c 0,21,22 - 951 1372 951 1372 1008 1280 c 1,23,-1 - 864 1219 l 1,24,25 - 842 1270 842 1270 768 1270 c 0,26,27 - 716 1270 716 1270 689.5 1217 c 128,-1,28 - 663 1164 663 1164 631 1024 c 2,29,-1 - 602 897 l 1,30,31 - 682 922 682 922 762 922 c 0,32,33 - 946 922 946 922 1031 837 c 128,-1,34 - 1116 752 1116 752 1116 606 c 0,0,1 -598 82 m 0,35,36 - 657 82 657 82 710.5 146 c 128,-1,37 - 764 210 764 210 797.5 303 c 128,-1,38 - 831 396 831 396 850.5 492.5 c 128,-1,39 - 870 589 870 589 870 662 c 0,40,41 - 870 819 870 819 768 819 c 0,42,43 - 654 819 654 819 567 745 c 1,44,-1 - 465 303 l 2,45,46 - 451 240 451 240 451 195 c 0,47,48 - 451 128 451 128 485.5 105 c 128,-1,49 - 520 82 520 82 598 82 c 0,35,36 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0257 -Encoding: 599 599 591 -Width: 1173 -VWidth: 0 -Flags: W -HStem: -20 102<421 631 956 1082> 819 102<584 774> 1270 102<1219 1433> -VStem: 152 238<130 500> 1090 70<96 131> -LayerCount: 2 -Fore -SplineSet -979 276 m 2,0,1 - 954 170 954 170 954 143 c 0,2,3 - 954 82 954 82 1012 82 c 0,4,5 - 1036 82 1036 82 1058.5 98 c 128,-1,6 - 1081 114 1081 114 1090 131 c 1,7,-1 - 1159 131 l 1,8,9 - 1145 73 1145 73 1085.5 26.5 c 128,-1,10 - 1026 -20 1026 -20 961 -20 c 0,11,12 - 825 -20 825 -20 756 43 c 1,13,14 - 638 -20 638 -20 471 -20 c 0,15,16 - 312 -20 312 -20 232 74.5 c 128,-1,17 - 152 169 152 169 152 317 c 0,18,19 - 152 398 152 398 176 483.5 c 128,-1,20 - 200 569 200 569 247 647 c 128,-1,21 - 294 725 294 725 357.5 786.5 c 128,-1,22 - 421 848 421 848 507 885 c 128,-1,23 - 593 922 593 922 688 922 c 0,24,25 - 786 922 786 922 862 883 c 1,26,-1 - 911 1092 l 2,27,28 - 928 1164 928 1164 977.5 1220.5 c 128,-1,29 - 1027 1277 1027 1277 1091.5 1308.5 c 128,-1,30 - 1156 1340 1156 1340 1220.5 1356 c 128,-1,31 - 1285 1372 1285 1372 1343 1372 c 0,32,33 - 1471 1372 1471 1372 1528 1280 c 1,34,-1 - 1384 1219 l 1,35,36 - 1362 1270 1362 1270 1288 1270 c 0,37,38 - 1236 1270 1236 1270 1209.5 1217 c 128,-1,39 - 1183 1164 1183 1164 1151 1024 c 2,40,-1 - 979 276 l 2,0,1 -524 82 m 0,41,42 - 582 82 582 82 628.5 123 c 128,-1,43 - 675 164 675 164 703 229.5 c 128,-1,44 - 731 295 731 295 751 366 c 128,-1,45 - 771 437 771 437 779.5 508 c 128,-1,46 - 788 579 788 579 791.5 618 c 128,-1,47 - 795 657 795 657 795 672 c 0,48,49 - 795 819 795 819 694 819 c 0,50,51 - 638 819 638 819 591.5 787 c 128,-1,52 - 545 755 545 755 514.5 704.5 c 128,-1,53 - 484 654 484 654 460 592.5 c 128,-1,54 - 436 531 436 531 423 469 c 128,-1,55 - 410 407 410 407 402 356.5 c 128,-1,56 - 394 306 394 306 392 274 c 2,57,-1 - 389 242 l 1,58,59 - 389 82 389 82 524 82 c 0,41,42 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni018E -Encoding: 398 398 592 -Width: 1122 -VWidth: 0 -Flags: W -HStem: 0 102<125 719> 799 102<526 879> 1331 102<465 1001> -LayerCount: 2 -Fore -SplineSet -100 0 m 1,0,-1 - 125 102 l 1,1,-1 - 719 102 l 1,2,-1 - 879 799 l 1,3,-1 - 502 799 l 1,4,-1 - 526 901 l 1,5,-1 - 903 901 l 1,6,-1 - 1001 1331 l 1,7,-1 - 440 1331 l 1,8,-1 - 465 1434 l 1,9,-1 - 1292 1434 l 1,10,-1 - 961 0 l 1,11,-1 - 100 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01DD -Encoding: 477 477 593 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<401 607> 348 102<393 733> 819 102<476 743> -VStem: 150 233<138 340> 786 246<456 758> -LayerCount: 2 -Fore -SplineSet -1032 578 m 0,0,1 - 1032 459 1032 459 982 346.5 c 128,-1,2 - 932 234 932 234 854 154.5 c 128,-1,3 - 776 75 776 75 677.5 27.5 c 128,-1,4 - 579 -20 579 -20 485 -20 c 0,5,6 - 401 -20 401 -20 335 8.5 c 128,-1,7 - 269 37 269 37 229.5 86.5 c 128,-1,8 - 190 136 190 136 170 197.5 c 128,-1,9 - 150 259 150 259 150 330 c 0,10,11 - 150 385 150 385 185.5 418 c 128,-1,12 - 221 451 221 451 295 451 c 2,13,-1 - 760 451 l 1,14,15 - 786 568 786 568 786 639 c 0,16,17 - 786 729 786 729 744.5 774 c 128,-1,18 - 703 819 703 819 608 819 c 0,19,20 - 534 819 534 819 492.5 788 c 128,-1,21 - 451 757 451 757 426 696 c 1,22,-1 - 242 743 l 1,23,24 - 326 825 326 825 433.5 873.5 c 128,-1,25 - 541 922 541 922 662 922 c 0,26,27 - 831 922 831 922 931.5 829.5 c 128,-1,28 - 1032 737 1032 737 1032 578 c 0,0,1 -733 348 m 1,29,-1 - 481 348 l 2,30,31 - 419 348 419 348 401 320.5 c 128,-1,32 - 383 293 383 293 383 207 c 0,33,34 - 383 146 383 146 404.5 114 c 128,-1,35 - 426 82 426 82 479 82 c 0,36,37 - 572 82 572 82 632.5 149.5 c 128,-1,38 - 693 217 693 217 733 348 c 1,29,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0259 -Encoding: 601 601 594 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<401 607> 348 102<393 733> 819 102<476 743> -VStem: 150 233<138 340> 786 246<456 758> -LayerCount: 2 -Fore -Refer: 593 477 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0198 -Encoding: 408 408 595 -Width: 1421 -VWidth: 0 -Flags: W -HStem: 0 43G<174 450 987 1233> 1341 113<1399 1569> 1393 41G<496 772> -VStem: 1577 201<1133 1334> -LayerCount: 2 -Fore -SplineSet -1466 1081 m 1,0,1 - 1577 1142 1577 1142 1577 1257 c 0,2,3 - 1577 1294 1577 1294 1557.5 1317.5 c 128,-1,4 - 1538 1341 1538 1341 1503 1341 c 0,5,6 - 1475 1341 1475 1341 1450.5 1330 c 128,-1,7 - 1426 1319 1426 1319 1364.5 1270.5 c 128,-1,8 - 1303 1222 1303 1222 1184 1116 c 2,9,-1 - 801 776 l 1,10,-1 - 1233 0 l 1,11,-1 - 1010 0 l 1,12,-1 - 651 643 l 1,13,-1 - 573 573 l 1,14,-1 - 440 0 l 1,15,-1 - 174 0 l 1,16,-1 - 506 1434 l 1,17,-1 - 772 1434 l 1,18,-1 - 633 836 l 1,19,-1 - 1157 1300 l 2,20,21 - 1245 1377 1245 1377 1328 1415.5 c 128,-1,22 - 1411 1454 1411 1454 1507 1454 c 0,23,24 - 1638 1454 1638 1454 1708 1405.5 c 128,-1,25 - 1778 1357 1778 1357 1778 1264 c 0,26,27 - 1778 1166 1778 1166 1712.5 1088 c 128,-1,28 - 1647 1010 1647 1010 1501 967 c 1,29,-1 - 1466 1081 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0199 -Encoding: 409 409 596 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43G<147 413 673 913> 860 41G<810 1085> 1270 102<707 921> -LayerCount: 2 -Fore -SplineSet -549 627 m 1,0,-1 - 856 901 l 1,1,-1 - 1085 901 l 1,2,-1 - 637 502 l 1,3,-1 - 913 0 l 1,4,-1 - 696 0 l 1,5,-1 - 489 371 l 1,6,-1 - 403 0 l 1,7,-1 - 147 0 l 1,8,-1 - 399 1092 l 2,9,10 - 416 1164 416 1164 465.5 1220.5 c 128,-1,11 - 515 1277 515 1277 579.5 1308.5 c 128,-1,12 - 644 1340 644 1340 708.5 1356 c 128,-1,13 - 773 1372 773 1372 831 1372 c 0,14,15 - 959 1372 959 1372 1016 1280 c 1,16,-1 - 872 1219 l 1,17,18 - 850 1270 850 1270 776 1270 c 0,19,20 - 724 1270 724 1270 697.5 1217 c 128,-1,21 - 671 1164 671 1164 639 1024 c 2,22,-1 - 549 627 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E62 -Encoding: 7778 7778 597 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -313 170<473 604> -20 102<527 773> 1352 102<812 1024> -VStem: 207 238<177 350> 430 270<940 1185> 434 209 932 270<279 555> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1173 -41 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E63 -Encoding: 7779 7779 598 -Width: 860 -VWidth: 0 -Flags: W -HStem: -313 170<290 421> -20 102<290 523> 817 104<550 718> -VStem: 251 209 252 256<549 774> 596 258<167 388> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 991 -41 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Engsami -Encoding: 58626 58626 599 -Width: 1261 -VWidth: 0 -Flags: W -HStem: -348 102<577 798> 0 43G<92 368> 1393 41G<414 703 1211 1487> -LayerCount: 2 -Fore -SplineSet -606 1075 m 1,0,-1 - 358 0 l 1,1,-1 - 92 0 l 1,2,-1 - 424 1434 l 1,3,-1 - 692 1434 l 1,4,-1 - 973 367 l 1,5,-1 - 1221 1434 l 1,6,-1 - 1487 1434 l 1,7,-1 - 1192 160 l 2,8,9 - 1167 51 1167 51 1145 -21 c 128,-1,10 - 1123 -93 1123 -93 1091.5 -153.5 c 128,-1,11 - 1060 -214 1060 -214 1024 -248.5 c 128,-1,12 - 988 -283 988 -283 934 -307 c 128,-1,13 - 880 -331 880 -331 814 -339.5 c 128,-1,14 - 748 -348 748 -348 655 -348 c 0,15,16 - 510 -348 510 -348 352 -256 c 1,17,-1 - 530 -150 l 1,18,19 - 595 -246 595 -246 709 -246 c 0,20,21 - 775 -246 775 -246 813 -191.5 c 128,-1,22 - 851 -137 851 -137 889 0 c 1,23,-1 - 606 1075 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0193 -Encoding: 403 403 600 -Width: 1468 -VWidth: 0 -Flags: W -HStem: -20 102<642 997> 717 102<1010 1159> 1331 102<863 1209> 1346 102<1563 1779> -VStem: 242 260<280 760> -LayerCount: 2 -Fore -SplineSet -1010 819 m 1,0,-1 - 1438 819 l 1,1,-1 - 1298 209 l 1,2,3 - 1194 106 1194 106 1046 43 c 128,-1,4 - 898 -20 898 -20 737 -20 c 0,5,6 - 667 -20 667 -20 598 -0.5 c 128,-1,7 - 529 19 529 19 464.5 61.5 c 128,-1,8 - 400 104 400 104 351 164.5 c 128,-1,9 - 302 225 302 225 272 314.5 c 128,-1,10 - 242 404 242 404 242 510 c 0,11,12 - 242 594 242 594 268 717 c 1,13,14 - 302 865 302 865 367.5 987.5 c 128,-1,15 - 433 1110 433 1110 512 1191 c 128,-1,16 - 591 1272 591 1272 683 1328 c 128,-1,17 - 775 1384 775 1384 863 1409 c 128,-1,18 - 951 1434 951 1434 1034 1434 c 0,19,20 - 1283 1434 1283 1434 1403 1362 c 1,21,22 - 1520 1448 1520 1448 1688 1448 c 0,23,24 - 1817 1448 1817 1448 1874 1356 c 1,25,-1 - 1731 1294 l 1,26,27 - 1708 1346 1708 1346 1634 1346 c 0,28,29 - 1582 1346 1582 1346 1555.5 1293 c 128,-1,30 - 1529 1240 1529 1240 1497 1100 c 1,31,-1 - 1255 1032 l 1,32,33 - 1270 1094 1270 1094 1270 1139 c 0,34,35 - 1270 1331 1270 1331 1040 1331 c 0,36,37 - 858 1331 858 1331 732.5 1182.5 c 128,-1,38 - 607 1034 607 1034 535 717 c 1,39,40 - 502 579 502 579 502 465 c 0,41,42 - 502 275 502 275 584 178.5 c 128,-1,43 - 666 82 666 82 791 82 c 0,44,45 - 915 82 915 82 1024 135 c 1,46,-1 - 1159 717 l 1,47,-1 - 987 717 l 1,48,-1 - 1010 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019D -Encoding: 413 413 601 -Width: 1394 -VWidth: 0 -Flags: W -HStem: -348 102<-135 81> 0 43G<997 1273> 1270 102<828 1170> -VStem: 1229 264<821 1191> -LayerCount: 2 -Fore -SplineSet -397 -68 m 2,0,1 - 380 -140 380 -140 329 -196.5 c 128,-1,2 - 278 -253 278 -253 212 -284.5 c 128,-1,3 - 146 -316 146 -316 80.5 -332 c 128,-1,4 - 15 -348 15 -348 -43 -348 c 0,5,6 - -172 -348 -172 -348 -229 -256 c 1,7,-1 - -86 -195 l 1,8,9 - -64 -246 -64 -246 10 -246 c 0,10,11 - 62 -246 62 -246 88.5 -193 c 128,-1,12 - 115 -140 115 -140 147 0 c 2,13,-1 - 459 1352 l 1,14,-1 - 725 1352 l 1,15,-1 - 711 1282 l 1,16,17 - 721 1287 721 1287 754.5 1303.5 c 128,-1,18 - 788 1320 788 1320 809 1328.5 c 128,-1,19 - 830 1337 830 1337 864.5 1349 c 128,-1,20 - 899 1361 899 1361 937 1366.5 c 128,-1,21 - 975 1372 975 1372 1018 1372 c 0,22,23 - 1149 1372 1149 1372 1254 1336 c 128,-1,24 - 1359 1300 1359 1300 1426 1221.5 c 128,-1,25 - 1493 1143 1493 1143 1493 1034 c 0,26,27 - 1493 992 1493 992 1481 942 c 2,28,-1 - 1264 0 l 1,29,-1 - 997 0 l 1,30,-1 - 1208 918 l 2,31,32 - 1229 1006 1229 1006 1229 1069 c 0,33,34 - 1229 1181 1229 1181 1174 1225.5 c 128,-1,35 - 1119 1270 1119 1270 1024 1270 c 0,36,37 - 926 1270 926 1270 842 1232 c 128,-1,38 - 758 1194 758 1194 676 1135 c 1,39,-1 - 397 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B3 -Encoding: 435 435 602 -Width: 1226 -VWidth: 0 -Flags: W -HStem: 0 43G<383 659> 1346 113<1217 1388> 1393 41G<354 624> -VStem: 1405 147<1210 1330> -LayerCount: 2 -Fore -SplineSet -834 801 m 1,0,-1 - 649 0 l 1,1,-1 - 383 0 l 1,2,-1 - 551 727 l 1,3,-1 - 354 1434 l 1,4,-1 - 612 1434 l 1,5,-1 - 752 936 l 1,6,-1 - 934 1184 l 2,7,8 - 963 1224 963 1224 989 1255 c 128,-1,9 - 1015 1286 1015 1286 1056.5 1326.5 c 128,-1,10 - 1098 1367 1098 1367 1139 1393.5 c 128,-1,11 - 1180 1420 1180 1420 1234 1439 c 128,-1,12 - 1288 1458 1288 1458 1343 1458 c 0,13,14 - 1442 1458 1442 1458 1497 1402 c 128,-1,15 - 1552 1346 1552 1346 1552 1264 c 0,16,17 - 1552 1237 1552 1237 1546 1210 c 1,18,-1 - 1401 1198 l 1,19,20 - 1405 1212 1405 1212 1405 1237 c 0,21,22 - 1405 1285 1405 1285 1379 1315.5 c 128,-1,23 - 1353 1346 1353 1346 1311 1346 c 0,24,25 - 1284 1346 1284 1346 1260 1335 c 128,-1,26 - 1236 1324 1236 1324 1208 1295 c 128,-1,27 - 1180 1266 1180 1266 1163 1244.5 c 128,-1,28 - 1146 1223 1146 1223 1110 1174 c 0,29,30 - 1101 1161 1101 1161 1096 1155 c 2,31,-1 - 834 801 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B4 -Encoding: 436 436 603 -Width: 1202 -VWidth: 0 -Flags: W -HStem: -348 102<123 278> 819 102<1057 1212> 860 41G<297 523> -LayerCount: 2 -Fore -SplineSet -549 -49 m 2,0,1 - 461 -197 461 -197 369 -272.5 c 128,-1,2 - 277 -348 277 -348 164 -348 c 0,3,4 - 93 -348 93 -348 28 -305.5 c 128,-1,5 - -37 -263 -37 -263 -51 -180 c 1,6,-1 - 152 -152 l 1,7,8 - 156 -201 156 -201 176 -223.5 c 128,-1,9 - 196 -246 196 -246 217 -246 c 0,10,11 - 268 -246 268 -246 389 -45 c 2,12,-1 - 416 0 l 1,13,-1 - 297 901 l 1,14,-1 - 518 901 l 1,15,-1 - 596 305 l 1,16,-1 - 784 623 l 2,17,18 - 872 771 872 771 965 846.5 c 128,-1,19 - 1058 922 1058 922 1171 922 c 0,20,21 - 1242 922 1242 922 1307 879.5 c 128,-1,22 - 1372 837 1372 837 1386 754 c 1,23,-1 - 1184 725 l 1,24,25 - 1180 773 1180 773 1159 796 c 128,-1,26 - 1138 819 1138 819 1116 819 c 0,27,28 - 1067 819 1067 819 946 618 c 1,29,-1 - 549 -49 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0260 -Encoding: 608 608 604 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -348 102<315 545> -20 102<467 632> 819 102<604 812> 1022 102<1137 1354> -VStem: 176 250<126 524> -LayerCount: 2 -Fore -SplineSet -700 819 m 0,0,1 - 637 819 637 819 582 756.5 c 128,-1,2 - 527 694 527 694 494.5 604 c 128,-1,3 - 462 514 462 514 444 423.5 c 128,-1,4 - 426 333 426 333 426 266 c 0,5,6 - 426 82 426 82 571 82 c 0,7,8 - 618 82 618 82 659 94 c 1,9,-1 - 815 772 l 1,10,11 - 771 819 771 819 700 819 c 0,0,1 -176 307 m 0,12,13 - 176 461 176 461 249 604 c 128,-1,14 - 322 747 322 747 442.5 834.5 c 128,-1,15 - 563 922 563 922 694 922 c 0,16,17 - 779 922 779 922 848 893 c 1,18,19 - 874 952 874 952 924.5 998.5 c 128,-1,20 - 975 1045 975 1045 1034.5 1071 c 128,-1,21 - 1094 1097 1094 1097 1153 1110.5 c 128,-1,22 - 1212 1124 1212 1124 1264 1124 c 0,23,24 - 1391 1124 1391 1124 1448 1032 c 1,25,-1 - 1305 971 l 1,26,27 - 1283 1022 1283 1022 1208 1022 c 0,28,29 - 1157 1022 1157 1022 1130 968.5 c 128,-1,30 - 1103 915 1103 915 1071 776 c 2,31,-1 - 930 160 l 2,32,33 - 905 51 905 51 883 -21 c 128,-1,34 - 861 -93 861 -93 829.5 -153.5 c 128,-1,35 - 798 -214 798 -214 762 -248.5 c 128,-1,36 - 726 -283 726 -283 672 -307 c 128,-1,37 - 618 -331 618 -331 552 -339.5 c 128,-1,38 - 486 -348 486 -348 393 -348 c 0,39,40 - 244 -348 244 -348 90 -256 c 1,41,-1 - 268 -150 l 1,42,43 - 333 -246 333 -246 446 -246 c 0,44,45 - 513 -246 513 -246 554.5 -193 c 128,-1,46 - 596 -140 596 -140 633 -8 c 1,47,48 - 578 -20 578 -20 518 -20 c 0,49,50 - 355 -20 355 -20 265.5 67 c 128,-1,51 - 176 154 176 154 176 307 c 0,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0272 -Encoding: 626 626 605 -Width: 1071 -VWidth: 0 -Flags: W -HStem: -348 102<-98 117> 0 43G<729 994> 819 102<226 400 616 855> -VStem: 150 70<770 809> 346 260<525 780> 872 246<427 804> -LayerCount: 2 -Fore -SplineSet -424 -68 m 2,0,1 - 407 -141 407 -141 357.5 -198 c 128,-1,2 - 308 -255 308 -255 243.5 -286 c 128,-1,3 - 179 -317 179 -317 115.5 -332.5 c 128,-1,4 - 52 -348 52 -348 -6 -348 c 0,5,6 - -136 -348 -136 -348 -193 -256 c 1,7,-1 - -49 -195 l 1,8,9 - -27 -246 -27 -246 47 -246 c 0,10,11 - 99 -246 99 -246 125.5 -193 c 128,-1,12 - 152 -140 152 -140 184 0 c 2,13,-1 - 328 625 l 1,14,15 - 346 692 346 692 346 745 c 0,16,17 - 346 819 346 819 295 819 c 0,18,19 - 241 819 241 819 219 770 c 1,20,-1 - 150 770 l 1,21,22 - 162 828 162 828 222.5 875 c 128,-1,23 - 283 922 283 922 348 922 c 0,24,25 - 494 922 494 922 561 858 c 1,26,27 - 675 922 675 922 770 922 c 0,28,29 - 1118 922 1118 922 1118 641 c 0,30,31 - 1118 571 1118 571 1098 492 c 1,32,-1 - 985 0 l 1,33,-1 - 729 0 l 1,34,-1 - 838 467 l 1,35,36 - 872 621 872 621 872 700 c 0,37,38 - 872 766 872 766 848 792.5 c 128,-1,39 - 824 819 824 819 776 819 c 0,40,41 - 685 819 685 819 604 768 c 1,42,43 - 606 762 606 762 606 745 c 0,44,45 - 606 718 606 718 600 688 c 2,46,-1 - 424 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0186 -Encoding: 390 390 606 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<441 765> 1352 102<750 1083> -VStem: 1190 252<717 1181> -AnchorPoint: "top" 971 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -152 209 m 1,0,-1 - 356 264 l 1,1,2 - 373 223 373 223 385 199.5 c 128,-1,3 - 397 176 397 176 416.5 150 c 128,-1,4 - 436 124 436 124 459 111.5 c 128,-1,5 - 482 99 482 99 516.5 90.5 c 128,-1,6 - 551 82 551 82 598 82 c 0,7,8 - 674 82 674 82 752.5 119 c 128,-1,9 - 831 156 831 156 907 229.5 c 128,-1,10 - 983 303 983 303 1047.5 429 c 128,-1,11 - 1112 555 1112 555 1149 717 c 1,12,13 - 1190 888 1190 888 1190 1028 c 0,14,15 - 1190 1352 1190 1352 930 1352 c 0,16,17 - 872 1352 872 1352 826 1340.5 c 128,-1,18 - 780 1329 780 1329 745 1306 c 128,-1,19 - 710 1283 710 1283 682.5 1257 c 128,-1,20 - 655 1231 655 1231 621 1195 c 0,21,22 - 611 1184 611 1184 606 1178 c 1,23,-1 - 395 1245 l 1,24,25 - 611 1454 611 1454 985 1454 c 0,26,27 - 1072 1454 1072 1454 1152 1423 c 128,-1,28 - 1232 1392 1232 1392 1297.5 1332 c 128,-1,29 - 1363 1272 1363 1272 1402.5 1171.5 c 128,-1,30 - 1442 1071 1442 1071 1442 944 c 0,31,32 - 1442 843 1442 843 1415 717 c 1,33,34 - 1386 593 1386 593 1332.5 485 c 128,-1,35 - 1279 377 1279 377 1211.5 298 c 128,-1,36 - 1144 219 1144 219 1066 157 c 128,-1,37 - 988 95 988 95 907 57 c 128,-1,38 - 826 19 826 19 750 -0.5 c 128,-1,39 - 674 -20 674 -20 606 -20 c 0,40,41 - 445 -20 445 -20 327 43 c 128,-1,42 - 209 106 209 106 152 209 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0254 -Encoding: 596 596 607 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<355 610> 819 102<565 774> -VStem: 809 242<394 755> -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1051 569 m 0,0,1 - 1051 463 1051 463 1008 358 c 128,-1,2 - 965 253 965 253 890.5 169 c 128,-1,3 - 816 85 816 85 704 32.5 c 128,-1,4 - 592 -20 592 -20 465 -20 c 0,5,6 - 344 -20 344 -20 258 28 c 128,-1,7 - 172 76 172 76 127 158 c 1,8,-1 - 322 205 l 1,9,10 - 325 196 325 196 332.5 175 c 128,-1,11 - 340 154 340 154 343.5 147 c 128,-1,12 - 347 140 347 140 354.5 125.5 c 128,-1,13 - 362 111 362 111 369.5 106 c 128,-1,14 - 377 101 377 101 389.5 93.5 c 128,-1,15 - 402 86 402 86 418.5 84 c 128,-1,16 - 435 82 435 82 457 82 c 0,17,18 - 528 82 528 82 582 107 c 128,-1,19 - 636 132 636 132 673 183 c 128,-1,20 - 710 234 710 234 735 297.5 c 128,-1,21 - 760 361 760 361 780 451 c 0,22,23 - 809 577 809 577 809 651 c 0,24,25 - 809 819 809 819 668 819 c 0,26,27 - 640 819 640 819 618 811 c 128,-1,28 - 596 803 596 803 582 793 c 128,-1,29 - 568 783 568 783 552 758.5 c 128,-1,30 - 536 734 536 734 528 718.5 c 128,-1,31 - 520 703 520 703 502.5 665.5 c 128,-1,32 - 485 628 485 628 475 608 c 1,33,-1 - 285 676 l 1,34,35 - 363 787 363 787 476 854.5 c 128,-1,36 - 589 922 589 922 723 922 c 0,37,38 - 858 922 858 922 954.5 824.5 c 128,-1,39 - 1051 727 1051 727 1051 569 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0190 -Encoding: 400 400 608 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -20 102<502 740> 799 102<734 881> 1352 102<770 1012> -VStem: 174 266<176 532> 397 268<966 1222> -AnchorPoint: "top" 885 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -840 799 m 2,0,1 - 737 799 737 799 643.5 731.5 c 128,-1,2 - 550 664 550 664 495 558 c 128,-1,3 - 440 452 440 452 440 342 c 0,4,5 - 440 276 440 276 453.5 220 c 128,-1,6 - 467 164 467 164 502 123 c 128,-1,7 - 537 82 537 82 588 82 c 0,8,9 - 688 82 688 82 752.5 133.5 c 128,-1,10 - 817 185 817 185 866 295 c 1,11,-1 - 1042 244 l 1,12,13 - 880 -20 880 -20 586 -20 c 0,14,15 - 476 -20 476 -20 393 15.5 c 128,-1,16 - 310 51 310 51 264 108.5 c 128,-1,17 - 218 166 218 166 196 229.5 c 128,-1,18 - 174 293 174 293 174 360 c 0,19,20 - 174 498 174 498 279 641 c 128,-1,21 - 384 784 384 784 541 850 c 1,22,23 - 397 918 397 918 397 1065 c 0,24,25 - 397 1174 397 1174 467 1264 c 128,-1,26 - 537 1354 537 1354 654 1404 c 128,-1,27 - 771 1454 771 1454 907 1454 c 0,28,29 - 1018 1454 1018 1454 1106.5 1398.5 c 128,-1,30 - 1195 1343 1195 1343 1227 1239 c 1,31,-1 - 1053 1194 l 1,32,33 - 1048 1273 1048 1273 1009 1312.5 c 128,-1,34 - 970 1352 970 1352 864 1352 c 0,35,36 - 796 1352 796 1352 731 1265.5 c 128,-1,37 - 666 1179 666 1179 666 1083 c 0,38,39 - 666 1048 666 1048 677.5 1018 c 128,-1,40 - 689 988 689 988 714.5 960.5 c 128,-1,41 - 740 933 740 933 789 917 c 128,-1,42 - 838 901 838 901 905 901 c 1,43,-1 - 881 799 l 1,44,-1 - 840 799 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni025B -Encoding: 603 603 609 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<380 603> 451 102<538 682> 819 102<559 750> -VStem: 113 254<93 347> 268 254<570 786> -AnchorPoint: "top" 674 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -629 819 m 0,0,1 - 599 819 599 819 576.5 798 c 128,-1,2 - 554 777 554 777 543 747 c 128,-1,3 - 532 717 532 717 527 692.5 c 128,-1,4 - 522 668 522 668 522 653 c 0,5,6 - 522 608 522 608 552 580.5 c 128,-1,7 - 582 553 582 553 647 553 c 2,8,-1 - 705 553 l 1,9,-1 - 682 451 l 1,10,-1 - 610 451 l 2,11,12 - 513 451 513 451 456.5 403.5 c 128,-1,13 - 400 356 400 356 377 256 c 1,14,15 - 367 204 367 204 367 178 c 0,16,17 - 367 125 367 125 391 103.5 c 128,-1,18 - 415 82 415 82 459 82 c 0,19,20 - 534 82 534 82 600.5 122 c 128,-1,21 - 667 162 667 162 707 221 c 1,22,-1 - 852 178 l 1,23,24 - 792 100 792 100 687 40 c 128,-1,25 - 582 -20 582 -20 461 -20 c 0,26,27 - 113 -20 113 -20 113 190 c 0,28,29 - 113 286 113 286 176 375 c 128,-1,30 - 239 464 239 464 367 512 c 1,31,32 - 268 571 268 571 268 664 c 0,33,34 - 268 686 268 686 275 710.5 c 128,-1,35 - 282 735 282 735 297.5 765.5 c 128,-1,36 - 313 796 313 796 344 822.5 c 128,-1,37 - 375 849 375 849 418 872 c 128,-1,38 - 461 895 461 895 528.5 908.5 c 128,-1,39 - 596 922 596 922 678 922 c 0,40,41 - 805 922 805 922 868.5 868 c 128,-1,42 - 932 814 932 814 942 735 c 1,43,-1 - 766 696 l 1,44,45 - 766 698 766 698 767 703.5 c 128,-1,46 - 768 709 768 709 768 711 c 0,47,48 - 768 762 768 762 738 790.5 c 128,-1,49 - 708 819 708 819 629 819 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0189 -Encoding: 393 393 610 -Width: 1216 -VWidth: 0 -Flags: W -HStem: 0 102<383 690> 692 102<203 252 543 791> 1331 102<666 966> -VStem: 1065 264<718 1227> -LayerCount: 2 -Fore -Refer: 173 208 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0256 -Encoding: 598 598 611 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -350 102<916 1079> -20 102<451 668> 819 102<601 801> -VStem: 178 242<130 505> 666 248<-246 0> -LayerCount: 2 -Fore -SplineSet -178 317 m 0,0,1 - 178 399 178 399 202.5 485 c 128,-1,2 - 227 571 227 571 275.5 648.5 c 128,-1,3 - 324 726 324 726 388 787.5 c 128,-1,4 - 452 849 452 849 538 885.5 c 128,-1,5 - 624 922 624 922 717 922 c 0,6,7 - 817 922 817 922 893 883 c 1,8,-1 - 999 1352 l 1,9,-1 - 1255 1352 l 1,10,-1 - 944 -2 l 2,11,12 - 913 -140 913 -140 913 -182 c 0,13,14 - 913 -216 913 -216 925.5 -232 c 128,-1,15 - 938 -248 938 -248 967 -248 c 0,16,17 - 1038 -248 1038 -248 1087 -197 c 1,18,-1 - 1202 -258 l 1,19,20 - 1103 -350 1103 -350 975 -350 c 0,21,22 - 935 -350 935 -350 893.5 -342.5 c 128,-1,23 - 852 -335 852 -335 810.5 -318 c 128,-1,24 - 769 -301 769 -301 737.5 -276 c 128,-1,25 - 706 -251 706 -251 686 -212.5 c 128,-1,26 - 666 -174 666 -174 666 -127 c 0,27,28 - 666 -100 666 -100 672 -70 c 2,29,-1 - 688 4 l 1,30,31 - 600 -20 600 -20 500 -20 c 0,32,33 - 346 -20 346 -20 262 73 c 128,-1,34 - 178 166 178 166 178 317 c 0,0,1 -780 401 m 0,35,36 - 821 585 821 585 821 670 c 0,37,38 - 821 819 821 819 723 819 c 0,39,40 - 681 819 681 819 645.5 804.5 c 128,-1,41 - 610 790 610 790 584 761.5 c 128,-1,42 - 558 733 558 733 537.5 701.5 c 128,-1,43 - 517 670 517 670 500.5 623 c 128,-1,44 - 484 576 484 576 473.5 539.5 c 128,-1,45 - 463 503 463 503 451 451 c 0,46,47 - 420 312 420 312 420 242 c 0,48,49 - 420 82 420 82 553 82 c 0,50,51 - 594 82 594 82 626.5 97.5 c 128,-1,52 - 659 113 659 113 680.5 137.5 c 128,-1,53 - 702 162 702 162 721 206.5 c 128,-1,54 - 740 251 740 251 752.5 293 c 128,-1,55 - 765 335 765 335 780 401 c 0,35,36 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0191 -Encoding: 401 401 612 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -348 102<-108 107> 799 102<649 1001> 1331 102<748 1309> -LayerCount: 2 -Fore -SplineSet -424 -68 m 6,0,1 - 407 -140 407 -140 356 -196.5 c 128,-1,2 - 305 -253 305 -253 239 -284.5 c 128,-1,3 - 173 -316 173 -316 107.5 -332 c 128,-1,4 - 42 -348 42 -348 -16 -348 c 0,5,6 - -146 -348 -146 -348 -203 -256 c 1,7,-1 - -59 -195 l 1,8,9 - -37 -246 -37 -246 37 -246 c 0,10,11 - 89 -246 89 -246 115.5 -193 c 128,-1,12 - 142 -140 142 -140 174 0 c 2,13,-1 - 506 1434 l 1,14,-1 - 1333 1434 l 1,15,-1 - 1309 1331 l 1,16,-1 - 748 1331 l 1,17,-1 - 649 901 l 1,18,-1 - 1026 901 l 1,19,-1 - 1001 799 l 1,20,-1 - 625 799 l 1,21,-1 - 424 -68 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: florin -Encoding: 402 402 613 -Width: 589 -VWidth: 0 -Flags: W -HStem: -348 102<-131 84> 799 102<270 336 616 737> 1270 102<709 864> -LayerCount: 2 -Fore -SplineSet -391 -68 m 6,0,1 - 374 -140 374 -140 324.5 -196.5 c 128,-1,2 - 275 -253 275 -253 211 -284.5 c 128,-1,3 - 147 -316 147 -316 82.5 -332 c 128,-1,4 - 18 -348 18 -348 -39 -348 c 0,5,6 - -168 -348 -168 -348 -225 -256 c 1,7,-1 - -82 -195 l 1,8,9 - -60 -246 -60 -246 14 -246 c 0,10,11 - 66 -246 66 -246 93 -192.5 c 128,-1,12 - 120 -139 120 -139 152 0 c 2,13,-1 - 336 799 l 1,14,-1 - 215 799 l 1,15,-1 - 270 901 l 1,16,-1 - 360 901 l 1,17,-1 - 406 1096 l 1,18,19 - 433 1217 433 1217 538.5 1294.5 c 128,-1,20 - 644 1372 644 1372 770 1372 c 0,21,22 - 854 1372 854 1372 909 1350 c 1,23,-1 - 842 1239 l 1,24,25 - 823 1270 823 1270 776 1270 c 0,26,27 - 733 1270 733 1270 706 1223 c 128,-1,28 - 679 1176 679 1176 649 1042 c 1,29,-1 - 616 901 l 1,30,-1 - 762 901 l 1,31,-1 - 737 799 l 1,32,-1 - 592 799 l 1,33,-1 - 391 -68 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0194 -Encoding: 404 404 614 -Width: 1153 -VWidth: 0 -Flags: W -HStem: -418 102<410 543> 1393 41G<356 616 1187 1466> -VStem: 258 229<-315 -114> 575 238<-279 -38> -LayerCount: 2 -Fore -SplineSet -506 -315 m 0,0,1 - 534 -315 534 -315 554.5 -247 c 128,-1,2 - 575 -179 575 -179 575 -121 c 0,3,4 - 575 -97 575 -97 571 -35 c 1,5,6 - 545 -85 545 -85 533 -108.5 c 128,-1,7 - 521 -132 521 -132 504 -186.5 c 128,-1,8 - 487 -241 487 -241 487 -285 c 0,9,10 - 487 -315 487 -315 506 -315 c 0,0,1 -813 -94 m 0,11,12 - 813 -169 813 -169 793 -227 c 128,-1,13 - 773 -285 773 -285 740.5 -320.5 c 128,-1,14 - 708 -356 708 -356 663.5 -378.5 c 128,-1,15 - 619 -401 619 -401 575 -409.5 c 128,-1,16 - 531 -418 531 -418 483 -418 c 0,17,18 - 373 -418 373 -418 315.5 -375 c 128,-1,19 - 258 -332 258 -332 258 -250 c 0,20,21 - 258 -176 258 -176 302.5 -79 c 128,-1,22 - 347 18 347 18 459 197 c 2,23,-1 - 528 307 l 1,24,-1 - 356 1434 l 1,25,-1 - 610 1434 l 1,26,-1 - 727 637 l 1,27,-1 - 1212 1434 l 1,28,-1 - 1466 1434 l 1,29,-1 - 774 311 l 1,30,-1 - 791 197 l 1,31,32 - 813 15 813 15 813 -94 c 0,11,12 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0263 -Encoding: 611 611 615 -Width: 874 -VWidth: 0 -Flags: W -HStem: -418 102<272 404> 860 41G<227 477 802 1071> -VStem: 129 219<-315 -113> 438 229<-274 -25> -LayerCount: 2 -Fore -SplineSet -367 -315 m 0,0,1 - 397 -315 397 -315 417.5 -240 c 128,-1,2 - 438 -165 438 -165 438 -92 c 0,3,4 - 438 -73 438 -73 434 -23 c 1,5,-1 - 424 -44 l 2,6,7 - 414 -66 414 -66 411 -71 c 128,-1,8 - 408 -76 408 -76 398 -97 c 128,-1,9 - 388 -118 388 -118 385 -127.5 c 128,-1,10 - 382 -137 382 -137 374 -156.5 c 128,-1,11 - 366 -176 366 -176 363 -189 c 128,-1,12 - 360 -202 360 -202 355.5 -219.5 c 128,-1,13 - 351 -237 351 -237 349.5 -253 c 128,-1,14 - 348 -269 348 -269 348 -285 c 0,15,16 - 348 -315 348 -315 367 -315 c 0,0,1 -668 -45 m 0,17,18 - 668 -126 668 -126 653.5 -189 c 128,-1,19 - 639 -252 639 -252 604 -306 c 128,-1,20 - 569 -360 569 -360 503.5 -389 c 128,-1,21 - 438 -418 438 -418 344 -418 c 0,22,23 - 129 -418 129 -418 129 -256 c 0,24,25 - 129 -174 129 -174 192.5 -41.5 c 128,-1,26 - 256 91 256 91 330 197 c 2,27,-1 - 381 270 l 1,28,-1 - 227 901 l 1,29,-1 - 467 901 l 1,30,-1 - 561 522 l 1,31,-1 - 831 901 l 1,32,-1 - 1071 901 l 1,33,-1 - 623 272 l 1,34,-1 - 641 197 l 1,35,36 - 668 95 668 95 668 -45 c 0,17,18 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B2 -Encoding: 434 434 616 -Width: 1587 -VWidth: 0 -Flags: W -HStem: -20 102<635 961> 1393 41G<478 754 1251 1563> -VStem: 270 262<200 666> 1354 272<656 1265> -LayerCount: 2 -Fore -SplineSet -1251 1434 m 1,0,-1 - 1538 1434 l 1,1,2 - 1569 1345 1569 1345 1584 1297 c 128,-1,3 - 1599 1249 1599 1249 1612.5 1171.5 c 128,-1,4 - 1626 1094 1626 1094 1626 1014 c 0,5,6 - 1626 845 1626 845 1569 598 c 0,7,8 - 1544 487 1544 487 1479 386.5 c 128,-1,9 - 1414 286 1414 286 1329.5 213.5 c 128,-1,10 - 1245 141 1245 141 1148 87 c 128,-1,11 - 1051 33 1051 33 957.5 6.5 c 128,-1,12 - 864 -20 864 -20 784 -20 c 0,13,14 - 738 -20 738 -20 696.5 -16.5 c 128,-1,15 - 655 -13 655 -13 601.5 -2 c 128,-1,16 - 548 9 548 9 503.5 27 c 128,-1,17 - 459 45 459 45 414.5 77.5 c 128,-1,18 - 370 110 370 110 339 153.5 c 128,-1,19 - 308 197 308 197 289 262 c 128,-1,20 - 270 327 270 327 270 406 c 0,21,22 - 270 494 270 494 297 614 c 2,23,-1 - 487 1434 l 1,24,-1 - 754 1434 l 1,25,-1 - 563 614 l 2,26,27 - 532 485 532 485 532 377 c 0,28,29 - 532 298 532 298 552 240.5 c 128,-1,30 - 572 183 572 183 599.5 153.5 c 128,-1,31 - 627 124 627 124 670 107 c 128,-1,32 - 713 90 713 90 745 86 c 128,-1,33 - 777 82 777 82 819 82 c 0,34,35 - 916 82 916 82 1019.5 159 c 128,-1,36 - 1123 236 1123 236 1199 355 c 128,-1,37 - 1275 474 1275 474 1303 598 c 0,38,39 - 1354 819 1354 819 1354 981 c 0,40,41 - 1354 1027 1354 1027 1349 1073 c 128,-1,42 - 1344 1119 1344 1119 1339.5 1148 c 128,-1,43 - 1335 1177 1335 1177 1320.5 1227 c 128,-1,44 - 1306 1277 1306 1277 1301 1292 c 128,-1,45 - 1296 1307 1296 1307 1275 1366 c 128,-1,46 - 1254 1425 1254 1425 1251 1434 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni028B -Encoding: 651 651 617 -Width: 1169 -VWidth: 0 -Flags: W -HStem: -20 102<512 742> 872 29G<343 608 803 890> -VStem: 221 252<117 508> 909 254<343 721> -LayerCount: 2 -Fore -SplineSet -641 82 m 0,0,1 - 700 82 700 82 753 135.5 c 128,-1,2 - 806 189 806 189 838.5 266.5 c 128,-1,3 - 871 344 871 344 890 425 c 128,-1,4 - 909 506 909 506 909 567 c 0,5,6 - 909 746 909 746 760 793 c 1,7,-1 - 825 913 l 1,8,9 - 872 901 872 901 910.5 887 c 128,-1,10 - 949 873 949 873 999 844.5 c 128,-1,11 - 1049 816 1049 816 1082.5 780 c 128,-1,12 - 1116 744 1116 744 1139.5 686 c 128,-1,13 - 1163 628 1163 628 1163 557 c 0,14,15 - 1163 483 1163 483 1142 405 c 128,-1,16 - 1121 327 1121 327 1075 250.5 c 128,-1,17 - 1029 174 1029 174 963.5 114 c 128,-1,18 - 898 54 898 54 800.5 17 c 128,-1,19 - 703 -20 703 -20 588 -20 c 0,20,21 - 221 -20 221 -20 221 272 c 0,22,23 - 221 338 221 338 238 410 c 2,24,-1 - 352 901 l 1,25,-1 - 608 901 l 1,26,-1 - 500 434 l 2,27,28 - 473 320 473 320 473 250 c 0,29,30 - 473 157 473 157 515 119.5 c 128,-1,31 - 557 82 557 82 641 82 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01E8 -Encoding: 488 488 618 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 905 1151> 1384 387 1393 41<414 690 1177 1458> -VStem: 695 479 -LayerCount: 2 -Fore -Refer: 38 75 N 1 0 0 1 0 0 3 -Refer: 375 711 S 1 0 0 1 294 246 2 -Validated: 1 -EndChar - -StartChar: uni01E9 -Encoding: 489 489 619 -Width: 978 -VWidth: 0 -Flags: W -HStem: 0 43<143 409 659 909> 860 41<796 1081> 1270 102<289 504> 1309 387 -VStem: 213 70<1221 1259> 410 260<987 1268> 622 479 -LayerCount: 2 -Fore -Refer: 25 107 N 1 0 0 1 0 0 3 -Refer: 375 711 S 1 0 0 1 221 170 2 -Validated: 1 -EndChar - -StartChar: uni01B7 -Encoding: 439 439 620 -Width: 1173 -VWidth: 0 -Flags: W -HStem: -20 102<408 697> 1331 102<541 1016> -VStem: 133 213<140 326> 926 264<339 713> -AnchorPoint: "top" 895 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -557 82 m 0,0,1 - 618 82 618 82 682.5 116.5 c 128,-1,2 - 747 151 747 151 801.5 210.5 c 128,-1,3 - 856 270 856 270 891 361.5 c 128,-1,4 - 926 453 926 453 926 557 c 0,5,6 - 926 782 926 782 721 782 c 2,7,-1 - 561 782 l 1,8,-1 - 1016 1331 l 1,9,-1 - 516 1331 l 1,10,-1 - 541 1434 l 1,11,-1 - 1376 1434 l 1,12,-1 - 924 885 l 1,13,14 - 1029 885 1029 885 1109.5 791.5 c 128,-1,15 - 1190 698 1190 698 1190 545 c 0,16,17 - 1190 293 1190 293 1014 136.5 c 128,-1,18 - 838 -20 838 -20 565 -20 c 0,19,20 - 358 -20 358 -20 245.5 63 c 128,-1,21 - 133 146 133 146 133 285 c 0,22,23 - 133 298 133 298 137 326 c 1,24,-1 - 348 340 l 1,25,26 - 346 320 346 320 346 283 c 0,27,28 - 346 82 346 82 557 82 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0292 -Encoding: 658 658 621 -Width: 1042 -VWidth: 0 -Flags: W -HStem: -410 102<233 541> 799 102<350 784> -VStem: 713 254<-110 218> -AnchorPoint: "top" 723 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -379 -307 m 0,0,1 - 455 -307 455 -307 516 -277.5 c 128,-1,2 - 577 -248 577 -248 613 -204 c 128,-1,3 - 649 -160 649 -160 672.5 -104 c 128,-1,4 - 696 -48 696 -48 704.5 0.5 c 128,-1,5 - 713 49 713 49 713 92 c 0,6,7 - 713 177 713 177 662.5 223.5 c 128,-1,8 - 612 270 612 270 492 270 c 2,9,-1 - 375 270 l 1,10,-1 - 784 799 l 1,11,-1 - 295 799 l 1,12,-1 - 350 901 l 1,13,-1 - 1145 901 l 1,14,-1 - 696 373 l 1,15,16 - 806 373 806 373 886.5 301 c 128,-1,17 - 967 229 967 229 967 88 c 0,18,19 - 967 -12 967 -12 932 -96 c 128,-1,20 - 897 -180 897 -180 839 -237 c 128,-1,21 - 781 -294 781 -294 705 -334 c 128,-1,22 - 629 -374 629 -374 548.5 -392 c 128,-1,23 - 468 -410 468 -410 387 -410 c 0,24,25 - 284 -410 284 -410 209.5 -393.5 c 128,-1,26 - 135 -377 135 -377 91 -346 c 128,-1,27 - 47 -315 47 -315 23.5 -279.5 c 128,-1,28 - 0 -244 0 -244 -12 -197 c 1,29,-1 - 178 -147 l 1,30,31 - 191 -228 191 -228 235.5 -267.5 c 128,-1,32 - 280 -307 280 -307 379 -307 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01EE -Encoding: 494 494 622 -Width: 1030 -VWidth: 0 -Flags: W -HStem: -20 102<408 697> 1331 102<541 1016> 1384 387 -VStem: 133 213<140 326> 752 479 926 264<339 713> -LayerCount: 2 -Fore -SplineSet -557 82 m 0,0,1 - 618 82 618 82 682.5 116.5 c 128,-1,2 - 747 151 747 151 801.5 210.5 c 128,-1,3 - 856 270 856 270 891 361.5 c 128,-1,4 - 926 453 926 453 926 557 c 0,5,6 - 926 782 926 782 721 782 c 2,7,-1 - 561 782 l 1,8,-1 - 1016 1331 l 1,9,-1 - 516 1331 l 1,10,-1 - 541 1434 l 1,11,-1 - 890 1434 l 1,12,-1 - 752 1718 l 1,13,-1 - 827 1772 l 1,14,-1 - 963 1591 l 1,15,-1 - 1180 1772 l 1,16,-1 - 1231 1718 l 1,17,-1 - 960 1434 l 1,18,-1 - 1376 1434 l 1,19,-1 - 924 885 l 1,20,21 - 1029 885 1029 885 1109.5 791.5 c 128,-1,22 - 1190 698 1190 698 1190 545 c 0,23,24 - 1190 293 1190 293 1014 136.5 c 128,-1,25 - 838 -20 838 -20 565 -20 c 0,26,27 - 358 -20 358 -20 245.5 63 c 128,-1,28 - 133 146 133 146 133 285 c 0,29,30 - 133 298 133 298 137 326 c 1,31,-1 - 348 340 l 1,32,33 - 346 320 346 320 346 283 c 0,34,35 - 346 82 346 82 557 82 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01EF -Encoding: 495 495 623 -Width: 940 -VWidth: 0 -Flags: W -HStem: -410 102<233 541> 799 102<350 784> 954 387 -VStem: 592 479 713 254<-110 218> -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1079 -184 2 -Refer: 621 658 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni01E4 -Encoding: 484 484 624 -Width: 1396 -VWidth: 0 -Flags: W -HStem: -20 102<601 956> 451 102<1006 1466> 717 102<969 1118> 1331 102<832 1172> -VStem: 201 260<280 770> 981 510 -LayerCount: 2 -Fore -SplineSet -969 819 m 1,0,-1 - 1397 819 l 1,1,-1 - 1336 553 l 1,2,-1 - 1454 553 l 1,3,-1 - 1430 451 l 1,4,-1 - 1313 451 l 1,5,-1 - 1257 209 l 1,6,7 - 1153 106 1153 106 1005 43 c 128,-1,8 - 857 -20 857 -20 696 -20 c 0,9,10 - 626 -20 626 -20 557 -0.5 c 128,-1,11 - 488 19 488 19 423.5 61.5 c 128,-1,12 - 359 104 359 104 310 164.5 c 128,-1,13 - 261 225 261 225 231 314.5 c 128,-1,14 - 201 404 201 404 201 510 c 0,15,16 - 201 617 201 617 228 728 c 128,-1,17 - 255 839 255 839 304 941 c 128,-1,18 - 353 1043 353 1043 425.5 1133 c 128,-1,19 - 498 1223 498 1223 584 1290 c 128,-1,20 - 670 1357 670 1357 776 1395.5 c 128,-1,21 - 882 1434 882 1434 993 1434 c 0,22,23 - 1382 1434 1382 1434 1489 1245 c 1,24,-1 - 1249 1178 l 1,25,26 - 1229 1221 1229 1221 1214.5 1243.5 c 128,-1,27 - 1200 1266 1200 1266 1172.5 1289.5 c 128,-1,28 - 1145 1313 1145 1313 1103.5 1322 c 128,-1,29 - 1062 1331 1062 1331 999 1331 c 0,30,31 - 911 1331 911 1331 834.5 1292.5 c 128,-1,32 - 758 1254 758 1254 704 1192 c 128,-1,33 - 650 1130 650 1130 607 1048 c 128,-1,34 - 564 966 564 966 537.5 883 c 128,-1,35 - 511 800 511 800 493 716.5 c 128,-1,36 - 475 633 475 633 468 571 c 128,-1,37 - 461 509 461 509 461 465 c 0,38,39 - 461 275 461 275 543 178.5 c 128,-1,40 - 625 82 625 82 750 82 c 0,41,42 - 874 82 874 82 983 135 c 1,43,-1 - 1056 451 l 1,44,-1 - 944 451 l 1,45,-1 - 969 553 l 1,46,-1 - 1080 553 l 1,47,-1 - 1118 717 l 1,48,-1 - 946 717 l 1,49,-1 - 969 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01E5 -Encoding: 485 485 625 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 491> -135 102<401 535 829 991> 98 102<436 623> 819 102<552 784 1063 1186> -VStem: 166 238<231 606> 1186 72<770 815> -LayerCount: 2 -Fore -SplineSet -649 213 m 1,0,-1 - 768 688 l 2,1,2 - 777 723 777 723 795 762 c 1,3,4 - 753 819 753 819 672 819 c 0,5,6 - 604 819 604 819 551.5 775 c 128,-1,7 - 499 731 499 731 472 671.5 c 128,-1,8 - 445 612 445 612 428.5 539 c 128,-1,9 - 412 466 412 466 407.5 421 c 128,-1,10 - 403 376 403 376 403 348 c 0,11,12 - 403 274 403 274 439 237.5 c 128,-1,13 - 475 201 475 201 561 201 c 0,14,15 - 606 201 606 201 649 213 c 1,0,-1 -166 389 m 0,16,17 - 166 504 166 504 206.5 604.5 c 128,-1,18 - 247 705 247 705 315 774 c 128,-1,19 - 383 843 383 843 474 882.5 c 128,-1,20 - 565 922 565 922 666 922 c 0,21,22 - 796 922 796 922 881 856 c 1,23,24 - 973 922 973 922 1126 922 c 0,25,26 - 1183 922 1183 922 1220 885 c 128,-1,27 - 1257 848 1257 848 1257 797 c 0,28,29 - 1257 778 1257 778 1255 770 c 1,30,-1 - 1186 770 l 1,31,32 - 1186 819 1186 819 1130 819 c 0,33,34 - 1106 819 1106 819 1087 804.5 c 128,-1,35 - 1068 790 1068 790 1053.5 760.5 c 128,-1,36 - 1039 731 1039 731 1029.5 701 c 128,-1,37 - 1020 671 1020 671 1008 625 c 2,38,-1 - 920 279 l 1,39,40 - 868 64 868 64 829 -33 c 1,41,-1 - 1016 -33 l 1,42,-1 - 991 -135 l 1,43,-1 - 778 -135 l 1,44,45 - 713 -244 713 -244 615.5 -296 c 128,-1,46 - 518 -348 518 -348 365 -348 c 0,47,48 - 219 -348 219 -348 61 -256 c 1,49,-1 - 188 -150 l 1,50,51 - 304 -246 304 -246 418 -246 c 0,52,53 - 480 -246 480 -246 535 -135 c 1,54,-1 - 377 -135 l 1,55,-1 - 401 -33 l 1,56,-1 - 578 -33 l 1,57,58 - 598 22 598 22 623 111 c 1,59,60 - 563 98 563 98 508 98 c 0,61,62 - 166 98 166 98 166 389 c 0,16,17 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0187 -Encoding: 391 391 626 -Width: 1468 -VWidth: 0 -Flags: W -HStem: -20 102<642 969> 1352 102<879 1213> 1366 102<1567 1784> -VStem: 242 260<280 765> -LayerCount: 2 -Fore -SplineSet -1044 1352 m 0,0,1 - 966 1352 966 1352 897 1321 c 128,-1,2 - 828 1290 828 1290 777 1237.5 c 128,-1,3 - 726 1185 726 1185 683 1117.5 c 128,-1,4 - 640 1050 640 1050 611 973.5 c 128,-1,5 - 582 897 582 897 560 822.5 c 128,-1,6 - 538 748 538 748 526 677 c 128,-1,7 - 514 606 514 606 508 553.5 c 128,-1,8 - 502 501 502 501 502 465 c 0,9,10 - 502 275 502 275 584 178.5 c 128,-1,11 - 666 82 666 82 791 82 c 0,12,13 - 849 82 849 82 893 93 c 128,-1,14 - 937 104 937 104 976.5 130.5 c 128,-1,15 - 1016 157 1016 157 1045 185 c 128,-1,16 - 1074 213 1074 213 1118 264 c 1,17,-1 - 1298 209 l 1,18,19 - 1194 106 1194 106 1046 43 c 128,-1,20 - 898 -20 898 -20 737 -20 c 0,21,22 - 667 -20 667 -20 598 -0.5 c 128,-1,23 - 529 19 529 19 464.5 61.5 c 128,-1,24 - 400 104 400 104 351 164.5 c 128,-1,25 - 302 225 302 225 272 314.5 c 128,-1,26 - 242 404 242 404 242 510 c 0,27,28 - 242 594 242 594 268 717 c 1,29,30 - 302 865 302 865 368 989.5 c 128,-1,31 - 434 1114 434 1114 513.5 1198 c 128,-1,32 - 593 1282 593 1282 685.5 1341 c 128,-1,33 - 778 1400 778 1400 866.5 1427 c 128,-1,34 - 955 1454 955 1454 1038 1454 c 0,35,36 - 1287 1454 1287 1454 1407 1382 c 1,37,38 - 1524 1468 1524 1468 1694 1468 c 0,39,40 - 1821 1468 1821 1468 1878 1376 c 1,41,-1 - 1735 1315 l 1,42,43 - 1713 1366 1713 1366 1638 1366 c 0,44,45 - 1586 1366 1586 1366 1559.5 1313 c 128,-1,46 - 1533 1260 1533 1260 1501 1120 c 1,47,-1 - 1262 1053 l 1,48,49 - 1274 1102 1274 1102 1274 1159 c 0,50,51 - 1274 1352 1274 1352 1044 1352 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0188 -Encoding: 392 392 627 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<467 723> 819 102<604 815> 922 102<1114 1331> -VStem: 178 246<142 518> 829 219<676 804> -LayerCount: 2 -Fore -SplineSet -178 324 m 0,0,1 - 178 443 178 443 228 555 c 128,-1,2 - 278 667 278 667 356 746.5 c 128,-1,3 - 434 826 434 826 532.5 874 c 128,-1,4 - 631 922 631 922 725 922 c 0,5,6 - 824 922 824 922 889 887 c 1,7,8 - 956 954 956 954 1054.5 989 c 128,-1,9 - 1153 1024 1153 1024 1239 1024 c 0,10,11 - 1368 1024 1368 1024 1425 932 c 1,12,-1 - 1282 870 l 1,13,14 - 1259 922 1259 922 1186 922 c 0,15,16 - 1135 922 1135 922 1108 868.5 c 128,-1,17 - 1081 815 1081 815 1049 676 c 1,18,-1 - 829 608 l 1,19,20 - 828 626 828 626 828 657.5 c 128,-1,21 - 828 689 828 689 827.5 704 c 128,-1,22 - 827 719 827 719 824.5 742 c 128,-1,23 - 822 765 822 765 816 775.5 c 128,-1,24 - 810 786 810 786 799.5 798 c 128,-1,25 - 789 810 789 810 772 814.5 c 128,-1,26 - 755 819 755 819 731 819 c 0,27,28 - 622 819 622 819 557 726 c 128,-1,29 - 492 633 492 633 451 451 c 0,30,31 - 424 330 424 330 424 262 c 0,32,33 - 424 173 424 173 465 127.5 c 128,-1,34 - 506 82 506 82 602 82 c 0,35,36 - 627 82 627 82 648.5 87 c 128,-1,37 - 670 92 670 92 683 96 c 128,-1,38 - 696 100 696 100 714 116 c 128,-1,39 - 732 132 732 132 738 138.5 c 128,-1,40 - 744 145 744 145 765.5 170.5 c 128,-1,41 - 787 196 787 196 795 205 c 1,42,-1 - 969 158 l 1,43,44 - 885 76 885 76 777.5 28 c 128,-1,45 - 670 -20 670 -20 549 -20 c 0,46,47 - 379 -20 379 -20 278.5 72.5 c 128,-1,48 - 178 165 178 165 178 324 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0196 -Encoding: 406 406 628 -Width: 722 -VWidth: 0 -Flags: W -HStem: -20 102<475 605> 1393 41G<494 760> -VStem: 223 248<84 375> -LayerCount: 2 -Fore -SplineSet -504 1434 m 25,0,-1 - 760 1434 l 1,1,-1 - 504 328 l 1,2,3 - 471 178 471 178 471 143 c 0,4,5 - 471 82 471 82 522 82 c 0,6,7 - 550 82 550 82 565.5 91.5 c 128,-1,8 - 581 101 581 101 612 133 c 1,9,-1 - 727 72 l 1,10,11 - 678 27 678 27 614.5 3.5 c 128,-1,12 - 551 -20 551 -20 489 -20 c 0,13,14 - 421 -20 421 -20 363 0.5 c 128,-1,15 - 305 21 305 21 264 71 c 128,-1,16 - 223 121 223 121 223 193 c 0,17,18 - 223 227 223 227 231 260 c 2,19,-1 - 504 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0197 -Encoding: 407 407 629 -Width: 595 -VWidth: 0 -Flags: W -HStem: 0 43G<172 437> 799 102<256 356 637 737> 1393 41G<494 760> -VStem: 172 588 -LayerCount: 2 -Fore -SplineSet -231 799 m 1,0,-1 - 256 901 l 1,1,-1 - 381 901 l 1,2,-1 - 504 1434 l 1,3,-1 - 760 1434 l 1,4,-1 - 637 901 l 1,5,-1 - 762 901 l 1,6,-1 - 737 799 l 1,7,-1 - 612 799 l 1,8,-1 - 428 0 l 1,9,-1 - 172 0 l 1,10,-1 - 356 799 l 1,11,-1 - 231 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019F -Encoding: 415 415 630 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<613 888> 666 102<547 1225> 1352 102<872 1162> -VStem: 240 258<251 662> 1276 256<772 1178> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -SplineSet -700 -20 m 0,0,1 - 612 -20 612 -20 532 11 c 128,-1,2 - 452 42 452 42 385.5 102 c 128,-1,3 - 319 162 319 162 279.5 262 c 128,-1,4 - 240 362 240 362 240 489 c 0,5,6 - 240 586 240 586 268 717 c 1,7,8 - 302 865 302 865 365.5 989.5 c 128,-1,9 - 429 1114 429 1114 506 1198.5 c 128,-1,10 - 583 1283 583 1283 672.5 1341.5 c 128,-1,11 - 762 1400 762 1400 850 1427 c 128,-1,12 - 938 1454 938 1454 1022 1454 c 0,13,14 - 1129 1454 1129 1454 1220 1423.5 c 128,-1,15 - 1311 1393 1311 1393 1381.5 1333 c 128,-1,16 - 1452 1273 1452 1273 1492 1174 c 128,-1,17 - 1532 1075 1532 1075 1532 948 c 0,18,19 - 1532 839 1532 839 1503 717 c 0,20,21 - 1460 531 1460 531 1375.5 387 c 128,-1,22 - 1291 243 1291 243 1182 155.5 c 128,-1,23 - 1073 68 1073 68 951 24 c 128,-1,24 - 829 -20 829 -20 700 -20 c 0,0,1 -1225 666 m 1,25,-1 - 522 666 l 1,26,27 - 498 540 498 540 498 440 c 0,28,29 - 498 262 498 262 565.5 172 c 128,-1,30 - 633 82 633 82 735 82 c 0,31,32 - 886 82 886 82 1018 231 c 128,-1,33 - 1150 380 1150 380 1225 666 c 1,25,-1 -1249 768 m 1,34,35 - 1276 906 1276 906 1276 1010 c 0,36,37 - 1276 1184 1276 1184 1205.5 1268 c 128,-1,38 - 1135 1352 1135 1352 1010 1352 c 0,39,40 - 871 1352 871 1352 746 1202.5 c 128,-1,41 - 621 1053 621 1053 547 768 c 1,42,-1 - 1249 768 l 1,34,35 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A4 -Encoding: 420 420 631 -Width: 1372 -VWidth: 0 -Flags: W -HStem: 0 43G<457 732> 655 102<897 1123> 918 43G<459 534> 1331 102<663 762 1030 1246> -VStem: 297 238<1007 1219> 1305 266<951 1271> -LayerCount: 2 -Fore -SplineSet -989 758 m 2,0,1 - 1057 758 1057 758 1117.5 792 c 128,-1,2 - 1178 826 1178 826 1218 880 c 128,-1,3 - 1258 934 1258 934 1281.5 999.5 c 128,-1,4 - 1305 1065 1305 1065 1305 1128 c 0,5,6 - 1305 1214 1305 1214 1261 1272.5 c 128,-1,7 - 1217 1331 1217 1331 1122 1331 c 2,8,-1 - 1030 1331 l 1,9,-1 - 897 758 l 1,10,-1 - 989 758 l 2,0,1 -1571 1128 m 0,11,12 - 1571 1066 1571 1066 1549 1001 c 128,-1,13 - 1527 936 1527 936 1481 874 c 128,-1,14 - 1435 812 1435 812 1372 763 c 128,-1,15 - 1309 714 1309 714 1219.5 684.5 c 128,-1,16 - 1130 655 1130 655 1028 655 c 2,17,-1 - 874 655 l 1,18,-1 - 723 0 l 1,19,-1 - 457 0 l 1,20,-1 - 762 1325 l 1,21,22 - 703 1315 703 1315 658.5 1290 c 128,-1,23 - 614 1265 614 1265 591.5 1237 c 128,-1,24 - 569 1209 569 1209 555 1175.5 c 128,-1,25 - 541 1142 541 1142 538 1122 c 128,-1,26 - 535 1102 535 1102 535 1085 c 0,27,28 - 535 1073 535 1073 537 1064 c 128,-1,29 - 539 1055 539 1055 543.5 1048 c 128,-1,30 - 548 1041 548 1041 550.5 1038.5 c 128,-1,31 - 553 1036 553 1036 561.5 1030.5 c 128,-1,32 - 570 1025 570 1025 571 1024 c 1,33,-1 - 510 918 l 1,34,35 - 422 930 422 930 359.5 973.5 c 128,-1,36 - 297 1017 297 1017 297 1090 c 0,37,38 - 297 1144 297 1144 330 1203 c 128,-1,39 - 363 1262 363 1262 422.5 1314 c 128,-1,40 - 482 1366 482 1366 578.5 1400 c 128,-1,41 - 675 1434 675 1434 788 1434 c 2,42,-1 - 1208 1434 l 2,43,44 - 1306 1434 1306 1434 1379.5 1407.5 c 128,-1,45 - 1453 1381 1453 1381 1493 1335.5 c 128,-1,46 - 1533 1290 1533 1290 1552 1238.5 c 128,-1,47 - 1571 1187 1571 1187 1571 1128 c 0,11,12 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A5 -Encoding: 421 421 632 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -16 102<509 694> 823 102<649 858> 1151 102<680 895> -VStem: 881 240<403 762> -LayerCount: 2 -Fore -SplineSet -1120 575 m 0,0,1 - 1120 461 1120 461 1070.5 352 c 128,-1,2 - 1021 243 1021 243 941 162.5 c 128,-1,3 - 861 82 861 82 755.5 33 c 128,-1,4 - 650 -16 650 -16 543 -16 c 0,5,6 - 464 -16 464 -16 406 8 c 1,7,-1 - 309 -410 l 1,8,-1 - 53 -410 l 1,9,-1 - 373 973 l 2,10,11 - 390 1045 390 1045 439.5 1101.5 c 128,-1,12 - 489 1158 489 1158 553 1189.5 c 128,-1,13 - 617 1221 617 1221 681.5 1237 c 128,-1,14 - 746 1253 746 1253 803 1253 c 0,15,16 - 932 1253 932 1253 989 1161 c 1,17,-1 - 846 1100 l 1,18,19 - 824 1151 824 1151 750 1151 c 0,20,21 - 698 1151 698 1151 671 1097.5 c 128,-1,22 - 644 1044 644 1044 612 905 c 1,23,24 - 692 926 692 926 780 926 c 0,25,26 - 938 926 938 926 1029 828 c 128,-1,27 - 1120 730 1120 730 1120 575 c 0,0,1 -598 86 m 0,28,29 - 661 86 661 86 716.5 150 c 128,-1,30 - 772 214 772 214 806.5 307.5 c 128,-1,31 - 841 401 841 401 861 498 c 128,-1,32 - 881 595 881 595 881 670 c 0,33,34 - 881 823 881 823 788 823 c 0,35,36 - 726 823 726 823 681.5 802 c 128,-1,37 - 637 781 637 781 606.5 736 c 128,-1,38 - 576 691 576 691 557.5 638.5 c 128,-1,39 - 539 586 539 586 520 504 c 0,40,41 - 481 340 481 340 481 250 c 0,42,43 - 481 86 481 86 598 86 c 0,28,29 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A9 -Encoding: 425 425 633 -Width: 1167 -VWidth: 0 -Flags: W -HStem: 0 102<459 1110> 1331 102<752 1401> -LayerCount: 2 -Fore -SplineSet -752 1331 m 1,0,-1 - 1028 725 l 1,1,-1 - 459 102 l 1,2,-1 - 1135 102 l 1,3,-1 - 1110 0 l 1,4,-1 - 61 0 l 1,5,-1 - 717 725 l 1,6,-1 - 401 1434 l 1,7,-1 - 1401 1434 l 1,8,-1 - 1407 1331 l 1,9,-1 - 752 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B1 -Encoding: 433 433 634 -Width: 1566 -VWidth: 0 -Flags: W -HStem: -20 102<643 967> 1331 102<582 711 1462 1616> -VStem: 272 248<259 700> 1333 250<582 1060> -LayerCount: 2 -Fore -SplineSet -799 82 m 0,0,1 - 886 82 886 82 964 119 c 128,-1,2 - 1042 156 1042 156 1099 218.5 c 128,-1,3 - 1156 281 1156 281 1201.5 360 c 128,-1,4 - 1247 439 1247 439 1275 525.5 c 128,-1,5 - 1303 612 1303 612 1318 694.5 c 128,-1,6 - 1333 777 1333 777 1333 850 c 0,7,8 - 1333 981 1333 981 1291.5 1073 c 128,-1,9 - 1250 1165 1250 1165 1174 1188 c 1,10,-1 - 1231 1434 l 1,11,-1 - 1640 1434 l 1,12,-1 - 1616 1331 l 1,13,-1 - 1462 1331 l 1,14,-1 - 1442 1239 l 1,15,16 - 1501 1167 1501 1167 1542 1052.5 c 128,-1,17 - 1583 938 1583 938 1583 809 c 0,18,19 - 1583 730 1583 730 1565 651 c 0,20,21 - 1533 514 1533 514 1465.5 399.5 c 128,-1,22 - 1398 285 1398 285 1315 209 c 128,-1,23 - 1232 133 1232 133 1135 80 c 128,-1,24 - 1038 27 1038 27 948 3.5 c 128,-1,25 - 858 -20 858 -20 776 -20 c 0,26,27 - 706 -20 706 -20 636.5 -2.5 c 128,-1,28 - 567 15 567 15 500.5 54 c 128,-1,29 - 434 93 434 93 383.5 149.5 c 128,-1,30 - 333 206 333 206 302.5 289.5 c 128,-1,31 - 272 373 272 373 272 473 c 0,32,33 - 272 574 272 574 301 676 c 128,-1,34 - 330 778 330 778 374 859.5 c 128,-1,35 - 418 941 418 941 476 1017.5 c 128,-1,36 - 534 1094 534 1094 586 1146 c 128,-1,37 - 638 1198 638 1198 690 1239 c 1,38,-1 - 711 1331 l 1,39,-1 - 557 1331 l 1,40,-1 - 582 1434 l 1,41,-1 - 991 1434 l 1,42,-1 - 934 1188 l 1,43,44 - 832 1162 832 1162 735.5 1042.5 c 128,-1,45 - 639 923 639 923 579.5 753.5 c 128,-1,46 - 520 584 520 584 520 420 c 0,47,48 - 520 254 520 254 593.5 168 c 128,-1,49 - 667 82 667 82 799 82 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0268 -Encoding: 616 616 635 -Width: 604 -VWidth: 0 -Flags: W -HStem: -20 102<393 601> 518 102<188 297 578 680> 860 41G<378 643> 1065 164<483 659> -VStem: 221 254<83 372> 608 70<96 131> -LayerCount: 2 -Fore -SplineSet -498 276 m 2,0,1 - 475 178 475 178 475 143 c 0,2,3 - 475 82 475 82 530 82 c 0,4,5 - 554 82 554 82 576.5 98 c 128,-1,6 - 599 114 599 114 608 131 c 1,7,-1 - 678 131 l 1,8,9 - 664 73 664 73 604 26.5 c 128,-1,10 - 544 -20 544 -20 479 -20 c 0,11,12 - 356 -20 356 -20 288.5 31.5 c 128,-1,13 - 221 83 221 83 221 164 c 0,14,15 - 221 189 221 189 227 213 c 2,16,-1 - 297 518 l 1,17,-1 - 164 518 l 1,18,-1 - 188 621 l 1,19,-1 - 322 621 l 1,20,-1 - 387 901 l 1,21,-1 - 643 901 l 1,22,-1 - 578 621 l 1,23,-1 - 705 621 l 1,24,-1 - 680 518 l 1,25,-1 - 553 518 l 1,26,-1 - 498 276 l 2,0,1 -483 1229 m 1,27,-1 - 698 1229 l 1,28,-1 - 659 1065 l 1,29,-1 - 444 1065 l 1,30,-1 - 483 1229 l 1,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0269 -Encoding: 617 617 636 -Width: 722 -VWidth: 0 -Flags: W -HStem: -20 102<473 600> 799 102<299 356> -VStem: 221 250<84 375> 639 115<116 236> -LayerCount: 2 -Fore -SplineSet -299 901 m 1,0,-1 - 637 901 l 1,1,-1 - 504 328 l 1,2,3 - 471 178 471 178 471 143 c 0,4,5 - 471 82 471 82 537 82 c 0,6,7 - 573 82 573 82 596.5 117.5 c 128,-1,8 - 620 153 620 153 639 236 c 1,9,-1 - 754 236 l 1,10,11 - 719 85 719 85 663 32.5 c 128,-1,12 - 607 -20 607 -20 489 -20 c 0,13,14 - 356 -20 356 -20 288.5 26 c 128,-1,15 - 221 72 221 72 221 172 c 0,16,17 - 221 219 221 219 231 260 c 2,18,-1 - 356 799 l 1,19,-1 - 274 799 l 1,20,-1 - 299 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0275 -Encoding: 629 629 637 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<450 677> 399 102<463 807> 819 102<606 824> -VStem: 176 244<118 398> 850 244<505 773> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -SplineSet -1094 594 m 0,0,1 - 1094 546 1094 546 1085 492.5 c 128,-1,2 - 1076 439 1076 439 1055 378.5 c 128,-1,3 - 1034 318 1034 318 1003.5 262 c 128,-1,4 - 973 206 973 206 925 154 c 128,-1,5 - 877 102 877 102 818.5 64 c 128,-1,6 - 760 26 760 26 680 3 c 128,-1,7 - 600 -20 600 -20 508 -20 c 0,8,9 - 347 -20 347 -20 261.5 65 c 128,-1,10 - 176 150 176 150 176 301 c 0,11,12 - 176 430 176 430 226.5 547.5 c 128,-1,13 - 277 665 277 665 356 745.5 c 128,-1,14 - 435 826 435 826 533 874 c 128,-1,15 - 631 922 631 922 725 922 c 0,16,17 - 896 922 896 922 995 838 c 128,-1,18 - 1094 754 1094 754 1094 594 c 0,0,1 -807 399 m 1,19,-1 - 438 399 l 1,20,21 - 420 314 420 314 420 246 c 0,22,23 - 420 165 420 165 453 123.5 c 128,-1,24 - 486 82 486 82 561 82 c 0,25,26 - 624 82 624 82 672.5 123.5 c 128,-1,27 - 721 165 721 165 751.5 232 c 128,-1,28 - 782 299 782 299 807 399 c 1,19,-1 -463 502 m 1,29,-1 - 831 502 l 1,30,31 - 850 599 850 599 850 664 c 0,32,33 - 850 819 850 819 731 819 c 0,34,35 - 631 819 631 819 567.5 738 c 128,-1,36 - 504 657 504 657 463 502 c 1,29,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0283 -Encoding: 643 643 638 -Width: 737 -VWidth: 0 -Flags: W -HStem: -20 102<93 307> 1270 102<856 1011> -LayerCount: 2 -Fore -SplineSet -614 260 m 2,0,1 - 597 188 597 188 547.5 131.5 c 128,-1,2 - 498 75 498 75 434 43.5 c 128,-1,3 - 370 12 370 12 305.5 -4 c 128,-1,4 - 241 -20 241 -20 184 -20 c 0,5,6 - 55 -20 55 -20 -2 72 c 1,7,-1 - 141 133 l 1,8,9 - 163 82 163 82 238 82 c 0,10,11 - 290 82 290 82 316.5 135 c 128,-1,12 - 343 188 343 188 375 328 c 2,13,-1 - 553 1096 l 1,14,15 - 580 1217 580 1217 686 1294.5 c 128,-1,16 - 792 1372 792 1372 918 1372 c 0,17,18 - 1002 1372 1002 1372 1057 1350 c 1,19,-1 - 989 1239 l 1,20,21 - 970 1270 970 1270 924 1270 c 0,22,23 - 881 1270 881 1270 854 1223 c 128,-1,24 - 827 1176 827 1176 797 1042 c 1,25,-1 - 614 260 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni028A -Encoding: 650 650 639 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<502 792> 799 102<395 487 1122 1239> -VStem: 193 254<137 436> 952 256<253 597> -LayerCount: 2 -Fore -SplineSet -1208 444 m 0,0,1 - 1208 235 1208 235 1045.5 107.5 c 128,-1,2 - 883 -20 883 -20 616 -20 c 0,3,4 - 521 -20 521 -20 446.5 -3 c 128,-1,5 - 372 14 372 14 325 41 c 128,-1,6 - 278 68 278 68 247.5 106 c 128,-1,7 - 217 144 217 144 205 183.5 c 128,-1,8 - 193 223 193 223 193 266 c 0,9,10 - 193 329 193 329 220.5 405.5 c 128,-1,11 - 248 482 248 482 312.5 566 c 128,-1,12 - 377 650 377 650 465 705 c 1,13,-1 - 487 799 l 1,14,-1 - 371 799 l 1,15,-1 - 395 901 l 1,16,-1 - 768 901 l 1,17,-1 - 713 668 l 1,18,19 - 705 665 705 665 691 658 c 128,-1,20 - 677 651 677 651 639.5 623.5 c 128,-1,21 - 602 596 602 596 570.5 561 c 128,-1,22 - 539 526 539 526 505.5 465 c 128,-1,23 - 472 404 472 404 455 332 c 0,24,25 - 446 294 446 294 446 260 c 0,26,27 - 446 176 446 176 496.5 129 c 128,-1,28 - 547 82 547 82 639 82 c 0,29,30 - 778 82 778 82 865 184 c 128,-1,31 - 952 286 952 286 952 438 c 0,32,33 - 952 486 952 486 940 527.5 c 128,-1,34 - 928 569 928 569 911 593.5 c 128,-1,35 - 894 618 894 618 877 636 c 128,-1,36 - 860 654 860 654 848 661 c 2,37,-1 - 836 668 l 1,38,-1 - 891 901 l 1,39,-1 - 1264 901 l 1,40,-1 - 1239 799 l 1,41,-1 - 1122 799 l 1,42,-1 - 1100 705 l 1,43,44 - 1139 672 1139 672 1173.5 605 c 128,-1,45 - 1208 538 1208 538 1208 444 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: circumflex -Encoding: 710 710 640 -Width: 602 -VWidth: 0 -Flags: W -HStem: 1257 299 -VStem: 336 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 887 0 2 -Validated: 1 -EndChar - -StartChar: ring -Encoding: 730 730 641 -Width: 434 -VWidth: 0 -Flags: W -HStem: 1167 72<444 580> 1407 72<465 601> -VStem: 362 74<1245 1380> 608 74<1266 1401> -LayerCount: 2 -Fore -Refer: 100 778 N 1 0 0 1 805 0 2 -Validated: 1 -EndChar - -StartChar: napostrophe -Encoding: 329 329 642 -Width: 1378 -VWidth: 0 -Flags: W -HStem: 0 43<487 753 1032 1298> 819 102<529 703 919 1158> 987 367<361 391> -VStem: 362 180<1281 1354> 453 70<770 809> 649 260<527 780> 1176 246<427 804> -LayerCount: 2 -Fore -Refer: 4 110 N 1 0 0 1 303 0 2 -Refer: 106 787 N 1 0 0 1 629 -283 2 -Validated: 1 -EndChar - -StartChar: IJ -Encoding: 306 306 643 -Width: 1484 -VWidth: 0 -Flags: W -HStem: -20 102<837 1032> 0 43<92 368> 1393 41<414 690 1381 1657> -VStem: 92 598 -LayerCount: 2 -Fore -Refer: 37 74 N 1 0 0 1 530 0 2 -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: ij -Encoding: 307 307 644 -Width: 987 -VWidth: 0 -Flags: W -HStem: -348 102<328 543> 0 43G<123 388> 860 41G<322 588 810 1075> 1065 164<428 604 915 1092> -LayerCount: 2 -Fore -SplineSet -377 -195 m 1,0,1 - 399 -246 399 -246 473 -246 c 0,2,3 - 525 -246 525 -246 551.5 -193 c 128,-1,4 - 578 -140 578 -140 610 0 c 2,5,-1 - 819 901 l 1,6,-1 - 1075 901 l 1,7,-1 - 850 -68 l 2,8,9 - 833 -140 833 -140 783.5 -196.5 c 128,-1,10 - 734 -253 734 -253 670 -284.5 c 128,-1,11 - 606 -316 606 -316 541.5 -332 c 128,-1,12 - 477 -348 477 -348 420 -348 c 0,13,14 - 290 -348 290 -348 233 -256 c 1,15,-1 - 377 -195 l 1,0,1 -915 1229 m 1,16,-1 - 1130 1229 l 1,17,-1 - 1092 1065 l 1,18,-1 - 877 1065 l 1,19,-1 - 915 1229 l 1,16,-1 -428 1229 m 1,20,-1 - 643 1229 l 1,21,-1 - 604 1065 l 1,22,-1 - 389 1065 l 1,23,-1 - 428 1229 l 1,20,-1 -332 901 m 1,24,-1 - 588 901 l 1,25,-1 - 379 0 l 1,26,-1 - 123 0 l 1,27,-1 - 332 901 l 1,24,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ldot -Encoding: 319 319 645 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 639 170<737 868> 1393 41<404 680> -VStem: 698 209 -LayerCount: 2 -Fore -Refer: 342 183 N 1 0 0 1 551 225 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ldot -Encoding: 320 320 646 -Width: 815 -VWidth: 0 -Flags: W -HStem: -20 102<301 515> 639 170<664 795> -VStem: 135 258<84 375> 522 70<93 131> 625 209 -LayerCount: 2 -Fore -Refer: 342 183 N 1 0 0 1 477 225 2 -Refer: 15 108 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni018F -Encoding: 399 399 647 -Width: 1445 -VWidth: 0 -Flags: W -HStem: -20 102<591 882> 614 102<487 1235> 1352 102<865 1198> -VStem: 221 258<265 612> 1305 252<720 1181> -LayerCount: 2 -Fore -SplineSet -1235 614 m 1,0,-1 - 494 614 l 1,1,2 - 479 515 479 515 479 440 c 0,3,4 - 479 263 479 263 546.5 172.5 c 128,-1,5 - 614 82 614 82 715 82 c 0,6,7 - 784 82 784 82 855.5 113 c 128,-1,8 - 927 144 927 144 997.5 205.5 c 128,-1,9 - 1068 267 1068 267 1131 372.5 c 128,-1,10 - 1194 478 1194 478 1235 614 c 1,0,-1 -1264 717 m 1,11,12 - 1305 888 1305 888 1305 1028 c 0,13,14 - 1305 1352 1305 1352 1044 1352 c 0,15,16 - 997 1352 997 1352 957 1343 c 128,-1,17 - 917 1334 917 1334 891 1323.5 c 128,-1,18 - 865 1313 865 1313 833 1287 c 128,-1,19 - 801 1261 801 1261 786.5 1247 c 128,-1,20 - 772 1233 772 1233 738 1196 c 0,21,22 - 727 1184 727 1184 721 1178 c 1,23,-1 - 510 1245 l 1,24,25 - 726 1454 726 1454 1100 1454 c 0,26,27 - 1169 1454 1169 1454 1234 1435 c 128,-1,28 - 1299 1416 1299 1416 1357.5 1375.5 c 128,-1,29 - 1416 1335 1416 1335 1460 1276 c 128,-1,30 - 1504 1217 1504 1217 1530 1131.5 c 128,-1,31 - 1556 1046 1556 1046 1556 944 c 0,32,33 - 1556 838 1556 838 1530 717 c 1,34,35 - 1496 570 1496 570 1424 444.5 c 128,-1,36 - 1352 319 1352 319 1263.5 235.5 c 128,-1,37 - 1175 152 1175 152 1073.5 92.5 c 128,-1,38 - 972 33 972 33 877.5 6.5 c 128,-1,39 - 783 -20 783 -20 700 -20 c 0,40,41 - 630 -20 630 -20 562.5 -0.5 c 128,-1,42 - 495 19 495 19 432.5 60.5 c 128,-1,43 - 370 102 370 102 323.5 162 c 128,-1,44 - 277 222 277 222 249 309 c 128,-1,45 - 221 396 221 396 221 500 c 0,46,47 - 221 597 221 597 248 717 c 1,48,-1 - 1264 717 l 1,11,12 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019E -Encoding: 414 414 648 -Width: 968 -VWidth: 0 -Flags: W -HStem: 0 43G<82 347> 819 102<123 298 513 753> -VStem: 47 70<770 809> 244 260<527 780> 770 246<431 804> -AnchorPoint: "cedilla" 475 0 basechar 0 -AnchorPoint: "top" 715 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -338 0 m 1,0,-1 - 82 0 l 1,1,-1 - 225 625 l 1,2,3 - 244 696 244 696 244 745 c 0,4,5 - 244 819 244 819 193 819 c 0,6,7 - 139 819 139 819 117 770 c 1,8,-1 - 47 770 l 1,9,10 - 59 828 59 828 120 875 c 128,-1,11 - 181 922 181 922 246 922 c 0,12,13 - 392 922 392 922 459 858 c 1,14,15 - 573 922 573 922 668 922 c 0,16,17 - 1016 922 1016 922 1016 641 c 0,18,19 - 1016 588 1016 588 995 492 c 1,20,-1 - 786 -410 l 1,21,-1 - 530 -410 l 1,22,-1 - 735 467 l 2,23,24 - 770 613 770 613 770 700 c 0,25,26 - 770 766 770 766 746 792.5 c 128,-1,27 - 722 819 722 819 674 819 c 0,28,29 - 583 819 583 819 502 768 c 1,30,31 - 504 762 504 762 504 745 c 0,32,33 - 504 718 504 718 498 688 c 2,34,-1 - 338 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0220 -Encoding: 544 544 649 -Width: 1394 -VWidth: 0 -Flags: W -HStem: 0 43G<147 423> 1352 102<847 1188> 1393 41G<468 743> -VStem: 1247 264<912 1273> -LayerCount: 2 -Fore -SplineSet -147 0 m 9,0,-1 - 477 1434 l 1,1,-1 - 743 1434 l 1,2,-1 - 729 1364 l 1,3,4 - 739 1369 739 1369 772.5 1385.5 c 128,-1,5 - 806 1402 806 1402 827 1410.5 c 128,-1,6 - 848 1419 848 1419 882.5 1431 c 128,-1,7 - 917 1443 917 1443 955 1448.5 c 128,-1,8 - 993 1454 993 1454 1036 1454 c 0,9,10 - 1167 1454 1167 1454 1272 1418 c 128,-1,11 - 1377 1382 1377 1382 1444 1303.5 c 128,-1,12 - 1511 1225 1511 1225 1511 1116 c 0,13,14 - 1511 1074 1511 1074 1499 1024 c 2,15,-1 - 1169 -408 l 1,16,-1 - 903 -408 l 1,17,-1 - 1227 999 l 2,18,19 - 1247 1083 1247 1083 1247 1151 c 0,20,21 - 1247 1263 1247 1263 1192 1307.5 c 128,-1,22 - 1137 1352 1137 1352 1042 1352 c 0,23,24 - 944 1352 944 1352 860 1314 c 128,-1,25 - 776 1276 776 1276 694 1217 c 1,26,-1 - 414 0 l 1,27,-1 - 147 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A2 -Encoding: 418 418 650 -Width: 1847 -VWidth: 0 -Flags: W -HStem: -20 102<613 891> 1137 102<1525 1656> 1352 102<864 1161> -VStem: 240 258<252 746> 1276 256<697 1107> 1659 248<851 1135> -LayerCount: 2 -Fore -SplineSet -1583 -410 m 1,0,-1 - 1327 -410 l 1,1,-1 - 1626 891 l 1,2,3 - 1659 1041 1659 1041 1659 1075 c 0,4,5 - 1659 1137 1659 1137 1608 1137 c 0,6,7 - 1580 1137 1580 1137 1564.5 1127.5 c 128,-1,8 - 1549 1118 1549 1118 1518 1085 c 1,9,10 - 1532 1013 1532 1013 1532 950 c 0,11,12 - 1532 842 1532 842 1503 717 c 0,13,14 - 1460 531 1460 531 1375.5 387 c 128,-1,15 - 1291 243 1291 243 1182 155.5 c 128,-1,16 - 1073 68 1073 68 951 24 c 128,-1,17 - 829 -20 829 -20 700 -20 c 0,18,19 - 612 -20 612 -20 532 11 c 128,-1,20 - 452 42 452 42 385.5 102 c 128,-1,21 - 319 162 319 162 279.5 262 c 128,-1,22 - 240 362 240 362 240 489 c 0,23,24 - 240 586 240 586 268 717 c 1,25,26 - 302 865 302 865 365.5 989.5 c 128,-1,27 - 429 1114 429 1114 506 1198.5 c 128,-1,28 - 583 1283 583 1283 672.5 1341.5 c 128,-1,29 - 762 1400 762 1400 850 1427 c 128,-1,30 - 938 1454 938 1454 1022 1454 c 0,31,32 - 1177 1454 1177 1454 1298.5 1390 c 128,-1,33 - 1420 1326 1420 1326 1479 1200 c 1,34,35 - 1556 1239 1556 1239 1642 1239 c 0,36,37 - 1710 1239 1710 1239 1767.5 1218.5 c 128,-1,38 - 1825 1198 1825 1198 1866 1148 c 128,-1,39 - 1907 1098 1907 1098 1907 1026 c 0,40,41 - 1907 996 1907 996 1898 958 c 2,42,-1 - 1583 -410 l 1,0,-1 -735 82 m 0,43,44 - 839 82 839 82 930.5 150 c 128,-1,45 - 1022 218 1022 218 1083.5 323 c 128,-1,46 - 1145 428 1145 428 1190 555 c 128,-1,47 - 1235 682 1235 682 1255.5 800 c 128,-1,48 - 1276 918 1276 918 1276 1012 c 0,49,50 - 1276 1185 1276 1185 1205.5 1268.5 c 128,-1,51 - 1135 1352 1135 1352 1010 1352 c 0,52,53 - 916 1352 916 1352 831.5 1287 c 128,-1,54 - 747 1222 747 1222 687.5 1120 c 128,-1,55 - 628 1018 628 1018 584 894.5 c 128,-1,56 - 540 771 540 771 519 653 c 128,-1,57 - 498 535 498 535 498 440 c 0,58,59 - 498 263 498 263 565.5 172.5 c 128,-1,60 - 633 82 633 82 735 82 c 0,43,44 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A3 -Encoding: 419 419 651 -Width: 1474 -VWidth: 0 -Flags: W -HStem: -20 102<455 676> 748 102<1086 1219> 819 102<605 822> -VStem: 176 244<118 504> 850 242<392 719> 1223 246<461 746> -LayerCount: 2 -Fore -SplineSet -176 301 m 0,0,1 - 176 430 176 430 226.5 547.5 c 128,-1,2 - 277 665 277 665 356 745.5 c 128,-1,3 - 435 826 435 826 533 874 c 128,-1,4 - 631 922 631 922 725 922 c 0,5,6 - 934 922 934 922 1028 803 c 1,7,8 - 1109 850 1109 850 1204 850 c 0,9,10 - 1272 850 1272 850 1329.5 829.5 c 128,-1,11 - 1387 809 1387 809 1427.5 759 c 128,-1,12 - 1468 709 1468 709 1468 637 c 0,13,14 - 1468 602 1468 602 1460 569 c 2,15,-1 - 1235 -410 l 1,16,-1 - 979 -410 l 1,17,-1 - 1190 502 l 1,18,19 - 1223 652 1223 652 1223 686 c 0,20,21 - 1223 748 1223 748 1169 748 c 0,22,23 - 1141 748 1141 748 1125.5 738.5 c 128,-1,24 - 1110 729 1110 729 1079 696 c 1,25,26 - 1092 646 1092 646 1092 594 c 0,27,28 - 1092 545 1092 545 1083 491 c 128,-1,29 - 1074 437 1074 437 1053 376.5 c 128,-1,30 - 1032 316 1032 316 1001.5 260 c 128,-1,31 - 971 204 971 204 923.5 152.5 c 128,-1,32 - 876 101 876 101 817.5 63 c 128,-1,33 - 759 25 759 25 679.5 2.5 c 128,-1,34 - 600 -20 600 -20 508 -20 c 0,35,36 - 347 -20 347 -20 261.5 65 c 128,-1,37 - 176 150 176 150 176 301 c 0,0,1 -819 451 m 0,38,39 - 850 592 850 592 850 664 c 0,40,41 - 850 819 850 819 731 819 c 0,42,43 - 623 819 623 819 557.5 725.5 c 128,-1,44 - 492 632 492 632 451 451 c 0,45,46 - 420 313 420 313 420 246 c 0,47,48 - 420 82 420 82 561 82 c 0,49,50 - 613 82 613 82 654 108 c 128,-1,51 - 695 134 695 134 725.5 186 c 128,-1,52 - 756 238 756 238 777.5 301 c 128,-1,53 - 799 364 799 364 819 451 c 0,38,39 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01AC -Encoding: 428 428 652 -Width: 1466 -VWidth: 0 -Flags: W -HStem: 0 43G<602 878> 918 43G<459 534> 1331 102<650 909 1176 1640> -VStem: 297 238<1007 1216> -LayerCount: 2 -Fore -SplineSet -297 1090 m 0,0,1 - 297 1144 297 1144 330 1203 c 128,-1,2 - 363 1262 363 1262 422.5 1314 c 128,-1,3 - 482 1366 482 1366 578.5 1400 c 128,-1,4 - 675 1434 675 1434 788 1434 c 2,5,-1 - 1669 1434 l 1,6,-1 - 1640 1331 l 1,7,-1 - 1176 1331 l 1,8,-1 - 868 0 l 1,9,-1 - 602 0 l 1,10,-1 - 909 1331 l 1,11,-1 - 784 1331 l 2,12,13 - 689 1331 689 1331 612 1256 c 128,-1,14 - 535 1181 535 1181 535 1085 c 0,15,16 - 535 1073 535 1073 537 1064 c 128,-1,17 - 539 1055 539 1055 543.5 1048 c 128,-1,18 - 548 1041 548 1041 550.5 1038.5 c 128,-1,19 - 553 1036 553 1036 561.5 1030.5 c 128,-1,20 - 570 1025 570 1025 571 1024 c 1,21,-1 - 510 918 l 1,22,23 - 422 930 422 930 359.5 973.5 c 128,-1,24 - 297 1017 297 1017 297 1090 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01AE -Encoding: 430 430 653 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -348 102<746 909> 1331 102<373 815 1081 1546> -VStem: 485 258<-243 42> -LayerCount: 2 -Fore -SplineSet -815 1331 m 1,0,-1 - 348 1331 l 1,1,-1 - 373 1434 l 1,2,-1 - 1575 1434 l 1,3,-1 - 1546 1331 l 1,4,-1 - 1081 1331 l 1,5,-1 - 774 0 l 2,6,7 - 743 -138 743 -138 743 -180 c 0,8,9 - 743 -214 743 -214 755.5 -230 c 128,-1,10 - 768 -246 768 -246 797 -246 c 0,11,12 - 869 -246 869 -246 918 -195 c 1,13,-1 - 1032 -256 l 1,14,15 - 933 -348 933 -348 805 -348 c 0,16,17 - 753 -348 753 -348 700 -335 c 128,-1,18 - 647 -322 647 -322 597.5 -296.5 c 128,-1,19 - 548 -271 548 -271 516.5 -226 c 128,-1,20 - 485 -181 485 -181 485 -123 c 0,21,22 - 485 -100 485 -100 492 -68 c 2,23,-1 - 815 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0288 -Encoding: 648 648 654 -Width: 657 -VWidth: 0 -Flags: W -HStem: -348 102<417 579> 799 102<293 373 653 788> -VStem: 166 248<-244 52> -LayerCount: 2 -Fore -SplineSet -373 799 m 1,0,-1 - 238 799 l 1,1,-1 - 293 901 l 1,2,-1 - 397 901 l 1,3,-1 - 465 1198 l 1,4,-1 - 729 1229 l 1,5,-1 - 653 901 l 1,6,-1 - 813 901 l 1,7,-1 - 788 799 l 1,8,-1 - 629 799 l 1,9,-1 - 444 0 l 2,10,11 - 414 -133 414 -133 414 -180 c 0,12,13 - 414 -214 414 -214 426 -230 c 128,-1,14 - 438 -246 438 -246 467 -246 c 0,15,16 - 539 -246 539 -246 588 -195 c 1,17,-1 - 702 -256 l 1,18,19 - 603 -348 603 -348 475 -348 c 0,20,21 - 435 -348 435 -348 393.5 -340.5 c 128,-1,22 - 352 -333 352 -333 310.5 -316 c 128,-1,23 - 269 -299 269 -299 237.5 -274 c 128,-1,24 - 206 -249 206 -249 186 -210.5 c 128,-1,25 - 166 -172 166 -172 166 -125 c 0,26,27 - 166 -98 166 -98 172 -68 c 2,28,-1 - 373 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01AD -Encoding: 429 429 655 -Width: 669 -VWidth: 0 -Flags: W -HStem: -20 102<395 610> 799 102<291 371 651 788> 1270 102<748 962> -VStem: 229 258<84 376> 616 70<93 131> -LayerCount: 2 -Fore -SplineSet -651 901 m 1,0,-1 - 813 901 l 1,1,-1 - 788 799 l 1,2,-1 - 627 799 l 1,3,-1 - 506 276 l 2,4,5 - 487 191 487 191 487 156 c 0,6,7 - 487 82 487 82 539 82 c 0,8,9 - 594 82 594 82 616 131 c 1,10,-1 - 686 131 l 1,11,12 - 672 73 672 73 612 26.5 c 128,-1,13 - 552 -20 552 -20 487 -20 c 0,14,15 - 356 -20 356 -20 292.5 28 c 128,-1,16 - 229 76 229 76 229 156 c 0,17,18 - 229 178 229 178 236 213 c 1,19,-1 - 371 799 l 1,20,-1 - 236 799 l 1,21,-1 - 291 901 l 1,22,-1 - 395 901 l 1,23,-1 - 440 1092 l 2,24,25 - 457 1164 457 1164 506.5 1220.5 c 128,-1,26 - 556 1277 556 1277 620.5 1308.5 c 128,-1,27 - 685 1340 685 1340 749.5 1356 c 128,-1,28 - 814 1372 814 1372 872 1372 c 0,29,30 - 1000 1372 1000 1372 1057 1280 c 1,31,-1 - 913 1219 l 1,32,33 - 891 1270 891 1270 817 1270 c 0,34,35 - 765 1270 765 1270 738.5 1217 c 128,-1,36 - 712 1164 712 1164 680 1024 c 2,37,-1 - 651 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B5 -Encoding: 437 437 656 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<387 983> 696 102<410 541 866 983> 1331 102<434 979> -LayerCount: 2 -Fore -SplineSet -979 1331 m 1,0,-1 - 379 1331 l 1,1,-1 - 434 1434 l 1,2,-1 - 1307 1434 l 1,3,-1 - 866 799 l 1,4,-1 - 1008 799 l 1,5,-1 - 983 696 l 1,6,-1 - 795 696 l 1,7,-1 - 387 102 l 1,8,-1 - 1008 102 l 1,9,-1 - 983 0 l 1,10,-1 - 61 0 l 1,11,-1 - 541 696 l 1,12,-1 - 385 696 l 1,13,-1 - 410 799 l 1,14,-1 - 612 799 l 1,15,-1 - 979 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B6 -Encoding: 438 438 657 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 102<377 823> 416 102<272 393 713 817> 799 102<283 705> -LayerCount: 2 -Fore -SplineSet -705 799 m 1,0,-1 - 227 799 l 1,1,-1 - 283 901 l 1,2,-1 - 1026 901 l 1,3,-1 - 713 518 l 1,4,-1 - 840 518 l 1,5,-1 - 817 416 l 1,6,-1 - 631 416 l 1,7,-1 - 377 102 l 1,8,-1 - 848 102 l 1,9,-1 - 823 0 l 1,10,-1 - 53 0 l 1,11,-1 - 393 416 l 1,12,-1 - 250 416 l 1,13,-1 - 272 518 l 1,14,-1 - 475 518 l 1,15,-1 - 705 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01C0 -Encoding: 448 448 658 -Width: 507 -VWidth: 0 -Flags: W -HStem: 0 43<174 347> 1393 41<496 670> -VStem: 174 496 -LayerCount: 2 -Fore -Refer: 59 124 N 1 0 0 1 82 0 2 -Validated: 1 -EndChar - -StartChar: uni01C1 -Encoding: 449 449 659 -Width: 835 -VWidth: 0 -Flags: W -HStem: 0 43<174 347 502 675> 1393 41<496 670 824 997> -VStem: 174 496 502 496 -LayerCount: 2 -Fore -Refer: 59 124 N 1 0 0 1 410 0 2 -Refer: 59 124 N 1 0 0 1 82 0 2 -Validated: 1 -EndChar - -StartChar: uni01C2 -Encoding: 450 450 660 -Width: 708 -VWidth: 0 -Flags: W -HStem: 0 43G<272 446> 573 102<238 406 592 760> 799 102<291 457 645 811> 1393 41G<595 768> -VStem: 215 621 -LayerCount: 2 -Fore -SplineSet -406 573 m 1,0,-1 - 215 573 l 1,1,-1 - 238 676 l 1,2,-1 - 428 676 l 1,3,-1 - 457 799 l 1,4,-1 - 266 799 l 1,5,-1 - 291 901 l 1,6,-1 - 481 901 l 1,7,-1 - 604 1434 l 1,8,-1 - 768 1434 l 1,9,-1 - 645 901 l 1,10,-1 - 836 901 l 1,11,-1 - 811 799 l 1,12,-1 - 621 799 l 1,13,-1 - 592 676 l 1,14,-1 - 782 676 l 1,15,-1 - 760 573 l 1,16,-1 - 569 573 l 1,17,-1 - 436 0 l 1,18,-1 - 272 0 l 1,19,-1 - 406 573 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01C3 -Encoding: 451 451 661 -Width: 448 -VWidth: 0 -Flags: W -HStem: 0 164<150 328> 1393 41<416 680> -VStem: 113 567 -LayerCount: 2 -Fore -Refer: 53 33 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Gcaron -Encoding: 486 486 662 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<601 956> 717 102<969 1118> 1331 102<832 1172> 1384 387 -VStem: 201 260<280 770> 834 479 -LayerCount: 2 -Fore -SplineSet -969 819 m 1,0,-1 - 1397 819 l 1,1,-1 - 1257 209 l 1,2,3 - 1153 106 1153 106 1005 43 c 128,-1,4 - 857 -20 857 -20 696 -20 c 0,5,6 - 626 -20 626 -20 557 -0.5 c 128,-1,7 - 488 19 488 19 423.5 61.5 c 128,-1,8 - 359 104 359 104 310 164.5 c 128,-1,9 - 261 225 261 225 231 314.5 c 128,-1,10 - 201 404 201 404 201 510 c 0,11,12 - 201 615 201 615 227.5 724 c 128,-1,13 - 254 833 254 833 301.5 934 c 128,-1,14 - 349 1035 349 1035 419.5 1124.5 c 128,-1,15 - 490 1214 490 1214 573.5 1281 c 128,-1,16 - 657 1348 657 1348 760 1388.5 c 128,-1,17 - 863 1429 863 1429 972 1433 c 1,18,-1 - 834 1718 l 1,19,-1 - 909 1772 l 1,20,-1 - 1044 1591 l 1,21,-1 - 1262 1772 l 1,22,-1 - 1313 1718 l 1,23,-1 - 1041 1433 l 1,24,25 - 1389 1422 1389 1422 1489 1245 c 1,26,-1 - 1249 1178 l 1,27,28 - 1229 1221 1229 1221 1214.5 1243.5 c 128,-1,29 - 1200 1266 1200 1266 1172.5 1289.5 c 128,-1,30 - 1145 1313 1145 1313 1103.5 1322 c 128,-1,31 - 1062 1331 1062 1331 999 1331 c 0,32,33 - 911 1331 911 1331 834.5 1292.5 c 128,-1,34 - 758 1254 758 1254 704 1192 c 128,-1,35 - 650 1130 650 1130 607 1048 c 128,-1,36 - 564 966 564 966 537.5 883 c 128,-1,37 - 511 800 511 800 493 716.5 c 128,-1,38 - 475 633 475 633 468 571 c 128,-1,39 - 461 509 461 509 461 465 c 0,40,41 - 461 275 461 275 543 178.5 c 128,-1,42 - 625 82 625 82 750 82 c 0,43,44 - 874 82 874 82 983 135 c 1,45,-1 - 1118 717 l 1,46,-1 - 946 717 l 1,47,-1 - 969 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: gcaron -Encoding: 487 487 663 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 516> -20 102<418 603> 819 102<553 784 1063 1186> 954 387 -VStem: 147 238<126 481> 561 479 1186 72<770 815> -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1049 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01F4 -Encoding: 500 500 664 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<601 956> 717 102<969 1118> 1331 102<832 1172> 1495 403 -VStem: 201 260<280 770> 934 422 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1321 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01F5 -Encoding: 501 501 665 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 516> -20 102<418 603> 819 102<553 784 1063 1186> 1065 403 -VStem: 147 238<126 481> 635 422 1186 72<770 815> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1022 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0200 -Encoding: 512 512 666 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1495 403 -VStem: 618 319 946 319 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1155 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0201 -Encoding: 513 513 667 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1065 403 -VStem: 154 246<136 485> 446 319 690 262<96 373> 774 319 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 983 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0202 -Encoding: 514 514 668 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1589 137<892 1120> -VStem: 1143 88<1536 1563> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0203 -Encoding: 515 515 669 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1159 137<720 948> -VStem: 154 246<136 485> 690 262<96 373> 971 88<1106 1133> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1116 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0204 -Encoding: 516 516 670 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1495 403 -VStem: 498 319 825 319 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1034 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0205 -Encoding: 517 517 671 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1065 403 -VStem: 150 246<143 446> 377 319 705 319 799 233<561 763> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 913 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0206 -Encoding: 518 518 672 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1589 137<771 999> -VStem: 1022 88<1536 1563> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1167 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0207 -Encoding: 519 519 673 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1159 137<650 879> -VStem: 150 246<143 446> 799 233<561 763> 901 88<1106 1133> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0208 -Encoding: 520 520 674 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1495 403 -VStem: 92 598 203 319 530 319 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 739 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0209 -Encoding: 521 521 675 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1065 403 -VStem: 100 319 133 254<83 364> 428 319 520 70<96 131> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 637 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020A -Encoding: 522 522 676 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1589 137<476 704> -VStem: 92 598 727 88<1536 1563> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 872 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020B -Encoding: 523 523 677 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1159 137<374 602> -VStem: 133 254<83 364> 520 70<96 131> 625 88<1106 1133> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 770 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020C -Encoding: 524 524 678 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1495 403 -VStem: 199 258<251 749> 641 319 969 319 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1178 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020D -Encoding: 525 525 679 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1065 403 -VStem: 147 244<117 508> 381 319 709 319 821 244<380 773> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 918 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020E -Encoding: 526 526 680 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1589 137<915 1143> -VStem: 199 258<251 749> 1165 88<1536 1563> 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020F -Encoding: 527 527 681 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1159 137<654 883> -VStem: 147 244<117 508> 821 244<380 773> 905 88<1106 1133> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0210 -Encoding: 528 528 682 -Width: 1122 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 748 1012> 655 102<532 607> 1331 102<666 881> 1495 403 -VStem: 455 319 758 262<0 382> 782 319 940 266<951 1271> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 991 246 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0211 -Encoding: 529 529 683 -Width: 862 -VWidth: 0 -Flags: W -HStem: 0 43<184 450> 819 102<226 409 663 955> 1065 403 -VStem: 150 70<770 809> 309 319 637 319 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 846 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0212 -Encoding: 530 530 684 -Width: 1122 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 748 1012> 655 102<532 607> 1331 102<666 881> 1589 137<728 956> -VStem: 758 262<0 382> 940 266<951 1271> 979 88<1536 1563> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1124 246 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0213 -Encoding: 531 531 685 -Width: 862 -VWidth: 0 -Flags: W -HStem: 0 43<184 450> 819 102<226 409 663 955> 1159 137<583 811> -VStem: 150 70<770 809> 834 88<1106 1133> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 979 -184 2 -Refer: 18 114 S 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0214 -Encoding: 532 532 686 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1495 403 -VStem: 176 254<182 636> 602 319 930 319 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1139 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0215 -Encoding: 533 533 687 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1065 403 -VStem: 154 256<105 501> 358 319 668 260<101 364> 686 319 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 895 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0216 -Encoding: 534 534 688 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1589 137<876 1104> -VStem: 176 254<182 636> 1126 88<1536 1563> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0217 -Encoding: 535 535 689 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1159 137<632 860> -VStem: 154 256<105 501> 668 260<101 364> 883 88<1106 1133> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1028 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021E -Encoding: 542 542 690 -Width: 1189 -VWidth: 0 -Flags: W -HStem: 0 43<82 358 823 1099> 717 102<537 989> 1384 387 1393 41<404 680 1146 1421> -VStem: 736 479 -LayerCount: 2 -Fore -Refer: 375 711 N 1 0 0 1 335 246 2 -Refer: 35 72 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021F -Encoding: 543 543 691 -Width: 1034 -VWidth: 0 -Flags: W -HStem: 0 43<143 409 688 954> 819 102<610 813> 1270 102<289 504> 1309 387 -VStem: 213 70<1221 1259> 410 260<985 1268> 622 479 829 248<415 804> -LayerCount: 2 -Fore -Refer: 375 711 N 1 0 0 1 221 170 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0222 -Encoding: 546 546 692 -Width: 1290 -VWidth: 0 -Flags: W -HStem: -20 102<514 848> 1352 102<781 889 1057 1113> -VStem: 170 254<171 466> 387 260<961 1182> 1032 260<285 536> 1169 256<1002 1280> -LayerCount: 2 -Fore -SplineSet -887 840 m 1,0,1 - 931 856 931 856 966.5 872.5 c 128,-1,2 - 1002 889 1002 889 1041.5 916.5 c 128,-1,3 - 1081 944 1081 944 1107.5 975.5 c 128,-1,4 - 1134 1007 1134 1007 1151.5 1052.5 c 128,-1,5 - 1169 1098 1169 1098 1169 1151 c 0,6,7 - 1169 1233 1169 1233 1129 1292.5 c 128,-1,8 - 1089 1352 1089 1352 1032 1352 c 1,9,-1 - 1057 1454 l 1,10,11 - 1143 1454 1143 1454 1227 1414 c 128,-1,12 - 1311 1374 1311 1374 1368 1300 c 128,-1,13 - 1425 1226 1425 1226 1425 1141 c 0,14,15 - 1425 1112 1425 1112 1419.5 1082.5 c 128,-1,16 - 1414 1053 1414 1053 1391 1006.5 c 128,-1,17 - 1368 960 1368 960 1330 920 c 128,-1,18 - 1292 880 1292 880 1217.5 837 c 128,-1,19 - 1143 794 1143 794 1044 764 c 1,20,21 - 1099 735 1099 735 1139.5 706.5 c 128,-1,22 - 1180 678 1180 678 1217 640.5 c 128,-1,23 - 1254 603 1254 603 1273 555 c 128,-1,24 - 1292 507 1292 507 1292 451 c 0,25,26 - 1292 346 1292 346 1231.5 255.5 c 128,-1,27 - 1171 165 1171 165 1075 106 c 128,-1,28 - 979 47 979 47 861.5 13.5 c 128,-1,29 - 744 -20 744 -20 627 -20 c 0,30,31 - 505 -20 505 -20 399.5 24.5 c 128,-1,32 - 294 69 294 69 232 145 c 128,-1,33 - 170 221 170 221 170 309 c 0,34,35 - 170 342 170 342 176.5 375.5 c 128,-1,36 - 183 409 183 409 209.5 461.5 c 128,-1,37 - 236 514 236 514 280 560 c 128,-1,38 - 324 606 324 606 408.5 657.5 c 128,-1,39 - 493 709 493 709 606 748 c 1,40,41 - 503 800 503 800 445 865.5 c 128,-1,42 - 387 931 387 931 387 1026 c 0,43,44 - 387 1118 387 1118 444.5 1201.5 c 128,-1,45 - 502 1285 502 1285 585.5 1338.5 c 128,-1,46 - 669 1392 669 1392 757 1423 c 128,-1,47 - 845 1454 845 1454 913 1454 c 1,48,-1 - 889 1352 l 1,49,50 - 828 1352 828 1352 770 1301 c 128,-1,51 - 712 1250 712 1250 679.5 1183 c 128,-1,52 - 647 1116 647 1116 647 1063 c 0,53,54 - 647 1033 647 1033 660.5 1005.5 c 128,-1,55 - 674 978 674 978 693.5 957.5 c 128,-1,56 - 713 937 713 937 748 914.5 c 128,-1,57 - 783 892 783 892 812 877 c 128,-1,58 - 841 862 841 862 887 840 c 1,0,1 -664 82 m 0,59,60 - 750 82 750 82 818 109.5 c 128,-1,61 - 886 137 886 137 925 176.5 c 128,-1,62 - 964 216 964 216 989.5 265 c 128,-1,63 - 1015 314 1015 314 1023.5 351.5 c 128,-1,64 - 1032 389 1032 389 1032 418 c 0,65,66 - 1032 466 1032 466 1011 505 c 128,-1,67 - 990 544 990 544 946.5 576 c 128,-1,68 - 903 608 903 608 862 630 c 128,-1,69 - 821 652 821 652 756 680 c 1,70,71 - 591 622 591 622 507.5 521.5 c 128,-1,72 - 424 421 424 421 424 301 c 0,73,74 - 424 206 424 206 490 144 c 128,-1,75 - 556 82 556 82 664 82 c 0,59,60 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0223 -Encoding: 547 547 693 -Width: 1167 -VWidth: 0 -Flags: W -HStem: -20 102<486 741> 1126 100<658 812> 1229 102<946 1018> -VStem: 166 258<145 455> 365 260<881 1072> 911 260<271 544> 1038 254<961 1211> -LayerCount: 2 -Fore -SplineSet -793 811 m 1,0,1 - 830 828 830 828 857 842.5 c 128,-1,2 - 884 857 884 857 921 884.5 c 128,-1,3 - 958 912 958 912 981 942 c 128,-1,4 - 1004 972 1004 972 1021 1017 c 128,-1,5 - 1038 1062 1038 1062 1038 1114 c 0,6,7 - 1038 1229 1038 1229 924 1229 c 1,8,-1 - 946 1331 l 1,9,10 - 1012 1331 1012 1331 1072 1317.5 c 128,-1,11 - 1132 1304 1132 1304 1182 1277 c 128,-1,12 - 1232 1250 1232 1250 1262 1204 c 128,-1,13 - 1292 1158 1292 1158 1292 1100 c 0,14,15 - 1292 1039 1292 1039 1267.5 985.5 c 128,-1,16 - 1243 932 1243 932 1209 896 c 128,-1,17 - 1175 860 1175 860 1124 827.5 c 128,-1,18 - 1073 795 1073 795 1036.5 778 c 128,-1,19 - 1000 761 1000 761 954 743 c 1,20,21 - 1056 695 1056 695 1113.5 630.5 c 128,-1,22 - 1171 566 1171 566 1171 461 c 0,23,24 - 1171 365 1171 365 1130.5 278.5 c 128,-1,25 - 1090 192 1090 192 1015.5 125.5 c 128,-1,26 - 941 59 941 59 824 19.5 c 128,-1,27 - 707 -20 707 -20 565 -20 c 0,28,29 - 458 -20 458 -20 369.5 11.5 c 128,-1,30 - 281 43 281 43 223.5 112.5 c 128,-1,31 - 166 182 166 182 166 279 c 0,32,33 - 166 352 166 352 192 416 c 128,-1,34 - 218 480 218 480 255 523 c 128,-1,35 - 292 566 292 566 349 605.5 c 128,-1,36 - 406 645 406 645 450 667 c 128,-1,37 - 494 689 494 689 553 713 c 1,38,39 - 464 754 464 754 414.5 805.5 c 128,-1,40 - 365 857 365 857 365 936 c 0,41,42 - 365 997 365 997 393 1048 c 128,-1,43 - 421 1099 421 1099 463.5 1131 c 128,-1,44 - 506 1163 506 1163 559 1185.5 c 128,-1,45 - 612 1208 612 1208 660.5 1217.5 c 128,-1,46 - 709 1227 709 1227 750 1227 c 0,47,48 - 798 1227 798 1227 848 1212 c 1,49,-1 - 799 1114 l 1,50,51 - 761 1126 761 1126 731 1126 c 0,52,53 - 699 1126 699 1126 675.5 1104 c 128,-1,54 - 652 1082 652 1082 642.5 1051 c 128,-1,55 - 633 1020 633 1020 629 999.5 c 128,-1,56 - 625 979 625 979 625 969 c 0,57,58 - 625 916 625 916 666.5 882 c 128,-1,59 - 708 848 708 848 793 811 c 1,0,1 -602 82 m 0,60,61 - 672 82 672 82 732.5 117.5 c 128,-1,62 - 793 153 793 153 831 206 c 128,-1,63 - 869 259 869 259 890 317 c 128,-1,64 - 911 375 911 375 911 424 c 0,65,66 - 911 504 911 504 858.5 553.5 c 128,-1,67 - 806 603 806 603 707 647 c 1,68,69 - 668 630 668 630 636.5 612.5 c 128,-1,70 - 605 595 605 595 563 562 c 128,-1,71 - 521 529 521 529 492.5 493 c 128,-1,72 - 464 457 464 457 444 402.5 c 128,-1,73 - 424 348 424 348 424 287 c 0,74,75 - 424 196 424 196 472 139 c 128,-1,76 - 520 82 520 82 602 82 c 0,60,61 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni022A -Encoding: 554 554 694 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1516 170<823 954 1110 1241> 1751 115<860 1305> -VStem: 199 258<251 749> 784 209 834 498 1071 209 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1374 481 2 -Refer: 157 214 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni022B -Encoding: 555 555 695 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1085 170<563 694 850 981> 1382 115<616 1061> -VStem: 147 244<117 508> 524 209 590 498 811 209 821 244<380 773> -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1130 113 2 -Refer: 136 246 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni022C -Encoding: 556 556 696 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1516 141<1060 1238> 1581 141<862 1039> 1751 115<868 1313> -VStem: 199 258<251 749> 743 612 842 498 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1382 481 2 -Refer: 156 213 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni022D -Encoding: 557 557 697 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1085 141<800 978> 1151 141<602 779> 1382 115<637 1081> -VStem: 147 244<117 508> 483 612 610 498 821 244<380 773> -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1151 113 2 -Refer: 131 245 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni022E -Encoding: 558 558 698 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<612 884> 1352 102<863 1163> 1516 170<1006 1137> -VStem: 240 258<251 749> 967 209 1276 256<698 1177> -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 41 0 3 -Refer: 98 775 S 1 0 0 1 1350 246 2 -Validated: 1 -EndChar - -StartChar: uni022F -Encoding: 559 559 699 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<455 666> 819 102<615 824> 1085 170<754 885> -VStem: 176 244<117 508> 715 209 850 244<380 773> -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 29 0 3 -Refer: 98 775 N 1 0 0 1 1098 -184 2 -Validated: 1 -EndChar - -StartChar: uni0230 -Encoding: 560 560 700 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<612 884> 1352 102<863 1163> 1516 170<1006 1137> 1751 115<885 1329> -VStem: 240 258<251 749> 858 498 967 209 1276 256<698 1177> -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1399 481 2 -Refer: 698 558 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0231 -Encoding: 561 561 701 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<455 666> 819 102<615 824> 1085 170<754 885> 1382 115<678 1122> -VStem: 176 244<117 508> 651 498 715 209 850 244<380 773> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1192 113 2 -Refer: 699 559 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0232 -Encoding: 562 562 702 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<406 681> 1393 41<377 646 1112 1327> 1516 115<653 1098> -VStem: 627 498 -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1167 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0233 -Encoding: 563 563 703 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<97 251> 860 41<270 497 901 1090> 1085 115<514 958> -VStem: 487 498 -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1028 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0241 -Encoding: 577 577 704 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 43G<225 491> 557 98<610 783> 1270 102<581 938> -VStem: 1006 252<877 1204> -LayerCount: 2 -Fore -SplineSet -1257 1051 m 0,0,1 - 1257 954 1257 954 1212 870 c 128,-1,2 - 1167 786 1167 786 1096.5 730 c 128,-1,3 - 1026 674 1026 674 938.5 633.5 c 128,-1,4 - 851 593 851 593 767 575 c 128,-1,5 - 683 557 683 557 610 557 c 1,6,-1 - 481 0 l 1,7,-1 - 225 0 l 1,8,-1 - 377 655 l 1,9,-1 - 588 655 l 2,10,11 - 776 655 776 655 891 771 c 128,-1,12 - 1006 887 1006 887 1006 1071 c 0,13,14 - 1006 1270 1006 1270 764 1270 c 0,15,16 - 704 1270 704 1270 652 1255.5 c 128,-1,17 - 600 1241 600 1241 559.5 1213.5 c 128,-1,18 - 519 1186 519 1186 491.5 1161 c 128,-1,19 - 464 1136 464 1136 434 1102 c 1,20,-1 - 338 1194 l 1,21,22 - 417 1271 417 1271 554.5 1321.5 c 128,-1,23 - 692 1372 692 1372 819 1372 c 0,24,25 - 941 1372 941 1372 1037.5 1339 c 128,-1,26 - 1134 1306 1134 1306 1195.5 1231.5 c 128,-1,27 - 1257 1157 1257 1157 1257 1051 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0242 -Encoding: 578 578 705 -Width: 995 -VWidth: 0 -Flags: W -HStem: 0 246<283 480> 147 98<516 599> 819 102<485 736> -VStem: 782 254<437 775> -LayerCount: 2 -Fore -SplineSet -1036 625 m 0,0,1 - 1036 535 1036 535 1002 455.5 c 128,-1,2 - 968 376 968 376 913.5 321 c 128,-1,3 - 859 266 859 266 790 225.5 c 128,-1,4 - 721 185 721 185 651 166 c 128,-1,5 - 581 147 581 147 516 147 c 1,6,-1 - 481 0 l 1,7,-1 - 225 0 l 1,8,-1 - 283 246 l 1,9,-1 - 416 246 l 2,10,11 - 500 246 500 246 566 271.5 c 128,-1,12 - 632 297 632 297 671.5 336.5 c 128,-1,13 - 711 376 711 376 737 430 c 128,-1,14 - 763 484 763 484 772.5 535 c 128,-1,15 - 782 586 782 586 782 641 c 0,16,17 - 782 734 782 734 736.5 776.5 c 128,-1,18 - 691 819 691 819 618 819 c 0,19,20 - 577 819 577 819 541 806.5 c 128,-1,21 - 505 794 505 794 473 768 c 128,-1,22 - 441 742 441 742 421 721.5 c 128,-1,23 - 401 701 401 701 370 665 c 0,24,25 - 362 656 362 656 358 651 c 1,26,-1 - 227 723 l 1,27,28 - 313 807 313 807 434 864.5 c 128,-1,29 - 555 922 555 922 674 922 c 0,30,31 - 729 922 729 922 780 912 c 128,-1,32 - 831 902 831 902 878 879 c 128,-1,33 - 925 856 925 856 960 822 c 128,-1,34 - 995 788 995 788 1015.5 737.5 c 128,-1,35 - 1036 687 1036 687 1036 625 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0251 -Encoding: 593 593 706 -Width: 1228 -VWidth: 0 -Flags: W -HStem: -20 102<508 796 967 1172> 819 102<642 882> 860 41G<958 1208> -VStem: 178 246<164 537> 797 250<114 376> 1174 70<94 131> -LayerCount: 2 -Fore -SplineSet -178 315 m 0,0,1 - 178 378 178 378 193 445.5 c 128,-1,2 - 208 513 208 513 238 581.5 c 128,-1,3 - 268 650 268 650 318 711 c 128,-1,4 - 368 772 368 772 432 819.5 c 128,-1,5 - 496 867 496 867 585 894.5 c 128,-1,6 - 674 922 674 922 776 922 c 0,7,8 - 874 922 874 922 958 889 c 1,9,-1 - 963 901 l 1,10,-1 - 1208 901 l 1,11,-1 - 1063 276 l 1,12,13 - 1047 201 1047 201 1047 162 c 0,14,15 - 1047 82 1047 82 1094 82 c 0,16,17 - 1121 82 1121 82 1145.5 95.5 c 128,-1,18 - 1170 109 1170 109 1174 131 c 1,19,-1 - 1243 131 l 1,20,21 - 1209 -20 1209 -20 1004 -20 c 0,22,23 - 892 -20 892 -20 838 43 c 1,24,25 - 783 9 783 9 734 -5.5 c 128,-1,26 - 685 -20 685 -20 600 -20 c 0,27,28 - 390 -20 390 -20 284 67.5 c 128,-1,29 - 178 155 178 155 178 315 c 0,0,1 -782 819 m 0,30,31 - 700 819 700 819 630 769.5 c 128,-1,32 - 560 720 560 720 516.5 644 c 128,-1,33 - 473 568 473 568 448.5 482.5 c 128,-1,34 - 424 397 424 397 424 319 c 0,35,36 - 424 206 424 206 482 144 c 128,-1,37 - 540 82 540 82 653 82 c 0,38,39 - 738 82 738 82 799 127 c 1,40,41 - 797 137 797 137 797 162 c 0,42,43 - 797 186 797 186 803 213 c 2,44,-1 - 913 692 l 1,45,46 - 903 754 903 754 872.5 786.5 c 128,-1,47 - 842 819 842 819 782 819 c 0,30,31 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C6D -Encoding: 11373 11373 707 -Width: 1445 -VWidth: 0 -Flags: W -HStem: -20 102<703 1089 1375 1505> 1352 102<936 1329> 1393 41G<1391 1661> -VStem: 244 264<290 785> 1114 258<127 376> -LayerCount: 2 -Fore -SplineSet -1395 1434 m 1,0,-1 - 1661 1434 l 1,1,-1 - 1405 328 l 1,2,3 - 1372 178 1372 178 1372 143 c 0,4,5 - 1372 82 1372 82 1423 82 c 0,6,7 - 1451 82 1451 82 1466.5 91.5 c 128,-1,8 - 1482 101 1482 101 1513 133 c 1,9,-1 - 1628 72 l 1,10,11 - 1580 27 1580 27 1511.5 3.5 c 128,-1,12 - 1443 -20 1443 -20 1380 -20 c 0,13,14 - 1239 -20 1239 -20 1167 55 c 1,15,16 - 1007 -20 1007 -20 829 -20 c 0,17,18 - 712 -20 712 -20 609 12.5 c 128,-1,19 - 506 45 506 45 423.5 108 c 128,-1,20 - 341 171 341 171 292.5 275.5 c 128,-1,21 - 244 380 244 380 244 514 c 0,22,23 - 244 700 244 700 317.5 874 c 128,-1,24 - 391 1048 391 1048 511.5 1174.5 c 128,-1,25 - 632 1301 632 1301 795 1377.5 c 128,-1,26 - 958 1454 958 1454 1130 1454 c 0,27,28 - 1284 1454 1284 1454 1391 1419 c 1,29,-1 - 1395 1434 l 1,0,-1 -1137 1352 m 0,30,31 - 1033 1352 1033 1352 941 1310.5 c 128,-1,32 - 849 1269 849 1269 781.5 1199.5 c 128,-1,33 - 714 1130 714 1130 660.5 1042.5 c 128,-1,34 - 607 955 607 955 574.5 859 c 128,-1,35 - 542 763 542 763 525 672 c 128,-1,36 - 508 581 508 581 508 502 c 0,37,38 - 508 395 508 395 539 312.5 c 128,-1,39 - 570 230 570 230 623 181 c 128,-1,40 - 676 132 676 132 742 107 c 128,-1,41 - 808 82 808 82 883 82 c 0,42,43 - 1013 82 1013 82 1120 137 c 1,44,45 - 1114 161 1114 161 1114 193 c 0,46,47 - 1114 227 1114 227 1122 260 c 2,48,-1 - 1360 1288 l 1,49,50 - 1270 1352 1270 1352 1137 1352 c 0,30,31 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019C -Encoding: 412 412 708 -Width: 1945 -VWidth: 0 -Flags: W -HStem: -20 102<529 782 1209 1445> 0 43G<1522 1787> -VStem: 250 252<115 509> -LayerCount: 2 -Fore -SplineSet -2089 1352 m 1,0,-1 - 1778 0 l 1,1,-1 - 1522 0 l 1,2,-1 - 1542 86 l 1,3,4 - 1509 52 1509 52 1489 34.5 c 128,-1,5 - 1469 17 1469 17 1422 -1.5 c 128,-1,6 - 1375 -20 1375 -20 1317 -20 c 0,7,8 - 1173 -20 1173 -20 1101.5 15 c 128,-1,9 - 1030 50 1030 50 993 127 c 1,10,11 - 911 51 911 51 813.5 15.5 c 128,-1,12 - 716 -20 716 -20 635 -20 c 0,13,14 - 450 -20 450 -20 350 55.5 c 128,-1,15 - 250 131 250 131 250 281 c 0,16,17 - 250 335 250 335 266 410 c 1,18,-1 - 483 1352 l 1,19,-1 - 739 1352 l 1,20,-1 - 528 434 l 2,21,22 - 502 318 502 318 502 242 c 0,23,24 - 502 155 502 155 534.5 118.5 c 128,-1,25 - 567 82 567 82 627 82 c 0,26,27 - 868 82 868 82 944 410 c 2,28,-1 - 1161 1352 l 1,29,-1 - 1417 1352 l 1,30,-1 - 1206 434 l 2,31,32 - 1180 321 1180 321 1180 244 c 0,33,34 - 1180 155 1180 155 1213.5 118.5 c 128,-1,35 - 1247 82 1247 82 1309 82 c 0,36,37 - 1351 82 1351 82 1390 97 c 128,-1,38 - 1429 112 1429 112 1456.5 132.5 c 128,-1,39 - 1484 153 1484 153 1512 186 c 128,-1,40 - 1540 219 1540 219 1555.5 242.5 c 128,-1,41 - 1571 266 1571 266 1591 299 c 1,42,-1 - 1833 1352 l 1,43,-1 - 2089 1352 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni026F -Encoding: 623 623 709 -Width: 1699 -VWidth: 0 -Flags: W -HStem: 0 102<429 667 985 1263 1469 1640> 881 41G<283 549 840 1106 1416 1681> -VStem: 154 252<125 491> 1260 260<127 395> 1647 70<113 152> -LayerCount: 2 -Fore -SplineSet -1425 922 m 1,0,-1 - 1681 922 l 1,1,-1 - 1538 297 l 1,2,3 - 1520 229 1520 229 1520 176 c 0,4,5 - 1520 102 1520 102 1571 102 c 0,6,7 - 1624 102 1624 102 1647 152 c 1,8,-1 - 1716 152 l 1,9,10 - 1704 94 1704 94 1643.5 47 c 128,-1,11 - 1583 0 1583 0 1518 0 c 0,12,13 - 1381 0 1381 0 1315 53 c 1,14,15 - 1207 0 1207 0 1098 0 c 0,16,17 - 891 0 891 0 811 86 c 1,18,19 - 671 0 671 0 559 0 c 0,20,21 - 363 0 363 0 258.5 60.5 c 128,-1,22 - 154 121 154 121 154 264 c 0,23,24 - 154 319 154 319 168 379 c 2,25,-1 - 293 922 l 1,26,-1 - 549 922 l 1,27,-1 - 434 422 l 2,28,29 - 406 298 406 298 406 236 c 0,30,31 - 406 159 406 159 441.5 130.5 c 128,-1,32 - 477 102 477 102 553 102 c 0,33,34 - 614 102 614 102 666 123 c 1,35,-1 - 850 922 l 1,36,-1 - 1106 922 l 1,37,-1 - 991 422 l 2,38,39 - 963 301 963 301 963 238 c 0,40,41 - 963 159 963 159 1000.5 130.5 c 128,-1,42 - 1038 102 1038 102 1120 102 c 0,43,44 - 1184 102 1184 102 1264 135 c 1,45,46 - 1260 163 1260 163 1260 176 c 0,47,48 - 1260 203 1260 203 1266 233 c 2,49,-1 - 1425 922 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0271 -Encoding: 625 625 710 -Width: 1665 -VWidth: 0 -Flags: W -HStem: -348 102<1035 1249> 0 43G<184 450 760 1025> 819 102<226 396 603 881 1198 1436> -VStem: 150 70<770 809> 346 260<527 795> 1460 252<434 796> -LayerCount: 2 -Fore -SplineSet -1556 -68 m 2,0,1 - 1539 -141 1539 -141 1489.5 -198 c 128,-1,2 - 1440 -255 1440 -255 1375.5 -286 c 128,-1,3 - 1311 -317 1311 -317 1247.5 -332.5 c 128,-1,4 - 1184 -348 1184 -348 1126 -348 c 0,5,6 - 997 -348 997 -348 940 -256 c 1,7,-1 - 1083 -195 l 1,8,9 - 1105 -246 1105 -246 1180 -246 c 0,10,11 - 1232 -246 1232 -246 1258.5 -193 c 128,-1,12 - 1285 -140 1285 -140 1317 0 c 2,13,-1 - 1432 500 l 2,14,15 - 1460 624 1460 624 1460 686 c 0,16,17 - 1460 763 1460 763 1424.5 791 c 128,-1,18 - 1389 819 1389 819 1313 819 c 0,19,20 - 1250 819 1250 819 1200 799 c 1,21,-1 - 1016 0 l 1,22,-1 - 760 0 l 1,23,-1 - 874 500 l 2,24,25 - 903 626 903 626 903 684 c 0,26,27 - 903 763 903 763 865 791 c 128,-1,28 - 827 819 827 819 745 819 c 0,29,30 - 682 819 682 819 602 786 c 1,31,32 - 606 758 606 758 606 745 c 0,33,34 - 606 718 606 718 600 688 c 2,35,-1 - 440 0 l 1,36,-1 - 184 0 l 1,37,-1 - 328 625 l 1,38,39 - 346 692 346 692 346 745 c 0,40,41 - 346 819 346 819 295 819 c 0,42,43 - 241 819 241 819 219 770 c 1,44,-1 - 150 770 l 1,45,46 - 162 828 162 828 222.5 875 c 128,-1,47 - 283 922 283 922 348 922 c 0,48,49 - 484 922 484 922 551 868 c 1,50,51 - 661 922 661 922 768 922 c 0,52,53 - 975 922 975 922 1055 836 c 1,54,55 - 1195 922 1195 922 1307 922 c 0,56,57 - 1503 922 1503 922 1607.5 861 c 128,-1,58 - 1712 800 1712 800 1712 657 c 0,59,60 - 1712 603 1712 603 1698 543 c 2,61,-1 - 1556 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C6E -Encoding: 11374 11374 711 -Width: 1480 -VWidth: 0 -Flags: W -HStem: -348 102<826 1041> 0 43G<92 368> 1393 41G<414 700 1411 1706> -LayerCount: 2 -Fore -SplineSet -1358 -68 m 2,0,1 - 1341 -140 1341 -140 1290 -196.5 c 128,-1,2 - 1239 -253 1239 -253 1173 -284.5 c 128,-1,3 - 1107 -316 1107 -316 1041.5 -332 c 128,-1,4 - 976 -348 976 -348 918 -348 c 0,5,6 - 788 -348 788 -348 731 -256 c 1,7,-1 - 874 -195 l 1,8,9 - 896 -246 896 -246 971 -246 c 0,10,11 - 1023 -246 1023 -246 1049.5 -193 c 128,-1,12 - 1076 -140 1076 -140 1108 0 c 2,13,-1 - 1350 1047 l 1,14,-1 - 791 248 l 1,15,-1 - 600 1047 l 1,16,-1 - 358 0 l 1,17,-1 - 92 0 l 1,18,-1 - 424 1434 l 1,19,-1 - 690 1434 l 1,20,-1 - 879 631 l 1,21,-1 - 1440 1434 l 1,22,-1 - 1706 1434 l 1,23,-1 - 1358 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni027D -Encoding: 637 637 712 -Width: 821 -VWidth: 0 -Flags: W -HStem: -348 102<372 534> 819 102<185 368 622 914> -VStem: 109 70<770 809> 121 248<-244 63> -LayerCount: 2 -Fore -SplineSet -287 625 m 1,0,1 - 305 692 305 692 305 745 c 0,2,3 - 305 819 305 819 254 819 c 0,4,5 - 200 819 200 819 178 770 c 1,6,-1 - 109 770 l 1,7,8 - 121 828 121 828 181.5 875 c 128,-1,9 - 242 922 242 922 307 922 c 0,10,11 - 478 922 478 922 537 840 c 1,12,13 - 610 883 610 883 663 902.5 c 128,-1,14 - 716 922 716 922 784 922 c 0,15,16 - 891 922 891 922 967 893 c 1,17,-1 - 932 741 l 1,18,19 - 908 819 908 819 774 819 c 0,20,21 - 711 819 711 819 662.5 797 c 128,-1,22 - 614 775 614 775 565 731 c 1,23,24 - 556 667 556 667 462.5 273.5 c 128,-1,25 - 369 -120 369 -120 369 -180 c 0,26,27 - 369 -214 369 -214 381 -230 c 128,-1,28 - 393 -246 393 -246 422 -246 c 0,29,30 - 494 -246 494 -246 543 -195 c 1,31,-1 - 657 -256 l 1,32,33 - 558 -348 558 -348 430 -348 c 0,34,35 - 390 -348 390 -348 348.5 -340.5 c 128,-1,36 - 307 -333 307 -333 265.5 -316 c 128,-1,37 - 224 -299 224 -299 192.5 -274 c 128,-1,38 - 161 -249 161 -249 141 -210.5 c 128,-1,39 - 121 -172 121 -172 121 -125 c 0,40,41 - 121 -98 121 -98 127 -68 c 2,42,-1 - 287 625 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0244 -Encoding: 580 580 713 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<592 875> 696 102<242 315 606 1141 1432 1505> 1393 41G<478 754 1303 1579> -VStem: 270 254<187 639> -LayerCount: 2 -Fore -SplineSet -217 696 m 1,0,-1 - 242 799 l 1,1,-1 - 340 799 l 1,2,-1 - 487 1434 l 1,3,-1 - 754 1434 l 1,4,-1 - 606 799 l 1,5,-1 - 1165 799 l 1,6,-1 - 1313 1434 l 1,7,-1 - 1579 1434 l 1,8,-1 - 1432 799 l 1,9,-1 - 1530 799 l 1,10,-1 - 1505 696 l 1,11,-1 - 1407 696 l 1,12,-1 - 1389 610 l 1,13,14 - 1354 461 1354 461 1298.5 348.5 c 128,-1,15 - 1243 236 1243 236 1178 167 c 128,-1,16 - 1113 98 1113 98 1030 55 c 128,-1,17 - 947 12 947 12 866.5 -4 c 128,-1,18 - 786 -20 786 -20 692 -20 c 0,19,20 - 633 -20 633 -20 578 -9 c 128,-1,21 - 523 2 523 2 465.5 31 c 128,-1,22 - 408 60 408 60 366 105.5 c 128,-1,23 - 324 151 324 151 297 226 c 128,-1,24 - 270 301 270 301 270 397 c 0,25,26 - 270 490 270 490 297 610 c 1,27,-1 - 315 696 l 1,28,-1 - 217 696 l 1,0,-1 -1141 696 m 1,29,-1 - 582 696 l 1,30,-1 - 563 610 l 1,31,32 - 524 444 524 444 524 334 c 0,33,34 - 524 259 524 259 540.5 207 c 128,-1,35 - 557 155 557 155 587 129 c 128,-1,36 - 617 103 617 103 650.5 92.5 c 128,-1,37 - 684 82 684 82 727 82 c 0,38,39 - 777 82 777 82 819 95.5 c 128,-1,40 - 861 109 861 109 905 144.5 c 128,-1,41 - 949 180 949 180 986 238 c 128,-1,42 - 1023 296 1023 296 1058 390 c 128,-1,43 - 1093 484 1093 484 1122 610 c 1,44,-1 - 1141 696 l 1,29,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0289 -Encoding: 649 649 714 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 416 102<127 178 459 723 1001 1067> 860 41G<281 547 826 1092> -VStem: 154 256<105 412> 668 260<101 370> 1057 70<93 131> -LayerCount: 2 -Fore -SplineSet -154 240 m 0,0,1 - 154 313 154 313 178 416 c 1,2,-1 - 104 416 l 1,3,-1 - 127 518 l 1,4,-1 - 201 518 l 1,5,-1 - 291 901 l 1,6,-1 - 547 901 l 1,7,-1 - 459 518 l 1,8,-1 - 748 518 l 1,9,-1 - 836 901 l 1,10,-1 - 1092 901 l 1,11,-1 - 1001 518 l 1,12,-1 - 1090 518 l 1,13,-1 - 1067 416 l 1,14,-1 - 979 416 l 1,15,-1 - 946 276 l 1,16,17 - 928 195 928 195 928 156 c 0,18,19 - 928 82 928 82 979 82 c 0,20,21 - 1035 82 1035 82 1057 131 c 1,22,-1 - 1126 131 l 1,23,24 - 1112 73 1112 73 1052.5 26.5 c 128,-1,25 - 993 -20 993 -20 928 -20 c 0,26,27 - 778 -20 778 -20 715 43 c 1,28,29 - 567 -20 567 -20 475 -20 c 0,30,31 - 309 -20 309 -20 231.5 43.5 c 128,-1,32 - 154 107 154 107 154 240 c 0,0,1 -723 416 m 1,33,-1 - 434 416 l 1,34,35 - 410 302 410 302 410 236 c 0,36,37 - 410 151 410 151 441 116.5 c 128,-1,38 - 472 82 472 82 528 82 c 0,39,40 - 609 82 609 82 670 127 c 1,41,42 - 670 131 670 131 669 140.5 c 128,-1,43 - 668 150 668 150 668 154 c 0,44,45 - 668 173 668 173 676 213 c 1,46,-1 - 723 416 l 1,33,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni028C -Encoding: 652 652 715 -Width: 931 -VWidth: 0 -Flags: W -HStem: 0 43G<59 248 652 879> 860 41G<572 765> -AnchorPoint: "top" 707 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -580 598 m 1,0,-1 - 223 0 l 1,1,-1 - 59 0 l 1,2,-1 - 596 901 l 1,3,-1 - 760 901 l 1,4,-1 - 879 0 l 1,5,-1 - 657 0 l 1,6,-1 - 580 598 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0245 -Encoding: 581 581 716 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43G<31 291 1014 1255> 1393 41G<860 1070> -AnchorPoint: "top" 975 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -266 0 m 1,0,-1 - 31 0 l 1,1,-1 - 885 1434 l 1,2,-1 - 1065 1434 l 1,3,-1 - 1255 0 l 1,4,-1 - 1020 0 l 1,5,-1 - 883 1034 l 1,6,-1 - 266 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0294 -Encoding: 660 660 717 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 43<225 491> 557 98<610 783> 1270 102<581 938> -VStem: 1006 252<877 1204> -LayerCount: 2 -Fore -Refer: 704 577 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni2C64 -Encoding: 11364 11364 718 -Width: 1138 -VWidth: 0 -Flags: W -HStem: -348 102<412 575> 0 43G<829 1094> 655 102<614 689> 1331 102<748 963> -VStem: 152 258<-243 56> 840 262<0 382> 1022 266<951 1271> -LayerCount: 2 -Fore -SplineSet -1288 1128 m 0,0,1 - 1288 1042 1288 1042 1248 955.5 c 128,-1,2 - 1208 869 1208 869 1125.5 794.5 c 128,-1,3 - 1043 720 1043 720 934 684 c 1,4,5 - 1000 606 1000 606 1051 434.5 c 128,-1,6 - 1102 263 1102 263 1102 115 c 0,7,8 - 1102 52 1102 52 1090 0 c 1,9,-1 - 829 0 l 1,10,11 - 840 45 840 45 840 106 c 0,12,13 - 840 254 840 254 784 419 c 128,-1,14 - 728 584 728 584 651 655 c 1,15,-1 - 592 655 l 1,16,-1 - 440 0 l 2,17,18 - 410 -133 410 -133 410 -180 c 0,19,20 - 410 -214 410 -214 422 -230 c 128,-1,21 - 434 -246 434 -246 463 -246 c 0,22,23 - 535 -246 535 -246 584 -195 c 1,24,-1 - 698 -256 l 1,25,26 - 599 -348 599 -348 471 -348 c 0,27,28 - 419 -348 419 -348 366 -335 c 128,-1,29 - 313 -322 313 -322 263.5 -296.5 c 128,-1,30 - 214 -271 214 -271 183 -226 c 128,-1,31 - 152 -181 152 -181 152 -123 c 0,32,33 - 152 -95 152 -95 158 -68 c 2,34,-1 - 506 1434 l 1,35,-1 - 926 1434 l 2,36,37 - 1005 1434 1005 1434 1068.5 1416 c 128,-1,38 - 1132 1398 1132 1398 1172 1368.5 c 128,-1,39 - 1212 1339 1212 1339 1239 1299 c 128,-1,40 - 1266 1259 1266 1259 1277 1216.5 c 128,-1,41 - 1288 1174 1288 1174 1288 1128 c 0,0,1 -707 758 m 2,42,43 - 797 758 797 758 871 816 c 128,-1,44 - 945 874 945 874 983.5 958 c 128,-1,45 - 1022 1042 1022 1042 1022 1128 c 0,46,47 - 1022 1215 1022 1215 978.5 1273 c 128,-1,48 - 935 1331 935 1331 840 1331 c 2,49,-1 - 748 1331 l 1,50,-1 - 614 758 l 1,51,-1 - 707 758 l 2,42,43 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01DE -Encoding: 478 478 719 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1516 170<801 932 1087 1219> 1751 115<838 1282> -VStem: 762 209 811 498 1049 209 -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1352 481 2 -Refer: 142 196 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01DF -Encoding: 479 479 720 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1085 170<629 760 915 1047> 1382 115<684 1128> -VStem: 154 246<136 485> 590 209 657 498 690 262<96 373> 877 209 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1198 113 2 -Refer: 132 228 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01CD -Encoding: 461 461 721 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1516 387 -VStem: 825 479 -LayerCount: 2 -Fore -Refer: 375 711 N 1 0 0 1 424 377 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01CE -Encoding: 462 462 722 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1044 387 -VStem: 154 246<136 485> 539 479 690 262<96 373> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 375 711 N 1 0 0 1 137 -94 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01CF -Encoding: 463 463 723 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1516 387 -VStem: 92 598 358 479 -LayerCount: 2 -Fore -Refer: 375 711 N 1 0 0 1 -43 377 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D0 -Encoding: 464 464 724 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1044 387 -VStem: 133 254<83 364> 272 479 520 70<96 131> -LayerCount: 2 -Fore -Refer: 375 711 N 1 0 0 1 -129 -94 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D1 -Encoding: 465 465 725 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1516 387 -VStem: 199 258<251 749> 911 479 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 375 711 N 1 0 0 1 510 377 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D2 -Encoding: 466 466 726 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1044 387 -VStem: 147 244<117 508> 612 479 821 244<380 773> -LayerCount: 2 -Fore -Refer: 375 711 N 1 0 0 1 211 -94 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D3 -Encoding: 467 467 727 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1434 387 -VStem: 176 254<182 636> 801 479 -LayerCount: 2 -Fore -Refer: 375 711 N 1 0 0 1 399 295 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D4 -Encoding: 468 468 728 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1044 387 -VStem: 154 256<105 501> 644 479 668 260<101 364> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 375 711 N 1 0 0 1 243 -94 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D5 -Encoding: 469 469 729 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1434 170<756 887 1042 1174> 1669 115<795 1239> -VStem: 176 254<182 636> 717 209 768 498 1004 209 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1309 399 2 -Refer: 99 776 N 1 0 0 1 1243 164 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D6 -Encoding: 470 470 730 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1085 170<541 672 827 958> 1386 115<610 1055> -VStem: 154 256<105 501> 502 209 584 498 668 260<101 364> 788 209 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1124 117 2 -Refer: 137 252 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D7 -Encoding: 471 471 731 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1434 170<748 879 1034 1165> 1638 301 -VStem: 176 254<182 636> 709 209 936 375 995 209 -LayerCount: 2 -Fore -Refer: 929 58624 N 1 0 0 1 434 158 2 -Refer: 99 776 N 1 0 0 1 1235 164 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D8 -Encoding: 472 472 732 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1085 170<541 672 827 958> 1352 403 -VStem: 154 256<105 501> 502 209 668 260<101 364> 745 422 788 209 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1133 102 2 -Refer: 137 252 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D9 -Encoding: 473 473 733 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1434 170<743 874 1030 1161> 1579 387 -VStem: 176 254<182 636> 705 209 803 479 991 209 -LayerCount: 2 -Fore -Refer: 375 711 N 1 0 0 1 401 440 2 -Refer: 99 776 N 1 0 0 1 1231 164 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01DA -Encoding: 474 474 734 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1085 170<541 672 827 958> 1257 387 -VStem: 154 256<105 501> 502 209 610 479 668 260<101 364> 788 209 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 375 711 N 1 0 0 1 209 119 2 -Refer: 137 252 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01DB -Encoding: 475 475 735 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -20 102<498 781> 1393 41<384 659 1209 1485> 1434 170<748 879 1034 1165> 1638 301 -VStem: 176 254<182 636> 709 209 752 305 995 209 -LayerCount: 2 -Fore -Refer: 930 58625 N 1 0 0 1 215 158 2 -Refer: 99 776 N 1 0 0 1 1235 164 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01DC -Encoding: 476 476 736 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1085 170<541 672 827 958> 1352 403 -VStem: 154 256<105 501> 502 209 522 319 668 260<101 364> 788 209 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 895 102 2 -Refer: 137 252 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni048A -Encoding: 1162 1162 737 -Width: 1566 -VWidth: 0 -Flags: W -HStem: 0 102<1282 1319> 1393 41G<414 690 1313 1589> 1434 123<831 1191> -VStem: 750 80<1521 1631> 1214 76<1564 1645> -LayerCount: 2 -Fore -SplineSet -750 1556 m 0,0,1 - 750 1592 750 1592 773 1618.5 c 128,-1,2 - 796 1645 796 1645 821 1645 c 0,3,4 - 848 1645 848 1645 848 1630 c 0,5,6 - 848 1623 848 1623 838.5 1605 c 128,-1,7 - 829 1587 829 1587 829 1579 c 0,8,9 - 829 1556 829 1556 934 1556 c 2,10,-1 - 1098 1556 l 2,11,12 - 1206 1556 1206 1556 1214 1583 c 0,13,14 - 1216 1591 1216 1591 1214.5 1604.5 c 128,-1,15 - 1213 1618 1213 1618 1214 1622 c 0,16,17 - 1218 1645 1218 1645 1251 1645 c 0,18,19 - 1290 1645 1290 1645 1290 1597 c 0,20,21 - 1290 1547 1290 1547 1240 1508.5 c 128,-1,22 - 1190 1470 1190 1470 1122 1452 c 128,-1,23 - 1054 1434 1054 1434 987 1434 c 0,24,25 - 899 1434 899 1434 824.5 1469 c 128,-1,26 - 750 1504 750 1504 750 1556 c 0,0,1 -358 0 m 1,27,-1 - 92 0 l 1,28,-1 - 424 1434 l 1,29,-1 - 690 1434 l 1,30,-1 - 451 401 l 1,31,-1 - 1300 1341 l 1,32,-1 - 1323 1434 l 1,33,-1 - 1589 1434 l 1,34,-1 - 1282 102 l 1,35,-1 - 1536 102 l 1,36,-1 - 1300 -254 l 1,37,-1 - 1206 -254 l 1,38,-1 - 1319 0 l 1,39,-1 - 991 0 l 1,40,-1 - 1229 1030 l 1,41,-1 - 379 92 l 1,42,-1 - 358 0 l 1,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048B -Encoding: 1163 1163 738 -Width: 1302 -VWidth: 0 -Flags: W -HStem: -20 123<933 1055> -20 102<435 668> 860 41G<281 547 826 1092> 1085 123<575 935> -VStem: 154 256<105 501> 494 80<1172 1283> 668 264<103 364> 958 76<1216 1296> -LayerCount: 2 -Fore -SplineSet -494 1208 m 0,0,1 - 494 1244 494 1244 517 1270 c 128,-1,2 - 540 1296 540 1296 565 1296 c 0,3,4 - 592 1296 592 1296 592 1282 c 0,5,6 - 592 1275 592 1275 582.5 1257 c 128,-1,7 - 573 1239 573 1239 573 1231 c 0,8,9 - 573 1208 573 1208 678 1208 c 2,10,-1 - 842 1208 l 2,11,12 - 950 1208 950 1208 958 1235 c 0,13,14 - 960 1243 960 1243 958.5 1256.5 c 128,-1,15 - 957 1270 957 1270 958 1274 c 0,16,17 - 962 1296 962 1296 995 1296 c 0,18,19 - 1034 1296 1034 1296 1034 1249 c 0,20,21 - 1034 1199 1034 1199 984 1160 c 128,-1,22 - 934 1121 934 1121 866 1103 c 128,-1,23 - 798 1085 798 1085 731 1085 c 0,24,25 - 643 1085 643 1085 568.5 1120.5 c 128,-1,26 - 494 1156 494 1156 494 1208 c 0,0,1 -1055 0 m 1,27,28 - 1000 -20 1000 -20 928 -20 c 0,29,30 - 778 -20 778 -20 715 43 c 1,31,32 - 567 -20 567 -20 475 -20 c 0,33,34 - 309 -20 309 -20 231.5 43.5 c 128,-1,35 - 154 107 154 107 154 240 c 0,36,37 - 154 311 154 311 176 410 c 1,38,-1 - 291 901 l 1,39,-1 - 547 901 l 1,40,-1 - 438 434 l 1,41,42 - 410 303 410 303 410 236 c 0,43,44 - 410 151 410 151 441 116.5 c 128,-1,45 - 472 82 472 82 528 82 c 0,46,47 - 609 82 609 82 670 127 c 1,48,49 - 670 131 670 131 669 140.5 c 128,-1,50 - 668 150 668 150 668 154 c 0,51,52 - 668 173 668 173 676 213 c 1,53,-1 - 836 901 l 1,54,-1 - 1092 901 l 1,55,-1 - 946 276 l 2,56,57 - 932 213 932 213 932 168 c 0,58,59 - 932 102 932 102 985 102 c 2,60,-1 - 1270 102 l 1,61,-1 - 1036 -254 l 1,62,-1 - 942 -254 l 1,63,-1 - 1055 0 l 1,27,28 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048C -Encoding: 1164 1164 739 -Width: 1153 -VWidth: 0 -Flags: W -HStem: 0 102<528 730> 799 102<713 885> 1085 102<356 487 778 920> 1393 41G<560 836> -VStem: 952 264<362 725> -LayerCount: 2 -Fore -SplineSet -1217 547 m 0,0,1 - 1217 482 1217 482 1193.5 409 c 128,-1,2 - 1170 336 1170 336 1122 263 c 128,-1,3 - 1074 190 1074 190 1008 131.5 c 128,-1,4 - 942 73 942 73 847.5 36.5 c 128,-1,5 - 753 0 753 0 647 0 c 2,6,-1 - 238 0 l 1,7,-1 - 487 1085 l 1,8,-1 - 332 1085 l 1,9,-1 - 356 1188 l 1,10,-1 - 512 1188 l 1,11,-1 - 569 1434 l 1,12,-1 - 836 1434 l 1,13,-1 - 778 1188 l 1,14,-1 - 944 1188 l 1,15,-1 - 920 1085 l 1,16,-1 - 754 1085 l 1,17,-1 - 713 901 l 1,18,-1 - 852 901 l 2,19,20 - 1024 901 1024 901 1120.5 797 c 128,-1,21 - 1217 693 1217 693 1217 547 c 0,0,1 -610 102 m 2,22,23 - 697 102 697 102 778 173.5 c 128,-1,24 - 859 245 859 245 905.5 351.5 c 128,-1,25 - 952 458 952 458 952 561 c 0,26,27 - 952 608 952 608 942 649 c 128,-1,28 - 932 690 932 690 911.5 724.5 c 128,-1,29 - 891 759 891 759 855 779 c 128,-1,30 - 819 799 819 799 770 799 c 2,31,-1 - 688 799 l 1,32,-1 - 528 102 l 1,33,-1 - 610 102 l 2,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048D -Encoding: 1165 1165 740 -Width: 999 -VWidth: 0 -Flags: W -HStem: -20 102<527 687> 481 102<593 751> 651 102<225 356 635 774> 860 41G<404 670> -VStem: 270 244<92 425> 764 256<200 476> -LayerCount: 2 -Fore -SplineSet -1020 381 m 0,0,1 - 1020 329 1020 329 1007 277.5 c 128,-1,2 - 994 226 994 226 959.5 171 c 128,-1,3 - 925 116 925 116 873.5 74.5 c 128,-1,4 - 822 33 822 33 736.5 6.5 c 128,-1,5 - 651 -20 651 -20 543 -20 c 0,6,7 - 515 -20 515 -20 485 -15.5 c 128,-1,8 - 455 -11 455 -11 414.5 5 c 128,-1,9 - 374 21 374 21 343.5 46.5 c 128,-1,10 - 313 72 313 72 291.5 120.5 c 128,-1,11 - 270 169 270 169 270 233 c 0,12,13 - 270 284 270 284 285 348 c 2,14,-1 - 356 651 l 1,15,-1 - 201 651 l 1,16,-1 - 225 754 l 1,17,-1 - 379 754 l 1,18,-1 - 414 901 l 1,19,-1 - 670 901 l 1,20,-1 - 635 754 l 1,21,-1 - 799 754 l 1,22,-1 - 774 651 l 1,23,-1 - 612 651 l 1,24,-1 - 592 567 l 1,25,26 - 655 584 655 584 696 584 c 0,27,28 - 866 584 866 584 943 534 c 128,-1,29 - 1020 484 1020 484 1020 381 c 0,0,1 -565 453 m 1,30,-1 - 524 276 l 2,31,32 - 514 235 514 235 514 190 c 0,33,34 - 514 82 514 82 606 82 c 0,35,36 - 650 82 650 82 683.5 120.5 c 128,-1,37 - 717 159 717 159 733 213 c 128,-1,38 - 749 267 749 267 756.5 309.5 c 128,-1,39 - 764 352 764 352 764 375 c 0,40,41 - 764 423 764 423 747 452 c 128,-1,42 - 730 481 730 481 696 481 c 0,43,44 - 623 481 623 481 565 453 c 1,30,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048E -Encoding: 1166 1166 741 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368> 655 102<532 695> 1331 102<666 881> -VStem: 940 266<953 1271> -LayerCount: 2 -Fore -SplineSet -696 768 m 1,0,-1 - 627 850 l 1,1,-1 - 805 973 l 1,2,-1 - 848 872 l 1,3,4 - 892 925 892 925 916 993.5 c 128,-1,5 - 940 1062 940 1062 940 1128 c 0,6,7 - 940 1215 940 1215 896.5 1273 c 128,-1,8 - 853 1331 853 1331 758 1331 c 2,9,-1 - 666 1331 l 1,10,-1 - 532 758 l 1,11,-1 - 625 758 l 2,12,13 - 658 758 658 758 696 768 c 1,0,-1 -780 666 m 1,14,15 - 712 655 712 655 664 655 c 2,16,-1 - 510 655 l 1,17,-1 - 358 0 l 1,18,-1 - 92 0 l 1,19,-1 - 424 1434 l 1,20,-1 - 844 1434 l 2,21,22 - 923 1434 923 1434 986 1416 c 128,-1,23 - 1049 1398 1049 1398 1089.5 1368.5 c 128,-1,24 - 1130 1339 1130 1339 1157 1299 c 128,-1,25 - 1184 1259 1184 1259 1195 1216.5 c 128,-1,26 - 1206 1174 1206 1174 1206 1128 c 0,27,28 - 1206 1011 1206 1011 1129.5 893.5 c 128,-1,29 - 1053 776 1053 776 918 711 c 1,30,-1 - 973 582 l 1,31,-1 - 897 528 l 1,32,-1 - 780 666 l 1,14,15 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048F -Encoding: 1167 1167 742 -Width: 1005 -VWidth: 0 -Flags: W -HStem: -16 102<451 596> 823 102<129 293 583 783> -VStem: 47 70<770 809> 807 248<366 760> -LayerCount: 2 -Fore -SplineSet -598 102 m 1,0,-1 - 500 219 l 1,1,-1 - 678 342 l 1,2,-1 - 719 246 l 1,3,4 - 763 339 763 339 785 458.5 c 128,-1,5 - 807 578 807 578 807 639 c 0,6,7 - 807 722 807 722 786 772.5 c 128,-1,8 - 765 823 765 823 723 823 c 0,9,10 - 663 823 663 823 620 804 c 128,-1,11 - 577 785 577 785 546.5 742 c 128,-1,12 - 516 699 516 699 495.5 644 c 128,-1,13 - 475 589 475 589 455 504 c 0,14,15 - 422 357 422 357 422 264 c 0,16,17 - 422 86 422 86 532 86 c 0,18,19 - 566 86 566 86 598 102 c 1,0,-1 -666 23 m 1,20,21 - 571 -16 571 -16 477 -16 c 0,22,23 - 398 -16 398 -16 340 8 c 1,24,-1 - 244 -410 l 1,25,-1 - -12 -410 l 1,26,-1 - 225 625 l 1,27,28 - 244 696 244 696 244 745 c 0,29,30 - 244 819 244 819 193 819 c 0,31,32 - 139 819 139 819 117 770 c 1,33,-1 - 47 770 l 1,34,35 - 59 828 59 828 120 875 c 128,-1,36 - 181 922 181 922 246 922 c 0,37,38 - 382 922 382 922 449 868 c 1,39,40 - 557 926 557 926 715 926 c 0,41,42 - 872 926 872 926 963.5 827 c 128,-1,43 - 1055 728 1055 728 1055 575 c 0,44,45 - 1055 433 1055 433 981 302.5 c 128,-1,46 - 907 172 907 172 786 88 c 1,47,-1 - 846 -49 l 1,48,-1 - 770 -102 l 1,49,-1 - 666 23 l 1,20,21 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0492 -Encoding: 1170 1170 743 -Width: 1136 -VWidth: 0 -Flags: W -HStem: 0 43G<272 548> 799 102<291 457 748 932> 1331 102<846 1407> -LayerCount: 2 -Fore -SplineSet -266 799 m 1,0,-1 - 291 901 l 1,1,-1 - 481 901 l 1,2,-1 - 604 1434 l 1,3,-1 - 1432 1434 l 1,4,-1 - 1407 1331 l 1,5,-1 - 846 1331 l 1,6,-1 - 748 901 l 1,7,-1 - 956 901 l 1,8,-1 - 932 799 l 1,9,-1 - 723 799 l 1,10,-1 - 539 0 l 1,11,-1 - 272 0 l 1,12,-1 - 457 799 l 1,13,-1 - 266 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0493 -Encoding: 1171 1171 744 -Width: 835 -VWidth: 0 -Flags: W -HStem: -20 102<411 606> 395 102<164 266 680 764> 819 102<385 580> -VStem: 131 270<91 265> 590 268<661 811> -LayerCount: 2 -Fore -SplineSet -590 741 m 0,0,1 - 590 771 590 771 568 795 c 128,-1,2 - 546 819 546 819 506 819 c 0,3,4 - 453 819 453 819 378 772.5 c 128,-1,5 - 303 726 303 726 276 678 c 1,6,-1 - 211 694 l 1,7,8 - 264 800 264 800 356 861 c 128,-1,9 - 448 922 448 922 557 922 c 0,10,11 - 642 922 642 922 703 909 c 128,-1,12 - 764 896 764 896 796.5 872.5 c 128,-1,13 - 829 849 829 849 843.5 822 c 128,-1,14 - 858 795 858 795 858 762 c 0,15,16 - 858 704 858 704 811.5 640.5 c 128,-1,17 - 765 577 765 577 680 498 c 1,18,-1 - 788 498 l 1,19,-1 - 764 395 l 1,20,-1 - 567 395 l 1,21,22 - 486 320 486 320 443.5 265 c 128,-1,23 - 401 210 401 210 401 162 c 0,24,25 - 401 128 401 128 422.5 105 c 128,-1,26 - 444 82 444 82 485 82 c 0,27,28 - 539 82 539 82 613.5 128 c 128,-1,29 - 688 174 688 174 713 221 c 1,30,-1 - 778 205 l 1,31,32 - 725 100 725 100 633.5 40 c 128,-1,33 - 542 -20 542 -20 434 -20 c 0,34,35 - 322 -20 322 -20 253.5 -0.5 c 128,-1,36 - 185 19 185 19 158 52 c 128,-1,37 - 131 85 131 85 131 135 c 0,38,39 - 131 249 131 249 266 395 c 1,40,-1 - 139 395 l 1,41,-1 - 164 498 l 1,42,-1 - 373 498 l 1,43,44 - 389 512 389 512 419.5 539 c 128,-1,45 - 450 566 450 566 465.5 580 c 128,-1,46 - 481 594 481 594 504.5 616.5 c 128,-1,47 - 528 639 528 639 540.5 653 c 128,-1,48 - 553 667 553 667 566 684 c 128,-1,49 - 579 701 579 701 584.5 715 c 128,-1,50 - 590 729 590 729 590 741 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0494 -Encoding: 1172 1172 745 -Width: 1341 -VWidth: 0 -Flags: W -HStem: -217 102<663 863> -59 41G<580 644> 0 43G<174 450> 819 102<696 1025> 1331 102<748 1309> -VStem: 1067 260<371 752> -LayerCount: 2 -Fore -SplineSet -606 723 m 1,0,-1 - 440 0 l 1,1,-1 - 174 0 l 1,2,-1 - 506 1434 l 1,3,-1 - 1333 1434 l 1,4,-1 - 1309 1331 l 1,5,-1 - 748 1331 l 1,6,-1 - 641 870 l 1,7,8 - 754 922 754 922 879 922 c 0,9,10 - 1008 922 1008 922 1107.5 886.5 c 128,-1,11 - 1207 851 1207 851 1267 775 c 128,-1,12 - 1327 699 1327 699 1327 592 c 0,13,14 - 1327 548 1327 548 1315 492 c 2,15,-1 - 1270 291 l 2,16,17 - 1243 173 1243 173 1194.5 81 c 128,-1,18 - 1146 -11 1146 -11 1090.5 -65.5 c 128,-1,19 - 1035 -120 1035 -120 968 -155.5 c 128,-1,20 - 901 -191 901 -191 842 -204 c 128,-1,21 - 783 -217 783 -217 723 -217 c 0,22,23 - 665 -217 665 -217 601 -191.5 c 128,-1,24 - 537 -166 537 -166 502 -125 c 1,25,-1 - 629 -18 l 1,26,27 - 653 -68 653 -68 688 -91.5 c 128,-1,28 - 723 -115 723 -115 776 -115 c 0,29,30 - 911 -115 911 -115 993 246 c 1,31,-1 - 1044 467 l 2,32,33 - 1067 568 1067 568 1067 639 c 0,34,35 - 1067 740 1067 740 1020.5 779.5 c 128,-1,36 - 974 819 974 819 885 819 c 0,37,38 - 816 819 816 819 742 793.5 c 128,-1,39 - 668 768 668 768 606 723 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0495 -Encoding: 1173 1173 746 -Width: 1136 -VWidth: 0 -Flags: W -HStem: -236 102<525 691> 0 43G<123 388> 487 102<544 790> 799 102<563 899> -VStem: 813 246<82 464> -LayerCount: 2 -Fore -SplineSet -1059 297 m 0,0,1 - 1059 185 1059 185 1018 84.5 c 128,-1,2 - 977 -16 977 -16 909 -85.5 c 128,-1,3 - 841 -155 841 -155 752.5 -195.5 c 128,-1,4 - 664 -236 664 -236 571 -236 c 0,5,6 - 503 -236 503 -236 448.5 -211.5 c 128,-1,7 - 394 -187 394 -187 373 -143 c 1,8,-1 - 500 -37 l 1,9,10 - 519 -92 519 -92 546 -112.5 c 128,-1,11 - 573 -133 573 -133 627 -133 c 0,12,13 - 671 -133 671 -133 708.5 -73 c 128,-1,14 - 746 -13 746 -13 767.5 70.5 c 128,-1,15 - 789 154 789 154 801 230.5 c 128,-1,16 - 813 307 813 307 813 352 c 0,17,18 - 813 427 813 427 784.5 457 c 128,-1,19 - 756 487 756 487 700 487 c 0,20,21 - 636 487 636 487 587.5 465.5 c 128,-1,22 - 539 444 539 444 469 393 c 1,23,-1 - 379 0 l 1,24,-1 - 123 0 l 1,25,-1 - 332 901 l 1,26,-1 - 924 901 l 1,27,-1 - 899 799 l 1,28,-1 - 563 799 l 1,29,-1 - 504 541 l 1,30,31 - 565 569 565 569 602 579.5 c 128,-1,32 - 639 590 639 590 692 590 c 0,33,34 - 872 590 872 590 965.5 516.5 c 128,-1,35 - 1059 443 1059 443 1059 297 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0496 -Encoding: 1174 1174 747 -Width: 1525 -VWidth: 0 -Flags: W -HStem: 0 43G<37 307 627 900> 1331 102<389 425 1685 1767> -VStem: 1214 268<0 209> 1372 158<-320 -186> -LayerCount: 2 -Fore -SplineSet -1081 825 m 1,0,1 - 1113 859 1113 859 1159 926 c 128,-1,2 - 1205 993 1205 993 1245 1056.5 c 128,-1,3 - 1285 1120 1285 1120 1344 1190.5 c 128,-1,4 - 1403 1261 1403 1261 1464 1313 c 128,-1,5 - 1525 1365 1525 1365 1611 1399.5 c 128,-1,6 - 1697 1434 1697 1434 1792 1434 c 1,7,-1 - 1767 1331 l 1,8,9 - 1720 1331 1720 1331 1666.5 1283 c 128,-1,10 - 1613 1235 1613 1235 1556.5 1159.5 c 128,-1,11 - 1500 1084 1500 1084 1440.5 1002.5 c 128,-1,12 - 1381 921 1381 921 1302.5 840.5 c 128,-1,13 - 1224 760 1224 760 1147 717 c 1,14,15 - 1219 661 1219 661 1285 555.5 c 128,-1,16 - 1351 450 1351 450 1392.5 343.5 c 128,-1,17 - 1434 237 1434 237 1458.5 146.5 c 128,-1,18 - 1483 56 1483 56 1483 14 c 0,19,20 - 1483 11 1483 11 1482 6.5 c 128,-1,21 - 1481 2 1481 2 1481 0 c 2,22,-1 - 1440 -125 l 1,23,24 - 1485 -141 1485 -141 1507.5 -174 c 128,-1,25 - 1530 -207 1530 -207 1530 -238 c 0,26,27 - 1530 -287 1530 -287 1476 -329 c 128,-1,28 - 1422 -371 1422 -371 1350 -397 c 1,29,-1 - 1294 -373 l 1,30,31 - 1324 -353 1324 -353 1348 -320.5 c 128,-1,32 - 1372 -288 1372 -288 1372 -254 c 0,33,34 - 1372 -194 1372 -194 1280 -164 c 1,35,-1 - 1346 0 l 1,36,-1 - 1214 0 l 1,37,-1 - 1214 10 l 2,38,39 - 1214 44 1214 44 1202 124 c 128,-1,40 - 1190 204 1190 204 1169.5 302.5 c 128,-1,41 - 1149 401 1149 401 1113.5 496 c 128,-1,42 - 1078 591 1078 591 1038 635 c 1,43,-1 - 891 0 l 1,44,-1 - 627 0 l 1,45,-1 - 774 635 l 1,46,47 - 710 588 710 588 624.5 484.5 c 128,-1,48 - 539 381 539 381 471.5 279 c 128,-1,49 - 404 177 404 177 355 96 c 128,-1,50 - 306 15 306 15 303 0 c 1,51,-1 - 37 0 l 1,52,53 - 43 27 43 27 107 117.5 c 128,-1,54 - 171 208 171 208 262.5 319 c 128,-1,55 - 354 430 354 430 475.5 544 c 128,-1,56 - 597 658 597 658 700 717 c 1,57,58 - 643 760 643 760 602 840.5 c 128,-1,59 - 561 921 561 921 539.5 1002.5 c 128,-1,60 - 518 1084 518 1084 497 1159.5 c 128,-1,61 - 476 1235 476 1235 444 1283 c 128,-1,62 - 412 1331 412 1331 365 1331 c 1,63,-1 - 389 1434 l 1,64,65 - 461 1434 461 1434 518.5 1414.5 c 128,-1,66 - 576 1395 576 1395 613 1362.5 c 128,-1,67 - 650 1330 650 1330 679 1284.5 c 128,-1,68 - 708 1239 708 1239 723.5 1191 c 128,-1,69 - 739 1143 739 1143 752.5 1089.5 c 128,-1,70 - 766 1036 766 1036 773.5 990 c 128,-1,71 - 781 944 781 944 792.5 898.5 c 128,-1,72 - 804 853 804 853 817 825 c 1,73,-1 - 958 1434 l 1,74,-1 - 1223 1434 l 1,75,-1 - 1081 825 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0497 -Encoding: 1175 1175 748 -Width: 1288 -VWidth: 0 -Flags: W -HStem: -20 102<41 151> 0 43G<516 782> 799 102<279 336 1302 1403> -VStem: -33 74<85 131> 995 225<0 184> 1108 158<-320 -186> -LayerCount: 2 -Fore -SplineSet -602 371 m 1,0,1 - 533 316 533 316 476 250.5 c 128,-1,2 - 419 185 419 185 388 141 c 128,-1,3 - 357 97 357 97 319.5 58 c 128,-1,4 - 282 19 282 19 230 -0.5 c 128,-1,5 - 178 -20 178 -20 100 -20 c 0,6,7 - 42 -20 42 -20 4.5 13 c 128,-1,8 - -33 46 -33 46 -33 98 c 0,9,10 - -33 111 -33 111 -29 131 c 1,11,-1 - 41 131 l 1,12,-1 - 41 123 l 2,13,14 - 41 106 41 106 56.5 94 c 128,-1,15 - 72 82 72 82 94 82 c 0,16,17 - 118 82 118 82 143 113 c 1,18,19 - 294 313 294 313 473 453 c 1,20,21 - 441 486 441 486 419.5 535.5 c 128,-1,22 - 398 585 398 585 387 628.5 c 128,-1,23 - 376 672 376 672 362.5 712 c 128,-1,24 - 349 752 349 752 322.5 775.5 c 128,-1,25 - 296 799 296 799 254 799 c 1,26,-1 - 279 901 l 1,27,28 - 358 901 358 901 415 880 c 128,-1,29 - 472 859 472 859 502 827 c 128,-1,30 - 532 795 532 795 553.5 751 c 128,-1,31 - 575 707 575 707 584 667.5 c 128,-1,32 - 593 628 593 628 607 586.5 c 128,-1,33 - 621 545 621 545 637 522 c 1,34,-1 - 725 901 l 1,35,-1 - 981 901 l 1,36,-1 - 893 522 l 1,37,38 - 923 548 923 548 963 601.5 c 128,-1,39 - 1003 655 1003 655 1041 702.5 c 128,-1,40 - 1079 750 1079 750 1131 797 c 128,-1,41 - 1183 844 1183 844 1258.5 872.5 c 128,-1,42 - 1334 901 1334 901 1427 901 c 1,43,-1 - 1403 799 l 1,44,45 - 1361 799 1361 799 1324 775.5 c 128,-1,46 - 1287 752 1287 752 1254.5 712 c 128,-1,47 - 1222 672 1222 672 1191 628.5 c 128,-1,48 - 1160 585 1160 585 1115.5 535.5 c 128,-1,49 - 1071 486 1071 486 1024 453 c 1,50,51 - 1108 353 1108 353 1164.5 217.5 c 128,-1,52 - 1221 82 1221 82 1221 16 c 0,53,54 - 1221 13 1221 13 1220 7.5 c 128,-1,55 - 1219 2 1219 2 1219 0 c 1,56,-1 - 1217 0 l 1,57,-1 - 1176 -125 l 1,58,59 - 1221 -141 1221 -141 1243.5 -174 c 128,-1,60 - 1266 -207 1266 -207 1266 -238 c 0,61,62 - 1266 -287 1266 -287 1211.5 -329 c 128,-1,63 - 1157 -371 1157 -371 1085 -397 c 1,64,-1 - 1030 -373 l 1,65,66 - 1060 -353 1060 -353 1084 -320.5 c 128,-1,67 - 1108 -288 1108 -288 1108 -254 c 0,68,69 - 1108 -194 1108 -194 1016 -164 c 1,70,-1 - 1081 0 l 1,71,-1 - 993 0 l 1,72,73 - 995 8 995 8 995 27 c 0,74,75 - 995 92 995 92 954 196.5 c 128,-1,76 - 913 301 913 301 858 371 c 1,77,-1 - 772 0 l 1,78,-1 - 516 0 l 1,79,-1 - 602 371 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0498 -Encoding: 1176 1176 749 -Width: 1017 -VWidth: 0 -Flags: W -HStem: 799 102<551 707> 1352 102<630 870> -VStem: 436 158<-320 -186> 801 268<353 704> 899 264<1056 1329> -LayerCount: 2 -Fore -SplineSet -401 -18 m 1,0,1 - 146 1 146 1 106 244 c 1,2,-1 - 307 295 l 1,3,-1 - 307 285 l 2,4,5 - 307 180 307 180 348 131 c 128,-1,6 - 389 82 389 82 487 82 c 0,7,8 - 552 82 552 82 626.5 152.5 c 128,-1,9 - 701 223 701 223 751 328.5 c 128,-1,10 - 801 434 801 434 801 526 c 0,11,12 - 801 582 801 582 789.5 626.5 c 128,-1,13 - 778 671 778 671 762 699 c 128,-1,14 - 746 727 746 727 719 747.5 c 128,-1,15 - 692 768 692 768 670.5 777.5 c 128,-1,16 - 649 787 649 787 617.5 792.5 c 128,-1,17 - 586 798 586 798 569 798.5 c 128,-1,18 - 552 799 552 799 526 799 c 1,19,-1 - 551 901 l 1,20,21 - 626 901 626 901 687 921.5 c 128,-1,22 - 748 942 748 942 786.5 973.5 c 128,-1,23 - 825 1005 825 1005 851 1046.5 c 128,-1,24 - 877 1088 877 1088 888 1128 c 128,-1,25 - 899 1168 899 1168 899 1206 c 0,26,27 - 899 1270 899 1270 870 1311 c 128,-1,28 - 841 1352 841 1352 797 1352 c 0,29,30 - 724 1352 724 1352 673 1330.5 c 128,-1,31 - 622 1309 622 1309 594 1278 c 128,-1,32 - 566 1247 566 1247 539 1194 c 1,33,-1 - 385 1239 l 1,34,35 - 465 1343 465 1343 578.5 1398.5 c 128,-1,36 - 692 1454 692 1454 803 1454 c 0,37,38 - 979 1454 979 1454 1071 1378 c 128,-1,39 - 1163 1302 1163 1302 1163 1190 c 0,40,41 - 1163 1089 1163 1089 1091 995 c 128,-1,42 - 1019 901 1019 901 891 850 c 1,43,44 - 985 801 985 801 1027 717 c 128,-1,45 - 1069 633 1069 633 1069 537 c 0,46,47 - 1069 451 1069 451 1028.5 360.5 c 128,-1,48 - 988 270 988 270 919 194 c 128,-1,49 - 850 118 850 118 750.5 62 c 128,-1,50 - 651 6 651 6 541 -12 c 1,51,-1 - 504 -125 l 1,52,53 - 549 -141 549 -141 571.5 -174 c 128,-1,54 - 594 -207 594 -207 594 -238 c 0,55,56 - 594 -287 594 -287 540 -329 c 128,-1,57 - 486 -371 486 -371 414 -397 c 1,58,-1 - 358 -373 l 1,59,60 - 388 -353 388 -353 412 -320.5 c 128,-1,61 - 436 -288 436 -288 436 -254 c 0,62,63 - 436 -194 436 -194 344 -164 c 1,64,-1 - 401 -18 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0499 -Encoding: 1177 1177 750 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<326 401 541 553> 451 102<422 598> 819 102<480 671> -VStem: 436 158<-320 -186> 623 256<163 425> 674 254<620 818> -LayerCount: 2 -Fore -SplineSet -401 -20 m 1,0,1 - 281 -20 281 -20 203.5 40.5 c 128,-1,2 - 126 101 126 101 102 178 c 1,3,-1 - 268 221 l 1,4,5 - 281 162 281 162 328.5 122 c 128,-1,6 - 376 82 376 82 451 82 c 0,7,8 - 494 82 494 82 527 104 c 128,-1,9 - 560 126 560 126 577.5 156 c 128,-1,10 - 595 186 595 186 606 223.5 c 128,-1,11 - 617 261 617 261 620 285.5 c 128,-1,12 - 623 310 623 310 623 328 c 0,13,14 - 623 451 623 451 471 451 c 2,15,-1 - 399 451 l 1,16,-1 - 422 553 l 1,17,-1 - 479 553 l 2,18,19 - 537 553 537 553 578.5 575.5 c 128,-1,20 - 620 598 620 598 639 632.5 c 128,-1,21 - 658 667 658 667 666 697.5 c 128,-1,22 - 674 728 674 728 674 756 c 0,23,24 - 674 819 674 819 621 819 c 0,25,26 - 537 819 537 819 494 787.5 c 128,-1,27 - 451 756 451 756 426 696 c 1,28,-1 - 270 735 l 1,29,30 - 315 814 315 814 404.5 868 c 128,-1,31 - 494 922 494 922 621 922 c 0,32,33 - 778 922 778 922 853 874.5 c 128,-1,34 - 928 827 928 827 928 745 c 0,35,36 - 928 603 928 603 743 512 c 1,37,38 - 879 451 879 451 879 319 c 0,39,40 - 879 281 879 281 869.5 243.5 c 128,-1,41 - 860 206 860 206 835.5 165 c 128,-1,42 - 811 124 811 124 774 90.5 c 128,-1,43 - 737 57 737 57 677 29.5 c 128,-1,44 - 617 2 617 2 541 -10 c 1,45,-1 - 504 -125 l 1,46,47 - 549 -141 549 -141 571.5 -174 c 128,-1,48 - 594 -207 594 -207 594 -238 c 0,49,50 - 594 -287 594 -287 540 -329 c 128,-1,51 - 486 -371 486 -371 414 -397 c 1,52,-1 - 358 -373 l 1,53,54 - 388 -353 388 -353 412 -320.5 c 128,-1,55 - 436 -288 436 -288 436 -254 c 0,56,57 - 436 -194 436 -194 344 -164 c 1,58,-1 - 401 -20 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049A -Encoding: 1178 1178 751 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368> 1393 41G<414 690 1140 1458> -VStem: 1001 158<-320 -186> -LayerCount: 2 -Fore -SplineSet -1069 -125 m 1,0,1 - 1114 -141 1114 -141 1136.5 -174 c 128,-1,2 - 1159 -207 1159 -207 1159 -238 c 0,3,4 - 1159 -287 1159 -287 1105 -329 c 128,-1,5 - 1051 -371 1051 -371 979 -397 c 1,6,-1 - 924 -373 l 1,7,8 - 954 -353 954 -353 977.5 -320.5 c 128,-1,9 - 1001 -288 1001 -288 1001 -254 c 0,10,11 - 1001 -194 1001 -194 909 -164 c 1,12,-1 - 981 16 l 1,13,14 - 911 36 911 36 861.5 82 c 128,-1,15 - 812 128 812 128 786.5 186 c 128,-1,16 - 761 244 761 244 745.5 310 c 128,-1,17 - 730 376 730 376 722.5 440 c 128,-1,18 - 715 504 715 504 707 558.5 c 128,-1,19 - 699 613 699 613 682 652 c 128,-1,20 - 665 691 665 691 637 702 c 1,21,-1 - 492 571 l 1,22,-1 - 358 0 l 1,23,-1 - 92 0 l 1,24,-1 - 424 1434 l 1,25,-1 - 690 1434 l 1,26,-1 - 561 877 l 1,27,-1 - 1186 1434 l 1,28,-1 - 1458 1434 l 1,29,-1 - 760 813 l 1,30,31 - 835 792 835 792 884 742.5 c 128,-1,32 - 933 693 933 693 954 630.5 c 128,-1,33 - 975 568 975 568 986.5 497 c 128,-1,34 - 998 426 998 426 1004 359.5 c 128,-1,35 - 1010 293 1010 293 1020.5 239 c 128,-1,36 - 1031 185 1031 185 1059.5 152 c 128,-1,37 - 1088 119 1088 119 1137 119 c 1,38,-1 - 1069 -125 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049B -Encoding: 1179 1179 752 -Width: 917 -VWidth: 0 -Flags: W -HStem: 0 43G<82 347> 860 41G<281 547 745 1020> -VStem: 739 158<-320 -186> -LayerCount: 2 -Fore -SplineSet -483 627 m 1,0,-1 - 791 901 l 1,1,-1 - 1020 901 l 1,2,-1 - 571 502 l 1,3,-1 - 848 0 l 1,4,-1 - 807 -125 l 1,5,6 - 852 -141 852 -141 874.5 -174 c 128,-1,7 - 897 -207 897 -207 897 -238 c 0,8,9 - 897 -287 897 -287 843 -329 c 128,-1,10 - 789 -371 789 -371 717 -397 c 1,11,-1 - 662 -373 l 1,12,13 - 692 -353 692 -353 715.5 -320.5 c 128,-1,14 - 739 -288 739 -288 739 -254 c 0,15,16 - 739 -194 739 -194 647 -164 c 1,17,-1 - 713 0 l 1,18,-1 - 631 0 l 1,19,-1 - 424 371 l 1,20,-1 - 338 0 l 1,21,-1 - 82 0 l 1,22,-1 - 291 901 l 1,23,-1 - 547 901 l 1,24,-1 - 483 627 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049C -Encoding: 1180 1180 753 -Width: 1454 -VWidth: 0 -Flags: W -HStem: 0 119<1357 1409> 700 135<633 705> 1393 41G<496 772 1302 1755> -LayerCount: 2 -Fore -SplineSet -440 0 m 1,0,-1 - 174 0 l 1,1,-1 - 506 1434 l 1,2,-1 - 772 1434 l 1,3,-1 - 633 836 l 1,4,-1 - 735 836 l 1,5,-1 - 793 1085 l 1,6,-1 - 907 1085 l 1,7,-1 - 862 891 l 1,8,9 - 962 966 962 966 1485 1434 c 1,10,-1 - 1755 1434 l 1,11,-1 - 1063 817 l 1,12,13 - 1131 799 1131 799 1176.5 750.5 c 128,-1,14 - 1222 702 1222 702 1243.5 639 c 128,-1,15 - 1265 576 1265 576 1278 504.5 c 128,-1,16 - 1291 433 1291 433 1299.5 365 c 128,-1,17 - 1308 297 1308 297 1321 241.5 c 128,-1,18 - 1334 186 1334 186 1362 152.5 c 128,-1,19 - 1390 119 1390 119 1436 119 c 1,20,-1 - 1409 0 l 1,21,22 - 1316 0 1316 0 1248.5 24 c 128,-1,23 - 1181 48 1181 48 1144 88.5 c 128,-1,24 - 1107 129 1107 129 1083.5 181 c 128,-1,25 - 1060 233 1060 233 1050 291 c 128,-1,26 - 1040 349 1040 349 1032.5 407 c 128,-1,27 - 1025 465 1025 465 1013.5 517.5 c 128,-1,28 - 1002 570 1002 570 982 610.5 c 128,-1,29 - 962 651 962 651 921 675.5 c 128,-1,30 - 880 700 880 700 819 700 c 1,31,-1 - 762 455 l 1,32,-1 - 647 455 l 1,33,-1 - 705 700 l 1,34,-1 - 602 700 l 1,35,-1 - 440 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049D -Encoding: 1181 1181 754 -Width: 1255 -VWidth: 0 -Flags: W -HStem: 0 43G<147 413 947 1188> 451 102<530 580> 860 41G<347 612 1084 1360> -LayerCount: 2 -Fore -SplineSet -403 0 m 1,0,-1 - 147 0 l 1,1,-1 - 356 901 l 1,2,-1 - 612 901 l 1,3,-1 - 530 553 l 1,4,-1 - 602 553 l 1,5,-1 - 664 815 l 1,6,-1 - 778 815 l 1,7,-1 - 717 553 l 1,8,-1 - 737 553 l 1,9,-1 - 1130 901 l 1,10,-1 - 1360 901 l 1,11,-1 - 911 502 l 1,12,-1 - 1188 0 l 1,13,-1 - 971 0 l 1,14,-1 - 713 451 l 1,15,-1 - 694 451 l 1,16,-1 - 633 184 l 1,17,-1 - 518 184 l 1,18,-1 - 580 451 l 1,19,-1 - 508 451 l 1,20,-1 - 403 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049E -Encoding: 1182 1182 755 -Width: 1316 -VWidth: 0 -Flags: W -HStem: 0 119<1142 1188> 1151 102<303 436 727 852> 1393 41G<492 768 1218 1536> -LayerCount: 2 -Fore -SplineSet -279 1151 m 1,0,-1 - 303 1253 l 1,1,-1 - 461 1253 l 1,2,-1 - 502 1434 l 1,3,-1 - 768 1434 l 1,4,-1 - 727 1253 l 1,5,-1 - 877 1253 l 1,6,-1 - 852 1151 l 1,7,-1 - 702 1151 l 1,8,-1 - 639 877 l 1,9,-1 - 1264 1434 l 1,10,-1 - 1536 1434 l 1,11,-1 - 838 813 l 1,12,13 - 913 792 913 792 962 742.5 c 128,-1,14 - 1011 693 1011 693 1032 630.5 c 128,-1,15 - 1053 568 1053 568 1064 497 c 128,-1,16 - 1075 426 1075 426 1081 359.5 c 128,-1,17 - 1087 293 1087 293 1098 239 c 128,-1,18 - 1109 185 1109 185 1137 152 c 128,-1,19 - 1165 119 1165 119 1214 119 c 1,20,-1 - 1188 0 l 1,21,22 - 1085 0 1085 0 1011.5 35.5 c 128,-1,23 - 938 71 938 71 900 128.5 c 128,-1,24 - 862 186 862 186 839 256 c 128,-1,25 - 816 326 816 326 806.5 399.5 c 128,-1,26 - 797 473 797 473 789 535 c 128,-1,27 - 781 597 781 597 763.5 643.5 c 128,-1,28 - 746 690 746 690 715 702 c 1,29,-1 - 569 571 l 1,30,-1 - 436 0 l 1,31,-1 - 170 0 l 1,32,-1 - 436 1151 l 1,33,-1 - 279 1151 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049F -Encoding: 1183 1183 756 -Width: 1099 -VWidth: 0 -Flags: W -HStem: 0 43G<262 528 778 1028> 860 41G<914 1200> 983 102<299 489 768 946> 1270 102<408 623> -VStem: 332 70<1221 1259> 528 260<1087 1268> -LayerCount: 2 -Fore -SplineSet -971 1085 m 1,0,-1 - 946 983 l 1,1,-1 - 745 983 l 1,2,-1 - 666 639 l 1,3,-1 - 961 901 l 1,4,-1 - 1200 901 l 1,5,-1 - 750 502 l 1,6,-1 - 1028 0 l 1,7,-1 - 801 0 l 1,8,-1 - 600 356 l 1,9,-1 - 518 0 l 1,10,-1 - 262 0 l 1,11,-1 - 489 983 l 1,12,-1 - 274 983 l 1,13,-1 - 299 1085 l 1,14,-1 - 512 1085 l 1,15,16 - 528 1167 528 1167 528 1196 c 0,17,18 - 528 1270 528 1270 477 1270 c 0,19,20 - 423 1270 423 1270 401 1221 c 1,21,-1 - 332 1221 l 1,22,23 - 344 1279 344 1279 404.5 1325.5 c 128,-1,24 - 465 1372 465 1372 530 1372 c 0,25,26 - 661 1372 661 1372 724.5 1324 c 128,-1,27 - 788 1276 788 1276 788 1196 c 0,28,29 - 788 1166 788 1166 780 1139 c 1,30,-1 - 768 1085 l 1,31,-1 - 971 1085 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A0 -Encoding: 1184 1184 757 -Width: 1546 -VWidth: 0 -Flags: W -HStem: 0 119<1454 1499> 1331 102<352 788> -LayerCount: 2 -Fore -SplineSet -748 0 m 1,0,-1 - 481 0 l 1,1,-1 - 788 1331 l 1,2,-1 - 328 1331 l 1,3,-1 - 352 1434 l 1,4,-1 - 1079 1434 l 1,5,-1 - 950 877 l 1,6,-1 - 1575 1434 l 1,7,-1 - 1847 1434 l 1,8,-1 - 1149 813 l 1,9,10 - 1224 792 1224 792 1273 742.5 c 128,-1,11 - 1322 693 1322 693 1343 630.5 c 128,-1,12 - 1364 568 1364 568 1375 497 c 128,-1,13 - 1386 426 1386 426 1392 359.5 c 128,-1,14 - 1398 293 1398 293 1409 239 c 128,-1,15 - 1420 185 1420 185 1448.5 152 c 128,-1,16 - 1477 119 1477 119 1526 119 c 1,17,-1 - 1499 0 l 1,18,19 - 1396 0 1396 0 1322.5 35.5 c 128,-1,20 - 1249 71 1249 71 1211 128.5 c 128,-1,21 - 1173 186 1173 186 1150 256 c 128,-1,22 - 1127 326 1127 326 1117.5 399.5 c 128,-1,23 - 1108 473 1108 473 1100 535 c 128,-1,24 - 1092 597 1092 597 1074.5 643.5 c 128,-1,25 - 1057 690 1057 690 1026 702 c 1,26,-1 - 879 571 l 1,27,-1 - 748 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A1 -Encoding: 1185 1185 758 -Width: 1163 -VWidth: 0 -Flags: W -HStem: 0 43G<330 595 856 1096> 799 102<240 514> -LayerCount: 2 -Fore -SplineSet -731 627 m 1,0,-1 - 1038 901 l 1,1,-1 - 1268 901 l 1,2,-1 - 819 502 l 1,3,-1 - 1096 0 l 1,4,-1 - 879 0 l 1,5,-1 - 672 371 l 1,6,-1 - 586 0 l 1,7,-1 - 330 0 l 1,8,-1 - 514 799 l 1,9,-1 - 215 799 l 1,10,-1 - 240 901 l 1,11,-1 - 795 901 l 1,12,-1 - 731 627 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A2 -Encoding: 1186 1186 759 -Width: 1189 -VWidth: 0 -Flags: W -HStem: 0 43G<82 358> 717 102<537 989> 1393 41G<404 680 1146 1421> -VStem: 981 158<-320 -186> -LayerCount: 2 -Fore -SplineSet -680 1434 m 1,0,-1 - 537 819 l 1,1,-1 - 1012 819 l 1,2,-1 - 1155 1434 l 1,3,-1 - 1421 1434 l 1,4,-1 - 1090 0 l 5,5,-1 - 1049 -125 l 5,6,7 - 1094 -141 1094 -141 1116.5 -174 c 132,-1,8 - 1139 -207 1139 -207 1139 -238 c 4,9,10 - 1139 -287 1139 -287 1084.5 -329 c 132,-1,11 - 1030 -371 1030 -371 958 -397 c 5,12,-1 - 903 -373 l 5,13,14 - 933 -353 933 -353 957 -320.5 c 132,-1,15 - 981 -288 981 -288 981 -254 c 4,16,17 - 981 -194 981 -194 889 -164 c 5,18,-1 - 954 0 l 5,19,-1 - 823 0 l 1,20,-1 - 989 717 l 1,21,-1 - 514 717 l 1,22,-1 - 348 0 l 1,23,-1 - 82 0 l 1,24,-1 - 414 1434 l 1,25,-1 - 680 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A3 -Encoding: 1187 1187 760 -Width: 1130 -VWidth: 0 -Flags: W -HStem: 0 43G<92 358> 440 102<473 750> 860 41G<292 557 846 1112> -VStem: 688 268<83 367> 907 158<-314 -180> 1077 70<93 131> -LayerCount: 2 -Fore -SplineSet -967 276 m 1,0,1 - 956 223 956 223 956 184 c 0,2,3 - 956 82 956 82 999 82 c 0,4,5 - 1026 82 1026 82 1049.5 96.5 c 128,-1,6 - 1073 111 1073 111 1077 131 c 1,7,-1 - 1147 131 l 1,8,9 - 1135 83 1135 83 1098 45.5 c 128,-1,10 - 1061 8 1061 8 1010 -10 c 1,11,-1 - 975 -119 l 1,12,13 - 1020 -135 1020 -135 1042.5 -167.5 c 128,-1,14 - 1065 -200 1065 -200 1065 -231 c 0,15,16 - 1065 -280 1065 -280 1010.5 -322.5 c 128,-1,17 - 956 -365 956 -365 885 -391 c 1,18,-1 - 829 -367 l 1,19,20 - 859 -347 859 -347 883 -314.5 c 128,-1,21 - 907 -282 907 -282 907 -248 c 0,22,23 - 907 -188 907 -188 815 -158 c 1,24,-1 - 872 -16 l 1,25,26 - 782 -6 782 -6 735 31 c 128,-1,27 - 688 68 688 68 688 143 c 0,28,29 - 688 177 688 177 696 213 c 2,30,-1 - 750 440 l 1,31,-1 - 451 440 l 1,32,-1 - 348 0 l 1,33,-1 - 92 0 l 1,34,-1 - 301 901 l 1,35,-1 - 557 901 l 1,36,-1 - 473 543 l 1,37,-1 - 772 543 l 1,38,-1 - 856 901 l 1,39,-1 - 1112 901 l 1,40,-1 - 967 276 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A4 -Encoding: 1188 1188 761 -Width: 1779 -VWidth: 0 -Flags: W -HStem: 0 43G<174 450 915 1191> 717 102<629 1081> 1331 102<1489 2050> -LayerCount: 2 -Fore -SplineSet -772 1434 m 1,0,-1 - 629 819 l 1,1,-1 - 1104 819 l 1,2,-1 - 1247 1434 l 1,3,-1 - 2075 1434 l 1,4,-1 - 2050 1331 l 1,5,-1 - 1489 1331 l 1,6,-1 - 1182 0 l 1,7,-1 - 915 0 l 1,8,-1 - 1081 717 l 1,9,-1 - 606 717 l 1,10,-1 - 440 0 l 1,11,-1 - 174 0 l 1,12,-1 - 506 1434 l 1,13,-1 - 772 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A5 -Encoding: 1189 1189 762 -Width: 1323 -VWidth: 0 -Flags: W -HStem: 0 43G<123 388 678 943> 440 102<504 780> 799 102<1118 1454> -LayerCount: 2 -Fore -SplineSet -332 901 m 1,0,-1 - 588 901 l 1,1,-1 - 504 543 l 1,2,-1 - 803 543 l 1,3,-1 - 887 901 l 1,4,-1 - 1479 901 l 1,5,-1 - 1454 799 l 1,6,-1 - 1118 799 l 1,7,-1 - 934 0 l 1,8,-1 - 678 0 l 1,9,-1 - 780 440 l 1,10,-1 - 481 440 l 1,11,-1 - 379 0 l 1,12,-1 - 123 0 l 1,13,-1 - 332 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A6 -Encoding: 1190 1190 763 -Width: 2050 -VWidth: 0 -Flags: W -HStem: -217 102<1372 1572> -59 41G<1289 1353> 0 43G<174 450 883 1158> 819 102<1404 1733> 1331 102<748 1190> -VStem: 1776 260<371 752> -LayerCount: 2 -Fore -SplineSet -174 0 m 1,0,-1 - 506 1434 l 1,1,-1 - 1481 1434 l 1,2,-1 - 1350 870 l 1,3,4 - 1463 922 1463 922 1587 922 c 0,5,6 - 1716 922 1716 922 1815.5 886.5 c 128,-1,7 - 1915 851 1915 851 1975.5 775 c 128,-1,8 - 2036 699 2036 699 2036 592 c 0,9,10 - 2036 552 2036 552 2023 492 c 2,11,-1 - 1978 291 l 2,12,13 - 1952 173 1952 173 1903.5 80.5 c 128,-1,14 - 1855 -12 1855 -12 1799.5 -66.5 c 128,-1,15 - 1744 -121 1744 -121 1677 -156.5 c 128,-1,16 - 1610 -192 1610 -192 1551 -204.5 c 128,-1,17 - 1492 -217 1492 -217 1432 -217 c 0,18,19 - 1374 -217 1374 -217 1309.5 -191.5 c 128,-1,20 - 1245 -166 1245 -166 1210 -125 c 1,21,-1 - 1337 -18 l 1,22,23 - 1383 -115 1383 -115 1485 -115 c 0,24,25 - 1620 -115 1620 -115 1702 246 c 1,26,-1 - 1753 467 l 2,27,28 - 1776 568 1776 568 1776 639 c 0,29,30 - 1776 740 1776 740 1729 779.5 c 128,-1,31 - 1682 819 1682 819 1593 819 c 0,32,33 - 1525 819 1525 819 1451 793.5 c 128,-1,34 - 1377 768 1377 768 1315 723 c 1,35,-1 - 1149 0 l 1,36,-1 - 883 0 l 1,37,-1 - 1190 1331 l 1,38,-1 - 748 1331 l 1,39,-1 - 440 0 l 1,40,-1 - 174 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A7 -Encoding: 1191 1191 764 -Width: 1691 -VWidth: 0 -Flags: W -HStem: -236 102<1080 1246> 0 43G<123 388 678 943> 487 102<1099 1345> 799 102<563 862> -VStem: 1368 246<82 464> -LayerCount: 2 -Fore -SplineSet -1614 297 m 0,0,1 - 1614 185 1614 185 1573 84.5 c 128,-1,2 - 1532 -16 1532 -16 1464 -85.5 c 128,-1,3 - 1396 -155 1396 -155 1307.5 -195.5 c 128,-1,4 - 1219 -236 1219 -236 1126 -236 c 0,5,6 - 1058 -236 1058 -236 1003.5 -211.5 c 128,-1,7 - 949 -187 949 -187 928 -143 c 1,8,-1 - 1055 -37 l 1,9,10 - 1074 -92 1074 -92 1101 -112.5 c 128,-1,11 - 1128 -133 1128 -133 1182 -133 c 0,12,13 - 1226 -133 1226 -133 1263.5 -73 c 128,-1,14 - 1301 -13 1301 -13 1322.5 70.5 c 128,-1,15 - 1344 154 1344 154 1356 230.5 c 128,-1,16 - 1368 307 1368 307 1368 352 c 0,17,18 - 1368 427 1368 427 1339.5 457 c 128,-1,19 - 1311 487 1311 487 1255 487 c 0,20,21 - 1191 487 1191 487 1142.5 465.5 c 128,-1,22 - 1094 444 1094 444 1024 393 c 1,23,-1 - 934 0 l 1,24,-1 - 678 0 l 1,25,-1 - 862 799 l 1,26,-1 - 563 799 l 1,27,-1 - 379 0 l 1,28,-1 - 123 0 l 1,29,-1 - 332 901 l 1,30,-1 - 1143 901 l 1,31,-1 - 1059 541 l 1,32,33 - 1120 569 1120 569 1157 579.5 c 128,-1,34 - 1194 590 1194 590 1247 590 c 0,35,36 - 1427 590 1427 590 1520.5 516.5 c 128,-1,37 - 1614 443 1614 443 1614 297 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A8 -Encoding: 1192 1192 765 -Width: 1730 -VWidth: 0 -Flags: W -HStem: -20 102<620 940 1181 1460> 1268 84<1289 1410> 1352 84<888 1016> -VStem: 240 260<250 761> 784 246<279 720> 1427 244<737 1177> -LayerCount: 2 -Fore -SplineSet -1671 946 m 0,0,1 - 1671 907 1671 907 1667 863.5 c 128,-1,2 - 1663 820 1663 820 1649.5 756 c 128,-1,3 - 1636 692 1636 692 1615 630 c 128,-1,4 - 1594 568 1594 568 1555.5 495.5 c 128,-1,5 - 1517 423 1517 423 1467.5 358.5 c 128,-1,6 - 1418 294 1418 294 1343 228.5 c 128,-1,7 - 1268 163 1268 163 1178 111 c 1,8,9 - 1246 82 1246 82 1335 82 c 0,10,11 - 1392 82 1392 82 1453 121 c 128,-1,12 - 1514 160 1514 160 1567 229 c 1,13,-1 - 1665 145 l 1,14,15 - 1590 67 1590 67 1505 23.5 c 128,-1,16 - 1420 -20 1420 -20 1343 -20 c 0,17,18 - 1167 -20 1167 -20 1042 47 c 1,19,20 - 871 -20 871 -20 696 -20 c 0,21,22 - 610 -20 610 -20 530.5 11 c 128,-1,23 - 451 42 451 42 385 102 c 128,-1,24 - 319 162 319 162 279.5 262 c 128,-1,25 - 240 362 240 362 240 489 c 0,26,27 - 240 656 240 656 300 825 c 128,-1,28 - 360 994 360 994 462.5 1129.5 c 128,-1,29 - 565 1265 565 1265 716 1350.5 c 128,-1,30 - 867 1436 867 1436 1034 1436 c 1,31,-1 - 1016 1352 l 1,32,33 - 929 1339 929 1339 854.5 1291 c 128,-1,34 - 780 1243 780 1243 728 1176 c 128,-1,35 - 676 1109 676 1109 635 1024.5 c 128,-1,36 - 594 940 594 940 569.5 857.5 c 128,-1,37 - 545 775 545 775 528.5 692.5 c 128,-1,38 - 512 610 512 610 506 550.5 c 128,-1,39 - 500 491 500 491 500 449 c 0,40,41 - 500 268 500 268 571.5 175 c 128,-1,42 - 643 82 643 82 750 82 c 0,43,44 - 849 82 849 82 944 117 c 1,45,46 - 784 261 784 261 784 518 c 0,47,48 - 784 664 784 664 832.5 814.5 c 128,-1,49 - 881 965 881 965 960.5 1083.5 c 128,-1,50 - 1040 1202 1040 1202 1151 1277 c 128,-1,51 - 1262 1352 1262 1352 1378 1352 c 0,52,53 - 1507 1352 1507 1352 1589 1241.5 c 128,-1,54 - 1671 1131 1671 1131 1671 946 c 0,0,1 -1362 1268 m 0,55,56 - 1289 1268 1289 1268 1209 1111.5 c 128,-1,57 - 1129 955 1129 955 1079.5 754.5 c 128,-1,58 - 1030 554 1030 554 1030 414 c 0,59,60 - 1030 275 1030 275 1083 193 c 1,61,62 - 1177 263 1177 263 1247.5 381 c 128,-1,63 - 1318 499 1318 499 1355 630 c 128,-1,64 - 1392 761 1392 761 1409.5 879.5 c 128,-1,65 - 1427 998 1427 998 1427 1100 c 0,66,67 - 1427 1268 1427 1268 1362 1268 c 0,55,56 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A9 -Encoding: 1193 1193 766 -Width: 1392 -VWidth: 0 -Flags: W -HStem: -20 102<510 696 1002 1159> 715 102<944 1036> 799 102<612 698> -VStem: 186 250<184 562> 586 246<164 529> 1044 248<364 710> -LayerCount: 2 -Fore -SplineSet -1292 549 m 0,0,1 - 1292 519 1292 519 1286 482 c 128,-1,2 - 1280 445 1280 445 1261 391 c 128,-1,3 - 1242 337 1242 337 1212 286 c 128,-1,4 - 1182 235 1182 235 1127 180 c 128,-1,5 - 1072 125 1072 125 1001 84 c 1,6,7 - 1013 82 1013 82 1034 82 c 0,8,9 - 1091 82 1091 82 1152 121 c 128,-1,10 - 1213 160 1213 160 1266 229 c 1,11,-1 - 1364 145 l 1,12,13 - 1289 67 1289 67 1204 23.5 c 128,-1,14 - 1119 -20 1119 -20 1042 -20 c 0,15,16 - 929 -20 929 -20 831 12 c 1,17,18 - 725 -20 725 -20 600 -20 c 0,19,20 - 527 -20 527 -20 455.5 4.5 c 128,-1,21 - 384 29 384 29 323 74 c 128,-1,22 - 262 119 262 119 224 194 c 128,-1,23 - 186 269 186 269 186 360 c 0,24,25 - 186 431 186 431 207 505 c 128,-1,26 - 228 579 228 579 273 650 c 128,-1,27 - 318 721 318 721 380 777 c 128,-1,28 - 442 833 442 833 531 867 c 128,-1,29 - 620 901 620 901 723 901 c 1,30,-1 - 698 799 l 1,31,32 - 621 778 621 778 565.5 716 c 128,-1,33 - 510 654 510 654 484 575.5 c 128,-1,34 - 458 497 458 497 447 433.5 c 128,-1,35 - 436 370 436 370 436 319 c 0,36,37 - 436 197 436 197 495 139.5 c 128,-1,38 - 554 82 554 82 653 82 c 0,39,40 - 684 82 684 82 698 84 c 1,41,42 - 586 176 586 176 586 340 c 0,43,44 - 586 425 586 425 615 508 c 128,-1,45 - 644 591 644 591 697.5 661 c 128,-1,46 - 751 731 751 731 836 774 c 128,-1,47 - 921 817 921 817 1024 817 c 0,48,49 - 1155 817 1155 817 1223.5 741 c 128,-1,50 - 1292 665 1292 665 1292 549 c 0,0,1 -1004 715 m 0,51,52 - 968 715 968 715 934 662 c 128,-1,53 - 900 609 900 609 878.5 537 c 128,-1,54 - 857 465 857 465 844 397.5 c 128,-1,55 - 831 330 831 330 831 293 c 0,56,57 - 831 200 831 200 870 152 c 1,58,59 - 923 195 923 195 960.5 266 c 128,-1,60 - 998 337 998 337 1014.5 411 c 128,-1,61 - 1031 485 1031 485 1037.5 536 c 128,-1,62 - 1044 587 1044 587 1044 621 c 0,63,64 - 1044 715 1044 715 1004 715 c 0,51,52 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AA -Encoding: 1194 1194 767 -Width: 1325 -VWidth: 0 -Flags: W -HStem: 1331 102<832 1172> -VStem: 201 260<278 770> 657 158<-320 -186> -LayerCount: 2 -Fore -SplineSet -625 -14 m 1,0,1 - 544 -2 544 -2 470.5 35.5 c 128,-1,2 - 397 73 397 73 335.5 135.5 c 128,-1,3 - 274 198 274 198 237.5 295 c 128,-1,4 - 201 392 201 392 201 510 c 0,5,6 - 201 617 201 617 228 728 c 128,-1,7 - 255 839 255 839 304 941 c 128,-1,8 - 353 1043 353 1043 425.5 1133 c 128,-1,9 - 498 1223 498 1223 584 1290 c 128,-1,10 - 670 1357 670 1357 776 1395.5 c 128,-1,11 - 882 1434 882 1434 993 1434 c 0,12,13 - 1382 1434 1382 1434 1489 1245 c 1,14,-1 - 1249 1178 l 1,15,16 - 1229 1221 1229 1221 1214.5 1243.5 c 128,-1,17 - 1200 1266 1200 1266 1172.5 1289.5 c 128,-1,18 - 1145 1313 1145 1313 1103.5 1322 c 128,-1,19 - 1062 1331 1062 1331 999 1331 c 0,20,21 - 911 1331 911 1331 834.5 1292.5 c 128,-1,22 - 758 1254 758 1254 704 1192 c 128,-1,23 - 650 1130 650 1130 607 1048 c 128,-1,24 - 564 966 564 966 537.5 883 c 128,-1,25 - 511 800 511 800 493 716.5 c 128,-1,26 - 475 633 475 633 468 571 c 128,-1,27 - 461 509 461 509 461 465 c 0,28,29 - 461 275 461 275 543 178.5 c 128,-1,30 - 625 82 625 82 750 82 c 0,31,32 - 808 82 808 82 852 93 c 128,-1,33 - 896 104 896 104 935.5 130.5 c 128,-1,34 - 975 157 975 157 1004 185 c 128,-1,35 - 1033 213 1033 213 1077 264 c 1,36,-1 - 1257 209 l 1,37,38 - 1162 116 1162 116 1033 55 c 128,-1,39 - 904 -6 904 -6 760 -18 c 1,40,-1 - 725 -125 l 1,41,42 - 770 -141 770 -141 792.5 -174 c 128,-1,43 - 815 -207 815 -207 815 -238 c 0,44,45 - 815 -287 815 -287 761 -329 c 128,-1,46 - 707 -371 707 -371 635 -397 c 1,47,-1 - 580 -373 l 1,48,49 - 610 -353 610 -353 633.5 -320.5 c 128,-1,50 - 657 -288 657 -288 657 -254 c 0,51,52 - 657 -194 657 -194 565 -164 c 1,53,-1 - 625 -14 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AB -Encoding: 1195 1195 768 -Width: 944 -VWidth: 0 -Flags: W -HStem: 819 102<587 786> -VStem: 150 246<145 528> 481 158<-320 -186> 801 219<671 782> -LayerCount: 2 -Fore -SplineSet -150 324 m 0,0,1 - 150 443 150 443 199.5 555.5 c 128,-1,2 - 249 668 249 668 327.5 747.5 c 128,-1,3 - 406 827 406 827 504 874.5 c 128,-1,4 - 602 922 602 922 696 922 c 0,5,6 - 830 922 830 922 912 854.5 c 128,-1,7 - 994 787 994 787 1020 676 c 1,8,-1 - 801 608 l 1,9,10 - 800 627 800 627 799.5 665 c 128,-1,11 - 799 703 799 703 798 718.5 c 128,-1,12 - 797 734 797 734 791.5 758.5 c 128,-1,13 - 786 783 786 783 776.5 793 c 128,-1,14 - 767 803 767 803 748.5 811 c 128,-1,15 - 730 819 730 819 702 819 c 0,16,17 - 629 819 629 819 571 766.5 c 128,-1,18 - 513 714 513 714 481.5 642 c 128,-1,19 - 450 570 450 570 429 485 c 128,-1,20 - 408 400 408 400 401.5 345 c 128,-1,21 - 395 290 395 290 395 262 c 0,22,23 - 395 172 395 172 436.5 127 c 128,-1,24 - 478 82 478 82 573 82 c 0,25,26 - 592 82 592 82 609 84.5 c 128,-1,27 - 626 87 626 87 638 90 c 128,-1,28 - 650 93 650 93 663.5 101.5 c 128,-1,29 - 677 110 677 110 684.5 114.5 c 128,-1,30 - 692 119 692 119 705.5 133.5 c 128,-1,31 - 719 148 719 148 723.5 153.5 c 128,-1,32 - 728 159 728 159 744 178.5 c 128,-1,33 - 760 198 760 198 766 205 c 1,34,-1 - 940 158 l 1,35,36 - 786 7 786 7 584 -16 c 1,37,-1 - 549 -125 l 1,38,39 - 594 -141 594 -141 616.5 -174 c 128,-1,40 - 639 -207 639 -207 639 -238 c 0,41,42 - 639 -287 639 -287 585 -329 c 128,-1,43 - 531 -371 531 -371 459 -397 c 1,44,-1 - 403 -373 l 1,45,46 - 433 -353 433 -353 457 -320.5 c 128,-1,47 - 481 -288 481 -288 481 -254 c 0,48,49 - 481 -194 481 -194 389 -164 c 1,50,-1 - 449 -16 l 1,51,52 - 310 3 310 3 230 93.5 c 128,-1,53 - 150 184 150 184 150 324 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AC -Encoding: 1196 1196 769 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 1331 102<352 795 1061 1526> -VStem: 645 158<-320 -186> -AnchorPoint: "top" 954 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -352 1434 m 1,0,-1 - 1554 1434 l 1,1,-1 - 1526 1331 l 1,2,-1 - 1061 1331 l 1,3,-1 - 754 0 l 1,4,-1 - 713 -125 l 1,5,6 - 758 -141 758 -141 780.5 -174 c 128,-1,7 - 803 -207 803 -207 803 -238 c 0,8,9 - 803 -287 803 -287 749 -329 c 128,-1,10 - 695 -371 695 -371 623 -397 c 1,11,-1 - 567 -373 l 1,12,13 - 597 -353 597 -353 621 -320.5 c 128,-1,14 - 645 -288 645 -288 645 -254 c 0,15,16 - 645 -194 645 -194 553 -164 c 1,17,-1 - 618 0 l 1,18,-1 - 487 0 l 1,19,-1 - 795 1331 l 1,20,-1 - 328 1331 l 1,21,-1 - 352 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AD -Encoding: 1197 1197 770 -Width: 1562 -VWidth: 0 -Flags: W -HStem: 0 43G<82 347 657 923> 819 102<123 294 501 778 1096 1334> -VStem: 47 70<770 809> 244 260<527 795> 1358 252<431 796> 1362 158<-320 -186> -LayerCount: 2 -Fore -SplineSet -338 0 m 1,0,-1 - 82 0 l 1,1,-1 - 225 625 l 1,2,3 - 244 696 244 696 244 745 c 0,4,5 - 244 819 244 819 193 819 c 0,6,7 - 139 819 139 819 117 770 c 1,8,-1 - 47 770 l 1,9,10 - 59 828 59 828 120 875 c 128,-1,11 - 181 922 181 922 246 922 c 0,12,13 - 382 922 382 922 449 868 c 1,14,15 - 559 922 559 922 666 922 c 0,16,17 - 872 922 872 922 952 836 c 1,18,19 - 1092 922 1092 922 1204 922 c 0,20,21 - 1400 922 1400 922 1505 861 c 128,-1,22 - 1610 800 1610 800 1610 657 c 0,23,24 - 1610 608 1610 608 1595 543 c 2,25,-1 - 1470 0 l 1,26,-1 - 1430 -125 l 1,27,28 - 1475 -141 1475 -141 1497.5 -174 c 128,-1,29 - 1520 -207 1520 -207 1520 -238 c 0,30,31 - 1520 -287 1520 -287 1465.5 -329 c 128,-1,32 - 1411 -371 1411 -371 1339 -397 c 1,33,-1 - 1284 -373 l 1,34,35 - 1314 -353 1314 -353 1338 -320.5 c 128,-1,36 - 1362 -288 1362 -288 1362 -254 c 0,37,38 - 1362 -194 1362 -194 1270 -164 c 1,39,-1 - 1335 0 l 1,40,-1 - 1214 0 l 1,41,-1 - 1329 500 l 2,42,43 - 1358 629 1358 629 1358 686 c 0,44,45 - 1358 763 1358 763 1322 791 c 128,-1,46 - 1286 819 1286 819 1210 819 c 0,47,48 - 1148 819 1148 819 1098 799 c 1,49,-1 - 913 0 l 1,50,-1 - 657 0 l 1,51,-1 - 772 500 l 2,52,53 - 801 626 801 626 801 684 c 0,54,55 - 801 763 801 763 763 791 c 128,-1,56 - 725 819 725 819 643 819 c 0,57,58 - 580 819 580 819 500 786 c 1,59,60 - 504 758 504 758 504 745 c 0,61,62 - 504 718 504 718 498 688 c 2,63,-1 - 338 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AE -Encoding: 1198 1198 771 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<406 681> 1393 41<377 646 1112 1327> -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04AF -Encoding: 1199 1199 772 -Width: 849 -VWidth: 0 -Flags: W -HStem: 860 41G<227 454 858 1047> -LayerCount: 2 -Fore -SplineSet -526 303 m 1,0,-1 - 883 901 l 1,1,-1 - 1047 901 l 1,2,-1 - 588 129 l 1,3,-1 - 463 -410 l 1,4,-1 - 207 -410 l 1,5,-1 - 330 123 l 1,6,-1 - 227 901 l 1,7,-1 - 449 901 l 1,8,-1 - 526 303 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B0 -Encoding: 1200 1200 773 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43G<406 681> 418 102<369 502 791 918> 1393 41G<377 646 1112 1327> -LayerCount: 2 -Fore -SplineSet -344 418 m 1,0,-1 - 369 520 l 1,1,-1 - 526 520 l 1,2,-1 - 573 727 l 1,3,-1 - 377 1434 l 1,4,-1 - 635 1434 l 1,5,-1 - 774 936 l 1,6,-1 - 1143 1434 l 1,7,-1 - 1327 1434 l 1,8,-1 - 856 801 l 1,9,-1 - 791 520 l 1,10,-1 - 942 520 l 1,11,-1 - 918 418 l 1,12,-1 - 768 418 l 1,13,-1 - 672 0 l 1,14,-1 - 406 0 l 1,15,-1 - 502 418 l 1,16,-1 - 344 418 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B1 -Encoding: 1201 1201 774 -Width: 849 -VWidth: 0 -Flags: W -HStem: -102 102<154 279 557 702> 860 41G<227 454 858 1047> -LayerCount: 2 -Fore -SplineSet -129 -102 m 1,0,-1 - 154 0 l 1,1,-1 - 301 0 l 1,2,-1 - 330 123 l 1,3,-1 - 227 901 l 1,4,-1 - 449 901 l 1,5,-1 - 526 303 l 1,6,-1 - 883 901 l 1,7,-1 - 1047 901 l 1,8,-1 - 588 129 l 1,9,-1 - 557 0 l 1,10,-1 - 727 0 l 1,11,-1 - 702 -102 l 1,12,-1 - 535 -102 l 1,13,-1 - 463 -410 l 1,14,-1 - 207 -410 l 1,15,-1 - 279 -102 l 1,16,-1 - 129 -102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B2 -Encoding: 1202 1202 775 -Width: 1095 -VWidth: 0 -Flags: W -HStem: 0 43G<41 254> 1393 41G<377 646 1071 1286> -VStem: 926 158<-320 -186> -LayerCount: 2 -Fore -SplineSet -899 0 m 1,0,-1 - 776 0 l 1,1,-1 - 625 543 l 1,2,-1 - 223 0 l 1,3,-1 - 41 0 l 1,4,-1 - 573 721 l 1,5,-1 - 377 1434 l 1,6,-1 - 635 1434 l 1,7,-1 - 762 975 l 1,8,-1 - 1102 1434 l 1,9,-1 - 1286 1434 l 1,10,-1 - 813 795 l 1,11,-1 - 1034 0 l 1,12,-1 - 993 -125 l 1,13,14 - 1038 -141 1038 -141 1060.5 -174 c 128,-1,15 - 1083 -207 1083 -207 1083 -238 c 0,16,17 - 1083 -287 1083 -287 1029 -329 c 128,-1,18 - 975 -371 975 -371 903 -397 c 1,19,-1 - 848 -373 l 1,20,21 - 878 -353 878 -353 902 -320.5 c 128,-1,22 - 926 -288 926 -288 926 -254 c 0,23,24 - 926 -194 926 -194 834 -164 c 1,25,-1 - 899 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B3 -Encoding: 1203 1203 776 -Width: 954 -VWidth: 0 -Flags: W -HStem: 0 43G<61 276> 860 41G<276 542 822 1034> -VStem: 795 158<-320 -186> -LayerCount: 2 -Fore -SplineSet -463 455 m 1,0,-1 - 276 901 l 1,1,-1 - 524 901 l 1,2,-1 - 633 645 l 1,3,-1 - 858 901 l 1,4,-1 - 1034 901 l 1,5,-1 - 688 510 l 1,6,-1 - 903 0 l 1,7,-1 - 862 -125 l 1,8,9 - 907 -141 907 -141 929.5 -174 c 128,-1,10 - 952 -207 952 -207 952 -238 c 0,11,12 - 952 -287 952 -287 898 -329 c 128,-1,13 - 844 -371 844 -371 772 -397 c 1,14,-1 - 717 -373 l 1,15,16 - 747 -353 747 -353 771 -320.5 c 128,-1,17 - 795 -288 795 -288 795 -254 c 0,18,19 - 795 -194 795 -194 702 -164 c 1,20,-1 - 768 0 l 1,21,-1 - 653 0 l 1,22,-1 - 520 317 l 1,23,-1 - 240 0 l 1,24,-1 - 61 0 l 1,25,-1 - 463 455 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B4 -Encoding: 1204 1204 777 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 102<737 1307> 1331 102<352 754 1020 1444> -VStem: 1585 158<-320 -186> -LayerCount: 2 -Fore -SplineSet -352 1434 m 1,0,-1 - 1473 1434 l 1,1,-1 - 1444 1331 l 1,2,-1 - 1020 1331 l 1,3,-1 - 737 102 l 1,4,-1 - 1307 102 l 1,5,-1 - 1614 1434 l 1,6,-1 - 1880 1434 l 1,7,-1 - 1573 102 l 1,8,-1 - 1726 102 l 1,9,-1 - 1653 -125 l 1,10,11 - 1698 -141 1698 -141 1720.5 -174 c 128,-1,12 - 1743 -207 1743 -207 1743 -238 c 0,13,14 - 1743 -287 1743 -287 1689 -329 c 128,-1,15 - 1635 -371 1635 -371 1563 -397 c 1,16,-1 - 1507 -373 l 1,17,18 - 1537 -353 1537 -353 1561 -320.5 c 128,-1,19 - 1585 -288 1585 -288 1585 -254 c 0,20,21 - 1585 -194 1585 -194 1493 -164 c 1,22,-1 - 1559 0 l 1,23,-1 - 446 0 l 1,24,-1 - 754 1331 l 1,25,-1 - 328 1331 l 1,26,-1 - 352 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B5 -Encoding: 1205 1205 778 -Width: 1478 -VWidth: 0 -Flags: W -HStem: -20 102<721 1032> 799 102<262 532 788 1077> -VStem: 420 256<128 502> 1036 260<107 364> 1249 158<-320 -186> 1425 70<93 131> -LayerCount: 2 -Fore -SplineSet -1204 901 m 1,0,-1 - 1460 901 l 1,1,-1 - 1315 276 l 2,2,3 - 1296 191 1296 191 1296 156 c 0,4,5 - 1296 82 1296 82 1348 82 c 0,6,7 - 1403 82 1403 82 1425 131 c 1,8,-1 - 1495 131 l 1,9,10 - 1484 87 1484 87 1444.5 47 c 128,-1,11 - 1405 7 1405 7 1354 -10 c 1,12,-1 - 1317 -125 l 1,13,14 - 1362 -141 1362 -141 1384.5 -174 c 128,-1,15 - 1407 -207 1407 -207 1407 -238 c 0,16,17 - 1407 -287 1407 -287 1353 -329 c 128,-1,18 - 1299 -371 1299 -371 1227 -397 c 1,19,-1 - 1171 -373 l 1,20,21 - 1201 -353 1201 -353 1225 -320.5 c 128,-1,22 - 1249 -288 1249 -288 1249 -254 c 0,23,24 - 1249 -194 1249 -194 1157 -164 c 1,25,-1 - 1217 -14 l 1,26,27 - 1125 1 1125 1 1083 43 c 1,28,29 - 1038 24 1038 24 947.5 2 c 128,-1,30 - 857 -20 857 -20 793 -20 c 0,31,32 - 620 -20 620 -20 520 46 c 128,-1,33 - 420 112 420 112 420 240 c 0,34,35 - 420 311 420 311 442 410 c 2,36,-1 - 532 799 l 1,37,-1 - 238 799 l 1,38,-1 - 262 901 l 1,39,-1 - 1102 901 l 1,40,-1 - 1077 799 l 1,41,-1 - 788 799 l 1,42,-1 - 705 434 l 1,43,44 - 676 299 676 299 676 236 c 0,45,46 - 676 155 676 155 729 118.5 c 128,-1,47 - 782 82 782 82 846 82 c 0,48,49 - 898 82 898 82 956.5 96 c 128,-1,50 - 1015 110 1015 110 1038 127 c 1,51,52 - 1038 131 1038 131 1037 140.5 c 128,-1,53 - 1036 150 1036 150 1036 154 c 0,54,55 - 1036 173 1036 173 1044 213 c 1,56,-1 - 1204 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B6 -Encoding: 1206 1206 779 -Width: 1101 -VWidth: 0 -Flags: W -HStem: 522 102<591 838> 1393 41G<404 680 1051 1327> -VStem: 303 256<661 1109> 887 158<-320 -186> -LayerCount: 2 -Fore -SplineSet -954 -125 m 1,0,1 - 999 -141 999 -141 1021.5 -174 c 128,-1,2 - 1044 -207 1044 -207 1044 -238 c 0,3,4 - 1044 -287 1044 -287 990 -329 c 128,-1,5 - 936 -371 936 -371 864 -397 c 1,6,-1 - 809 -373 l 1,7,8 - 839 -353 839 -353 863 -320.5 c 128,-1,9 - 887 -288 887 -288 887 -254 c 0,10,11 - 887 -194 887 -194 795 -164 c 1,12,-1 - 860 0 l 1,13,-1 - 729 0 l 1,14,-1 - 862 573 l 1,15,16 - 780 522 780 522 651 522 c 0,17,18 - 480 522 480 522 391.5 603.5 c 128,-1,19 - 303 685 303 685 303 858 c 0,20,21 - 303 946 303 946 332 1085 c 1,22,-1 - 414 1434 l 1,23,-1 - 680 1434 l 1,24,-1 - 604 1110 l 2,25,26 - 559 914 559 914 559 805 c 0,27,28 - 559 748 559 748 570 710.5 c 128,-1,29 - 581 673 581 673 603 655.5 c 128,-1,30 - 625 638 625 638 648.5 631.5 c 128,-1,31 - 672 625 672 625 705 625 c 0,32,33 - 815 625 815 625 895 721 c 1,34,-1 - 1061 1434 l 1,35,-1 - 1327 1434 l 1,36,-1 - 995 0 l 1,37,-1 - 954 -125 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B7 -Encoding: 1207 1207 780 -Width: 1058 -VWidth: 0 -Flags: W -HStem: 313 102<489 654> 860 41G<284 557 775 1040> -VStem: 244 238<420 765> 616 268<84 263> 834 158<-314 -180> 1006 70<94 131> -LayerCount: 2 -Fore -SplineSet -895 276 m 1,0,1 - 885 224 885 224 885 184 c 0,2,3 - 885 82 885 82 928 82 c 0,4,5 - 953 82 953 82 977.5 96.5 c 128,-1,6 - 1002 111 1002 111 1006 131 c 1,7,-1 - 1075 131 l 1,8,9 - 1065 84 1065 84 1026.5 46 c 128,-1,10 - 988 8 988 8 936 -10 c 5,11,-1 - 901 -119 l 5,12,13 - 946 -135 946 -135 968.5 -167.5 c 132,-1,14 - 991 -200 991 -200 991 -231 c 4,15,16 - 991 -280 991 -280 936.5 -322.5 c 132,-1,17 - 882 -365 882 -365 811 -391 c 5,18,-1 - 756 -367 l 5,19,20 - 786 -347 786 -347 810 -314.5 c 132,-1,21 - 834 -282 834 -282 834 -248 c 4,22,23 - 834 -188 834 -188 741 -158 c 5,24,-1 - 799 -16 l 5,25,26 - 707 -4 707 -4 661.5 40 c 128,-1,27 - 616 84 616 84 616 152 c 0,28,29 - 616 161 616 161 625 213 c 1,30,-1 - 655 348 l 1,31,32 - 610 313 610 313 520 313 c 0,33,34 - 369 313 369 313 306.5 368 c 128,-1,35 - 244 423 244 423 244 549 c 0,36,37 - 244 662 244 662 301 901 c 1,38,-1 - 557 901 l 1,39,40 - 481 578 481 578 481 496 c 0,41,42 - 481 444 481 444 501.5 430 c 128,-1,43 - 522 416 522 416 575 416 c 0,44,45 - 673 416 673 416 694 512 c 1,46,-1 - 784 901 l 1,47,-1 - 1040 901 l 1,48,-1 - 895 276 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B8 -Encoding: 1208 1208 781 -Width: 1206 -VWidth: 0 -Flags: W -HStem: 0 43G<811 1087> 524 100<752 911> 864 41G<693 817> 1393 41G<404 680 1133 1409> -VStem: 303 256<678 1109> -LayerCount: 2 -Fore -SplineSet -702 905 m 1,0,-1 - 817 905 l 1,1,-1 - 752 625 l 1,2,3 - 811 627 811 627 877 653.5 c 128,-1,4 - 943 680 943 680 977 721 c 1,5,-1 - 1143 1434 l 1,6,-1 - 1409 1434 l 1,7,-1 - 1077 0 l 1,8,-1 - 811 0 l 1,9,-1 - 944 573 l 1,10,11 - 881 532 881 532 729 524 c 1,12,-1 - 672 274 l 1,13,-1 - 557 274 l 1,14,-1 - 614 526 l 1,15,16 - 470 542 470 542 386.5 625 c 128,-1,17 - 303 708 303 708 303 858 c 0,18,19 - 303 946 303 946 332 1085 c 1,20,-1 - 414 1434 l 1,21,-1 - 680 1434 l 1,22,-1 - 604 1110 l 2,23,24 - 559 914 559 914 559 805 c 0,25,26 - 559 686 559 686 643 645 c 1,27,-1 - 702 905 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B9 -Encoding: 1209 1209 782 -Width: 1140 -VWidth: 0 -Flags: W -HStem: -20 102<867 1083> 860 41G<284 557 857 1122> -VStem: 244 238<429 765> 698 268<83 345> 1087 70<94 131> -LayerCount: 2 -Fore -SplineSet -602 612 m 1,0,-1 - 717 612 l 1,1,-1 - 674 424 l 1,2,3 - 714 438 714 438 743 466 c 128,-1,4 - 772 494 772 494 776 512 c 2,5,-1 - 866 901 l 1,6,-1 - 1122 901 l 1,7,-1 - 977 276 l 1,8,9 - 967 224 967 224 967 184 c 0,10,11 - 967 82 967 82 1010 82 c 0,12,13 - 1035 82 1035 82 1059 96.5 c 128,-1,14 - 1083 111 1083 111 1087 131 c 1,15,-1 - 1157 131 l 1,16,17 - 1143 69 1143 69 1085 24.5 c 128,-1,18 - 1027 -20 1027 -20 958 -20 c 0,19,20 - 826 -20 826 -20 762 25.5 c 128,-1,21 - 698 71 698 71 698 152 c 0,22,23 - 698 161 698 161 707 213 c 1,24,-1 - 737 348 l 1,25,26 - 709 328 709 328 649 319 c 1,27,-1 - 606 135 l 1,28,-1 - 492 135 l 1,29,-1 - 532 313 l 1,30,31 - 244 322 244 322 244 549 c 0,32,33 - 244 662 244 662 301 901 c 1,34,-1 - 557 901 l 1,35,36 - 481 578 481 578 481 496 c 0,37,38 - 481 431 481 431 557 420 c 1,39,-1 - 602 612 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BA -Encoding: 1210 1210 783 -Width: 1394 -VWidth: 0 -Flags: W -HStem: 0 43G<147 423 997 1273> 819 102<724 1065> 1393 41G<470 745> -VStem: 1124 264<355 740> -LayerCount: 2 -Fore -SplineSet -147 0 m 9,0,-1 - 479 1434 l 1,1,-1 - 745 1434 l 1,2,-1 - 606 831 l 1,3,4 - 609 832 609 832 660 857 c 128,-1,5 - 711 882 711 882 733.5 890.5 c 128,-1,6 - 756 899 756 899 808 910.5 c 128,-1,7 - 860 922 860 922 913 922 c 0,8,9 - 1044 922 1044 922 1149.5 886 c 128,-1,10 - 1255 850 1255 850 1322 771.5 c 128,-1,11 - 1389 693 1389 693 1389 584 c 0,12,13 - 1389 546 1389 546 1376 492 c 2,14,-1 - 1264 0 l 1,15,-1 - 997 0 l 1,16,-1 - 1106 467 l 2,17,18 - 1124 543 1124 543 1124 618 c 0,19,20 - 1124 730 1124 730 1069.5 774.5 c 128,-1,21 - 1015 819 1015 819 920 819 c 0,22,23 - 759 819 759 819 571 684 c 1,24,-1 - 414 0 l 1,25,-1 - 147 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BB -Encoding: 1211 1211 784 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<143 409 688 954> 819 102<610 813> 1270 102<289 504> -VStem: 213 70<1221 1259> 410 260<985 1268> 829 248<415 804> -LayerCount: 2 -Fore -Refer: 2 104 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04BC -Encoding: 1212 1212 785 -Width: 1785 -VWidth: 0 -Flags: W -HStem: -20 102<919 1252> 717 102<506 588 881 1629> 1352 102<1235 1526> -VStem: 305 176<838 1095> 559 252<252 712> 1638 258<821 1169> -LayerCount: 2 -Fore -SplineSet -854 717 m 1,0,1 - 811 538 811 538 811 406 c 0,2,3 - 811 82 811 82 1071 82 c 0,4,5 - 1130 82 1130 82 1175.5 93 c 128,-1,6 - 1221 104 1221 104 1259.5 130 c 128,-1,7 - 1298 156 1298 156 1321 177.5 c 128,-1,8 - 1344 199 1344 199 1384 242 c 0,9,10 - 1393 251 1393 251 1397 256 c 1,11,-1 - 1606 188 l 1,12,13 - 1391 -20 1391 -20 1018 -20 c 0,14,15 - 931 -20 931 -20 851 11 c 128,-1,16 - 771 42 771 42 704.5 102 c 128,-1,17 - 638 162 638 162 598.5 262 c 128,-1,18 - 559 362 559 362 559 489 c 0,19,20 - 559 582 559 582 588 717 c 1,21,22 - 435 717 435 717 370 780.5 c 128,-1,23 - 305 844 305 844 305 961 c 0,24,25 - 305 1025 305 1025 330 1143 c 1,26,-1 - 500 1085 l 1,27,28 - 481 995 481 995 481 948 c 0,29,30 - 481 911 481 911 490 885 c 128,-1,31 - 499 859 499 859 510.5 846.5 c 128,-1,32 - 522 834 522 834 543.5 827.5 c 128,-1,33 - 565 821 565 821 578.5 820 c 128,-1,34 - 592 819 592 819 616 819 c 1,35,36 - 660 946 660 946 733.5 1053.5 c 128,-1,37 - 807 1161 807 1161 891.5 1233.5 c 128,-1,38 - 976 1306 976 1306 1070.5 1357 c 128,-1,39 - 1165 1408 1165 1408 1252.5 1431 c 128,-1,40 - 1340 1454 1340 1454 1417 1454 c 0,41,42 - 1487 1454 1487 1454 1554.5 1434.5 c 128,-1,43 - 1622 1415 1622 1415 1684.5 1373.5 c 128,-1,44 - 1747 1332 1747 1332 1793.5 1272 c 128,-1,45 - 1840 1212 1840 1212 1868 1125 c 128,-1,46 - 1896 1038 1896 1038 1896 934 c 0,47,48 - 1896 833 1896 833 1870 717 c 1,49,-1 - 854 717 l 1,0,1 -881 819 m 1,50,-1 - 1622 819 l 1,51,52 - 1638 925 1638 925 1638 993 c 0,53,54 - 1638 1170 1638 1170 1570 1261 c 128,-1,55 - 1502 1352 1502 1352 1401 1352 c 0,56,57 - 1332 1352 1332 1352 1260 1321 c 128,-1,58 - 1188 1290 1188 1290 1118 1228 c 128,-1,59 - 1048 1166 1048 1166 985 1060.5 c 128,-1,60 - 922 955 922 955 881 819 c 1,50,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BD -Encoding: 1213 1213 786 -Width: 1359 -VWidth: 0 -Flags: W -HStem: -20 102<799 1062> 451 102<444 526 809 1150> 819 102<935 1141> -VStem: 244 176<574 828> 510 246<142 448> 1159 233<555 763> -LayerCount: 2 -Fore -SplineSet -809 553 m 1,0,-1 - 1143 553 l 1,1,2 - 1159 638 1159 638 1159 694 c 0,3,4 - 1159 819 1159 819 1063 819 c 0,5,6 - 970 819 970 819 909.5 751.5 c 128,-1,7 - 849 684 849 684 809 553 c 1,0,-1 -782 451 m 1,8,9 - 756 334 756 334 756 262 c 0,10,11 - 756 173 756 173 797 127.5 c 128,-1,12 - 838 82 838 82 934 82 c 0,13,14 - 1008 82 1008 82 1048.5 112.5 c 128,-1,15 - 1089 143 1089 143 1116 205 c 1,16,-1 - 1300 158 l 1,17,18 - 1216 76 1216 76 1109 28 c 128,-1,19 - 1002 -20 1002 -20 881 -20 c 0,20,21 - 711 -20 711 -20 610.5 72.5 c 128,-1,22 - 510 165 510 165 510 324 c 0,23,24 - 510 379 510 379 526 451 c 1,25,26 - 373 451 373 451 308.5 514 c 128,-1,27 - 244 577 244 577 244 694 c 0,28,29 - 244 764 244 764 268 877 c 1,30,-1 - 438 819 l 1,31,32 - 420 734 420 734 420 682 c 0,33,34 - 420 646 420 646 429.5 620.5 c 128,-1,35 - 439 595 439 595 452 582.5 c 128,-1,36 - 465 570 465 570 486 563 c 128,-1,37 - 507 556 507 556 522 554.5 c 128,-1,38 - 537 553 537 553 559 553 c 1,39,40 - 630 718 630 718 773.5 820 c 128,-1,41 - 917 922 917 922 1057 922 c 0,42,43 - 1141 922 1141 922 1207 893.5 c 128,-1,44 - 1273 865 1273 865 1313 815.5 c 128,-1,45 - 1353 766 1353 766 1373 704 c 128,-1,46 - 1393 642 1393 642 1393 571 c 0,47,48 - 1393 512 1393 512 1378 451 c 1,49,-1 - 782 451 l 1,8,9 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BE -Encoding: 1214 1214 787 -Width: 1785 -VWidth: 0 -Flags: W -HStem: 717 102<506 588 881 1629> 1352 102<1235 1526> -VStem: 305 176<838 1095> 559 252<255 712> 997 158<-320 -186> 1638 258<821 1169> -LayerCount: 2 -Fore -SplineSet -881 819 m 1,0,-1 - 1622 819 l 1,1,2 - 1638 925 1638 925 1638 993 c 0,3,4 - 1638 1170 1638 1170 1570 1261 c 128,-1,5 - 1502 1352 1502 1352 1401 1352 c 0,6,7 - 1332 1352 1332 1352 1260 1321 c 128,-1,8 - 1188 1290 1188 1290 1118 1228 c 128,-1,9 - 1048 1166 1048 1166 985 1060.5 c 128,-1,10 - 922 955 922 955 881 819 c 1,0,-1 -854 717 m 1,11,12 - 811 538 811 538 811 406 c 0,13,14 - 811 82 811 82 1071 82 c 0,15,16 - 1130 82 1130 82 1175.5 93 c 128,-1,17 - 1221 104 1221 104 1259.5 130 c 128,-1,18 - 1298 156 1298 156 1321 177.5 c 128,-1,19 - 1344 199 1344 199 1384 242 c 0,20,21 - 1393 251 1393 251 1397 256 c 1,22,-1 - 1606 188 l 1,23,24 - 1413 3 1413 3 1100 -18 c 1,25,-1 - 1065 -125 l 1,26,27 - 1110 -141 1110 -141 1132.5 -174 c 128,-1,28 - 1155 -207 1155 -207 1155 -238 c 0,29,30 - 1155 -287 1155 -287 1101 -329 c 128,-1,31 - 1047 -371 1047 -371 975 -397 c 1,32,-1 - 920 -373 l 1,33,34 - 950 -353 950 -353 973.5 -320.5 c 128,-1,35 - 997 -288 997 -288 997 -254 c 0,36,37 - 997 -194 997 -194 905 -164 c 1,38,-1 - 965 -18 l 1,39,40 - 885 -9 885 -9 814 26 c 128,-1,41 - 743 61 743 61 685 121.5 c 128,-1,42 - 627 182 627 182 593 277 c 128,-1,43 - 559 372 559 372 559 489 c 0,44,45 - 559 582 559 582 588 717 c 1,46,47 - 435 717 435 717 370 780.5 c 128,-1,48 - 305 844 305 844 305 961 c 0,49,50 - 305 1025 305 1025 330 1143 c 1,51,-1 - 500 1085 l 1,52,53 - 481 995 481 995 481 948 c 0,54,55 - 481 911 481 911 490 885 c 128,-1,56 - 499 859 499 859 510.5 846.5 c 128,-1,57 - 522 834 522 834 543.5 827.5 c 128,-1,58 - 565 821 565 821 578.5 820 c 128,-1,59 - 592 819 592 819 616 819 c 1,60,61 - 660 946 660 946 733.5 1053.5 c 128,-1,62 - 807 1161 807 1161 891.5 1233.5 c 128,-1,63 - 976 1306 976 1306 1070.5 1357 c 128,-1,64 - 1165 1408 1165 1408 1252.5 1431 c 128,-1,65 - 1340 1454 1340 1454 1417 1454 c 0,66,67 - 1487 1454 1487 1454 1554.5 1434.5 c 128,-1,68 - 1622 1415 1622 1415 1684.5 1373.5 c 128,-1,69 - 1747 1332 1747 1332 1793.5 1272 c 128,-1,70 - 1840 1212 1840 1212 1868 1125 c 128,-1,71 - 1896 1038 1896 1038 1896 934 c 0,72,73 - 1896 833 1896 833 1870 717 c 1,74,-1 - 854 717 l 1,11,12 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BF -Encoding: 1215 1215 788 -Width: 1359 -VWidth: 0 -Flags: W -HStem: -18 100<932 1062> 451 102<444 526 809 1150> 819 102<935 1141> -VStem: 244 176<574 828> 510 246<142 448> 829 158<-320 -186> 1159 233<555 763> -LayerCount: 2 -Fore -SplineSet -782 451 m 1,0,1 - 756 334 756 334 756 262 c 0,2,3 - 756 173 756 173 797 127.5 c 128,-1,4 - 838 82 838 82 934 82 c 0,5,6 - 1008 82 1008 82 1048.5 112.5 c 128,-1,7 - 1089 143 1089 143 1116 205 c 1,8,-1 - 1300 158 l 1,9,10 - 1138 -1 1138 -1 932 -18 c 1,11,-1 - 897 -125 l 1,12,13 - 942 -141 942 -141 964.5 -174 c 128,-1,14 - 987 -207 987 -207 987 -238 c 0,15,16 - 987 -287 987 -287 933 -329 c 128,-1,17 - 879 -371 879 -371 807 -397 c 1,18,-1 - 752 -373 l 1,19,20 - 782 -353 782 -353 805.5 -320.5 c 128,-1,21 - 829 -288 829 -288 829 -254 c 0,22,23 - 829 -194 829 -194 737 -164 c 1,24,-1 - 797 -14 l 1,25,26 - 664 8 664 8 587 97 c 128,-1,27 - 510 186 510 186 510 324 c 0,28,29 - 510 379 510 379 526 451 c 1,30,31 - 373 451 373 451 308.5 514 c 128,-1,32 - 244 577 244 577 244 694 c 0,33,34 - 244 764 244 764 268 877 c 1,35,-1 - 438 819 l 1,36,37 - 420 734 420 734 420 682 c 0,38,39 - 420 646 420 646 429.5 620.5 c 128,-1,40 - 439 595 439 595 452 582.5 c 128,-1,41 - 465 570 465 570 486 563 c 128,-1,42 - 507 556 507 556 522 554.5 c 128,-1,43 - 537 553 537 553 559 553 c 1,44,45 - 630 718 630 718 773.5 820 c 128,-1,46 - 917 922 917 922 1057 922 c 0,47,48 - 1141 922 1141 922 1207 893.5 c 128,-1,49 - 1273 865 1273 865 1313 815.5 c 128,-1,50 - 1353 766 1353 766 1373 704 c 128,-1,51 - 1393 642 1393 642 1393 571 c 0,52,53 - 1393 512 1393 512 1378 451 c 1,54,-1 - 782 451 l 1,0,1 -809 553 m 1,55,-1 - 1143 553 l 1,56,57 - 1159 638 1159 638 1159 694 c 0,58,59 - 1159 819 1159 819 1063 819 c 0,60,61 - 970 819 970 819 909.5 751.5 c 128,-1,62 - 849 684 849 684 809 553 c 1,55,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C0 -Encoding: 1216 1216 789 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> -VStem: 92 598 -AnchorPoint: "top" 182 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04C1 -Encoding: 1217 1217 790 -Width: 1525 -VWidth: 0 -Flags: W -HStem: 0 43<37 307 627 900 1214 1481> 1331 102<389 425 1685 1767> 1577 137<1045 1273> -VStem: 935 88<1743 1767> 1214 268<0 209> -LayerCount: 2 -Fore -Refer: 373 728 N 1 0 0 1 537 307 2 -Refer: 402 1046 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04C2 -Encoding: 1218 1218 791 -Width: 1288 -VWidth: 0 -Flags: W -HStem: -20 102<41 151> 0 43<516 782 993 1219> 799 102<279 336 1302 1403> 1044 137<808 1036> -VStem: -33 74<85 131> 697 88<1210 1235> 995 225<0 184> -LayerCount: 2 -Fore -Refer: 373 728 N 1 0 0 1 300 -225 2 -Refer: 434 1078 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04C3 -Encoding: 1219 1219 792 -Width: 1347 -VWidth: 0 -Flags: W -HStem: -217 102<663 864> -59 41G<580 644> 0 43G<174 450> 1393 41G<496 772 1222 1540> -VStem: 1067 260<371 751> -LayerCount: 2 -Fore -SplineSet -571 571 m 1,0,-1 - 440 0 l 1,1,-1 - 174 0 l 1,2,-1 - 506 1434 l 1,3,-1 - 772 1434 l 1,4,-1 - 643 877 l 1,5,-1 - 1268 1434 l 1,6,-1 - 1540 1434 l 1,7,-1 - 961 918 l 1,8,9 - 1126 902 1126 902 1226.5 818.5 c 128,-1,10 - 1327 735 1327 735 1327 592 c 0,11,12 - 1327 548 1327 548 1315 492 c 2,13,-1 - 1270 291 l 2,14,15 - 1244 173 1244 173 1195.5 80.5 c 128,-1,16 - 1147 -12 1147 -12 1091 -66.5 c 128,-1,17 - 1035 -121 1035 -121 968 -156.5 c 128,-1,18 - 901 -192 901 -192 842 -204.5 c 128,-1,19 - 783 -217 783 -217 723 -217 c 0,20,21 - 665 -217 665 -217 601 -191.5 c 128,-1,22 - 537 -166 537 -166 502 -125 c 1,23,-1 - 629 -18 l 1,24,25 - 653 -68 653 -68 688 -91.5 c 128,-1,26 - 723 -115 723 -115 776 -115 c 0,27,28 - 911 -115 911 -115 993 246 c 1,29,-1 - 1044 467 l 2,30,31 - 1067 568 1067 568 1067 639 c 0,32,33 - 1067 740 1067 740 1020.5 779.5 c 128,-1,34 - 974 819 974 819 885 819 c 0,35,36 - 860 819 860 819 848 817 c 1,37,-1 - 571 571 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C4 -Encoding: 1220 1220 793 -Width: 1095 -VWidth: 0 -Flags: W -HStem: -236 102<525 691> 0 43G<147 413> 487 102<733 790> 860 41G<347 612 810 1085> -VStem: 813 246<82 464> -LayerCount: 2 -Fore -SplineSet -1059 297 m 0,0,1 - 1059 184 1059 184 1018 83.5 c 128,-1,2 - 977 -17 977 -17 909 -86 c 128,-1,3 - 841 -155 841 -155 752.5 -195.5 c 128,-1,4 - 664 -236 664 -236 571 -236 c 0,5,6 - 503 -236 503 -236 448.5 -211.5 c 128,-1,7 - 394 -187 394 -187 373 -143 c 1,8,-1 - 500 -37 l 1,9,10 - 519 -92 519 -92 546 -112.5 c 128,-1,11 - 573 -133 573 -133 627 -133 c 0,12,13 - 671 -133 671 -133 708.5 -73 c 128,-1,14 - 746 -13 746 -13 767.5 70.5 c 128,-1,15 - 789 154 789 154 801 230.5 c 128,-1,16 - 813 307 813 307 813 352 c 0,17,18 - 813 427 813 427 784.5 457 c 128,-1,19 - 756 487 756 487 700 487 c 0,20,21 - 648 487 648 487 602 471 c 1,22,-1 - 489 371 l 1,23,-1 - 403 0 l 1,24,-1 - 147 0 l 1,25,-1 - 356 901 l 1,26,-1 - 612 901 l 1,27,-1 - 549 627 l 1,28,-1 - 856 901 l 1,29,-1 - 1085 901 l 1,30,-1 - 733 590 l 1,31,32 - 893 582 893 582 976 508.5 c 128,-1,33 - 1059 435 1059 435 1059 297 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C5 -Encoding: 1221 1221 794 -Width: 1517 -VWidth: 0 -Flags: W -HStem: -20 102<146 378> 1331 102<956 1286> -LayerCount: 2 -Fore -SplineSet -1270 102 m 1,0,-1 - 1487 102 l 1,1,-1 - 1251 -254 l 1,2,-1 - 1157 -254 l 1,3,-1 - 1270 0 l 1,4,-1 - 979 0 l 1,5,-1 - 1286 1331 l 1,6,-1 - 956 1331 l 1,7,-1 - 709 260 l 2,8,9 - 645 -20 645 -20 238 -20 c 0,10,11 - 108 -20 108 -20 51 72 c 1,12,-1 - 195 133 l 1,13,14 - 217 82 217 82 291 82 c 0,15,16 - 351 82 351 82 390 140.5 c 128,-1,17 - 429 199 429 199 459 328 c 2,18,-1 - 715 1434 l 1,19,-1 - 1577 1434 l 1,20,-1 - 1270 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C6 -Encoding: 1222 1222 795 -Width: 1542 -VWidth: 0 -Flags: W -HStem: -20 123<1175 1296> -20 102<142 372> 799 102<869 1015> -VStem: 909 264<104 368> 1022 258<484 791> -LayerCount: 2 -Fore -SplineSet -1169 -20 m 0,0,1 - 1093 -20 1093 -20 1038.5 -3.5 c 128,-1,2 - 984 13 984 13 957.5 40.5 c 128,-1,3 - 931 68 931 68 920 95 c 128,-1,4 - 909 122 909 122 909 152 c 0,5,6 - 909 161 909 161 918 213 c 1,7,-1 - 1006 592 l 1,8,9 - 1022 674 1022 674 1022 711 c 0,10,11 - 1022 764 1022 764 999 781.5 c 128,-1,12 - 976 799 976 799 926 799 c 0,13,14 - 880 799 880 799 819 665.5 c 128,-1,15 - 758 532 758 532 694 260 c 1,16,17 - 660 111 660 111 547 45.5 c 128,-1,18 - 434 -20 434 -20 233 -20 c 0,19,20 - 104 -20 104 -20 47 72 c 1,21,-1 - 190 133 l 1,22,23 - 212 82 212 82 287 82 c 0,24,25 - 347 82 347 82 386 140.5 c 128,-1,26 - 425 199 425 199 455 328 c 0,27,28 - 478 428 478 428 514 512.5 c 128,-1,29 - 550 597 550 597 589.5 654.5 c 128,-1,30 - 629 712 629 712 675 757 c 128,-1,31 - 721 802 721 802 762 828.5 c 128,-1,32 - 803 855 803 855 844 872 c 128,-1,33 - 885 889 885 889 914 895 c 128,-1,34 - 943 901 943 901 965 901 c 0,35,36 - 1006 901 1006 901 1046 896 c 128,-1,37 - 1086 891 1086 891 1129.5 877 c 128,-1,38 - 1173 863 1173 863 1205.5 841 c 128,-1,39 - 1238 819 1238 819 1259 782.5 c 128,-1,40 - 1280 746 1280 746 1280 700 c 0,41,42 - 1280 670 1280 670 1272 643 c 1,43,-1 - 1188 276 l 2,44,45 - 1174 213 1174 213 1174 168 c 0,46,47 - 1174 102 1174 102 1227 102 c 2,48,-1 - 1511 102 l 1,49,-1 - 1278 -254 l 1,50,-1 - 1184 -254 l 1,51,-1 - 1296 0 l 1,52,53 - 1241 -20 1241 -20 1169 -20 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C7 -Encoding: 1223 1223 796 -Width: 1351 -VWidth: 0 -Flags: W -HStem: -217 102<643 843> -59 41G<559 624> 0 43G<174 450> 717 102<629 1081> 1393 41G<496 772 1238 1513> -LayerCount: 2 -Fore -SplineSet -1249 291 m 2,0,1 - 1222 173 1222 173 1173.5 81 c 128,-1,2 - 1125 -11 1125 -11 1069.5 -65.5 c 128,-1,3 - 1014 -120 1014 -120 947 -155.5 c 128,-1,4 - 880 -191 880 -191 821 -204 c 128,-1,5 - 762 -217 762 -217 702 -217 c 0,6,7 - 644 -217 644 -217 580 -191.5 c 128,-1,8 - 516 -166 516 -166 481 -125 c 1,9,-1 - 608 -18 l 1,10,11 - 654 -115 654 -115 756 -115 c 0,12,13 - 891 -115 891 -115 973 246 c 2,14,-1 - 1081 717 l 1,15,-1 - 606 717 l 1,16,-1 - 440 0 l 1,17,-1 - 174 0 l 1,18,-1 - 506 1434 l 1,19,-1 - 772 1434 l 1,20,-1 - 629 819 l 1,21,-1 - 1104 819 l 1,22,-1 - 1247 1434 l 1,23,-1 - 1513 1434 l 1,24,-1 - 1249 291 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C8 -Encoding: 1224 1224 797 -Width: 1054 -VWidth: 0 -Flags: W -HStem: -236 102<454 626> 0 43G<123 388> 440 102<504 780> 860 41G<322 588 877 1143> -LayerCount: 2 -Fore -SplineSet -971 160 m 2,0,1 - 931 -15 931 -15 794.5 -125.5 c 128,-1,2 - 658 -236 658 -236 500 -236 c 0,3,4 - 431 -236 431 -236 376.5 -211.5 c 128,-1,5 - 322 -187 322 -187 301 -143 c 1,6,-1 - 428 -37 l 1,7,8 - 447 -92 447 -92 474 -112.5 c 128,-1,9 - 501 -133 501 -133 555 -133 c 0,10,11 - 584 -133 584 -133 608 -112.5 c 128,-1,12 - 632 -92 632 -92 650.5 -51.5 c 128,-1,13 - 669 -11 669 -11 682 32 c 128,-1,14 - 695 75 695 75 709 135 c 2,15,-1 - 780 440 l 1,16,-1 - 481 440 l 1,17,-1 - 379 0 l 1,18,-1 - 123 0 l 1,19,-1 - 332 901 l 1,20,-1 - 588 901 l 1,21,-1 - 504 543 l 1,22,-1 - 803 543 l 1,23,-1 - 887 901 l 1,24,-1 - 1143 901 l 1,25,-1 - 971 160 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C9 -Encoding: 1225 1225 798 -Width: 1454 -VWidth: 0 -Flags: W -HStem: 0 43G<174 450> 717 102<629 1081> 1393 41G<496 772 1238 1513> -LayerCount: 2 -Fore -SplineSet -1206 102 m 1,0,-1 - 1423 102 l 1,1,-1 - 1188 -254 l 1,2,-1 - 1094 -254 l 1,3,-1 - 1206 0 l 1,4,-1 - 915 0 l 1,5,-1 - 1081 717 l 1,6,-1 - 606 717 l 1,7,-1 - 440 0 l 1,8,-1 - 174 0 l 1,9,-1 - 506 1434 l 1,10,-1 - 772 1434 l 1,11,-1 - 629 819 l 1,12,-1 - 1104 819 l 1,13,-1 - 1247 1434 l 1,14,-1 - 1513 1434 l 1,15,-1 - 1206 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CA -Encoding: 1226 1226 799 -Width: 1320 -VWidth: 0 -Flags: W -HStem: -20 123<954 1075> 0 43G<92 358> 440 102<473 750> 860 41G<292 557 846 1112> -VStem: 688 264<104 367> -LayerCount: 2 -Fore -SplineSet -1112 901 m 1,0,-1 - 967 276 l 2,1,2 - 952 208 952 208 952 168 c 0,3,4 - 952 102 952 102 1006 102 c 2,5,-1 - 1290 102 l 1,6,-1 - 1057 -254 l 1,7,-1 - 963 -254 l 1,8,-1 - 1075 0 l 1,9,10 - 1020 -20 1020 -20 948 -20 c 0,11,12 - 872 -20 872 -20 817.5 -3.5 c 128,-1,13 - 763 13 763 13 736.5 40.5 c 128,-1,14 - 710 68 710 68 699 95 c 128,-1,15 - 688 122 688 122 688 152 c 0,16,17 - 688 167 688 167 696 213 c 1,18,-1 - 750 440 l 1,19,-1 - 451 440 l 1,20,-1 - 348 0 l 1,21,-1 - 92 0 l 1,22,-1 - 301 901 l 1,23,-1 - 557 901 l 1,24,-1 - 473 543 l 1,25,-1 - 772 543 l 1,26,-1 - 856 901 l 1,27,-1 - 1112 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CB -Encoding: 1227 1227 800 -Width: 1206 -VWidth: 0 -Flags: W -HStem: 0 102<701 795> 522 102<632 879> 1393 41G<445 721 1092 1368> -VStem: 344 256<662 1109> 496 98<-315 -254> -LayerCount: 2 -Fore -SplineSet -1368 1434 m 1,0,-1 - 1036 0 l 1,1,-1 - 733 0 l 1,2,3 - 730 -3 730 -3 723.5 -10 c 128,-1,4 - 717 -17 717 -17 699.5 -44 c 128,-1,5 - 682 -71 682 -71 665.5 -103.5 c 128,-1,6 - 649 -136 649 -136 629 -193 c 128,-1,7 - 609 -250 609 -250 594 -315 c 1,8,-1 - 496 -315 l 1,9,-1 - 594 102 l 1,10,-1 - 795 102 l 1,11,-1 - 903 573 l 1,12,13 - 821 522 821 522 692 522 c 0,14,15 - 344 522 344 522 344 858 c 0,16,17 - 344 960 344 960 373 1085 c 2,18,-1 - 455 1434 l 1,19,-1 - 721 1434 l 1,20,-1 - 645 1110 l 2,21,22 - 600 914 600 914 600 805 c 0,23,24 - 600 697 600 697 637 661 c 128,-1,25 - 674 625 674 625 745 625 c 0,26,27 - 853 625 853 625 936 721 c 1,28,-1 - 1102 1434 l 1,29,-1 - 1368 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CC -Encoding: 1228 1228 801 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<496 590> 313 102<479 644> 860 41G<273 547 765 1030> -VStem: 233 238<421 765> 291 98<-315 -254> -LayerCount: 2 -Fore -SplineSet -1030 901 m 1,0,-1 - 821 0 l 1,1,-1 - 528 0 l 1,2,3 - 525 -3 525 -3 518.5 -10 c 128,-1,4 - 512 -17 512 -17 494.5 -44 c 128,-1,5 - 477 -71 477 -71 460.5 -103.5 c 128,-1,6 - 444 -136 444 -136 424 -193 c 128,-1,7 - 404 -250 404 -250 389 -315 c 1,8,-1 - 291 -315 l 1,9,-1 - 389 102 l 1,10,-1 - 590 102 l 1,11,-1 - 645 348 l 1,12,13 - 600 313 600 313 510 313 c 0,14,15 - 360 313 360 313 296.5 368.5 c 128,-1,16 - 233 424 233 424 233 549 c 0,17,18 - 233 657 233 657 291 901 c 1,19,-1 - 547 901 l 1,20,21 - 471 578 471 578 471 496 c 0,22,23 - 471 444 471 444 491.5 430 c 128,-1,24 - 512 416 512 416 565 416 c 0,25,26 - 663 416 663 416 684 512 c 1,27,-1 - 774 901 l 1,28,-1 - 1030 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CD -Encoding: 1229 1229 802 -Width: 1732 -VWidth: 0 -Flags: W -HStem: 0 43G<174 450> 1393 41G<496 782 1493 1788> -LayerCount: 2 -Fore -SplineSet -1481 102 m 1,0,-1 - 1698 102 l 1,1,-1 - 1462 -254 l 1,2,-1 - 1368 -254 l 1,3,-1 - 1481 0 l 1,4,-1 - 1190 0 l 1,5,-1 - 1432 1047 l 1,6,-1 - 872 248 l 1,7,-1 - 682 1047 l 1,8,-1 - 440 0 l 1,9,-1 - 174 0 l 1,10,-1 - 506 1434 l 1,11,-1 - 772 1434 l 1,12,-1 - 961 631 l 1,13,-1 - 1522 1434 l 1,14,-1 - 1788 1434 l 1,15,-1 - 1481 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CE -Encoding: 1230 1230 803 -Width: 1484 -VWidth: 0 -Flags: W -HStem: -20 102<-20 90> 0 43G<615 706> 860 41G<292 569 1133 1419> -VStem: -94 74<85 131> -LayerCount: 2 -Fore -SplineSet -397 213 m 2,0,1 - 368 87 368 87 276 33.5 c 128,-1,2 - 184 -20 184 -20 39 -20 c 0,3,4 - -20 -20 -20 -20 -57 14 c 128,-1,5 - -94 48 -94 48 -94 100 c 0,6,7 - -94 111 -94 111 -90 131 c 1,8,-1 - -20 131 l 1,9,-1 - -20 123 l 2,10,11 - -20 105 -20 105 -5.5 93.5 c 128,-1,12 - 9 82 9 82 33 82 c 0,13,14 - 67 82 67 82 105 147 c 128,-1,15 - 143 212 143 212 156 276 c 1,16,-1 - 301 901 l 1,17,-1 - 557 901 l 1,18,-1 - 723 311 l 1,19,-1 - 1163 901 l 1,20,-1 - 1419 901 l 1,21,-1 - 1235 102 l 1,22,-1 - 1450 102 l 1,23,-1 - 1214 -254 l 1,24,-1 - 1120 -254 l 1,25,-1 - 1233 0 l 1,26,-1 - 954 0 l 1,27,-1 - 1079 543 l 1,28,-1 - 676 0 l 1,29,-1 - 627 0 l 1,30,-1 - 473 543 l 1,31,-1 - 397 213 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CF -Encoding: 1231 1231 804 -Width: 448 -VWidth: 0 -Flags: W -HStem: 0 43G<92 368> 860 41G<292 567> -VStem: 92 475 -LayerCount: 2 -Fore -SplineSet -567 901 m 1,0,-1 - 358 0 l 1,1,-1 - 92 0 l 1,2,-1 - 301 901 l 1,3,-1 - 567 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04D0 -Encoding: 1232 1232 805 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1516 123<837 1198> -VStem: 756 80<1603 1713> 1221 76<1646 1726> -LayerCount: 2 -Back -SplineSet -1026.05 1652.74 m 0 - 1101.82 1652.74 1183.74 1701.89 1200.13 1746.94 c 1 - 1269.76 1705.98 l 1 - 1232.9 1603.58 1112.06 1515.52 993.28 1515.52 c 0 - 882.688 1515.52 804.864 1591.3 804.864 1685.5 c 0 - 804.864 1691.65 806.912 1699.84 806.912 1705.98 c 1 - 892.928 1746.94 l 1 - 892.928 1742.85 l 2 - 892.928 1699.84 952.32 1652.74 1026.05 1652.74 c 0 -1064.96 1433.6 m 1 - 1255.42 0 l 1 - 1019.9 0 l 1 - 964.608 409.6 l 1 - 509.952 409.6 l 1 - 266.24 0 l 1 - 30.7197 0 l 1 - 884.736 1433.6 l 1 - 1064.96 1433.6 l 1 -882.688 1034.24 m 1 - 571.392 512 l 1 - 952.32 512 l 1 - 882.688 1034.24 l 1 -EndSplineSet -Fore -Refer: 1068 57420 S 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D1 -Encoding: 1233 1233 806 -Width: 921 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1085 123<624 985> -VStem: 154 246<136 485> 543 80<1172 1283> 690 262<96 373> 1008 76<1216 1296> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 1068 57420 S 1 0 0 1 1075 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D2 -Encoding: 1234 1234 807 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> 1516 170<801 932 1087 1219> -VStem: 762 209 1049 209 -LayerCount: 2 -Fore -Refer: 142 196 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D3 -Encoding: 1235 1235 808 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1085 170<629 760 915 1047> -VStem: 154 246<136 485> 590 209 690 262<96 373> 877 209 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 132 228 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D4 -Encoding: 1236 1236 809 -Width: 1558 -VWidth: 0 -Flags: W -HStem: 0 102<897 1466> 410 102<571 700> 799 102<1081 1434> 1331 102<1180 1741> -LayerCount: 2 -Fore -Refer: 168 198 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D5 -Encoding: 1237 1237 810 -Width: 1632 -VWidth: 0 -Flags: W -HStem: -20 102<404 599 952 1219> 451 102<963 1304> 520 102<488 694> 819 102<492 708 1089 1295> -VStem: 127 256<101 396> 1313 233<554 763> -LayerCount: 2 -Fore -Refer: 169 230 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D6 -Encoding: 1238 1238 811 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> 1516 123<708 1069> -VStem: 627 80<1603 1713> 1092 76<1646 1726> -LayerCount: 2 -Fore -Refer: 1068 57420 N 1 0 0 1 1159 246 2 -Refer: 32 69 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D7 -Encoding: 1239 1239 812 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1085 123<592 952> -VStem: 150 246<143 446> 510 80<1172 1283> 799 233<561 763> 975 76<1216 1296> -LayerCount: 2 -Fore -Refer: 1068 57420 N 1 0 0 1 1042 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D8 -Encoding: 1240 1240 813 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<591 882> 614 102<487 1235> 1352 102<865 1198> -VStem: 221 258<265 612> 1305 252<720 1181> -LayerCount: 2 -Fore -Refer: 647 399 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10846 -Encoding: 1241 1241 814 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<401 607> 348 102<393 733> 819 102<476 743> -VStem: 150 233<138 340> 786 246<456 758> -LayerCount: 2 -Fore -Refer: 593 477 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04DA -Encoding: 1242 1242 815 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<591 882> 614 102<487 1235> 1352 102<865 1198> 1516 170<909 1040 1196 1327> -VStem: 221 258<265 612> 870 209 1157 209 1305 252<720 1181> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1397 246 2 -Refer: 647 399 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04DB -Encoding: 1243 1243 816 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<401 607> 348 102<393 733> 819 102<476 743> 1085 170<518 649 805 936> -VStem: 150 233<138 340> 479 209 766 209 786 246<456 758> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1006 -184 2 -Refer: 593 477 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04DC -Encoding: 1244 1244 817 -Width: 1525 -VWidth: 0 -Flags: W -HStem: 0 43<37 307 627 900 1214 1481> 1331 102<389 425 1685 1767> 1516 170<909 1040 1196 1327> -VStem: 870 209 1157 209 1214 268<0 209> -LayerCount: 2 -Fore -Refer: 99 776 S 1 0 0 1 1397 246 2 -Refer: 402 1046 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04DD -Encoding: 1245 1245 818 -Width: 1288 -VWidth: 0 -Flags: W -HStem: -20 102<41 151> 0 43<516 782 993 1219> 799 102<279 336 1302 1403> 1085 170<705 836 991 1122> -VStem: -33 74<85 131> 666 209 952 209 995 225<0 184> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1192 -184 2 -Refer: 434 1078 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04DE -Encoding: 1246 1246 819 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<356 590> 799 102<551 707> 1352 102<630 870> 1516 170<614 745 901 1032> -VStem: 575 209 801 268<356 704> 862 209 899 264<1056 1329> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1102 246 2 -Refer: 403 1047 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04DF -Encoding: 1247 1247 820 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<326 550> 451 102<422 598> 819 102<480 671> 1085 170<528 659 815 946> -VStem: 489 209 623 256<165 425> 674 254<620 818> 776 209 -LayerCount: 2 -Fore -Refer: 99 776 S 1 0 0 1 1016 -184 2 -Refer: 435 1079 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04E0 -Encoding: 1248 1248 821 -Width: 1030 -VWidth: 0 -Flags: W -HStem: -20 102<408 697> 1331 102<541 1016> -VStem: 133 213<140 326> 926 264<339 713> -LayerCount: 2 -Fore -Refer: 620 439 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E1 -Encoding: 1249 1249 822 -Width: 940 -VWidth: 0 -Flags: W -HStem: -410 102<233 541> 799 102<350 784> -VStem: 713 254<-110 218> -LayerCount: 2 -Fore -Refer: 621 658 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E2 -Encoding: 1250 1250 823 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 991 1267> 1393 41<414 690 1313 1589> 1556 115<795 1239> -VStem: 768 498 -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1309 287 2 -Refer: 404 1048 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E3 -Encoding: 1251 1251 824 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1085 115<514 958> -VStem: 154 256<105 501> 487 498 668 260<101 364> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 264 363 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E4 -Encoding: 1252 1252 825 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 991 1267> 1393 41<414 690 1313 1589> 1516 170<807 938 1094 1225> -VStem: 768 209 1055 209 -LayerCount: 2 -Fore -Refer: 99 776 S 1 0 0 1 1294 246 2 -Refer: 404 1048 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E5 -Encoding: 1253 1253 826 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<435 668 876 1050> 860 41<281 547 826 1092> 1085 170<541 672 827 958> -VStem: 154 256<105 501> 502 209 668 260<101 364> 788 209 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 137 252 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E6 -Encoding: 1254 1254 827 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> 1516 170<823 954 1110 1241> -VStem: 199 258<251 749> 784 209 1071 209 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 157 214 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E7 -Encoding: 1255 1255 828 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1085 170<563 694 850 981> -VStem: 147 244<117 508> 524 209 811 209 821 244<380 773> -LayerCount: 2 -Fore -Refer: 136 246 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E8 -Encoding: 1256 1256 829 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 847> 666 102<506 1184> 1352 102<831 1121> -VStem: 199 258<251 662> 1235 256<772 1178> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -Refer: 630 415 N 1 0 0 1 -41 0 2 -Validated: 1 -EndChar - -StartChar: uni04E9 -Encoding: 1257 1257 830 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<422 648> 399 102<434 778> 819 102<578 795> -VStem: 147 244<118 398> 821 244<505 773> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -Refer: 637 629 N 1 0 0 1 -29 0 2 -Validated: 1 -EndChar - -StartChar: uni04EA -Encoding: 1258 1258 831 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<572 847> 666 102<506 1184> 1352 102<831 1121> 1516 170<823 954 1110 1241> -VStem: 199 258<251 662> 784 209 1071 209 1235 256<772 1178> -LayerCount: 2 -Fore -Refer: 630 415 N 1 0 0 1 -41 0 2 -Refer: 99 776 N 1 0 0 1 1311 246 2 -Validated: 1 -EndChar - -StartChar: uni04EB -Encoding: 1259 1259 832 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<422 648> 399 102<434 778> 819 102<578 795> 1085 170<563 694 850 981> -VStem: 147 244<118 398> 524 209 811 209 821 244<505 773> -LayerCount: 2 -Fore -Refer: 637 629 N 1 0 0 1 -29 0 2 -Refer: 99 776 N 1 0 0 1 1051 -184 2 -Validated: 1 -EndChar - -StartChar: uni04EC -Encoding: 1260 1260 833 -Width: 1347 -VWidth: 0 -Flags: W -HStem: -20 102<409 735> 713 102<717 1108> 1352 102<721 1050> 1516 170<725 856 1012 1143> -VStem: 686 209 973 209 1147 258<825 1195> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1212 246 2 -Refer: 425 1069 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04ED -Encoding: 1261 1261 834 -Width: 989 -VWidth: 0 -Flags: W -HStem: -20 102<325 574> 430 102<481 745> 819 102<500 729> 1085 170<532 664 819 950> -VStem: 494 209 772 252<451 763> 780 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1020 -184 2 -Refer: 457 1101 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04EE -Encoding: 1262 1262 835 -Width: 1081 -VWidth: 0 -Flags: W -HStem: -20 102<292 442> 1393 41<362 589 1217 1487> 1556 115<731 1176> -VStem: 705 498 -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1245 287 2 -Refer: 415 1059 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04EF -Encoding: 1263 1263 836 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<305 537> -20 102<415 625> 860 41<281 547 826 1092> 1126 115<526 971> -VStem: 154 246<99 456> 500 498 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1040 -143 2 -Refer: 447 1091 S 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F0 -Encoding: 1264 1264 837 -Width: 1081 -VWidth: 0 -Flags: W -HStem: -20 102<292 442> 1393 41<362 589 1217 1487> 1516 170<721 852 1008 1139> -VStem: 682 209 969 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1208 246 2 -Refer: 415 1059 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F1 -Encoding: 1265 1265 838 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<305 537> -20 102<415 625> 860 41<281 547 826 1092> 1085 170<528 659 815 946> -VStem: 154 246<99 456> 489 209 776 209 -LayerCount: 2 -Fore -Refer: 99 776 S 1 0 0 1 1016 -184 2 -Refer: 447 1091 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F2 -Encoding: 1266 1266 839 -Width: 1081 -VWidth: 0 -Flags: W -HStem: -20 102<292 442> 1393 41<362 589 1217 1487> 1495 403 -VStem: 590 422 958 422 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1161 246 2 -Refer: 415 1059 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F3 -Encoding: 1267 1267 840 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<305 537> -20 102<415 625> 860 41<281 547 826 1092> 1065 403 -VStem: 154 246<99 456> 477 422 846 422 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1049 -184 2 -Refer: 447 1091 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F4 -Encoding: 1268 1268 841 -Width: 1165 -VWidth: 0 -Flags: W -HStem: 0 43<729 1005> 522 102<591 838> 1393 41<404 680 1051 1327> 1516 170<692 823 979 1110> -VStem: 303 256<661 1109> 653 209 940 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1180 246 2 -Refer: 419 1063 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F5 -Encoding: 1269 1269 842 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<785 1002> 313 102<489 654> 860 41<284 557 775 1040> 1085 170<541 672 827 958> -VStem: 244 238<420 765> 502 209 616 268<85 263> 788 209 1006 70<94 131> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1028 -184 2 -Refer: 451 1095 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F8 -Encoding: 1272 1272 843 -Width: 1505 -VWidth: 0 -Flags: W -HStem: 0 43<1075 1351> 0 102<373 575> 799 102<557 729> 1393 41<404 680 1397 1673> 1516 170<862 993 1149 1280> -VStem: 797 264<362 724> 823 209 1075 598 1110 209 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1350 246 2 -Refer: 423 1067 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F9 -Encoding: 1273 1273 844 -Width: 1392 -VWidth: 0 -Flags: W -HStem: -20 102<404 564 1124 1332> 481 102<470 628> 860 41<281 547 1111 1374> 1085 170<672 803 958 1090> -VStem: 147 244<92 426> 633 209 641 256<200 476> 920 209 952 254<83 364> 1339 70<96 131> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1159 -184 2 -Refer: 455 1099 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F6 -Encoding: 1270 1270 845 -Width: 899 -VWidth: 0 -Flags: W -HStem: 1331 102<666 1227> -VStem: 250 158<-320 -186> -LayerCount: 2 -Fore -SplineSet -223 0 m 1,0,-1 - 92 0 l 1,1,-1 - 424 1434 l 1,2,-1 - 1251 1434 l 1,3,-1 - 1227 1331 l 1,4,-1 - 666 1331 l 1,5,-1 - 358 0 l 1,6,-1 - 317 -125 l 1,7,8 - 362 -141 362 -141 385 -174 c 128,-1,9 - 408 -207 408 -207 408 -238 c 0,10,11 - 408 -287 408 -287 353.5 -329 c 128,-1,12 - 299 -371 299 -371 227 -397 c 1,13,-1 - 172 -373 l 1,14,15 - 202 -353 202 -353 226 -320.5 c 128,-1,16 - 250 -288 250 -288 250 -254 c 0,17,18 - 250 -194 250 -194 158 -164 c 1,19,-1 - 223 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04F7 -Encoding: 1271 1271 846 -Width: 835 -VWidth: 0 -Flags: W -HStem: -16 98<483 610> 819 102<385 580> -VStem: 131 270<90 264> 381 158<-320 -186> 590 268<664 811> -LayerCount: 2 -Fore -SplineSet -590 741 m 0,0,1 - 590 771 590 771 568 795 c 128,-1,2 - 546 819 546 819 506 819 c 0,3,4 - 453 819 453 819 378 772.5 c 128,-1,5 - 303 726 303 726 276 678 c 1,6,-1 - 211 694 l 1,7,8 - 264 800 264 800 356 861 c 128,-1,9 - 448 922 448 922 557 922 c 0,10,11 - 642 922 642 922 703 909 c 128,-1,12 - 764 896 764 896 796.5 872.5 c 128,-1,13 - 829 849 829 849 843.5 822 c 128,-1,14 - 858 795 858 795 858 762 c 0,15,16 - 858 707 858 707 811 641 c 128,-1,17 - 764 575 764 575 697 513.5 c 128,-1,18 - 630 452 630 452 562.5 391.5 c 128,-1,19 - 495 331 495 331 448 270 c 128,-1,20 - 401 209 401 209 401 162 c 0,21,22 - 401 128 401 128 422.5 105 c 128,-1,23 - 444 82 444 82 485 82 c 0,24,25 - 539 82 539 82 613.5 128 c 128,-1,26 - 688 174 688 174 713 221 c 1,27,-1 - 778 205 l 1,28,29 - 732 113 732 113 654.5 54.5 c 128,-1,30 - 577 -4 577 -4 483 -16 c 1,31,-1 - 449 -125 l 1,32,33 - 494 -141 494 -141 516.5 -174 c 128,-1,34 - 539 -207 539 -207 539 -238 c 0,35,36 - 539 -287 539 -287 484.5 -329 c 128,-1,37 - 430 -371 430 -371 358 -397 c 1,38,-1 - 303 -373 l 1,39,40 - 333 -353 333 -353 357 -320.5 c 128,-1,41 - 381 -288 381 -288 381 -254 c 0,42,43 - 381 -194 381 -194 289 -164 c 1,44,-1 - 348 -16 l 1,45,46 - 230 -6 230 -6 180.5 31.5 c 128,-1,47 - 131 69 131 69 131 135 c 0,48,49 - 131 205 131 205 178.5 282 c 128,-1,50 - 226 359 226 359 293.5 423 c 128,-1,51 - 361 487 361 487 428 545.5 c 128,-1,52 - 495 604 495 604 542.5 655.5 c 128,-1,53 - 590 707 590 707 590 741 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FA -Encoding: 1274 1274 847 -Width: 1136 -VWidth: 0 -Flags: W -HStem: -348 102<226 457> 799 102<291 457 748 932> 1331 102<846 1407> -LayerCount: 2 -Fore -SplineSet -266 799 m 1,0,-1 - 291 901 l 1,1,-1 - 481 901 l 1,2,-1 - 604 1434 l 1,3,-1 - 1432 1434 l 1,4,-1 - 1407 1331 l 1,5,-1 - 846 1331 l 1,6,-1 - 748 901 l 1,7,-1 - 956 901 l 1,8,-1 - 932 799 l 1,9,-1 - 723 799 l 1,10,-1 - 563 102 l 1,11,-1 - 727 102 l 1,12,-1 - 686 -68 l 2,13,14 - 669 -141 669 -141 629 -197 c 128,-1,15 - 589 -253 589 -253 537 -285 c 128,-1,16 - 485 -317 485 -317 429 -332.5 c 128,-1,17 - 373 -348 373 -348 317 -348 c 0,18,19 - 188 -348 188 -348 131 -256 c 1,20,-1 - 274 -195 l 1,21,22 - 296 -246 296 -246 371 -246 c 0,23,24 - 431 -246 431 -246 470 -187.5 c 128,-1,25 - 509 -129 509 -129 539 0 c 1,26,-1 - 272 0 l 1,27,-1 - 457 799 l 1,28,-1 - 266 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FB -Encoding: 1275 1275 848 -Width: 835 -VWidth: 0 -Flags: W -HStem: -348 102<234 464> -20 102<411 546> 395 102<164 266 680 764> 819 102<385 580> -VStem: 131 270<91 265> 590 268<661 811> -LayerCount: 2 -Fore -SplineSet -590 741 m 0,0,1 - 590 771 590 771 568 795 c 128,-1,2 - 546 819 546 819 506 819 c 0,3,4 - 453 819 453 819 378 772.5 c 128,-1,5 - 303 726 303 726 276 678 c 1,6,-1 - 211 694 l 1,7,8 - 264 800 264 800 356 861 c 128,-1,9 - 448 922 448 922 557 922 c 0,10,11 - 642 922 642 922 703 909 c 128,-1,12 - 764 896 764 896 796.5 872.5 c 128,-1,13 - 829 849 829 849 843.5 822 c 128,-1,14 - 858 795 858 795 858 762 c 0,15,16 - 858 704 858 704 811.5 640.5 c 128,-1,17 - 765 577 765 577 680 498 c 1,18,-1 - 788 498 l 1,19,-1 - 764 395 l 1,20,-1 - 567 395 l 1,21,22 - 486 320 486 320 443.5 265 c 128,-1,23 - 401 210 401 210 401 162 c 0,24,25 - 401 128 401 128 422.5 105 c 128,-1,26 - 444 82 444 82 485 82 c 0,27,28 - 539 82 539 82 613.5 128 c 128,-1,29 - 688 174 688 174 713 221 c 1,30,-1 - 778 205 l 1,31,-1 - 694 -68 l 2,32,33 - 665 -163 665 -163 603 -228 c 128,-1,34 - 541 -293 541 -293 471 -320.5 c 128,-1,35 - 401 -348 401 -348 326 -348 c 0,36,37 - 196 -348 196 -348 139 -256 c 1,38,-1 - 283 -195 l 1,39,40 - 305 -246 305 -246 379 -246 c 0,41,42 - 439 -246 439 -246 478 -187.5 c 128,-1,43 - 517 -129 517 -129 547 -2 c 1,44,45 - 494 -20 494 -20 434 -20 c 0,46,47 - 322 -20 322 -20 253.5 -0.5 c 128,-1,48 - 185 19 185 19 158 52 c 128,-1,49 - 131 85 131 85 131 135 c 0,50,51 - 131 249 131 249 266 395 c 1,52,-1 - 139 395 l 1,53,-1 - 164 498 l 1,54,-1 - 373 498 l 1,55,56 - 389 512 389 512 419.5 539 c 128,-1,57 - 450 566 450 566 465.5 580 c 128,-1,58 - 481 594 481 594 504.5 616.5 c 128,-1,59 - 528 639 528 639 540.5 653 c 128,-1,60 - 553 667 553 667 566 684 c 128,-1,61 - 579 701 579 701 584.5 715 c 128,-1,62 - 590 729 590 729 590 741 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FC -Encoding: 1276 1276 849 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -217 102<522 723> -59 41G<439 503> 0 43G<86 299> 1393 41G<422 691 1117 1331> -VStem: 776 242<-37 317> -LayerCount: 2 -Fore -SplineSet -1018 117 m 0,0,1 - 1018 48 1018 48 991.5 -9 c 128,-1,2 - 965 -66 965 -66 921 -103.5 c 128,-1,3 - 877 -141 877 -141 819.5 -167.5 c 128,-1,4 - 762 -194 762 -194 702.5 -205.5 c 128,-1,5 - 643 -217 643 -217 582 -217 c 0,6,7 - 524 -217 524 -217 459.5 -191.5 c 128,-1,8 - 395 -166 395 -166 360 -125 c 1,9,-1 - 487 -18 l 1,10,11 - 533 -115 533 -115 635 -115 c 0,12,13 - 680 -115 680 -115 711.5 -85.5 c 128,-1,14 - 743 -56 743 -56 755 -13.5 c 128,-1,15 - 767 29 767 29 771.5 55.5 c 128,-1,16 - 776 82 776 82 776 98 c 0,17,18 - 776 144 776 144 754.5 232.5 c 128,-1,19 - 733 321 733 321 670 543 c 1,20,-1 - 268 0 l 1,21,-1 - 86 0 l 1,22,-1 - 618 721 l 1,23,-1 - 422 1434 l 1,24,-1 - 680 1434 l 1,25,-1 - 807 975 l 1,26,-1 - 1147 1434 l 1,27,-1 - 1331 1434 l 1,28,-1 - 858 795 l 1,29,30 - 953 460 953 460 985.5 325 c 128,-1,31 - 1018 190 1018 190 1018 117 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FD -Encoding: 1277 1277 850 -Width: 849 -VWidth: 0 -Flags: W -HStem: -258 102<322 522> 0 43G<8 223> 860 41G<223 488 769 981> -VStem: 569 227<-94 178> -LayerCount: 2 -Fore -SplineSet -797 53 m 0,0,1 - 797 2 797 2 775.5 -49 c 128,-1,2 - 754 -100 754 -100 708 -148.5 c 128,-1,3 - 662 -197 662 -197 574.5 -227.5 c 128,-1,4 - 487 -258 487 -258 371 -258 c 0,5,6 - 302 -258 302 -258 246.5 -234 c 128,-1,7 - 191 -210 191 -210 170 -166 c 1,8,-1 - 297 -59 l 1,9,10 - 316 -115 316 -115 343 -135.5 c 128,-1,11 - 370 -156 370 -156 424 -156 c 0,12,13 - 468 -156 468 -156 499 -135.5 c 128,-1,14 - 530 -115 530 -115 544 -82 c 128,-1,15 - 558 -49 558 -49 563.5 -20.5 c 128,-1,16 - 569 8 569 8 569 37 c 0,17,18 - 569 77 569 77 467 317 c 1,19,-1 - 186 0 l 1,20,-1 - 8 0 l 1,21,-1 - 410 455 l 1,22,-1 - 223 901 l 1,23,-1 - 471 901 l 1,24,-1 - 580 645 l 1,25,-1 - 805 901 l 1,26,-1 - 981 901 l 1,27,-1 - 635 510 l 1,28,29 - 759 211 759 211 776 157 c 0,30,31 - 797 94 797 94 797 53 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FE -Encoding: 1278 1278 851 -Width: 1191 -VWidth: 0 -Flags: W -HStem: 0 43G<41 254 765 1034> 696 115<365 549 840 1032> 1393 41G<377 646 1071 1286> -LayerCount: 2 -Fore -SplineSet -825 811 m 1,0,-1 - 1073 811 l 1,1,-1 - 1032 696 l 1,2,-1 - 840 696 l 1,3,-1 - 1034 0 l 1,4,-1 - 776 0 l 1,5,-1 - 625 543 l 1,6,-1 - 223 0 l 1,7,-1 - 41 0 l 1,8,-1 - 555 696 l 1,9,-1 - 326 696 l 1,10,-1 - 365 811 l 1,11,-1 - 549 811 l 1,12,-1 - 377 1434 l 1,13,-1 - 635 1434 l 1,14,-1 - 762 975 l 1,15,-1 - 1102 1434 l 1,16,-1 - 1286 1434 l 1,17,-1 - 825 811 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FF -Encoding: 1279 1279 852 -Width: 833 -VWidth: 0 -Flags: W -HStem: 0 43G<61 276 636 903> 422 115<229 428 725 895> 860 41G<276 542 822 1034> -LayerCount: 2 -Fore -SplineSet -434 422 m 1,0,-1 - 188 422 l 1,1,-1 - 229 537 l 1,2,-1 - 428 537 l 1,3,-1 - 276 901 l 1,4,-1 - 524 901 l 1,5,-1 - 633 645 l 1,6,-1 - 858 901 l 1,7,-1 - 1034 901 l 1,8,-1 - 713 537 l 1,9,-1 - 934 537 l 1,10,-1 - 895 422 l 1,11,-1 - 725 422 l 1,12,-1 - 903 0 l 1,13,-1 - 653 0 l 1,14,-1 - 520 317 l 1,15,-1 - 240 0 l 1,16,-1 - 61 0 l 1,17,-1 - 434 422 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0510 -Encoding: 1296 1296 853 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -20 102<502 740> 799 102<734 881> 1352 102<770 1012> -VStem: 174 266<176 532> 397 268<966 1222> -LayerCount: 2 -Fore -Refer: 608 400 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0511 -Encoding: 1297 1297 854 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<380 603> 451 102<538 682> 819 102<559 750> -VStem: 113 254<93 347> 268 254<570 786> -LayerCount: 2 -Fore -Refer: 609 603 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0512 -Encoding: 1298 1298 855 -Width: 1413 -VWidth: 0 -Flags: W -HStem: -348 102<697 912> -20 102<146 378> 1331 102<956 1286> -LayerCount: 2 -Fore -SplineSet -1286 1331 m 1,0,-1 - 956 1331 l 1,1,-1 - 709 260 l 2,2,3 - 645 -20 645 -20 238 -20 c 0,4,5 - 108 -20 108 -20 51 72 c 1,6,-1 - 195 133 l 1,7,8 - 217 82 217 82 291 82 c 0,9,10 - 351 82 351 82 390 140.5 c 128,-1,11 - 429 199 429 199 459 328 c 2,12,-1 - 715 1434 l 1,13,-1 - 1577 1434 l 1,14,-1 - 1229 -68 l 6,15,16 - 1212 -140 1212 -140 1161 -196.5 c 132,-1,17 - 1110 -253 1110 -253 1043.5 -284.5 c 132,-1,18 - 977 -316 977 -316 911.5 -332 c 132,-1,19 - 846 -348 846 -348 788 -348 c 4,20,21 - 659 -348 659 -348 602 -256 c 5,22,-1 - 745 -195 l 5,23,24 - 767 -246 767 -246 842 -246 c 4,25,26 - 894 -246 894 -246 920.5 -193 c 132,-1,27 - 947 -140 947 -140 979 0 c 6,28,-1 - 1286 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0513 -Encoding: 1299 1299 856 -Width: 1230 -VWidth: 0 -Flags: W -HStem: -348 102<586 801> -20 102<142 372> 799 102<869 1015> -VStem: 1022 258<489 791> -LayerCount: 2 -Fore -SplineSet -1006 592 m 1,0,1 - 1022 674 1022 674 1022 711 c 0,2,3 - 1022 764 1022 764 999 781.5 c 128,-1,4 - 976 799 976 799 926 799 c 0,5,6 - 880 799 880 799 819 665.5 c 128,-1,7 - 758 532 758 532 694 260 c 1,8,9 - 660 111 660 111 547 45.5 c 128,-1,10 - 434 -20 434 -20 233 -20 c 0,11,12 - 104 -20 104 -20 47 72 c 1,13,-1 - 190 133 l 1,14,15 - 212 82 212 82 287 82 c 0,16,17 - 347 82 347 82 386 140.5 c 128,-1,18 - 425 199 425 199 455 328 c 0,19,20 - 478 428 478 428 514 512.5 c 128,-1,21 - 550 597 550 597 589.5 654.5 c 128,-1,22 - 629 712 629 712 675 757 c 128,-1,23 - 721 802 721 802 762 828.5 c 128,-1,24 - 803 855 803 855 844 872 c 128,-1,25 - 885 889 885 889 914 895 c 128,-1,26 - 943 901 943 901 965 901 c 0,27,28 - 1006 901 1006 901 1046 896 c 128,-1,29 - 1086 891 1086 891 1129.5 877 c 128,-1,30 - 1173 863 1173 863 1205.5 841 c 128,-1,31 - 1238 819 1238 819 1259 782.5 c 128,-1,32 - 1280 746 1280 746 1280 700 c 0,33,34 - 1280 670 1280 670 1272 643 c 1,35,-1 - 1108 -68 l 6,36,37 - 1091 -140 1091 -140 1041.5 -196.5 c 132,-1,38 - 992 -253 992 -253 928 -284.5 c 132,-1,39 - 864 -316 864 -316 799.5 -332 c 132,-1,40 - 735 -348 735 -348 678 -348 c 4,41,42 - 549 -348 549 -348 492 -256 c 5,43,-1 - 635 -195 l 5,44,45 - 657 -246 657 -246 731 -246 c 4,46,47 - 783 -246 783 -246 809.5 -193 c 132,-1,48 - 836 -140 836 -140 868 0 c 6,49,-1 - 1006 592 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni051A -Encoding: 1306 1306 857 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -348 102<908 1034> 1352 102<812 1130> -VStem: 199 254<256 745> 532 268<-142 -1> 1237 254<714 1178> -LayerCount: 2 -Fore -Refer: 43 81 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051B -Encoding: 1307 1307 858 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -410 102<788 1003> -20 102<421 630> 819 102<573 811> -VStem: 156 244<115 512> 623 260<-305 -10> 825 242<489 801> 1010 70<-296 -258> -LayerCount: 2 -Fore -Refer: 17 113 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051C -Encoding: 1308 1308 859 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43<461 668 1061 1268> 860 41<940 1169> 1393 41<332 579 1775 2042> -LayerCount: 2 -Fore -Refer: 50 87 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051D -Encoding: 1309 1309 860 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43<384 577 982 1175> 860 41<270 497 901 1095 1499 1688> -LayerCount: 2 -Fore -Refer: 22 119 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051E -Encoding: 1310 1310 861 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 119<1065 1110> 1393 41G<414 690 1140 1458> -LayerCount: 2 -Fore -SplineSet -358 0 m 1,0,-1 - 92 0 l 1,1,-1 - 424 1434 l 1,2,-1 - 690 1434 l 1,3,-1 - 561 877 l 1,4,-1 - 918 1194 l 1,5,-1 - 797 1321 l 1,6,-1 - 864 1384 l 1,7,-1 - 987 1257 l 1,8,-1 - 1186 1434 l 1,9,-1 - 1458 1434 l 1,10,-1 - 1112 1126 l 1,11,-1 - 1229 1006 l 1,12,-1 - 1161 942 l 1,13,-1 - 1042 1065 l 1,14,-1 - 760 813 l 1,15,16 - 835 792 835 792 884 742.5 c 128,-1,17 - 933 693 933 693 954 630.5 c 128,-1,18 - 975 568 975 568 986.5 497 c 128,-1,19 - 998 426 998 426 1004 359.5 c 128,-1,20 - 1010 293 1010 293 1020.5 239 c 128,-1,21 - 1031 185 1031 185 1059.5 152 c 128,-1,22 - 1088 119 1088 119 1137 119 c 1,23,-1 - 1110 0 l 1,24,25 - 1007 0 1007 0 933.5 35.5 c 128,-1,26 - 860 71 860 71 822 128.5 c 128,-1,27 - 784 186 784 186 761 256 c 128,-1,28 - 738 326 738 326 728.5 399.5 c 128,-1,29 - 719 473 719 473 711 535 c 128,-1,30 - 703 597 703 597 685.5 643.5 c 128,-1,31 - 668 690 668 690 637 702 c 1,32,-1 - 492 571 l 1,33,-1 - 358 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni051F -Encoding: 1311 1311 862 -Width: 917 -VWidth: 0 -Flags: W -HStem: 0 43G<82 347 608 848> 860 41G<281 547 748 1020> -LayerCount: 2 -Fore -SplineSet -553 932 m 1,0,-1 - 621 995 l 1,1,-1 - 748 862 l 1,2,-1 - 791 901 l 1,3,-1 - 1020 901 l 1,4,-1 - 854 754 l 1,5,-1 - 985 616 l 1,6,-1 - 918 553 l 1,7,-1 - 784 692 l 1,8,-1 - 571 502 l 1,9,-1 - 848 0 l 1,10,-1 - 631 0 l 1,11,-1 - 424 371 l 1,12,-1 - 338 0 l 1,13,-1 - 82 0 l 1,14,-1 - 291 901 l 1,15,-1 - 547 901 l 1,16,-1 - 483 627 l 1,17,-1 - 678 801 l 1,18,-1 - 553 932 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0180 -Encoding: 384 384 863 -Width: 1120 -VWidth: 0 -Flags: W -HStem: -20 102<510 729> 819 102<648 884> 1085 102<356 430 711 817> -VStem: 248 244<100 430> 911 246<386 786> -LayerCount: 2 -Fore -SplineSet -643 897 m 1,0,1 - 723 922 723 922 803 922 c 0,2,3 - 987 922 987 922 1072 837 c 128,-1,4 - 1157 752 1157 752 1157 606 c 0,5,6 - 1157 431 1157 431 1090.5 290 c 128,-1,7 - 1024 149 1024 149 892.5 64.5 c 128,-1,8 - 761 -20 761 -20 586 -20 c 0,9,10 - 514 -20 514 -20 459.5 -10.5 c 128,-1,11 - 405 -1 405 -1 354 24.5 c 128,-1,12 - 303 50 303 50 275.5 102 c 128,-1,13 - 248 154 248 154 248 231 c 0,14,15 - 248 292 248 292 266 369 c 2,16,-1 - 430 1085 l 1,17,-1 - 332 1085 l 1,18,-1 - 356 1188 l 1,19,-1 - 455 1188 l 1,20,-1 - 492 1352 l 1,21,-1 - 748 1352 l 1,22,-1 - 711 1188 l 1,23,-1 - 842 1188 l 1,24,-1 - 817 1085 l 1,25,-1 - 686 1085 l 1,26,-1 - 643 897 l 1,0,1 -608 745 m 1,27,-1 - 506 303 l 2,28,29 - 492 240 492 240 492 195 c 0,30,31 - 492 128 492 128 526.5 105 c 128,-1,32 - 561 82 561 82 639 82 c 0,33,34 - 714 82 714 82 779 182.5 c 128,-1,35 - 844 283 844 283 877.5 415.5 c 128,-1,36 - 911 548 911 548 911 662 c 0,37,38 - 911 819 911 819 809 819 c 0,39,40 - 695 819 695 819 608 745 c 1,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Oslashacute -Encoding: 510 510 864 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<573 844> 0 43<289 498> 1352 102<823 1118> 1393 41<1190 1403> 1577 403 -VStem: 199 258<294 748> 992 422 1235 256<700 1145> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1379 328 2 -Refer: 166 216 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: oslashacute -Encoding: 511 511 865 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<451 637> 819 102<585 771> 1126 403 -VStem: 147 244<206 505> 711 422 821 242<381 686> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1099 -123 2 -Refer: 167 248 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0228 -Encoding: 552 552 866 -Width: 962 -VWidth: 0 -Flags: W -HStem: -401 49<311 459> -41 41<463 618> 0 102<373 942> 799 102<557 909> 1331 102<655 1217> -VStem: 526 162<-312 -178> -LayerCount: 2 -Fore -SplineSet -311 -352 m 1,0,1 - 526 -352 526 -352 526 -236 c 0,2,3 - 526 -173 526 -173 414 -164 c 1,4,-1 - 479 0 l 1,5,-1 - 82 0 l 1,6,-1 - 414 1434 l 1,7,-1 - 1241 1434 l 1,8,-1 - 1217 1331 l 1,9,-1 - 655 1331 l 1,10,-1 - 557 901 l 1,11,-1 - 934 901 l 1,12,-1 - 909 799 l 1,13,-1 - 532 799 l 1,14,-1 - 373 102 l 1,15,-1 - 967 102 l 1,16,-1 - 942 0 l 1,17,-1 - 618 0 l 1,18,-1 - 578 -113 l 1,19,20 - 628 -124 628 -124 658 -151.5 c 128,-1,21 - 688 -179 688 -179 688 -221 c 0,22,23 - 688 -281 688 -281 629.5 -323.5 c 128,-1,24 - 571 -366 571 -366 486.5 -383.5 c 128,-1,25 - 402 -401 402 -401 301 -401 c 1,26,-1 - 311 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0229 -Encoding: 553 553 867 -Width: 964 -VWidth: 0 -Flags: W -HStem: -401 49<270 418> -41 41<422 578> -20 102<439 705> 451 102<449 789> 819 102<575 781> -VStem: 150 246<143 446> 485 162<-312 -178> 799 233<561 763> -LayerCount: 2 -Fore -SplineSet -270 -352 m 1,0,1 - 485 -352 485 -352 485 -236 c 0,2,3 - 485 -173 485 -173 373 -164 c 1,4,-1 - 433 -13 l 1,5,6 - 301 10 301 10 225.5 98.5 c 128,-1,7 - 150 187 150 187 150 324 c 0,8,9 - 150 443 150 443 199.5 555.5 c 128,-1,10 - 249 668 249 668 327.5 747.5 c 128,-1,11 - 406 827 406 827 504 874.5 c 128,-1,12 - 602 922 602 922 696 922 c 0,13,14 - 780 922 780 922 846 893.5 c 128,-1,15 - 912 865 912 865 952 815.5 c 128,-1,16 - 992 766 992 766 1012 704 c 128,-1,17 - 1032 642 1032 642 1032 571 c 0,18,19 - 1032 516 1032 516 996.5 483.5 c 128,-1,20 - 961 451 961 451 887 451 c 2,21,-1 - 422 451 l 1,22,23 - 395 330 395 330 395 262 c 0,24,25 - 395 172 395 172 436.5 127 c 128,-1,26 - 478 82 478 82 573 82 c 0,27,28 - 647 82 647 82 689 113 c 128,-1,29 - 731 144 731 144 756 205 c 1,30,-1 - 940 158 l 1,31,32 - 779 0 779 0 571 -18 c 1,33,-1 - 537 -113 l 1,34,35 - 587 -124 587 -124 617 -151.5 c 128,-1,36 - 647 -179 647 -179 647 -221 c 0,37,38 - 647 -281 647 -281 588.5 -323.5 c 128,-1,39 - 530 -366 530 -366 445.5 -383.5 c 128,-1,40 - 361 -401 361 -401 260 -401 c 1,41,-1 - 270 -352 l 1,0,1 -449 553 m 1,42,-1 - 700 553 l 2,43,44 - 762 553 762 553 780.5 580.5 c 128,-1,45 - 799 608 799 608 799 694 c 0,46,47 - 799 755 799 755 777 787 c 128,-1,48 - 755 819 755 819 702 819 c 0,49,50 - 609 819 609 819 549 751.5 c 128,-1,51 - 489 684 489 684 449 553 c 1,42,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0243 -Encoding: 579 579 868 -Width: 1130 -VWidth: 0 -Flags: W -HStem: 0 102<479 709> 381 102<193 276 565 655> 727 102<647 803> 1331 102<762 913> -VStem: 887 268<291 656> 958 270<993 1290> -LayerCount: 2 -Fore -SplineSet -762 1331 m 1,0,-1 - 647 829 l 1,1,2 - 720 830 720 830 781.5 861.5 c 128,-1,3 - 843 893 843 893 880 942 c 128,-1,4 - 917 991 917 991 937.5 1047.5 c 128,-1,5 - 958 1104 958 1104 958 1159 c 0,6,7 - 958 1232 958 1232 923 1281.5 c 128,-1,8 - 888 1331 888 1331 803 1331 c 2,9,-1 - 762 1331 l 1,0,-1 -979 795 m 1,10,11 - 1069 754 1069 754 1112 675.5 c 128,-1,12 - 1155 597 1155 597 1155 498 c 0,13,14 - 1155 277 1155 277 1006.5 138.5 c 128,-1,15 - 858 0 858 0 598 0 c 2,16,-1 - 188 0 l 1,17,-1 - 276 381 l 1,18,-1 - 170 381 l 1,19,-1 - 193 483 l 1,20,-1 - 299 483 l 1,21,-1 - 520 1434 l 1,22,-1 - 889 1434 l 2,23,24 - 1229 1434 1229 1434 1229 1188 c 0,25,26 - 1229 1058 1229 1058 1172 962.5 c 128,-1,27 - 1115 867 1115 867 979 795 c 1,10,11 -543 381 m 1,28,-1 - 479 102 l 1,29,-1 - 561 102 l 2,30,31 - 659 102 659 102 734.5 157 c 128,-1,32 - 810 212 810 212 848.5 299 c 128,-1,33 - 887 386 887 386 887 489 c 0,34,35 - 887 536 887 536 877 577 c 128,-1,36 - 867 618 867 618 846.5 652.5 c 128,-1,37 - 826 687 826 687 790 707 c 128,-1,38 - 754 727 754 727 705 727 c 2,39,-1 - 623 727 l 1,40,-1 - 565 483 l 1,41,-1 - 678 483 l 1,42,-1 - 655 381 l 1,43,-1 - 543 381 l 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024A -Encoding: 586 586 869 -Width: 1474 -VWidth: 0 -Flags: W -HStem: -410 102<1288 1451> -20 102<703 1064> 1352 102<957 1329> 1393 41G<1391 1661> -VStem: 244 264<290 799> 1026 258<-306 -7> -LayerCount: 2 -Fore -SplineSet -1315 -61 m 2,0,1 - 1284 -199 1284 -199 1284 -242 c 0,2,3 - 1284 -276 1284 -276 1296 -291.5 c 128,-1,4 - 1308 -307 1308 -307 1337 -307 c 0,5,6 - 1409 -307 1409 -307 1458 -256 c 1,7,-1 - 1573 -317 l 1,8,9 - 1524 -362 1524 -362 1460 -386 c 128,-1,10 - 1396 -410 1396 -410 1335 -410 c 0,11,12 - 1284 -410 1284 -410 1232 -397.5 c 128,-1,13 - 1180 -385 1180 -385 1132.5 -359.5 c 128,-1,14 - 1085 -334 1085 -334 1055.5 -289 c 128,-1,15 - 1026 -244 1026 -244 1026 -186 c 0,16,17 - 1026 -159 1026 -159 1032 -129 c 1,18,-1 - 1067 16 l 1,19,20 - 948 -20 948 -20 829 -20 c 0,21,22 - 712 -20 712 -20 609 12.5 c 128,-1,23 - 506 45 506 45 423.5 108 c 128,-1,24 - 341 171 341 171 292.5 275.5 c 128,-1,25 - 244 380 244 380 244 514 c 0,26,27 - 244 643 244 643 275 761.5 c 128,-1,28 - 306 880 306 880 359 972.5 c 128,-1,29 - 412 1065 412 1065 483 1144.5 c 128,-1,30 - 554 1224 554 1224 635 1280 c 128,-1,31 - 716 1336 716 1336 802 1376 c 128,-1,32 - 888 1416 888 1416 971 1435 c 128,-1,33 - 1054 1454 1054 1454 1130 1454 c 0,34,35 - 1284 1454 1284 1454 1391 1419 c 1,36,-1 - 1395 1434 l 1,37,-1 - 1661 1434 l 1,38,-1 - 1315 -61 l 2,0,1 -1092 123 m 1,39,-1 - 1360 1288 l 1,40,41 - 1270 1352 1270 1352 1137 1352 c 0,42,43 - 1050 1352 1050 1352 960.5 1313.5 c 128,-1,44 - 871 1275 871 1275 790.5 1199.5 c 128,-1,45 - 710 1124 710 1124 646.5 1023 c 128,-1,46 - 583 922 583 922 545.5 786.5 c 128,-1,47 - 508 651 508 651 508 502 c 0,48,49 - 508 395 508 395 539 312.5 c 128,-1,50 - 570 230 570 230 623 181 c 128,-1,51 - 676 132 676 132 742 107 c 128,-1,52 - 808 82 808 82 883 82 c 0,53,54 - 996 82 996 82 1092 123 c 1,39,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024B -Encoding: 587 587 870 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -412 102<902 1065> -20 102<448 651> 819 102<601 829> -VStem: 174 248<115 528> 651 248<-308 -5> 844 242<486 802> -LayerCount: 2 -Fore -SplineSet -930 -63 m 2,0,1 - 899 -201 899 -201 899 -244 c 0,2,3 - 899 -278 899 -278 911 -293.5 c 128,-1,4 - 923 -309 923 -309 952 -309 c 0,5,6 - 1024 -309 1024 -309 1073 -258 c 1,7,-1 - 1188 -319 l 1,8,9 - 1088 -412 1088 -412 961 -412 c 0,10,11 - 910 -412 910 -412 858 -399.5 c 128,-1,12 - 806 -387 806 -387 758.5 -361.5 c 128,-1,13 - 711 -336 711 -336 681 -291 c 128,-1,14 - 651 -246 651 -246 651 -188 c 0,15,16 - 651 -161 651 -161 657 -131 c 2,17,-1 - 688 4 l 1,18,19 - 612 -20 612 -20 530 -20 c 0,20,21 - 346 -20 346 -20 260 64.5 c 128,-1,22 - 174 149 174 149 174 295 c 0,23,24 - 174 469 174 469 241.5 610.5 c 128,-1,25 - 309 752 309 752 441 837 c 128,-1,26 - 573 922 573 922 748 922 c 0,27,28 - 805 922 805 922 850 916.5 c 128,-1,29 - 895 911 895 911 940.5 895 c 128,-1,30 - 986 879 986 879 1016.5 852 c 128,-1,31 - 1047 825 1047 825 1066 778.5 c 128,-1,32 - 1085 732 1085 732 1085 670 c 128,-1,33 - 1085 608 1085 608 1067 532 c 2,34,-1 - 930 -63 l 2,0,1 -786 430 m 2,35,-1 - 825 598 l 2,36,37 - 844 676 844 676 844 715 c 0,38,39 - 844 776 844 776 809 797.5 c 128,-1,40 - 774 819 774 819 692 819 c 0,41,42 - 631 819 631 819 578 760 c 128,-1,43 - 525 701 525 701 492 611.5 c 128,-1,44 - 459 522 459 522 440.5 423.5 c 128,-1,45 - 422 325 422 325 422 240 c 0,46,47 - 422 82 422 82 522 82 c 0,48,49 - 571 82 571 82 610.5 101 c 128,-1,50 - 650 120 650 120 676 149 c 128,-1,51 - 702 178 702 178 723.5 227.5 c 128,-1,52 - 745 277 745 277 758 321 c 128,-1,53 - 771 365 771 365 786 430 c 2,35,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024C -Encoding: 588 588 871 -Width: 1210 -VWidth: 0 -Flags: W -HStem: 0 43<164 440 819 1083> 655 102<186 647 604 679> 1331 102<737 953> -VStem: 162 510 829 262<0 382> 1012 266<951 1271> -LayerCount: 2 -Fore -SplineSet -696 758 m 2,0,1 - 786 758 786 758 860.5 816 c 128,-1,2 - 935 874 935 874 973.5 958 c 128,-1,3 - 1012 1042 1012 1042 1012 1128 c 128,-1,4 - 1012 1214 1012 1214 968 1272.5 c 128,-1,5 - 924 1331 924 1331 829 1331 c 2,6,-1 - 737 1331 l 1,7,-1 - 604 758 l 1,8,-1 - 696 758 l 2,0,1 -1278 1128 m 0,9,10 - 1278 1042 1278 1042 1238 955.5 c 128,-1,11 - 1198 869 1198 869 1115.5 794.5 c 128,-1,12 - 1033 720 1033 720 924 684 c 1,13,14 - 990 606 990 606 1041 434.5 c 128,-1,15 - 1092 263 1092 263 1092 115 c 0,16,17 - 1092 57 1092 57 1079 0 c 1,18,-1 - 819 0 l 1,19,20 - 829 41 829 41 829 106 c 0,21,22 - 829 254 829 254 773.5 419 c 128,-1,23 - 718 584 718 584 641 655 c 1,24,-1 - 582 655 l 1,25,-1 - 430 0 l 1,26,-1 - 164 0 l 1,27,-1 - 316 655 l 1,28,-1 - 162 655 l 1,29,-1 - 186 758 l 1,30,-1 - 339 758 l 1,31,-1 - 496 1434 l 1,32,-1 - 915 1434 l 2,33,34 - 1013 1434 1013 1434 1086 1407.5 c 128,-1,35 - 1159 1381 1159 1381 1199.5 1335.5 c 128,-1,36 - 1240 1290 1240 1290 1259 1238 c 128,-1,37 - 1278 1186 1278 1186 1278 1128 c 0,9,10 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024D -Encoding: 589 589 872 -Width: 927 -VWidth: 0 -Flags: W -HStem: 0 43G<186 473> 389 102<184 283 586 684> 819 102<231 428 702 1016> -VStem: 150 76<770 809> -LayerCount: 2 -Fore -SplineSet -1036 741 m 1,0,1 - 1010 819 1010 819 866 819 c 0,2,3 - 799 819 799 819 746.5 797 c 128,-1,4 - 694 775 694 775 641 731 c 1,5,-1 - 635 688 l 1,6,-1 - 586 492 l 1,7,-1 - 709 492 l 1,8,-1 - 684 389 l 1,9,-1 - 559 389 l 1,10,-1 - 463 0 l 1,11,-1 - 186 0 l 1,12,-1 - 283 389 l 1,13,-1 - 160 389 l 1,14,-1 - 184 492 l 1,15,-1 - 309 492 l 1,16,-1 - 342 625 l 1,17,18 - 360 692 360 692 360 745 c 0,19,20 - 360 819 360 819 305 819 c 128,-1,21 - 250 819 250 819 225 770 c 1,22,-1 - 150 770 l 1,23,24 - 164 828 164 828 228 875 c 128,-1,25 - 292 922 292 922 362 922 c 0,26,27 - 548 922 548 922 610 840 c 1,28,29 - 688 883 688 883 745.5 902.5 c 128,-1,30 - 803 922 803 922 877 922 c 0,31,32 - 991 922 991 922 1073 893 c 1,33,-1 - 1036 741 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0266 -Encoding: 614 614 873 -Width: 1079 -VWidth: 0 -Flags: W -HStem: 0 43G<147 413 692 958> 819 102<613 819> 1270 102<707 921> -VStem: 836 246<427 804> -LayerCount: 2 -Fore -SplineSet -399 1092 m 2,0,1 - 416 1164 416 1164 465.5 1220.5 c 128,-1,2 - 515 1277 515 1277 579.5 1308.5 c 128,-1,3 - 644 1340 644 1340 708.5 1356 c 128,-1,4 - 773 1372 773 1372 831 1372 c 0,5,6 - 959 1372 959 1372 1016 1280 c 1,7,-1 - 872 1219 l 1,8,9 - 850 1270 850 1270 776 1270 c 0,10,11 - 724 1270 724 1270 697.5 1217 c 128,-1,12 - 671 1164 671 1164 639 1024 c 2,13,-1 - 612 907 l 1,14,15 - 685 922 685 922 733 922 c 0,16,17 - 1081 922 1081 922 1081 641 c 0,18,19 - 1081 584 1081 584 1061 492 c 1,20,-1 - 948 0 l 1,21,-1 - 692 0 l 1,22,-1 - 801 467 l 2,23,24 - 836 613 836 613 836 700 c 0,25,26 - 836 766 836 766 812 792.5 c 128,-1,27 - 788 819 788 819 739 819 c 0,28,29 - 662 819 662 819 584 784 c 1,30,-1 - 403 0 l 1,31,-1 - 147 0 l 1,32,-1 - 399 1092 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni027E -Encoding: 638 638 874 -Width: 888 -VWidth: 0 -Flags: W -HStem: 0 43G<139 405> 819 102<627 821> -LayerCount: 2 -Fore -SplineSet -500 451 m 1,0,-1 - 395 0 l 1,1,-1 - 139 0 l 1,2,-1 - 236 414 l 2,3,4 - 261 524 261 524 282 594.5 c 128,-1,5 - 303 665 303 665 333.5 727 c 128,-1,6 - 364 789 364 789 398.5 822.5 c 128,-1,7 - 433 856 433 856 486 880.5 c 128,-1,8 - 539 905 539 905 604 913.5 c 128,-1,9 - 669 922 669 922 762 922 c 0,10,11 - 789 922 789 922 815.5 917.5 c 128,-1,12 - 842 913 842 913 857.5 910 c 128,-1,13 - 873 907 873 907 901.5 893 c 128,-1,14 - 930 879 930 879 936 876 c 128,-1,15 - 942 873 942 873 976.5 852 c 128,-1,16 - 1011 831 1011 831 1014 829 c 1,17,-1 - 885 723 l 1,18,19 - 876 730 876 730 854 748.5 c 128,-1,20 - 832 767 832 767 826.5 771.5 c 128,-1,21 - 821 776 821 776 805 788 c 128,-1,22 - 789 800 789 800 781.5 802.5 c 128,-1,23 - 774 805 774 805 760.5 810.5 c 128,-1,24 - 747 816 747 816 734.5 817.5 c 128,-1,25 - 722 819 722 819 707 819 c 0,26,27 - 583 819 583 819 500 451 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0295 -Encoding: 661 661 875 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 43G<637 902> 557 98<657 766> 1270 102<753 1104> -VStem: 305 254<743 1068> -LayerCount: 2 -Fore -SplineSet -637 0 m 1,0,-1 - 766 557 l 1,1,2 - 687 557 687 557 607 579 c 128,-1,3 - 527 601 527 601 459 641 c 128,-1,4 - 391 681 391 681 348 745.5 c 128,-1,5 - 305 810 305 810 305 887 c 0,6,7 - 305 984 305 984 345.5 1066 c 128,-1,8 - 386 1148 386 1148 451 1203.5 c 128,-1,9 - 516 1259 516 1259 599.5 1298 c 128,-1,10 - 683 1337 683 1337 768 1354.5 c 128,-1,11 - 853 1372 853 1372 934 1372 c 0,12,13 - 1061 1372 1061 1372 1176 1321.5 c 128,-1,14 - 1291 1271 1291 1271 1333 1194 c 1,15,-1 - 1192 1102 l 1,16,17 - 1179 1136 1179 1136 1163 1161.5 c 128,-1,18 - 1147 1187 1147 1187 1119 1214 c 128,-1,19 - 1091 1241 1091 1241 1045.5 1255.5 c 128,-1,20 - 1000 1270 1000 1270 940 1270 c 0,21,22 - 863 1270 863 1270 795.5 1245.5 c 128,-1,23 - 728 1221 728 1221 674.5 1173 c 128,-1,24 - 621 1125 621 1125 590 1048 c 128,-1,25 - 559 971 559 971 559 874 c 0,26,27 - 559 815 559 815 583 771 c 128,-1,28 - 607 727 607 727 647.5 702.5 c 128,-1,29 - 688 678 688 678 734.5 666.5 c 128,-1,30 - 781 655 781 655 834 655 c 2,31,-1 - 1044 655 l 1,32,-1 - 893 0 l 1,33,-1 - 637 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57929 -Encoding: 700 700 876 -Width: 397 -VWidth: 0 -Flags: W -HStem: 985 367<408 447> -VStem: 410 188<1279 1352> -LayerCount: 2 -Fore -Refer: 331 8217 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni02C0 -Encoding: 704 704 877 -Width: 638 -VWidth: 0 -Flags: W -HStem: 901 199<446 545> 1030 70<573 626> 1386 68<528 694> -VStem: 709 139<1165 1377> -LayerCount: 2 -Fore -SplineSet -848 1284 m 0,0,1 - 848 1209 848 1209 800 1148.5 c 128,-1,2 - 752 1088 752 1088 690 1059 c 128,-1,3 - 628 1030 628 1030 573 1030 c 1,4,-1 - 545 901 l 1,5,-1 - 401 901 l 1,6,-1 - 446 1100 l 1,7,-1 - 508 1100 l 2,8,9 - 590 1100 590 1100 649.5 1149 c 128,-1,10 - 709 1198 709 1198 709 1298 c 0,11,12 - 709 1386 709 1386 614 1386 c 0,13,14 - 572 1386 572 1386 531 1355.5 c 128,-1,15 - 490 1325 490 1325 473 1290 c 1,16,-1 - 379 1337 l 1,17,18 - 410 1379 410 1379 494 1416.5 c 128,-1,19 - 578 1454 578 1454 641 1454 c 0,20,21 - 723 1454 723 1454 785.5 1409 c 128,-1,22 - 848 1364 848 1364 848 1284 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni02CA -Encoding: 714 714 878 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: 383 422 -LayerCount: 2 -Fore -Refer: 371 180 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni02CB -Encoding: 715 715 879 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1249 403 -VStem: 397 319 -LayerCount: 2 -Fore -Refer: 367 96 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni030D -Encoding: 781 781 880 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1257 328<-264 -258> -VStem: -340 158 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --340 1257 m 5,0,-1 - -264 1585 l 1,1,-1 - -182 1585 l 1,2,-1 - -258 1257 l 1,3,-1 - -340 1257 l 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0329 -Encoding: 809 809 881 -Width: 0 -VWidth: 0 -Flags: W -HStem: -410 328<-649 -643> -VStem: -725 158 -AnchorPoint: "bottom" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --725 -410 m 1,0,-1 - -649 -82 l 1,1,-1 - -567 -82 l 1,2,-1 - -643 -410 l 1,3,-1 - -725 -410 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC4 -Encoding: 7620 7620 882 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 82<-522 -94> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet -98 1548 m 1,0,-1 - 186 1456 l 1,1,-1 - -70 1270 l 1,2,-1 - -541 1270 l 1,3,-1 - -522 1352 l 1,4,-1 - -94 1352 l 1,5,-1 - 98 1548 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC5 -Encoding: 7621 7621 883 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 82<-479 -70> -VStem: -711 659 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --541 1270 m 1,0,-1 - -711 1456 l 1,1,-1 - -578 1548 l 1,2,-1 - -479 1352 l 1,3,-1 - -51 1352 l 1,4,-1 - -70 1270 l 1,5,-1 - -541 1270 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC6 -Encoding: 7622 7622 884 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1331 82<-508 -98> -VStem: -526 659 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --98 1331 m 1,0,-1 - -526 1331 l 1,1,-1 - -508 1413 l 1,2,-1 - -37 1413 l 1,3,-1 - 133 1227 l 1,4,-1 - 2 1135 l 1,5,-1 - -98 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC7 -Encoding: 7623 7623 885 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1331 82<-483 -55> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --674 1135 m 1,0,-1 - -764 1227 l 1,1,-1 - -508 1413 l 1,2,-1 - -37 1413 l 1,3,-1 - -55 1331 l 1,4,-1 - -483 1331 l 1,5,-1 - -674 1135 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E04 -Encoding: 7684 7684 886 -Width: 1052 -VWidth: 0 -Flags: W -HStem: -272 170<305 436> 0 102<373 608> 727 102<541 682> 1331 102<655 806> -VStem: 266 209 780 268<296 657> 852 270<1002 1290> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1006 0 2 -Refer: 28 66 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E05 -Encoding: 7685 7685 887 -Width: 1069 -VWidth: 0 -Flags: W -HStem: -272 170<430 561> -20 102<467 694> 819 102<648 849> 1270 102<289 504> -VStem: 211 242<100 425> 213 70<1221 1259> 391 209 410 260<983 1268> 877 244<389 787> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1130 0 2 -Refer: 6 98 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0C -Encoding: 7692 7692 888 -Width: 1216 -VWidth: 0 -Flags: W -HStem: -272 170<367 498> 0 102<383 690> 1331 102<666 966> -VStem: 328 209 1065 264<718 1227> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1067 0 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0D -Encoding: 7693 7693 889 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -272 170<371 502> -20 102<421 631 956 1082> 819 102<584 774> -VStem: 152 238<130 500> 332 209 1090 70<96 131> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1071 0 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0E -Encoding: 7694 7694 890 -Width: 1216 -VWidth: 0 -Flags: W -HStem: -205 82<203 655> 0 102<383 690> 1331 102<666 966> -VStem: 184 489 1065 264<718 1227> -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 1065 0 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0F -Encoding: 7695 7695 891 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -205 82<207 659> -20 102<421 631 956 1082> 819 102<584 774> -VStem: 152 238<130 500> 188 489 1090 70<96 131> -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 1069 0 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E12 -Encoding: 7698 7698 892 -Width: 1216 -VWidth: 0 -Flags: W -HStem: -449 387 0 102<383 690> 1331 102<666 966> -VStem: 145 479 1065 264<718 1227> -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 1063 0 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E13 -Encoding: 7699 7699 893 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -449 387 -20 102<421 631 956 1082> 819 102<584 774> -VStem: 150 479 152 238<130 500> 1090 70<96 131> -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 1067 0 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E24 -Encoding: 7716 7716 894 -Width: 1189 -VWidth: 0 -Flags: W -HStem: -272 170<477 608> 0 43<82 358 823 1099> 717 102<537 989> 1393 41<404 680 1146 1421> -VStem: 438 209 -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1178 0 2 -Refer: 35 72 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E25 -Encoding: 7717 7717 895 -Width: 1034 -VWidth: 0 -Flags: W -HStem: -272 170<442 573> 0 43<143 409 688 954> 819 102<610 813> 1270 102<289 504> -VStem: 213 70<1221 1259> 403 209 410 260<985 1268> 829 248<415 804> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1143 0 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2E -Encoding: 7726 7726 896 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1516 170<385 516 672 803> 1726 301 -VStem: 92 598 346 209 559 375 633 209 -LayerCount: 2 -Fore -Refer: 929 58624 N 1 0 0 1 57 246 2 -Refer: 151 207 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2F -Encoding: 7727 7727 897 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1085 170<283 414 569 700> 1378 403 -VStem: 133 254<83 364> 244 209 489 422 520 70<96 131> 530 209 -LayerCount: 2 -Fore -Refer: 878 714 N 1 0 0 1 106 129 2 -Refer: 135 239 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E36 -Encoding: 7734 7734 898 -Width: 1052 -VWidth: 0 -Flags: W -HStem: -272 170<424 555> 0 102<373 942> 1393 41<404 680> -VStem: 385 209 -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1124 0 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E37 -Encoding: 7735 7735 899 -Width: 575 -VWidth: 0 -Flags: W -HStem: -276 170<143 274> -20 102<301 515> -VStem: 104 209 135 258<84 375> 522 70<93 131> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 844 -4 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3C -Encoding: 7740 7740 900 -Width: 1052 -VWidth: 0 -Flags: W -HStem: -449 387 0 102<373 942> 1393 41<404 680> -VStem: 203 479 -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 1120 0 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3D -Encoding: 7741 7741 901 -Width: 575 -VWidth: 0 -Flags: W -HStem: -453 387 -20 102<301 515> -VStem: -33 479 135 258<84 375> 522 70<93 131> -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 885 -4 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3E -Encoding: 7742 7742 902 -Width: 1480 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 1108 1384> 1393 41<414 700 1411 1706> 1577 403 -VStem: 1047 422 -LayerCount: 2 -Fore -Refer: 878 714 N 1 0 0 1 664 328 2 -Refer: 40 77 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3F -Encoding: 7743 7743 903 -Width: 1667 -VWidth: 0 -Flags: W -HStem: 0 43<184 450 760 1025 1317 1582> 819 102<226 396 603 881 1198 1436> 1044 403 -VStem: 150 70<770 809> 346 260<527 795> 805 422 1460 252<431 796> -LayerCount: 2 -Fore -Refer: 878 714 N 1 0 0 1 422 -205 2 -Refer: 11 109 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E44 -Encoding: 7748 7748 904 -Width: 1261 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 878 1165> 1393 41<414 703 1211 1487> 1577 170<943 1074> -VStem: 904 209 -LayerCount: 2 -Fore -Refer: 377 729 N 1 0 0 1 560 307 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E45 -Encoding: 7749 7749 905 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<184 450 729 994> 819 102<226 400 616 855> 1044 170<674 805> -VStem: 150 70<770 809> 346 260<527 780> 635 209 872 246<427 804> -LayerCount: 2 -Fore -Refer: 377 729 N 1 0 0 1 291 -225 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E46 -Encoding: 7750 7750 906 -Width: 1261 -VWidth: 0 -Flags: W -HStem: -272 170<518 649> 0 43<92 368 878 1165> 1393 41<414 703 1211 1487> -VStem: 479 209 -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1219 0 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E47 -Encoding: 7751 7751 907 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -272 170<469 600> 0 43<184 450 729 994> 819 102<226 400 616 855> -VStem: 150 70<770 809> 346 260<527 780> 430 209 872 246<427 804> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1169 0 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E4A -Encoding: 7754 7754 908 -Width: 1261 -VWidth: 0 -Flags: W -HStem: -449 387 0 43<92 368 878 1165> 1393 41<414 703 1211 1487> -VStem: 297 479 -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 1214 0 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E4B -Encoding: 7755 7755 909 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -449 387 0 43<184 450 729 994> 819 102<226 400 616 855> -VStem: 150 70<770 809> 248 479 346 260<527 780> 872 246<427 804> -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 1165 0 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E4C -Encoding: 7756 7756 910 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -18 102<597 893> 1145 102<822 1130> 1296 141<1044 1221> 1362 141<846 1023> 1501 301 -VStem: 223 260<236 697> 727 612 1018 375 1243 258<555 996> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1294 27 2 -Refer: 928 57441 N 1 0 0 1 0 0 2 -Refer: 929 58624 N 1 0 0 1 516 20 2 -Validated: 1 -EndChar - -StartChar: uni1E4D -Encoding: 7757 7757 911 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1085 141<800 978> 1151 141<602 779> 1415 403 -VStem: 147 244<117 508> 483 612 821 244<380 773> 891 422 -LayerCount: 2 -Fore -Refer: 878 714 N 1 0 0 1 508 166 2 -Refer: 131 245 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E50 -Encoding: 7760 7760 912 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -18 102<597 893> 1145 102<822 1130> 1352 115<780 1225> 1501 301 -VStem: 223 260<236 697> 754 498 778 305 1243 258<555 996> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1294 82 2 -Refer: 928 57441 N 1 0 0 1 0 0 2 -Refer: 930 58625 N 1 0 0 1 242 20 2 -Validated: 1 -EndChar - -StartChar: uni1E51 -Encoding: 7761 7761 913 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1085 115<537 981> 1323 403 -VStem: 147 244<117 508> 510 498 557 319 821 244<380 773> -LayerCount: 2 -Fore -Refer: 879 715 N 1 0 0 1 160 74 2 -Refer: 263 333 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E52 -Encoding: 7762 7762 914 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -18 102<597 893> 1145 102<822 1130> 1352 115<780 1225> 1501 301 -VStem: 223 260<236 697> 754 498 1018 375 1243 258<555 996> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1294 82 2 -Refer: 928 57441 N 1 0 0 1 0 0 2 -Refer: 929 58624 N 1 0 0 1 516 20 2 -Validated: 1 -EndChar - -StartChar: uni1E53 -Encoding: 7763 7763 915 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1085 115<537 981> 1323 403 -VStem: 147 244<117 508> 510 498 750 422 821 244<380 773> -LayerCount: 2 -Fore -Refer: 878 714 N 1 0 0 1 367 74 2 -Refer: 263 333 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6C -Encoding: 7788 7788 916 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -272 170<510 641> 0 43<487 763> 1331 102<352 795 1061 1526> -VStem: 471 209 -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1210 0 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6D -Encoding: 7789 7789 917 -Width: 669 -VWidth: 0 -Flags: W -HStem: -272 170<238 369> -20 102<395 610> 799 102<291 371 651 788> -VStem: 199 209 229 258<84 376> 616 70<93 131> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 938 0 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6E -Encoding: 7790 7790 918 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -205 82<346 799> 0 43<487 763> 1331 102<352 795 1061 1526> -VStem: 328 489 -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 1208 0 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6F -Encoding: 7791 7791 919 -Width: 669 -VWidth: 0 -Flags: W -HStem: -205 82<74 526> -20 102<395 610> 799 102<291 371 651 788> -VStem: 55 489 229 258<84 376> 616 70<93 131> -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 936 0 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E70 -Encoding: 7792 7792 920 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -449 387 0 43<487 763> 1331 102<352 795 1061 1526> -VStem: 289 479 -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 1206 0 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E71 -Encoding: 7793 7793 921 -Width: 669 -VWidth: 0 -Flags: W -HStem: -449 387 -20 102<395 610> 799 102<291 371 651 788> -VStem: 86 479 229 258<84 376> 616 70<93 131> -LayerCount: 2 -Fore -Refer: 485 813 N 1 0 0 1 1004 0 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E92 -Encoding: 7826 7826 922 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -272 170<426 557> 0 102<367 963> 1331 102<414 958> -VStem: 387 209 -LayerCount: 2 -Fore -Refer: 481 803 S 1 0 0 1 1126 0 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E93 -Encoding: 7827 7827 923 -Width: 827 -VWidth: 0 -Flags: W -HStem: -272 170<346 477> 0 102<376 823> 799 102<282 705> -LayerCount: 2 -Fore -SplineSet -346 -102 m 1,0,-1 - 516 -102 l 1,1,-1 - 477 -272 l 1,2,-1 - 307 -272 l 1,3,-1 - 346 -102 l 1,0,-1 -705 799 m 5,4,-1 - 227 799 l 1,5,-1 - 282 901 l 1,6,-1 - 1025 901 l 1,7,-1 - 376 102 l 1,8,-1 - 847 102 l 1,9,-1 - 823 0 l 1,10,-1 - 53 0 l 1,11,-1 - 705 799 l 5,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C72 -Encoding: 11378 11378 924 -Width: 2050 -VWidth: 0 -Flags: W -HStem: 0 43G<496 703 1096 1303> 860 41G<974 1204> 1346 113<2034 2211> 1393 41G<367 614> -VStem: 2228 147<1210 1330> -LayerCount: 2 -Fore -SplineSet -1280 0 m 1,0,-1 - 1100 0 l 1,1,-1 - 1040 647 l 1,2,-1 - 680 0 l 1,3,-1 - 500 0 l 1,4,-1 - 367 1434 l 1,5,-1 - 610 1434 l 1,6,-1 - 707 381 l 1,7,-1 - 997 901 l 1,8,-1 - 1200 901 l 1,9,-1 - 1247 381 l 1,10,-1 - 1692 1184 l 2,11,12 - 1776 1335 1776 1335 1893.5 1396.5 c 128,-1,13 - 2011 1458 2011 1458 2167 1458 c 0,14,15 - 2266 1458 2266 1458 2321 1402 c 128,-1,16 - 2376 1346 2376 1346 2376 1264 c 0,17,18 - 2376 1237 2376 1237 2370 1210 c 1,19,-1 - 2224 1198 l 1,20,21 - 2228 1212 2228 1212 2228 1237 c 0,22,23 - 2228 1285 2228 1285 2202 1315.5 c 128,-1,24 - 2176 1346 2176 1346 2134 1346 c 0,25,26 - 2077 1346 2077 1346 2021 1293 c 128,-1,27 - 1965 1240 1965 1240 1919 1155 c 2,28,-1 - 1280 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C73 -Encoding: 11379 11379 925 -Width: 1742 -VWidth: 0 -Flags: W -HStem: 0 43G<351 545 949 1143> 819 102<1598 1752> 860 41G<238 464 869 1062> -LayerCount: 2 -Fore -SplineSet -1118 0 m 1,0,-1 - 954 0 l 1,1,-1 - 874 596 l 1,2,-1 - 520 0 l 1,3,-1 - 356 0 l 1,4,-1 - 238 901 l 1,5,-1 - 459 901 l 1,6,-1 - 537 303 l 1,7,-1 - 893 901 l 1,8,-1 - 1057 901 l 1,9,-1 - 1135 305 l 1,10,-1 - 1325 623 l 2,11,12 - 1413 771 1413 771 1506 846.5 c 128,-1,13 - 1599 922 1599 922 1712 922 c 0,14,15 - 1783 922 1783 922 1848 879.5 c 128,-1,16 - 1913 837 1913 837 1927 754 c 1,17,-1 - 1724 725 l 1,18,19 - 1720 773 1720 773 1699.5 796 c 128,-1,20 - 1679 819 1679 819 1657 819 c 0,21,22 - 1608 819 1608 819 1487 618 c 2,23,-1 - 1118 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: a.sc -Encoding: 57344 57344 926 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43G<39 315 946 1204> 332 102<553 891> -LayerCount: 2 -Fore -SplineSet -490 332 m 1,0,-1 - 291 0 l 1,1,-1 - 39 0 l 1,2,-1 - 769 1229 l 1,3,-1 - 1041 1229 l 1,4,-1 - 1204 0 l 1,5,-1 - 952 0 l 1,6,-1 - 904 332 l 1,7,-1 - 490 332 l 1,0,-1 -553 434 m 1,8,-1 - 891 434 l 1,9,-1 - 825 885 l 1,10,-1 - 553 434 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: e.sc -Encoding: 57371 57371 927 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<464 1034> 664 102<617 970> 1126 102<700 1262> -LayerCount: 2 -Fore -SplineSet -1034 0 m 1,0,-1 - 174 0 l 1,1,-1 - 458 1229 l 1,2,-1 - 1285 1229 l 1,3,-1 - 1262 1126 l 1,4,-1 - 700 1126 l 1,5,-1 - 617 766 l 1,6,-1 - 994 766 l 1,7,-1 - 970 664 l 1,8,-1 - 594 664 l 1,9,-1 - 464 102 l 1,10,-1 - 1058 102 l 1,11,-1 - 1034 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: o.sc -Encoding: 57441 57441 928 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -18 102<597 893> 1145 102<822 1130> -VStem: 223 260<236 697> 1243 258<555 996> -LayerCount: 2 -Fore -SplineSet -700 -18 m 0,0,1 - 610 -18 610 -18 527 10 c 128,-1,2 - 444 38 444 38 375 92.5 c 128,-1,3 - 306 147 306 147 264.5 237.5 c 128,-1,4 - 223 328 223 328 223 442 c 0,5,6 - 223 594 223 594 272.5 727.5 c 128,-1,7 - 322 861 322 861 401.5 954 c 128,-1,8 - 481 1047 481 1047 581 1115 c 128,-1,9 - 681 1183 681 1183 782 1215 c 128,-1,10 - 883 1247 883 1247 975 1247 c 0,11,12 - 1085 1247 1085 1247 1178.5 1219 c 128,-1,13 - 1272 1191 1272 1191 1345 1136 c 128,-1,14 - 1418 1081 1418 1081 1459.5 992 c 128,-1,15 - 1501 903 1501 903 1501 788 c 0,16,17 - 1501 632 1501 632 1452.5 498 c 128,-1,18 - 1404 364 1404 364 1324 271 c 128,-1,19 - 1244 178 1244 178 1139.5 111.5 c 128,-1,20 - 1035 45 1035 45 923.5 13.5 c 128,-1,21 - 812 -18 812 -18 700 -18 c 0,0,1 -963 1145 m 0,22,23 - 882 1145 882 1145 797 1088.5 c 128,-1,24 - 712 1032 712 1032 642.5 936.5 c 128,-1,25 - 573 841 573 841 528 700.5 c 128,-1,26 - 483 560 483 560 483 406 c 0,27,28 - 483 243 483 243 555 163.5 c 128,-1,29 - 627 84 627 84 735 84 c 0,30,31 - 825 84 825 84 916 141.5 c 128,-1,32 - 1007 199 1007 199 1079.5 297 c 128,-1,33 - 1152 395 1152 395 1197.5 538 c 128,-1,34 - 1243 681 1243 681 1243 838 c 0,35,36 - 1243 996 1243 996 1169 1070.5 c 128,-1,37 - 1095 1145 1095 1145 963 1145 c 0,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: stackingacute -Encoding: 58624 58624 929 -Width: 634 -VWidth: 0 -Flags: W -HStem: 1481 301 -VStem: 502 375 -LayerCount: 2 -Fore -SplineSet -735 1782 m 25,0,-1 - 877 1683 l 1,1,-1 - 553 1481 l 1,2,-1 - 502 1534 l 1,3,-1 - 735 1782 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: stackinggrave -Encoding: 58625 58625 930 -Width: 634 -VWidth: 0 -Flags: W -HStem: 1481 301 -VStem: 537 305 -LayerCount: 2 -Fore -SplineSet -723 1782 m 25,0,-1 - 842 1534 l 1,1,-1 - 766 1481 l 1,2,-1 - 537 1683 l 1,3,-1 - 723 1782 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni25CC -Encoding: 9676 9676 931 -Width: 1081 -VWidth: 0 -Flags: W -HStem: 0 94<516 588> 119 94<258 330 827 899> 403 94<205 276 1012 1083> 688 94<389 463 958 1032> 807 94<702 774> -AnchorPoint: "top" 776 1004 basechar 0 -AnchorPoint: "ogonek" 547 0 basechar 0 -AnchorPoint: "bottom" 526 0 basechar 0 -AnchorPoint: "horn" 1038 635 basechar 0 -AnchorPoint: "cedilla" 516 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1032 688 m 1,0,-1 - 938 688 l 1,1,-1 - 958 782 l 1,2,-1 - 1053 782 l 1,3,-1 - 1032 688 l 1,0,-1 -330 119 m 1,4,-1 - 236 119 l 1,5,-1 - 258 213 l 1,6,-1 - 352 213 l 1,7,-1 - 330 119 l 1,4,-1 -805 119 m 1,8,-1 - 827 213 l 1,9,-1 - 922 213 l 1,10,-1 - 899 119 l 1,11,-1 - 805 119 l 1,8,-1 -369 688 m 1,12,-1 - 389 782 l 1,13,-1 - 483 782 l 1,14,-1 - 463 688 l 1,15,-1 - 369 688 l 1,12,-1 -989 403 m 1,16,-1 - 1012 498 l 1,17,-1 - 1106 498 l 1,18,-1 - 1083 403 l 1,19,-1 - 989 403 l 1,16,-1 -182 403 m 1,20,-1 - 205 498 l 1,21,-1 - 299 498 l 1,22,-1 - 276 403 l 1,23,-1 - 182 403 l 1,20,-1 -516 94 m 1,24,-1 - 610 94 l 1,25,-1 - 588 0 l 1,26,-1 - 494 0 l 1,27,-1 - 516 94 l 1,24,-1 -702 901 m 1,28,-1 - 797 901 l 1,29,-1 - 774 807 l 1,30,-1 - 680 807 l 1,31,-1 - 702 901 l 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: underscoredbl -Encoding: 8215 8215 932 -Width: 692 -VWidth: 0 -Flags: W -HStem: -369 102<-61 607> -184 102<-19 650> -LayerCount: 2 -Fore -SplineSet --61 -266 m 1,0,-1 - 631 -266 l 1,1,-1 - 607 -369 l 1,2,-1 - -85 -369 l 1,3,-1 - -61 -266 l 1,0,-1 --19 -82 m 1,4,-1 - 673 -82 l 1,5,-1 - 650 -184 l 1,6,-1 - -43 -184 l 1,7,-1 - -19 -82 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57664 -Encoding: 1488 1488 933 -Width: 1316 -VWidth: 0 -Flags: W -HStem: 0 43G<86 378 932 1210> -VStem: 86 254<0 137> 1227 254<949 1085> -LayerCount: 2 -Fore -SplineSet -608 629 m 1,0,-1 - 356 1085 l 1,1,-1 - 612 1085 l 1,2,-1 - 905 555 l 1,3,4 - 964 596 964 596 1004 633.5 c 128,-1,5 - 1044 671 1044 671 1087.5 731 c 128,-1,6 - 1131 791 1131 791 1165 878 c 128,-1,7 - 1199 965 1199 965 1227 1085 c 1,8,-1 - 1481 1085 l 1,9,10 - 1466 1020 1466 1020 1445 962 c 128,-1,11 - 1424 904 1424 904 1402.5 858.5 c 128,-1,12 - 1381 813 1381 813 1350 770 c 128,-1,13 - 1319 727 1319 727 1294.5 696.5 c 128,-1,14 - 1270 666 1270 666 1231 633 c 128,-1,15 - 1192 600 1192 600 1166.5 580.5 c 128,-1,16 - 1141 561 1141 561 1097 534 c 128,-1,17 - 1053 507 1053 507 1029 493.5 c 128,-1,18 - 1005 480 1005 480 958 455 c 1,19,-1 - 1210 0 l 1,20,-1 - 954 0 l 1,21,-1 - 664 530 l 1,22,23 - 604 488 604 488 564.5 451.5 c 128,-1,24 - 525 415 525 415 480.5 355 c 128,-1,25 - 436 295 436 295 401.5 207.5 c 128,-1,26 - 367 120 367 120 340 0 c 1,27,-1 - 86 0 l 1,28,29 - 105 82 105 82 132.5 152.5 c 128,-1,30 - 160 223 160 223 191.5 276.5 c 128,-1,31 - 223 330 223 330 262.5 376 c 128,-1,32 - 302 422 302 422 340 455.5 c 128,-1,33 - 378 489 378 489 424.5 520.5 c 128,-1,34 - 471 552 471 552 511.5 575.5 c 128,-1,35 - 552 599 552 599 600 625 c 0,36,37 - 605 628 605 628 608 629 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57665 -Encoding: 1489 1489 934 -Width: 1105 -VWidth: 0 -Flags: W -HStem: 0 102<111 700 956 999> 907 43G<305 346> 1004 102<403 802> -VStem: 850 252<567 952> -LayerCount: 2 -Fore -SplineSet -330 1055 m 1,0,1 - 469 1106 469 1106 614 1106 c 0,2,3 - 1102 1106 1102 1106 1102 793 c 0,4,5 - 1102 738 1102 738 1087 676 c 2,6,-1 - 956 102 l 1,7,-1 - 1024 102 l 1,8,-1 - 999 0 l 1,9,-1 - 86 0 l 1,10,-1 - 111 102 l 1,11,-1 - 700 102 l 1,12,-1 - 825 651 l 2,13,14 - 850 757 850 757 850 821 c 0,15,16 - 850 925 850 925 796 964.5 c 128,-1,17 - 742 1004 742 1004 629 1004 c 0,18,19 - 463 1004 463 1004 295 907 c 1,20,-1 - 330 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57666 -Encoding: 1490 1490 935 -Width: 1103 -VWidth: 0 -Flags: W -HStem: 0 43G<90 426 727 1001> 1004 102<511 800> -VStem: 715 260<3 417> 733 268<0 167 174 195 202 420> 836 256<617 968> -LayerCount: 2 -Fore -SplineSet -1001 0 m 1,0,-1 - 733 0 l 1,1,2 - 715 76 715 76 715 170 c 0,3,4 - 715 280 715 280 745 420 c 1,5,6 - 632 383 632 383 546.5 294.5 c 128,-1,7 - 461 206 461 206 350 0 c 1,8,-1 - 90 0 l 1,9,10 - 139 98 139 98 194.5 177 c 128,-1,11 - 250 256 250 256 309 310.5 c 128,-1,12 - 368 365 368 365 423.5 404 c 128,-1,13 - 479 443 479 443 544 469.5 c 128,-1,14 - 609 496 609 496 659 511.5 c 128,-1,15 - 709 527 709 527 774 541 c 1,16,-1 - 823 758 l 2,17,18 - 836 812 836 812 836 844 c 0,19,20 - 836 921 836 921 799 962.5 c 128,-1,21 - 762 1004 762 1004 709 1004 c 0,22,23 - 666 1004 666 1004 609 991.5 c 128,-1,24 - 552 979 552 979 526 952 c 1,25,-1 - 412 1014 l 1,26,27 - 459 1057 459 1057 546.5 1081.5 c 128,-1,28 - 634 1106 634 1106 702 1106 c 0,29,30 - 787 1106 787 1106 853 1094.5 c 128,-1,31 - 919 1083 919 1083 975 1056 c 128,-1,32 - 1031 1029 1031 1029 1061.5 978.5 c 128,-1,33 - 1092 928 1092 928 1092 856 c 0,34,35 - 1092 818 1092 818 1079 758 c 2,36,-1 - 997 401 l 2,37,38 - 975 302 975 302 975 199 c 0,39,40 - 975 82 975 82 1001 0 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57667 -Encoding: 1491 1491 936 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 43G<610 876> 983 102<266 838 1094 1161> -LayerCount: 2 -Fore -SplineSet -866 0 m 1,0,-1 - 610 0 l 1,1,-1 - 838 983 l 1,2,-1 - 244 983 l 1,3,-1 - 266 1085 l 1,4,-1 - 1184 1085 l 1,5,-1 - 1161 983 l 1,6,-1 - 1094 983 l 1,7,-1 - 866 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57668 -Encoding: 1492 1492 937 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43G<102 368 918 1183> 907 43G<321 362> 1004 102<442 950> -VStem: 1079 246<510 891> -LayerCount: 2 -Fore -SplineSet -489 571 m 9,0,-1 - 358 0 l 1,1,-1 - 102 0 l 1,2,-1 - 236 573 l 1,3,-1 - 489 571 l 9,0,-1 -346 1055 m 1,4,5 - 408 1078 408 1078 522 1092 c 128,-1,6 - 636 1106 636 1106 719 1106 c 0,7,8 - 889 1106 889 1106 1007 1082.5 c 128,-1,9 - 1125 1059 1125 1059 1194.5 1011.5 c 128,-1,10 - 1264 964 1264 964 1294.5 898 c 128,-1,11 - 1325 832 1325 832 1325 741 c 0,12,13 - 1325 659 1325 659 1296 537 c 1,14,-1 - 1174 0 l 1,15,-1 - 918 0 l 1,16,-1 - 1067 651 l 2,17,18 - 1079 707 1079 707 1079 750 c 0,19,20 - 1079 823 1079 823 1048.5 875 c 128,-1,21 - 1018 927 1018 927 965.5 954 c 128,-1,22 - 913 981 913 981 856 992.5 c 128,-1,23 - 799 1004 799 1004 733 1004 c 0,24,25 - 637 1004 637 1004 510.5 976.5 c 128,-1,26 - 384 949 384 949 311 907 c 1,27,-1 - 346 1055 l 1,4,5 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57669 -Encoding: 1493 1493 938 -Width: 778 -VWidth: 0 -Flags: W -HStem: 0 43G<420 685> 952 102<471 600> -VStem: 608 254<629 948> -LayerCount: 2 -Fore -SplineSet -539 952 m 0,0,1 - 475 952 475 952 413 976 c 128,-1,2 - 351 1000 351 1000 324 1044 c 1,3,-1 - 467 1106 l 1,4,5 - 489 1055 489 1055 563 1055 c 0,6,7 - 614 1055 614 1055 664.5 1042.5 c 128,-1,8 - 715 1030 715 1030 760.5 1005 c 128,-1,9 - 806 980 806 980 834 935.5 c 128,-1,10 - 862 891 862 891 862 834 c 0,11,12 - 862 814 862 814 854 774 c 1,13,-1 - 676 0 l 1,14,-1 - 420 0 l 1,15,-1 - 584 707 l 2,16,17 - 608 809 608 809 608 866 c 0,18,19 - 608 952 608 952 539 952 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57670 -Encoding: 1494 1494 939 -Width: 796 -VWidth: 0 -Flags: W -HStem: 0 43G<258 523> -VStem: 258 668 -LayerCount: 2 -Fore -SplineSet -612 856 m 1,0,-1 - 301 948 l 1,1,-1 - 332 1085 l 1,2,-1 - 926 909 l 1,3,-1 - 893 772 l 1,4,-1 - 778 807 l 1,5,6 - 733 779 733 779 698.5 715 c 128,-1,7 - 664 651 664 651 635 526 c 2,8,-1 - 514 0 l 1,9,-1 - 258 0 l 1,10,-1 - 393 582 l 2,11,12 - 421 700 421 700 477 761 c 128,-1,13 - 533 822 533 822 612 856 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57671 -Encoding: 1495 1495 940 -Width: 1241 -VWidth: 0 -Flags: W -HStem: 0 43G<102 368 883 1148> 1004 102<587 947> -VStem: 1047 250<519 910> -LayerCount: 2 -Fore -SplineSet -346 1055 m 1,0,1 - 408 1078 408 1078 523.5 1092 c 128,-1,2 - 639 1106 639 1106 723 1106 c 0,3,4 - 1018 1106 1018 1106 1157 1025 c 128,-1,5 - 1296 944 1296 944 1296 758 c 0,6,7 - 1296 681 1296 681 1276 594 c 2,8,-1 - 1139 0 l 1,9,-1 - 883 0 l 1,10,-1 - 1032 651 l 2,11,12 - 1047 716 1047 716 1047 764 c 0,13,14 - 1047 1004 1047 1004 737 1004 c 0,15,16 - 677 1004 677 1004 588 991 c 1,17,-1 - 358 0 l 1,18,-1 - 102 0 l 1,19,-1 - 346 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57672 -Encoding: 1496 1496 941 -Width: 1318 -VWidth: 0 -Flags: W -HStem: -20 102<542 830> 1001 102<969 1148> -VStem: 201 256<178 616> 1157 256<658 992> -LayerCount: 2 -Fore -SplineSet -1081 520 m 2,0,-1 - 1135 756 l 2,1,2 - 1157 852 1157 852 1157 903 c 0,3,4 - 1157 1001 1157 1001 1081 1001 c 0,5,6 - 1010 1001 1010 1001 961 950 c 1,7,-1 - 846 1012 l 1,8,9 - 945 1104 945 1104 1073 1104 c 0,10,11 - 1126 1104 1126 1104 1182 1091 c 128,-1,12 - 1238 1078 1238 1078 1291.5 1052 c 128,-1,13 - 1345 1026 1345 1026 1379 979.5 c 128,-1,14 - 1413 933 1413 933 1413 874 c 0,15,16 - 1413 850 1413 850 1407 823 c 2,17,-1 - 1331 496 l 2,18,19 - 1276 263 1276 263 1094.5 121.5 c 128,-1,20 - 913 -20 913 -20 655 -20 c 0,21,22 - 440 -20 440 -20 320.5 82.5 c 128,-1,23 - 201 185 201 185 201 362 c 0,24,25 - 201 421 201 421 217 496 c 1,26,-1 - 352 1085 l 1,27,-1 - 608 1085 l 1,28,-1 - 479 520 l 1,29,30 - 457 416 457 416 457 348 c 0,31,32 - 457 211 457 211 519 146.5 c 128,-1,33 - 581 82 581 82 678 82 c 0,34,35 - 735 82 735 82 792 106 c 128,-1,36 - 849 130 849 130 905 179 c 128,-1,37 - 961 228 961 228 1007.5 316 c 128,-1,38 - 1054 404 1054 404 1081 520 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57673 -Encoding: 1497 1497 942 -Width: 737 -VWidth: 0 -Flags: W -HStem: 1001 102<439 593> -VStem: 594 248<694 1001> -LayerCount: 2 -Fore -SplineSet -510 520 m 9,0,-1 - 563 756 l 1,1,2 - 594 899 594 899 594 942 c 0,3,4 - 594 976 594 976 584 988.5 c 128,-1,5 - 574 1001 574 1001 551 1001 c 0,6,7 - 479 1001 479 1001 430 950 c 1,8,-1 - 315 1012 l 1,9,10 - 414 1104 414 1104 543 1104 c 0,11,12 - 594 1104 594 1104 644.5 1091.5 c 128,-1,13 - 695 1079 695 1079 740.5 1054 c 128,-1,14 - 786 1029 786 1029 814 984.5 c 128,-1,15 - 842 940 842 940 842 883 c 0,16,17 - 842 853 842 853 836 823 c 2,18,-1 - 766 520 l 1,19,-1 - 510 520 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57674 -Encoding: 1498 1498 943 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 907 43G<235 276> 1004 102<345 785> -VStem: 862 256<546 931> -LayerCount: 2 -Fore -SplineSet -260 1055 m 1,0,1 - 325 1079 325 1079 416.5 1092.5 c 128,-1,2 - 508 1106 508 1106 586 1106 c 0,3,4 - 838 1106 838 1106 978 1023 c 128,-1,5 - 1118 940 1118 940 1118 776 c 0,6,7 - 1118 728 1118 728 1106 676 c 2,8,-1 - 856 -410 l 1,9,-1 - 600 -410 l 1,10,-1 - 844 651 l 2,11,12 - 862 731 862 731 862 788 c 0,13,14 - 862 851 862 851 843 894 c 128,-1,15 - 824 937 824 937 787.5 960.5 c 128,-1,16 - 751 984 751 984 706 994 c 128,-1,17 - 661 1004 661 1004 600 1004 c 0,18,19 - 509 1004 509 1004 404.5 977.5 c 128,-1,20 - 300 951 300 951 225 907 c 1,21,-1 - 260 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57675 -Encoding: 1499 1499 944 -Width: 1122 -VWidth: 0 -Flags: W -HStem: -20 102<221 660> 907 43G<305 346> 1004 102<415 855> -VStem: 932 256<535 931> -LayerCount: 2 -Fore -SplineSet -1176 676 m 2,0,-1 - 1114 410 l 2,1,2 - 1064 197 1064 197 873.5 88.5 c 128,-1,3 - 683 -20 683 -20 395 -20 c 0,4,5 - 317 -20 317 -20 231 -6.5 c 128,-1,6 - 145 7 145 7 92 31 c 1,7,-1 - 127 178 l 1,8,9 - 182 135 182 135 274 108.5 c 128,-1,10 - 366 82 366 82 457 82 c 0,11,12 - 532 82 532 82 591 97 c 128,-1,13 - 650 112 650 112 704.5 149.5 c 128,-1,14 - 759 187 759 187 799.5 258.5 c 128,-1,15 - 840 330 840 330 864 434 c 2,16,-1 - 913 651 l 2,17,18 - 932 735 932 735 932 788 c 0,19,20 - 932 851 932 851 913 894 c 128,-1,21 - 894 937 894 937 857.5 960.5 c 128,-1,22 - 821 984 821 984 776 994 c 128,-1,23 - 731 1004 731 1004 670 1004 c 0,24,25 - 579 1004 579 1004 474.5 977.5 c 128,-1,26 - 370 951 370 951 295 907 c 1,27,-1 - 330 1055 l 1,28,29 - 395 1079 395 1079 486 1092.5 c 128,-1,30 - 577 1106 577 1106 655 1106 c 0,31,32 - 907 1106 907 1106 1047.5 1023 c 128,-1,33 - 1188 940 1188 940 1188 776 c 0,34,35 - 1188 728 1188 728 1176 676 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57676 -Encoding: 1500 1500 945 -Width: 995 -VWidth: 0 -Flags: W -HStem: 0 43G<168 429> 983 102<578 754> 1393 41G<404 659> -VStem: 827 256<612 921> -LayerCount: 2 -Fore -SplineSet -309 983 m 1,0,-1 - 414 1434 l 1,1,-1 - 659 1434 l 1,2,-1 - 578 1085 l 1,3,4 - 842 1085 842 1085 962.5 1024.5 c 128,-1,5 - 1083 964 1083 964 1083 825 c 0,6,7 - 1083 738 1083 738 1062 668.5 c 128,-1,8 - 1041 599 1041 599 1005.5 552 c 128,-1,9 - 970 505 970 505 923 467 c 128,-1,10 - 876 429 876 429 822.5 400.5 c 128,-1,11 - 769 372 769 372 714 345 c 128,-1,12 - 659 318 659 318 606 286.5 c 128,-1,13 - 553 255 553 255 508.5 217.5 c 128,-1,14 - 464 180 464 180 429.5 124.5 c 128,-1,15 - 395 69 395 69 379 0 c 1,16,-1 - 168 0 l 1,17,18 - 187 82 187 82 234 147.5 c 128,-1,19 - 281 213 281 213 340 256 c 128,-1,20 - 399 299 399 299 466.5 338 c 128,-1,21 - 534 377 534 377 597.5 418.5 c 128,-1,22 - 661 460 661 460 712.5 510 c 128,-1,23 - 764 560 764 560 795.5 637 c 128,-1,24 - 827 714 827 714 827 813 c 0,25,26 - 827 852 827 852 813.5 881.5 c 128,-1,27 - 800 911 800 911 767.5 934.5 c 128,-1,28 - 735 958 735 958 675 970.5 c 128,-1,29 - 615 983 615 983 528 983 c 2,30,-1 - 309 983 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57677 -Encoding: 1501 1501 946 -Width: 1286 -VWidth: 0 -Flags: W -HStem: 0 102<383 952> 1004 102<587 989> -VStem: 1092 258<530 907> -LayerCount: 2 -Fore -SplineSet -346 1055 m 1,0,1 - 407 1077 407 1077 543 1091.5 c 128,-1,2 - 679 1106 679 1106 768 1106 c 0,3,4 - 938 1106 938 1106 1067.5 1069 c 128,-1,5 - 1197 1032 1197 1032 1273.5 953 c 128,-1,6 - 1350 874 1350 874 1350 762 c 0,7,8 - 1350 733 1350 733 1339 676 c 1,9,-1 - 1184 0 l 1,10,-1 - 102 0 l 1,11,-1 - 346 1055 l 1,0,1 -586 985 m 1,12,-1 - 383 102 l 1,13,-1 - 952 102 l 1,14,-1 - 1077 651 l 2,15,16 - 1092 716 1092 716 1092 764 c 0,17,18 - 1092 1004 1092 1004 782 1004 c 0,19,20 - 703 1004 703 1004 586 985 c 1,12,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57678 -Encoding: 1502 1502 947 -Width: 1396 -VWidth: 0 -Flags: W -HStem: 0 102<709 1053> 1004 102<825 1156> -VStem: 1204 260<577 952> -LayerCount: 2 -Fore -SplineSet -100 0 m 1,0,-1 - 375 674 l 1,1,2 - 401 735 401 735 418 766 c 1,3,-1 - 342 1085 l 1,4,-1 - 563 1085 l 1,5,-1 - 592 969 l 1,6,7 - 765 1106 765 1106 977 1106 c 0,8,9 - 1464 1106 1464 1106 1464 793 c 0,10,11 - 1464 733 1464 733 1450 676 c 2,12,-1 - 1294 0 l 1,13,-1 - 684 0 l 1,14,-1 - 709 102 l 1,15,-1 - 1053 102 l 1,16,-1 - 1178 651 l 2,17,18 - 1204 768 1204 768 1204 829 c 0,19,20 - 1204 929 1204 929 1153 966.5 c 128,-1,21 - 1102 1004 1102 1004 991 1004 c 0,22,23 - 866 1004 866 1004 780.5 925.5 c 128,-1,24 - 695 847 695 847 612 645 c 2,25,-1 - 348 0 l 1,26,-1 - 100 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57679 -Encoding: 1503 1503 948 -Width: 757 -VWidth: 0 -Flags: W -HStem: 1001 102<428 597> -VStem: 600 246<682 998> -LayerCount: 2 -Fore -SplineSet -305 -410 m 9,0,-1 - 573 756 l 1,1,2 - 600 878 600 878 600 924 c 0,3,4 - 600 964 600 964 586.5 982.5 c 128,-1,5 - 573 1001 573 1001 541 1001 c 0,6,7 - 469 1001 469 1001 420 950 c 1,8,-1 - 305 1012 l 1,9,10 - 404 1104 404 1104 532 1104 c 0,11,12 - 689 1104 689 1104 767.5 1050 c 128,-1,13 - 846 996 846 996 846 877 c 0,14,15 - 846 830 846 830 829 754 c 2,16,-1 - 561 -410 l 1,17,-1 - 305 -410 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57680 -Encoding: 1504 1504 949 -Width: 772 -VWidth: 0 -Flags: W -HStem: 0 102<111 438> 1001 102<443 608> -VStem: 614 242<680 999> -LayerCount: 2 -Fore -SplineSet -670 0 m 1,0,-1 - 86 0 l 1,1,-1 - 111 102 l 1,2,-1 - 438 102 l 1,3,-1 - 588 756 l 1,4,5 - 614 876 614 876 614 924 c 0,6,7 - 614 963 614 963 600.5 982 c 128,-1,8 - 587 1001 587 1001 555 1001 c 0,9,10 - 483 1001 483 1001 434 950 c 1,11,-1 - 319 1012 l 1,12,13 - 418 1104 418 1104 547 1104 c 0,14,15 - 621 1104 621 1104 673.5 1094.5 c 128,-1,16 - 726 1085 726 1085 769.5 1061 c 128,-1,17 - 813 1037 813 1037 834.5 991.5 c 128,-1,18 - 856 946 856 946 856 877 c 128,-1,19 - 856 808 856 808 836 721 c 2,20,-1 - 670 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57681 -Encoding: 1505 1505 950 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<572 883> 983 102<342 532 663 1087> -VStem: 215 254<187 598> 1163 250<459 875> -LayerCount: 2 -Fore -SplineSet -342 1085 m 1,0,-1 - 946 1085 l 2,1,2 - 1081 1085 1081 1085 1184.5 1041 c 128,-1,3 - 1288 997 1288 997 1350.5 904.5 c 128,-1,4 - 1413 812 1413 812 1413 682 c 0,5,6 - 1413 548 1413 548 1370.5 432.5 c 128,-1,7 - 1328 317 1328 317 1256.5 235.5 c 128,-1,8 - 1185 154 1185 154 1092 95 c 128,-1,9 - 999 36 999 36 897 8 c 128,-1,10 - 795 -20 795 -20 692 -20 c 0,11,12 - 590 -20 590 -20 505 2.5 c 128,-1,13 - 420 25 420 25 354 70 c 128,-1,14 - 288 115 288 115 251.5 189 c 128,-1,15 - 215 263 215 263 215 360 c 0,16,17 - 215 432 215 432 228 499 c 128,-1,18 - 241 566 241 566 267.5 625 c 128,-1,19 - 294 684 294 684 321 731 c 128,-1,20 - 348 778 348 778 390 828.5 c 128,-1,21 - 432 879 432 879 460 909 c 128,-1,22 - 488 939 488 939 532 983 c 1,23,-1 - 319 983 l 1,24,-1 - 342 1085 l 1,0,-1 -698 983 m 1,25,26 - 608 891 608 891 538.5 716.5 c 128,-1,27 - 469 542 469 542 469 350 c 0,28,29 - 469 211 469 211 543.5 146.5 c 128,-1,30 - 618 82 618 82 745 82 c 0,31,32 - 816 82 816 82 890 131 c 128,-1,33 - 964 180 964 180 1024.5 263.5 c 128,-1,34 - 1085 347 1085 347 1124 470 c 128,-1,35 - 1163 593 1163 593 1163 727 c 0,36,37 - 1163 859 1163 859 1106.5 921 c 128,-1,38 - 1050 983 1050 983 954 983 c 2,39,-1 - 698 983 l 1,25,26 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57682 -Encoding: 1506 1506 951 -Width: 1175 -VWidth: 0 -Flags: W -HStem: -328 102<43 264> -VStem: 365 223<721 1085> 412 211<78 253> 1077 256<939 1085> -LayerCount: 2 -Fore -SplineSet -18 -328 m 1,0,-1 - 43 -225 l 1,1,2 - 236 -225 236 -225 412 -111 c 1,3,-1 - 365 1085 l 1,4,-1 - 588 1085 l 1,5,-1 - 623 78 l 1,6,7 - 779 261 779 261 894 526 c 128,-1,8 - 1009 791 1009 791 1077 1085 c 1,9,-1 - 1333 1085 l 1,10,11 - 1302 952 1302 952 1251.5 814 c 128,-1,12 - 1201 676 1201 676 1129 537 c 128,-1,13 - 1057 398 1057 398 970.5 271.5 c 128,-1,14 - 884 145 884 145 776.5 35.5 c 128,-1,15 - 669 -74 669 -74 552 -155 c 128,-1,16 - 435 -236 435 -236 297.5 -282 c 128,-1,17 - 160 -328 160 -328 18 -328 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57683 -Encoding: 1507 1507 952 -Width: 1253 -VWidth: 0 -Flags: W -HStem: 471 102<510 722> 1004 102<576 977> -VStem: 258 248<576 885> 1063 256<546 922> -LayerCount: 2 -Fore -SplineSet -801 -410 m 1,0,-1 - 1044 651 l 1,1,2 - 1063 729 1063 729 1063 780 c 0,3,4 - 1063 904 1063 904 989 954 c 128,-1,5 - 915 1004 915 1004 786 1004 c 0,6,7 - 716 1004 716 1004 573 983 c 1,8,-1 - 535 819 l 2,9,10 - 506 697 506 697 506 647 c 0,11,12 - 506 573 506 573 569 573 c 0,13,14 - 608 573 608 573 655.5 585.5 c 128,-1,15 - 703 598 703 598 729 625 c 1,16,-1 - 803 563 l 1,17,18 - 704 471 704 471 575 471 c 0,19,20 - 524 471 524 471 471 484 c 128,-1,21 - 418 497 418 497 369 522.5 c 128,-1,22 - 320 548 320 548 289 593 c 128,-1,23 - 258 638 258 638 258 696 c 0,24,25 - 258 725 258 725 264 752 c 2,26,-1 - 334 1055 l 1,27,28 - 395 1077 395 1077 538 1091.5 c 128,-1,29 - 681 1106 681 1106 772 1106 c 0,30,31 - 1027 1106 1027 1106 1173 1021.5 c 128,-1,32 - 1319 937 1319 937 1319 772 c 0,33,34 - 1319 728 1319 728 1307 676 c 2,35,-1 - 1057 -410 l 1,36,-1 - 801 -410 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57684 -Encoding: 1508 1508 953 -Width: 1253 -VWidth: 0 -Flags: W -HStem: -20 102<244 749> 471 102<510 722> 1004 102<576 951> -VStem: 258 248<576 885> 1059 260<535 904> -LayerCount: 2 -Fore -SplineSet -1307 676 m 2,0,-1 - 1245 410 l 2,1,2 - 1195 194 1195 194 995.5 87 c 128,-1,3 - 796 -20 796 -20 463 -20 c 0,4,5 - 377 -20 377 -20 262 -6 c 128,-1,6 - 147 8 147 8 96 31 c 1,7,-1 - 131 178 l 1,8,9 - 183 136 183 136 304.5 109 c 128,-1,10 - 426 82 426 82 524 82 c 0,11,12 - 584 82 584 82 638.5 90.5 c 128,-1,13 - 693 99 693 99 751 123.5 c 128,-1,14 - 809 148 809 148 854.5 186 c 128,-1,15 - 900 224 900 224 938 287.5 c 128,-1,16 - 976 351 976 351 995 434 c 2,17,-1 - 1044 651 l 2,18,19 - 1059 713 1059 713 1059 760 c 0,20,21 - 1059 1004 1059 1004 737 1004 c 0,22,23 - 666 1004 666 1004 575 989 c 1,24,-1 - 535 819 l 2,25,26 - 506 697 506 697 506 647 c 0,27,28 - 506 573 506 573 569 573 c 0,29,30 - 608 573 608 573 655.5 585.5 c 128,-1,31 - 703 598 703 598 729 625 c 1,32,-1 - 803 563 l 1,33,34 - 704 471 704 471 575 471 c 0,35,36 - 524 471 524 471 471 484 c 128,-1,37 - 418 497 418 497 369 522.5 c 128,-1,38 - 320 548 320 548 289 593 c 128,-1,39 - 258 638 258 638 258 696 c 0,40,41 - 258 725 258 725 264 752 c 2,42,-1 - 334 1055 l 1,43,44 - 396 1078 396 1078 517 1092 c 128,-1,45 - 638 1106 638 1106 723 1106 c 0,46,47 - 1015 1106 1015 1106 1167 1023 c 128,-1,48 - 1319 940 1319 940 1319 774 c 0,49,50 - 1319 728 1319 728 1307 676 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57685 -Encoding: 1509 1509 954 -Width: 1216 -VWidth: 0 -Flags: W -VStem: 305 256<701 1082> 680 270<50 347> 1112 256<956 1085> -LayerCount: 2 -Fore -SplineSet -545 -410 m 1,0,-1 - 672 143 l 2,1,2 - 680 176 680 176 680 211 c 0,3,4 - 680 262 680 262 659.5 307.5 c 128,-1,5 - 639 353 639 353 605.5 390 c 128,-1,6 - 572 427 572 427 532 464.5 c 128,-1,7 - 492 502 492 502 452.5 545 c 128,-1,8 - 413 588 413 588 379.5 636.5 c 128,-1,9 - 346 685 346 685 325.5 754 c 128,-1,10 - 305 823 305 823 305 903 c 0,11,12 - 305 987 305 987 328 1085 c 1,13,-1 - 584 1085 l 1,14,15 - 561 982 561 982 561 899 c 0,16,17 - 561 836 561 836 575 781.5 c 128,-1,18 - 589 727 589 727 608 690.5 c 128,-1,19 - 627 654 627 654 661 615.5 c 128,-1,20 - 695 577 695 577 719 556 c 128,-1,21 - 743 535 743 535 784 504 c 1,22,23 - 1022 685 1022 685 1112 1085 c 1,24,-1 - 1368 1085 l 1,25,26 - 1344 982 1344 982 1292 883 c 128,-1,27 - 1240 784 1240 784 1169.5 702 c 128,-1,28 - 1099 620 1099 620 1025 554.5 c 128,-1,29 - 951 489 951 489 870 434 c 1,30,31 - 950 357 950 357 950 266 c 0,32,33 - 950 236 950 236 942 205 c 2,34,-1 - 801 -410 l 1,35,-1 - 545 -410 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57686 -Encoding: 1510 1510 955 -Width: 1122 -VWidth: 0 -Flags: W -HStem: 0 102<117 806> -VStem: 289 262<686 1082> 881 258<161 303> 1069 262<950 1085> -LayerCount: 2 -Fore -SplineSet -92 0 m 1,0,-1 - 117 102 l 1,1,-1 - 473 102 l 2,2,3 - 697 102 697 102 789 133.5 c 128,-1,4 - 881 165 881 165 881 246 c 0,5,6 - 881 270 881 270 855.5 292 c 128,-1,7 - 830 314 830 314 788.5 332 c 128,-1,8 - 747 350 747 350 693.5 375.5 c 128,-1,9 - 640 401 640 401 585 429 c 128,-1,10 - 530 457 530 457 476.5 500.5 c 128,-1,11 - 423 544 423 544 381.5 596.5 c 128,-1,12 - 340 649 340 649 314.5 726 c 128,-1,13 - 289 803 289 803 289 895 c 0,14,15 - 289 989 289 989 311 1085 c 1,16,-1 - 578 1085 l 1,17,18 - 551 965 551 965 551 877 c 0,19,20 - 551 622 551 622 756 508 c 1,21,22 - 977 683 977 683 1069 1085 c 1,23,-1 - 1331 1085 l 1,24,25 - 1287 896 1287 896 1160 735.5 c 128,-1,26 - 1033 575 1033 575 868 457 c 1,27,28 - 888 449 888 449 934.5 432.5 c 128,-1,29 - 981 416 981 416 1001 408 c 128,-1,30 - 1021 400 1021 400 1053.5 383 c 128,-1,31 - 1086 366 1086 366 1100.5 352 c 128,-1,32 - 1115 338 1115 338 1127 316 c 128,-1,33 - 1139 294 1139 294 1139 268 c 0,34,35 - 1139 214 1139 214 1121.5 173 c 128,-1,36 - 1104 132 1104 132 1066 102 c 128,-1,37 - 1028 72 1028 72 974 52.5 c 128,-1,38 - 920 33 920 33 840 21.5 c 128,-1,39 - 760 10 760 10 667 5 c 128,-1,40 - 574 0 574 0 449 0 c 2,41,-1 - 92 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57687 -Encoding: 1511 1511 956 -Width: 1222 -VWidth: 0 -Flags: W -HStem: 0 43G<477 776> 983 102<352 956> -VStem: 1055 256<602 906> -LayerCount: 2 -Fore -SplineSet -489 571 m 9,0,-1 - 264 -410 l 1,1,-1 - 8 -410 l 1,2,-1 - 236 573 l 1,3,-1 - 489 571 l 9,0,-1 -352 1085 m 1,4,-1 - 709 1085 l 2,5,6 - 832 1085 832 1085 924.5 1077 c 128,-1,7 - 1017 1069 1017 1069 1092 1050.5 c 128,-1,8 - 1167 1032 1167 1032 1214 1001.5 c 128,-1,9 - 1261 971 1261 971 1286 925 c 128,-1,10 - 1311 879 1311 879 1311 817 c 0,11,12 - 1311 724 1311 724 1290 650 c 128,-1,13 - 1269 576 1269 576 1233.5 528.5 c 128,-1,14 - 1198 481 1198 481 1151.5 439 c 128,-1,15 - 1105 397 1105 397 1055.5 367.5 c 128,-1,16 - 1006 338 1006 338 954.5 301 c 128,-1,17 - 903 264 903 264 859.5 226.5 c 128,-1,18 - 816 189 816 189 781 130.5 c 128,-1,19 - 746 72 746 72 729 0 c 1,20,-1 - 477 0 l 1,21,22 - 494 75 494 75 536 137.5 c 128,-1,23 - 578 200 578 200 629.5 243.5 c 128,-1,24 - 681 287 681 287 740 328.5 c 128,-1,25 - 799 370 799 370 854.5 413.5 c 128,-1,26 - 910 457 910 457 955 508 c 128,-1,27 - 1000 559 1000 559 1027.5 633.5 c 128,-1,28 - 1055 708 1055 708 1055 801 c 0,29,30 - 1055 843 1055 843 1037.5 874 c 128,-1,31 - 1020 905 1020 905 977.5 930.5 c 128,-1,32 - 935 956 935 956 854.5 969.5 c 128,-1,33 - 774 983 774 983 657 983 c 2,34,-1 - 330 983 l 1,35,-1 - 352 1085 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57688 -Encoding: 1512 1512 957 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 43G<694 960> 907 43G<235 276> 1004 102<345 785> -VStem: 862 256<539 931> -LayerCount: 2 -Fore -SplineSet -260 1055 m 1,0,1 - 325 1079 325 1079 416.5 1092.5 c 128,-1,2 - 508 1106 508 1106 586 1106 c 0,3,4 - 838 1106 838 1106 978 1023 c 128,-1,5 - 1118 940 1118 940 1118 776 c 0,6,7 - 1118 728 1118 728 1106 676 c 2,8,-1 - 950 0 l 1,9,-1 - 694 0 l 1,10,-1 - 844 651 l 2,11,12 - 862 731 862 731 862 788 c 0,13,14 - 862 851 862 851 843 894 c 128,-1,15 - 824 937 824 937 787.5 960.5 c 128,-1,16 - 751 984 751 984 706 994 c 128,-1,17 - 661 1004 661 1004 600 1004 c 0,18,19 - 509 1004 509 1004 404.5 977.5 c 128,-1,20 - 300 951 300 951 225 907 c 1,21,-1 - 260 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57689 -Encoding: 1513 1513 958 -Width: 1550 -VWidth: 0 -Flags: W -HStem: 0 43G<281 751> 444 104<551 650> -VStem: 963 244<984 1085> 1470 248<955 1085> -LayerCount: 2 -Fore -SplineSet -340 1085 m 1,0,-1 - 580 1085 l 1,1,-1 - 551 549 l 1,2,3 - 697 584 697 584 794 720 c 128,-1,4 - 891 856 891 856 963 1085 c 1,5,-1 - 1206 1085 l 1,6,7 - 1108 806 1108 806 936 642 c 128,-1,8 - 764 478 764 478 545 444 c 1,9,-1 - 524 111 l 1,10,11 - 633 121 633 121 726 144.5 c 128,-1,12 - 819 168 819 168 895.5 206.5 c 128,-1,13 - 972 245 972 245 1034.5 291.5 c 128,-1,14 - 1097 338 1097 338 1151 404 c 128,-1,15 - 1205 470 1205 470 1247.5 538 c 128,-1,16 - 1290 606 1290 606 1330 698.5 c 128,-1,17 - 1370 791 1370 791 1402 880 c 128,-1,18 - 1434 969 1434 969 1470 1085 c 1,19,-1 - 1718 1085 l 1,20,21 - 1658 886 1658 886 1593.5 737 c 128,-1,22 - 1529 588 1529 588 1443 463 c 128,-1,23 - 1357 338 1357 338 1253.5 254 c 128,-1,24 - 1150 170 1150 170 1013.5 111.5 c 128,-1,25 - 877 53 877 53 708.5 26.5 c 128,-1,26 - 540 0 540 0 328 0 c 2,27,-1 - 281 0 l 1,28,-1 - 340 1085 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57690 -Encoding: 1514 1514 959 -Width: 1290 -VWidth: 0 -Flags: W -HStem: 0 102<111 212> 907 43G<305 312> 1004 102<712 981> -VStem: 1096 258<529 903> -LayerCount: 2 -Fore -SplineSet -330 1055 m 1,0,1 - 391 1077 391 1077 529.5 1091.5 c 128,-1,2 - 668 1106 668 1106 758 1106 c 0,3,4 - 930 1106 930 1106 1062 1069 c 128,-1,5 - 1194 1032 1194 1032 1274 952 c 128,-1,6 - 1354 872 1354 872 1354 758 c 0,7,8 - 1354 729 1354 729 1343 676 c 1,9,-1 - 1188 0 l 1,10,-1 - 932 0 l 1,11,-1 - 1081 651 l 1,12,13 - 1096 724 1096 724 1096 758 c 0,14,15 - 1096 829 1096 829 1068.5 879 c 128,-1,16 - 1041 929 1041 929 993 955 c 128,-1,17 - 945 981 945 981 891 992.5 c 128,-1,18 - 837 1004 837 1004 772 1004 c 0,19,20 - 745 1004 745 1004 715 1001 c 1,21,-1 - 549 281 l 2,22,23 - 532 209 532 209 477.5 152 c 128,-1,24 - 423 95 423 95 352.5 63.5 c 128,-1,25 - 282 32 282 32 213 16 c 128,-1,26 - 144 0 144 0 86 0 c 1,27,-1 - 111 102 l 1,28,29 - 183 102 183 102 230.5 162 c 128,-1,30 - 278 222 278 222 307 348 c 2,31,-1 - 449 961 l 1,32,33 - 352 939 352 939 295 907 c 1,34,-1 - 330 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii299 -Encoding: 8206 8206 960 -Width: 731 -VWidth: 0 -Flags: W -HStem: 1337 61<534 821> -LayerCount: 2 -Fore -SplineSet -945 1368 m 1,0,-1 - 675 1149 l 1,1,-1 - 695 1235 l 1,2,-1 - 821 1337 l 1,3,-1 - 534 1337 l 1,4,-1 - 131 -410 l 1,5,-1 - 69 -410 l 1,6,-1 - 487 1399 l 1,7,-1 - 835 1399 l 1,8,-1 - 756 1501 l 1,9,-1 - 777 1589 l 1,10,-1 - 945 1368 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii300 -Encoding: 8207 8207 961 -Width: 731 -VWidth: 0 -Flags: W -HStem: 1337 61<542 815> -VStem: 418 472 -LayerCount: 2 -Fore -SplineSet -418 1368 m 1,0,-1 - 688 1589 l 1,1,-1 - 668 1501 l 1,2,-1 - 542 1399 l 1,3,-1 - 890 1399 l 1,4,-1 - 473 -410 l 1,5,-1 - 411 -410 l 1,6,-1 - 815 1337 l 1,7,-1 - 528 1337 l 1,8,-1 - 607 1235 l 1,9,-1 - 587 1149 l 1,10,-1 - 418 1368 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni037A -Encoding: 890 890 962 -Width: 442 -VWidth: 0 -Flags: W -HStem: -430 53<151 256> -VStem: 41 160<-376 -135> 274 57<-363 -301> -LayerCount: 2 -Fore -SplineSet -90 -55 m 1,0,-1 - 264 -55 l 1,1,-1 - 217 -254 l 2,2,3 - 201 -323 201 -323 201 -350 c 128,-1,4 - 201 -377 201 -377 217 -377 c 0,5,6 - 257 -377 257 -377 274 -301 c 1,7,-1 - 332 -301 l 1,8,9 - 317 -364 317 -364 281.5 -397 c 128,-1,10 - 246 -430 246 -430 195 -430 c 0,11,12 - 120 -430 120 -430 80.5 -404 c 128,-1,13 - 41 -378 41 -378 41 -305 c 0,14,15 - 41 -273 41 -273 55 -205 c 1,16,-1 - 90 -55 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni037E -Encoding: 894 894 963 -Width: 407 -VWidth: 0 -Flags: W -HStem: -203 367<125 195> 614 164<272 451> -VStem: 37 309 236 252 -LayerCount: 2 -Fore -Refer: 64 59 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: tonos -Encoding: 900 900 964 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1274 379 -VStem: 418 369 -LayerCount: 2 -Fore -SplineSet -637 1653 m 25,0,-1 - 786 1530 l 1,1,-1 - 451 1274 l 1,2,-1 - 418 1303 l 1,3,-1 - 637 1653 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: dieresistonos -Encoding: 901 901 965 -Width: 880 -VWidth: 0 -Flags: W -HStem: 1270 170<383 514 987 1118> 1282 379 -VStem: 344 209 635 369 948 209 -LayerCount: 2 -Fore -Refer: 964 900 N 1 0 0 1 217 8 2 -Refer: 377 729 N 1 0 0 1 0 0 2 -Refer: 377 729 N 1 0 0 1 604 0 2 -Validated: 1 -EndChar - -StartChar: anoteleia -Encoding: 903 903 966 -Width: 272 -VWidth: 0 -Flags: W -HStem: 414 170<186 317> -VStem: 147 209 -LayerCount: 2 -Fore -Refer: 342 183 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Alpha -Encoding: 913 913 967 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1393 41<860 1070> -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Beta -Encoding: 914 914 968 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<373 608> 727 102<541 682> 1331 102<655 806> -VStem: 780 268<296 657> 852 270<1002 1290> -LayerCount: 2 -Fore -Refer: 28 66 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Gamma -Encoding: 915 915 969 -Width: 899 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1331 102<666 1227> -LayerCount: 2 -Fore -Refer: 399 1043 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Delta -Encoding: 916 916 970 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 102<328 1006> 1393 41G<860 1070> -LayerCount: 2 -Fore -SplineSet -328 102 m 1,0,-1 - 1006 102 l 1,1,-1 - 883 1034 l 1,2,-1 - 328 102 l 1,0,-1 -1255 0 m 1,3,-1 - 31 0 l 1,4,-1 - 885 1434 l 1,5,-1 - 1065 1434 l 1,6,-1 - 1255 0 l 1,3,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Epsilon -Encoding: 917 917 971 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 942> 799 102<557 909> 1331 102<655 1217> -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Zeta -Encoding: 918 918 972 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 102<367 963> 1331 102<414 958> -LayerCount: 2 -Fore -Refer: 52 90 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Eta -Encoding: 919 919 973 -Width: 1189 -VWidth: 0 -Flags: W -HStem: 0 43<82 358 823 1099> 717 102<537 989> 1393 41<404 680 1146 1421> -LayerCount: 2 -Fore -Refer: 35 72 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Theta -Encoding: 920 920 974 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<613 891> 647 143<618 1133> 1352 102<869 1162> -VStem: 240 258<252 739> 1276 256<695 1178> -LayerCount: 2 -Fore -SplineSet -700 -20 m 0,0,1 - 612 -20 612 -20 532 11 c 128,-1,2 - 452 42 452 42 385.5 102 c 128,-1,3 - 319 162 319 162 279.5 262 c 128,-1,4 - 240 362 240 362 240 489 c 0,5,6 - 240 586 240 586 268 717 c 1,7,8 - 302 865 302 865 365.5 989.5 c 128,-1,9 - 429 1114 429 1114 506 1198.5 c 128,-1,10 - 583 1283 583 1283 672.5 1341.5 c 128,-1,11 - 762 1400 762 1400 850 1427 c 128,-1,12 - 938 1454 938 1454 1022 1454 c 0,13,14 - 1129 1454 1129 1454 1220 1423.5 c 128,-1,15 - 1311 1393 1311 1393 1381.5 1333 c 128,-1,16 - 1452 1273 1452 1273 1492 1174 c 128,-1,17 - 1532 1075 1532 1075 1532 948 c 0,18,19 - 1532 839 1532 839 1503 717 c 0,20,21 - 1460 531 1460 531 1375.5 387 c 128,-1,22 - 1291 243 1291 243 1182 155.5 c 128,-1,23 - 1073 68 1073 68 951 24 c 128,-1,24 - 829 -20 829 -20 700 -20 c 0,0,1 -1010 1352 m 0,25,26 - 865 1352 865 1352 735 1189 c 128,-1,27 - 605 1026 605 1026 535 717 c 1,28,29 - 498 560 498 560 498 440 c 0,30,31 - 498 263 498 263 565.5 172.5 c 128,-1,32 - 633 82 633 82 735 82 c 0,33,34 - 893 82 893 82 1029.5 244.5 c 128,-1,35 - 1166 407 1166 407 1237 717 c 0,36,37 - 1276 883 1276 883 1276 1012 c 0,38,39 - 1276 1185 1276 1185 1205.5 1268.5 c 128,-1,40 - 1135 1352 1135 1352 1010 1352 c 0,25,26 -618 791 m 1,41,-1 - 1165 791 l 1,42,-1 - 1133 647 l 1,43,-1 - 586 647 l 1,44,-1 - 618 791 l 1,41,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Iota -Encoding: 921 921 975 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> -VStem: 92 598 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Kappa -Encoding: 922 922 976 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 905 1151> 1393 41<414 690 1177 1458> -LayerCount: 2 -Fore -Refer: 38 75 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Lambda -Encoding: 923 923 977 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 1393 41<860 1070> -LayerCount: 2 -Fore -Refer: 716 581 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Mu -Encoding: 924 924 978 -Width: 1480 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 1108 1384> 1393 41<414 700 1411 1706> -LayerCount: 2 -Fore -Refer: 40 77 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Nu -Encoding: 925 925 979 -Width: 1261 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 878 1165> 1393 41<414 703 1211 1487> -LayerCount: 2 -Fore -Refer: 41 78 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Xi -Encoding: 926 926 980 -Width: 1384 -VWidth: 0 -Flags: W -HStem: 0 195<127 1143> 629 176<401 1155> 1239 195<414 1430> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -SplineSet -401 805 m 1,0,-1 - 1196 805 l 1,1,-1 - 1155 629 l 1,2,-1 - 360 629 l 1,3,-1 - 401 805 l 1,0,-1 -414 1434 m 1,4,-1 - 1475 1434 l 1,5,-1 - 1430 1239 l 1,6,-1 - 369 1239 l 1,7,-1 - 414 1434 l 1,4,-1 -127 195 m 1,8,-1 - 1188 195 l 1,9,-1 - 1143 0 l 1,10,-1 - 82 0 l 1,11,-1 - 127 195 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Omicron -Encoding: 927 927 981 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 1352 102<822 1122> -VStem: 199 258<251 749> 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Pi -Encoding: 928 928 982 -Width: 1173 -VWidth: 0 -Flags: W -HStem: 0 43<92 368 801 1076> 1331 102<666 1108> -LayerCount: 2 -Fore -Refer: 411 1055 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Rho -Encoding: 929 929 983 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 655 102<532 758> 1331 102<666 881> -VStem: 940 266<951 1271> -LayerCount: 2 -Fore -Refer: 29 80 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Sigma -Encoding: 931 931 984 -Width: 1167 -VWidth: 0 -Flags: W -HStem: 0 102<459 1110> 1331 102<752 1401> -LayerCount: 2 -Fore -Refer: 633 425 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Tau -Encoding: 932 932 985 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43<487 763> 1331 102<352 795 1061 1526> -LayerCount: 2 -Fore -Refer: 46 84 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Upsilon -Encoding: 933 933 986 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<406 681> 1393 41<377 646 1112 1327> -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Phi -Encoding: 934 934 987 -Width: 1370 -VWidth: 0 -Flags: W -HStem: 0 43<547 820> 197 111<555 592> 1122 111<1096 1136> 1393 41<869 1143> -VStem: 215 258<432 807> 1214 260<638 1003> -LayerCount: 2 -Fore -Refer: 416 1060 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Chi -Encoding: 935 935 988 -Width: 1095 -VWidth: 0 -Flags: W -HStem: 0 43<41 254 765 1034> 1393 41<377 646 1071 1286> -LayerCount: 2 -Fore -Refer: 49 88 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Psi -Encoding: 936 936 989 -Width: 1648 -VWidth: 0 -Flags: W -HStem: 0 43G<696 972> 440 104<728 799> 1393 41G<478 754 1019 1294 1549 1825> -VStem: 379 256<678 1117> -LayerCount: 2 -Fore -SplineSet -821 545 m 1,0,-1 - 1028 1434 l 1,1,-1 - 1294 1434 l 1,2,-1 - 1090 547 l 1,3,4 - 1154 560 1154 560 1206.5 591 c 128,-1,5 - 1259 622 1259 622 1309.5 680 c 128,-1,6 - 1360 738 1360 738 1401 834.5 c 128,-1,7 - 1442 931 1442 931 1473 1065 c 2,8,-1 - 1559 1434 l 1,9,-1 - 1825 1434 l 1,10,-1 - 1739 1065 l 2,11,12 - 1710 937 1710 937 1651.5 832.5 c 128,-1,13 - 1593 728 1593 728 1524 661 c 128,-1,14 - 1455 594 1455 594 1371 545.5 c 128,-1,15 - 1287 497 1287 497 1213.5 473.5 c 128,-1,16 - 1140 450 1140 450 1065 440 c 1,17,-1 - 963 0 l 1,18,-1 - 696 0 l 1,19,-1 - 799 440 l 1,20,21 - 740 447 740 447 684.5 464.5 c 128,-1,22 - 629 482 629 482 572 517 c 128,-1,23 - 515 552 515 552 473.5 600 c 128,-1,24 - 432 648 432 648 405.5 721.5 c 128,-1,25 - 379 795 379 795 379 885 c 0,26,27 - 379 972 379 972 401 1065 c 2,28,-1 - 487 1434 l 1,29,-1 - 754 1434 l 1,30,-1 - 668 1065 l 2,31,32 - 635 924 635 924 635 821 c 0,33,34 - 635 580 635 580 821 545 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Omega -Encoding: 937 937 990 -Width: 1607 -VWidth: 0 -Flags: W -HStem: 0 102<274 428 1221 1350> 1352 102<939 1268> -VStem: 305 252<380 874> 1407 250<719 1168> -LayerCount: 2 -Fore -SplineSet -1135 1454 m 0,0,1 - 1205 1454 1205 1454 1276.5 1436 c 128,-1,2 - 1348 1418 1348 1418 1417 1378 c 128,-1,3 - 1486 1338 1486 1338 1539 1281 c 128,-1,4 - 1592 1224 1592 1224 1624.5 1139 c 128,-1,5 - 1657 1054 1657 1054 1657 952 c 0,6,7 - 1657 853 1657 853 1629.5 754 c 128,-1,8 - 1602 655 1602 655 1559.5 575 c 128,-1,9 - 1517 495 1517 495 1459.5 420 c 128,-1,10 - 1402 345 1402 345 1349 292 c 128,-1,11 - 1296 239 1296 239 1241 195 c 1,12,-1 - 1221 102 l 1,13,-1 - 1374 102 l 1,14,-1 - 1350 0 l 1,15,-1 - 940 0 l 1,16,-1 - 997 246 l 1,17,18 - 1097 271 1097 271 1192 386.5 c 128,-1,19 - 1287 502 1287 502 1347 668 c 128,-1,20 - 1407 834 1407 834 1407 997 c 0,21,22 - 1407 1171 1407 1171 1326.5 1261.5 c 128,-1,23 - 1246 1352 1246 1352 1110 1352 c 0,24,25 - 1034 1352 1034 1352 955 1317 c 128,-1,26 - 876 1282 876 1282 805 1213.5 c 128,-1,27 - 734 1145 734 1145 678.5 1053.5 c 128,-1,28 - 623 962 623 962 590 839.5 c 128,-1,29 - 557 717 557 717 557 584 c 0,30,31 - 557 453 557 453 599 361 c 128,-1,32 - 641 269 641 269 717 246 c 1,33,-1 - 659 0 l 1,34,-1 - 250 0 l 1,35,-1 - 274 102 l 1,36,-1 - 428 102 l 1,37,-1 - 449 195 l 1,38,39 - 390 268 390 268 347.5 382.5 c 128,-1,40 - 305 497 305 497 305 625 c 0,41,42 - 305 742 305 742 336.5 848.5 c 128,-1,43 - 368 955 368 955 421 1037 c 128,-1,44 - 474 1119 474 1119 544 1188.5 c 128,-1,45 - 614 1258 614 1258 691 1306 c 128,-1,46 - 768 1354 768 1354 848.5 1388 c 128,-1,47 - 929 1422 929 1422 1001.5 1438 c 128,-1,48 - 1074 1454 1074 1454 1135 1454 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Alphatonos -Encoding: 902 902 991 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 291 1014 1255> 410 102<571 952> 1274 379 1393 41<860 1070> -VStem: 418 369 -LayerCount: 2 -Fore -Refer: 964 900 N 1 0 0 1 0 0 2 -Refer: 967 913 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Epsilontonos -Encoding: 904 904 992 -Width: 1372 -VWidth: 0 -Flags: W -HStem: 0 102<782 1352> 799 102<967 1319> 1274 379 1331 102<1065 1626> -VStem: 418 369 -LayerCount: 2 -Fore -Refer: 964 900 N 1 0 0 1 0 0 2 -Refer: 971 917 N 1 0 0 1 410 0 2 -Validated: 1 -EndChar - -StartChar: Etatonos -Encoding: 905 905 993 -Width: 1599 -VWidth: 0 -Flags: W -HStem: 0 43<492 767 1233 1509> 717 102<946 1399> 1274 379 1393 41<814 1090 1555 1831> -VStem: 418 369 -LayerCount: 2 -Fore -Refer: 964 900 N 1 0 0 1 0 0 2 -Refer: 973 919 N 1 0 0 1 410 0 2 -Validated: 1 -EndChar - -StartChar: Iotatonos -Encoding: 906 906 994 -Width: 868 -VWidth: 0 -Flags: W -HStem: 0 43<502 777> 1274 379 1393 41<824 1100> -VStem: 418 369 502 598 -LayerCount: 2 -Fore -Refer: 964 900 N 1 0 0 1 0 0 2 -Refer: 975 921 N 1 0 0 1 410 0 2 -Validated: 1 -EndChar - -StartChar: Omicrontonos -Encoding: 908 908 995 -Width: 1574 -VWidth: 0 -Flags: W -HStem: -20 102<776 1048> 1274 379 1352 102<1027 1327> -VStem: 403 258<251 749> 418 369 1440 256<698 1177> -LayerCount: 2 -Fore -Refer: 964 900 N 1 0 0 1 0 0 2 -Refer: 981 927 N 1 0 0 1 205 0 2 -Validated: 1 -EndChar - -StartChar: Upsilontonos -Encoding: 910 910 996 -Width: 1484 -VWidth: 0 -Flags: W -HStem: 0 43<815 1091> 1274 379 1393 41<786 1056 1522 1737> -VStem: 418 369 -LayerCount: 2 -Fore -Refer: 964 900 N 1 0 0 1 0 0 2 -Refer: 986 933 N 1 0 0 1 410 0 2 -Validated: 1 -EndChar - -StartChar: Omegatonos -Encoding: 911 911 997 -Width: 1730 -VWidth: 0 -Flags: W -HStem: 0 102<397 551 1343 1473> 1274 379 1352 102<1062 1391> -VStem: 418 369 428 252<380 874> 1530 250<719 1168> -LayerCount: 2 -Fore -Refer: 964 900 N 1 0 0 1 0 0 2 -Refer: 990 937 N 1 0 0 1 123 0 2 -Validated: 1 -EndChar - -StartChar: Iotadieresis -Encoding: 938 938 998 -Width: 458 -VWidth: 0 -Flags: W -HStem: 0 43<92 368> 1393 41<414 690> 1516 170<385 516 672 803> -VStem: 92 598 346 209 633 209 -LayerCount: 2 -Fore -Refer: 151 207 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Upsilondieresis -Encoding: 939 939 999 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<406 681> 1393 41<377 646 1112 1327> 1516 170<694 825 981 1112> -VStem: 655 209 942 209 -LayerCount: 2 -Fore -Refer: 272 376 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: alpha -Encoding: 945 945 1000 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> -VStem: 154 246<136 485> 690 262<96 373> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: beta -Encoding: 946 946 1001 -Width: 1271 -VWidth: 0 -Flags: W -HStem: -20 102<560 836> 645 102<594 912> 1229 102<783 1017> -VStem: 987 248<260 554> 1044 248<904 1189> -LayerCount: 2 -Fore -SplineSet -705 82 m 0,0,1 - 791 82 791 82 857.5 142.5 c 128,-1,2 - 924 203 924 203 955.5 287.5 c 128,-1,3 - 987 372 987 372 987 459 c 0,4,5 - 987 645 987 645 776 645 c 2,6,-1 - 571 645 l 1,7,-1 - 485 279 l 2,8,9 - 483 273 483 273 483 258 c 0,10,11 - 483 196 483 196 543.5 139 c 128,-1,12 - 604 82 604 82 705 82 c 0,0,1 -649 985 m 2,13,-1 - 594 748 l 1,14,-1 - 774 748 l 2,15,16 - 844 748 844 748 898.5 781.5 c 128,-1,17 - 953 815 953 815 983.5 867 c 128,-1,18 - 1014 919 1014 919 1029 973.5 c 128,-1,19 - 1044 1028 1044 1028 1044 1079 c 0,20,21 - 1044 1144 1044 1144 1016 1186.5 c 128,-1,22 - 988 1229 988 1229 922 1229 c 0,23,24 - 813 1229 813 1229 742 1154 c 128,-1,25 - 671 1079 671 1079 649 985 c 2,13,-1 -72 -410 m 1,26,-1 - 381 930 l 2,27,28 - 406 1040 406 1040 485.5 1132.5 c 128,-1,29 - 565 1225 565 1225 676.5 1278 c 128,-1,30 - 788 1331 788 1331 905 1331 c 0,31,32 - 1091 1331 1091 1331 1191.5 1250 c 128,-1,33 - 1292 1169 1292 1169 1292 1042 c 0,34,35 - 1292 984 1292 984 1260 923.5 c 128,-1,36 - 1228 863 1228 863 1183 820.5 c 128,-1,37 - 1138 778 1138 778 1093.5 748.5 c 128,-1,38 - 1049 719 1049 719 1020 713 c 1,39,40 - 1113 671 1113 671 1174 582 c 128,-1,41 - 1235 493 1235 493 1235 408 c 0,42,43 - 1235 282 1235 282 1148.5 182 c 128,-1,44 - 1062 82 1062 82 927.5 31 c 128,-1,45 - 793 -20 793 -20 641 -20 c 0,46,47 - 509 -20 509 -20 430 35 c 1,48,-1 - 328 -410 l 1,49,-1 - 72 -410 l 1,26,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: gamma -Encoding: 947 947 1002 -Width: 874 -VWidth: 0 -Flags: W -HStem: -418 102<272 404> 860 41<227 477 802 1071> -VStem: 129 219<-315 -113> 438 229<-274 -25> -LayerCount: 2 -Fore -Refer: 615 611 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: delta -Encoding: 948 948 1003 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -29 102<539 795> 827 98<670 795> 1276 102<762 1092> -VStem: 195 258<167 564> 483 256<1108 1250> 1030 254<363 753> -LayerCount: 2 -Fore -SplineSet -801 827 m 0,0,1 - 741 827 741 827 679 790.5 c 128,-1,2 - 617 754 617 754 567 692.5 c 128,-1,3 - 517 631 517 631 485 541 c 128,-1,4 - 453 451 453 451 453 352 c 0,5,6 - 453 225 453 225 508 149.5 c 128,-1,7 - 563 74 563 74 639 74 c 128,-1,8 - 715 74 715 74 786 113.5 c 128,-1,9 - 857 153 857 153 911 221 c 128,-1,10 - 965 289 965 289 997.5 388 c 128,-1,11 - 1030 487 1030 487 1030 600 c 0,12,13 - 1030 714 1030 714 969.5 770.5 c 128,-1,14 - 909 827 909 827 801 827 c 0,0,1 -795 926 m 1,15,16 - 776 939 776 939 716 965.5 c 128,-1,17 - 656 992 656 992 609 1015 c 128,-1,18 - 562 1038 562 1038 522.5 1079 c 128,-1,19 - 483 1120 483 1120 483 1165 c 0,20,21 - 483 1223 483 1223 518.5 1265 c 128,-1,22 - 554 1307 554 1307 619 1331 c 128,-1,23 - 684 1355 684 1355 766 1366.5 c 128,-1,24 - 848 1378 848 1378 950 1378 c 0,25,26 - 1025 1378 1025 1378 1082.5 1365.5 c 128,-1,27 - 1140 1353 1140 1353 1177.5 1329 c 128,-1,28 - 1215 1305 1215 1305 1238 1279 c 128,-1,29 - 1261 1253 1261 1253 1280 1217 c 1,30,-1 - 1135 1151 l 1,31,32 - 1129 1163 1129 1163 1120 1184 c 128,-1,33 - 1111 1205 1111 1205 1105.5 1215 c 128,-1,34 - 1100 1225 1100 1225 1086.5 1239 c 128,-1,35 - 1073 1253 1073 1253 1055 1259.5 c 128,-1,36 - 1037 1266 1037 1266 1005 1271 c 128,-1,37 - 973 1276 973 1276 928 1276 c 0,38,39 - 866 1276 866 1276 825.5 1267 c 128,-1,40 - 785 1258 785 1258 767.5 1240.5 c 128,-1,41 - 750 1223 750 1223 744.5 1207 c 128,-1,42 - 739 1191 739 1191 739 1167 c 0,43,44 - 739 1139 739 1139 766 1118.5 c 128,-1,45 - 793 1098 793 1098 877 1053 c 0,46,47 - 885 1049 885 1049 902 1040 c 0,48,49 - 951 1014 951 1014 977.5 1000 c 128,-1,50 - 1004 986 1004 986 1050.5 957 c 128,-1,51 - 1097 928 1097 928 1124 905 c 128,-1,52 - 1151 882 1151 882 1185.5 846 c 128,-1,53 - 1220 810 1220 810 1238.5 774.5 c 128,-1,54 - 1257 739 1257 739 1270.5 691.5 c 128,-1,55 - 1284 644 1284 644 1284 592 c 0,56,57 - 1284 496 1284 496 1259 406.5 c 128,-1,58 - 1234 317 1234 317 1180.5 237.5 c 128,-1,59 - 1127 158 1127 158 1050 99 c 128,-1,60 - 973 40 973 40 861.5 5.5 c 128,-1,61 - 750 -29 750 -29 616 -29 c 0,62,63 - 405 -29 405 -29 300 67 c 128,-1,64 - 195 163 195 163 195 334 c 0,65,66 - 195 458 195 458 236.5 561.5 c 128,-1,67 - 278 665 278 665 343 730.5 c 128,-1,68 - 408 796 408 796 489.5 842 c 128,-1,69 - 571 888 571 888 648 907 c 128,-1,70 - 725 926 725 926 795 926 c 1,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: epsilon -Encoding: 949 949 1004 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<380 603> 451 102<538 682> 819 102<559 750> -VStem: 113 254<93 347> 268 254<570 786> -LayerCount: 2 -Fore -Refer: 609 603 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: zeta -Encoding: 950 950 1005 -Width: 1034 -VWidth: 0 -Flags: W -HStem: -10 104<496 660> 1249 102<463 995> -VStem: 209 256<124 524> 664 260<-231 -15> -LayerCount: 2 -Fore -SplineSet -592 -10 m 0,0,1 - 580 -10 580 -10 529 -13 c 128,-1,2 - 478 -16 478 -16 465 -16 c 0,3,4 - 427 -16 427 -16 394.5 -11 c 128,-1,5 - 362 -6 362 -6 326.5 11 c 128,-1,6 - 291 28 291 28 266.5 56.5 c 128,-1,7 - 242 85 242 85 225.5 135.5 c 128,-1,8 - 209 186 209 186 209 254 c 0,9,10 - 209 354 209 354 231 446.5 c 128,-1,11 - 253 539 253 539 290 616.5 c 128,-1,12 - 327 694 327 694 385 768.5 c 128,-1,13 - 443 843 443 843 506 904 c 128,-1,14 - 569 965 569 965 653.5 1028 c 128,-1,15 - 738 1091 738 1091 816.5 1141 c 128,-1,16 - 895 1191 895 1191 995 1249 c 1,17,-1 - 440 1249 l 1,18,-1 - 463 1352 l 1,19,-1 - 1235 1352 l 1,20,-1 - 1214 1264 l 1,21,22 - 1101 1206 1101 1206 995.5 1131.5 c 128,-1,23 - 890 1057 890 1057 792.5 959.5 c 128,-1,24 - 695 862 695 862 623 755.5 c 128,-1,25 - 551 649 551 649 508 522.5 c 128,-1,26 - 465 396 465 396 465 268 c 0,27,28 - 465 184 465 184 494 139 c 128,-1,29 - 523 94 523 94 580 94 c 0,30,31 - 587 94 587 94 652.5 96 c 128,-1,32 - 718 98 718 98 739 98 c 0,33,34 - 816 98 816 98 870 54.5 c 128,-1,35 - 924 11 924 11 924 -86 c 0,36,37 - 924 -158 924 -158 900 -212.5 c 128,-1,38 - 876 -267 876 -267 839.5 -299 c 128,-1,39 - 803 -331 803 -331 746 -353 c 128,-1,40 - 689 -375 689 -375 638.5 -384 c 128,-1,41 - 588 -393 588 -393 520 -399 c 1,42,-1 - 537 -291 l 1,43,44 - 664 -239 664 -239 664 -86 c 0,45,46 - 664 -40 664 -40 645.5 -25 c 128,-1,47 - 627 -10 627 -10 592 -10 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eta -Encoding: 951 951 1006 -Width: 968 -VWidth: 0 -Flags: W -HStem: 0 43<82 347> 819 102<123 298 513 753> -VStem: 47 70<770 809> 244 260<527 780> 770 246<431 804> -LayerCount: 2 -Fore -Refer: 648 414 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: theta -Encoding: 952 952 1007 -Width: 1179 -VWidth: 0 -Flags: W -HStem: -20 102<517 732> 627 102<545 952> 1270 102<774 987> -VStem: 244 231<170 614> 1024 231<751 1193> -LayerCount: 2 -Fore -SplineSet -1219 676 m 1,0,1 - 1175 488 1175 488 1104 349 c 128,-1,2 - 1033 210 1033 210 945.5 131.5 c 128,-1,3 - 858 53 858 53 765 16.5 c 128,-1,4 - 672 -20 672 -20 569 -20 c 0,5,6 - 509 -20 509 -20 453.5 3.5 c 128,-1,7 - 398 27 398 27 350 75 c 128,-1,8 - 302 123 302 123 273 209 c 128,-1,9 - 244 295 244 295 244 408 c 0,10,11 - 244 534 244 534 276 676 c 1,12,13 - 311 826 311 826 368.5 947.5 c 128,-1,14 - 426 1069 426 1069 490.5 1146.5 c 128,-1,15 - 555 1224 555 1224 628 1276.5 c 128,-1,16 - 701 1329 701 1329 766 1350.5 c 128,-1,17 - 831 1372 831 1372 891 1372 c 0,18,19 - 971 1372 971 1372 1035.5 1350 c 128,-1,20 - 1100 1328 1100 1328 1150 1281 c 128,-1,21 - 1200 1234 1200 1234 1227.5 1153.5 c 128,-1,22 - 1255 1073 1255 1073 1255 963 c 0,23,24 - 1255 836 1255 836 1219 676 c 1,0,1 -952 627 m 1,25,-1 - 522 627 l 1,26,27 - 475 407 475 407 475 289 c 0,28,29 - 475 176 475 176 512 129 c 128,-1,30 - 549 82 549 82 623 82 c 0,31,32 - 690 82 690 82 743 129 c 128,-1,33 - 796 176 796 176 848.5 297.5 c 128,-1,34 - 901 419 901 419 952 627 c 1,25,-1 -545 729 m 1,35,-1 - 975 729 l 1,36,37 - 1024 958 1024 958 1024 1079 c 0,38,39 - 1024 1181 1024 1181 992 1225.5 c 128,-1,40 - 960 1270 960 1270 897 1270 c 0,41,42 - 822 1270 822 1270 764.5 1223 c 128,-1,43 - 707 1176 707 1176 651.5 1055.5 c 128,-1,44 - 596 935 596 935 545 729 c 1,35,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: iota -Encoding: 953 953 1008 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> -VStem: 133 254<83 364> 520 70<96 131> -LayerCount: 2 -Fore -Refer: 112 305 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: kappa -Encoding: 954 954 1009 -Width: 917 -VWidth: 0 -Flags: W -HStem: 0 43<82 347 608 848> 860 41<281 547 745 1020> -LayerCount: 2 -Fore -Refer: 305 312 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: lambda -Encoding: 955 955 1010 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 43G<45 219 695 926> -LayerCount: 2 -Fore -SplineSet -741 1352 m 9,0,-1 - 926 0 l 1,1,-1 - 700 0 l 1,2,-1 - 606 696 l 1,3,-1 - 195 0 l 1,4,-1 - 45 0 l 1,5,-1 - 582 901 l 1,6,-1 - 518 1352 l 1,7,-1 - 741 1352 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: mu -Encoding: 956 956 1011 -Width: 972 -VWidth: 0 -Flags: W -HStem: -20 102<425 640> 0 43<627 892> 860 41<281 547 826 1092> -LayerCount: 2 -Fore -Refer: 345 181 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: nu -Encoding: 957 957 1012 -Width: 931 -VWidth: 0 -Flags: W -HStem: 0 43<384 577> 860 41<270 497 901 1090> -LayerCount: 2 -Fore -Refer: 21 118 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: xi -Encoding: 958 958 1013 -Width: 1048 -VWidth: 0 -Flags: W -HStem: -20 102<457 642> -10 109<535 749> 696 102<660 811> 1249 102<348 502 717 1122> -VStem: 139 260<140 474> 346 260<853 1135> 666 272<-225 -11> -LayerCount: 2 -Fore -SplineSet -346 973 m 0,0,1 - 346 1067 346 1067 385 1132 c 128,-1,2 - 424 1197 424 1197 502 1249 c 1,3,-1 - 326 1249 l 1,4,-1 - 348 1352 l 1,5,-1 - 1145 1352 l 1,6,-1 - 1122 1249 l 1,7,-1 - 844 1249 l 2,8,9 - 750 1249 750 1249 678 1169.5 c 128,-1,10 - 606 1090 606 1090 606 997 c 0,11,12 - 606 961 606 961 614 929 c 128,-1,13 - 622 897 622 897 639.5 866.5 c 128,-1,14 - 657 836 657 836 693 817.5 c 128,-1,15 - 729 799 729 799 778 799 c 2,16,-1 - 836 799 l 1,17,-1 - 811 696 l 1,18,-1 - 739 696 l 2,19,20 - 646 696 646 696 566 635 c 128,-1,21 - 486 574 486 574 442.5 485 c 128,-1,22 - 399 396 399 396 399 307 c 0,23,24 - 399 268 399 268 406 231.5 c 128,-1,25 - 413 195 413 195 429.5 160 c 128,-1,26 - 446 125 446 125 477.5 103.5 c 128,-1,27 - 509 82 509 82 553 82 c 0,28,29 - 583 82 583 82 618 90 c 128,-1,30 - 653 98 653 98 674 98 c 0,31,32 - 725 98 725 98 760 95 c 128,-1,33 - 795 92 795 92 831 81.5 c 128,-1,34 - 867 71 867 71 889 53 c 128,-1,35 - 911 35 911 35 924.5 3 c 128,-1,36 - 938 -29 938 -29 938 -74 c 0,37,38 - 938 -384 938 -384 522 -399 c 1,39,-1 - 539 -291 l 1,40,41 - 597 -268 597 -268 631.5 -214 c 128,-1,42 - 666 -160 666 -160 666 -78 c 0,43,44 - 666 -10 666 -10 623 -10 c 0,45,46 - 610 -10 610 -10 577 -15 c 128,-1,47 - 544 -20 544 -20 512 -20 c 0,48,49 - 343 -20 343 -20 241 61 c 128,-1,50 - 139 142 139 142 139 283 c 0,51,52 - 139 372 139 372 171.5 453 c 128,-1,53 - 204 534 204 534 257.5 592.5 c 128,-1,54 - 311 651 311 651 371.5 693 c 128,-1,55 - 432 735 432 735 496 758 c 1,56,57 - 459 781 459 781 441 794 c 128,-1,58 - 423 807 423 807 396.5 833.5 c 128,-1,59 - 370 860 370 860 358 894.5 c 128,-1,60 - 346 929 346 929 346 973 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: omicron -Encoding: 959 959 1014 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> -VStem: 147 244<117 508> 821 244<380 773> -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: pi -Encoding: 960 960 1015 -Width: 1228 -VWidth: 0 -Flags: W -HStem: -20 102<964 1173> 0 43G<154 417> 799 102<270 340 594 936 1190 1292> -VStem: 793 254<83 367> 1180 70<96 131> -LayerCount: 2 -Fore -SplineSet -1069 276 m 2,0,1 - 1047 182 1047 182 1047 143 c 0,2,3 - 1047 82 1047 82 1102 82 c 0,4,5 - 1126 82 1126 82 1148.5 98 c 128,-1,6 - 1171 114 1171 114 1180 131 c 1,7,-1 - 1249 131 l 1,8,9 - 1235 73 1235 73 1175.5 26.5 c 128,-1,10 - 1116 -20 1116 -20 1051 -20 c 0,11,12 - 928 -20 928 -20 860.5 31.5 c 128,-1,13 - 793 83 793 83 793 164 c 0,14,15 - 793 189 793 189 799 213 c 2,16,-1 - 936 799 l 1,17,-1 - 594 799 l 1,18,-1 - 408 0 l 1,19,-1 - 154 0 l 1,20,-1 - 340 799 l 1,21,-1 - 246 799 l 1,22,-1 - 270 901 l 1,23,-1 - 1317 901 l 1,24,-1 - 1292 799 l 1,25,-1 - 1190 799 l 1,26,-1 - 1069 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: rho -Encoding: 961 961 1016 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -20 102<495 696> 819 102<620 856> -VStem: 879 244<387 784> -LayerCount: 2 -Fore -SplineSet -401 4 m 1,0,-1 - 307 -410 l 1,1,-1 - 51 -410 l 1,2,-1 - 268 532 l 2,3,4 - 291 629 291 629 331 701 c 128,-1,5 - 371 773 371 773 418 814.5 c 128,-1,6 - 465 856 465 856 526.5 881 c 128,-1,7 - 588 906 588 906 644 914 c 128,-1,8 - 700 922 700 922 768 922 c 0,9,10 - 951 922 951 922 1036.5 835.5 c 128,-1,11 - 1122 749 1122 749 1122 602 c 0,12,13 - 1122 472 1122 472 1083 359 c 128,-1,14 - 1044 246 1044 246 972.5 161.5 c 128,-1,15 - 901 77 901 77 792.5 28.5 c 128,-1,16 - 684 -20 684 -20 551 -20 c 0,17,18 - 466 -20 466 -20 401 4 c 1,0,-1 -500 430 m 1,19,20 - 469 287 469 287 469 227 c 0,21,22 - 469 157 469 157 500 119.5 c 128,-1,23 - 531 82 531 82 604 82 c 0,24,25 - 663 82 663 82 716.5 142.5 c 128,-1,26 - 770 203 770 203 804.5 293.5 c 128,-1,27 - 839 384 839 384 859 484 c 128,-1,28 - 879 584 879 584 879 668 c 0,29,30 - 879 819 879 819 774 819 c 0,31,32 - 718 819 718 819 684 811 c 128,-1,33 - 650 803 650 803 621 779 c 128,-1,34 - 592 755 592 755 573.5 712 c 128,-1,35 - 555 669 555 669 539 598 c 2,36,-1 - 500 430 l 1,19,20 -EndSplineSet -Validated: 1 -EndChar - -StartChar: sigma1 -Encoding: 962 962 1017 -Width: 1064 -VWidth: 0 -Flags: W -HStem: 799 102<741 1092> -VStem: 227 274<220 592> 633 287<-242 -33> -LayerCount: 2 -Fore -SplineSet -1116 901 m 1,0,-1 - 1092 799 l 1,1,2 - 1011 799 1011 799 949.5 795 c 128,-1,3 - 888 791 888 791 823.5 780 c 128,-1,4 - 759 769 759 769 713 749.5 c 128,-1,5 - 667 730 667 730 625 697.5 c 128,-1,6 - 583 665 583 665 557.5 619.5 c 128,-1,7 - 532 574 532 574 517 510 c 128,-1,8 - 502 446 502 446 502 365 c 0,9,10 - 502 299 502 299 525 249 c 128,-1,11 - 548 199 548 199 585 169 c 128,-1,12 - 622 139 622 139 666.5 115 c 128,-1,13 - 711 91 711 91 755.5 70 c 128,-1,14 - 800 49 800 49 837 25.5 c 128,-1,15 - 874 2 874 2 897 -35 c 128,-1,16 - 920 -72 920 -72 920 -121 c 0,17,18 - 920 -156 920 -156 907 -187.5 c 128,-1,19 - 894 -219 894 -219 876.5 -242.5 c 128,-1,20 - 859 -266 859 -266 827 -289 c 128,-1,21 - 795 -312 795 -312 770.5 -326 c 128,-1,22 - 746 -340 746 -340 705.5 -356 c 128,-1,23 - 665 -372 665 -372 644 -379.5 c 128,-1,24 - 623 -387 623 -387 583.5 -399 c 128,-1,25 - 544 -411 544 -411 535 -414 c 1,26,-1 - 532 -307 l 1,27,28 - 633 -255 633 -255 633 -141 c 0,29,30 - 633 -96 633 -96 610.5 -59 c 128,-1,31 - 588 -22 588 -22 552.5 5 c 128,-1,32 - 517 32 517 32 473.5 57 c 128,-1,33 - 430 82 430 82 386.5 111 c 128,-1,34 - 343 140 343 140 307.5 174 c 128,-1,35 - 272 208 272 208 249.5 259.5 c 128,-1,36 - 227 311 227 311 227 375 c 0,37,38 - 227 469 227 469 252.5 545.5 c 128,-1,39 - 278 622 278 622 321 676 c 128,-1,40 - 364 730 364 730 430.5 770.5 c 128,-1,41 - 497 811 497 811 569.5 835.5 c 128,-1,42 - 642 860 642 860 736 875 c 128,-1,43 - 830 890 830 890 919.5 895.5 c 128,-1,44 - 1009 901 1009 901 1116 901 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: sigma -Encoding: 963 963 1018 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -20 102<449 677> 799 102<604 822 1014 1217> -VStem: 174 244<113 488> 846 244<382 759> -LayerCount: 2 -Fore -SplineSet -174 293 m 0,0,1 - 174 424 174 424 225.5 541 c 128,-1,2 - 277 658 277 658 357 735 c 128,-1,3 - 437 812 437 812 533 856.5 c 128,-1,4 - 629 901 629 901 721 901 c 2,5,-1 - 1241 901 l 1,6,-1 - 1217 799 l 1,7,-1 - 1014 799 l 1,8,9 - 1090 720 1090 720 1090 580 c 0,10,11 - 1090 512 1090 512 1073 440 c 0,12,13 - 1019 212 1019 212 867.5 96 c 128,-1,14 - 716 -20 716 -20 508 -20 c 0,15,16 - 346 -20 346 -20 260 61.5 c 128,-1,17 - 174 143 174 143 174 293 c 0,0,1 -727 799 m 0,18,19 - 618 799 618 799 554 709 c 128,-1,20 - 490 619 490 619 449 440 c 0,21,22 - 418 306 418 306 418 240 c 0,23,24 - 418 161 418 161 451.5 121.5 c 128,-1,25 - 485 82 485 82 561 82 c 0,26,27 - 613 82 613 82 654 106.5 c 128,-1,28 - 695 131 695 131 725 180.5 c 128,-1,29 - 755 230 755 230 776 291.5 c 128,-1,30 - 797 353 797 353 817 440 c 0,31,32 - 846 569 846 569 846 647 c 0,33,34 - 846 799 846 799 727 799 c 0,18,19 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tau -Encoding: 964 964 1019 -Width: 937 -VWidth: 0 -Flags: W -HStem: -20 102<561 769> 799 102<262 532 786 1077> -VStem: 389 254<83 367> 776 70<96 131> -LayerCount: 2 -Fore -SplineSet -666 276 m 2,0,1 - 643 178 643 178 643 143 c 0,2,3 - 643 82 643 82 698 82 c 0,4,5 - 722 82 722 82 744.5 98 c 128,-1,6 - 767 114 767 114 776 131 c 1,7,-1 - 846 131 l 1,8,9 - 832 73 832 73 772 26.5 c 128,-1,10 - 712 -20 712 -20 647 -20 c 0,11,12 - 524 -20 524 -20 456.5 31.5 c 128,-1,13 - 389 83 389 83 389 164 c 0,14,15 - 389 189 389 189 395 213 c 2,16,-1 - 532 799 l 1,17,-1 - 238 799 l 1,18,-1 - 262 901 l 1,19,-1 - 1102 901 l 1,20,-1 - 1077 799 l 1,21,-1 - 786 799 l 1,22,-1 - 666 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: upsilon -Encoding: 965 965 1020 -Width: 1159 -VWidth: 0 -Flags: W -HStem: -20 102<486 728> 860 41G<328 594 974 1239> -VStem: 215 238<126 486> -LayerCount: 2 -Fore -SplineSet -594 901 m 1,0,-1 - 489 451 l 2,1,2 - 453 293 453 293 453 229 c 0,3,4 - 453 155 453 155 488.5 118.5 c 128,-1,5 - 524 82 524 82 610 82 c 0,6,7 - 666 82 666 82 709.5 108 c 128,-1,8 - 753 134 753 134 784.5 186 c 128,-1,9 - 816 238 816 238 837.5 300.5 c 128,-1,10 - 859 363 859 363 879 451 c 2,11,-1 - 983 901 l 1,12,-1 - 1239 901 l 1,13,-1 - 1135 451 l 1,14,15 - 1081 223 1081 223 923 101.5 c 128,-1,16 - 765 -20 765 -20 557 -20 c 0,17,18 - 394 -20 394 -20 304.5 67 c 128,-1,19 - 215 154 215 154 215 307 c 0,20,21 - 215 375 215 375 233 451 c 2,22,-1 - 338 901 l 1,23,-1 - 594 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: phi -Encoding: 966 966 1021 -Width: 1486 -VWidth: 0 -Flags: W -HStem: -16 111<895 1009> 819 102<1108 1257> -VStem: 180 260<212 531> 1280 244<418 790> -LayerCount: 2 -Fore -SplineSet -895 94 m 1,0,1 - 1073 135 1073 135 1176.5 291 c 128,-1,2 - 1280 447 1280 447 1280 670 c 0,3,4 - 1280 819 1280 819 1186 819 c 0,5,6 - 1131 819 1131 819 1078 742 c 128,-1,7 - 1025 665 1025 665 987 494 c 1,8,-1 - 895 94 l 1,0,1 -868 -16 m 1,9,-1 - 778 -410 l 1,10,-1 - 522 -410 l 1,11,-1 - 612 -14 l 1,12,13 - 396 7 396 7 288 98 c 128,-1,14 - 180 189 180 189 180 338 c 0,15,16 - 180 416 180 416 205.5 488.5 c 128,-1,17 - 231 561 231 561 270.5 615.5 c 128,-1,18 - 310 670 310 670 365 720 c 128,-1,19 - 420 770 420 770 470.5 803.5 c 128,-1,20 - 521 837 521 837 578 866 c 1,21,-1 - 614 758 l 1,22,23 - 541 705 541 705 490.5 595 c 128,-1,24 - 440 485 440 485 440 362 c 0,25,26 - 440 266 440 266 493 199 c 128,-1,27 - 546 132 546 132 641 102 c 1,28,-1 - 731 494 l 2,29,30 - 782 712 782 712 900.5 817 c 128,-1,31 - 1019 922 1019 922 1210 922 c 0,32,33 - 1358 922 1358 922 1441 840 c 128,-1,34 - 1524 758 1524 758 1524 606 c 0,35,36 - 1524 319 1524 319 1351.5 164.5 c 128,-1,37 - 1179 10 1179 10 868 -16 c 1,9,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: chi -Encoding: 967 967 1022 -Width: 974 -VWidth: 0 -Flags: W -HStem: 0 43<61 276 636 903> 860 41<276 542 822 1034> -LayerCount: 2 -Fore -Refer: 23 120 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: psi -Encoding: 968 968 1023 -Width: 1456 -VWidth: 0 -Flags: W -HStem: 860 41G<328 594 806 1071 1270 1536> -VStem: 231 256<196 635> -LayerCount: 2 -Fore -SplineSet -594 901 m 1,0,-1 - 506 522 l 1,1,2 - 487 435 487 435 487 371 c 0,3,4 - 487 271 487 271 525 203.5 c 128,-1,5 - 563 136 563 136 631 106 c 1,6,-1 - 815 901 l 1,7,-1 - 1071 901 l 1,8,-1 - 887 111 l 1,9,10 - 989 156 989 156 1072.5 261 c 128,-1,11 - 1156 366 1156 366 1192 522 c 2,12,-1 - 1280 901 l 1,13,-1 - 1536 901 l 1,14,-1 - 1448 522 l 2,15,16 - 1421 406 1421 406 1360 311.5 c 128,-1,17 - 1299 217 1299 217 1217 155 c 128,-1,18 - 1135 93 1135 93 1046.5 54 c 128,-1,19 - 958 15 958 15 862 -4 c 1,20,-1 - 768 -410 l 1,21,-1 - 512 -410 l 1,22,-1 - 602 -14 l 1,23,24 - 526 -3 526 -3 461.5 25 c 128,-1,25 - 397 53 397 53 344 99 c 128,-1,26 - 291 145 291 145 261 216 c 128,-1,27 - 231 287 231 287 231 377 c 0,28,29 - 231 438 231 438 250 522 c 2,30,-1 - 338 901 l 1,31,-1 - 594 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: omega -Encoding: 969 969 1024 -Width: 1579 -VWidth: 0 -Flags: W -HStem: -20 102<453 631 1011 1176> 860 41G<412 700 1300 1573> -VStem: 174 248<117 487> 1360 266<384 860> -LayerCount: 2 -Fore -SplineSet -1096 762 m 1,0,-1 - 1057 592 l 2,1,2 - 997 327 997 327 997 215 c 0,3,4 - 997 82 997 82 1069 82 c 0,5,6 - 1149 82 1149 82 1217 161 c 128,-1,7 - 1285 240 1285 240 1322.5 363 c 128,-1,8 - 1360 486 1360 486 1360 618 c 0,9,10 - 1360 647 1360 647 1357.5 675.5 c 128,-1,11 - 1355 704 1355 704 1350.5 729.5 c 128,-1,12 - 1346 755 1346 755 1341.5 775 c 128,-1,13 - 1337 795 1337 795 1330 817.5 c 128,-1,14 - 1323 840 1323 840 1319 850.5 c 128,-1,15 - 1315 861 1315 861 1308 880 c 128,-1,16 - 1301 899 1301 899 1300 901 c 1,17,-1 - 1561 901 l 1,18,19 - 1564 895 1564 895 1574.5 875 c 128,-1,20 - 1585 855 1585 855 1589.5 845 c 128,-1,21 - 1594 835 1594 835 1602.5 812.5 c 128,-1,22 - 1611 790 1611 790 1615 771 c 128,-1,23 - 1619 752 1619 752 1622.5 723.5 c 128,-1,24 - 1626 695 1626 695 1626 664 c 0,25,26 - 1626 467 1626 467 1556.5 312.5 c 128,-1,27 - 1487 158 1487 158 1354.5 69 c 128,-1,28 - 1222 -20 1222 -20 1047 -20 c 0,29,30 - 884 -20 884 -20 815 102 c 1,31,32 - 690 -20 690 -20 528 -20 c 0,33,34 - 352 -20 352 -20 263 63 c 128,-1,35 - 174 146 174 146 174 297 c 0,36,37 - 174 607 174 607 440 901 c 1,38,-1 - 700 901 l 1,39,40 - 674 868 674 868 646.5 830.5 c 128,-1,41 - 619 793 619 793 576 721.5 c 128,-1,42 - 533 650 533 650 501 580.5 c 128,-1,43 - 469 511 469 511 445.5 421 c 128,-1,44 - 422 331 422 331 422 250 c 0,45,46 - 422 82 422 82 551 82 c 0,47,48 - 619 82 619 82 678.5 200.5 c 128,-1,49 - 738 319 738 319 801 592 c 2,50,-1 - 840 762 l 1,51,-1 - 1096 762 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: iotadieresistonos -Encoding: 912 912 1025 -Width: 565 -VWidth: 0 -Flags: W -HStem: -20 102<387 595> 860 41<373 637> 1085 170<201 332 805 936> 1098 379 -VStem: 162 209 215 254<83 364> 453 369 602 70<96 131> 766 209 -LayerCount: 2 -Fore -Refer: 1008 953 N 1 0 0 1 82 0 2 -Refer: 965 901 N 1 0 0 1 -182 -184 2 -Validated: 1 -EndChar - -StartChar: alphatonos -Encoding: 940 940 1026 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 1104 379 -VStem: 154 246<136 485> 690 262<96 373> 721 369 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 1000 945 N 1 0 0 1 0 0 2 -Refer: 964 900 N 1 0 0 1 303 -170 2 -Validated: 1 -EndChar - -StartChar: epsilontonos -Encoding: 941 941 1027 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<319 643> 451 102<466 682> 819 102<490 789> 1085 387 -VStem: 113 168<123 346> 268 164<590 764> 612 406 815 127<732 787> -LayerCount: 2 -Fore -Refer: 1004 949 N 1 0 0 1 0 0 2 -Refer: 964 900 N 1 0 0 1 238 -170 2 -Validated: 1 -EndChar - -StartChar: etatonos -Encoding: 942 942 1028 -Width: 968 -VWidth: 0 -Flags: W -HStem: 0 43<82 347> 819 102<123 298 513 753> 1104 379 -VStem: 47 70<770 809> 244 260<527 780> 606 369 770 246<431 804> -LayerCount: 2 -Fore -Refer: 1006 951 N 1 0 0 1 0 0 2 -Refer: 964 900 N 1 0 0 1 188 -170 2 -Validated: 1 -EndChar - -StartChar: iotatonos -Encoding: 943 943 1029 -Width: 573 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1104 379 -VStem: 133 254<83 364> 350 369 520 70<96 131> -LayerCount: 2 -Fore -Refer: 1008 953 N 1 0 0 1 0 0 2 -Refer: 964 900 N 1 0 0 1 -68 -170 2 -Validated: 1 -EndChar - -StartChar: upsilondieresistonos -Encoding: 944 944 1030 -Width: 1159 -VWidth: 0 -Flags: W -HStem: -20 102<486 728> 860 41<328 594 974 1239> 1085 170<467 598 1071 1202> 1098 379 -VStem: 215 238<126 486> 428 209 719 369 1032 209 -LayerCount: 2 -Fore -Refer: 1020 965 N 1 0 0 1 0 0 2 -Refer: 965 901 S 1 0 0 1 84 -184 2 -Validated: 1 -EndChar - -StartChar: iotadieresis -Encoding: 970 970 1031 -Width: 569 -VWidth: 0 -Flags: W -HStem: -20 102<305 513> 860 41<291 555> 1087 170<283 414 569 700> -VStem: 133 254<83 364> 244 209 520 70<96 131> 530 209 -LayerCount: 2 -Fore -Refer: 1008 953 N 1 0 0 1 0 0 2 -Refer: 368 168 N 1 0 0 1 -98 -182 2 -Validated: 1 -EndChar - -StartChar: upsilondieresis -Encoding: 971 971 1032 -Width: 1159 -VWidth: 0 -Flags: W -HStem: -20 102<486 728> 860 41<328 594 974 1239> 1087 170<635 766 922 1053> -VStem: 215 238<126 486> 596 209 883 209 -LayerCount: 2 -Fore -Refer: 1020 965 N 1 0 0 1 0 0 2 -Refer: 368 168 S 1 0 0 1 254 -182 2 -Validated: 1 -EndChar - -StartChar: omicrontonos -Encoding: 972 972 1033 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<427 637> 819 102<586 795> 1104 379 -VStem: 147 244<117 508> 700 369 821 244<380 773> -LayerCount: 2 -Fore -Refer: 1014 959 N 1 0 0 1 0 0 2 -Refer: 964 900 N 1 0 0 1 283 -170 2 -Validated: 1 -EndChar - -StartChar: upsilontonos -Encoding: 973 973 1034 -Width: 1159 -VWidth: 0 -Flags: W -HStem: -20 102<486 728> 860 41<328 594 974 1239> 1104 379 -VStem: 215 238<126 486> 721 369 -LayerCount: 2 -Fore -Refer: 1020 965 N 1 0 0 1 0 0 2 -Refer: 964 900 N 1 0 0 1 303 -170 2 -Validated: 1 -EndChar - -StartChar: omegatonos -Encoding: 974 974 1035 -Width: 1579 -VWidth: 0 -Flags: W -HStem: -20 102<453 631 1011 1176> 860 41<412 700 1300 1573> 1104 379 -VStem: 174 248<117 487> 928 369 1360 266<384 860> -LayerCount: 2 -Fore -Refer: 1024 969 N 1 0 0 1 0 0 2 -Refer: 964 900 N 1 0 0 1 510 -170 2 -Validated: 1 -EndChar - -StartChar: dagger -Encoding: 8224 8224 1036 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43G<472 498> 932 133<384 500 928 1029> -LayerCount: 2 -Fore -SplineSet -766 967 m 17,0,-1 - 647 309 l 1,1,-1 - 475 0 l 1,2,-1 - 449 311 l 1,3,-1 - 666 965 l 1,4,-1 - 371 932 l 1,5,-1 - 319 997 l 1,6,-1 - 401 1065 l 1,7,-1 - 680 1032 l 1,8,-1 - 674 1286 l 1,9,-1 - 786 1352 l 1,10,-1 - 872 1286 l 1,11,-1 - 780 1032 l 1,12,-1 - 1042 1065 l 1,13,-1 - 1094 999 l 1,14,-1 - 1012 934 l 1,15,-1 - 766 967 l 17,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: daggerdbl -Encoding: 8225 8225 1037 -Width: 952 -VWidth: 0 -Flags: W -HStem: 2 43G<425 549> 289 131<237 337 790 881> 932 133<384 485 928 1029> -LayerCount: 2 -Fore -SplineSet -731 676 m 25,0,-1 - 633 389 l 1,1,-1 - 895 422 l 1,2,-1 - 944 356 l 1,3,-1 - 864 289 l 1,4,-1 - 616 322 l 1,5,-1 - 592 68 l 1,6,-1 - 477 2 l 1,7,-1 - 393 68 l 1,8,-1 - 483 322 l 1,9,-1 - 223 289 l 1,10,-1 - 172 354 l 1,11,-1 - 252 420 l 1,12,-1 - 500 387 l 1,13,-1 - 532 678 l 1,14,-1 - 633 965 l 1,15,-1 - 371 932 l 1,16,-1 - 319 997 l 1,17,-1 - 401 1065 l 1,18,-1 - 647 1032 l 1,19,-1 - 674 1286 l 1,20,-1 - 786 1352 l 1,21,-1 - 872 1286 l 1,22,-1 - 780 1032 l 1,23,-1 - 1042 1065 l 1,24,-1 - 1094 999 l 1,25,-1 - 1012 934 l 1,26,-1 - 766 967 l 1,27,-1 - 731 676 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: perthousand -Encoding: 8240 8240 1038 -Width: 1888 -VWidth: 0 -Flags: W -HStem: 156 109<919 1045 1533 1659> 473 109<945 1071 1559 1685> 729 109<497 623> 1047 109<523 651> -VStem: 293 201<839 1022> 653 201<864 1045> 715 201<265 449> 1073 203<288 472> 1329 201<265 449> 1688 203<288 472> -LayerCount: 2 -Fore -SplineSet -1632 473 m 0,0,1 - 1584 473 1584 473 1557 429 c 128,-1,2 - 1530 385 1530 385 1530 324 c 0,3,4 - 1530 264 1530 264 1585 264 c 0,5,6 - 1633 264 1633 264 1660.5 308.5 c 128,-1,7 - 1688 353 1688 353 1688 414 c 0,8,9 - 1688 473 1688 473 1632 473 c 0,0,1 -1659 582 m 0,10,11 - 1752 582 1752 582 1821 543 c 128,-1,12 - 1890 504 1890 504 1890 420 c 0,13,14 - 1890 349 1890 349 1857 295.5 c 128,-1,15 - 1824 242 1824 242 1772 213 c 128,-1,16 - 1720 184 1720 184 1666.5 170 c 128,-1,17 - 1613 156 1613 156 1561 156 c 0,18,19 - 1502 156 1502 156 1453 169.5 c 128,-1,20 - 1404 183 1404 183 1366.5 221 c 128,-1,21 - 1329 259 1329 259 1329 317 c 0,22,23 - 1329 374 1329 374 1351.5 420.5 c 128,-1,24 - 1374 467 1374 467 1408.5 496.5 c 128,-1,25 - 1443 526 1443 526 1488 546 c 128,-1,26 - 1533 566 1533 566 1575.5 574 c 128,-1,27 - 1618 582 1618 582 1659 582 c 0,10,11 -1018 473 m 0,28,29 - 970 473 970 473 942.5 429 c 128,-1,30 - 915 385 915 385 915 324 c 0,31,32 - 915 264 915 264 971 264 c 0,33,34 - 1019 264 1019 264 1046 308 c 128,-1,35 - 1073 352 1073 352 1073 414 c 0,36,37 - 1073 473 1073 473 1018 473 c 0,28,29 -1044 582 m 0,38,39 - 1087 582 1087 582 1125.5 573.5 c 128,-1,40 - 1164 565 1164 565 1199 547.5 c 128,-1,41 - 1234 530 1234 530 1255 497 c 128,-1,42 - 1276 464 1276 464 1276 420 c 0,43,44 - 1276 349 1276 349 1243 295.5 c 128,-1,45 - 1210 242 1210 242 1158 213 c 128,-1,46 - 1106 184 1106 184 1052 170 c 128,-1,47 - 998 156 998 156 946 156 c 0,48,49 - 887 156 887 156 838 169.5 c 128,-1,50 - 789 183 789 183 752 221 c 128,-1,51 - 715 259 715 259 715 317 c 0,52,53 - 715 374 715 374 737 420.5 c 128,-1,54 - 759 467 759 467 794 496.5 c 128,-1,55 - 829 526 829 526 873.5 546 c 128,-1,56 - 918 566 918 566 960.5 574 c 128,-1,57 - 1003 582 1003 582 1044 582 c 0,38,39 -598 1047 m 0,58,59 - 550 1047 550 1047 522 1002.5 c 128,-1,60 - 494 958 494 958 494 897 c 0,61,62 - 494 838 494 838 549 838 c 0,63,64 - 597 838 597 838 625 882 c 128,-1,65 - 653 926 653 926 653 987 c 0,66,67 - 653 1047 653 1047 598 1047 c 0,58,59 -623 1155 m 0,68,69 - 719 1155 719 1155 786.5 1114 c 128,-1,70 - 854 1073 854 1073 854 989 c 0,71,72 - 854 919 854 919 821 865.5 c 128,-1,73 - 788 812 788 812 735.5 784 c 128,-1,74 - 683 756 683 756 629.5 742.5 c 128,-1,75 - 576 729 576 729 524 729 c 0,76,77 - 431 729 431 729 362 768 c 128,-1,78 - 293 807 293 807 293 891 c 0,79,80 - 293 962 293 962 326 1015.5 c 128,-1,81 - 359 1069 359 1069 411 1098 c 128,-1,82 - 463 1127 463 1127 517 1141 c 128,-1,83 - 571 1155 571 1155 623 1155 c 0,68,69 -205 264 m 1,84,-1 - 1145 1047 l 1,85,-1 - 1364 1047 l 1,86,-1 - 424 264 l 1,87,-1 - 205 264 l 1,84,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tilde -Encoding: 732 732 1039 -Width: 729 -VWidth: 0 -Flags: W -HStem: 1270 141<692 869> 1335 141<493 671> -VStem: 375 612 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 942 0 2 -Validated: 1 -EndChar - -StartChar: trademark -Encoding: 8482 8482 1040 -Width: 1501 -VWidth: 0 -Flags: W -HStem: 899 43G<1270 1313> 1386 47<406 627 760 993> -LayerCount: 2 -Fore -SplineSet -1221 1434 m 1,0,-1 - 1323 1071 l 1,1,-1 - 1595 1434 l 1,2,-1 - 1729 1434 l 1,3,-1 - 1579 786 l 1,4,-1 - 1446 786 l 1,5,-1 - 1554 1257 l 1,6,-1 - 1282 899 l 1,7,-1 - 1180 1257 l 1,8,-1 - 1071 786 l 1,9,-1 - 938 786 l 1,10,-1 - 1087 1434 l 1,11,-1 - 1221 1434 l 1,0,-1 -406 1434 m 1,12,-1 - 1006 1434 l 1,13,-1 - 993 1386 l 1,14,-1 - 760 1386 l 1,15,-1 - 623 786 l 1,16,-1 - 489 786 l 1,17,-1 - 627 1386 l 1,18,-1 - 393 1386 l 1,19,-1 - 406 1434 l 1,12,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: notequal -Encoding: 8800 8800 1041 -Width: 708 -VWidth: 0 -Flags: W -HStem: 0 43G<86 284> 348 102<186 289 524 707> 573 102<238 422 655 760> -LayerCount: 2 -Fore -SplineSet -289 348 m 1,0,-1 - 162 348 l 1,1,-1 - 186 451 l 1,2,-1 - 350 451 l 1,3,-1 - 422 573 l 1,4,-1 - 215 573 l 1,5,-1 - 238 676 l 1,6,-1 - 481 676 l 1,7,-1 - 684 1024 l 1,8,-1 - 858 1024 l 1,9,-1 - 655 676 l 1,10,-1 - 782 676 l 1,11,-1 - 760 573 l 1,12,-1 - 596 573 l 1,13,-1 - 524 451 l 1,14,-1 - 731 451 l 1,15,-1 - 707 348 l 1,16,-1 - 463 348 l 1,17,-1 - 260 0 l 1,18,-1 - 86 0 l 1,19,-1 - 289 348 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: infinity -Encoding: 8734 8734 1042 -Width: 1843 -VWidth: 0 -Flags: W -HStem: 127 102<464 692 1276 1503> 795 102<577 804 1388 1615> -VStem: 170 260<273 611> 1651 260<413 751> -LayerCount: 2 -Fore -SplineSet -1378 229 m 0,0,1 - 1463 229 1463 229 1527 291 c 128,-1,2 - 1591 353 1591 353 1621 444 c 128,-1,3 - 1651 535 1651 535 1651 635 c 0,4,5 - 1651 795 1651 795 1509 795 c 0,6,7 - 1469 795 1469 795 1428 776 c 128,-1,8 - 1387 757 1387 757 1338 714 c 128,-1,9 - 1289 671 1289 671 1255 636.5 c 128,-1,10 - 1221 602 1221 602 1160 535 c 0,11,12 - 1146 520 1146 520 1139 512 c 1,13,14 - 1204 367 1204 367 1236 320 c 0,15,16 - 1298 229 1298 229 1378 229 c 0,0,1 -1532 897 m 0,17,18 - 1633 897 1633 897 1717 865.5 c 128,-1,19 - 1801 834 1801 834 1856 765 c 128,-1,20 - 1911 696 1911 696 1911 600 c 0,21,22 - 1911 507 1911 507 1875.5 427 c 128,-1,23 - 1840 347 1840 347 1782 293 c 128,-1,24 - 1724 239 1724 239 1650.5 200.5 c 128,-1,25 - 1577 162 1577 162 1501.5 144.5 c 128,-1,26 - 1426 127 1426 127 1354 127 c 0,27,28 - 1231 127 1231 127 1150.5 191.5 c 128,-1,29 - 1070 256 1070 256 1008 371 c 1,30,31 - 894 257 894 257 782 192 c 128,-1,32 - 670 127 670 127 547 127 c 0,33,34 - 472 127 472 127 405.5 145.5 c 128,-1,35 - 339 164 339 164 285.5 199.5 c 128,-1,36 - 232 235 232 235 201 293 c 128,-1,37 - 170 351 170 351 170 424 c 0,38,39 - 170 517 170 517 205.5 597 c 128,-1,40 - 241 677 241 677 298.5 731 c 128,-1,41 - 356 785 356 785 429 823.5 c 128,-1,42 - 502 862 502 862 577.5 879.5 c 128,-1,43 - 653 897 653 897 725 897 c 0,44,45 - 810 897 810 897 878.5 862 c 128,-1,46 - 947 827 947 827 990 777 c 128,-1,47 - 1033 727 1033 727 1073 653 c 1,48,49 - 1187 767 1187 767 1298 832 c 128,-1,50 - 1409 897 1409 897 1532 897 c 0,17,18 -942 512 m 1,51,52 - 877 658 877 658 843 706 c 0,53,54 - 781 795 781 795 702 795 c 0,55,56 - 617 795 617 795 553.5 733 c 128,-1,57 - 490 671 490 671 460 580 c 128,-1,58 - 430 489 430 489 430 389 c 0,59,60 - 430 229 430 229 571 229 c 0,61,62 - 623 229 623 229 689 272.5 c 128,-1,63 - 755 316 755 316 794.5 355.5 c 128,-1,64 - 834 395 834 395 923 492 c 0,65,66 - 936 505 936 505 942 512 c 1,51,52 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni026A -Encoding: 618 618 1043 -Width: 600 -VWidth: 0 -Flags: W -HStem: 0 102<115 197 453 510> 799 102<299 356 612 694> -VStem: 90 629 -AnchorPoint: "cedilla" 305 0 basechar 0 -AnchorPoint: "bottom" 305 0 basechar 0 -AnchorPoint: "top" 537 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -299 901 m 1,0,-1 - 719 901 l 1,1,-1 - 694 799 l 1,2,-1 - 612 799 l 1,3,-1 - 453 102 l 1,4,-1 - 535 102 l 1,5,-1 - 510 0 l 1,6,-1 - 90 0 l 1,7,-1 - 115 102 l 1,8,-1 - 197 102 l 1,9,-1 - 356 799 l 1,10,-1 - 274 799 l 1,11,-1 - 299 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0298 -Encoding: 664 664 1044 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<571 843> 649 170<768 899> 1352 102<822 1122> -VStem: 199 258<251 749> 729 209 1235 256<698 1177> -LayerCount: 2 -Fore -Refer: 342 183 N 1 0 0 1 582 236 2 -Refer: 42 79 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1E06 -Encoding: 7686 7686 1045 -Width: 1052 -VWidth: 0 -Flags: W -HStem: -205 82<289 741> 0 102<373 608> 727 102<541 682> 1331 102<655 806> -VStem: 270 489 780 268<296 657> 852 270<1002 1290> -LayerCount: 2 -Fore -Refer: 28 66 N 1 0 0 1 0 0 3 -Refer: 489 817 N 1 0 0 1 1151 0 2 -Validated: 1 -EndChar - -StartChar: uni1E07 -Encoding: 7687 7687 1046 -Width: 1069 -VWidth: 0 -Flags: W -HStem: -205 82<276 729> -20 102<467 694> 819 102<648 849> 1270 102<289 504> -VStem: 211 242<100 425> 213 70<1221 1259> 258 489 410 260<983 1268> 877 244<389 787> -LayerCount: 2 -Fore -Refer: 6 98 N 1 0 0 1 0 0 3 -Refer: 489 817 N 1 0 0 1 1139 0 2 -Validated: 1 -EndChar - -StartChar: uni1E14 -Encoding: 7700 7700 1047 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<464 1034> 664 102<617 970> 1126 102<700 1262> 1352 115<688 1133> 1501 301 -VStem: 662 498 721 305 -LayerCount: 2 -Fore -Refer: 930 58625 N 1 0 0 1 184 20 2 -Refer: 96 772 N 1 0 0 1 1202 82 2 -Refer: 927 57371 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1E15 -Encoding: 7701 7701 1048 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1085 115<532 977> 1325 403 -VStem: 150 246<143 446> 506 498 557 319 799 233<561 763> -LayerCount: 2 -Fore -Refer: 879 715 S 1 0 0 1 160 76 2 -Refer: 259 275 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E16 -Encoding: 7702 7702 1049 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<464 1034> 664 102<617 970> 1126 102<700 1262> 1352 115<688 1133> 1501 301 -VStem: 662 498 895 375 -LayerCount: 2 -Fore -Refer: 929 58624 N 1 0 0 1 393 20 2 -Refer: 927 57371 N 1 0 0 1 0 0 2 -Refer: 96 772 N 1 0 0 1 1202 82 2 -Validated: 1 -EndChar - -StartChar: uni1E17 -Encoding: 7703 7703 1050 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<439 705> 451 102<449 789> 819 102<575 781> 1085 115<532 977> 1325 403 -VStem: 150 246<143 446> 506 498 766 422 799 233<561 763> -LayerCount: 2 -Fore -Refer: 878 714 N 1 0 0 1 383 76 2 -Refer: 259 275 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1A -Encoding: 7706 7706 1051 -Width: 962 -VWidth: 0 -Flags: W -HStem: -285 117<506 700> -219 117<295 490> 0 102<373 942> 799 102<557 909> 1331 102<655 1217> -VStem: 195 606 -LayerCount: 2 -Fore -Refer: 488 816 N 1 0 0 1 1141 0 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1B -Encoding: 7707 7707 1052 -Width: 964 -VWidth: 0 -Flags: W -HStem: -285 117<487 682> -219 117<277 471> -20 102<439 705> 451 102<449 789> 819 102<575 781> -VStem: 150 246<143 446> 176 606 799 233<561 763> -LayerCount: 2 -Fore -Refer: 488 816 N 1 0 0 1 1122 0 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2C -Encoding: 7724 7724 1053 -Width: 458 -VWidth: 0 -Flags: W -HStem: -285 117<186 381> -219 117<-24 170> 0 43<92 368> 1393 41<414 690> -VStem: -125 606 92 598 -LayerCount: 2 -Fore -Refer: 488 816 N 1 0 0 1 821 0 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2D -Encoding: 7725 7725 1054 -Width: 573 -VWidth: 0 -Flags: W -HStem: -285 117<284 479> -219 117<74 269> -20 102<305 513> 860 41<291 555> 1065 164<397 573> -VStem: -27 606 133 254<83 364> 520 70<96 131> -LayerCount: 2 -Fore -Refer: 488 816 N 1 0 0 1 920 0 2 -Refer: 8 105 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E94 -Encoding: 7828 7828 1055 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -205 82<262 715> 0 102<367 963> 1331 102<414 958> -VStem: 244 489 -LayerCount: 2 -Fore -Refer: 489 817 S 1 0 0 1 1124 0 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E95 -Encoding: 7829 7829 1056 -Width: 827 -VWidth: 0 -Flags: W -HStem: -205 82<170 623> 0 102<377 823> 799 102<283 705> -LayerCount: 2 -Fore -SplineSet -170 -123 m 1,0,-1 - 641 -123 l 1,1,-1 - 623 -205 l 1,2,-1 - 152 -205 l 1,3,-1 - 170 -123 l 1,0,-1 -705 799 m 1,4,-1 - 227 799 l 1,5,-1 - 283 901 l 1,6,-1 - 1026 901 l 1,7,-1 - 377 102 l 1,8,-1 - 848 102 l 1,9,-1 - 823 0 l 1,10,-1 - 53 0 l 1,11,-1 - 705 799 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E96 -Encoding: 7830 7830 1057 -Width: 1034 -VWidth: 0 -Flags: W -HStem: -205 82<279 731> 0 43<143 409 688 954> 819 102<610 813> 1270 102<289 504> -VStem: 213 70<1221 1259> 260 489 410 260<985 1268> 829 248<415 804> -LayerCount: 2 -Fore -Refer: 489 817 N 1 0 0 1 1141 0 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uniA7AA -Encoding: 42922 42922 1058 -Width: 1708 -VWidth: 0 -Flags: W -HStem: 0 43G<530 806 1272 1548> 717 102<985 1438> 918 43G<459 534> 1331 102<656 838> -VStem: 297 238<1007 1218> -LayerCount: 2 -Fore -SplineSet -1128 1434 m 1,0,-1 - 985 819 l 1,1,-1 - 1460 819 l 1,2,-1 - 1604 1434 l 1,3,-1 - 1870 1434 l 1,4,-1 - 1538 0 l 1,5,-1 - 1272 0 l 1,6,-1 - 1438 717 l 1,7,-1 - 963 717 l 1,8,-1 - 797 0 l 1,9,-1 - 530 0 l 1,10,-1 - 838 1331 l 1,11,-1 - 784 1331 l 2,12,13 - 684 1331 684 1331 609.5 1255.5 c 128,-1,14 - 535 1180 535 1180 535 1085 c 0,15,16 - 535 1073 535 1073 537 1064 c 128,-1,17 - 539 1055 539 1055 543.5 1048 c 128,-1,18 - 548 1041 548 1041 550.5 1038.5 c 128,-1,19 - 553 1036 553 1036 561.5 1030.5 c 128,-1,20 - 570 1025 570 1025 571 1024 c 1,21,-1 - 510 918 l 1,22,23 - 422 930 422 930 359.5 973.5 c 128,-1,24 - 297 1017 297 1017 297 1090 c 0,25,26 - 297 1167 297 1167 340.5 1233 c 128,-1,27 - 384 1299 384 1299 454 1342 c 128,-1,28 - 524 1385 524 1385 611.5 1409.5 c 128,-1,29 - 699 1434 699 1434 788 1434 c 2,30,-1 - 1128 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni031D -Encoding: 797 797 1059 -Width: 0 -VWidth: 0 -Flags: W -HStem: -326 82<-809 -686 -604 -502> -VStem: -829 348 -AnchorPoint: "bottom" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --502 -326 m 1,0,-1 - -829 -326 l 1,1,-1 - -809 -244 l 1,2,-1 - -686 -244 l 1,3,-1 - -649 -82 l 1,4,-1 - -567 -82 l 1,5,-1 - -604 -244 l 1,6,-1 - -481 -244 l 1,7,-1 - -502 -326 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E42 -Encoding: 7746 7746 1060 -Width: 1480 -VWidth: 0 -Flags: W -HStem: -272 170<647 778> 0 43<92 368 1108 1384> 1393 41<414 700 1411 1706> -VStem: 608 209 -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1348 0 2 -Refer: 40 77 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E43 -Encoding: 7747 7747 1061 -Width: 1667 -VWidth: 0 -Flags: W -HStem: -272 170<782 913> 0 43<184 450 760 1025 1317 1582> 819 102<226 396 603 881 1198 1436> -VStem: 150 70<770 809> 346 260<527 795> 743 209 1460 252<431 796> -LayerCount: 2 -Fore -Refer: 481 803 N 1 0 0 1 1483 0 2 -Refer: 11 109 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0265 -Encoding: 613 613 1062 -Width: 1048 -VWidth: 0 -Flags: W -HStem: -418 102<743 960> -20 102<435 629> 860 41G<281 547 826 1092> -VStem: 154 256<105 501> 578 260<-315 -26> 967 70<-305 -266> -AnchorPoint: "horn" 1030 635 basechar 0 -AnchorPoint: "bottom" 471 0 basechar 0 -AnchorPoint: "top" 715 1004 basechar 0 -LayerCount: 2 -Back -SplineSet -835.584 901.12 m 1 - 1091.58 901.12 l 1 - 946.176 276.48 l 2 - 935.936 231.424 927.744 188.416 927.744 155.648 c 0 - 927.744 110.592 942.08 81.9199 978.944 81.9199 c 0 - 1011.71 81.9199 1040.38 96.2559 1056.77 131.072 c 1 - 1126.4 131.072 l 1 - 1107.97 55.2959 1015.81 -20.4805 927.744 -20.4805 c 0 - 823.296 -20.4805 753.664 4.0957 714.752 43.0078 c 1 - 667.648 22.5283 571.392 -20.4805 475.136 -20.4805 c 0 - 251.904 -20.4805 153.6 63.4883 153.6 239.616 c 0 - 153.6 288.768 161.792 346.112 176.128 409.6 c 2 - 290.816 901.12 l 1 - 546.816 901.12 l 1 - 438.272 434.176 l 2 - 419.84 350.208 409.6 286.72 409.6 235.52 c 0 - 409.6 114.688 460.8 81.9199 528.384 81.9199 c 0 - 598.016 81.9199 638.976 104.448 669.696 126.976 c 1 - 669.696 135.168 667.648 145.408 667.648 153.6 c 0 - 667.648 172.032 671.744 192.512 675.84 212.992 c 2 - 835.584 901.12 l 1 -EndSplineSet -Fore -SplineSet -838 -418 m 0,0,1 - 705 -418 705 -418 641.5 -369.5 c 128,-1,2 - 578 -321 578 -321 578 -244 c 0,3,4 - 578 -224 578 -224 586 -184 c 1,5,-1 - 630 9 l 1,6,7 - 547 -20 547 -20 475 -20 c 0,8,9 - 309 -20 309 -20 231.5 43.5 c 128,-1,10 - 154 107 154 107 154 240 c 0,11,12 - 154 311 154 311 176 410 c 1,13,-1 - 291 901 l 1,14,-1 - 547 901 l 1,15,-1 - 438 434 l 1,16,17 - 410 303 410 303 410 236 c 0,18,19 - 410 151 410 151 441 116.5 c 128,-1,20 - 472 82 472 82 528 82 c 0,21,22 - 602 82 602 82 655 117 c 1,23,-1 - 836 901 l 1,24,-1 - 1092 901 l 1,25,-1 - 856 -121 l 2,26,27 - 838 -202 838 -202 838 -242 c 0,28,29 - 838 -315 838 -315 889 -315 c 0,30,31 - 945 -315 945 -315 967 -266 c 1,32,-1 - 1036 -266 l 1,33,34 - 1022 -324 1022 -324 962.5 -371 c 128,-1,35 - 903 -418 903 -418 838 -418 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA789 -Encoding: 42889 42889 1063 -Width: 407 -VWidth: 0 -Flags: W -HStem: 0 164<129 307> 614 164<270 449> -VStem: 92 252 233 252 -LayerCount: 2 -Fore -Refer: 63 58 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uniA78A -Encoding: 42890 42890 1064 -Width: 567 -VWidth: 0 -Flags: W -HStem: 348 102<186 553> 573 102<238 606> -VStem: 162 467 -LayerCount: 2 -Fore -SplineSet -238 676 m 1,0,-1 - 629 676 l 1,1,-1 - 606 573 l 1,2,-1 - 215 573 l 1,3,-1 - 238 676 l 1,0,-1 -186 451 m 1,4,-1 - 578 451 l 1,5,-1 - 553 348 l 1,6,-1 - 162 348 l 1,7,-1 - 186 451 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA78B -Encoding: 42891 42891 1065 -Width: 448 -VWidth: 0 -Flags: W -HStem: 1393 41G<416 680> -VStem: 209 471 -LayerCount: 2 -Fore -SplineSet -680 1434 m 17,0,-1 - 403 369 l 1,1,-1 - 209 369 l 1,2,-1 - 424 1434 l 1,3,-1 - 680 1434 l 17,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA78C -Encoding: 42892 42892 1066 -Width: 428 -VWidth: 0 -Flags: W -HStem: 1024 410<424 532> -VStem: 358 301 -LayerCount: 2 -Fore -Refer: 56 39 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uniA78D -Encoding: 42893 42893 1067 -Width: 1410 -VWidth: 0 -Flags: W -HStem: 0 21G<973 1240> 512 103<496.459 842.045> 1414 20G<123 390 973 1240> -VStem: 123 267<758.421 1434> 973 267<0 603 715.176 1434> -LayerCount: 2 -Fore -SplineSet -1571 1434 m 9,0,-1 - 1240 0 l 1,1,-1 - 973 0 l 1,2,-1 - 1112 603 l 1,3,4 - 1103 599 1103 599 1057 576 c 128,-1,5 - 1011 553 1011 553 952 532.5 c 128,-1,6 - 893 512 893 512 794 512 c 128,-1,7 - 695 512 695 512 602 539 c 0,8,9 - 396 599 396 599 344 753 c 0,10,11 - 329 798 329 798 329 845.5 c 128,-1,12 - 329 893 329 893 340 942 c 2,13,-1 - 454 1434 l 1,14,-1 - 721 1434 l 1,15,-1 - 613 967 l 2,16,17 - 593 882 593 882 593 818 c 0,18,19 - 593 657 593 657 717 624 c 0,20,21 - 752 615 752 615 824 615 c 0,22,23 - 959 615 959 615 1146 750 c 1,24,-1 - 1304 1434 l 1,25,-1 - 1571 1434 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniE04C -Encoding: 57420 57420 1068 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 123<-451 -91> -VStem: -532 80<1357 1467> -68 76<1400 1481> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --532 1393 m 0,0,1 - -532 1429 -532 1429 -509 1455 c 128,-1,2 - -486 1481 -486 1481 -461 1481 c 0,3,4 - -434 1481 -434 1481 -434 1466 c 0,5,6 - -434 1459 -434 1459 -443.5 1441 c 128,-1,7 - -453 1423 -453 1423 -453 1415 c 0,8,9 - -453 1393 -453 1393 -348 1393 c 2,10,-1 - -184 1393 l 2,11,12 - -75 1393 -75 1393 -68 1419 c 0,13,14 - -66 1427 -66 1427 -67.5 1440.5 c 128,-1,15 - -69 1454 -69 1454 -68 1458 c 0,16,17 - -64 1481 -64 1481 -31 1481 c 0,18,19 - 8 1481 8 1481 8 1434 c 0,20,21 - 8 1384 8 1384 -42 1345 c 128,-1,22 - -92 1306 -92 1306 -160 1288 c 128,-1,23 - -228 1270 -228 1270 -295 1270 c 0,24,25 - -383 1270 -383 1270 -457.5 1305.5 c 128,-1,26 - -532 1341 -532 1341 -532 1393 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Aringacute -Encoding: 506 506 1069 -Width: 1298 -VWidth: 0 -Flags: HW -HStem: 0 21<31 277.902 1017.32 1255> 410 102<571 952> 1653 72<946.91 1077.92> 1776 301 -VStem: 846 73<1498.3 1624.17> 949 375 1091 74.5<1512 1633.4> -LayerCount: 2 -Fore -Refer: 143 197 N 1 0 0 1 0 0 2 -Refer: 929 58624 S 1 0 0 1 447 295 2 -EndChar - -StartChar: aringacute -Encoding: 507 507 1070 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<443 701 907 1067> 819 102<633 835> 983 72<756 891> 1223 72<776 912> 1347 403 -VStem: 154 246<136 485> 674 74<1061 1195> 690 262<96 373> 754 422 920 74<1082 1216> 1075 72<97 131> -LayerCount: 2 -Fore -Refer: 133 229 N 1 0 0 1 0 0 2 -Refer: 93 769 N 1 0 0 1 1141 98 2 -Validated: 1 -EndChar - -StartChar: AEacute -Encoding: 508 508 1071 -Width: 1813 -VWidth: 0 -Flags: W -HStem: 0 102<1160 1730> 410 102<579 964> 799 102<1344 1696> 1331 103<1067 1177 1443 2004> 1495 403 -VStem: 1200 422 -LayerCount: 2 -Fore -Refer: 168 198 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1587 246 2 -Validated: 1 -EndChar - -StartChar: aeacute -Encoding: 509 509 1072 -Width: 1478 -VWidth: 0 -Flags: W -HStem: -20 102<404 599 952 1219> 451 102<963 1304> 520 102<488 694> 819 102<492 708 1089 1295> 1065 403 -VStem: 127 256<101 396> 955 422 1313 233<554 763> -LayerCount: 2 -Fore -Refer: 169 230 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1342 -184 2 -Validated: 1 -EndChar - -StartChar: uni026C -Encoding: 620 620 1073 -Width: 816 -VWidth: 0 -Flags: W -HStem: -20 102<537.5 726.012> 844 57<352.829 485.85> -VStem: 245 81<665.062 827.551> 345 258<82.4647 377.625> -AnchorPoint: "horn" 717 1085 basechar 0 -AnchorPoint: "ogonek" 435 0 basechar 0 -AnchorPoint: "bottom" 428 0 basechar 0 -AnchorPoint: "cedilla" 424 0 basechar 0 -AnchorPoint: "top" 761 1434 basechar 0 -LayerCount: 2 -Back -SplineSet -622 276 m 6 - 609 219 603 179 603 156 c 4 - 603 107 620 82 654 82 c 4 - 691 82 717 98 732 131 c 5 - 802 131 l 5 - 793 92 768 57 728 26 c 132 - 688 -5 646 -20 603 -20 c 4 - 516 -20 451 -4 409 28 c 132 - 367 60 345 103 345 156 c 4 - 345 174 347 193 351 213 c 6 -EndSplineSet -Fore -SplineSet -622 276 m 2,0,1 - 603 193 603 193 603 156 c 0,2,3 - 603 82 603 82 654 82 c 0,4,5 - 710 82 710 82 732 131 c 1,6,-1 - 802 131 l 1,7,8 - 789 73 789 73 729 26.5 c 128,-1,9 - 669 -20 669 -20 603 -20 c 0,10,11 - 472 -20 472 -20 408.5 28.5 c 128,-1,12 - 345 77 345 77 345 156 c 0,13,14 - 345 183 345 183 351 213 c 2,15,-1 - 433 564 l 1,16,17 - 327 584 327 584 286 632 c 128,-1,18 - 245 680 245 680 245 727 c 0,19,20 - 245 808 245 808 304 854.5 c 128,-1,21 - 363 901 363 901 418 901 c 128,-1,22 - 473 901 473 901 506 881 c 1,23,-1 - 615 1352 l 1,24,-1 - 871 1352 l 1,25,-1 - 711 657 l 1,26,27 - 828 698 828 698 917 774 c 1,28,-1 - 937 735 l 1,29,30 - 813 633 813 633 694 586 c 1,31,-1 - 622 276 l 2,0,1 -450 635 m 1,32,-1 - 490 811 l 1,33,34 - 465 844 465 844 425 844 c 0,35,36 - 347 844 347 844 330 770 c 0,37,38 - 326 754 326 754 326 739 c 0,39,40 - 326 656 326 656 450 635 c 1,32,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA7AD -Encoding: 42925 42925 1074 -Width: 1271 -VWidth: 0 -Flags: W -HStem: 0 102<592 1161> 844 57.5<349.712 485.82> 1414 20G<628.371 899> -VStem: 245 81<665.308 829.423> -AnchorPoint: "bottom" 754 0 basechar 0 -AnchorPoint: "cedilla" 723 0 basechar 0 -AnchorPoint: "top" 991 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -592 102 m 1,0,-1 - 1186 102 l 1,1,-1 - 1161 0 l 1,2,-1 - 301 0 l 1,3,-1 - 432 564 l 1,4,5 - 327 584 327 584 286 632 c 128,-1,6 - 245 680 245 680 245 727 c 0,7,8 - 245 811 245 811 302.5 856.5 c 128,-1,9 - 360 902 360 902 415 902 c 2,10,-1 - 416 902 l 2,11,12 - 472 902 472 902 505 881 c 1,13,-1 - 633 1434 l 1,14,-1 - 899 1434 l 1,15,-1 - 721 661 l 1,16,17 - 832 702 832 702 917 774 c 1,18,-1 - 937 735 l 1,19,20 - 819 638 819 638 705 590 c 1,21,-1 - 592 102 l 1,0,-1 -489 812 m 1,22,23 - 464 844 464 844 425 844 c 0,24,25 - 326 844 326 844 326 739 c 0,26,27 - 326 657 326 657 448 635 c 1,28,-1 - 489 812 l 1,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01F8 -Encoding: 504 504 1075 -Width: 1261 -VWidth: 0 -HStem: 0 43<92 368 878 1165> 1393 41<414 703 1211 1487> 1495 403 -VStem: 721 319 -LayerCount: 2 -Fore -Refer: 92 768 S 1 0 0 1 1094 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01F9 -Encoding: 505 505 1076 -Width: 1075 -VWidth: 0 -HStem: 0 43<184 450 729 994> 819 102<226 400 616 855> 1065 403 -VStem: 150 70<770 809> 346 260<527 780> 562 319 872 246<427 804> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 935 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0528 -Encoding: 1320 1320 1077 -Width: 1189 -VWidth: 0 -Flags: HW -HStem: -348 102<-200.911 18.7163> 0 21G<823 1094.62> 717 102<537 989> 1414 20G<409.37 680 1150.35 1421> -AnchorPoint: "top" 926 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -414 1434 m 1,0,-1 - 680 1434 l 1,1,-1 - 537 819 l 1,2,-1 - 1012 819 l 1,3,-1 - 1155 1434 l 1,4,-1 - 1421 1434 l 1,5,-1 - 1090 0 l 1,6,-1 - 823 0 l 1,7,-1 - 989 717 l 1,8,-1 - 514 717 l 1,9,-1 - 332 -68 l 2,10,11 - 315 -140 315 -140 264 -196 c 0,12,13 - 212 -252 212 -252 146 -284 c 0,14,15 - 14 -348 14 -348 -113 -348 c 0,16,17 - -238 -348 -238 -348 -295 -256 c 1,18,-1 - -152 -195 l 1,19,20 - -130 -246 -130 -246 -66.5 -246 c 128,-1,21 - -3 -246 -3 -246 23.5 -193 c 128,-1,22 - 50 -140 50 -140 82 0 c 2,23,-1 - 414 1434 l 1,0,-1 -EndSplineSet -Validated: 1048577 -EndChar - -StartChar: uni0529 -Encoding: 1321 1321 1078 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -348 102<-189.695 28.3672> -20 102<884 1075.09> 440 103<473 750> 881 20G<296.361 557 851.307 1112> -VStem: 688 268<83.0234 265.488> -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -301 901 m 1,0,-1 - 557 901 l 1,1,-1 - 473 543 l 1,2,-1 - 772 543 l 1,3,-1 - 856 901 l 1,4,-1 - 1112 901 l 1,5,-1 - 967 276 l 1,6,7 - 956 223 956 223 956 184 c 0,8,9 - 956 82 956 82 999 82 c 0,10,11 - 1026 82 1026 82 1049.5 96.5 c 128,-1,12 - 1073 111 1073 111 1077 131 c 1,13,-1 - 1147 131 l 1,14,15 - 1132 68 1132 68 1074.5 24 c 128,-1,16 - 1017 -20 1017 -20 948 -20 c 0,17,18 - 820 -20 820 -20 754 16.5 c 128,-1,19 - 688 53 688 53 688 143 c 0,20,21 - 688 177 688 177 696 213 c 2,22,-1 - 750 440 l 1,23,-1 - 451 440 l 1,24,-1 - 332 -68 l 2,25,26 - 315 -140 315 -140 265.5 -196.5 c 128,-1,27 - 216 -253 216 -253 152 -284.5 c 128,-1,28 - 88 -316 88 -316 23.5 -332 c 128,-1,29 - -41 -348 -41 -348 -98 -348 c 0,30,31 - -227 -348 -227 -348 -284 -256 c 1,32,-1 - -141 -195 l 1,33,34 - -119 -246 -119 -246 -45 -246 c 0,35,36 - 7 -246 7 -246 33.5 -193 c 128,-1,37 - 60 -140 60 -140 92 0 c 2,38,-1 - 301 901 l 1,0,-1 -EndSplineSet -EndChar - -StartChar: uni052E -Encoding: 1326 1326 1079 -Width: 1347 -VWidth: 0 -Flags: W -HStem: -20 102<141.292 374.855> 1331 103<952 1282> -VStem: 1132 158<-320.818 -185.615> -AnchorPoint: "top" 1143 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1241 0 m 1,0,-1 - 1200 -125 l 1,1,2 - 1245 -141 1245 -141 1267.5 -174 c 128,-1,3 - 1290 -207 1290 -207 1290 -247 c 128,-1,4 - 1290 -287 1290 -287 1235.5 -329 c 128,-1,5 - 1181 -371 1181 -371 1109 -397 c 1,6,-1 - 1054 -373 l 1,7,8 - 1084 -353 1084 -353 1108 -320.5 c 128,-1,9 - 1132 -288 1132 -288 1132 -254 c 0,10,11 - 1132 -194 1132 -194 1040 -164 c 1,12,-1 - 1105 0 l 1,13,-1 - 975 0 l 1,14,-1 - 1282 1331 l 1,15,-1 - 952 1331 l 1,16,-1 - 705 260 l 2,17,18 - 641 -20 641 -20 233 -20 c 0,19,20 - 104 -20 104 -20 47 72 c 1,21,-1 - 190 133 l 1,22,23 - 212 82 212 82 279.5 82 c 128,-1,24 - 347 82 347 82 386 140.5 c 128,-1,25 - 425 199 425 199 455 328 c 2,26,-1 - 711 1434 l 1,27,-1 - 1573 1434 l 1,28,-1 - 1241 0 l 1,0,-1 -EndSplineSet -Validated: 1048577 -EndChar - -StartChar: uni052F -Encoding: 1327 1327 1080 -Width: 1351 -VWidth: 0 -Flags: HW -HStem: -20 102<141.292 373.59> 799 102<868.998 1007.53> -VStem: 909 269<82.1238 269.014> 1022 258<483.922 785.965> 1127 157<-314.523 -179.423> -AnchorPoint: "top" 981 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1092 -15 m 1,0,1 - 909 12 909 12 909 152 c 0,2,3 - 909 161 909 161 918 213 c 1,4,-1 - 1006 592 l 1,5,6 - 1022 674 1022 674 1022 719 c 128,-1,7 - 1022 764 1022 764 999 781.5 c 128,-1,8 - 976 799 976 799 928 799 c 128,-1,9 - 880 799 880 799 819 665.5 c 128,-1,10 - 758 532 758 532 694 260 c 1,11,12 - 660 111 660 111 547 45.5 c 128,-1,13 - 434 -20 434 -20 233 -20 c 0,14,15 - 104 -20 104 -20 47 72 c 1,16,-1 - 190 133 l 1,17,18 - 212 82 212 82 279.5 82 c 128,-1,19 - 347 82 347 82 386 140.5 c 128,-1,20 - 425 199 425 199 451.5 313.5 c 128,-1,21 - 478 428 478 428 514 512.5 c 128,-1,22 - 550 597 550 597 589.5 654.5 c 128,-1,23 - 629 712 629 712 675 757 c 0,24,25 - 755 835 755 835 834.5 868 c 128,-1,26 - 914 901 914 901 960 901 c 0,27,28 - 1119 901 1119 901 1199.5 846 c 128,-1,29 - 1280 791 1280 791 1280 700 c 0,30,31 - 1280 670 1280 670 1272 643 c 1,32,-1 - 1188 276 l 1,33,34 - 1178 224 1178 224 1178 184 c 0,35,36 - 1178 82 1178 82 1221 82 c 0,37,38 - 1246 82 1246 82 1270 96.5 c 128,-1,39 - 1294 111 1294 111 1298 131 c 1,40,-1 - 1368 131 l 1,41,42 - 1354 68 1354 68 1296 24 c 0,43,44 - 1264 0 1264 0 1229 -11 c 1,45,-1 - 1194 -119 l 1,46,47 - 1284 -151 1284 -151 1284 -240 c 0,48,49 - 1284 -280 1284 -280 1229.5 -322.5 c 128,-1,50 - 1175 -365 1175 -365 1104 -391 c 1,51,-1 - 1049 -367 l 1,52,53 - 1079 -347 1079 -347 1103 -314.5 c 128,-1,54 - 1127 -282 1127 -282 1127 -248 c 0,55,56 - 1127 -188 1127 -188 1034 -158 c 1,57,-1 - 1092 -15 l 1,0,1 -EndSplineSet -Validated: 1048577 -EndChar -EndChars -EndSplineFont diff --git a/examples/pfennigFont/PfennigBoldItalic.ttf b/examples/pfennigFont/PfennigBoldItalic.ttf deleted file mode 100644 index 89516d44e..000000000 Binary files a/examples/pfennigFont/PfennigBoldItalic.ttf and /dev/null differ diff --git a/examples/pfennigFont/PfennigItalic.sfd b/examples/pfennigFont/PfennigItalic.sfd deleted file mode 100644 index 73620d1d5..000000000 --- a/examples/pfennigFont/PfennigItalic.sfd +++ /dev/null @@ -1,29697 +0,0 @@ -SplineFontDB: 3.0 -FontName: PfennigItalic -FullName: Pfennig Italic -FamilyName: Pfennig -Weight: Medium -Copyright: Copyright 2009-2012 by Daniel Johnson. Released under the terms of the SIL Open Font License. -UComments: "2009-7-16: Created." -Version: 20120410 -ItalicAngle: -13 -UnderlinePosition: -204 -UnderlineWidth: 102 -Ascent: 1638 -Descent: 410 -LayerCount: 2 -Layer: 0 0 "Back" 1 -Layer: 1 1 "Fore" 0 -NeedsXUIDChange: 1 -XUID: [1021 1003 1579404955 6722392] -FSType: 0 -OS2Version: 0 -OS2_WeightWidthSlopeOnly: 0 -OS2_UseTypoMetrics: 1 -CreationTime: 1247766582 -ModificationTime: 1334085743 -PfmFamily: 33 -TTFWeight: 500 -TTFWidth: 5 -LineGap: 0 -VLineGap: 0 -OS2TypoAscent: 2174 -OS2TypoAOffset: 0 -OS2TypoDescent: -531 -OS2TypoDOffset: 0 -OS2TypoLinegap: 0 -OS2WinAscent: 2174 -OS2WinAOffset: 0 -OS2WinDescent: 531 -OS2WinDOffset: 0 -HheadAscent: 2174 -HheadAOffset: 0 -HheadDescent: -531 -HheadDOffset: 0 -OS2FamilyClass: 2050 -OS2Vendor: 'PfEd' -Lookup: 1 0 0 "'locl' Localized Forms in Sami" {"'locl' Localized Forms in Sami-1" } ['locl' ('latn' <'ISM ' > 'latn' <'LSM ' > 'latn' <'NSM ' > 'latn' <'SKS ' > ) ] -Lookup: 4 0 1 "'liga' Standard Ligatures in Latin lookup 0" {"'liga' Standard Ligatures in Latin lookup 0-1" } ['liga' ('DFLT' <'dflt' > 'latn' <'dflt' > ) ] -Lookup: 258 0 0 "'kern' Horizontal Kerning lookup 1" {"'kern' Horizontal Kerning lookup 1-1" } ['kern' ('DFLT' <'dflt' > 'cyrl' <'dflt' > 'latn' <'dflt' > ) ] -Lookup: 260 0 0 "'mark' Mark Positioning in Latin lookup 0" {"'mark' Mark Positioning in Latin lookup 0-1" } ['mark' ('DFLT' <'dflt' > 'latn' <'dflt' > ) ] -MarkAttachClasses: 1 -DEI: 91125 -KernClass2: 9 9 "'kern' Horizontal Kerning lookup 1-1" - 109 A L Agrave Aacute Acircumflex Atilde Adieresis Aring Amacron Abreve Aogonek Lacute Lcommaaccent Lcaron Lslash - 515 B C E G H I J K M N R S U X Z Ccedilla Egrave Eacute Ecircumflex Edieresis Ntilde Ugrave Uacute Ucircumflex Udieresis Cacute Ccircumflex Cdotaccent Ccaron Emacron Edotaccent Eogonek Ecaron Gcircumflex Gbreve Gdotaccent Gcommaaccent Hcircumflex Hbar Itilde Imacron Iogonek Idotaccent Jcircumflex Kcommaaccent Nacute Ncommaaccent Ncaron Eng OE Racute Rcommaaccent Rcaron Sacute Scircumflex Scedilla Scaron Utilde Umacron Ubreve Uring Uhungarumlaut Uogonek Zacute Zdotaccent Zcaron Scommaaccent uni1E02 uni1E40 uni1E60 - 115 D O Eth Ograve Oacute Ocircumflex Otilde Odieresis Oslash Thorn Dcaron Dcroat Omacron Ohungarumlaut uni01EA uni1E0A - 140 F P T V W Y Yacute Tcommaaccent Tcaron Tbar Wcircumflex Ycircumflex Ydieresis uni021A uni1E1E uni1E56 uni1E6A Wgrave Wacute Wdieresis Ygrave - 532 a c g h i j k m n q s u x z agrave aacute acircumflex atilde adieresis aring ccedilla igrave iacute icircumflex idieresis ntilde ugrave uacute ucircumflex udieresis amacron abreve aogonek cacute ccircumflex cdotaccent ccaron gcircumflex gbreve gdotaccent gcommaaccent hcircumflex hbar itilde imacron iogonek dotlessi jcircumflex kcommaaccent kgreenlandic nacute ncommaaccent ncaron eng sacute scircumflex scedilla scaron utilde umacron ubreve uring uhungarumlaut uogonek zacute zdotaccent zcaron scommaaccent uni0237 uni1E41 uni1E61 - 186 b e o p egrave eacute ecircumflex edieresis eth ograve oacute ocircumflex otilde odieresis oslash thorn emacron edotaccent eogonek ecaron omacron ohungarumlaut oe uni01EB uni1E03 uni1E57 - 153 d f l t germandbls dcaron dcroat lacute lcommaaccent lcaron lslash tcommaaccent tcaron tbar uni021B uni1E0B uni1E1F uni1E6B uniFB00 fi fl uniFB03 uniFB04 - 112 r v w y yacute ydieresis racute rcommaaccent rcaron wcircumflex ycircumflex longs wgrave wacute wdieresis ygrave - 90 A J Agrave Aacute Acircumflex Atilde Adieresis Aring AE Amacron Abreve Aogonek Jcircumflex - 531 B D E F H I K L M N P R S U X Z Egrave Eacute Ecircumflex Edieresis Igrave Iacute Icircumflex Idieresis Eth Ntilde Ugrave Uacute Ucircumflex Udieresis Thorn Dcaron Dcroat Emacron Edotaccent Eogonek Ecaron Hcircumflex Hbar Itilde Imacron Iogonek Idotaccent Kcommaaccent Lacute Lcommaaccent Lcaron Lslash Nacute Ncommaaccent Ncaron Eng Racute Rcommaaccent Rcaron Sacute Scircumflex Scedilla Scaron Utilde Umacron Ubreve Uring Uhungarumlaut Uogonek Zacute Zdotaccent Zcaron Scommaaccent uni1E02 uni1E0A uni1E1E uni1E40 uni1E56 uni1E60 - 179 C G O Q Ccedilla Ograve Oacute Ocircumflex Otilde Odieresis Oslash Cacute Ccircumflex Cdotaccent Ccaron Gcircumflex Gbreve Gdotaccent Gcommaaccent Omacron Ohungarumlaut OE uni01EA - 113 T V W Y Tcommaaccent Tcaron Tbar Wcircumflex Ycircumflex Ydieresis uni021A uni1E6A Wgrave Wacute Wdieresis Ygrave - 435 i j m n p r s u x z agrave aacute acircumflex atilde adieresis aring ae igrave iacute icircumflex idieresis ntilde ugrave uacute ucircumflex udieresis amacron abreve aogonek itilde imacron iogonek dotlessi jcircumflex kgreenlandic nacute ncommaaccent ncaron eng racute rcommaaccent rcaron sacute scircumflex scedilla scaron utilde umacron ubreve uring uhungarumlaut uogonek zacute zdotaccent zcaron scommaaccent uni0237 uni1E41 uni1E61 - 185 b f h k l t germandbls thorn hcircumflex hbar kcommaaccent lacute lcommaaccent lcaron lslash tcommaaccent tcaron tbar longs uni021B uni1E03 uni1E1F uni1E6B uniFB00 fi fl uniFB03 uniFB04 - 281 a c d e g o q ccedilla egrave eacute ecircumflex edieresis eth ograve oacute ocircumflex otilde odieresis oslash cacute ccircumflex cdotaccent ccaron dcaron dcroat emacron edotaccent eogonek ecaron gcircumflex gbreve gdotaccent gcommaaccent omacron ohungarumlaut oe uni01EB uni1E0B - 77 v w y yacute ydieresis wcircumflex ycircumflex wgrave wacute wdieresis ygrave - 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -61 {} -123 {} 0 {} 0 {} 0 {} -61 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -41 {} 0 {} 0 {} -41 {} 0 {} 0 {} 0 {} 0 {} 0 {} -164 {} 41 {} 0 {} 82 {} -41 {} 102 {} -123 {} 0 {} 0 {} 0 {} 0 {} 0 {} -123 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -164 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} 0 {} -123 {} 0 {} 0 {} -123 {} 0 {} 0 {} 0 {} 0 {} -TtTable: prep -PUSHW_1 - 511 -SCANCTRL -PUSHB_1 - 4 -SCANTYPE -EndTTInstrs -LangName: 1033 "" "" "" "" "" "" "" "" "" "" "" "" "" "Copyright (c) 2009, 2010 Daniel Johnson (),+AAoA-with Reserved Font Name Pfennig.+AAoACgAA-This Font Software is licensed under the SIL Open Font License, Version 1.1.+AAoA-This license is copied below, and is also available with a FAQ at:+AAoA-http://scripts.sil.org/OFL+AAoACgAK------------------------------------------------------------+AAoA-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007+AAoA------------------------------------------------------------+AAoACgAA-PREAMBLE+AAoA-The goals of the Open Font License (OFL) are to stimulate worldwide+AAoA-development of collaborative font projects, to support the font creation+AAoA-efforts of academic and linguistic communities, and to provide a free and+AAoA-open framework in which fonts may be shared and improved in partnership+AAoA-with others.+AAoACgAA-The OFL allows the licensed fonts to be used, studied, modified and+AAoA-redistributed freely as long as they are not sold by themselves. The+AAoA-fonts, including any derivative works, can be bundled, embedded, +AAoA-redistributed and/or sold with any software provided that any reserved+AAoA-names are not used by derivative works. The fonts and derivatives,+AAoA-however, cannot be released under any other type of license. The+AAoA-requirement for fonts to remain under this license does not apply+AAoA-to any document created using the fonts or their derivatives.+AAoACgAA-DEFINITIONS+AAoAIgAA-Font Software+ACIA refers to the set of files released by the Copyright+AAoA-Holder(s) under this license and clearly marked as such. This may+AAoA-include source files, build scripts and documentation.+AAoACgAi-Reserved Font Name+ACIA refers to any names specified as such after the+AAoA-copyright statement(s).+AAoACgAi-Original Version+ACIA refers to the collection of Font Software components as+AAoA-distributed by the Copyright Holder(s).+AAoACgAi-Modified Version+ACIA refers to any derivative made by adding to, deleting,+AAoA-or substituting -- in part or in whole -- any of the components of the+AAoA-Original Version, by changing formats or by porting the Font Software to a+AAoA-new environment.+AAoACgAi-Author+ACIA refers to any designer, engineer, programmer, technical+AAoA-writer or other person who contributed to the Font Software.+AAoACgAA-PERMISSION & CONDITIONS+AAoA-Permission is hereby granted, free of charge, to any person obtaining+AAoA-a copy of the Font Software, to use, study, copy, merge, embed, modify,+AAoA-redistribute, and sell modified and unmodified copies of the Font+AAoA-Software, subject to the following conditions:+AAoACgAA-1) Neither the Font Software nor any of its individual components,+AAoA-in Original or Modified Versions, may be sold by itself.+AAoACgAA-2) Original or Modified Versions of the Font Software may be bundled,+AAoA-redistributed and/or sold with any software, provided that each copy+AAoA-contains the above copyright notice and this license. These can be+AAoA-included either as stand-alone text files, human-readable headers or+AAoA-in the appropriate machine-readable metadata fields within text or+AAoA-binary files as long as those fields can be easily viewed by the user.+AAoACgAA-3) No Modified Version of the Font Software may use the Reserved Font+AAoA-Name(s) unless explicit written permission is granted by the corresponding+AAoA-Copyright Holder. This restriction only applies to the primary font name as+AAoA-presented to the users.+AAoACgAA-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font+AAoA-Software shall not be used to promote, endorse or advertise any+AAoA-Modified Version, except to acknowledge the contribution(s) of the+AAoA-Copyright Holder(s) and the Author(s) or with their explicit written+AAoA-permission.+AAoACgAA-5) The Font Software, modified or unmodified, in part or in whole,+AAoA-must be distributed entirely under this license, and must not be+AAoA-distributed under any other license. The requirement for fonts to+AAoA-remain under this license does not apply to any document created+AAoA-using the Font Software.+AAoACgAA-TERMINATION+AAoA-This license becomes null and void if any of the above conditions are+AAoA-not met.+AAoACgAA-DISCLAIMER+AAoA-THE FONT SOFTWARE IS PROVIDED +ACIA-AS IS+ACIA, WITHOUT WARRANTY OF ANY KIND,+AAoA-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF+AAoA-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT+AAoA-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE+AAoA-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,+AAoA-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL+AAoA-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING+AAoA-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM+AAoA-OTHER DEALINGS IN THE FONT SOFTWARE." "http://scripts.sil.org/OFL" -GaspTable: 1 65535 3 -Encoding: UnicodeBmp -Compacted: 1 -UnicodeInterp: none -NameList: Adobe Glyph List -DisplaySize: -48 -AntiAlias: 1 -FitToEm: 1 -WinInfo: 702 18 11 -BeginPrivate: 1 -BlueValues 35 [-20 0 901 922 1372 1372 1434 1454] -EndPrivate -Grid --90.1123 1085.44 m 17 - 2228.22 1085.44 l 9 --90.1123 1433.6 m 25 - 2228.22 1433.6 l 25 --90.1123 901.12 m 17 - 2228.22 901.12 l 9 --90.1123 1351.68 m 25 - 2228.22 1351.68 l 25 -EndSplineSet -TeXData: 1 0 0 209715 104857 69905 461373 1048576 69905 783286 444596 497025 792723 393216 433062 380633 303038 157286 324010 404750 52429 2506097 1059062 262144 -AnchorClass2: "bottom" "'mark' Mark Positioning in Latin lookup 0-1" "horn" "'mark' Mark Positioning in Latin lookup 0-1" "ogonek" "'mark' Mark Positioning in Latin lookup 0-1" "cedilla" "'mark' Mark Positioning in Latin lookup 0-1" "top" "'mark' Mark Positioning in Latin lookup 0-1" -BeginChars: 65536 1085 - -StartChar: d -Encoding: 100 100 0 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -20 102<404 666 925 1088> 819 102<556 809> -VStem: 150 168<174 538> 866 102<182 586> 1090 70<93 131> -AnchorPoint: "bottom" 485 0 basechar 0 -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -150 317 m 0,0,1 - 150 420 150 420 189.5 527 c 128,-1,2 - 229 634 229 634 297.5 722 c 128,-1,3 - 366 810 366 810 469 866 c 128,-1,4 - 572 922 572 922 688 922 c 0,5,6 - 846 922 846 922 942 823 c 1,7,-1 - 1063 1352 l 1,8,-1 - 1227 1352 l 1,9,-1 - 979 276 l 2,10,11 - 969 232 969 232 969 182 c 0,12,13 - 969 82 969 82 1012 82 c 0,14,15 - 1040 82 1040 82 1062.5 96.5 c 128,-1,16 - 1085 111 1085 111 1090 131 c 1,17,-1 - 1159 131 l 1,18,19 - 1146 68 1146 68 1088 24 c 128,-1,20 - 1030 -20 1030 -20 961 -20 c 0,21,22 - 908 -20 908 -20 868 6.5 c 128,-1,23 - 828 33 828 33 809 78 c 1,24,25 - 677 -20 677 -20 471 -20 c 0,26,27 - 317 -20 317 -20 233.5 73 c 128,-1,28 - 150 166 150 166 150 317 c 0,0,1 -524 82 m 128,-1,30 - 623 82 623 82 702.5 153 c 128,-1,31 - 782 224 782 224 824 338.5 c 128,-1,32 - 866 453 866 453 866 586 c 0,33,34 - 866 691 866 691 825.5 755 c 128,-1,35 - 785 819 785 819 694 819 c 0,36,37 - 599 819 599 819 510.5 747 c 128,-1,38 - 422 675 422 675 369.5 566 c 128,-1,39 - 317 457 317 457 317 348 c 0,40,41 - 317 236 317 236 371 159 c 128,-1,29 - 425 82 425 82 524 82 c 128,-1,30 -EndSplineSet -Validated: 1 -EndChar - -StartChar: a -Encoding: 97 97 1 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> -VStem: 154 158<136 521> 711 172<113 272> 1004 72<93 131> -AnchorPoint: "bottom" 446 0 basechar 0 -AnchorPoint: "ogonek" 903 0 basechar 0 -AnchorPoint: "top" 731 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -154 309 m 0,0,1 - 154 420 154 420 203 533.5 c 128,-1,2 - 252 647 252 647 327 731.5 c 128,-1,3 - 402 816 402 816 497.5 869 c 128,-1,4 - 593 922 593 922 682 922 c 0,5,6 - 761 922 761 922 830 908 c 128,-1,7 - 899 894 899 894 936 879 c 128,-1,8 - 973 864 973 864 1024 838 c 1,9,-1 - 895 276 l 2,10,11 - 883 223 883 223 883 178 c 0,12,13 - 883 135 883 135 894.5 108.5 c 128,-1,14 - 906 82 906 82 926 82 c 0,15,16 - 954 82 954 82 976.5 96.5 c 128,-1,17 - 999 111 999 111 1004 131 c 1,18,-1 - 1075 131 l 1,19,20 - 1062 68 1062 68 1002.5 24 c 128,-1,21 - 943 -20 943 -20 874 -20 c 0,22,23 - 790 -20 790 -20 743 43 c 1,24,25 - 592 -20 592 -20 440 -20 c 0,26,27 - 308 -20 308 -20 231 72.5 c 128,-1,28 - 154 165 154 165 154 309 c 0,0,1 -852 797 m 1,29,30 - 791 819 791 819 688 819 c 0,31,32 - 616 819 616 819 556 789 c 128,-1,33 - 496 759 496 759 456.5 709 c 128,-1,34 - 417 659 417 659 387 600.5 c 128,-1,35 - 357 542 357 542 341.5 479.5 c 128,-1,36 - 326 417 326 417 318.5 368.5 c 128,-1,37 - 311 320 311 320 311 283 c 0,38,39 - 311 175 311 175 362 128.5 c 128,-1,40 - 413 82 413 82 494 82 c 0,41,42 - 604 82 604 82 711 131 c 1,43,-1 - 711 156 l 2,44,45 - 711 183 711 183 717 213 c 2,46,-1 - 852 797 l 1,29,30 -EndSplineSet -Validated: 1 -EndChar - -StartChar: h -Encoding: 104 104 2 -Width: 1034 -VWidth: 0 -Flags: W -HStem: 0 43G<143 317 780 954> 819 102<560 873> 1270 102<284 461> -VStem: 213 70<1221 1259> 403 174<985 1268> 913 164<389 778> -AnchorPoint: "bottom" 549 0 basechar 0 -AnchorPoint: "top" 715 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -391 1075 m 2,0,1 - 403 1128 403 1128 403 1169 c 0,2,3 - 403 1214 403 1214 391 1242 c 128,-1,4 - 379 1270 379 1270 358 1270 c 0,5,6 - 331 1270 331 1270 309.5 1255.5 c 128,-1,7 - 288 1241 288 1241 283 1221 c 1,8,-1 - 213 1221 l 1,9,10 - 226 1284 226 1284 284.5 1328 c 128,-1,11 - 343 1372 343 1372 412 1372 c 0,12,13 - 485 1372 485 1372 531.5 1322.5 c 128,-1,14 - 578 1273 578 1273 578 1196 c 0,15,16 - 578 1184 578 1184 569 1139 c 1,17,-1 - 508 870 l 1,18,19 - 621 922 621 922 729 922 c 0,20,21 - 1077 922 1077 922 1077 641 c 0,22,23 - 1077 584 1077 584 1057 492 c 1,24,-1 - 944 0 l 1,25,-1 - 780 0 l 1,26,-1 - 889 467 l 1,27,28 - 913 575 913 575 913 643 c 0,29,30 - 913 741 913 741 867.5 780 c 128,-1,31 - 822 819 822 819 735 819 c 0,32,33 - 608 819 608 819 475 723 c 1,34,-1 - 307 0 l 1,35,-1 - 143 0 l 1,36,-1 - 391 1075 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: e -Encoding: 101 101 3 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> -VStem: 150 166<182 446> 872 160<556 758> -AnchorPoint: "cedilla" 535 0 basechar 0 -AnchorPoint: "bottom" 510 0 basechar 0 -AnchorPoint: "ogonek" 559 0 basechar 0 -AnchorPoint: "top" 733 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1032 571 m 0,0,1 - 1032 451 1032 451 844 451 c 2,2,-1 - 328 451 l 1,3,4 - 315 391 315 391 315 340 c 0,5,6 - 315 220 315 220 384 151 c 128,-1,7 - 453 82 453 82 573 82 c 0,8,9 - 720 82 720 82 827 205 c 1,10,-1 - 940 158 l 1,11,12 - 856 76 856 76 748.5 28 c 128,-1,13 - 641 -20 641 -20 520 -20 c 0,14,15 - 351 -20 351 -20 250.5 72.5 c 128,-1,16 - 150 165 150 165 150 324 c 0,17,18 - 150 443 150 443 199.5 555 c 128,-1,19 - 249 667 249 667 327.5 746.5 c 128,-1,20 - 406 826 406 826 504 874 c 128,-1,21 - 602 922 602 922 696 922 c 0,22,23 - 780 922 780 922 846 893.5 c 128,-1,24 - 912 865 912 865 952 815.5 c 128,-1,25 - 992 766 992 766 1012 704 c 128,-1,26 - 1032 642 1032 642 1032 571 c 0,0,1 -362 553 m 1,27,-1 - 786 553 l 2,28,29 - 831 553 831 553 851.5 562.5 c 128,-1,30 - 872 572 872 572 872 596 c 0,31,32 - 872 699 872 699 829.5 759 c 128,-1,33 - 787 819 787 819 702 819 c 0,34,35 - 598 819 598 819 506.5 744.5 c 128,-1,36 - 415 670 415 670 362 553 c 1,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: n -Encoding: 110 110 4 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43G<184 358 821 994> 819 102<221 380 602 914> -VStem: 150 70<770 808> 954 164<389 778> -AnchorPoint: "bottom" 578 0 basechar 0 -AnchorPoint: "cedilla" 578 0 basechar 0 -AnchorPoint: "top" 817 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -328 625 m 2,0,1 - 340 678 340 678 340 719 c 0,2,3 - 340 764 340 764 328 791.5 c 128,-1,4 - 316 819 316 819 295 819 c 0,5,6 - 267 819 267 819 245.5 804.5 c 128,-1,7 - 224 790 224 790 219 770 c 1,8,-1 - 150 770 l 1,9,10 - 164 833 164 833 221.5 877.5 c 128,-1,11 - 279 922 279 922 348 922 c 0,12,13 - 442 922 442 922 489 842 c 1,14,15 - 627 922 627 922 770 922 c 0,16,17 - 1118 922 1118 922 1118 641 c 0,18,19 - 1118 584 1118 584 1098 492 c 1,20,-1 - 985 0 l 1,21,-1 - 821 0 l 1,22,-1 - 930 467 l 1,23,24 - 954 575 954 575 954 643 c 0,25,26 - 954 741 954 741 908.5 780 c 128,-1,27 - 863 819 863 819 776 819 c 0,28,29 - 648 819 648 819 512 721 c 1,30,31 - 511 716 511 716 510 705 c 128,-1,32 - 509 694 509 694 508 688 c 2,33,-1 - 348 0 l 1,34,-1 - 184 0 l 1,35,-1 - 328 625 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: c -Encoding: 99 99 5 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 819 102<553 814> -VStem: 150 166<182 543> 872 147<669 756> -AnchorPoint: "bottom" 541 0 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -150 324 m 0,0,1 - 150 443 150 443 199.5 555 c 128,-1,2 - 249 667 249 667 327.5 746.5 c 128,-1,3 - 406 826 406 826 504 874 c 128,-1,4 - 602 922 602 922 696 922 c 0,5,6 - 830 922 830 922 912 854.5 c 128,-1,7 - 994 787 994 787 1020 676 c 1,8,-1 - 872 608 l 1,9,10 - 869 705 869 705 826.5 762 c 128,-1,11 - 784 819 784 819 702 819 c 0,12,13 - 601 819 601 819 510.5 747.5 c 128,-1,14 - 420 676 420 676 367.5 565.5 c 128,-1,15 - 315 455 315 455 315 340 c 0,16,17 - 315 220 315 220 384 151 c 128,-1,18 - 453 82 453 82 573 82 c 0,19,20 - 720 82 720 82 827 205 c 1,21,-1 - 940 158 l 1,22,23 - 856 76 856 76 748.5 28 c 128,-1,24 - 641 -20 641 -20 520 -20 c 0,25,26 - 351 -20 351 -20 250.5 72.5 c 128,-1,27 - 150 165 150 165 150 324 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: b -Encoding: 98 98 6 -Width: 1069 -VWidth: 0 -Flags: W -HStem: -20 102<417 739> 819 102<614 888> 1270 102<284 461> -VStem: 211 158<129 459> 213 70<1221 1259> 403 174<984 1268> 952 168<362 753> -AnchorPoint: "bottom" 494 0 basechar 0 -AnchorPoint: "top" 813 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1120 606 m 0,0,1 - 1120 561 1120 561 1113 510 c 128,-1,2 - 1106 459 1106 459 1087.5 397.5 c 128,-1,3 - 1069 336 1069 336 1041 278.5 c 128,-1,4 - 1013 221 1013 221 967 166 c 128,-1,5 - 921 111 921 111 864 70 c 128,-1,6 - 807 29 807 29 725.5 4.5 c 128,-1,7 - 644 -20 644 -20 549 -20 c 0,8,9 - 477 -20 477 -20 422.5 -10.5 c 128,-1,10 - 368 -1 368 -1 317 24.5 c 128,-1,11 - 266 50 266 50 238.5 102 c 128,-1,12 - 211 154 211 154 211 231 c 0,13,14 - 211 292 211 292 229 369 c 2,15,-1 - 391 1075 l 2,16,17 - 403 1128 403 1128 403 1169 c 0,18,19 - 403 1214 403 1214 391 1242 c 128,-1,20 - 379 1270 379 1270 358 1270 c 0,21,22 - 331 1270 331 1270 309.5 1255.5 c 128,-1,23 - 288 1241 288 1241 283 1221 c 1,24,-1 - 213 1221 l 1,25,26 - 226 1284 226 1284 284.5 1328 c 128,-1,27 - 343 1372 343 1372 412 1372 c 0,28,29 - 485 1372 485 1372 531.5 1322.5 c 128,-1,30 - 578 1273 578 1273 578 1196 c 0,31,32 - 578 1184 578 1184 569 1139 c 1,33,-1 - 504 850 l 1,34,35 - 627 922 627 922 766 922 c 0,36,37 - 950 922 950 922 1035 837 c 128,-1,38 - 1120 752 1120 752 1120 606 c 0,0,1 -377 303 m 2,39,40 - 369 270 369 270 369 236 c 0,41,42 - 369 190 369 190 387.5 158 c 128,-1,43 - 406 126 406 126 441 110 c 128,-1,44 - 476 94 476 94 514 88 c 128,-1,45 - 552 82 552 82 602 82 c 0,46,47 - 678 82 678 82 745.5 130 c 128,-1,48 - 813 178 813 178 857 252.5 c 128,-1,49 - 901 327 901 327 926.5 414 c 128,-1,50 - 952 501 952 501 952 582 c 0,51,52 - 952 686 952 686 908 752.5 c 128,-1,53 - 864 819 864 819 772 819 c 0,54,55 - 681 819 681 819 606 770.5 c 128,-1,56 - 531 722 531 722 484.5 645 c 128,-1,57 - 438 568 438 568 416 471 c 2,58,-1 - 377 303 l 2,39,40 -EndSplineSet -Validated: 1 -EndChar - -StartChar: s -Encoding: 115 115 7 -Width: 860 -VWidth: 0 -Flags: W -HStem: -20 102<279 603> 819 102<467 723> -VStem: 252 166<581 768> 688 168<168 375> -AnchorPoint: "cedilla" 422 0 basechar 0 -AnchorPoint: "bottom" 422 0 basechar 0 -AnchorPoint: "top" 621 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -252 639 m 0,0,1 - 252 687 252 687 276 737 c 128,-1,2 - 300 787 300 787 341 828 c 128,-1,3 - 382 869 382 869 445 895.5 c 128,-1,4 - 508 922 508 922 580 922 c 0,5,6 - 683 922 683 922 759.5 891.5 c 128,-1,7 - 836 861 836 861 913 795 c 1,8,-1 - 776 723 l 1,9,10 - 769 730 769 730 747 752 c 128,-1,11 - 725 774 725 774 720 778 c 128,-1,12 - 715 782 715 782 697.5 794.5 c 128,-1,13 - 680 807 680 807 667.5 809.5 c 128,-1,14 - 655 812 655 812 634 815.5 c 128,-1,15 - 613 819 613 819 586 819 c 0,16,17 - 539 819 539 819 503.5 801 c 128,-1,18 - 468 783 468 783 451 755.5 c 128,-1,19 - 434 728 434 728 426 703.5 c 128,-1,20 - 418 679 418 679 418 657 c 0,21,22 - 418 573 418 573 553 547 c 0,23,24 - 856 488 856 488 856 313 c 0,25,26 - 856 271 856 271 841.5 227 c 128,-1,27 - 827 183 827 183 792.5 138 c 128,-1,28 - 758 93 758 93 708 58.5 c 128,-1,29 - 658 24 658 24 579 2 c 128,-1,30 - 500 -20 500 -20 403 -20 c 0,31,32 - 345 -20 345 -20 303.5 -12.5 c 128,-1,33 - 262 -5 262 -5 222.5 17 c 128,-1,34 - 183 39 183 39 160 57 c 128,-1,35 - 137 75 137 75 88 117 c 1,36,-1 - 195 193 l 1,37,38 - 201 188 201 188 219 173 c 128,-1,39 - 237 158 237 158 242 153.5 c 128,-1,40 - 247 149 247 149 262 137.5 c 128,-1,41 - 277 126 277 126 283.5 122.5 c 128,-1,42 - 290 119 290 119 304.5 110.5 c 128,-1,43 - 319 102 319 102 328.5 100 c 128,-1,44 - 338 98 338 98 353.5 93 c 128,-1,45 - 369 88 369 88 383.5 86.5 c 128,-1,46 - 398 85 398 85 417 83.5 c 128,-1,47 - 436 82 436 82 457 82 c 0,48,49 - 518 82 518 82 564 103 c 128,-1,50 - 610 124 610 124 632.5 151 c 128,-1,51 - 655 178 655 178 668.5 212 c 128,-1,52 - 682 246 682 246 685 264.5 c 128,-1,53 - 688 283 688 283 688 295 c 0,54,55 - 688 350 688 350 640 379.5 c 128,-1,56 - 592 409 592 409 506 424 c 1,57,58 - 381 449 381 449 316.5 504 c 128,-1,59 - 252 559 252 559 252 639 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: i -Encoding: 105 105 8 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41G<292 465> 1065 164<377 502> -VStem: 135 174<85 272> 430 70<93 131> -AnchorPoint: "bottom" 172 0 basechar 0 -AnchorPoint: "ogonek" 248 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -377 1229 m 1,0,-1 - 541 1229 l 1,1,-1 - 502 1065 l 1,2,-1 - 338 1065 l 1,3,-1 - 377 1229 l 1,0,-1 -319 276 m 2,4,5 - 309 232 309 232 309 182 c 0,6,7 - 309 82 309 82 352 82 c 0,8,9 - 380 82 380 82 402.5 96.5 c 128,-1,10 - 425 111 425 111 430 131 c 1,11,-1 - 500 131 l 1,12,13 - 487 68 487 68 428.5 24 c 128,-1,14 - 370 -20 370 -20 301 -20 c 0,15,16 - 228 -20 228 -20 181.5 29.5 c 128,-1,17 - 135 79 135 79 135 156 c 0,18,19 - 135 183 135 183 141 213 c 2,20,-1 - 301 901 l 1,21,-1 - 465 901 l 1,22,-1 - 319 276 l 2,4,5 -EndSplineSet -Validated: 1 -EndChar - -StartChar: o -Encoding: 111 111 9 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> -VStem: 147 164<157 530> 897 168<366 739> -AnchorPoint: "horn" 999 635 basechar 0 -AnchorPoint: "bottom" 487 0 basechar 0 -AnchorPoint: "ogonek" 508 0 basechar 0 -AnchorPoint: "top" 737 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -532 82 m 0,0,1 - 608 82 608 82 677.5 127.5 c 128,-1,2 - 747 173 747 173 794 244.5 c 128,-1,3 - 841 316 841 316 869 403.5 c 128,-1,4 - 897 491 897 491 897 575 c 0,5,6 - 897 688 897 688 845.5 753.5 c 128,-1,7 - 794 819 794 819 702 819 c 0,8,9 - 602 819 602 819 511 748 c 128,-1,10 - 420 677 420 677 365.5 559 c 128,-1,11 - 311 441 311 441 311 311 c 0,12,13 - 311 201 311 201 366.5 141.5 c 128,-1,14 - 422 82 422 82 532 82 c 0,0,1 -1065 594 m 0,15,16 - 1065 546 1065 546 1056 492.5 c 128,-1,17 - 1047 439 1047 439 1026 378.5 c 128,-1,18 - 1005 318 1005 318 974.5 262 c 128,-1,19 - 944 206 944 206 896 154 c 128,-1,20 - 848 102 848 102 789.5 64 c 128,-1,21 - 731 26 731 26 651 3 c 128,-1,22 - 571 -20 571 -20 479 -20 c 0,23,24 - 318 -20 318 -20 232.5 64.5 c 128,-1,25 - 147 149 147 149 147 301 c 0,26,27 - 147 430 147 430 197.5 547.5 c 128,-1,28 - 248 665 248 665 327 745.5 c 128,-1,29 - 406 826 406 826 504 874 c 128,-1,30 - 602 922 602 922 696 922 c 0,31,32 - 867 922 867 922 966 838 c 128,-1,33 - 1065 754 1065 754 1065 594 c 0,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: t -Encoding: 116 116 10 -Width: 577 -VWidth: 0 -Flags: W -HStem: -20 102<346 523> 799 102<291 371 559 696> -VStem: 229 174<85 272> 524 70<93 131> -AnchorPoint: "bottom" 262 0 basechar 0 -AnchorPoint: "cedilla" 393 4 basechar 0 -AnchorPoint: "top" 582 1352 basechar 0 -LayerCount: 2 -Fore -SplineSet -414 276 m 2,0,1 - 403 228 403 228 403 182 c 0,2,3 - 403 82 403 82 446 82 c 0,4,5 - 474 82 474 82 496.5 96.5 c 128,-1,6 - 519 111 519 111 524 131 c 1,7,-1 - 594 131 l 1,8,9 - 581 68 581 68 522.5 24 c 128,-1,10 - 464 -20 464 -20 395 -20 c 0,11,12 - 322 -20 322 -20 275.5 29.5 c 128,-1,13 - 229 79 229 79 229 156 c 0,14,15 - 229 178 229 178 236 213 c 1,16,-1 - 371 799 l 1,17,-1 - 236 799 l 1,18,-1 - 291 901 l 1,19,-1 - 395 901 l 1,20,-1 - 463 1198 l 1,21,-1 - 635 1229 l 1,22,-1 - 559 901 l 1,23,-1 - 721 901 l 1,24,-1 - 696 799 l 1,25,-1 - 535 799 l 1,26,-1 - 414 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: m -Encoding: 109 109 11 -Width: 1574 -VWidth: 0 -Flags: W -HStem: 0 43G<184 358 760 933 1317 1490> 819 102<221 380 584 880 1151 1437> -VStem: 150 70<770 808> 340 174<527 759> 1460 158<430 798> -AnchorPoint: "bottom" 844 0 basechar 0 -AnchorPoint: "top" 1075 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -328 625 m 2,0,1 - 340 678 340 678 340 719 c 0,2,3 - 340 764 340 764 328 791.5 c 128,-1,4 - 316 819 316 819 295 819 c 0,5,6 - 267 819 267 819 245.5 804.5 c 128,-1,7 - 224 790 224 790 219 770 c 1,8,-1 - 150 770 l 1,9,10 - 164 833 164 833 221.5 877.5 c 128,-1,11 - 279 922 279 922 348 922 c 0,12,13 - 442 922 442 922 489 842 c 1,14,15 - 557 883 557 883 614 902.5 c 128,-1,16 - 671 922 671 922 739 922 c 0,17,18 - 952 922 952 922 1022 815 c 1,19,20 - 1183 922 1183 922 1307 922 c 0,21,22 - 1471 922 1471 922 1544.5 860.5 c 128,-1,23 - 1618 799 1618 799 1618 670 c 0,24,25 - 1618 598 1618 598 1593 492 c 2,26,-1 - 1481 0 l 1,27,-1 - 1317 0 l 1,28,-1 - 1432 500 l 2,29,30 - 1460 624 1460 624 1460 686 c 0,31,32 - 1460 764 1460 764 1425 791.5 c 128,-1,33 - 1390 819 1390 819 1313 819 c 0,34,35 - 1174 819 1174 819 1090 719 c 1,36,-1 - 924 0 l 1,37,-1 - 760 0 l 1,38,-1 - 874 500 l 2,39,40 - 903 626 903 626 903 684 c 0,41,42 - 903 764 903 764 865.5 791.5 c 128,-1,43 - 828 819 828 819 745 819 c 0,44,45 - 630 819 630 819 514 727 c 1,46,47 - 514 720 514 720 511 705.5 c 128,-1,48 - 508 691 508 691 508 688 c 2,49,-1 - 348 0 l 1,50,-1 - 184 0 l 1,51,-1 - 328 625 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: f -Encoding: 102 102 12 -Width: 608 -VWidth: 0 -Flags: W -HStem: -276 102<36 145> 799 102<311 391 580 717> 1270 102<687 874> -VStem: -39 74<-170 -125> -AnchorPoint: "bottom" 215 -256 basechar 0 -AnchorPoint: "top" 713 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -360 -43 m 2,0,1 - 337 -140 337 -140 259.5 -208 c 128,-1,2 - 182 -276 182 -276 94 -276 c 0,3,4 - 35 -276 35 -276 -2 -243 c 128,-1,5 - -39 -210 -39 -210 -39 -158 c 0,6,7 - -39 -145 -39 -145 -35 -125 c 1,8,-1 - 35 -125 l 1,9,-1 - 35 -133 l 2,10,11 - 35 -151 35 -151 49.5 -162.5 c 128,-1,12 - 64 -174 64 -174 88 -174 c 0,13,14 - 119 -174 119 -174 155.5 -116.5 c 128,-1,15 - 192 -59 192 -59 211 20 c 2,16,-1 - 391 799 l 1,17,-1 - 256 799 l 1,18,-1 - 311 901 l 1,19,-1 - 416 901 l 1,20,-1 - 461 1096 l 2,21,22 - 491 1222 491 1222 575 1297 c 128,-1,23 - 659 1372 659 1372 780 1372 c 0,24,25 - 865 1372 865 1372 920 1350 c 1,26,-1 - 852 1239 l 1,27,28 - 833 1270 833 1270 786 1270 c 0,29,30 - 722 1270 722 1270 682 1221 c 128,-1,31 - 642 1172 642 1172 612 1042 c 2,32,-1 - 580 901 l 1,33,-1 - 741 901 l 1,34,-1 - 717 799 l 1,35,-1 - 555 799 l 1,36,-1 - 360 -43 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: j -Encoding: 106 106 13 -Width: 376 -VWidth: 0 -Flags: W -HStem: -348 102<-190 42> 860 41G<322 496> 1065 164<408 532> -AnchorPoint: "bottom" -63 -348 basechar 0 -LayerCount: 2 -Fore -SplineSet --141 -195 m 1,0,1 - -119 -246 -119 -246 -45 -246 c 0,2,3 - 15 -246 15 -246 54 -187.5 c 128,-1,4 - 93 -129 93 -129 123 0 c 2,5,-1 - 332 901 l 1,6,-1 - 496 901 l 1,7,-1 - 270 -68 l 2,8,9 - 248 -164 248 -164 185.5 -229.5 c 128,-1,10 - 123 -295 123 -295 51 -321.5 c 128,-1,11 - -21 -348 -21 -348 -98 -348 c 0,12,13 - -228 -348 -228 -348 -285 -256 c 1,14,-1 - -141 -195 l 1,0,1 -408 1229 m 1,15,-1 - 571 1229 l 1,16,-1 - 532 1065 l 1,17,-1 - 369 1065 l 1,18,-1 - 408 1229 l 1,15,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: space -Encoding: 32 32 14 -Width: 614 -VWidth: 0 -Flags: W -LayerCount: 2 -EndChar - -StartChar: l -Encoding: 108 108 15 -Width: 495 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> -VStem: 135 174<85 274> 430 70<93 131> -AnchorPoint: "bottom" 172 0 basechar 0 -AnchorPoint: "cedilla" 287 -4 basechar 0 -AnchorPoint: "top" 506 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -319 276 m 6,0,1 - 309 232 309 232 309 182 c 4,2,3 - 309 82 309 82 352 82 c 4,4,5 - 380 82 380 82 402.5 96.5 c 132,-1,6 - 425 111 425 111 430 131 c 5,7,-1 - 500 131 l 5,8,9 - 487 68 487 68 428.5 24 c 132,-1,10 - 370 -20 370 -20 301 -20 c 4,11,12 - 228 -20 228 -20 181.5 29.5 c 132,-1,13 - 135 79 135 79 135 156 c 4,14,15 - 135 183 135 183 141 213 c 6,16,-1 - 403 1352 l 1,17,-1 - 567 1352 l 1,18,-1 - 319 276 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: p -Encoding: 112 112 16 -Width: 1107 -VWidth: 0 -Flags: W -HStem: -16 102<505 758> 823 102<229 383 639 924> -VStem: 150 70<770 804> 993 164<365 748> -AnchorPoint: "bottom" 635 0 basechar 0 -AnchorPoint: "top" 850 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -635 86 m 0,0,1 - 710 86 710 86 793 152.5 c 128,-1,2 - 876 219 876 219 934.5 333.5 c 128,-1,3 - 993 448 993 448 993 569 c 0,4,5 - 993 677 993 677 949.5 750 c 128,-1,6 - 906 823 906 823 825 823 c 0,7,8 - 669 823 669 823 585 741.5 c 128,-1,9 - 501 660 501 660 465 504 c 0,10,11 - 440 399 440 399 440 322 c 0,12,13 - 440 217 440 217 486 151.5 c 128,-1,14 - 532 86 532 86 635 86 c 0,0,1 -328 625 m 1,15,16 - 348 719 348 719 348 748 c 0,17,18 - 348 819 348 819 295 819 c 0,19,20 - 270 819 270 819 247 804 c 128,-1,21 - 224 789 224 789 219 770 c 1,22,-1 - 150 770 l 1,23,24 - 163 832 163 832 222 877 c 128,-1,25 - 281 922 281 922 348 922 c 0,26,27 - 451 922 451 922 496 834 c 1,28,29 - 619 926 619 926 817 926 c 0,30,31 - 975 926 975 926 1066 828 c 128,-1,32 - 1157 730 1157 730 1157 575 c 0,33,34 - 1157 461 1157 461 1107.5 352 c 128,-1,35 - 1058 243 1058 243 978 162.5 c 128,-1,36 - 898 82 898 82 792.5 33 c 128,-1,37 - 687 -16 687 -16 580 -16 c 0,38,39 - 440 -16 440 -16 362 59 c 1,40,-1 - 254 -410 l 1,41,-1 - 90 -410 l 1,42,-1 - 328 625 l 1,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: q -Encoding: 113 113 17 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -410 102<831 1008> -20 102<389 663> 819 102<538 861> -VStem: 156 168<148 534> 715 174<-306 -13> 909 158<450 772> 1010 70<-296 -258> -AnchorPoint: "bottom" 492 0 basechar 0 -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -156 295 m 0,0,1 - 156 360 156 360 170.5 435 c 128,-1,2 - 185 510 185 510 225.5 598.5 c 128,-1,3 - 266 687 266 687 327.5 757 c 128,-1,4 - 389 827 389 827 493.5 874.5 c 128,-1,5 - 598 922 598 922 729 922 c 0,6,7 - 786 922 786 922 831 916.5 c 128,-1,8 - 876 911 876 911 922 895 c 128,-1,9 - 968 879 968 879 998.5 852 c 128,-1,10 - 1029 825 1029 825 1048 778.5 c 128,-1,11 - 1067 732 1067 732 1067 670 c 128,-1,12 - 1067 608 1067 608 1049 532 c 2,13,-1 - 899 -113 l 2,14,15 - 889 -157 889 -157 889 -207 c 0,16,17 - 889 -307 889 -307 932 -307 c 0,18,19 - 960 -307 960 -307 982.5 -292.5 c 128,-1,20 - 1005 -278 1005 -278 1010 -258 c 1,21,-1 - 1079 -258 l 1,22,23 - 1065 -321 1065 -321 1007.5 -365.5 c 128,-1,24 - 950 -410 950 -410 881 -410 c 0,25,26 - 808 -410 808 -410 761.5 -360 c 128,-1,27 - 715 -310 715 -310 715 -233 c 0,28,29 - 715 -206 715 -206 721 -176 c 1,30,-1 - 774 49 l 1,31,32 - 657 -20 657 -20 512 -20 c 0,33,34 - 328 -20 328 -20 242 64.5 c 128,-1,35 - 156 149 156 149 156 295 c 0,0,1 -860 430 m 2,36,-1 - 899 598 l 2,37,38 - 909 640 909 640 909 666 c 0,39,40 - 909 712 909 712 890 744 c 128,-1,41 - 871 776 871 776 836 791.5 c 128,-1,42 - 801 807 801 807 762.5 813 c 128,-1,43 - 724 819 724 819 674 819 c 0,44,45 - 598 819 598 819 530.5 771 c 128,-1,46 - 463 723 463 723 419 648.5 c 128,-1,47 - 375 574 375 574 349.5 487 c 128,-1,48 - 324 400 324 400 324 319 c 0,49,50 - 324 215 324 215 368 148.5 c 128,-1,51 - 412 82 412 82 504 82 c 0,52,53 - 595 82 595 82 670 130.5 c 128,-1,54 - 745 179 745 179 791.5 256 c 128,-1,55 - 838 333 838 333 860 430 c 2,36,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: r -Encoding: 114 114 18 -Width: 770 -VWidth: 0 -Flags: W -HStem: 0 43G<184 358> 819 102<221 380 570 863> -VStem: 150 70<770 808> 340 174<629 766> -AnchorPoint: "bottom" 270 0 basechar 0 -AnchorPoint: "cedilla" 262 0 basechar 0 -AnchorPoint: "top" 666 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -881 741 m 1,0,1 - 860 819 860 819 723 819 c 0,2,3 - 661 819 661 819 613 797.5 c 128,-1,4 - 565 776 565 776 514 731 c 1,5,6 - 514 709 514 709 508 688 c 1,7,-1 - 348 0 l 1,8,-1 - 184 0 l 1,9,-1 - 328 625 l 2,10,11 - 340 678 340 678 340 719 c 0,12,13 - 340 764 340 764 328 791.5 c 128,-1,14 - 316 819 316 819 295 819 c 0,15,16 - 267 819 267 819 245.5 804.5 c 128,-1,17 - 224 790 224 790 219 770 c 1,18,-1 - 150 770 l 1,19,20 - 164 833 164 833 221.5 877.5 c 128,-1,21 - 279 922 279 922 348 922 c 0,22,23 - 442 922 442 922 489 842 c 1,24,25 - 558 884 558 884 611.5 903 c 128,-1,26 - 665 922 665 922 733 922 c 0,27,28 - 839 922 839 922 915 893 c 1,29,-1 - 881 741 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: u -Encoding: 117 117 19 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41G<281 455 918 1092> -VStem: 154 172<137 501> 762 174<142 374> 1057 70<93 131> -AnchorPoint: "bottom" 471 0 basechar 0 -AnchorPoint: "horn" 1030 635 basechar 0 -AnchorPoint: "ogonek" 932 0 basechar 0 -AnchorPoint: "top" 719 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -946 276 m 2,0,1 - 936 232 936 232 936 182 c 0,2,3 - 936 82 936 82 979 82 c 0,4,5 - 1007 82 1007 82 1029.5 96.5 c 128,-1,6 - 1052 111 1052 111 1057 131 c 1,7,-1 - 1126 131 l 1,8,9 - 1113 68 1113 68 1055 24 c 128,-1,10 - 997 -20 997 -20 928 -20 c 0,11,12 - 832 -20 832 -20 784 61 c 1,13,14 - 714 23 714 23 631 1.5 c 128,-1,15 - 548 -20 548 -20 475 -20 c 0,16,17 - 309 -20 309 -20 231.5 43.5 c 128,-1,18 - 154 107 154 107 154 240 c 0,19,20 - 154 311 154 311 176 410 c 1,21,-1 - 291 901 l 1,22,-1 - 455 901 l 1,23,-1 - 346 434 l 2,24,25 - 326 350 326 350 326 281 c 0,26,27 - 326 171 326 171 379.5 126.5 c 128,-1,28 - 433 82 433 82 528 82 c 0,29,30 - 646 82 646 82 762 174 c 1,31,32 - 762 177 762 177 768 213 c 1,33,-1 - 928 901 l 1,34,-1 - 1092 901 l 1,35,-1 - 946 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: g -Encoding: 103 103 20 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 592> -20 102<394 702> 819 102<529 784 1073 1185> -VStem: 147 166<162 536> 1186 74<770 815> -AnchorPoint: "bottom" 397 -330 basechar 0 -AnchorPoint: "top" 709 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -672 819 m 128,-1,1 - 590 819 590 819 520 769.5 c 128,-1,2 - 450 720 450 720 406 644 c 128,-1,3 - 362 568 362 568 337.5 482.5 c 128,-1,4 - 313 397 313 397 313 319 c 0,5,6 - 313 207 313 207 371.5 144.5 c 128,-1,7 - 430 82 430 82 543 82 c 0,8,9 - 652 82 652 82 733 145 c 1,10,-1 - 842 608 l 1,11,12 - 839 705 839 705 796.5 762 c 128,-1,0 - 754 819 754 819 672 819 c 128,-1,1 -705 23 m 1,13,14 - 600 -20 600 -20 489 -20 c 0,15,16 - 326 -20 326 -20 236.5 67 c 128,-1,17 - 147 154 147 154 147 307 c 0,18,19 - 147 461 147 461 220 604 c 128,-1,20 - 293 747 293 747 414 834.5 c 128,-1,21 - 535 922 535 922 666 922 c 0,22,23 - 833 922 833 922 922 815 c 1,24,25 - 962 865 962 865 1016.5 893.5 c 128,-1,26 - 1071 922 1071 922 1126 922 c 0,27,28 - 1185 922 1185 922 1222.5 888.5 c 128,-1,29 - 1260 855 1260 855 1260 803 c 0,30,31 - 1260 795 1260 795 1255 770 c 1,32,-1 - 1186 770 l 1,33,-1 - 1186 778 l 2,34,35 - 1186 795 1186 795 1170 807 c 128,-1,36 - 1154 819 1154 819 1130 819 c 0,37,38 - 1099 819 1099 819 1063 761.5 c 128,-1,39 - 1027 704 1027 704 1008 625 c 2,40,-1 - 901 160 l 2,41,42 - 876 51 876 51 854 -20.5 c 128,-1,43 - 832 -92 832 -92 800.5 -153 c 128,-1,44 - 769 -214 769 -214 733.5 -248.5 c 128,-1,45 - 698 -283 698 -283 644 -307 c 128,-1,46 - 590 -331 590 -331 524 -339.5 c 128,-1,47 - 458 -348 458 -348 365 -348 c 0,48,49 - 215 -348 215 -348 61 -256 c 1,50,-1 - 188 -150 l 1,51,52 - 304 -246 304 -246 418 -246 c 0,53,54 - 489 -246 489 -246 535 -233 c 128,-1,55 - 581 -220 581 -220 613 -185.5 c 128,-1,56 - 645 -151 645 -151 664.5 -104 c 128,-1,57 - 684 -57 684 -57 705 23 c 1,13,14 -EndSplineSet -Validated: 1 -EndChar - -StartChar: v -Encoding: 118 118 21 -Width: 931 -VWidth: 0 -Flags: W -HStem: 0 43G<384 577> 860 41G<270 425 901 1090> -AnchorPoint: "bottom" 467 0 basechar 0 -AnchorPoint: "top" 707 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -553 0 m 1,0,-1 - 389 0 l 1,1,-1 - 270 901 l 1,2,-1 - 420 901 l 1,3,-1 - 512 205 l 1,4,-1 - 926 901 l 1,5,-1 - 1090 901 l 1,6,-1 - 553 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: w -Encoding: 119 119 22 -Width: 1587 -VWidth: 0 -Flags: W -HStem: 0 43G<384 577 1039 1233> 860 41G<270 425 901 1081 1557 1745> -AnchorPoint: "bottom" 799 0 basechar 0 -AnchorPoint: "top" 1024 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -512 205 m 1,0,-1 - 926 901 l 1,1,-1 - 1075 901 l 1,2,-1 - 1167 205 l 1,3,-1 - 1581 901 l 1,4,-1 - 1745 901 l 1,5,-1 - 1208 0 l 1,6,-1 - 1044 0 l 1,7,-1 - 954 676 l 1,8,-1 - 553 0 l 1,9,-1 - 389 0 l 1,10,-1 - 270 901 l 1,11,-1 - 420 901 l 1,12,-1 - 512 205 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: x -Encoding: 120 120 23 -Width: 954 -VWidth: 0 -Flags: W -HStem: 0 43G<61 276 687 883> 860 41G<328 521 822 1034> -AnchorPoint: "bottom" 469 0 basechar 0 -AnchorPoint: "top" 707 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -498 494 m 1,0,-1 - 328 901 l 1,1,-1 - 504 901 l 1,2,-1 - 616 629 l 1,3,-1 - 858 901 l 1,4,-1 - 1034 901 l 1,5,-1 - 674 494 l 1,6,-1 - 883 0 l 1,7,-1 - 705 0 l 1,8,-1 - 555 358 l 1,9,-1 - 240 0 l 1,10,-1 - 61 0 l 1,11,-1 - 498 494 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: y -Encoding: 121 121 24 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<133 262> 860 41G<270 425 901 1090> -AnchorPoint: "ogonek" 631 0 basechar 0 -AnchorPoint: "bottom" 299 -315 basechar 0 -AnchorPoint: "top" 709 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -137 -348 m 0,0,1 - 82 -348 82 -348 43 -315 c 128,-1,2 - 4 -282 4 -282 -43 -213 c 1,3,-1 - 102 -147 l 1,4,5 - 133 -211 133 -211 151 -228.5 c 128,-1,6 - 169 -246 169 -246 190 -246 c 0,7,8 - 209 -246 209 -246 225.5 -236.5 c 128,-1,9 - 242 -227 242 -227 265.5 -195.5 c 128,-1,10 - 289 -164 289 -164 301 -145 c 128,-1,11 - 313 -126 313 -126 348 -68 c 0,12,13 - 357 -53 357 -53 362 -45 c 2,14,-1 - 389 0 l 1,15,-1 - 270 901 l 1,16,-1 - 420 901 l 1,17,-1 - 512 205 l 1,18,-1 - 926 901 l 1,19,-1 - 1090 901 l 1,20,-1 - 522 -49 l 2,21,22 - 434 -197 434 -197 342 -272.5 c 128,-1,23 - 250 -348 250 -348 137 -348 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: k -Encoding: 107 107 25 -Width: 917 -VWidth: 0 -Flags: W -HStem: 0 43G<143 317 710 909> 860 41G<847 1081> 1270 102<284 461> -VStem: 213 70<1221 1259> 403 174<987 1268> -AnchorPoint: "bottom" 504 0 basechar 0 -AnchorPoint: "cedilla" 504 0 basechar 0 -AnchorPoint: "top" 715 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -307 0 m 1,0,-1 - 143 0 l 1,1,-1 - 391 1075 l 2,2,3 - 403 1128 403 1128 403 1169 c 0,4,5 - 403 1214 403 1214 391 1242 c 128,-1,6 - 379 1270 379 1270 358 1270 c 0,7,8 - 331 1270 331 1270 309.5 1255.5 c 128,-1,9 - 288 1241 288 1241 283 1221 c 1,10,-1 - 213 1221 l 1,11,12 - 226 1284 226 1284 284.5 1328 c 128,-1,13 - 343 1372 343 1372 412 1372 c 0,14,15 - 485 1372 485 1372 531.5 1322.5 c 128,-1,16 - 578 1273 578 1273 578 1196 c 0,17,18 - 578 1184 578 1184 569 1139 c 1,19,-1 - 418 477 l 1,20,-1 - 893 901 l 1,21,-1 - 1081 901 l 1,22,-1 - 631 502 l 1,23,-1 - 909 0 l 1,24,-1 - 733 0 l 1,25,-1 - 512 395 l 1,26,-1 - 369 268 l 1,27,-1 - 307 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: z -Encoding: 122 122 26 -Width: 845 -VWidth: 0 -Flags: W -HStem: -233 82<181 334> 799 102<240 668> -VStem: 573 164<18 294> -AnchorPoint: "bottom" 295 -207 basechar 0 -AnchorPoint: "top" 575 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -668 799 m 1,0,-1 - 184 799 l 1,1,-1 - 240 901 l 1,2,-1 - 928 901 l 1,3,-1 - 481 512 l 1,4,5 - 514 492 514 492 544.5 470 c 128,-1,6 - 575 448 575 448 611.5 413.5 c 128,-1,7 - 648 379 648 379 674.5 343 c 128,-1,8 - 701 307 701 307 719 259.5 c 128,-1,9 - 737 212 737 212 737 164 c 0,10,11 - 737 91 737 91 706.5 29 c 128,-1,12 - 676 -33 676 -33 627.5 -72.5 c 128,-1,13 - 579 -112 579 -112 520.5 -143 c 128,-1,14 - 462 -174 462 -174 403 -190.5 c 128,-1,15 - 344 -207 344 -207 296 -217 c 0,16,17 - 246 -227 246 -227 216 -230 c 2,18,-1 - 186 -233 l 1,19,-1 - 154 -152 l 1,20,21 - 163 -151 163 -151 178 -149.5 c 128,-1,22 - 193 -148 193 -148 236.5 -139 c 128,-1,23 - 280 -130 280 -130 319.5 -117 c 128,-1,24 - 359 -104 359 -104 407.5 -79.5 c 128,-1,25 - 456 -55 456 -55 490.5 -24.5 c 128,-1,26 - 525 6 525 6 549 54 c 128,-1,27 - 573 102 573 102 573 158 c 0,28,29 - 573 200 573 200 558 240 c 128,-1,30 - 543 280 543 280 518.5 311 c 128,-1,31 - 494 342 494 342 465 370 c 128,-1,32 - 436 398 436 398 407 417.5 c 128,-1,33 - 378 437 378 437 353.5 451 c 128,-1,34 - 329 465 329 465 314 472 c 2,35,-1 - 299 479 l 1,36,-1 - 668 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: A -Encoding: 65 65 27 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43G<31 219 1086 1255> 410 102<500 1024> 1393 41G<860 1070> -AnchorPoint: "bottom" 639 0 basechar 0 -AnchorPoint: "ogonek" 1092 0 basechar 0 -AnchorPoint: "top" 975 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1092 6 m 1,0,-1 -31 0 m 1,1,-1 - 885 1434 l 1,2,-1 - 1065 1434 l 1,3,-1 - 1255 0 l 1,4,-1 - 1092 0 l 1,5,-1 - 1036 410 l 1,6,-1 - 438 410 l 1,7,-1 - 195 0 l 1,8,-1 - 31 0 l 1,1,-1 -928 1231 m 1,9,-1 - 500 512 l 1,10,-1 - 1024 512 l 1,11,-1 - 928 1231 l 1,9,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: B -Encoding: 66 66 28 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<281 700> 727 102<449 775> 1331 102<563 901> -VStem: 872 176<300 657> 944 178<999 1290> -AnchorPoint: "bottom" 471 0 basechar 0 -AnchorPoint: "top" 741 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -547 102 m 2,0,1 - 622 102 622 102 684.5 136 c 128,-1,2 - 747 170 747 170 787.5 225.5 c 128,-1,3 - 828 281 828 281 850 349.5 c 128,-1,4 - 872 418 872 418 872 489 c 0,5,6 - 872 536 872 536 862 577 c 128,-1,7 - 852 618 852 618 831.5 652.5 c 128,-1,8 - 811 687 811 687 775 707 c 128,-1,9 - 739 727 739 727 690 727 c 2,10,-1 - 424 727 l 1,11,-1 - 281 102 l 1,12,-1 - 547 102 l 2,0,1 -449 829 m 1,13,-1 - 629 829 l 2,14,15 - 747 829 747 829 845.5 925.5 c 128,-1,16 - 944 1022 944 1022 944 1159 c 0,17,18 - 944 1232 944 1232 908.5 1281.5 c 128,-1,19 - 873 1331 873 1331 788 1331 c 2,20,-1 - 563 1331 l 1,21,-1 - 449 829 l 1,13,-1 -872 795 m 1,22,23 - 963 756 963 756 1006 677.5 c 128,-1,24 - 1049 599 1049 599 1049 500 c 0,25,26 - 1049 427 1049 427 1028.5 356.5 c 128,-1,27 - 1008 286 1008 286 963.5 221 c 128,-1,28 - 919 156 919 156 855 107 c 128,-1,29 - 791 58 791 58 697.5 29 c 128,-1,30 - 604 0 604 0 492 0 c 2,31,-1 - 82 0 l 1,32,-1 - 414 1434 l 1,33,-1 - 782 1434 l 2,34,35 - 1122 1434 1122 1434 1122 1188 c 0,36,37 - 1122 1065 1122 1065 1056 960.5 c 128,-1,38 - 990 856 990 856 872 795 c 1,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: P -Encoding: 80 80 29 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276> 655 102<440 858> 1331 102<573 969> -VStem: 1032 174<951 1271> -AnchorPoint: "bottom" 369 0 basechar 0 -AnchorPoint: "top" 811 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1206 1128 m 0,0,1 - 1206 1066 1206 1066 1184 1001 c 128,-1,2 - 1162 936 1162 936 1116 874 c 128,-1,3 - 1070 812 1070 812 1007 763 c 128,-1,4 - 944 714 944 714 855 684.5 c 128,-1,5 - 766 655 766 655 664 655 c 2,6,-1 - 418 655 l 1,7,-1 - 266 0 l 1,8,-1 - 92 0 l 1,9,-1 - 424 1434 l 1,10,-1 - 844 1434 l 2,11,12 - 923 1434 923 1434 986.5 1416 c 128,-1,13 - 1050 1398 1050 1398 1090 1368.5 c 128,-1,14 - 1130 1339 1130 1339 1157 1299 c 128,-1,15 - 1184 1259 1184 1259 1195 1216.5 c 128,-1,16 - 1206 1174 1206 1174 1206 1128 c 0,0,1 -573 1331 m 1,17,-1 - 440 758 l 1,18,-1 - 717 758 l 2,19,20 - 807 758 807 758 881 816 c 128,-1,21 - 955 874 955 874 993.5 958 c 128,-1,22 - 1032 1042 1032 1042 1032 1128 c 0,23,24 - 1032 1215 1032 1215 988.5 1273 c 128,-1,25 - 945 1331 945 1331 850 1331 c 2,26,-1 - 573 1331 l 1,17,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: C -Encoding: 67 67 30 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 1352 102<814 1199> -VStem: 201 176<307 773> -AnchorPoint: "bottom" 717 0 basechar 0 -AnchorPoint: "cedilla" 717 0 basechar 0 -AnchorPoint: "top" 1008 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1012 1352 m 0,0,1 - 892 1352 892 1352 785.5 1294 c 128,-1,2 - 679 1236 679 1236 606.5 1145 c 128,-1,3 - 534 1054 534 1054 480.5 942.5 c 128,-1,4 - 427 831 427 831 402 722.5 c 128,-1,5 - 377 614 377 614 377 522 c 0,6,7 - 377 433 377 433 400 358 c 128,-1,8 - 423 283 423 283 461 233 c 128,-1,9 - 499 183 499 183 548 148 c 128,-1,10 - 597 113 597 113 648 97.5 c 128,-1,11 - 699 82 699 82 750 82 c 0,12,13 - 990 82 990 82 1149 264 c 1,14,-1 - 1257 209 l 1,15,16 - 1153 106 1153 106 1005 43 c 128,-1,17 - 857 -20 857 -20 696 -20 c 0,18,19 - 626 -20 626 -20 557 -0.5 c 128,-1,20 - 488 19 488 19 423.5 61.5 c 128,-1,21 - 359 104 359 104 310 164.5 c 128,-1,22 - 261 225 261 225 231 314.5 c 128,-1,23 - 201 404 201 404 201 510 c 0,24,25 - 201 612 201 612 228 722 c 128,-1,26 - 255 832 255 832 304 937 c 128,-1,27 - 353 1042 353 1042 426.5 1136 c 128,-1,28 - 500 1230 500 1230 587 1300.5 c 128,-1,29 - 674 1371 674 1371 782.5 1412.5 c 128,-1,30 - 891 1454 891 1454 1006 1454 c 0,31,32 - 1368 1454 1368 1454 1489 1245 c 1,33,-1 - 1321 1178 l 1,34,35 - 1239 1352 1239 1352 1012 1352 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: D -Encoding: 68 68 31 -Width: 1216 -VWidth: 0 -Flags: W -HStem: 0 102<291 782> 1331 102<573 1062> -VStem: 1157 172<718 1227> -AnchorPoint: "bottom" 512 0 basechar 0 -AnchorPoint: "top" 831 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1329 1020 m 0,0,1 - 1329 962 1329 962 1319.5 885.5 c 128,-1,2 - 1310 809 1310 809 1285.5 710 c 128,-1,3 - 1261 611 1261 611 1224.5 514.5 c 128,-1,4 - 1188 418 1188 418 1128.5 324 c 128,-1,5 - 1069 230 1069 230 995 159 c 128,-1,6 - 921 88 921 88 815.5 44 c 128,-1,7 - 710 0 710 0 588 0 c 2,8,-1 - 92 0 l 1,9,-1 - 424 1434 l 1,10,-1 - 920 1434 l 2,11,12 - 1329 1434 1329 1434 1329 1020 c 0,0,1 -573 1331 m 1,13,-1 - 291 102 l 1,14,-1 - 643 102 l 2,15,16 - 728 102 728 102 804.5 153 c 128,-1,17 - 881 204 881 204 935 287 c 128,-1,18 - 989 370 989 370 1033 470.5 c 128,-1,19 - 1077 571 1077 571 1103.5 676 c 128,-1,20 - 1130 781 1130 781 1143.5 870 c 128,-1,21 - 1157 959 1157 959 1157 1024 c 0,22,23 - 1157 1185 1157 1185 1094 1258 c 128,-1,24 - 1031 1331 1031 1331 926 1331 c 2,25,-1 - 573 1331 l 1,13,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: E -Encoding: 69 69 32 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> -AnchorPoint: "cedilla" 563 0 basechar 0 -AnchorPoint: "bottom" 537 0 basechar 0 -AnchorPoint: "ogonek" 754 0 basechar 0 -AnchorPoint: "top" 854 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -942 0 m 1,0,-1 - 82 0 l 1,1,-1 - 414 1434 l 1,2,-1 - 1241 1434 l 1,3,-1 - 1217 1331 l 1,4,-1 - 563 1331 l 1,5,-1 - 465 901 l 1,6,-1 - 934 901 l 1,7,-1 - 909 799 l 1,8,-1 - 440 799 l 1,9,-1 - 281 102 l 1,10,-1 - 967 102 l 1,11,-1 - 942 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: F -Encoding: 70 70 33 -Width: 899 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276> 799 102<475 920> 1331 102<573 1227> -AnchorPoint: "bottom" 328 0 basechar 0 -AnchorPoint: "top" 854 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -92 0 m 1,0,-1 - 424 1434 l 1,1,-1 - 1251 1434 l 1,2,-1 - 1227 1331 l 1,3,-1 - 573 1331 l 1,4,-1 - 475 901 l 1,5,-1 - 944 901 l 1,6,-1 - 920 799 l 1,7,-1 - 451 799 l 1,8,-1 - 266 0 l 1,9,-1 - 92 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: G -Encoding: 71 71 34 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 717 102<1059 1210> 1331 102<803 1211> -VStem: 201 176<307 781> -AnchorPoint: "cedilla" 717 0 basechar 0 -AnchorPoint: "top" 1008 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1395 819 m 1,0,-1 - 1257 209 l 1,1,2 - 1153 106 1153 106 1005 43 c 128,-1,3 - 857 -20 857 -20 696 -20 c 0,4,5 - 626 -20 626 -20 557 -0.5 c 128,-1,6 - 488 19 488 19 423.5 61.5 c 128,-1,7 - 359 104 359 104 310 164.5 c 128,-1,8 - 261 225 261 225 231 314.5 c 128,-1,9 - 201 404 201 404 201 510 c 0,10,11 - 201 633 201 633 237.5 763 c 128,-1,12 - 274 893 274 893 344.5 1012.5 c 128,-1,13 - 415 1132 415 1132 509 1226.5 c 128,-1,14 - 603 1321 603 1321 729.5 1377.5 c 128,-1,15 - 856 1434 856 1434 993 1434 c 0,16,17 - 1379 1434 1379 1434 1489 1245 c 1,18,-1 - 1321 1178 l 1,19,20 - 1249 1331 1249 1331 999 1331 c 0,21,22 - 898 1331 898 1331 807.5 1292 c 128,-1,23 - 717 1253 717 1253 650.5 1187 c 128,-1,24 - 584 1121 584 1121 530.5 1038 c 128,-1,25 - 477 955 477 955 444.5 863.5 c 128,-1,26 - 412 772 412 772 394.5 685 c 128,-1,27 - 377 598 377 598 377 522 c 0,28,29 - 377 433 377 433 400 358 c 128,-1,30 - 423 283 423 283 461 233 c 128,-1,31 - 499 183 499 183 548 148 c 128,-1,32 - 597 113 597 113 648 97.5 c 128,-1,33 - 699 82 699 82 750 82 c 0,34,35 - 946 82 946 82 1092 209 c 1,36,-1 - 1210 717 l 1,37,-1 - 1038 717 l 1,38,-1 - 1059 819 l 1,39,-1 - 1395 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: H -Encoding: 72 72 35 -Width: 1259 -VWidth: 0 -Flags: W -HStem: 0 43G<82 265 915 1099> 717 102<444 1081> 1393 41G<404 588 1238 1421> -AnchorPoint: "bottom" 582 0 basechar 0 -AnchorPoint: "top" 926 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -588 1434 m 1,0,-1 - 444 819 l 1,1,-1 - 1104 819 l 1,2,-1 - 1247 1434 l 1,3,-1 - 1421 1434 l 1,4,-1 - 1090 0 l 1,5,-1 - 915 0 l 1,6,-1 - 1081 717 l 1,7,-1 - 422 717 l 1,8,-1 - 256 0 l 1,9,-1 - 82 0 l 1,10,-1 - 414 1434 l 1,11,-1 - 588 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: I -Encoding: 73 73 36 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276> 1393 41G<414 598> -VStem: 92 506 -AnchorPoint: "ogonek" 156 0 basechar 0 -AnchorPoint: "top" 514 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -598 1434 m 25,0,-1 - 266 0 l 1,1,-1 - 92 0 l 1,2,-1 - 424 1434 l 1,3,-1 - 598 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: J -Encoding: 74 74 37 -Width: 948 -VWidth: 0 -Flags: W -HStem: -20 102<260 588> 1393 41G<943 1126> -AnchorPoint: "bottom" 389 0 basechar 0 -AnchorPoint: "top" 1042 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -907 487 m 18,0,1 - 882 379 882 379 859 306.5 c 128,-1,2 - 836 234 836 234 803.5 174 c 128,-1,3 - 771 114 771 114 734 79.5 c 128,-1,4 - 697 45 697 45 641.5 21 c 128,-1,5 - 586 -3 586 -3 520 -11.5 c 128,-1,6 - 454 -20 454 -20 360 -20 c 0,7,8 - 211 -20 211 -20 57 72 c 1,9,-1 - 184 178 l 1,10,11 - 300 82 300 82 414 82 c 0,12,13 - 455 82 455 82 486.5 86 c 128,-1,14 - 518 90 518 90 544.5 101 c 128,-1,15 - 571 112 571 112 590 124.5 c 128,-1,16 - 609 137 609 137 626 161.5 c 128,-1,17 - 643 186 643 186 655 209 c 128,-1,18 - 667 232 667 232 679.5 272 c 128,-1,19 - 692 312 692 312 701 348.5 c 128,-1,20 - 710 385 710 385 723 442 c 2,21,-1 - 952 1434 l 1,22,-1 - 1126 1434 l 1,23,-1 - 907 487 l 18,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: K -Encoding: 75 75 38 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276 936 1151> 1393 41G<414 598 1208 1458> -AnchorPoint: "bottom" 553 0 basechar 0 -AnchorPoint: "cedilla" 573 0 basechar 0 -AnchorPoint: "top" 733 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -375 469 m 1,0,-1 - 266 0 l 1,1,-1 - 92 0 l 1,2,-1 - 424 1434 l 1,3,-1 - 598 1434 l 1,4,-1 - 428 696 l 1,5,-1 - 1253 1434 l 1,6,-1 - 1458 1434 l 1,7,-1 - 721 776 l 1,8,-1 - 1151 0 l 1,9,-1 - 958 0 l 1,10,-1 - 590 662 l 1,11,-1 - 375 469 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: L -Encoding: 76 76 39 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 1393 41G<404 588> -AnchorPoint: "cedilla" 504 0 basechar 0 -AnchorPoint: "bottom" 512 0 basechar 0 -AnchorPoint: "top" 680 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -281 102 m 1,0,-1 - 967 102 l 1,1,-1 - 942 0 l 1,2,-1 - 82 0 l 1,3,-1 - 414 1434 l 1,4,-1 - 588 1434 l 1,5,-1 - 281 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: M -Encoding: 77 77 40 -Width: 1544 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276 1200 1384> 1393 41G<414 608 1503 1706> -AnchorPoint: "bottom" 733 0 basechar 0 -AnchorPoint: "top" 1065 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -512 1065 m 1,0,-1 - 266 0 l 1,1,-1 - 92 0 l 1,2,-1 - 424 1434 l 1,3,-1 - 598 1434 l 1,4,-1 - 834 432 l 1,5,-1 - 1532 1434 l 1,6,-1 - 1706 1434 l 1,7,-1 - 1374 0 l 1,8,-1 - 1200 0 l 1,9,-1 - 1446 1065 l 1,10,-1 - 750 70 l 1,11,-1 - 512 1065 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: N -Encoding: 78 78 41 -Width: 1325 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276 961 1165> 1393 41G<414 616 1303 1487> -AnchorPoint: "bottom" 612 0 basechar 0 -AnchorPoint: "cedilla" 614 0 basechar 0 -AnchorPoint: "top" 967 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -977 0 m 1,0,-1 - 528 1137 l 1,1,-1 - 266 0 l 1,2,-1 - 92 0 l 1,3,-1 - 424 1434 l 1,4,-1 - 598 1434 l 1,5,-1 - 600 1434 l 1,6,-1 - 1049 295 l 1,7,-1 - 1313 1434 l 1,8,-1 - 1487 1434 l 1,9,-1 - 1155 0 l 1,10,-1 - 977 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: O -Encoding: 79 79 42 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> -VStem: 199 176<286 770> 1315 176<653 1162> -AnchorPoint: "horn" 1425 1085 basechar 0 -AnchorPoint: "bottom" 680 0 basechar 0 -AnchorPoint: "ogonek" 684 0 basechar 0 -AnchorPoint: "top" 997 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -659 -20 m 0,0,1 - 571 -20 571 -20 490.5 11 c 128,-1,2 - 410 42 410 42 343.5 102 c 128,-1,3 - 277 162 277 162 238 262 c 128,-1,4 - 199 362 199 362 199 489 c 0,5,6 - 199 624 199 624 236.5 763 c 128,-1,7 - 274 902 274 902 345.5 1025 c 128,-1,8 - 417 1148 417 1148 511 1244.5 c 128,-1,9 - 605 1341 605 1341 727.5 1397.5 c 128,-1,10 - 850 1454 850 1454 981 1454 c 0,11,12 - 1088 1454 1088 1454 1179 1423 c 128,-1,13 - 1270 1392 1270 1392 1340.5 1332 c 128,-1,14 - 1411 1272 1411 1272 1451 1173.5 c 128,-1,15 - 1491 1075 1491 1075 1491 948 c 0,16,17 - 1491 863 1491 863 1475 772 c 128,-1,18 - 1459 681 1459 681 1425 586 c 128,-1,19 - 1391 491 1391 491 1342.5 403.5 c 128,-1,20 - 1294 316 1294 316 1224.5 238.5 c 128,-1,21 - 1155 161 1155 161 1072.5 103.5 c 128,-1,22 - 990 46 990 46 883.5 13 c 128,-1,23 - 777 -20 777 -20 659 -20 c 0,0,1 -969 1352 m 0,24,25 - 860 1352 860 1352 750.5 1276.5 c 128,-1,26 - 641 1201 641 1201 559.5 1082 c 128,-1,27 - 478 963 478 963 426.5 809.5 c 128,-1,28 - 375 656 375 656 375 508 c 0,29,30 - 375 401 375 401 405.5 316 c 128,-1,31 - 436 231 436 231 484.5 182 c 128,-1,32 - 533 133 533 133 587 107.5 c 128,-1,33 - 641 82 641 82 694 82 c 0,34,35 - 806 82 806 82 918.5 153.5 c 128,-1,36 - 1031 225 1031 225 1118 341 c 128,-1,37 - 1205 457 1205 457 1260 615.5 c 128,-1,38 - 1315 774 1315 774 1315 938 c 0,39,40 - 1315 1043 1315 1043 1286 1124.5 c 128,-1,41 - 1257 1206 1257 1206 1207.5 1254.5 c 128,-1,42 - 1158 1303 1158 1303 1097.5 1327.5 c 128,-1,43 - 1037 1352 1037 1352 969 1352 c 0,24,25 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Q -Encoding: 81 81 43 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -348 102<894 1034> -14 96<543 580 756 866> 1352 102<782 1146> -VStem: 199 174<265 777> 578 178<-121 -15> 1317 174<662 1166> -AnchorPoint: "top" 981 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -969 1352 m 0,0,1 - 880 1352 880 1352 800.5 1318 c 128,-1,2 - 721 1284 721 1284 662 1227 c 128,-1,3 - 603 1170 603 1170 553.5 1095 c 128,-1,4 - 504 1020 504 1020 471.5 939 c 128,-1,5 - 439 858 439 858 416 774.5 c 128,-1,6 - 393 691 393 691 383 618.5 c 128,-1,7 - 373 546 373 546 373 487 c 0,8,9 - 373 384 373 384 400 304 c 128,-1,10 - 427 224 427 224 473 177 c 128,-1,11 - 519 130 519 130 575 106 c 128,-1,12 - 631 82 631 82 694 82 c 0,13,14 - 794 82 794 82 890.5 131.5 c 128,-1,15 - 987 181 987 181 1062.5 267.5 c 128,-1,16 - 1138 354 1138 354 1196 463.5 c 128,-1,17 - 1254 573 1254 573 1285.5 699.5 c 128,-1,18 - 1317 826 1317 826 1317 950 c 0,19,20 - 1317 1151 1317 1151 1219.5 1251.5 c 128,-1,21 - 1122 1352 1122 1352 969 1352 c 0,0,1 -580 -14 m 1,22,23 - 503 -1 503 -1 436 35.5 c 128,-1,24 - 369 72 369 72 315 132.5 c 128,-1,25 - 261 193 261 193 230 284.5 c 128,-1,26 - 199 376 199 376 199 489 c 0,27,28 - 199 621 199 621 236 758 c 128,-1,29 - 273 895 273 895 344 1019 c 128,-1,30 - 415 1143 415 1143 508.5 1240.5 c 128,-1,31 - 602 1338 602 1338 725.5 1396 c 128,-1,32 - 849 1454 849 1454 981 1454 c 0,33,34 - 1088 1454 1088 1454 1179 1423.5 c 128,-1,35 - 1270 1393 1270 1393 1340.5 1333 c 128,-1,36 - 1411 1273 1411 1273 1451 1174 c 128,-1,37 - 1491 1075 1491 1075 1491 948 c 0,38,39 - 1491 852 1491 852 1470.5 749.5 c 128,-1,40 - 1450 647 1450 647 1410.5 544 c 128,-1,41 - 1371 441 1371 441 1308 347.5 c 128,-1,42 - 1245 254 1245 254 1166 178.5 c 128,-1,43 - 1087 103 1087 103 981 52 c 128,-1,44 - 875 1 875 1 756 -14 c 1,45,46 - 758 -79 758 -79 806.5 -134 c 128,-1,47 - 855 -189 855 -189 923 -217.5 c 128,-1,48 - 991 -246 991 -246 1057 -246 c 1,49,-1 - 1034 -348 l 1,50,51 - 975 -348 975 -348 915 -338.5 c 128,-1,52 - 855 -329 855 -329 793.5 -306 c 128,-1,53 - 732 -283 732 -283 685 -249 c 128,-1,54 - 638 -215 638 -215 608 -161.5 c 128,-1,55 - 578 -108 578 -108 578 -43 c 0,56,57 - 578 -24 578 -24 580 -14 c 1,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: R -Encoding: 82 82 44 -Width: 1101 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276 819 991> 655 102<440 679> 1331 102<573 969> -VStem: 829 170<0 381> 1032 174<954 1271> -AnchorPoint: "bottom" 512 0 basechar 0 -AnchorPoint: "cedilla" 508 0 basechar 0 -AnchorPoint: "top" 811 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -424 1434 m 1,0,-1 - 844 1434 l 2,1,2 - 923 1434 923 1434 986.5 1416 c 128,-1,3 - 1050 1398 1050 1398 1090 1368.5 c 128,-1,4 - 1130 1339 1130 1339 1157 1299 c 128,-1,5 - 1184 1259 1184 1259 1195 1216.5 c 128,-1,6 - 1206 1174 1206 1174 1206 1128 c 0,7,8 - 1206 1064 1206 1064 1181.5 996.5 c 128,-1,9 - 1157 929 1157 929 1112 867.5 c 128,-1,10 - 1067 806 1067 806 995 755.5 c 128,-1,11 - 923 705 923 705 836 680 c 1,12,13 - 900 597 900 597 949.5 429.5 c 128,-1,14 - 999 262 999 262 999 117 c 0,15,16 - 999 53 999 53 987 0 c 1,17,-1 - 819 0 l 1,18,19 - 829 41 829 41 829 106 c 0,20,21 - 829 253 829 253 773 418.5 c 128,-1,22 - 717 584 717 584 641 655 c 1,23,-1 - 418 655 l 1,24,-1 - 266 0 l 1,25,-1 - 92 0 l 1,26,-1 - 424 1434 l 1,0,-1 -573 1331 m 1,27,-1 - 440 758 l 1,28,-1 - 717 758 l 2,29,30 - 807 758 807 758 881 816 c 128,-1,31 - 955 874 955 874 993.5 958 c 128,-1,32 - 1032 1042 1032 1042 1032 1128 c 0,33,34 - 1032 1215 1032 1215 988.5 1273 c 128,-1,35 - 945 1331 945 1331 850 1331 c 2,36,-1 - 573 1331 l 1,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: S -Encoding: 83 83 45 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -20 102<495 829> 1352 102<765 1066> -VStem: 207 166<209 350> 430 180<951 1185> 1024 176<277 545> -AnchorPoint: "bottom" 602 0 basechar 0 -AnchorPoint: "cedilla" 598 0 basechar 0 -AnchorPoint: "top" 926 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1200 455 m 0,0,1 - 1200 363 1200 363 1157 277.5 c 128,-1,2 - 1114 192 1114 192 1036.5 126 c 128,-1,3 - 959 60 959 60 841.5 20 c 128,-1,4 - 724 -20 724 -20 586 -20 c 0,5,6 - 437 -20 437 -20 323.5 91 c 128,-1,7 - 210 202 210 202 207 350 c 1,8,-1 - 375 381 l 1,9,10 - 375 377 375 377 374 367.5 c 128,-1,11 - 373 358 373 358 373 354 c 0,12,13 - 373 245 373 245 451 163.5 c 128,-1,14 - 529 82 529 82 623 82 c 0,15,16 - 714 82 714 82 786.5 107.5 c 128,-1,17 - 859 133 859 133 902.5 171.5 c 128,-1,18 - 946 210 946 210 974.5 258.5 c 128,-1,19 - 1003 307 1003 307 1013.5 348.5 c 128,-1,20 - 1024 390 1024 390 1024 426 c 0,21,22 - 1024 486 1024 486 991 534.5 c 128,-1,23 - 958 583 958 583 906 616 c 128,-1,24 - 854 649 854 649 790.5 678.5 c 128,-1,25 - 727 708 727 708 663.5 739.5 c 128,-1,26 - 600 771 600 771 548 807 c 128,-1,27 - 496 843 496 843 463 898 c 128,-1,28 - 430 953 430 953 430 1022 c 0,29,30 - 430 1112 430 1112 478 1194.5 c 128,-1,31 - 526 1277 526 1277 600.5 1332.5 c 128,-1,32 - 675 1388 675 1388 764.5 1421 c 128,-1,33 - 854 1454 854 1454 938 1454 c 0,34,35 - 1078 1454 1078 1454 1178.5 1390.5 c 128,-1,36 - 1279 1327 1279 1327 1319 1225 c 1,37,-1 - 1157 1182 l 1,38,39 - 1104 1352 1104 1352 897 1352 c 0,40,41 - 796 1352 796 1352 703 1259 c 128,-1,42 - 610 1166 610 1166 610 1057 c 0,43,44 - 610 1010 610 1010 635.5 970.5 c 128,-1,45 - 661 931 661 931 702.5 903.5 c 128,-1,46 - 744 876 744 876 797 847 c 128,-1,47 - 850 818 850 818 905 793.5 c 128,-1,48 - 960 769 960 769 1013 735.5 c 128,-1,49 - 1066 702 1066 702 1107.5 665 c 128,-1,50 - 1149 628 1149 628 1174.5 574 c 128,-1,51 - 1200 520 1200 520 1200 455 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: T -Encoding: 84 84 46 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43G<532 716> 1331 102<352 840 1014 1526> -AnchorPoint: "cedilla" 618 0 basechar 0 -AnchorPoint: "bottom" 623 0 basechar 0 -AnchorPoint: "top" 954 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -352 1434 m 1,0,-1 - 1554 1434 l 1,1,-1 - 1526 1331 l 1,2,-1 - 1014 1331 l 1,3,-1 - 707 0 l 1,4,-1 - 532 0 l 1,5,-1 - 840 1331 l 1,6,-1 - 328 1331 l 1,7,-1 - 352 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: U -Encoding: 85 85 47 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41G<384 567 1301 1485> -VStem: 176 174<211 687> 393 174<1372 1434> -AnchorPoint: "horn" 1403 1085 basechar 0 -AnchorPoint: "bottom" 627 0 basechar 0 -AnchorPoint: "ogonek" 623 0 basechar 0 -AnchorPoint: "top" 958 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1311 1434 m 1,0,-1 - 1485 1434 l 1,1,-1 - 1294 610 l 2,2,3 - 1259 461 1259 461 1203.5 348.5 c 128,-1,4 - 1148 236 1148 236 1083 167 c 128,-1,5 - 1018 98 1018 98 935.5 55 c 128,-1,6 - 853 12 853 12 772.5 -4 c 128,-1,7 - 692 -20 692 -20 598 -20 c 0,8,9 - 538 -20 538 -20 483 -9 c 128,-1,10 - 428 2 428 2 370.5 31 c 128,-1,11 - 313 60 313 60 271 105.5 c 128,-1,12 - 229 151 229 151 202.5 226 c 128,-1,13 - 176 301 176 301 176 397 c 0,14,15 - 176 490 176 490 203 610 c 2,16,-1 - 393 1434 l 1,17,-1 - 567 1434 l 1,18,-1 - 377 610 l 1,19,20 - 350 487 350 487 350 401 c 0,21,22 - 350 325 350 325 369 266 c 128,-1,23 - 388 207 388 207 416.5 173 c 128,-1,24 - 445 139 445 139 484 118 c 128,-1,25 - 523 97 523 97 559 89.5 c 128,-1,26 - 595 82 595 82 633 82 c 0,27,28 - 684 82 684 82 734 95 c 128,-1,29 - 784 108 784 108 842.5 144.5 c 128,-1,30 - 901 181 901 181 950.5 238 c 128,-1,31 - 1000 295 1000 295 1045.5 390.5 c 128,-1,32 - 1091 486 1091 486 1120 610 c 2,33,-1 - 1311 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: V -Encoding: 86 86 48 -Width: 1101 -VWidth: 0 -Flags: W -HStem: 0 43G<461 668> 1393 41G<332 508 1247 1442> -AnchorPoint: "bottom" 553 0 basechar 0 -AnchorPoint: "top" 881 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -465 0 m 1,0,-1 - 332 1434 l 1,1,-1 - 504 1434 l 1,2,-1 - 612 252 l 1,3,-1 - 1270 1434 l 1,4,-1 - 1442 1434 l 1,5,-1 - 645 0 l 1,6,-1 - 465 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: X -Encoding: 88 88 49 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43G<41 254 802 997> 1393 41G<414 609 1072 1286> -AnchorPoint: "bottom" 512 0 basechar 0 -AnchorPoint: "top" 844 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -786 760 m 1,0,-1 - 997 0 l 1,1,-1 - 813 0 l 1,2,-1 - 651 578 l 1,3,-1 - 223 0 l 1,4,-1 - 41 0 l 1,5,-1 - 602 758 l 1,6,-1 - 414 1434 l 1,7,-1 - 598 1434 l 1,8,-1 - 735 938 l 1,9,-1 - 1102 1434 l 1,10,-1 - 1286 1434 l 1,11,-1 - 786 760 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: W -Encoding: 87 87 50 -Width: 1701 -VWidth: 0 -Flags: W -HStem: 0 43G<461 668 1061 1268> 860 41G<952 1157> 1393 41G<332 508 1847 2042> -AnchorPoint: "bottom" 864 0 basechar 0 -AnchorPoint: "top" 1171 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -465 0 m 1,0,-1 - 332 1434 l 1,1,-1 - 504 1434 l 1,2,-1 - 612 252 l 1,3,-1 - 975 901 l 1,4,-1 - 1153 901 l 1,5,-1 - 1212 252 l 1,6,-1 - 1870 1434 l 1,7,-1 - 2042 1434 l 1,8,-1 - 1245 0 l 1,9,-1 - 1065 0 l 1,10,-1 - 1004 645 l 1,11,-1 - 645 0 l 1,12,-1 - 465 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Y -Encoding: 89 89 51 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43G<451 634> 1393 41G<414 609 1112 1327> -AnchorPoint: "bottom" 537 0 basechar 0 -AnchorPoint: "ogonek" 569 0 basechar 0 -AnchorPoint: "top" 868 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -745 899 m 1,0,-1 - 1143 1434 l 1,1,-1 - 1327 1434 l 1,2,-1 - 788 709 l 1,3,-1 - 625 0 l 1,4,-1 - 451 0 l 1,5,-1 - 614 711 l 1,6,-1 - 414 1434 l 1,7,-1 - 598 1434 l 1,8,-1 - 745 899 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Z -Encoding: 90 90 52 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 102<299 963> 1331 102<414 1026> -AnchorPoint: "bottom" 528 0 basechar 0 -AnchorPoint: "top" 823 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1026 1331 m 1,0,-1 - 358 1331 l 1,1,-1 - 414 1434 l 1,2,-1 - 1286 1434 l 1,3,-1 - 299 102 l 1,4,-1 - 987 102 l 1,5,-1 - 963 0 l 1,6,-1 - 41 0 l 1,7,-1 - 1026 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: exclam -Encoding: 33 33 53 -Width: 356 -VWidth: 0 -Flags: W -HStem: 0 164<129 256> 1393 41G<416 588> -VStem: 209 102<369 424> -LayerCount: 2 -Fore -SplineSet -129 164 m 1,0,-1 - 293 164 l 1,1,-1 - 256 0 l 1,2,-1 - 92 0 l 1,3,-1 - 129 164 l 1,0,-1 -588 1434 m 29,4,-1 - 311 369 l 1,5,-1 - 209 369 l 1,6,-1 - 424 1434 l 1,7,-1 - 588 1434 l 29,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: period -Encoding: 46 46 54 -Width: 356 -VWidth: 0 -Flags: W -HStem: 0 164<129 256> -VStem: 92 201 -LayerCount: 2 -Fore -SplineSet -129 164 m 1,0,-1 - 293 164 l 1,1,-1 - 256 0 l 1,2,-1 - 92 0 l 1,3,-1 - 129 164 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: comma -Encoding: 44 44 55 -Width: 356 -VWidth: 0 -Flags: W -HStem: -203 367 -VStem: 135 147<91 164> -LayerCount: 2 -Fore -SplineSet -45 -203 m 1,0,1 - 133 -109 133 -109 133 -12 c 0,2,3 - 133 2 133 2 130 36 c 128,-1,4 - 127 70 127 70 127 90 c 0,5,6 - 127 128 127 128 135 164 c 1,7,-1 - 283 164 l 1,8,9 - 268 100 268 100 251.5 47 c 128,-1,10 - 235 -6 235 -6 224.5 -36 c 128,-1,11 - 214 -66 214 -66 194.5 -99.5 c 128,-1,12 - 175 -133 175 -133 169.5 -141.5 c 128,-1,13 - 164 -150 164 -150 142.5 -176 c 128,-1,14 - 121 -202 121 -202 121 -203 c 1,15,-1 - 45 -203 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quotesingle -Encoding: 39 39 56 -Width: 335 -VWidth: 0 -Flags: W -HStem: 1024 410<424 440> -VStem: 358 209 -LayerCount: 2 -Fore -SplineSet -567 1434 m 25,0,-1 - 440 1024 l 1,1,-1 - 358 1024 l 1,2,-1 - 424 1434 l 1,3,-1 - 567 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quotedbl -Encoding: 34 34 57 -Width: 540 -VWidth: 0 -Flags: W -LayerCount: 2 -Fore -Refer: 56 39 N 1 0 0.230868 1 -295 0 2 -Refer: 56 39 N 1 0 0.230868 1 -90 0 2 -Validated: 1 -EndChar - -StartChar: dollar -Encoding: 36 36 58 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 43G<303 386 459 542> 150 102<436 494> 662 129<559 605> 1112 102<657 715> -VStem: 274 166<832 1030> 735 166<367 595> -LayerCount: 2 -Fore -SplineSet -981 1087 m 1,0,-1 - 846 1016 l 1,1,2 - 802 1059 802 1059 780 1077 c 1,3,-1 - 707 752 l 1,4,5 - 806 715 806 715 853.5 654.5 c 128,-1,6 - 901 594 901 594 901 520 c 0,7,8 - 901 409 901 409 811.5 304 c 128,-1,9 - 722 199 722 199 569 164 c 1,10,-1 - 532 0 l 1,11,-1 - 459 0 l 1,12,-1 - 494 152 l 1,13,14 - 478 150 478 150 442 150 c 2,15,-1 - 412 150 l 1,16,-1 - 377 0 l 1,17,-1 - 303 0 l 1,18,-1 - 340 160 l 1,19,20 - 281 172 281 172 238 200 c 128,-1,21 - 195 228 195 228 127 287 c 1,22,-1 - 233 362 l 1,23,24 - 239 357 239 357 256.5 342 c 128,-1,25 - 274 327 274 327 279.5 322.5 c 128,-1,26 - 285 318 285 318 299 307 c 128,-1,27 - 313 296 313 296 321 291.5 c 128,-1,28 - 329 287 329 287 341 280.5 c 128,-1,29 - 353 274 353 274 365 270 c 1,30,-1 - 461 682 l 1,31,32 - 372 715 372 715 323 770.5 c 128,-1,33 - 274 826 274 826 274 899 c 0,34,35 - 274 945 274 945 293 994 c 128,-1,36 - 312 1043 312 1043 348 1088 c 128,-1,37 - 384 1133 384 1133 445 1166.5 c 128,-1,38 - 506 1200 506 1200 582 1210 c 1,39,-1 - 614 1352 l 1,40,-1 - 688 1352 l 1,41,-1 - 657 1214 l 1,42,43 - 700 1214 700 1214 737 1208 c 1,44,-1 - 770 1352 l 1,45,-1 - 844 1352 l 1,46,-1 - 807 1192 l 1,47,48 - 888 1166 888 1166 981 1087 c 1,0,-1 -494 825 m 1,49,-1 - 553 1085 l 1,50,51 - 502 1057 502 1057 471 1013.5 c 128,-1,52 - 440 970 440 970 440 924 c 0,53,54 - 440 864 440 864 494 825 c 1,49,-1 -530 662 m 1,55,-1 - 436 254 l 1,56,57 - 454 252 454 252 496 252 c 2,58,-1 - 516 252 l 1,59,-1 - 606 643 l 1,60,61 - 588 649 588 649 563.5 654.5 c 128,-1,62 - 539 660 539 660 530 662 c 1,55,-1 -559 791 m 1,63,64 - 577 785 577 785 602 780 c 128,-1,65 - 627 775 627 775 637 772 c 1,66,-1 - 715 1108 l 1,67,68 - 699 1112 699 1112 653 1112 c 0,69,70 - 650 1112 650 1112 643 1111 c 128,-1,71 - 636 1110 636 1110 633 1110 c 1,72,-1 - 559 791 l 1,63,64 -674 610 m 1,73,-1 - 596 272 l 1,74,75 - 649 298 649 298 692 362.5 c 128,-1,76 - 735 427 735 427 735 492 c 0,77,78 - 735 566 735 566 674 610 c 1,73,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: bar -Encoding: 124 124 59 -Width: 305 -VWidth: 0 -Flags: W -HStem: 0 43G<92 214> 1393 41G<414 537> -VStem: 92 444 -LayerCount: 2 -Fore -SplineSet -537 1434 m 25,0,-1 - 205 0 l 1,1,-1 - 92 0 l 1,2,-1 - 424 1434 l 1,3,-1 - 537 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: slash -Encoding: 47 47 60 -Width: 831 -VWidth: 0 -Flags: W -HStem: 0 43G<61 208> 1393 41G<947 1094> -LayerCount: 2 -Fore -SplineSet -1094 1434 m 1,0,-1 - 182 0 l 1,1,-1 - 61 0 l 1,2,-1 - 973 1434 l 1,3,-1 - 1094 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: backslash -Encoding: 92 92 61 -Width: 831 -VWidth: 0 -Flags: W -HStem: 0 43G<634 762> 1393 41G<393 521> -VStem: 393 369 -LayerCount: 2 -Fore -SplineSet -393 1434 m 1,0,-1 - 514 1434 l 1,1,-1 - 762 0 l 1,2,-1 - 641 0 l 1,3,-1 - 393 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: question -Encoding: 63 63 62 -Width: 882 -VWidth: 0 -Flags: W -HStem: 0 164<334 461> 369 215<432 516> 1270 102<511 801> -VStem: 883 164<817 1189> -LayerCount: 2 -Fore -SplineSet -334 164 m 1,0,-1 - 498 164 l 1,1,-1 - 461 0 l 1,2,-1 - 297 0 l 1,3,-1 - 334 164 l 1,0,-1 -559 483 m 1,4,-1 - 516 369 l 1,5,-1 - 414 369 l 1,6,-1 - 432 584 l 1,7,-1 - 504 584 l 2,8,9 - 577 584 577 584 639.5 609.5 c 128,-1,10 - 702 635 702 635 746 678 c 128,-1,11 - 790 721 790 721 821.5 778.5 c 128,-1,12 - 853 836 853 836 868 900.5 c 128,-1,13 - 883 965 883 965 883 1032 c 0,14,15 - 883 1144 883 1144 824 1207 c 128,-1,16 - 765 1270 765 1270 651 1270 c 0,17,18 - 579 1270 579 1270 531.5 1241 c 128,-1,19 - 484 1212 484 1212 428 1147 c 1,20,-1 - 317 1194 l 1,21,22 - 405 1280 405 1280 497 1326 c 128,-1,23 - 589 1372 589 1372 707 1372 c 0,24,25 - 870 1372 870 1372 958.5 1285 c 128,-1,26 - 1047 1198 1047 1198 1047 1044 c 0,27,28 - 1047 928 1047 928 1007 826.5 c 128,-1,29 - 967 725 967 725 899.5 653.5 c 128,-1,30 - 832 582 832 582 744 537 c 128,-1,31 - 656 492 656 492 559 483 c 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: colon -Encoding: 58 58 63 -Width: 356 -VWidth: 0 -Flags: W -LayerCount: 2 -Fore -Refer: 54 46 N 1 0 0.230868 1 0 0 2 -Refer: 54 46 N 1 0 0.230868 1 141 614 2 -Validated: 1 -EndChar - -StartChar: semicolon -Encoding: 59 59 64 -Width: 356 -VWidth: 0 -Flags: W -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0.230868 1 0 0 2 -Refer: 54 46 N 1 0 0.230868 1 135 614 2 -Validated: 1 -EndChar - -StartChar: percent -Encoding: 37 37 65 -Width: 1089 -VWidth: 0 -Flags: W -HStem: 156 109<773 944> 473 109<800 969> 729 109<414 584> 1047 109<441 611> -VStem: 293 113<846 1011> 621 111<877 1038> 653 111<273 437> 979 111<300 464> -LayerCount: 2 -Fore -SplineSet -895 473 m 0,0,1 - 849 473 849 473 806.5 436 c 128,-1,2 - 764 399 764 399 764 346 c 0,3,4 - 764 311 764 311 787.5 287.5 c 128,-1,5 - 811 264 811 264 848 264 c 0,6,7 - 894 264 894 264 936.5 301 c 128,-1,8 - 979 338 979 338 979 391 c 0,9,10 - 979 426 979 426 955.5 449.5 c 128,-1,11 - 932 473 932 473 895 473 c 0,0,1 -653 319 m 0,12,13 - 653 423 653 423 737 502.5 c 128,-1,14 - 821 582 821 582 922 582 c 0,15,16 - 998 582 998 582 1044 536 c 128,-1,17 - 1090 490 1090 490 1090 418 c 0,18,19 - 1090 314 1090 314 1006.5 235 c 128,-1,20 - 923 156 923 156 823 156 c 0,21,22 - 747 156 747 156 700 202 c 128,-1,23 - 653 248 653 248 653 319 c 0,12,13 -537 1047 m 0,24,25 - 491 1047 491 1047 448.5 1010 c 128,-1,26 - 406 973 406 973 406 920 c 0,27,28 - 406 884 406 884 428.5 861 c 128,-1,29 - 451 838 451 838 487 838 c 0,30,31 - 533 838 533 838 577 875.5 c 128,-1,32 - 621 913 621 913 621 965 c 0,33,34 - 621 1000 621 1000 597.5 1023.5 c 128,-1,35 - 574 1047 574 1047 537 1047 c 0,24,25 -293 893 m 0,36,37 - 293 997 293 997 376.5 1076 c 128,-1,38 - 460 1155 460 1155 561 1155 c 0,39,40 - 637 1155 637 1155 684 1108.5 c 128,-1,41 - 731 1062 731 1062 731 991 c 0,42,43 - 731 887 731 887 647.5 808 c 128,-1,44 - 564 729 564 729 463 729 c 0,45,46 - 387 729 387 729 340 775.5 c 128,-1,47 - 293 822 293 822 293 893 c 0,36,37 -143 264 m 1,48,-1 - 1083 1047 l 1,49,-1 - 1241 1047 l 1,50,-1 - 301 264 l 1,51,-1 - 143 264 l 1,48,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: numbersign -Encoding: 35 35 66 -Width: 991 -VWidth: 0 -Flags: W -HStem: 410 102<221 322 508 623 809 932> 840 102<371 498 684 797 983 1083> -LayerCount: 2 -Fore -SplineSet -467 410 m 1,0,-1 - 350 123 l 1,1,-1 - 205 123 l 1,2,-1 - 322 410 l 1,3,-1 - 197 410 l 1,4,-1 - 221 512 l 1,5,-1 - 362 512 l 1,6,-1 - 498 840 l 1,7,-1 - 348 840 l 1,8,-1 - 371 942 l 1,9,-1 - 539 942 l 1,10,-1 - 655 1229 l 1,11,-1 - 801 1229 l 1,12,-1 - 684 942 l 1,13,-1 - 838 942 l 1,14,-1 - 954 1229 l 1,15,-1 - 1100 1229 l 1,16,-1 - 983 942 l 1,17,-1 - 1106 942 l 1,18,-1 - 1083 840 l 1,19,-1 - 942 840 l 1,20,-1 - 809 512 l 1,21,-1 - 956 512 l 1,22,-1 - 932 410 l 1,23,-1 - 768 410 l 1,24,-1 - 651 123 l 1,25,-1 - 506 123 l 1,26,-1 - 623 410 l 1,27,-1 - 467 410 l 1,0,-1 -508 512 m 1,28,-1 - 664 512 l 1,29,-1 - 797 840 l 1,30,-1 - 643 840 l 1,31,-1 - 508 512 l 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: zero -Encoding: 48 48 67 -Width: 942 -VWidth: 0 -Flags: W -HStem: -20 102<383 616> 1004 102<593 812> -VStem: 135 164<173 610> 891 166<462 912> -LayerCount: 2 -Fore -SplineSet -502 82 m 0,0,1 - 587 82 587 82 678 173 c 128,-1,2 - 769 264 769 264 830 410 c 128,-1,3 - 891 556 891 556 891 700 c 0,4,5 - 891 829 891 829 845 916.5 c 128,-1,6 - 799 1004 799 1004 715 1004 c 0,7,8 - 666 1004 666 1004 608.5 971.5 c 128,-1,9 - 551 939 551 939 496.5 878.5 c 128,-1,10 - 442 818 442 818 397.5 741 c 128,-1,11 - 353 664 353 664 326 566 c 128,-1,12 - 299 468 299 468 299 369 c 0,13,14 - 299 242 299 242 349.5 162 c 128,-1,15 - 400 82 400 82 502 82 c 0,0,1 -1057 707 m 0,16,17 - 1057 577 1057 577 1008 445.5 c 128,-1,18 - 959 314 959 314 878 211.5 c 128,-1,19 - 797 109 797 109 683.5 44.5 c 128,-1,20 - 570 -20 570 -20 449 -20 c 0,21,22 - 347 -20 347 -20 274.5 33 c 128,-1,23 - 202 86 202 86 168.5 172.5 c 128,-1,24 - 135 259 135 259 135 369 c 0,25,26 - 135 489 135 489 174 605 c 128,-1,27 - 213 721 213 721 276.5 809 c 128,-1,28 - 340 897 340 897 415.5 965.5 c 128,-1,29 - 491 1034 491 1034 568.5 1070 c 128,-1,30 - 646 1106 646 1106 709 1106 c 0,31,32 - 869 1106 869 1106 963 995.5 c 128,-1,33 - 1057 885 1057 885 1057 707 c 0,16,17 -EndSplineSet -Validated: 1 -EndChar - -StartChar: one -Encoding: 49 49 68 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 43G<440 614> 961 102<582 666> -VStem: 440 418 -LayerCount: 2 -Fore -SplineSet -858 1096 m 1,0,-1 - 604 0 l 1,1,-1 - 440 0 l 1,2,-1 - 666 973 l 1,3,-1 - 557 961 l 1,4,-1 - 582 1063 l 1,5,-1 - 858 1096 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: two -Encoding: 50 50 69 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<311 819> 983 102<546 799> -VStem: 834 164<682 951> -LayerCount: 2 -Fore -SplineSet -997 842 m 0,0,1 - 997 760 997 760 963 691.5 c 128,-1,2 - 929 623 929 623 873.5 574 c 128,-1,3 - 818 525 818 525 750.5 481.5 c 128,-1,4 - 683 438 683 438 612 398 c 128,-1,5 - 541 358 541 358 479.5 316.5 c 128,-1,6 - 418 275 418 275 372 220 c 128,-1,7 - 326 165 326 165 311 102 c 1,8,-1 - 844 102 l 1,9,-1 - 819 0 l 1,10,-1 - 123 0 l 1,11,12 - 146 100 146 100 198 181.5 c 128,-1,13 - 250 263 250 263 314.5 317 c 128,-1,14 - 379 371 379 371 451 417.5 c 128,-1,15 - 523 464 523 464 590.5 505 c 128,-1,16 - 658 546 658 546 713 590.5 c 128,-1,17 - 768 635 768 635 801 697 c 128,-1,18 - 834 759 834 759 834 836 c 0,19,20 - 834 911 834 911 794.5 947 c 128,-1,21 - 755 983 755 983 696 983 c 0,22,23 - 537 983 537 983 442 827 c 1,24,-1 - 326 877 l 1,25,26 - 474 1085 474 1085 750 1085 c 0,27,28 - 862 1085 862 1085 929.5 1017.5 c 128,-1,29 - 997 950 997 950 997 842 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: three -Encoding: 51 51 70 -Width: 942 -VWidth: 0 -Flags: W -HStem: -258 102<290 540> 422 102<500 637> 983 102<548 789> -VStem: 90 139<-92 -40> 717 166<39 350> 823 164<669 951> -LayerCount: 2 -Fore -SplineSet -422 -156 m 0,0,1 - 450 -156 450 -156 487 -141 c 128,-1,2 - 524 -126 524 -126 564.5 -95 c 128,-1,3 - 605 -64 605 -64 639 -21.5 c 128,-1,4 - 673 21 673 21 695 82 c 128,-1,5 - 717 143 717 143 717 211 c 0,6,7 - 717 307 717 307 660 364.5 c 128,-1,8 - 603 422 603 422 477 422 c 1,9,-1 - 500 524 l 1,10,11 - 582 524 582 524 644 549.5 c 128,-1,12 - 706 575 706 575 739 610.5 c 128,-1,13 - 772 646 772 646 792 692.5 c 128,-1,14 - 812 739 812 739 817.5 772.5 c 128,-1,15 - 823 806 823 806 823 836 c 0,16,17 - 823 911 823 911 784 947 c 128,-1,18 - 745 983 745 983 686 983 c 0,19,20 - 608 983 608 983 555 945 c 128,-1,21 - 502 907 502 907 453 827 c 1,22,-1 - 336 877 l 1,23,24 - 406 975 406 975 500 1030 c 128,-1,25 - 594 1085 594 1085 739 1085 c 0,26,27 - 851 1085 851 1085 919 1017.5 c 128,-1,28 - 987 950 987 950 987 842 c 0,29,30 - 987 776 987 776 966 711 c 128,-1,31 - 945 646 945 646 889 580 c 128,-1,32 - 833 514 833 514 748 475 c 1,33,34 - 883 402 883 402 883 233 c 0,35,36 - 883 126 883 126 837.5 30.5 c 128,-1,37 - 792 -65 792 -65 723 -126 c 128,-1,38 - 654 -187 654 -187 576 -222.5 c 128,-1,39 - 498 -258 498 -258 430 -258 c 0,40,41 - 283 -258 283 -258 198.5 -198.5 c 128,-1,42 - 114 -139 114 -139 90 -45 c 1,43,-1 - 229 4 l 1,44,45 - 241 -72 241 -72 291 -114 c 128,-1,46 - 341 -156 341 -156 422 -156 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: four -Encoding: 52 52 71 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<250 571 760 846> -LayerCount: 2 -Fore -SplineSet -113 68 m 1,0,-1 - 821 1085 l 1,1,-1 - 985 1085 l 1,2,-1 - 760 102 l 1,3,-1 - 870 102 l 1,4,-1 - 846 0 l 1,5,-1 - 735 0 l 1,6,-1 - 680 -238 l 1,7,-1 - 516 -238 l 1,8,-1 - 571 0 l 1,9,-1 - 96 0 l 1,10,-1 - 113 68 l 1,0,-1 -596 102 m 1,11,-1 - 766 844 l 1,12,-1 - 250 102 l 1,13,-1 - 596 102 l 1,11,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: five -Encoding: 53 53 72 -Width: 942 -VWidth: 0 -Flags: W -HStem: -258 102<290 540> 983 102<649 961> -VStem: 90 139<-92 -40> 731 170<92 435> -LayerCount: 2 -Fore -SplineSet -422 -156 m 0,0,1 - 491 -156 491 -156 562.5 -96 c 128,-1,2 - 634 -36 634 -36 682.5 68 c 128,-1,3 - 731 172 731 172 731 285 c 0,4,5 - 731 348 731 348 710 395.5 c 128,-1,6 - 689 443 689 443 641.5 479.5 c 128,-1,7 - 594 516 594 516 511 535.5 c 128,-1,8 - 428 555 428 555 311 555 c 1,9,-1 - 524 1085 l 1,10,-1 - 983 1085 l 1,11,-1 - 961 983 l 1,12,-1 - 649 983 l 1,13,-1 - 514 647 l 1,14,15 - 722 623 722 623 811.5 541.5 c 128,-1,16 - 901 460 901 460 901 322 c 0,17,18 - 901 207 901 207 859.5 98.5 c 128,-1,19 - 818 -10 818 -10 751.5 -87.5 c 128,-1,20 - 685 -165 685 -165 600 -211.5 c 128,-1,21 - 515 -258 515 -258 430 -258 c 0,22,23 - 283 -258 283 -258 198.5 -198.5 c 128,-1,24 - 114 -139 114 -139 90 -45 c 1,25,-1 - 229 4 l 1,26,27 - 241 -72 241 -72 291 -114 c 128,-1,28 - 341 -156 341 -156 422 -156 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: six -Encoding: 54 54 73 -Width: 942 -VWidth: 0 -Flags: W -HStem: -20 102<388 604> 586 102<459 711> -VStem: 190 162<116 516> 760 166<254 539> -LayerCount: 2 -Fore -SplineSet -481 82 m 0,0,1 - 548 82 548 82 614 133 c 128,-1,2 - 680 184 680 184 720 260.5 c 128,-1,3 - 760 337 760 337 760 410 c 128,-1,4 - 760 483 760 483 720 534.5 c 128,-1,5 - 680 586 680 586 616 586 c 0,6,7 - 516 586 516 586 403 549 c 1,8,9 - 352 407 352 407 352 258 c 0,10,11 - 352 172 352 172 386.5 127 c 128,-1,12 - 421 82 421 82 481 82 c 0,0,1 -457 672 m 1,13,14 - 539 688 539 688 610 688 c 0,15,16 - 750 688 750 688 838 616 c 128,-1,17 - 926 544 926 544 926 426 c 0,18,19 - 926 327 926 327 866 223.5 c 128,-1,20 - 806 120 806 120 703 50 c 128,-1,21 - 600 -20 600 -20 489 -20 c 0,22,23 - 355 -20 355 -20 272.5 58 c 128,-1,24 - 190 136 190 136 190 272 c 0,25,26 - 190 375 190 375 218.5 479 c 128,-1,27 - 247 583 247 583 295.5 671.5 c 128,-1,28 - 344 760 344 760 406.5 845 c 128,-1,29 - 469 930 469 930 538 999.5 c 128,-1,30 - 607 1069 607 1069 676 1131 c 128,-1,31 - 745 1193 745 1193 807.5 1238.5 c 128,-1,32 - 870 1284 870 1284 918 1317 c 0,33,34 - 968 1350 968 1350 996 1367 c 2,35,-1 - 1024 1384 l 1,36,-1 - 1079 1323 l 1,37,38 - 1062 1313 1062 1313 1032.5 1293.5 c 128,-1,39 - 1003 1274 1003 1274 919.5 1208.5 c 128,-1,40 - 836 1143 836 1143 761.5 1072.5 c 128,-1,41 - 687 1002 687 1002 600 892.5 c 128,-1,42 - 513 783 513 783 457 672 c 1,13,14 -EndSplineSet -Validated: 1 -EndChar - -StartChar: seven -Encoding: 55 55 74 -Width: 942 -VWidth: 0 -Flags: W -HStem: 983 102<420 864> -LayerCount: 2 -Fore -SplineSet -420 1085 m 1,0,-1 - 1053 1085 l 1,1,-1 - 1030 983 l 1,2,-1 - 420 -238 l 1,3,-1 - 254 -238 l 1,4,-1 - 864 983 l 1,5,-1 - 367 983 l 1,6,-1 - 420 1085 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: nine -Encoding: 57 57 75 -Width: 942 -VWidth: 0 -Flags: W -HStem: 397 102<478 735> 1004 102<557 783> -VStem: 266 166<546 828> 838 166<555 947> -LayerCount: 2 -Fore -SplineSet -680 1004 m 0,0,1 - 624 1004 624 1004 578.5 975 c 128,-1,2 - 533 946 533 946 506.5 905 c 128,-1,3 - 480 864 480 864 462.5 815.5 c 128,-1,4 - 445 767 445 767 438.5 732 c 128,-1,5 - 432 697 432 697 432 676 c 0,6,7 - 432 603 432 603 471.5 551.5 c 128,-1,8 - 511 500 511 500 575 500 c 0,9,10 - 678 500 678 500 791 537 c 1,11,12 - 838 673 838 673 838 803 c 0,13,14 - 838 898 838 898 792.5 951 c 128,-1,15 - 747 1004 747 1004 680 1004 c 0,0,1 -737 414 m 1,16,17 - 650 397 650 397 584 397 c 0,18,19 - 443 397 443 397 354.5 469 c 128,-1,20 - 266 541 266 541 266 659 c 0,21,22 - 266 732 266 732 301.5 810.5 c 128,-1,23 - 337 889 337 889 397 955 c 128,-1,24 - 457 1021 457 1021 547 1063.5 c 128,-1,25 - 637 1106 637 1106 735 1106 c 0,26,27 - 848 1106 848 1106 926 1027 c 128,-1,28 - 1004 948 1004 948 1004 813 c 0,29,30 - 1004 710 1004 710 975.5 606.5 c 128,-1,31 - 947 503 947 503 898.5 414.5 c 128,-1,32 - 850 326 850 326 787.5 241 c 128,-1,33 - 725 156 725 156 655.5 86 c 128,-1,34 - 586 16 586 16 516.5 -45.5 c 128,-1,35 - 447 -107 447 -107 384.5 -153 c 128,-1,36 - 322 -199 322 -199 274 -232 c 0,37,38 - 224 -265 224 -265 196 -282 c 2,39,-1 - 168 -299 l 1,40,-1 - 113 -238 l 1,41,42 - 122 -232 122 -232 137.5 -222 c 128,-1,43 - 153 -212 153 -212 201 -177 c 128,-1,44 - 249 -142 249 -142 296 -104 c 128,-1,45 - 343 -66 343 -66 407 -6 c 128,-1,46 - 471 54 471 54 526.5 115 c 128,-1,47 - 582 176 582 176 639 255.5 c 128,-1,48 - 696 335 696 335 737 414 c 1,16,17 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eight -Encoding: 56 56 76 -Width: 942 -VWidth: 0 -Flags: W -HStem: -20 102<371 639> 1352 102<671 881> -VStem: 135 174<146 460> 352 180<924 1190> 801 178<276 571> 934 178<997 1295> -LayerCount: 2 -Fore -SplineSet -592 698 m 1,0,1 - 524 664 524 664 471.5 617.5 c 128,-1,2 - 419 571 419 571 389 526.5 c 128,-1,3 - 359 482 359 482 340 434 c 128,-1,4 - 321 386 321 386 315 350.5 c 128,-1,5 - 309 315 309 315 309 285 c 0,6,7 - 309 195 309 195 357.5 138.5 c 128,-1,8 - 406 82 406 82 489 82 c 0,9,10 - 547 82 547 82 595.5 100 c 128,-1,11 - 644 118 644 118 675.5 146.5 c 128,-1,12 - 707 175 707 175 731 212 c 128,-1,13 - 755 249 755 249 768 283.5 c 128,-1,14 - 781 318 781 318 789 353 c 128,-1,15 - 797 388 797 388 799 407.5 c 128,-1,16 - 801 427 801 427 801 438 c 0,17,18 - 801 477 801 477 788.5 511.5 c 128,-1,19 - 776 546 776 546 759.5 569 c 128,-1,20 - 743 592 743 592 710.5 618.5 c 128,-1,21 - 678 645 678 645 656 659 c 128,-1,22 - 634 673 634 673 592 698 c 1,0,1 -453 -20 m 0,23,24 - 306 -20 306 -20 220.5 65 c 128,-1,25 - 135 150 135 150 135 279 c 0,26,27 - 135 421 135 421 231.5 548 c 128,-1,28 - 328 675 328 675 494 760 c 1,29,30 - 352 860 352 860 352 1006 c 0,31,32 - 352 1103 352 1103 395.5 1189 c 128,-1,33 - 439 1275 439 1275 508 1332 c 128,-1,34 - 577 1389 577 1389 661 1421.5 c 128,-1,35 - 745 1454 745 1454 827 1454 c 0,36,37 - 953 1454 953 1454 1032.5 1377 c 128,-1,38 - 1112 1300 1112 1300 1112 1176 c 0,39,40 - 1112 1051 1112 1051 1036 943 c 128,-1,41 - 960 835 960 835 819 752 c 1,42,43 - 894 697 894 697 936.5 632 c 128,-1,44 - 979 567 979 567 979 473 c 0,45,46 - 979 381 979 381 943 293.5 c 128,-1,47 - 907 206 907 206 841.5 136 c 128,-1,48 - 776 66 776 66 674.5 23 c 128,-1,49 - 573 -20 573 -20 453 -20 c 0,23,24 -532 1044 m 0,50,51 - 532 1005 532 1005 545.5 972.5 c 128,-1,52 - 559 940 559 940 587.5 912 c 128,-1,53 - 616 884 616 884 642 865.5 c 128,-1,54 - 668 847 668 847 711 821 c 1,55,56 - 934 961 934 961 934 1157 c 0,57,58 - 934 1242 934 1242 889.5 1297 c 128,-1,59 - 845 1352 845 1352 786 1352 c 0,60,61 - 718 1352 718 1352 658 1301 c 128,-1,62 - 598 1250 598 1250 565 1179.5 c 128,-1,63 - 532 1109 532 1109 532 1044 c 0,50,51 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ampersand -Encoding: 38 38 77 -Width: 1163 -VWidth: 0 -Flags: W -HStem: -20 102<419 742> 0 43G<911 1061> 1270 102<779 983> -VStem: 150 166<182 539> 553 141<891 1176> 1165 113<709 835> -LayerCount: 2 -Fore -SplineSet -881 1270 m 0,0,1 - 807 1270 807 1270 750.5 1194 c 128,-1,2 - 694 1118 694 1118 694 1020 c 0,3,4 - 694 900 694 900 766 725 c 2,5,-1 - 944 289 l 1,6,7 - 1073 473 1073 473 1165 877 c 1,8,-1 - 1278 829 l 1,9,10 - 1237 651 1237 651 1163 485 c 128,-1,11 - 1089 319 1089 319 981 199 c 1,12,-1 - 1061 0 l 1,13,-1 - 928 0 l 1,14,-1 - 885 106 l 1,15,16 - 723 -20 723 -20 520 -20 c 0,17,18 - 351 -20 351 -20 250.5 72.5 c 128,-1,19 - 150 165 150 165 150 324 c 0,20,21 - 150 520 150 520 275 683 c 128,-1,22 - 400 846 400 846 569 901 c 1,23,24 - 553 975 553 975 553 1012 c 0,25,26 - 553 1045 553 1045 558.5 1081.5 c 128,-1,27 - 564 1118 564 1118 587 1173 c 128,-1,28 - 610 1228 610 1228 648.5 1269.5 c 128,-1,29 - 687 1311 687 1311 761.5 1341.5 c 128,-1,30 - 836 1372 836 1372 936 1372 c 0,31,32 - 1132 1372 1132 1372 1167 1208 c 1,33,-1 - 1001 1174 l 1,34,35 - 994 1204 994 1204 990 1216.5 c 128,-1,36 - 986 1229 986 1229 974 1244.5 c 128,-1,37 - 962 1260 962 1260 940 1265 c 128,-1,38 - 918 1270 918 1270 881 1270 c 0,0,1 -602 801 m 1,39,40 - 523 771 523 771 456.5 698.5 c 128,-1,41 - 390 626 390 626 352.5 530.5 c 128,-1,42 - 315 435 315 435 315 340 c 0,43,44 - 315 220 315 220 384 151 c 128,-1,45 - 453 82 453 82 573 82 c 0,46,47 - 738 82 738 82 852 184 c 1,48,-1 - 602 801 l 1,39,40 -EndSplineSet -Validated: 1 -EndChar - -StartChar: parenleft -Encoding: 40 40 78 -Width: 548 -VWidth: 0 -Flags: W -HStem: 0 43G<333 446> 1393 41G<658 778> -VStem: 229 158<130 721> -LayerCount: 2 -Fore -SplineSet -676 1434 m 25,0,-1 - 778 1434 l 1,1,2 - 770 1425 770 1425 756 1408 c 128,-1,3 - 742 1391 742 1391 701 1333 c 128,-1,4 - 660 1275 660 1275 623.5 1212 c 128,-1,5 - 587 1149 587 1149 541.5 1050 c 128,-1,6 - 496 951 496 951 463.5 849 c 128,-1,7 - 431 747 431 747 409 614 c 128,-1,8 - 387 481 387 481 387 348 c 0,9,10 - 387 284 387 284 393 224.5 c 128,-1,11 - 399 165 399 165 407.5 126 c 128,-1,12 - 416 87 416 87 425 57 c 0,13,14 - 434 28 434 28 440 14 c 2,15,-1 - 446 0 l 1,16,-1 - 344 0 l 1,17,18 - 339 5 339 5 331.5 15 c 128,-1,19 - 324 25 324 25 304 61 c 128,-1,20 - 284 97 284 97 269 140 c 128,-1,21 - 254 183 254 183 241.5 255.5 c 128,-1,22 - 229 328 229 328 229 408 c 0,23,24 - 229 545 229 545 253.5 675.5 c 128,-1,25 - 278 806 278 806 317.5 905 c 128,-1,26 - 357 1004 357 1004 405 1092.5 c 128,-1,27 - 453 1181 453 1181 500 1242 c 0,28,29 - 548 1304 548 1304 588 1348 c 128,-1,30 - 628 1392 628 1392 652 1413 c 2,31,-1 - 676 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: parenright -Encoding: 41 41 79 -Width: 548 -VWidth: 0 -Flags: W -HStem: 0 43G<102 223> 1393 41G<434 548> -VStem: 494 156<712 1303> -LayerCount: 2 -Fore -SplineSet -205 0 m 25,0,-1 - 102 0 l 1,1,2 - 110 9 110 9 124 26 c 128,-1,3 - 138 43 138 43 179 100.5 c 128,-1,4 - 220 158 220 158 257 221.5 c 128,-1,5 - 294 285 294 285 339 384 c 128,-1,6 - 384 483 384 483 416.5 584.5 c 128,-1,7 - 449 686 449 686 471.5 819 c 128,-1,8 - 494 952 494 952 494 1085 c 0,9,10 - 494 1187 494 1187 479 1274 c 0,11,12 - 464 1362 464 1362 449 1398 c 2,13,-1 - 434 1434 l 1,14,-1 - 537 1434 l 1,15,16 - 542 1429 542 1429 549.5 1419 c 128,-1,17 - 557 1409 557 1409 576 1373 c 128,-1,18 - 595 1337 595 1337 610 1294 c 128,-1,19 - 625 1251 625 1251 637 1178.5 c 128,-1,20 - 649 1106 649 1106 649 1026 c 0,21,22 - 649 888 649 888 624.5 757 c 128,-1,23 - 600 626 600 626 561 526.5 c 128,-1,24 - 522 427 522 427 474.5 339 c 128,-1,25 - 427 251 427 251 379.5 190.5 c 128,-1,26 - 332 130 332 130 293 86 c 128,-1,27 - 254 42 254 42 230 21 c 2,28,-1 - 205 0 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: asterisk -Encoding: 42 42 80 -Width: 864 -VWidth: 0 -Flags: W -HStem: 1049 121<980 1019> -VStem: 680 127<1305 1352> -LayerCount: 2 -Fore -SplineSet -635 1057 m 1,0,-1 - 680 1352 l 1,1,-1 - 807 1352 l 1,2,-1 - 717 1057 l 1,3,-1 - 1018 1169 l 1,4,-1 - 1028 1049 l 1,5,-1 - 723 979 l 1,6,-1 - 864 754 l 1,7,-1 - 743 678 l 1,8,-1 - 647 930 l 1,9,-1 - 432 678 l 1,10,-1 - 348 754 l 1,11,-1 - 592 979 l 1,12,-1 - 319 1049 l 1,13,-1 - 387 1169 l 1,14,-1 - 635 1057 l 1,0,-1 -635 1057 m 1,15,-1 -592 979 m 1,16,-1 -647 930 m 1,17,-1 -723 979 m 1,18,-1 -717 1057 m 1,19,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: plus -Encoding: 43 43 81 -Width: 856 -VWidth: 0 -Flags: W -HStem: 348 102<186 457 584 854> -LayerCount: 2 -Fore -SplineSet -559 348 m 1,0,-1 - 492 53 l 1,1,-1 - 389 53 l 1,2,-1 - 457 348 l 1,3,-1 - 162 348 l 1,4,-1 - 186 451 l 1,5,-1 - 481 451 l 1,6,-1 - 549 745 l 1,7,-1 - 651 745 l 1,8,-1 - 584 451 l 1,9,-1 - 879 451 l 1,10,-1 - 854 348 l 1,11,-1 - 559 348 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: hyphen -Encoding: 45 45 82 -Width: 649 -VWidth: 0 -Flags: W -HStem: 348 102<186 647> -VStem: 162 510 -LayerCount: 2 -Fore -SplineSet -186 451 m 1,0,-1 - 672 451 l 1,1,-1 - 647 348 l 1,2,-1 - 162 348 l 1,3,-1 - 186 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: less -Encoding: 60 60 83 -Width: 856 -VWidth: 0 -Flags: W -HStem: 860 41G<823 910> -LayerCount: 2 -Fore -SplineSet -231 504 m 1,0,-1 - 891 901 l 1,1,-1 - 930 817 l 1,2,-1 - 410 504 l 1,3,-1 - 786 193 l 1,4,-1 - 707 109 l 1,5,-1 - 231 504 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: greater -Encoding: 62 62 84 -Width: 856 -VWidth: 0 -Flags: W -HStem: 860 41G<344 432> -LayerCount: 2 -Fore -SplineSet -858 506 m 1,0,-1 - 199 109 l 1,1,-1 - 160 193 l 1,2,-1 - 680 506 l 1,3,-1 - 303 817 l 1,4,-1 - 383 901 l 1,5,-1 - 858 506 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: equal -Encoding: 61 61 85 -Width: 708 -VWidth: 0 -Flags: W -HStem: 348 102<186 707> 573 102<238 760> -VStem: 162 621 -LayerCount: 2 -Fore -SplineSet -238 676 m 1,0,-1 - 782 676 l 1,1,-1 - 760 573 l 1,2,-1 - 215 573 l 1,3,-1 - 238 676 l 1,0,-1 -186 451 m 1,4,-1 - 731 451 l 1,5,-1 - 707 348 l 1,6,-1 - 162 348 l 1,7,-1 - 186 451 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: at -Encoding: 64 64 86 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<571 956> 262 102<918 1068> 279 66<662 823> 860 66<765 904> 1126 102<746 1088> -VStem: 184 176<286 701> 528 106<358 689> 924 106<590 853> 1210 176<643 999> -LayerCount: 2 -Fore -SplineSet -1030 791 m 0,0,1 - 1030 761 1030 761 991 612 c 128,-1,2 - 952 463 952 463 952 416 c 0,3,4 - 952 387 952 387 961 376 c 128,-1,5 - 970 365 970 365 989 365 c 0,6,7 - 1039 365 1039 365 1083.5 424 c 128,-1,8 - 1128 483 1128 483 1154 563.5 c 128,-1,9 - 1180 644 1180 644 1195 717.5 c 128,-1,10 - 1210 791 1210 791 1210 831 c 0,11,12 - 1210 966 1210 966 1131.5 1046 c 128,-1,13 - 1053 1126 1053 1126 952 1126 c 0,14,15 - 849 1126 849 1126 755 1087.5 c 128,-1,16 - 661 1049 661 1049 590.5 983.5 c 128,-1,17 - 520 918 520 918 467 834.5 c 128,-1,18 - 414 751 414 751 387 657.5 c 128,-1,19 - 360 564 360 564 360 473 c 0,20,21 - 360 374 360 374 397 296 c 128,-1,22 - 434 218 434 218 493 173 c 128,-1,23 - 552 128 552 128 618 105 c 128,-1,24 - 684 82 684 82 750 82 c 0,25,26 - 990 82 990 82 1149 264 c 1,27,-1 - 1257 209 l 1,28,29 - 1153 106 1153 106 1005 43 c 128,-1,30 - 857 -20 857 -20 696 -20 c 0,31,32 - 606 -20 606 -20 517.5 10.5 c 128,-1,33 - 429 41 429 41 353.5 98.5 c 128,-1,34 - 278 156 278 156 231 251 c 128,-1,35 - 184 346 184 346 184 463 c 0,36,37 - 184 571 184 571 218 674 c 128,-1,38 - 252 777 252 777 310 859.5 c 128,-1,39 - 368 942 368 942 444.5 1012 c 128,-1,40 - 521 1082 521 1082 605.5 1129 c 128,-1,41 - 690 1176 690 1176 778 1202.5 c 128,-1,42 - 866 1229 866 1229 946 1229 c 0,43,44 - 1151 1229 1151 1229 1268.5 1129.5 c 128,-1,45 - 1386 1030 1386 1030 1386 856 c 0,46,47 - 1386 744 1386 744 1339.5 632 c 128,-1,48 - 1293 520 1293 520 1224.5 440.5 c 128,-1,49 - 1156 361 1156 361 1078 311.5 c 128,-1,50 - 1000 262 1000 262 936 262 c 128,-1,51 - 872 262 872 262 854 319 c 1,52,53 - 787 279 787 279 690 279 c 0,54,55 - 528 279 528 279 528 465 c 0,56,57 - 528 577 528 577 568.5 682.5 c 128,-1,58 - 609 788 609 788 684 857 c 128,-1,59 - 759 926 759 926 848 926 c 0,60,61 - 926 926 926 926 978 893 c 128,-1,62 - 1030 860 1030 860 1030 791 c 0,0,1 -846 399 m 1,63,64 - 850 468 850 468 887 606.5 c 128,-1,65 - 924 745 924 745 924 766 c 0,66,67 - 924 801 924 801 903 830.5 c 128,-1,68 - 882 860 882 860 854 860 c 0,69,70 - 800 860 800 860 755.5 819.5 c 128,-1,71 - 711 779 711 779 686 718 c 128,-1,72 - 661 657 661 657 648 595 c 128,-1,73 - 635 533 635 533 635 481 c 0,74,75 - 635 418 635 418 657.5 381 c 128,-1,76 - 680 344 680 344 725 344 c 0,77,78 - 769 344 769 344 793 355.5 c 128,-1,79 - 817 367 817 367 846 399 c 1,63,64 -EndSplineSet -Validated: 1 -EndChar - -StartChar: bracketleft -Encoding: 91 91 87 -Width: 432 -VWidth: 0 -Flags: W -HStem: 0 82<223 340> 1270 82<498 633> -VStem: 92 559 -LayerCount: 2 -Fore -SplineSet -340 0 m 1,0,-1 - 92 0 l 1,1,-1 - 403 1352 l 1,2,-1 - 651 1352 l 1,3,-1 - 633 1270 l 1,4,-1 - 498 1270 l 1,5,-1 - 223 82 l 1,6,-1 - 358 82 l 1,7,-1 - 340 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: bracketright -Encoding: 93 93 88 -Width: 432 -VWidth: 0 -Flags: W -HStem: 0 82<111 246> 1270 82<403 520> -VStem: 92 559 -LayerCount: 2 -Fore -SplineSet -403 1352 m 1,0,-1 - 651 1352 l 1,1,-1 - 340 0 l 1,2,-1 - 92 0 l 1,3,-1 - 111 82 l 1,4,-1 - 246 82 l 1,5,-1 - 520 1270 l 1,6,-1 - 385 1270 l 1,7,-1 - 403 1352 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: underscore -Encoding: 95 95 89 -Width: 692 -VWidth: 0 -Flags: W -HStem: -184 102<-18 649> -LayerCount: 2 -Fore -SplineSet --18 -82 m 1,0,-1 - 674 -82 l 1,1,-1 - 649 -184 l 1,2,-1 - -43 -184 l 1,3,-1 - -18 -82 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: braceleft -Encoding: 123 123 90 -Width: 530 -VWidth: 0 -Flags: W -HStem: 0 43G<308 449> 1393 41G<521 780> -VStem: 250 141<47 527> 297 139<259 679> -LayerCount: 2 -Fore -SplineSet -678 1434 m 1,0,-1 - 780 1434 l 1,1,2 - 712 1391 712 1391 669 1314.5 c 128,-1,3 - 626 1238 626 1238 604 1155 c 128,-1,4 - 582 1072 582 1072 557 989 c 128,-1,5 - 532 906 532 906 481 832 c 128,-1,6 - 430 758 430 758 350 717 c 1,7,8 - 436 658 436 658 436 526 c 0,9,10 - 436 467 436 467 413.5 340.5 c 128,-1,11 - 391 214 391 214 391 158 c 0,12,13 - 391 53 391 53 449 0 c 1,14,-1 - 346 0 l 1,15,16 - 250 62 250 62 250 207 c 0,17,18 - 250 270 250 270 273.5 399 c 128,-1,19 - 297 528 297 528 297 582 c 0,20,21 - 297 673 297 673 248 717 c 1,22,23 - 293 745 293 745 325.5 792.5 c 128,-1,24 - 358 840 358 840 377 894 c 128,-1,25 - 396 948 396 948 412.5 1008.5 c 128,-1,26 - 429 1069 429 1069 448.5 1130 c 128,-1,27 - 468 1191 468 1191 494.5 1247 c 128,-1,28 - 521 1303 521 1303 567.5 1352.5 c 128,-1,29 - 614 1402 614 1402 678 1434 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: braceright -Encoding: 125 125 91 -Width: 530 -VWidth: 0 -Flags: W -HStem: 0 43G<82 341> 1393 41G<414 554> -VStem: 426 139<755 1175> 471 141<907 1386> -LayerCount: 2 -Fore -SplineSet -184 0 m 1,0,-1 - 82 0 l 1,1,2 - 150 43 150 43 193 119.5 c 128,-1,3 - 236 196 236 196 258 279 c 128,-1,4 - 280 362 280 362 305 445 c 128,-1,5 - 330 528 330 528 381 602 c 128,-1,6 - 432 676 432 676 512 717 c 1,7,8 - 426 776 426 776 426 907 c 0,9,10 - 426 966 426 966 448.5 1093 c 128,-1,11 - 471 1220 471 1220 471 1276 c 0,12,13 - 471 1382 471 1382 414 1434 c 1,14,-1 - 516 1434 l 1,15,16 - 612 1372 612 1372 612 1227 c 0,17,18 - 612 1164 612 1164 588.5 1035 c 128,-1,19 - 565 906 565 906 565 852 c 0,20,21 - 565 761 565 761 614 717 c 1,22,23 - 569 689 569 689 536.5 641.5 c 128,-1,24 - 504 594 504 594 485 540 c 128,-1,25 - 466 486 466 486 449.5 425.5 c 128,-1,26 - 433 365 433 365 413.5 304 c 128,-1,27 - 394 243 394 243 367.5 187 c 128,-1,28 - 341 131 341 131 294.5 81.5 c 128,-1,29 - 248 32 248 32 184 0 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: gravecomb -Encoding: 768 768 92 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: -338 295 -AnchorPoint: "top" -180 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --207 1642 m 25,0,-1 - -43 1309 l 1,1,-1 - -119 1255 l 1,2,-1 - -338 1550 l 1,3,-1 - -207 1642 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: acutecomb -Encoding: 769 769 93 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: -393 406 -AnchorPoint: "top" -314 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --78 1642 m 25,0,-1 - 12 1550 l 1,1,-1 - -342 1255 l 1,2,-1 - -393 1309 l 1,3,-1 - -78 1642 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0302 -Encoding: 770 770 94 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1257 299 -VStem: -551 551 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet -0 1348 m 1,0,-1 - -113 1257 l 1,1,-1 - -254 1434 l 1,2,-1 - -479 1257 l 1,3,-1 - -551 1348 l 1,4,-1 - -227 1556 l 1,5,-1 - 0 1348 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tildecomb -Encoding: 771 771 95 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 117<-254 -61> 1335 117<-465 -272> -VStem: -567 608 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --43 1452 m 1,0,-1 - 41 1452 l 1,1,2 - 12 1372 12 1372 -52.5 1321 c 128,-1,3 - -117 1270 -117 1270 -203 1270 c 0,4,5 - -241 1270 -241 1270 -291 1302.5 c 128,-1,6 - -341 1335 -341 1335 -360 1335 c 0,7,8 - -460 1335 -460 1335 -483 1270 c 1,9,-1 - -567 1270 l 1,10,11 - -538 1350 -538 1350 -474 1401 c 128,-1,12 - -410 1452 -410 1452 -324 1452 c 0,13,14 - -286 1452 -286 1452 -235.5 1419 c 128,-1,15 - -185 1386 -185 1386 -166 1386 c 0,16,17 - -66 1386 -66 1386 -43 1452 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0304 -Encoding: 772 772 96 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 82<-522 -70> -VStem: -541 489 -AnchorPoint: "top" -314 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --522 1352 m 1,0,-1 - -51 1352 l 1,1,-1 - -70 1270 l 1,2,-1 - -541 1270 l 1,3,-1 - -522 1352 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0306 -Encoding: 774 774 97 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 117<-379 -146> -VStem: -483 84<1416 1460> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --268 1386 m 0,0,1 - -212 1386 -212 1386 -158 1416 c 128,-1,2 - -104 1446 -104 1446 -92 1481 c 1,3,-1 - -18 1460 l 1,4,5 - -46 1382 -46 1382 -126.5 1326 c 128,-1,6 - -207 1270 -207 1270 -295 1270 c 0,7,8 - -377 1270 -377 1270 -430 1320 c 128,-1,9 - -483 1370 -483 1370 -483 1442 c 0,10,11 - -483 1445 -483 1445 -482 1451 c 128,-1,12 - -481 1457 -481 1457 -481 1460 c 1,13,-1 - -399 1481 l 1,14,-1 - -399 1477 l 2,15,16 - -399 1443 -399 1443 -360.5 1414.5 c 128,-1,17 - -322 1386 -322 1386 -268 1386 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0307 -Encoding: 775 775 98 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 150<-338 -223> -VStem: -373 184 -AnchorPoint: "top" -314 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --338 1419 m 1,0,-1 - -188 1419 l 1,1,-1 - -223 1270 l 1,2,-1 - -373 1270 l 1,3,-1 - -338 1419 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0308 -Encoding: 776 776 99 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 150<-502 -387 -174 -59> -VStem: -537 184 -209 184 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 164 0 2 -Refer: 98 775 N 1 0 0 1 -164 0 2 -Validated: 1 -EndChar - -StartChar: uni030A -Encoding: 778 778 100 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1167 61<-365 -228> 1417 61<-336 -200> -VStem: -442 63<1243 1375> -186 63<1270 1404> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --260 1417 m 0,0,1 - -302 1417 -302 1417 -340.5 1384 c 128,-1,2 - -379 1351 -379 1351 -379 1303 c 0,3,4 - -379 1272 -379 1272 -357.5 1250.5 c 128,-1,5 - -336 1229 -336 1229 -303 1229 c 0,6,7 - -261 1229 -261 1229 -223.5 1262 c 128,-1,8 - -186 1295 -186 1295 -186 1343 c 0,9,10 - -186 1374 -186 1374 -206.5 1395.5 c 128,-1,11 - -227 1417 -227 1417 -260 1417 c 0,0,1 --442 1288 m 0,12,13 - -442 1365 -442 1365 -379.5 1422 c 128,-1,14 - -317 1479 -317 1479 -246 1479 c 0,15,16 - -191 1479 -191 1479 -157 1445 c 128,-1,17 - -123 1411 -123 1411 -123 1358 c 0,18,19 - -123 1281 -123 1281 -184.5 1224 c 128,-1,20 - -246 1167 -246 1167 -317 1167 c 0,21,22 - -372 1167 -372 1167 -407 1201 c 128,-1,23 - -442 1235 -442 1235 -442 1288 c 0,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni030B -Encoding: 779 779 101 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: -557 406 -229 406 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 164 0 2 -Refer: 93 769 N 1 0 0 1 -164 0 2 -Validated: 1 -EndChar - -StartChar: uni030C -Encoding: 780 780 102 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1139 387 -VStem: -487 479 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --326 1139 m 1,0,-1 - -487 1473 l 1,1,-1 - -412 1526 l 1,2,-1 - -276 1346 l 1,3,-1 - -59 1526 l 1,4,-1 - -8 1473 l 1,5,-1 - -326 1139 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni030F -Encoding: 783 783 103 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: -502 295 -174 295 -AnchorPoint: "top" -180 1188 mark 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 164 0 2 -Refer: 92 768 N 1 0 0 1 -164 0 2 -Validated: 1 -EndChar - -StartChar: uni0311 -Encoding: 785 785 104 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1343 117<-400 -168> -VStem: -145 84<1270 1314> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --279 1343 m 0,0,1 - -335 1343 -335 1343 -388 1313.5 c 128,-1,2 - -441 1284 -441 1284 -453 1249 c 1,3,-1 - -526 1270 l 1,4,5 - -498 1348 -498 1348 -418 1404 c 128,-1,6 - -338 1460 -338 1460 -250 1460 c 0,7,8 - -168 1460 -168 1460 -114.5 1410 c 128,-1,9 - -61 1360 -61 1360 -61 1288 c 0,10,11 - -61 1285 -61 1285 -62 1279 c 128,-1,12 - -63 1273 -63 1273 -63 1270 c 1,13,-1 - -145 1249 l 1,14,-1 - -145 1253 l 2,15,16 - -145 1286 -145 1286 -185 1314.5 c 128,-1,17 - -225 1343 -225 1343 -279 1343 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0312 -Encoding: 786 786 105 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 367 -VStem: -375 147<1270 1342> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --137 1636 m 1,0,1 - -225 1542 -225 1542 -225 1446 c 0,2,3 - -225 1432 -225 1432 -222 1398 c 128,-1,4 - -219 1364 -219 1364 -219 1343 c 0,5,6 - -219 1306 -219 1306 -227 1270 c 1,7,-1 - -375 1270 l 1,8,9 - -360 1334 -360 1334 -343.5 1386.5 c 128,-1,10 - -327 1439 -327 1439 -316 1470 c 128,-1,11 - -305 1501 -305 1501 -286.5 1533.5 c 128,-1,12 - -268 1566 -268 1566 -261.5 1575 c 128,-1,13 - -255 1584 -255 1584 -234.5 1609 c 128,-1,14 - -214 1634 -214 1634 -213 1636 c 1,15,-1 - -137 1636 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0313 -Encoding: 787 787 106 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 367 -VStem: -250 147<1564 1636> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --340 1270 m 1,0,1 - -252 1364 -252 1364 -252 1460 c 0,2,3 - -252 1475 -252 1475 -255 1509 c 128,-1,4 - -258 1543 -258 1543 -258 1563 c 0,5,6 - -258 1600 -258 1600 -250 1636 c 1,7,-1 - -102 1636 l 1,8,9 - -117 1572 -117 1572 -133.5 1519.5 c 128,-1,10 - -150 1467 -150 1467 -161 1436 c 128,-1,11 - -172 1405 -172 1405 -190.5 1372.5 c 128,-1,12 - -209 1340 -209 1340 -215.5 1331 c 128,-1,13 - -222 1322 -222 1322 -242.5 1297 c 128,-1,14 - -263 1272 -263 1272 -264 1270 c 1,15,-1 - -340 1270 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0314 -Encoding: 788 788 107 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 367<-335 -279> -VStem: -358 80<1271 1495> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --178 1636 m 1,0,1 - -190 1587 -190 1587 -216 1540 c 128,-1,2 - -242 1493 -242 1493 -260.5 1452.5 c 128,-1,3 - -279 1412 -279 1412 -279 1362 c 0,4,5 - -279 1317 -279 1317 -256 1270 c 1,6,-1 - -332 1270 l 1,7,8 - -334 1275 -334 1275 -340 1293.5 c 128,-1,9 - -346 1312 -346 1312 -349 1322.5 c 128,-1,10 - -352 1333 -352 1333 -355 1355.5 c 128,-1,11 - -358 1378 -358 1378 -358 1403 c 0,12,13 - -358 1494 -358 1494 -326 1636 c 1,14,-1 - -178 1636 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0326 -Encoding: 806 806 108 -Width: 0 -VWidth: 0 -Flags: W -HStem: -401 49<-827 -646> -164 57<-696 -608> -VStem: -582 129<-312 -181> -AnchorPoint: "cedilla" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --827 -352 m 17,0,1 - -773 -352 -773 -352 -735.5 -348 c 128,-1,2 - -698 -344 -698 -344 -660 -333.5 c 128,-1,3 - -622 -323 -622 -323 -602 -299 c 128,-1,4 - -582 -275 -582 -275 -582 -238 c 0,5,6 - -582 -206 -582 -206 -611 -188.5 c 128,-1,7 - -640 -171 -640 -171 -709 -164 c 1,8,-1 - -696 -106 l 1,9,10 - -588 -106 -588 -106 -520.5 -141.5 c 128,-1,11 - -453 -177 -453 -177 -453 -231 c 0,12,13 - -453 -259 -453 -259 -473.5 -287 c 128,-1,14 - -494 -315 -494 -315 -536 -341.5 c 128,-1,15 - -578 -368 -578 -368 -656.5 -384.5 c 128,-1,16 - -735 -401 -735 -401 -838 -401 c 1,17,-1 - -827 -352 l 17,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0327 -Encoding: 807 807 109 -Width: 0 -VWidth: 0 -Flags: W -HStem: -401 49<-827 -648> -164 164<-643 -589> -VStem: -582 129<-312 -182> -AnchorPoint: "cedilla" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --827 -352 m 17,0,1 - -773 -352 -773 -352 -735.5 -348 c 128,-1,2 - -698 -344 -698 -344 -660 -333.5 c 128,-1,3 - -622 -323 -622 -323 -602 -299 c 128,-1,4 - -582 -275 -582 -275 -582 -238 c 0,5,6 - -582 -206 -582 -206 -611 -188.5 c 128,-1,7 - -640 -171 -640 -171 -709 -164 c 1,8,-1 - -643 0 l 1,9,-1 - -537 0 l 1,10,-1 - -573 -111 l 1,11,12 - -518 -120 -518 -120 -485.5 -148.5 c 128,-1,13 - -453 -177 -453 -177 -453 -221 c 0,14,15 - -453 -267 -453 -267 -486 -302.5 c 128,-1,16 - -519 -338 -519 -338 -574.5 -359 c 128,-1,17 - -630 -380 -630 -380 -697 -390.5 c 128,-1,18 - -764 -401 -764 -401 -838 -401 c 1,19,-1 - -827 -352 l 17,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0328 -Encoding: 808 808 110 -Width: 0 -VWidth: 0 -Flags: W -HStem: -319 37<-595 -504> -VStem: -758 119<-266 -112> -AnchorPoint: "ogonek" -483 0 mark 0 -LayerCount: 2 -Fore -SplineSet --477 25 m 9,0,-1 - -483 0 l 1,1,2 - -506 -10 -506 -10 -527.5 -23.5 c 128,-1,3 - -549 -37 -549 -37 -577 -60.5 c 128,-1,4 - -605 -84 -605 -84 -622 -119 c 128,-1,5 - -639 -154 -639 -154 -639 -195 c 0,6,7 - -639 -239 -639 -239 -606.5 -261 c 128,-1,8 - -574 -283 -574 -283 -496 -283 c 1,9,-1 - -504 -319 l 1,10,11 - -643 -319 -643 -319 -700.5 -286.5 c 128,-1,12 - -758 -254 -758 -254 -758 -207 c 0,13,14 - -758 -140 -758 -140 -672 -72 c 128,-1,15 - -586 -4 -586 -4 -477 25 c 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0237 -Encoding: 567 567 111 -Width: 376 -VWidth: 0 -Flags: W -HStem: -348 102<-190 42> 860 41G<322 496> -AnchorPoint: "bottom" -63 -348 basechar 0 -AnchorPoint: "top" 436 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet --141 -195 m 1,0,1 - -119 -246 -119 -246 -45 -246 c 0,2,3 - 15 -246 15 -246 54 -187.5 c 128,-1,4 - 93 -129 93 -129 123 0 c 2,5,-1 - 332 901 l 1,6,-1 - 496 901 l 1,7,-1 - 270 -68 l 2,8,9 - 254 -141 254 -141 214.5 -197 c 128,-1,10 - 175 -253 175 -253 122.5 -284.5 c 128,-1,11 - 70 -316 70 -316 14 -332 c 128,-1,12 - -42 -348 -42 -348 -98 -348 c 0,13,14 - -228 -348 -228 -348 -285 -256 c 1,15,-1 - -141 -195 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: dotlessi -Encoding: 305 305 112 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41G<292 465> -VStem: 135 174<85 272> 430 70<93 131> -AnchorPoint: "ogonek" 248 0 basechar 0 -AnchorPoint: "bottom" 172 0 basechar 0 -AnchorPoint: "top" 408 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -319 276 m 2,0,1 - 309 232 309 232 309 182 c 0,2,3 - 309 82 309 82 352 82 c 0,4,5 - 380 82 380 82 402.5 96.5 c 128,-1,6 - 425 111 425 111 430 131 c 1,7,-1 - 500 131 l 1,8,9 - 487 68 487 68 428.5 24 c 128,-1,10 - 370 -20 370 -20 301 -20 c 0,11,12 - 228 -20 228 -20 181.5 29.5 c 128,-1,13 - 135 79 135 79 135 156 c 0,14,15 - 135 183 135 183 141 213 c 2,16,-1 - 301 901 l 1,17,-1 - 465 901 l 1,18,-1 - 319 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: agrave -Encoding: 224 224 113 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1071 387 -VStem: 154 158<136 521> 574 295 711 172<113 272> 1004 72<93 131> -AnchorPoint: "ogonek" 903 0 basechar 0 -AnchorPoint: "bottom" 446 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 912 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: egrave -Encoding: 232 232 114 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1071 387 -VStem: 150 166<182 446> 575 295 872 160<556 758> -AnchorPoint: "ogonek" 559 0 basechar 0 -AnchorPoint: "bottom" 510 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 913 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: igrave -Encoding: 236 236 115 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1071 387 -VStem: 135 174<85 272> 250 295 430 70<93 131> -AnchorPoint: "bottom" 172 0 basechar 0 -AnchorPoint: "ogonek" 248 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 588 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ograve -Encoding: 242 242 116 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1071 387 -VStem: 147 164<157 530> 580 295 897 168<366 739> -AnchorPoint: "ogonek" 508 0 basechar 0 -AnchorPoint: "bottom" 487 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 918 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ugrave -Encoding: 249 249 117 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1071 387 -VStem: 154 172<137 501> 561 295 762 174<142 374> 1057 70<93 131> -AnchorPoint: "ogonek" 932 0 basechar 0 -AnchorPoint: "bottom" 471 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 899 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: aacute -Encoding: 225 225 118 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1071 387 -VStem: 154 158<136 521> 651 406 711 172<113 272> 1004 72<93 131> -AnchorPoint: "ogonek" 903 0 basechar 0 -AnchorPoint: "bottom" 446 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1045 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: eacute -Encoding: 233 233 119 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1071 387 -VStem: 150 166<182 446> 653 406 872 160<556 758> -AnchorPoint: "ogonek" 559 0 basechar 0 -AnchorPoint: "bottom" 510 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: iacute -Encoding: 237 237 120 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1071 387 -VStem: 135 174<85 272> 328 406 430 70<93 131> -AnchorPoint: "bottom" 172 0 basechar 0 -AnchorPoint: "ogonek" 248 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 721 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: oacute -Encoding: 243 243 121 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1071 387 -VStem: 147 164<157 530> 658 406 897 168<366 739> -AnchorPoint: "ogonek" 508 0 basechar 0 -AnchorPoint: "bottom" 487 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uacute -Encoding: 250 250 122 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1071 387 -VStem: 154 172<137 501> 639 406 762 174<142 374> 1057 70<93 131> -AnchorPoint: "ogonek" 932 0 basechar 0 -AnchorPoint: "bottom" 471 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1032 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: yacute -Encoding: 253 253 123 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<133 262> 860 41<270 425 901 1090> 1071 387 -VStem: 629 406 -AnchorPoint: "bottom" 299 -315 basechar 0 -AnchorPoint: "ogonek" 631 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1022 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: acircumflex -Encoding: 226 226 124 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1073 299 -VStem: 154 158<136 521> 494 551 711 172<113 272> 1004 72<93 131> -AnchorPoint: "top" 815 1352 basechar 0 -AnchorPoint: "ogonek" 903 0 basechar 0 -AnchorPoint: "bottom" 446 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1045 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ecircumflex -Encoding: 234 234 125 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1073 299 -VStem: 150 166<182 446> 496 551 872 160<556 758> -AnchorPoint: "top" 815 1352 basechar 0 -AnchorPoint: "ogonek" 559 0 basechar 0 -AnchorPoint: "bottom" 510 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: icircumflex -Encoding: 238 238 126 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1073 299 -VStem: 135 174<85 272> 170 551 430 70<93 131> -AnchorPoint: "top" 487 1352 basechar 0 -AnchorPoint: "bottom" 172 0 basechar 0 -AnchorPoint: "ogonek" 248 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 721 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ocircumflex -Encoding: 244 244 127 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1073 299 -VStem: 147 164<157 530> 500 551 897 168<366 739> -AnchorPoint: "top" 817 1352 basechar 0 -AnchorPoint: "ogonek" 508 0 basechar 0 -AnchorPoint: "bottom" 487 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ucircumflex -Encoding: 251 251 128 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1073 299 -VStem: 154 172<137 501> 481 551 762 174<142 374> 1057 70<93 131> -AnchorPoint: "ogonek" 932 0 basechar 0 -AnchorPoint: "bottom" 471 0 basechar 0 -AnchorPoint: "top" 803 1352 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1032 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: atilde -Encoding: 227 227 129 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1085 117<790 983> 1151 117<579 772> -VStem: 154 158<136 521> 477 608 711 172<113 272> 1004 72<93 131> -AnchorPoint: "ogonek" 903 0 basechar 0 -AnchorPoint: "bottom" 446 0 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1044 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ntilde -Encoding: 241 241 130 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<184 358 821 994> 819 102<221 380 602 914> 1085 117<823 1016> 1151 117<612 805> -VStem: 150 70<770 808> 510 608 954 164<389 778> -AnchorPoint: "cedilla" 578 0 basechar 0 -AnchorPoint: "bottom" 578 0 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1077 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: otilde -Encoding: 245 245 131 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1085 117<797 989> 1151 117<586 778> -VStem: 147 164<157 530> 483 608 897 168<366 739> -AnchorPoint: "bottom" 487 0 basechar 0 -AnchorPoint: "ogonek" 508 0 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: adieresis -Encoding: 228 228 132 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1085 150<543 657 870 985> -VStem: 154 158<136 521> 508 184 711 172<113 272> 836 184 1004 72<93 131> -AnchorPoint: "top" 815 1352 basechar 0 -AnchorPoint: "ogonek" 903 0 basechar 0 -AnchorPoint: "bottom" 446 0 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1044 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: aring -Encoding: 229 229 133 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 983 61<679 816> 1233 61<709 844> -VStem: 154 158<136 521> 602 63<1058 1191> 711 172<113 272> 858 63<1085 1220> 1004 72<93 131> -AnchorPoint: "top" 461 1352 basechar 0 -AnchorPoint: "ogonek" 819 0 basechar 0 -AnchorPoint: "bottom" 446 0 basechar 0 -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 3 -Refer: 100 778 N 1 0 0 1 1044 -184 2 -Validated: 1 -EndChar - -StartChar: edieresis -Encoding: 235 235 134 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1085 150<545 659 872 987> -VStem: 150 166<182 446> 510 184 838 184 872 160<556 758> -AnchorPoint: "top" 815 1352 basechar 0 -AnchorPoint: "ogonek" 559 0 basechar 0 -AnchorPoint: "bottom" 510 0 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: idieresis -Encoding: 239 239 135 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1085 150<219 334 547 662> -VStem: 135 174<85 272> 184 184 430 70<93 131> 512 184 -AnchorPoint: "top" 487 1352 basechar 0 -AnchorPoint: "bottom" 172 0 basechar 0 -AnchorPoint: "ogonek" 248 0 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 721 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: odieresis -Encoding: 246 246 136 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1085 150<549 664 877 991> -VStem: 147 164<157 530> 514 184 842 184 897 168<366 739> -AnchorPoint: "bottom" 487 0 basechar 0 -AnchorPoint: "ogonek" 508 0 basechar 0 -AnchorPoint: "top" 817 1352 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: udieresis -Encoding: 252 252 137 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1085 150<530 645 858 973> -VStem: 154 172<137 501> 496 184 762 174<142 374> 823 184 1057 70<93 131> -AnchorPoint: "ogonek" 932 0 basechar 0 -AnchorPoint: "bottom" 471 0 basechar 0 -AnchorPoint: "top" 803 1352 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1032 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Agrave -Encoding: 192 192 138 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1501 387 -VStem: 817 295 -AnchorPoint: "ogonek" 1092 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1092 0 m 1 -EndSplineSet -Refer: 92 768 N 1 0 0 1 1155 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Aacute -Encoding: 193 193 139 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1501 387 -VStem: 895 406 -AnchorPoint: "bottom" 639 0 basechar 0 -AnchorPoint: "ogonek" 1092 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1092 0 m 1 -EndSplineSet -Refer: 93 769 N 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Acircumflex -Encoding: 194 194 140 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1503 299 -VStem: 737 551 -AnchorPoint: "top" 1040 1720 basechar 0 -AnchorPoint: "bottom" 639 0 basechar 0 -AnchorPoint: "ogonek" 1092 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1092 0 m 1 -EndSplineSet -Refer: 94 770 S 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Atilde -Encoding: 195 195 141 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1516 117<1034 1227> 1581 117<823 1016> -VStem: 721 608 -AnchorPoint: "bottom" 639 0 basechar 0 -AnchorPoint: "ogonek" 1092 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1092 0 m 5 -EndSplineSet -Refer: 95 771 N 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Adieresis -Encoding: 196 196 142 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1516 150<786 901 1114 1229> -VStem: 752 184 1079 184 -AnchorPoint: "top" 1040 1720 basechar 0 -AnchorPoint: "bottom" 639 0 basechar 0 -AnchorPoint: "ogonek" 1092 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1092 0 m 1 -EndSplineSet -Refer: 99 776 N 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Aring -Encoding: 197 197 143 -Width: 1275 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 21G<31 206.854 1089.27 1255> 410 102<500 1024> 1663 62<950.717 1084.54> -VStem: 846 63<1492.72 1622.99> 1102 63<1514.97 1640.82> -AnchorPoint: "top" 1033 1720 basechar 0 -AnchorPoint: "bottom" 639 0 basechar 0 -AnchorPoint: "ogonek" 1092 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -928 1231 m 1,0,-1 - 500 512 l 1,1,-1 - 1024 512 l 1,2,-1 - 928 1231 l 1,0,-1 -897 1434 m 1,3,4 - 846 1469 846 1469 846 1540 c 128,-1,5 - 846 1611 846 1611 908.5 1668 c 128,-1,6 - 971 1725 971 1725 1034 1725 c 128,-1,7 - 1097 1725 1097 1725 1131 1691 c 128,-1,8 - 1165 1657 1165 1657 1165 1592 c 2,9,10 - 1165 1590 l 2,11,12 - 1165 1526 1165 1526 1104 1470 c 0,13,14 - 1080 1448 1080 1448 1054 1434 c 1,15,-1 - 1065 1434 l 1,16,-1 - 1255 0 l 1,17,-1 - 1092 0 l 1,18,-1 - 1036 410 l 1,19,-1 - 438 410 l 1,20,-1 - 195 0 l 1,21,-1 - 31 0 l 1,22,-1 - 885 1434 l 1,23,-1 - 897 1434 l 1,3,4 -1081.5 1641.5 m 128,-1,25 - 1061 1663 1061 1663 1023.5 1663 c 128,-1,26 - 986 1663 986 1663 947.5 1630 c 128,-1,27 - 909 1597 909 1597 909 1557.5 c 128,-1,28 - 909 1518 909 1518 930.5 1496.5 c 128,-1,29 - 952 1475 952 1475 989.5 1475 c 128,-1,30 - 1027 1475 1027 1475 1064.5 1508 c 128,-1,31 - 1102 1541 1102 1541 1102 1580.5 c 128,-1,24 - 1102 1620 1102 1620 1081.5 1641.5 c 128,-1,25 -EndSplineSet -EndChar - -StartChar: Egrave -Encoding: 200 200 144 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1501 387 -VStem: 697 295 -AnchorPoint: "ogonek" 754 0 basechar 0 -AnchorPoint: "bottom" 537 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1034 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Eacute -Encoding: 201 201 145 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1501 387 -VStem: 774 406 -AnchorPoint: "ogonek" 754 0 basechar 0 -AnchorPoint: "bottom" 537 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1168 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ecircumflex -Encoding: 202 202 146 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1503 299 -VStem: 617 551 -AnchorPoint: "top" 922 1720 basechar 0 -AnchorPoint: "ogonek" 754 0 basechar 0 -AnchorPoint: "bottom" 537 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1168 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Edieresis -Encoding: 203 203 147 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1516 150<666 780 993 1108> -VStem: 631 184 958 184 -AnchorPoint: "top" 922 1720 basechar 0 -AnchorPoint: "ogonek" 754 0 basechar 0 -AnchorPoint: "bottom" 537 0 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1167 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Igrave -Encoding: 204 204 148 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1501 387 -VStem: 92 506 356 295 -AnchorPoint: "ogonek" 156 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 694 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Iacute -Encoding: 205 205 149 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1501 387 -VStem: 92 506 434 406 -AnchorPoint: "ogonek" 156 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 828 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Icircumflex -Encoding: 206 206 150 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1503 299 -VStem: 92 506 277 551 -AnchorPoint: "ogonek" 156 0 basechar 0 -AnchorPoint: "top" 580 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 828 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Idieresis -Encoding: 207 207 151 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1516 150<326 440 653 768> -VStem: 92 506 291 184 618 184 -AnchorPoint: "ogonek" 156 0 basechar 0 -AnchorPoint: "top" 580 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 827 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ntilde -Encoding: 209 209 152 -Width: 1325 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 961 1165> 1393 41<414 616 1303 1487> 1516 117<1026 1219> 1581 117<815 1008> -VStem: 713 608 -AnchorPoint: "cedilla" 614 0 basechar 0 -AnchorPoint: "bottom" 612 0 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1280 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ograve -Encoding: 210 210 153 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1501 387 -VStem: 199 176<286 770> 840 295 1315 176<653 1162> -AnchorPoint: "ogonek" 684 0 basechar 0 -AnchorPoint: "bottom" 680 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1178 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Oacute -Encoding: 211 211 154 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1501 387 -VStem: 199 176<286 770> 918 406 1315 176<653 1162> -AnchorPoint: "top" 997 1434 basechar 0 -AnchorPoint: "ogonek" 684 0 basechar 0 -AnchorPoint: "bottom" 680 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ocircumflex -Encoding: 212 212 155 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1503 299 -VStem: 199 176<286 770> 760 551 1315 176<653 1162> -AnchorPoint: "ogonek" 684 0 basechar 0 -AnchorPoint: "bottom" 680 0 basechar 0 -AnchorPoint: "top" 1071 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Otilde -Encoding: 213 213 156 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1516 117<1057 1249> 1581 117<846 1038> -VStem: 199 176<286 770> 743 608 1315 176<653 1162> -AnchorPoint: "ogonek" 684 0 basechar 0 -AnchorPoint: "bottom" 680 0 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Odieresis -Encoding: 214 214 157 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1516 150<809 924 1137 1251> -VStem: 199 176<286 770> 774 184 1102 184 1315 176<653 1162> -AnchorPoint: "ogonek" 684 0 basechar 0 -AnchorPoint: "bottom" 680 0 basechar 0 -AnchorPoint: "top" 1071 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ugrave -Encoding: 217 217 158 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1501 387 -VStem: 176 174<211 687> 393 174<1372 1434> 801 295 -AnchorPoint: "ogonek" 623 0 basechar 0 -AnchorPoint: "bottom" 627 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1139 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Uacute -Encoding: 218 218 159 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1501 387 -VStem: 176 174<211 687> 393 174<1372 1434> 879 406 -AnchorPoint: "ogonek" 623 0 basechar 0 -AnchorPoint: "bottom" 627 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ucircumflex -Encoding: 219 219 160 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1503 299 -VStem: 176 174<211 687> 393 174<1372 1434> 721 551 -AnchorPoint: "ogonek" 623 0 basechar 0 -AnchorPoint: "bottom" 627 0 basechar 0 -AnchorPoint: "top" 1028 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Udieresis -Encoding: 220 220 161 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1516 150<770 885 1098 1212> -VStem: 176 174<211 687> 393 174<1372 1434> 735 184 1063 184 -AnchorPoint: "ogonek" 623 0 basechar 0 -AnchorPoint: "bottom" 627 0 basechar 0 -AnchorPoint: "top" 1028 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Yacute -Encoding: 221 221 162 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<451 634> 1393 41<414 609 1112 1327> 1501 387 -VStem: 789 406 -AnchorPoint: "ogonek" 569 0 basechar 0 -AnchorPoint: "bottom" 537 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1182 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Thorn -Encoding: 222 222 163 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276> 328 102<367 781> 1004 102<522 894> 1393 41G<414 598> -VStem: 958 174<627 943> -LayerCount: 2 -Fore -SplineSet -1133 801 m 0,0,1 - 1133 748 1133 748 1116.5 693 c 128,-1,2 - 1100 638 1100 638 1069.5 585.5 c 128,-1,3 - 1039 533 1039 533 991 486 c 128,-1,4 - 943 439 943 439 884.5 404 c 128,-1,5 - 826 369 826 369 749 348.5 c 128,-1,6 - 672 328 672 328 588 328 c 2,7,-1 - 342 328 l 1,8,-1 - 266 0 l 1,9,-1 - 92 0 l 1,10,-1 - 424 1434 l 1,11,-1 - 598 1434 l 1,12,-1 - 522 1106 l 1,13,-1 - 768 1106 l 2,14,15 - 866 1106 866 1106 939.5 1079.5 c 128,-1,16 - 1013 1053 1013 1053 1054 1008 c 128,-1,17 - 1095 963 1095 963 1114 911 c 128,-1,18 - 1133 859 1133 859 1133 801 c 0,0,1 -498 1004 m 1,19,-1 - 367 430 l 1,20,-1 - 641 430 l 2,21,22 - 731 430 731 430 806 488.5 c 128,-1,23 - 881 547 881 547 919.5 631 c 128,-1,24 - 958 715 958 715 958 799 c 0,25,26 - 958 886 958 886 913.5 945 c 128,-1,27 - 869 1004 869 1004 774 1004 c 2,28,-1 - 498 1004 l 1,19,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: thorn -Encoding: 254 254 164 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 102<336 556> 823 102<602 930> -VStem: 979 166<465 775> -LayerCount: 2 -Fore -SplineSet -311 0 m 1,0,-1 - 217 -410 l 1,1,-1 - 53 -410 l 1,2,-1 - 459 1352 l 1,3,-1 - 623 1352 l 1,4,-1 - 512 866 l 1,5,6 - 621 926 621 926 780 926 c 0,7,8 - 952 926 952 926 1048.5 863.5 c 128,-1,9 - 1145 801 1145 801 1145 670 c 0,10,11 - 1145 532 1145 532 1078 409 c 128,-1,12 - 1011 286 1011 286 897.5 198.5 c 128,-1,13 - 784 111 784 111 631.5 58 c 128,-1,14 - 479 5 479 5 311 0 c 1,0,-1 -336 102 m 1,15,16 - 493 104 493 104 640 174.5 c 128,-1,17 - 787 245 787 245 883 373 c 128,-1,18 - 979 501 979 501 979 653 c 0,19,20 - 979 739 979 739 929.5 781 c 128,-1,21 - 880 823 880 823 788 823 c 0,22,23 - 633 823 633 823 548.5 742.5 c 128,-1,24 - 464 662 464 662 428 508 c 1,25,-1 - 336 102 l 1,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: multiply -Encoding: 215 215 165 -Width: 856 -VWidth: 0 -Flags: W -HStem: 229 561 -VStem: 217 657 -LayerCount: 2 -Fore -SplineSet -616 510 m 1,0,-1 - 778 301 l 1,1,-1 - 690 229 l 1,2,-1 - 528 438 l 1,3,-1 - 272 229 l 1,4,-1 - 217 301 l 1,5,-1 - 473 510 l 1,6,-1 - 313 719 l 1,7,-1 - 401 791 l 1,8,-1 - 563 582 l 1,9,-1 - 819 791 l 1,10,-1 - 874 719 l 1,11,-1 - 616 510 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Oslash -Encoding: 216 216 166 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<551 861> 0 43G<332 465> 1352 102<811 1139> 1393 41G<1225 1364> -VStem: 199 176<283 770> 1315 176<653 1159> -AnchorPoint: "top" 997 1434 basechar 0 -AnchorPoint: "ogonek" 684 0 basechar 0 -AnchorPoint: "bottom" 680 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -969 1352 m 0,0,1 - 860 1352 860 1352 750.5 1276.5 c 128,-1,2 - 641 1201 641 1201 559.5 1082 c 128,-1,3 - 478 963 478 963 426.5 809.5 c 128,-1,4 - 375 656 375 656 375 508 c 0,5,6 - 375 328 375 328 463 207 c 1,7,-1 - 1157 1296 l 1,8,9 - 1071 1352 1071 1352 969 1352 c 0,0,1 -1231 1227 m 1,10,-1 - 539 135 l 1,11,12 - 612 82 612 82 694 82 c 0,13,14 - 806 82 806 82 918.5 153.5 c 128,-1,15 - 1031 225 1031 225 1118 341 c 128,-1,16 - 1205 457 1205 457 1260 615.5 c 128,-1,17 - 1315 774 1315 774 1315 938 c 0,18,19 - 1315 1115 1315 1115 1231 1227 c 1,10,-1 -1225 1405 m 1,20,-1 - 1243 1434 l 1,21,-1 - 1364 1434 l 1,22,-1 - 1313 1354 l 1,23,24 - 1491 1220 1491 1220 1491 948 c 0,25,26 - 1491 863 1491 863 1475 772 c 128,-1,27 - 1459 681 1459 681 1425 586 c 128,-1,28 - 1391 491 1391 491 1342.5 403.5 c 128,-1,29 - 1294 316 1294 316 1224.5 238.5 c 128,-1,30 - 1155 161 1155 161 1072.5 103.5 c 128,-1,31 - 990 46 990 46 883.5 13 c 128,-1,32 - 777 -20 777 -20 659 -20 c 0,33,34 - 549 -20 549 -20 465 20 c 1,35,-1 - 453 0 l 1,36,-1 - 332 0 l 1,37,-1 - 377 72 l 1,38,39 - 199 212 199 212 199 489 c 0,40,41 - 199 624 199 624 236.5 763 c 128,-1,42 - 274 902 274 902 345.5 1025 c 128,-1,43 - 417 1148 417 1148 511 1244.5 c 128,-1,44 - 605 1341 605 1341 727.5 1397.5 c 128,-1,45 - 850 1454 850 1454 981 1454 c 0,46,47 - 1118 1454 1118 1454 1225 1405 c 1,20,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: oslash -Encoding: 248 248 167 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<446 668> 819 102<554 775> -VStem: 147 164<154 530> 897 168<366 738> -LayerCount: 2 -Fore -SplineSet -1065 594 m 0,0,1 - 1065 546 1065 546 1056 492.5 c 128,-1,2 - 1047 439 1047 439 1026 378.5 c 128,-1,3 - 1005 318 1005 318 974.5 262 c 128,-1,4 - 944 206 944 206 896 154 c 128,-1,5 - 848 102 848 102 789.5 64 c 128,-1,6 - 731 26 731 26 651 3 c 128,-1,7 - 571 -20 571 -20 479 -20 c 0,8,9 - 431 -20 431 -20 379 -10 c 1,10,-1 - 319 -102 l 1,11,-1 - 199 -102 l 1,12,-1 - 281 27 l 1,13,14 - 147 108 147 108 147 301 c 0,15,16 - 147 430 147 430 197.5 547.5 c 128,-1,17 - 248 665 248 665 327 745.5 c 128,-1,18 - 406 826 406 826 504 874 c 128,-1,19 - 602 922 602 922 696 922 c 0,20,21 - 770 922 770 922 838 903 c 1,22,-1 - 901 1004 l 1,23,-1 - 1022 1004 l 1,24,-1 - 932 862 l 1,25,26 - 1065 778 1065 778 1065 594 c 0,0,1 -532 82 m 0,27,28 - 608 82 608 82 677.5 127.5 c 128,-1,29 - 747 173 747 173 794 244.5 c 128,-1,30 - 841 316 841 316 869 403.5 c 128,-1,31 - 897 491 897 491 897 575 c 0,32,33 - 897 674 897 674 854 739 c 1,34,-1 - 444 94 l 1,35,36 - 482 82 482 82 532 82 c 0,27,28 -358 150 m 1,37,-1 - 776 805 l 1,38,39 - 736 819 736 819 702 819 c 0,40,41 - 602 819 602 819 511 748 c 128,-1,42 - 420 677 420 677 365.5 559 c 128,-1,43 - 311 441 311 441 311 311 c 0,44,45 - 311 206 311 206 358 150 c 1,37,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: AE -Encoding: 198 198 168 -Width: 1730 -VWidth: 0 -Flags: W -HStem: 0 102<984 1647> 410 102<507 881> 799 102<1168 1613> 1331 103<994 1093 1267 1921> -AnchorPoint: "horn" 1889 1384 basechar 0 -AnchorPoint: "ogonek" 1515 0 basechar 0 -AnchorPoint: "cedilla" 1008 0 basechar 0 -AnchorPoint: "bottom" 983 0 basechar 0 -AnchorPoint: "top" 1277 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -904 512 m 1,0,-1 - 1093 1331 l 1,1,-1 - 994 1331 l 1,2,-1 - 507 512 l 1,3,-1 - 904 512 l 1,0,-1 -881 410 m 1,4,-1 - 447 410 l 1,5,-1 - 203 0 l 1,6,-1 - 39 0 l 1,7,-1 - 892 1434 l 1,8,-1 - 1945 1434 l 1,9,-1 - 1921 1331 l 1,10,-1 - 1267 1331 l 1,11,-1 - 1168 901 l 1,12,-1 - 1637 901 l 1,13,-1 - 1613 799 l 1,14,-1 - 1144 799 l 1,15,-1 - 984 102 l 1,16,-1 - 1671 102 l 1,17,-1 - 1647 0 l 1,18,-1 - 786 0 l 1,19,-1 - 881 410 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ae -Encoding: 230 230 169 -Width: 1570 -VWidth: 0 -Flags: W -HStem: -20 102<359 691 1023 1340> 451 102<971 1479> 520 102<433 779> 819 102<455 786 1158 1420> -VStem: 127 170<145 398> 758 166<182 449> 1479 160<553 758> -AnchorPoint: "bottom" 825 0 basechar 0 -AnchorPoint: "top" 1026 997 basechar 0 -LayerCount: 2 -Fore -SplineSet -127 211 m 0,0,1 - 127 296 127 296 158 370.5 c 128,-1,2 - 189 445 189 445 246.5 501.5 c 128,-1,3 - 304 558 304 558 392 590.5 c 128,-1,4 - 480 623 480 623 588 623 c 0,5,6 - 689 623 689 623 805 606 c 1,7,8 - 813 647 813 647 813 688 c 0,9,10 - 813 759 813 759 772 789 c 128,-1,11 - 731 819 731 819 631 819 c 0,12,13 - 515 819 515 819 356 723 c 1,14,-1 - 281 829 l 1,15,16 - 482 922 482 922 625 922 c 0,17,18 - 789 922 789 922 867 890.5 c 128,-1,19 - 945 859 945 859 965 776 c 1,20,21 - 1041 845 1041 845 1129.5 883.5 c 128,-1,22 - 1218 922 1218 922 1303 922 c 0,23,24 - 1387 922 1387 922 1453 893.5 c 128,-1,25 - 1519 865 1519 865 1558.5 815.5 c 128,-1,26 - 1598 766 1598 766 1618 704 c 128,-1,27 - 1638 642 1638 642 1638 571 c 0,28,29 - 1638 523 1638 523 1624 451 c 1,30,-1 - 936 451 l 1,31,32 - 924 395 924 395 924 340 c 0,33,34 - 924 220 924 220 992 151 c 128,-1,35 - 1060 82 1060 82 1180 82 c 0,36,37 - 1327 82 1327 82 1434 205 c 1,38,-1 - 1546 158 l 1,39,40 - 1462 76 1462 76 1354.5 28 c 128,-1,41 - 1247 -20 1247 -20 1126 -20 c 0,42,43 - 936 -20 936 -20 840 90 c 1,44,45 - 751 38 751 38 643 9 c 128,-1,46 - 535 -20 535 -20 440 -20 c 0,47,48 - 127 -20 127 -20 127 211 c 0,0,1 -782 498 m 1,49,50 - 692 520 692 520 596 520 c 0,51,52 - 467 520 467 520 382 443 c 128,-1,53 - 297 366 297 366 297 258 c 0,54,55 - 297 178 297 178 354 130 c 128,-1,56 - 411 82 411 82 494 82 c 0,57,58 - 640 82 640 82 788 172 c 1,59,60 - 758 240 758 240 758 326 c 0,61,62 - 758 400 758 400 776 471 c 1,63,-1 - 782 498 l 1,49,50 -971 553 m 1,64,-1 - 1477 553 l 1,65,66 - 1479 567 1479 567 1479 594 c 0,67,68 - 1479 697 1479 697 1436.5 758 c 128,-1,69 - 1394 819 1394 819 1309 819 c 0,70,71 - 1205 819 1205 819 1113.5 744.5 c 128,-1,72 - 1022 670 1022 670 971 553 c 1,64,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eth -Encoding: 240 240 170 -Width: 1007 -VWidth: 0 -Flags: W -HStem: -20 102<422 693> 819 102<578 856> -VStem: 172 166<174 544> 897 168<382 774> -AnchorPoint: "top" 866 1434 basechar 0 -AnchorPoint: "bottom" 485 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -172 330 m 0,0,1 - 172 400 172 400 193 478.5 c 128,-1,2 - 214 557 214 557 258.5 636.5 c 128,-1,3 - 303 716 303 716 364.5 779 c 128,-1,4 - 426 842 426 842 516 882 c 128,-1,5 - 606 922 606 922 709 922 c 128,-1,6 - 812 922 812 922 889 883 c 1,7,8 - 856 1025 856 1025 770 1133 c 1,9,-1 - 643 1044 l 1,10,-1 - 608 1100 l 1,11,-1 - 727 1184 l 1,12,13 - 690 1224 690 1224 612 1286 c 1,14,-1 - 737 1380 l 1,15,16 - 801 1320 801 1320 844 1266 c 1,17,-1 - 965 1352 l 1,18,-1 - 999 1294 l 1,19,-1 - 883 1212 l 1,20,21 - 1065 963 1065 963 1065 672 c 0,22,23 - 1065 355 1065 355 904.5 167.5 c 128,-1,24 - 744 -20 744 -20 492 -20 c 0,25,26 - 347 -20 347 -20 259.5 79 c 128,-1,27 - 172 178 172 178 172 330 c 0,0,1 -897 635 m 0,28,29 - 897 734 897 734 854 776.5 c 128,-1,30 - 811 819 811 819 715 819 c 0,31,32 - 620 819 620 819 531.5 747 c 128,-1,33 - 443 675 443 675 390.5 566 c 128,-1,34 - 338 457 338 457 338 348 c 0,35,36 - 338 236 338 236 392 159 c 128,-1,37 - 446 82 446 82 545 82 c 0,38,39 - 609 82 609 82 662.5 106.5 c 128,-1,40 - 716 131 716 131 751 170 c 128,-1,41 - 786 209 786 209 813.5 261.5 c 128,-1,42 - 841 314 841 314 856.5 365.5 c 128,-1,43 - 872 417 872 417 881.5 472 c 128,-1,44 - 891 527 891 527 894 565.5 c 128,-1,45 - 897 604 897 604 897 635 c 0,28,29 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ccedilla -Encoding: 199 199 171 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -401 49<487 667> -164 164<672 725> -20 102<585 956> 1352 102<814 1199> -VStem: 201 176<307 773> 733 129<-312 -182> -AnchorPoint: "top" 1008 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -487 -352 m 1,0,1 - 529 -352 529 -352 560.5 -350 c 128,-1,2 - 592 -348 592 -348 626.5 -341 c 128,-1,3 - 661 -334 661 -334 682.5 -322 c 128,-1,4 - 704 -310 704 -310 718.5 -289 c 128,-1,5 - 733 -268 733 -268 733 -238 c 0,6,7 - 733 -206 733 -206 704 -188.5 c 128,-1,8 - 675 -171 675 -171 606 -164 c 1,9,-1 - 664 -19 l 1,10,11 - 578 -13 578 -13 498 22 c 128,-1,12 - 418 57 418 57 350.5 119.5 c 128,-1,13 - 283 182 283 182 242 283.5 c 128,-1,14 - 201 385 201 385 201 510 c 0,15,16 - 201 612 201 612 228 722 c 128,-1,17 - 255 832 255 832 304 937 c 128,-1,18 - 353 1042 353 1042 426.5 1136 c 128,-1,19 - 500 1230 500 1230 587 1300.5 c 128,-1,20 - 674 1371 674 1371 782.5 1412.5 c 128,-1,21 - 891 1454 891 1454 1006 1454 c 0,22,23 - 1368 1454 1368 1454 1489 1245 c 1,24,-1 - 1321 1178 l 1,25,26 - 1239 1352 1239 1352 1012 1352 c 0,27,28 - 892 1352 892 1352 785.5 1294 c 128,-1,29 - 679 1236 679 1236 606.5 1145 c 128,-1,30 - 534 1054 534 1054 480.5 942.5 c 128,-1,31 - 427 831 427 831 402 722.5 c 128,-1,32 - 377 614 377 614 377 522 c 0,33,34 - 377 433 377 433 400 358 c 128,-1,35 - 423 283 423 283 461 233 c 128,-1,36 - 499 183 499 183 548 148 c 128,-1,37 - 597 113 597 113 648 97.5 c 128,-1,38 - 699 82 699 82 750 82 c 0,39,40 - 990 82 990 82 1149 264 c 1,41,-1 - 1257 209 l 1,42,43 - 1165 118 1165 118 1039 57.5 c 128,-1,44 - 913 -3 913 -3 773 -17 c 1,45,-1 - 741 -111 l 1,46,47 - 796 -120 796 -120 829 -148.5 c 128,-1,48 - 862 -177 862 -177 862 -221 c 0,49,50 - 862 -267 862 -267 829 -302.5 c 128,-1,51 - 796 -338 796 -338 740.5 -359 c 128,-1,52 - 685 -380 685 -380 618 -390.5 c 128,-1,53 - 551 -401 551 -401 477 -401 c 1,54,-1 - 487 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ccedilla -Encoding: 231 231 172 -Width: 944 -VWidth: 0 -Flags: W -HStem: -401 49<303 483> -164 164<487 541> -20 102<419 734> 819 102<553 814> -VStem: 150 166<182 543> 549 129<-312 -182> 872 147<669 756> -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -303 -352 m 1,0,1 - 345 -352 345 -352 376.5 -350 c 128,-1,2 - 408 -348 408 -348 442.5 -341 c 128,-1,3 - 477 -334 477 -334 498.5 -322 c 128,-1,4 - 520 -310 520 -310 534.5 -289 c 128,-1,5 - 549 -268 549 -268 549 -238 c 0,6,7 - 549 -206 549 -206 520 -188.5 c 128,-1,8 - 491 -171 491 -171 422 -164 c 1,9,-1 - 480 -19 l 1,10,11 - 328 -8 328 -8 239 83.5 c 128,-1,12 - 150 175 150 175 150 324 c 0,13,14 - 150 443 150 443 199.5 555 c 128,-1,15 - 249 667 249 667 327.5 746.5 c 128,-1,16 - 406 826 406 826 504 874 c 128,-1,17 - 602 922 602 922 696 922 c 0,18,19 - 830 922 830 922 912 854.5 c 128,-1,20 - 994 787 994 787 1020 676 c 1,21,-1 - 872 608 l 1,22,23 - 869 705 869 705 826.5 762 c 128,-1,24 - 784 819 784 819 702 819 c 0,25,26 - 601 819 601 819 510.5 747.5 c 128,-1,27 - 420 676 420 676 367.5 565.5 c 128,-1,28 - 315 455 315 455 315 340 c 0,29,30 - 315 220 315 220 384 151 c 128,-1,31 - 453 82 453 82 573 82 c 0,32,33 - 720 82 720 82 827 205 c 1,34,-1 - 940 158 l 1,35,36 - 787 8 787 8 588 -16 c 1,37,-1 - 557 -111 l 1,38,39 - 612 -120 612 -120 645 -148.5 c 128,-1,40 - 678 -177 678 -177 678 -221 c 0,41,42 - 678 -267 678 -267 645 -302.5 c 128,-1,43 - 612 -338 612 -338 556.5 -359 c 128,-1,44 - 501 -380 501 -380 434 -390.5 c 128,-1,45 - 367 -401 367 -401 293 -401 c 1,46,-1 - 303 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Eth -Encoding: 208 208 173 -Width: 1216 -VWidth: 0 -Flags: W -HStem: 0 102<291 782> 700 102<203 254 453 797> 1331 102<573 1062> -VStem: 1157 172<718 1227> -AnchorPoint: "top" 831 1434 basechar 0 -AnchorPoint: "bottom" 512 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1329 1020 m 0,0,1 - 1329 962 1329 962 1319.5 885.5 c 128,-1,2 - 1310 809 1310 809 1285.5 710 c 128,-1,3 - 1261 611 1261 611 1224.5 514.5 c 128,-1,4 - 1188 418 1188 418 1128.5 324 c 128,-1,5 - 1069 230 1069 230 995 159 c 128,-1,6 - 921 88 921 88 815.5 44 c 128,-1,7 - 710 0 710 0 588 0 c 2,8,-1 - 92 0 l 1,9,-1 - 254 700 l 1,10,-1 - 178 700 l 1,11,-1 - 203 803 l 1,12,-1 - 279 803 l 1,13,-1 - 424 1434 l 1,14,-1 - 920 1434 l 2,15,16 - 1329 1434 1329 1434 1329 1020 c 0,0,1 -453 803 m 1,17,-1 - 821 803 l 1,18,-1 - 797 700 l 1,19,-1 - 428 700 l 1,20,-1 - 291 102 l 1,21,-1 - 643 102 l 2,22,23 - 728 102 728 102 804.5 153 c 128,-1,24 - 881 204 881 204 935 287 c 128,-1,25 - 989 370 989 370 1033 470.5 c 128,-1,26 - 1077 571 1077 571 1103.5 676 c 128,-1,27 - 1130 781 1130 781 1143.5 870 c 128,-1,28 - 1157 959 1157 959 1157 1024 c 0,29,30 - 1157 1185 1157 1185 1094 1258 c 128,-1,31 - 1031 1331 1031 1331 926 1331 c 2,32,-1 - 573 1331 l 1,33,-1 - 453 803 l 1,17,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: germandbls -Encoding: 223 223 174 -Width: 903 -VWidth: 0 -Flags: W -HStem: -276 102<-79 31> 799 102<465 756> 1270 102<579 874> -VStem: -154 74<-170 -125> 668 166<26 296> -LayerCount: 2 -Fore -SplineSet -332 -152 m 1,0,1 - 339 -150 339 -150 351 -146.5 c 128,-1,2 - 363 -143 363 -143 398 -129.5 c 128,-1,3 - 433 -116 433 -116 464.5 -100 c 128,-1,4 - 496 -84 496 -84 535 -58 c 128,-1,5 - 574 -32 574 -32 602 -3.5 c 128,-1,6 - 630 25 630 25 649 64.5 c 128,-1,7 - 668 104 668 104 668 147 c 0,8,9 - 668 193 668 193 648.5 244 c 128,-1,10 - 629 295 629 295 600.5 335 c 128,-1,11 - 572 375 572 375 544 408.5 c 128,-1,12 - 516 442 516 442 496 460 c 2,13,-1 - 477 479 l 1,14,-1 - 756 799 l 1,15,-1 - 440 799 l 1,16,-1 - 246 -43 l 2,17,18 - 223 -140 223 -140 145.5 -208 c 128,-1,19 - 68 -276 68 -276 -20 -276 c 0,20,21 - -80 -276 -80 -276 -117 -242.5 c 128,-1,22 - -154 -209 -154 -209 -154 -158 c 0,23,24 - -154 -145 -154 -145 -150 -125 c 1,25,-1 - -80 -125 l 1,26,-1 - -80 -133 l 2,27,28 - -80 -151 -80 -151 -65.5 -162.5 c 128,-1,29 - -51 -174 -51 -174 -27 -174 c 0,30,31 - 4 -174 4 -174 40.5 -116.5 c 128,-1,32 - 77 -59 77 -59 96 20 c 2,33,-1 - 291 864 l 2,34,35 - 317 978 317 978 336 1045 c 128,-1,36 - 355 1112 355 1112 384 1176.5 c 128,-1,37 - 413 1241 413 1241 444.5 1273 c 128,-1,38 - 476 1305 476 1305 527.5 1330.5 c 128,-1,39 - 579 1356 579 1356 642.5 1364 c 128,-1,40 - 706 1372 706 1372 799 1372 c 0,41,42 - 852 1372 852 1372 903 1357.5 c 128,-1,43 - 954 1343 954 1343 985.5 1327 c 128,-1,44 - 1017 1311 1017 1311 1069 1280 c 1,45,-1 - 942 1174 l 1,46,47 - 877 1227 877 1227 835.5 1248.5 c 128,-1,48 - 794 1270 794 1270 743 1270 c 0,49,50 - 684 1270 684 1270 645.5 1260 c 128,-1,51 - 607 1250 607 1250 582 1231.5 c 128,-1,52 - 557 1213 557 1213 539.5 1174.5 c 128,-1,53 - 522 1136 522 1136 510.5 1093 c 128,-1,54 - 499 1050 499 1050 482 977 c 0,55,56 - 471 928 471 928 465 901 c 1,57,-1 - 985 901 l 1,58,-1 - 641 504 l 1,59,60 - 834 311 834 311 834 154 c 0,61,62 - 834 109 834 109 814 66 c 128,-1,63 - 794 23 794 23 761.5 -11.5 c 128,-1,64 - 729 -46 729 -46 687 -77.5 c 128,-1,65 - 645 -109 645 -109 602 -132 c 128,-1,66 - 559 -155 559 -155 516 -174.5 c 128,-1,67 - 473 -194 473 -194 440.5 -206 c 128,-1,68 - 408 -218 408 -218 386 -226 c 2,69,-1 - 365 -233 l 1,70,-1 - 332 -152 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Lcaron -Encoding: 317 317 175 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 1067 367 1393 41<404 588> -VStem: 719 147<1361 1434> -AnchorPoint: "top" 680 1434 basechar 0 -AnchorPoint: "bottom" 512 0 basechar 0 -AnchorPoint: "cedilla" 504 0 basechar 0 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 584 1270 2 -Refer: 39 76 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Sacute -Encoding: 346 346 176 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -20 102<495 829> 1352 102<765 1066> 1501 387 -VStem: 207 166<209 350> 430 180<951 1185> 846 406 1024 176<277 545> -AnchorPoint: "cedilla" 598 0 basechar 0 -AnchorPoint: "bottom" 602 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1239 246 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Scaron -Encoding: 352 352 177 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -20 102<495 829> 1352 102<765 1066> 1384 387 -VStem: 207 166<209 350> 430 180<951 1185> 752 479 1024 176<277 545> -AnchorPoint: "cedilla" 598 0 basechar 0 -AnchorPoint: "bottom" 602 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1200 455 m 0,0,1 - 1200 363 1200 363 1157 277.5 c 128,-1,2 - 1114 192 1114 192 1036.5 126 c 128,-1,3 - 959 60 959 60 841.5 20 c 128,-1,4 - 724 -20 724 -20 586 -20 c 0,5,6 - 437 -20 437 -20 323.5 91 c 128,-1,7 - 210 202 210 202 207 350 c 1,8,-1 - 375 381 l 1,9,10 - 375 377 375 377 374 367.5 c 128,-1,11 - 373 358 373 358 373 354 c 0,12,13 - 373 245 373 245 451 163.5 c 128,-1,14 - 529 82 529 82 623 82 c 0,15,16 - 714 82 714 82 786.5 107.5 c 128,-1,17 - 859 133 859 133 902.5 171.5 c 128,-1,18 - 946 210 946 210 974.5 258.5 c 128,-1,19 - 1003 307 1003 307 1013.5 348.5 c 128,-1,20 - 1024 390 1024 390 1024 426 c 0,21,22 - 1024 486 1024 486 991 534.5 c 128,-1,23 - 958 583 958 583 906 616 c 128,-1,24 - 854 649 854 649 790.5 678.5 c 128,-1,25 - 727 708 727 708 663.5 739.5 c 128,-1,26 - 600 771 600 771 548 807 c 128,-1,27 - 496 843 496 843 463 898 c 128,-1,28 - 430 953 430 953 430 1022 c 0,29,30 - 430 1105 430 1105 470.5 1181.5 c 128,-1,31 - 511 1258 511 1258 576 1312.5 c 128,-1,32 - 641 1367 641 1367 721 1403.5 c 128,-1,33 - 801 1440 801 1440 881 1450 c 1,34,-1 - 752 1718 l 1,35,-1 - 827 1772 l 1,36,-1 - 963 1591 l 1,37,-1 - 1180 1772 l 1,38,-1 - 1231 1718 l 1,39,-1 - 978 1453 l 1,40,41 - 1103 1444 1103 1444 1192.5 1381.5 c 128,-1,42 - 1282 1319 1282 1319 1319 1225 c 1,43,-1 - 1157 1182 l 1,44,45 - 1104 1352 1104 1352 897 1352 c 0,46,47 - 796 1352 796 1352 703 1259 c 128,-1,48 - 610 1166 610 1166 610 1057 c 0,49,50 - 610 1010 610 1010 635.5 970.5 c 128,-1,51 - 661 931 661 931 702.5 903.5 c 128,-1,52 - 744 876 744 876 797 847 c 128,-1,53 - 850 818 850 818 905 793.5 c 128,-1,54 - 960 769 960 769 1013 735.5 c 128,-1,55 - 1066 702 1066 702 1107.5 665 c 128,-1,56 - 1149 628 1149 628 1174.5 574 c 128,-1,57 - 1200 520 1200 520 1200 455 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Scedilla -Encoding: 350 350 178 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -401 49<360 540> -164 164<545 598> -20 102<495 829> 1352 102<765 1066> -VStem: 207 166<209 350> 430 180<951 1185> 606 129<-312 -182> 1024 176<277 545> -AnchorPoint: "top" 926 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -360 -352 m 1,0,1 - 402 -352 402 -352 433.5 -350 c 128,-1,2 - 465 -348 465 -348 499.5 -341 c 128,-1,3 - 534 -334 534 -334 555.5 -322 c 128,-1,4 - 577 -310 577 -310 591.5 -289 c 128,-1,5 - 606 -268 606 -268 606 -238 c 0,6,7 - 606 -206 606 -206 577 -188.5 c 128,-1,8 - 548 -171 548 -171 479 -164 c 1,9,-1 - 538 -17 l 1,10,11 - 404 2 404 2 307 108.5 c 128,-1,12 - 210 215 210 215 207 350 c 1,13,-1 - 375 381 l 1,14,15 - 375 377 375 377 374 367.5 c 128,-1,16 - 373 358 373 358 373 354 c 0,17,18 - 373 245 373 245 451 163.5 c 128,-1,19 - 529 82 529 82 623 82 c 0,20,21 - 714 82 714 82 786.5 107.5 c 128,-1,22 - 859 133 859 133 902.5 171.5 c 128,-1,23 - 946 210 946 210 974.5 258.5 c 128,-1,24 - 1003 307 1003 307 1013.5 348.5 c 128,-1,25 - 1024 390 1024 390 1024 426 c 0,26,27 - 1024 486 1024 486 991 534.5 c 128,-1,28 - 958 583 958 583 906 616 c 128,-1,29 - 854 649 854 649 790.5 678.5 c 128,-1,30 - 727 708 727 708 663.5 739.5 c 128,-1,31 - 600 771 600 771 548 807 c 128,-1,32 - 496 843 496 843 463 898 c 128,-1,33 - 430 953 430 953 430 1022 c 0,34,35 - 430 1112 430 1112 478 1194.5 c 128,-1,36 - 526 1277 526 1277 600.5 1332.5 c 128,-1,37 - 675 1388 675 1388 764.5 1421 c 128,-1,38 - 854 1454 854 1454 938 1454 c 0,39,40 - 1078 1454 1078 1454 1178.5 1390.5 c 128,-1,41 - 1279 1327 1279 1327 1319 1225 c 1,42,-1 - 1157 1182 l 1,43,44 - 1104 1352 1104 1352 897 1352 c 0,45,46 - 796 1352 796 1352 703 1259 c 128,-1,47 - 610 1166 610 1166 610 1057 c 0,48,49 - 610 1010 610 1010 635.5 970.5 c 128,-1,50 - 661 931 661 931 702.5 903.5 c 128,-1,51 - 744 876 744 876 797 847 c 128,-1,52 - 850 818 850 818 905 793.5 c 128,-1,53 - 960 769 960 769 1013 735.5 c 128,-1,54 - 1066 702 1066 702 1107.5 665 c 128,-1,55 - 1149 628 1149 628 1174.5 574 c 128,-1,56 - 1200 520 1200 520 1200 455 c 0,57,58 - 1200 368 1200 368 1161.5 286.5 c 128,-1,59 - 1123 205 1123 205 1053 140 c 128,-1,60 - 983 75 983 75 877 32 c 128,-1,61 - 771 -11 771 -11 645 -19 c 1,62,-1 - 614 -111 l 1,63,64 - 669 -120 669 -120 702 -148.5 c 128,-1,65 - 735 -177 735 -177 735 -221 c 0,66,67 - 735 -267 735 -267 702 -302.5 c 128,-1,68 - 669 -338 669 -338 613.5 -359 c 128,-1,69 - 558 -380 558 -380 491 -390.5 c 128,-1,70 - 424 -401 424 -401 350 -401 c 1,71,-1 - 360 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Tcaron -Encoding: 356 356 179 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43<532 716> 1331 102<352 840 1014 1526> 1384 387 -VStem: 780 479 -AnchorPoint: "bottom" 623 0 basechar 0 -AnchorPoint: "cedilla" 618 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -918 1434 m 1,0,-1 - 780 1718 l 1,1,-1 - 856 1772 l 1,2,-1 - 991 1591 l 1,3,-1 - 1208 1772 l 1,4,-1 - 1260 1718 l 1,5,-1 - 989 1434 l 1,6,-1 - 1554 1434 l 1,7,-1 - 1526 1331 l 1,8,-1 - 1014 1331 l 1,9,-1 - 707 0 l 1,10,-1 - 532 0 l 1,11,-1 - 840 1331 l 1,12,-1 - 328 1331 l 1,13,-1 - 352 1434 l 1,14,-1 - 918 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Zacute -Encoding: 377 377 180 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 102<299 963> 1331 102<414 1026> 1501 387 -VStem: 743 406 -AnchorPoint: "bottom" 528 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1137 246 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Zcaron -Encoding: 381 381 181 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 102<299 963> 1331 102<414 1026> 1384 387 -VStem: 649 479 -AnchorPoint: "bottom" 528 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1026 1331 m 1,0,-1 - 358 1331 l 1,1,-1 - 414 1434 l 1,2,-1 - 787 1434 l 1,3,-1 - 649 1718 l 1,4,-1 - 725 1772 l 1,5,-1 - 860 1591 l 1,6,-1 - 1077 1772 l 1,7,-1 - 1128 1718 l 1,8,-1 - 858 1434 l 1,9,-1 - 1286 1434 l 1,10,-1 - 299 102 l 1,11,-1 - 987 102 l 1,12,-1 - 963 0 l 1,13,-1 - 41 0 l 1,14,-1 - 1026 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Zdotaccent -Encoding: 379 379 182 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 102<299 963> 1331 102<414 1026> 1516 150<799 913> -VStem: 764 184 -AnchorPoint: "bottom" 528 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 S 1 0 0 1 1137 246 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: lcaron -Encoding: 318 318 183 -Width: 544 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 985 367 -VStem: 135 174<85 274> 430 70<93 131> 659 147<1279 1352> -AnchorPoint: "top" 506 1434 basechar 0 -AnchorPoint: "cedilla" 287 -4 basechar 0 -AnchorPoint: "bottom" 172 0 basechar 0 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 524 1188 2 -Refer: 15 108 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: sacute -Encoding: 347 347 184 -Width: 860 -VWidth: 0 -Flags: W -HStem: -20 102<279 603> 819 102<467 723> 1071 387 -VStem: 252 166<581 768> 541 406 688 168<168 375> -AnchorPoint: "bottom" 422 0 basechar 0 -AnchorPoint: "cedilla" 422 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 934 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scaron -Encoding: 353 353 185 -Width: 860 -VWidth: 0 -Flags: W -HStem: -20 102<279 603> 819 102<467 723> 954 387 -VStem: 252 166<581 768> 446 479 688 168<168 375> -AnchorPoint: "bottom" 422 0 basechar 0 -AnchorPoint: "cedilla" 422 0 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 934 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scedilla -Encoding: 351 351 186 -Width: 860 -VWidth: 0 -Flags: W -HStem: -401 49<184 364> -164 164<369 422> -20 102<279 603> 819 102<467 723> -VStem: 252 166<581 768> 430 129<-312 -182> 688 168<168 375> -AnchorPoint: "top" 621 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -184 -352 m 1,0,1 - 226 -352 226 -352 257.5 -350 c 128,-1,2 - 289 -348 289 -348 323.5 -341 c 128,-1,3 - 358 -334 358 -334 379.5 -322 c 128,-1,4 - 401 -310 401 -310 415.5 -289 c 128,-1,5 - 430 -268 430 -268 430 -238 c 0,6,7 - 430 -206 430 -206 401 -188.5 c 128,-1,8 - 372 -171 372 -171 303 -164 c 1,9,-1 - 361 -19 l 1,10,11 - 301 -15 301 -15 252 4.5 c 128,-1,12 - 203 24 203 24 175 45 c 128,-1,13 - 147 66 147 66 88 117 c 1,14,-1 - 195 193 l 1,15,16 - 201 188 201 188 219 173 c 128,-1,17 - 237 158 237 158 242 153.5 c 128,-1,18 - 247 149 247 149 262 137.5 c 128,-1,19 - 277 126 277 126 283.5 122.5 c 128,-1,20 - 290 119 290 119 304.5 110.5 c 128,-1,21 - 319 102 319 102 328.5 100 c 128,-1,22 - 338 98 338 98 353.5 93 c 128,-1,23 - 369 88 369 88 383.5 86.5 c 128,-1,24 - 398 85 398 85 417 83.5 c 128,-1,25 - 436 82 436 82 457 82 c 0,26,27 - 518 82 518 82 564 103 c 128,-1,28 - 610 124 610 124 632.5 151 c 128,-1,29 - 655 178 655 178 668.5 212 c 128,-1,30 - 682 246 682 246 685 264.5 c 128,-1,31 - 688 283 688 283 688 295 c 0,32,33 - 688 350 688 350 640 379.5 c 128,-1,34 - 592 409 592 409 506 424 c 1,35,36 - 381 449 381 449 316.5 504 c 128,-1,37 - 252 559 252 559 252 639 c 0,38,39 - 252 687 252 687 276 737 c 128,-1,40 - 300 787 300 787 341 828 c 128,-1,41 - 382 869 382 869 445 895.5 c 128,-1,42 - 508 922 508 922 580 922 c 0,43,44 - 683 922 683 922 759.5 891.5 c 128,-1,45 - 836 861 836 861 913 795 c 1,46,-1 - 776 723 l 1,47,48 - 769 730 769 730 747 752 c 128,-1,49 - 725 774 725 774 720 778 c 128,-1,50 - 715 782 715 782 697.5 794.5 c 128,-1,51 - 680 807 680 807 667.5 809.5 c 128,-1,52 - 655 812 655 812 634 815.5 c 128,-1,53 - 613 819 613 819 586 819 c 0,54,55 - 539 819 539 819 503.5 801 c 128,-1,56 - 468 783 468 783 451 755.5 c 128,-1,57 - 434 728 434 728 426 703.5 c 128,-1,58 - 418 679 418 679 418 657 c 0,59,60 - 418 573 418 573 553 547 c 0,61,62 - 856 488 856 488 856 313 c 0,63,64 - 856 274 856 274 843.5 233 c 128,-1,65 - 831 192 831 192 801.5 149.5 c 128,-1,66 - 772 107 772 107 729 73 c 128,-1,67 - 686 39 686 39 618.5 14 c 128,-1,68 - 551 -11 551 -11 469 -18 c 1,69,-1 - 438 -111 l 1,70,71 - 493 -120 493 -120 526 -148.5 c 128,-1,72 - 559 -177 559 -177 559 -221 c 0,73,74 - 559 -267 559 -267 526 -302.5 c 128,-1,75 - 493 -338 493 -338 437.5 -359 c 128,-1,76 - 382 -380 382 -380 315 -390.5 c 128,-1,77 - 248 -401 248 -401 174 -401 c 1,78,-1 - 184 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tcaron -Encoding: 357 357 187 -Width: 577 -VWidth: 0 -Flags: W -HStem: -20 102<346 523> 799 102<291 371 559 696> 985 367 -VStem: 229 174<85 272> 524 70<93 131> 748 147<1279 1352> -AnchorPoint: "top" 582 1352 basechar 0 -AnchorPoint: "cedilla" 393 4 basechar 0 -AnchorPoint: "bottom" 262 0 basechar 0 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 612 1188 2 -Refer: 10 116 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: zacute -Encoding: 378 378 188 -Width: 845 -VWidth: 0 -Flags: W -HStem: -233 82<181 334> 799 102<240 668> 1071 387 -VStem: 496 406 573 164<18 294> -AnchorPoint: "bottom" 295 -207 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 889 -184 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: zcaron -Encoding: 382 382 189 -Width: 845 -VWidth: 0 -Flags: W -HStem: -233 82<181 334> 799 102<240 668> 1044 387 -VStem: 455 479 573 164<18 294> -AnchorPoint: "bottom" 295 -207 basechar 0 -LayerCount: 2 -Fore -Refer: 372 711 N 1 0 0 1 53 -94 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: zdotaccent -Encoding: 380 380 190 -Width: 845 -VWidth: 0 -Flags: W -HStem: -233 82<181 334> 799 102<240 668> 1044 150<577 692> -VStem: 542 184 573 164<18 294> -AnchorPoint: "bottom" 295 -207 basechar 0 -LayerCount: 2 -Fore -Refer: 374 729 S 1 0 0 1 188 -225 2 -Refer: 26 122 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Racute -Encoding: 340 340 191 -Width: 1101 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 819 991> 655 102<440 679> 1331 102<573 969> 1501 387 -VStem: 731 406 829 170<0 381> 1032 174<954 1271> -AnchorPoint: "cedilla" 508 0 basechar 0 -AnchorPoint: "bottom" 512 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1124 246 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Abreve -Encoding: 258 258 192 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1516 117<909 1143> -VStem: 805 84<1662 1706> -AnchorPoint: "bottom" 639 0 basechar 0 -AnchorPoint: "ogonek" 1092 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1092 0 m 1 -EndSplineSet -Refer: 97 774 S 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Lacute -Encoding: 313 313 193 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 1393 41<404 588> 1501 387 -VStem: 600 406 -AnchorPoint: "bottom" 512 0 basechar 0 -AnchorPoint: "cedilla" 504 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 993 246 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Cacute -Encoding: 262 262 194 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 1352 102<814 1199> 1501 387 -VStem: 201 176<307 773> 928 406 -AnchorPoint: "cedilla" 717 0 basechar 0 -AnchorPoint: "bottom" 717 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1321 246 2 -Refer: 30 67 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ccaron -Encoding: 268 268 195 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 1352 102<814 1199> 1384 387 -VStem: 201 176<307 773> 834 479 -AnchorPoint: "cedilla" 717 0 basechar 0 -AnchorPoint: "bottom" 717 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1012 1352 m 0,0,1 - 892 1352 892 1352 785.5 1294 c 128,-1,2 - 679 1236 679 1236 606.5 1145 c 128,-1,3 - 534 1054 534 1054 480.5 942.5 c 128,-1,4 - 427 831 427 831 402 722.5 c 128,-1,5 - 377 614 377 614 377 522 c 0,6,7 - 377 433 377 433 400 358 c 128,-1,8 - 423 283 423 283 461 233 c 128,-1,9 - 499 183 499 183 548 148 c 128,-1,10 - 597 113 597 113 648 97.5 c 128,-1,11 - 699 82 699 82 750 82 c 0,12,13 - 990 82 990 82 1149 264 c 1,14,-1 - 1257 209 l 1,15,16 - 1153 106 1153 106 1005 43 c 128,-1,17 - 857 -20 857 -20 696 -20 c 0,18,19 - 626 -20 626 -20 557 -0.5 c 128,-1,20 - 488 19 488 19 423.5 61.5 c 128,-1,21 - 359 104 359 104 310 164.5 c 128,-1,22 - 261 225 261 225 231 314.5 c 128,-1,23 - 201 404 201 404 201 510 c 0,24,25 - 201 629 201 629 236.5 757 c 128,-1,26 - 272 885 272 885 340 1004.5 c 128,-1,27 - 408 1124 408 1124 499 1221.5 c 128,-1,28 - 590 1319 590 1319 711 1381.5 c 128,-1,29 - 832 1444 832 1444 962 1453 c 1,30,-1 - 834 1718 l 1,31,-1 - 909 1772 l 1,32,-1 - 1044 1591 l 1,33,-1 - 1262 1772 l 1,34,-1 - 1313 1718 l 1,35,-1 - 1060 1453 l 1,36,37 - 1377 1439 1377 1439 1489 1245 c 1,38,-1 - 1321 1178 l 1,39,40 - 1239 1352 1239 1352 1012 1352 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ecaron -Encoding: 282 282 196 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1384 387 -VStem: 680 479 -AnchorPoint: "bottom" 537 0 basechar 0 -AnchorPoint: "ogonek" 754 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -942 0 m 1,0,-1 - 82 0 l 1,1,-1 - 414 1434 l 1,2,-1 - 818 1434 l 1,3,-1 - 680 1718 l 1,4,-1 - 756 1772 l 1,5,-1 - 891 1591 l 1,6,-1 - 1108 1772 l 1,7,-1 - 1159 1718 l 1,8,-1 - 888 1434 l 1,9,-1 - 1241 1434 l 1,10,-1 - 1217 1331 l 1,11,-1 - 563 1331 l 1,12,-1 - 465 901 l 1,13,-1 - 934 901 l 1,14,-1 - 909 799 l 1,15,-1 - 440 799 l 1,16,-1 - 281 102 l 1,17,-1 - 967 102 l 1,18,-1 - 942 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Dcaron -Encoding: 270 270 197 -Width: 1216 -VWidth: 0 -Flags: W -HStem: 0 102<291 782> 1331 102<573 1062> 1384 387 -VStem: 657 479 1157 172<718 1227> -AnchorPoint: "bottom" 512 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -573 1331 m 1,0,-1 - 291 102 l 1,1,-1 - 643 102 l 2,2,3 - 728 102 728 102 804.5 153 c 128,-1,4 - 881 204 881 204 935 287 c 128,-1,5 - 989 370 989 370 1033 470.5 c 128,-1,6 - 1077 571 1077 571 1103.5 676 c 128,-1,7 - 1130 781 1130 781 1143.5 870 c 128,-1,8 - 1157 959 1157 959 1157 1024 c 0,9,10 - 1157 1185 1157 1185 1094 1258 c 128,-1,11 - 1031 1331 1031 1331 926 1331 c 2,12,-1 - 573 1331 l 1,0,-1 -1329 1020 m 0,13,14 - 1329 962 1329 962 1319.5 885.5 c 128,-1,15 - 1310 809 1310 809 1285.5 710 c 128,-1,16 - 1261 611 1261 611 1224.5 514.5 c 128,-1,17 - 1188 418 1188 418 1128.5 324 c 128,-1,18 - 1069 230 1069 230 995 159 c 128,-1,19 - 921 88 921 88 815.5 44 c 128,-1,20 - 710 0 710 0 588 0 c 2,21,-1 - 92 0 l 1,22,-1 - 424 1434 l 1,23,-1 - 795 1434 l 1,24,-1 - 657 1718 l 1,25,-1 - 733 1772 l 1,26,-1 - 868 1591 l 1,27,-1 - 1085 1772 l 1,28,-1 - 1137 1718 l 1,29,-1 - 866 1434 l 1,30,-1 - 920 1434 l 2,31,32 - 1329 1434 1329 1434 1329 1020 c 0,13,14 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Dcroat -Encoding: 272 272 198 -Width: 1216 -VWidth: 0 -Flags: W -HStem: 0 102<291 782> 700 102<203 254 453 797> 1331 102<573 1062> -VStem: 1157 172<718 1227> -AnchorPoint: "top" 831 1434 basechar 0 -AnchorPoint: "bottom" 512 0 basechar 0 -LayerCount: 2 -Fore -Refer: 173 208 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Nacute -Encoding: 323 323 199 -Width: 1325 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 961 1165> 1393 41<414 616 1303 1487> 1501 387 -VStem: 887 406 -AnchorPoint: "cedilla" 614 0 basechar 0 -AnchorPoint: "bottom" 612 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1280 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ncaron -Encoding: 327 327 200 -Width: 1325 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 961 1165> 1384 387 1393 41<414 616 1303 1487> -VStem: 793 479 -AnchorPoint: "cedilla" 614 0 basechar 0 -AnchorPoint: "bottom" 612 0 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1280 246 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ohungarumlaut -Encoding: 336 336 201 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1501 387 -VStem: 199 176<286 770> 754 406 1081 406 1315 176<653 1162> -AnchorPoint: "bottom" 680 0 basechar 0 -AnchorPoint: "ogonek" 684 0 basechar 0 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Rcaron -Encoding: 344 344 202 -Width: 1101 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 819 991> 655 102<440 679> 1331 102<573 969> 1384 387 -VStem: 637 479 829 170<0 381> 1032 174<954 1271> -AnchorPoint: "cedilla" 508 0 basechar 0 -AnchorPoint: "bottom" 512 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -573 1331 m 1,0,-1 - 440 758 l 1,1,-1 - 717 758 l 2,2,3 - 807 758 807 758 881 816 c 128,-1,4 - 955 874 955 874 993.5 958 c 128,-1,5 - 1032 1042 1032 1042 1032 1128 c 0,6,7 - 1032 1215 1032 1215 988.5 1273 c 128,-1,8 - 945 1331 945 1331 850 1331 c 2,9,-1 - 573 1331 l 1,0,-1 -845 1434 m 1,10,11 - 943 1434 943 1434 1016 1407 c 128,-1,12 - 1089 1380 1089 1380 1129 1335 c 128,-1,13 - 1169 1290 1169 1290 1187.5 1238.5 c 128,-1,14 - 1206 1187 1206 1187 1206 1128 c 0,15,16 - 1206 1064 1206 1064 1181.5 996.5 c 128,-1,17 - 1157 929 1157 929 1112 867.5 c 128,-1,18 - 1067 806 1067 806 995 755.5 c 128,-1,19 - 923 705 923 705 836 680 c 1,20,21 - 900 597 900 597 949.5 429.5 c 128,-1,22 - 999 262 999 262 999 117 c 0,23,24 - 999 53 999 53 987 0 c 1,25,-1 - 819 0 l 1,26,27 - 829 41 829 41 829 106 c 0,28,29 - 829 253 829 253 773 418.5 c 128,-1,30 - 717 584 717 584 641 655 c 1,31,-1 - 418 655 l 1,32,-1 - 266 0 l 1,33,-1 - 92 0 l 1,34,-1 - 424 1434 l 1,35,-1 - 775 1434 l 1,36,-1 - 637 1718 l 1,37,-1 - 713 1772 l 1,38,-1 - 848 1591 l 1,39,-1 - 1065 1772 l 1,40,-1 - 1116 1718 l 1,41,-1 - 845 1434 l 1,10,11 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Uring -Encoding: 366 366 203 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1413 61<907 1044> 1663 61<936 1071> -VStem: 176 174<211 687> 393 174<1372 1434> 829 63<1488 1621> 1085 63<1515 1650> -AnchorPoint: "bottom" 627 0 basechar 0 -AnchorPoint: "ogonek" 623 0 basechar 0 -LayerCount: 2 -Fore -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 100 778 N 1 0 0 1 1272 246 2 -Validated: 1 -EndChar - -StartChar: Uhungarumlaut -Encoding: 368 368 204 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1501 387 -VStem: 176 174<211 687> 393 174<1372 1434> 715 406 1042 406 -AnchorPoint: "ogonek" 623 0 basechar 0 -AnchorPoint: "bottom" 627 0 basechar 0 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Tcommaaccent -Encoding: 354 354 205 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -401 49<381 560> -164 164<565 619> 0 43<532 716> 1331 102<352 840 1014 1526> -VStem: 627 129<-312 -182> -AnchorPoint: "top" 954 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -381 -352 m 1,0,1 - 423 -352 423 -352 454.5 -350 c 128,-1,2 - 486 -348 486 -348 520.5 -341 c 128,-1,3 - 555 -334 555 -334 576.5 -322 c 128,-1,4 - 598 -310 598 -310 612.5 -289 c 128,-1,5 - 627 -268 627 -268 627 -238 c 0,6,7 - 627 -206 627 -206 598 -188.5 c 128,-1,8 - 569 -171 569 -171 500 -164 c 1,9,-1 - 565 0 l 1,10,-1 - 532 0 l 1,11,-1 - 840 1331 l 1,12,-1 - 328 1331 l 1,13,-1 - 352 1434 l 1,14,-1 - 1554 1434 l 1,15,-1 - 1526 1331 l 1,16,-1 - 1014 1331 l 1,17,-1 - 707 0 l 1,18,-1 - 672 0 l 1,19,-1 - 635 -111 l 1,20,21 - 690 -120 690 -120 723 -148.5 c 128,-1,22 - 756 -177 756 -177 756 -221 c 0,23,24 - 756 -267 756 -267 723 -302.5 c 128,-1,25 - 690 -338 690 -338 634.5 -359 c 128,-1,26 - 579 -380 579 -380 512 -390.5 c 128,-1,27 - 445 -401 445 -401 371 -401 c 1,28,-1 - 381 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: racute -Encoding: 341 341 206 -Width: 770 -VWidth: 0 -Flags: W -HStem: 0 43<184 358> 819 102<221 380 570 863> 1071 387 -VStem: 150 70<770 808> 340 174<629 766> 584 406 -AnchorPoint: "cedilla" 221 0 basechar 0 -AnchorPoint: "bottom" 229 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 977 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: abreve -Encoding: 259 259 207 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1085 117<665 899> -VStem: 154 158<136 521> 561 84<1231 1276> 711 172<113 272> 1004 72<93 131> -AnchorPoint: "top" 815 1352 basechar 0 -AnchorPoint: "ogonek" 903 0 basechar 0 -AnchorPoint: "bottom" 446 0 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 S 1 0 0 1 1044 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: lacute -Encoding: 314 314 208 -Width: 495 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 1501 387 -VStem: 135 174<85 274> 426 406 430 70<93 131> -AnchorPoint: "cedilla" 287 -4 basechar 0 -AnchorPoint: "bottom" 172 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 819 246 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: cacute -Encoding: 263 263 209 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 819 102<553 814> 1071 387 -VStem: 150 166<182 543> 655 406 872 147<669 756> -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1049 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ccaron -Encoding: 269 269 210 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 819 102<553 814> 954 387 -VStem: 150 166<182 543> 561 479 872 147<669 756> -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 S 1 0 0 1 1049 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ecaron -Encoding: 283 283 211 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 954 387 -VStem: 150 166<182 446> 559 479 872 160<556 758> -AnchorPoint: "ogonek" 559 0 basechar 0 -AnchorPoint: "bottom" 510 0 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: dcaron -Encoding: 271 271 212 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -20 102<404 666 925 1088> 819 102<556 809> 985 367 -VStem: 150 168<174 538> 866 102<182 586> 1090 70<93 131> 1300 147<1279 1352> -AnchorPoint: "top" 735 1004 basechar 0 -AnchorPoint: "bottom" 485 0 basechar 0 -LayerCount: 2 -Fore -Refer: 55 44 N 1 0 0 1 1165 1188 2 -Refer: 0 100 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: nacute -Encoding: 324 324 213 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<184 358 821 994> 819 102<221 380 602 914> 1071 387 -VStem: 150 70<770 808> 737 406 954 164<389 778> -AnchorPoint: "cedilla" 578 0 basechar 0 -AnchorPoint: "bottom" 578 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1130 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ncaron -Encoding: 328 328 214 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<184 358 821 994> 819 102<221 380 602 914> 954 387 -VStem: 150 70<770 808> 627 479 954 164<389 778> -AnchorPoint: "cedilla" 578 0 basechar 0 -AnchorPoint: "bottom" 578 0 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1114 -184 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ohungarumlaut -Encoding: 337 337 215 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1071 387 -VStem: 147 164<157 530> 494 406 821 406 897 168<366 739> -AnchorPoint: "ogonek" 508 0 basechar 0 -AnchorPoint: "bottom" 487 0 basechar 0 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: rcaron -Encoding: 345 345 216 -Width: 770 -VWidth: 0 -Flags: W -HStem: 0 43<184 358> 819 102<221 380 570 863> 954 387 -VStem: 150 70<770 808> 340 174<629 766> 492 479 -AnchorPoint: "cedilla" 262 0 basechar 0 -AnchorPoint: "bottom" 270 0 basechar 0 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 979 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uring -Encoding: 367 367 217 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 983 61<667 804> 1233 61<696 832> -VStem: 154 172<137 501> 590 63<1058 1191> 762 174<142 374> 846 63<1085 1220> 1057 70<93 131> -AnchorPoint: "bottom" 471 0 basechar 0 -AnchorPoint: "ogonek" 874 0 basechar 0 -LayerCount: 2 -Fore -Refer: 19 117 N 1 0 0 1 0 0 3 -Refer: 100 778 N 1 0 0 1 1032 -184 2 -Validated: 1 -EndChar - -StartChar: uhungarumlaut -Encoding: 369 369 218 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1071 387 -VStem: 154 172<137 501> 475 406 762 174<142 374> 803 406 1057 70<93 131> -AnchorPoint: "ogonek" 932 0 basechar 0 -AnchorPoint: "bottom" 471 0 basechar 0 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 1032 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: tcommaaccent -Encoding: 355 355 219 -Width: 577 -VWidth: 0 -Flags: W -HStem: -401 49<139 319> -164 164<324 377> -20 102<346 523> 799 102<291 371 559 696> -VStem: 229 174<85 272> 385 129<-312 -182> 524 70<93 131> -AnchorPoint: "top" 582 1352 basechar 0 -LayerCount: 2 -Fore -SplineSet -139 -352 m 1,0,1 - 181 -352 181 -352 212.5 -350 c 128,-1,2 - 244 -348 244 -348 278.5 -341 c 128,-1,3 - 313 -334 313 -334 334.5 -322 c 128,-1,4 - 356 -310 356 -310 370.5 -289 c 128,-1,5 - 385 -268 385 -268 385 -238 c 0,6,7 - 385 -206 385 -206 356 -188.5 c 128,-1,8 - 327 -171 327 -171 258 -164 c 1,9,-1 - 322 -5 l 1,10,11 - 279 15 279 15 254 58 c 128,-1,12 - 229 101 229 101 229 156 c 0,13,14 - 229 178 229 178 236 213 c 1,15,-1 - 371 799 l 1,16,-1 - 236 799 l 1,17,-1 - 291 901 l 1,18,-1 - 395 901 l 1,19,-1 - 463 1198 l 1,20,-1 - 635 1229 l 1,21,-1 - 559 901 l 1,22,-1 - 721 901 l 1,23,-1 - 696 799 l 1,24,-1 - 535 799 l 1,25,-1 - 414 276 l 2,26,27 - 403 228 403 228 403 182 c 0,28,29 - 403 82 403 82 446 82 c 0,30,31 - 474 82 474 82 496.5 96.5 c 128,-1,32 - 519 111 519 111 524 131 c 1,33,-1 - 594 131 l 1,34,35 - 581 75 581 75 533 33 c 128,-1,36 - 485 -9 485 -9 424 -18 c 1,37,-1 - 393 -111 l 1,38,39 - 448 -120 448 -120 481 -148.5 c 128,-1,40 - 514 -177 514 -177 514 -221 c 0,41,42 - 514 -267 514 -267 481 -302.5 c 128,-1,43 - 448 -338 448 -338 392.5 -359 c 128,-1,44 - 337 -380 337 -380 270 -390.5 c 128,-1,45 - 203 -401 203 -401 129 -401 c 1,46,-1 - 139 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Aogonek -Encoding: 260 260 220 -Width: 1275 -VWidth: 0 -Flags: W -HStem: -319 37<979 1071> 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> -VStem: 817 119<-266 -112> -AnchorPoint: "bottom" 588 -287 basechar 0 -AnchorPoint: "top" 975 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -928 1231 m 1,0,-1 - 500 512 l 1,1,-1 - 1024 512 l 1,2,-1 - 928 1231 l 1,0,-1 -31 0 m 1,3,-1 - 885 1434 l 1,4,-1 - 1065 1434 l 1,5,-1 - 1255 0 l 1,6,-1 - 1092 0 l 1,7,8 - 1069 -10 1069 -10 1047.5 -23.5 c 128,-1,9 - 1026 -37 1026 -37 998 -60.5 c 128,-1,10 - 970 -84 970 -84 953 -119 c 128,-1,11 - 936 -154 936 -154 936 -195 c 0,12,13 - 936 -239 936 -239 968.5 -261 c 128,-1,14 - 1001 -283 1001 -283 1079 -283 c 1,15,-1 - 1071 -319 l 1,16,17 - 932 -319 932 -319 874.5 -286.5 c 128,-1,18 - 817 -254 817 -254 817 -207 c 0,19,20 - 817 -142 817 -142 899.5 -75.5 c 128,-1,21 - 982 -9 982 -9 1089 22 c 1,22,-1 - 1036 410 l 1,23,-1 - 438 410 l 1,24,-1 - 195 0 l 1,25,-1 - 31 0 l 1,3,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Eogonek -Encoding: 280 280 221 -Width: 962 -VWidth: 0 -Flags: W -HStem: -319 37<642 733> 0 102<281 942> 799 102<465 909> 1331 102<563 1217> -VStem: 479 119<-266 -112> -AnchorPoint: "bottom" 369 -287 basechar 0 -AnchorPoint: "top" 854 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -754 0 m 1,0,1 - 731 -10 731 -10 709.5 -23.5 c 128,-1,2 - 688 -37 688 -37 660 -60.5 c 128,-1,3 - 632 -84 632 -84 615 -119 c 128,-1,4 - 598 -154 598 -154 598 -195 c 0,5,6 - 598 -239 598 -239 630.5 -261 c 128,-1,7 - 663 -283 663 -283 741 -283 c 1,8,-1 - 733 -319 l 1,9,10 - 594 -319 594 -319 536.5 -286.5 c 128,-1,11 - 479 -254 479 -254 479 -207 c 0,12,13 - 479 -152 479 -152 539.5 -94.5 c 128,-1,14 - 600 -37 600 -37 688 0 c 1,15,-1 - 82 0 l 1,16,-1 - 414 1434 l 1,17,-1 - 1241 1434 l 1,18,-1 - 1217 1331 l 1,19,-1 - 563 1331 l 1,20,-1 - 465 901 l 1,21,-1 - 934 901 l 1,22,-1 - 909 799 l 1,23,-1 - 440 799 l 1,24,-1 - 281 102 l 1,25,-1 - 967 102 l 1,26,-1 - 942 0 l 1,27,-1 - 754 0 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: aogonek -Encoding: 261 261 222 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -319 37<791 883> -20 102<366 693 846 1001> 819 102<532 850> -VStem: 154 158<136 521> 629 119<-266 -112> 711 172<113 272> 1004 72<93 131> -AnchorPoint: "bottom" 369 -287 basechar 0 -AnchorPoint: "top" 731 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -852 797 m 1,0,1 - 791 819 791 819 688 819 c 0,2,3 - 616 819 616 819 556 789 c 128,-1,4 - 496 759 496 759 456.5 709 c 128,-1,5 - 417 659 417 659 387 600.5 c 128,-1,6 - 357 542 357 542 341.5 479.5 c 128,-1,7 - 326 417 326 417 318.5 368.5 c 128,-1,8 - 311 320 311 320 311 283 c 0,9,10 - 311 175 311 175 362 128.5 c 128,-1,11 - 413 82 413 82 494 82 c 0,12,13 - 604 82 604 82 711 131 c 1,14,-1 - 711 156 l 2,15,16 - 711 183 711 183 717 213 c 2,17,-1 - 852 797 l 1,0,1 -154 309 m 0,18,19 - 154 420 154 420 203 533.5 c 128,-1,20 - 252 647 252 647 327 731.5 c 128,-1,21 - 402 816 402 816 497.5 869 c 128,-1,22 - 593 922 593 922 682 922 c 0,23,24 - 761 922 761 922 830 908 c 128,-1,25 - 899 894 899 894 936 879 c 128,-1,26 - 973 864 973 864 1024 838 c 1,27,-1 - 895 276 l 2,28,29 - 883 223 883 223 883 178 c 0,30,31 - 883 135 883 135 894.5 108.5 c 128,-1,32 - 906 82 906 82 926 82 c 0,33,34 - 954 82 954 82 976.5 96.5 c 128,-1,35 - 999 111 999 111 1004 131 c 1,36,-1 - 1075 131 l 1,37,38 - 1062 68 1062 68 1002.5 24 c 128,-1,39 - 943 -20 943 -20 874 -20 c 2,40,-1 - 864 -20 l 1,41,42 - 748 -88 748 -88 748 -195 c 0,43,44 - 748 -239 748 -239 780.5 -261 c 128,-1,45 - 813 -283 813 -283 891 -283 c 1,46,-1 - 883 -319 l 1,47,48 - 744 -319 744 -319 686.5 -286.5 c 128,-1,49 - 629 -254 629 -254 629 -207 c 0,50,51 - 629 -156 629 -156 682 -102.5 c 128,-1,52 - 735 -49 735 -49 815 -10 c 1,53,54 - 770 7 770 7 743 43 c 1,55,56 - 592 -20 592 -20 440 -20 c 0,57,58 - 308 -20 308 -20 231 72.5 c 128,-1,59 - 154 165 154 165 154 309 c 0,18,19 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eogonek -Encoding: 281 281 223 -Width: 964 -VWidth: 0 -Flags: W -HStem: -319 37<447 539> -20 102<419 734> 451 102<362 869> 819 102<551 814> -VStem: 150 166<182 446> 285 119<-266 -112> 872 160<556 758> -AnchorPoint: "bottom" 481 -287 basechar 0 -AnchorPoint: "top" 733 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -362 553 m 1,0,-1 - 786 553 l 2,1,2 - 831 553 831 553 851.5 562.5 c 128,-1,3 - 872 572 872 572 872 596 c 0,4,5 - 872 699 872 699 829.5 759 c 128,-1,6 - 787 819 787 819 702 819 c 0,7,8 - 598 819 598 819 506.5 744.5 c 128,-1,9 - 415 670 415 670 362 553 c 1,0,-1 -1032 571 m 0,10,11 - 1032 451 1032 451 844 451 c 2,12,-1 - 328 451 l 1,13,14 - 315 391 315 391 315 340 c 0,15,16 - 315 220 315 220 384 151 c 128,-1,17 - 453 82 453 82 573 82 c 0,18,19 - 720 82 720 82 827 205 c 1,20,-1 - 940 158 l 1,21,22 - 856 76 856 76 748.5 28 c 128,-1,23 - 641 -20 641 -20 520 -20 c 2,24,-1 - 519 -20 l 1,25,26 - 403 -88 403 -88 403 -195 c 0,27,28 - 403 -239 403 -239 436 -261 c 128,-1,29 - 469 -283 469 -283 547 -283 c 1,30,-1 - 539 -319 l 1,31,32 - 400 -319 400 -319 342.5 -286.5 c 128,-1,33 - 285 -254 285 -254 285 -207 c 0,34,35 - 285 -158 285 -158 333.5 -107 c 128,-1,36 - 382 -56 382 -56 457 -17 c 1,37,38 - 315 0 315 0 232.5 90.5 c 128,-1,39 - 150 181 150 181 150 324 c 0,40,41 - 150 443 150 443 199.5 555 c 128,-1,42 - 249 667 249 667 327.5 746.5 c 128,-1,43 - 406 826 406 826 504 874 c 128,-1,44 - 602 922 602 922 696 922 c 0,45,46 - 780 922 780 922 846 893.5 c 128,-1,47 - 912 865 912 865 952 815.5 c 128,-1,48 - 992 766 992 766 1012 704 c 128,-1,49 - 1032 642 1032 642 1032 571 c 0,10,11 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Lslash -Encoding: 321 321 224 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 1393 41G<404 588> -AnchorPoint: "top" 680 1434 basechar 0 -AnchorPoint: "bottom" 512 0 basechar 0 -AnchorPoint: "cedilla" 504 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -281 102 m 1,0,-1 - 967 102 l 1,1,-1 - 942 0 l 1,2,-1 - 82 0 l 1,3,-1 - 252 735 l 1,4,-1 - 125 670 l 1,5,-1 - 80 762 l 1,6,-1 - 283 864 l 1,7,-1 - 414 1434 l 1,8,-1 - 588 1434 l 1,9,-1 - 479 967 l 1,10,-1 - 606 1030 l 1,11,-1 - 651 938 l 1,12,-1 - 451 836 l 1,13,-1 - 281 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: lslash -Encoding: 322 322 225 -Width: 495 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> -VStem: 135 174<85 272> 430 70<93 131> -AnchorPoint: "top" 506 1434 basechar 0 -AnchorPoint: "cedilla" 287 -4 basechar 0 -AnchorPoint: "bottom" 172 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -319 276 m 2,0,1 - 309 232 309 232 309 182 c 0,2,3 - 309 82 309 82 352 82 c 0,4,5 - 380 82 380 82 402.5 96.5 c 128,-1,6 - 425 111 425 111 430 131 c 1,7,-1 - 500 131 l 1,8,9 - 487 68 487 68 428.5 24 c 128,-1,10 - 370 -20 370 -20 301 -20 c 0,11,12 - 228 -20 228 -20 181.5 29.5 c 128,-1,13 - 135 79 135 79 135 156 c 0,14,15 - 135 183 135 183 141 213 c 2,16,-1 - 262 739 l 1,17,-1 - 125 670 l 1,18,-1 - 80 762 l 1,19,-1 - 293 870 l 1,20,-1 - 403 1352 l 1,21,-1 - 567 1352 l 1,22,-1 - 477 965 l 1,23,-1 - 606 1030 l 1,24,-1 - 651 938 l 1,25,-1 - 449 834 l 1,26,-1 - 319 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: dcroat -Encoding: 273 273 226 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -20 102<404 666 925 1088> 819 102<556 809> 1085 102<805 1001 1190 1266> -VStem: 150 168<174 538> 866 102<182 586> 1090 70<93 131> -AnchorPoint: "top" 735 1004 basechar 0 -AnchorPoint: "bottom" 485 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -524 82 m 128,-1,1 - 623 82 623 82 702.5 153 c 128,-1,2 - 782 224 782 224 824 338.5 c 128,-1,3 - 866 453 866 453 866 586 c 0,4,5 - 866 691 866 691 825.5 755 c 128,-1,6 - 785 819 785 819 694 819 c 0,7,8 - 599 819 599 819 510.5 747 c 128,-1,9 - 422 675 422 675 369.5 566 c 128,-1,10 - 317 457 317 457 317 348 c 0,11,12 - 317 236 317 236 371 159 c 128,-1,0 - 425 82 425 82 524 82 c 128,-1,1 -150 317 m 0,13,14 - 150 420 150 420 189.5 527 c 128,-1,15 - 229 634 229 634 297.5 722 c 128,-1,16 - 366 810 366 810 469 866 c 128,-1,17 - 572 922 572 922 688 922 c 0,18,19 - 846 922 846 922 942 823 c 1,20,-1 - 1001 1085 l 1,21,-1 - 780 1085 l 1,22,-1 - 805 1188 l 1,23,-1 - 1026 1188 l 1,24,-1 - 1063 1352 l 1,25,-1 - 1227 1352 l 1,26,-1 - 1190 1188 l 1,27,-1 - 1290 1188 l 1,28,-1 - 1266 1085 l 1,29,-1 - 1165 1085 l 1,30,-1 - 979 276 l 2,31,32 - 969 232 969 232 969 182 c 0,33,34 - 969 82 969 82 1012 82 c 0,35,36 - 1040 82 1040 82 1062.5 96.5 c 128,-1,37 - 1085 111 1085 111 1090 131 c 1,38,-1 - 1159 131 l 1,39,40 - 1146 68 1146 68 1088 24 c 128,-1,41 - 1030 -20 1030 -20 961 -20 c 0,42,43 - 908 -20 908 -20 868 6.5 c 128,-1,44 - 828 33 828 33 809 78 c 1,45,46 - 677 -20 677 -20 471 -20 c 0,47,48 - 317 -20 317 -20 233.5 73 c 128,-1,49 - 150 166 150 166 150 317 c 0,13,14 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Hcircumflex -Encoding: 292 292 227 -Width: 1259 -VWidth: 0 -Flags: W -HStem: 0 43<82 265 915 1099> 717 102<444 1081> 1393 41<404 588 1238 1421> 1503 299 -VStem: 688 551 -AnchorPoint: "bottom" 582 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1239 246 2 -Refer: 35 72 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Idotaccent -Encoding: 304 304 228 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1516 150<489 604> -VStem: 92 506 455 184 -AnchorPoint: "ogonek" 156 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 827 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gbreve -Encoding: 286 286 229 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 717 102<1059 1210> 1331 102<803 1211> 1516 117<942 1175> -VStem: 201 176<307 781> 838 84<1662 1706> -AnchorPoint: "cedilla" 717 0 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1321 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Jcircumflex -Encoding: 308 308 230 -Width: 948 -VWidth: 0 -Flags: W -HStem: -20 102<260 588> 1393 41<943 1126> 1503 299 -VStem: 805 551 -AnchorPoint: "bottom" 389 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1356 246 2 -Refer: 37 74 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: hcircumflex -Encoding: 293 293 231 -Width: 1034 -VWidth: 0 -Flags: W -HStem: 0 43<143 317 780 954> 819 102<560 873> 1270 102<284 461> 1503 299 -VStem: 213 70<1221 1259> 403 174<985 1268> 457 551 913 164<389 778> -AnchorPoint: "bottom" 549 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 S 1 0 0 1 1008 246 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gbreve -Encoding: 287 287 232 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 592> -20 102<394 702> 819 102<529 784 1073 1185> 1085 117<643 876> -VStem: 147 166<162 536> 539 84<1231 1276> 1186 74<770 815> -AnchorPoint: "bottom" 397 -330 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1022 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: jcircumflex -Encoding: 309 309 233 -Width: 376 -VWidth: 0 -Flags: W -HStem: -348 102<-190 42> 860 41<322 496> 1073 299 -VStem: 199 551 -AnchorPoint: "bottom" -104 -348 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 750 -184 2 -Refer: 111 567 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Cdotaccent -Encoding: 266 266 234 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 1352 102<814 1199> 1516 150<983 1098> -VStem: 201 176<307 773> 948 184 -AnchorPoint: "cedilla" 717 0 basechar 0 -AnchorPoint: "bottom" 717 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1321 246 2 -Refer: 30 67 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ccircumflex -Encoding: 264 264 235 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 1352 102<814 1199> 1503 299 -VStem: 201 176<307 773> 770 551 -AnchorPoint: "cedilla" 717 0 basechar 0 -AnchorPoint: "bottom" 717 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1321 246 2 -Refer: 30 67 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gdotaccent -Encoding: 288 288 236 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 717 102<1059 1210> 1331 102<803 1211> 1516 150<983 1098> -VStem: 201 176<307 781> 948 184 -AnchorPoint: "cedilla" 717 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1321 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gcircumflex -Encoding: 284 284 237 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 717 102<1059 1210> 1331 102<803 1211> 1503 299 -VStem: 201 176<307 781> 770 551 -AnchorPoint: "cedilla" 717 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1321 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ubreve -Encoding: 364 364 238 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1516 117<893 1126> -VStem: 176 174<211 687> 393 174<1372 1434> 788 84<1662 1706> -AnchorPoint: "top" 1028 1720 basechar 0 -AnchorPoint: "ogonek" 623 0 basechar 0 -AnchorPoint: "bottom" 627 0 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Scircumflex -Encoding: 348 348 239 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -20 102<495 829> 1352 102<765 1066> 1503 299 -VStem: 207 166<209 350> 430 180<951 1185> 688 551 1024 176<277 545> -AnchorPoint: "cedilla" 598 0 basechar 0 -AnchorPoint: "bottom" 602 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1239 246 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: cdotaccent -Encoding: 267 267 240 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 819 102<553 814> 1085 150<711 825> -VStem: 150 166<182 543> 676 184 872 147<669 756> -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1049 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ccircumflex -Encoding: 265 265 241 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 819 102<553 814> 1073 299 -VStem: 150 166<182 543> 498 551 872 147<669 756> -AnchorPoint: "top" 735 1004 basechar 0 -AnchorPoint: "cedilla" 541 0 basechar 0 -AnchorPoint: "bottom" 541 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1049 -184 2 -Refer: 5 99 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gdotaccent -Encoding: 289 289 242 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 592> -20 102<394 702> 819 102<529 784 1073 1185> 1085 150<684 799> -VStem: 147 166<162 536> 649 184 1186 74<770 815> -AnchorPoint: "bottom" 397 -330 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1022 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gcircumflex -Encoding: 285 285 243 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 592> -20 102<394 702> 819 102<529 784 1073 1185> 1073 299 -VStem: 147 166<162 536> 471 551 1186 74<770 815> -AnchorPoint: "bottom" 397 -330 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1022 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ubreve -Encoding: 365 365 244 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1085 117<653 887> -VStem: 154 172<137 501> 549 84<1231 1276> 762 174<142 374> 1057 70<93 131> -AnchorPoint: "ogonek" 932 0 basechar 0 -AnchorPoint: "bottom" 471 0 basechar 0 -AnchorPoint: "top" 803 1352 basechar 0 -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1032 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scircumflex -Encoding: 349 349 245 -Width: 860 -VWidth: 0 -Flags: W -HStem: -20 102<279 603> 819 102<467 723> 1073 299 -VStem: 252 166<581 768> 383 551 688 168<168 375> -AnchorPoint: "bottom" 422 0 basechar 0 -AnchorPoint: "cedilla" 422 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 934 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Hbar -Encoding: 294 294 246 -Width: 1189 -VWidth: 0 -Flags: W -HStem: 0 43G<82 265 915 1099> 717 102<444 1081> 1159 102<291 350 547 1184 1380 1440> 1393 41G<404 588 1237 1421> -AnchorPoint: "top" 926 1434 basechar 0 -AnchorPoint: "bottom" 582 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -350 1159 m 1,0,-1 - 268 1159 l 1,1,-1 - 291 1262 l 1,2,-1 - 373 1262 l 1,3,-1 - 414 1434 l 1,4,-1 - 588 1434 l 1,5,-1 - 547 1262 l 1,6,-1 - 1206 1262 l 1,7,-1 - 1247 1434 l 1,8,-1 - 1421 1434 l 1,9,-1 - 1380 1262 l 1,10,-1 - 1462 1262 l 1,11,-1 - 1440 1159 l 1,12,-1 - 1358 1159 l 1,13,-1 - 1090 0 l 1,14,-1 - 915 0 l 1,15,-1 - 1081 717 l 1,16,-1 - 422 717 l 1,17,-1 - 256 0 l 1,18,-1 - 82 0 l 1,19,-1 - 350 1159 l 1,0,-1 -1184 1159 m 1,20,-1 - 524 1159 l 1,21,-1 - 444 819 l 1,22,-1 - 1104 819 l 1,23,-1 - 1184 1159 l 1,20,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: hbar -Encoding: 295 295 247 -Width: 972 -VWidth: 0 -Flags: W -HStem: 0 43G<143 317 780 954> 819 102<560 873> 1085 102<299 393 586 760> -VStem: 913 164<389 778> -AnchorPoint: "bottom" 549 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -393 1085 m 1,0,-1 - 274 1085 l 1,1,-1 - 299 1188 l 1,2,-1 - 416 1188 l 1,3,-1 - 455 1352 l 1,4,-1 - 627 1352 l 1,5,-1 - 586 1188 l 1,6,-1 - 784 1188 l 1,7,-1 - 760 1085 l 1,8,-1 - 561 1085 l 1,9,-1 - 508 870 l 1,10,11 - 621 922 621 922 729 922 c 0,12,13 - 1077 922 1077 922 1077 641 c 0,14,15 - 1077 584 1077 584 1057 492 c 1,16,-1 - 944 0 l 1,17,-1 - 780 0 l 1,18,-1 - 889 467 l 1,19,20 - 913 575 913 575 913 643 c 0,21,22 - 913 741 913 741 867.5 780 c 128,-1,23 - 822 819 822 819 735 819 c 0,24,25 - 608 819 608 819 475 723 c 1,26,-1 - 307 0 l 1,27,-1 - 143 0 l 1,28,-1 - 393 1085 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Iogonek -Encoding: 302 302 248 -Width: 436 -VWidth: 0 -Flags: W -HStem: -319 37<44 135> 0 43<92 276> 1393 41<414 598> -VStem: -119 119<-266 -112> 92 506 -AnchorPoint: "bottom" 106 -287 basechar 0 -AnchorPoint: "top" 514 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -598 1434 m 1,0,-1 - 266 0 l 1,1,-1 - 156 0 l 1,2,3 - 133 -10 133 -10 111.5 -23.5 c 128,-1,4 - 90 -37 90 -37 62 -60.5 c 128,-1,5 - 34 -84 34 -84 17 -119 c 128,-1,6 - 0 -154 0 -154 0 -195 c 0,7,8 - 0 -239 0 -239 32.5 -261 c 128,-1,9 - 65 -283 65 -283 143 -283 c 1,10,-1 - 135 -319 l 1,11,12 - -4 -319 -4 -319 -61.5 -286.5 c 128,-1,13 - -119 -254 -119 -254 -119 -207 c 0,14,15 - -119 -151 -119 -151 -58 -93.5 c 128,-1,16 - 3 -36 3 -36 92 1 c 1,17,-1 - 424 1434 l 1,18,-1 - 598 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Uogonek -Encoding: 370 370 249 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -319 37<510 602> -20 102<471 807> 1393 41<384 567 1301 1485> -VStem: 176 174<211 687> 348 119<-266 -112> 393 174<1372 1434> -AnchorPoint: "bottom" 537 -287 basechar 0 -AnchorPoint: "top" 958 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1311 1434 m 1,0,-1 - 1485 1434 l 1,1,-1 - 1294 610 l 2,2,3 - 1259 461 1259 461 1203.5 348.5 c 128,-1,4 - 1148 236 1148 236 1083 167 c 128,-1,5 - 1018 98 1018 98 935.5 55 c 128,-1,6 - 853 12 853 12 772.5 -4 c 128,-1,7 - 692 -20 692 -20 598 -20 c 2,8,-1 - 583 -20 l 1,9,10 - 467 -88 467 -88 467 -195 c 0,11,12 - 467 -239 467 -239 499.5 -261 c 128,-1,13 - 532 -283 532 -283 610 -283 c 1,14,-1 - 602 -319 l 1,15,16 - 463 -319 463 -319 405.5 -286.5 c 128,-1,17 - 348 -254 348 -254 348 -207 c 0,18,19 - 348 -158 348 -158 397.5 -106.5 c 128,-1,20 - 447 -55 447 -55 523 -16 c 1,21,22 - 469 -9 469 -9 422 7.5 c 128,-1,23 - 375 24 375 24 328.5 56 c 128,-1,24 - 282 88 282 88 249.5 132.5 c 128,-1,25 - 217 177 217 177 196.5 245 c 128,-1,26 - 176 313 176 313 176 397 c 0,27,28 - 176 490 176 490 203 610 c 2,29,-1 - 393 1434 l 1,30,-1 - 567 1434 l 1,31,-1 - 377 610 l 1,32,33 - 350 487 350 487 350 401 c 0,34,35 - 350 325 350 325 369 266 c 128,-1,36 - 388 207 388 207 416.5 173 c 128,-1,37 - 445 139 445 139 484 118 c 128,-1,38 - 523 97 523 97 559 89.5 c 128,-1,39 - 595 82 595 82 633 82 c 0,40,41 - 684 82 684 82 734 95 c 128,-1,42 - 784 108 784 108 842.5 144.5 c 128,-1,43 - 901 181 901 181 950.5 238 c 128,-1,44 - 1000 295 1000 295 1045.5 390.5 c 128,-1,45 - 1091 486 1091 486 1120 610 c 2,46,-1 - 1311 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: iogonek -Encoding: 303 303 250 -Width: 483 -VWidth: 0 -Flags: W -HStem: -319 37<136 227> -20 102<252 428> 860 41<292 465> 1065 164<377 502> -VStem: -27 119<-266 -112> 135 174<85 272> 430 70<93 131> -AnchorPoint: "bottom" 135 -287 basechar 0 -LayerCount: 2 -Fore -SplineSet -319 276 m 2,0,1 - 309 232 309 232 309 182 c 0,2,3 - 309 82 309 82 352 82 c 0,4,5 - 380 82 380 82 402.5 96.5 c 128,-1,6 - 425 111 425 111 430 131 c 1,7,-1 - 500 131 l 1,8,9 - 487 68 487 68 428.5 24 c 128,-1,10 - 370 -20 370 -20 301 -20 c 0,11,12 - 262 -20 262 -20 233 -7 c 1,13,14 - 92 -76 92 -76 92 -195 c 0,15,16 - 92 -239 92 -239 125 -261 c 128,-1,17 - 158 -283 158 -283 236 -283 c 1,18,-1 - 227 -319 l 1,19,20 - 88 -319 88 -319 30.5 -286.5 c 128,-1,21 - -27 -254 -27 -254 -27 -207 c 0,22,23 - -27 -149 -27 -149 41.5 -87.5 c 128,-1,24 - 110 -26 110 -26 205 9 c 1,25,26 - 135 59 135 59 135 156 c 0,27,28 - 135 183 135 183 141 213 c 2,29,-1 - 301 901 l 1,30,-1 - 465 901 l 1,31,-1 - 319 276 l 2,0,1 -377 1229 m 1,32,-1 - 541 1229 l 1,33,-1 - 502 1065 l 1,34,-1 - 338 1065 l 1,35,-1 - 377 1229 l 1,32,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uogonek -Encoding: 371 371 251 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -319 37<820 911> -20 102<380 690 896 1055> 860 41<281 455 918 1092> -VStem: 154 172<137 501> 657 119<-266 -112> 762 174<142 374> 1057 70<93 131> -AnchorPoint: "top" 719 1004 basechar 0 -AnchorPoint: "bottom" 430 -287 basechar 0 -LayerCount: 2 -Fore -SplineSet -946 276 m 2,0,1 - 936 232 936 232 936 182 c 0,2,3 - 936 82 936 82 979 82 c 0,4,5 - 1007 82 1007 82 1029.5 96.5 c 128,-1,6 - 1052 111 1052 111 1057 131 c 1,7,-1 - 1126 131 l 1,8,9 - 1113 68 1113 68 1055 24 c 128,-1,10 - 997 -20 997 -20 928 -20 c 0,11,12 - 907 -20 907 -20 897 -18 c 1,13,14 - 776 -87 776 -87 776 -195 c 0,15,16 - 776 -239 776 -239 809 -261 c 128,-1,17 - 842 -283 842 -283 920 -283 c 1,18,-1 - 911 -319 l 1,19,20 - 772 -319 772 -319 714.5 -286.5 c 128,-1,21 - 657 -254 657 -254 657 -207 c 0,22,23 - 657 -154 657 -154 714 -98.5 c 128,-1,24 - 771 -43 771 -43 856 -5 c 1,25,26 - 810 16 810 16 784 61 c 1,27,28 - 714 23 714 23 631 1.5 c 128,-1,29 - 548 -20 548 -20 475 -20 c 0,30,31 - 309 -20 309 -20 231.5 43.5 c 128,-1,32 - 154 107 154 107 154 240 c 0,33,34 - 154 311 154 311 176 410 c 1,35,-1 - 291 901 l 1,36,-1 - 455 901 l 1,37,-1 - 346 434 l 2,38,39 - 326 350 326 350 326 281 c 0,40,41 - 326 171 326 171 379.5 126.5 c 128,-1,42 - 433 82 433 82 528 82 c 0,43,44 - 646 82 646 82 762 174 c 1,45,46 - 762 177 762 177 768 213 c 1,47,-1 - 928 901 l 1,48,-1 - 1092 901 l 1,49,-1 - 946 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Amacron -Encoding: 256 256 252 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1516 82<766 1219> -VStem: 748 489 -AnchorPoint: "bottom" 639 0 basechar 0 -AnchorPoint: "ogonek" 1092 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1092 0 m 1 -EndSplineSet -Refer: 96 772 N 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Emacron -Encoding: 274 274 253 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1516 82<645 1098> -VStem: 627 489 -AnchorPoint: "bottom" 537 0 basechar 0 -AnchorPoint: "ogonek" 754 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1168 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Edotaccent -Encoding: 278 278 254 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1516 150<830 944> -VStem: 795 184 -AnchorPoint: "bottom" 537 0 basechar 0 -AnchorPoint: "ogonek" 754 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1168 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Imacron -Encoding: 298 298 255 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1516 82<305 758> -VStem: 92 506 287 489 -AnchorPoint: "ogonek" 156 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 827 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Omacron -Encoding: 332 332 256 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1516 82<788 1241> -VStem: 199 176<286 770> 770 489 1315 176<653 1162> -AnchorPoint: "ogonek" 684 0 basechar 0 -AnchorPoint: "bottom" 680 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Umacron -Encoding: 362 362 257 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1516 82<750 1202> -VStem: 176 174<211 687> 393 174<1372 1434> 731 489 -AnchorPoint: "ogonek" 623 0 basechar 0 -AnchorPoint: "bottom" 627 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: amacron -Encoding: 257 257 258 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1085 82<522 975> -VStem: 154 158<136 521> 504 489 711 172<113 272> 1004 72<93 131> -AnchorPoint: "ogonek" 903 0 basechar 0 -AnchorPoint: "bottom" 446 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1044 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: emacron -Encoding: 275 275 259 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1085 82<524 977> -VStem: 150 166<182 446> 506 489 872 160<556 758> -AnchorPoint: "ogonek" 559 0 basechar 0 -AnchorPoint: "bottom" 510 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: edotaccent -Encoding: 279 279 260 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1085 150<709 823> -VStem: 150 166<182 446> 674 184 872 160<556 758> -AnchorPoint: "ogonek" 559 0 basechar 0 -AnchorPoint: "bottom" 510 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: gcommaaccent -Encoding: 291 291 261 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 592> -20 102<394 702> 819 102<529 784 1073 1185> 1085 367 -VStem: 147 166<162 536> 647 147<1085 1158> 1186 74<770 815> -AnchorPoint: "bottom" 397 -330 basechar 0 -LayerCount: 2 -Fore -Refer: 105 786 N 1 0 0 1 1022 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: imacron -Encoding: 299 299 262 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1085 82<199 651> -VStem: 135 174<85 272> 180 489 430 70<93 131> -AnchorPoint: "bottom" 172 0 basechar 0 -AnchorPoint: "ogonek" 248 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 721 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: omacron -Encoding: 333 333 263 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1085 82<528 981> -VStem: 147 164<157 530> 510 489 897 168<366 739> -AnchorPoint: "bottom" 487 0 basechar 0 -AnchorPoint: "ogonek" 508 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1051 -184 2 -Refer: 9 111 S 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: umacron -Encoding: 363 363 264 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1085 82<510 963> -VStem: 154 172<137 501> 492 489 762 174<142 374> 1057 70<93 131> -AnchorPoint: "ogonek" 932 0 basechar 0 -AnchorPoint: "bottom" 471 0 basechar 0 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1032 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E02 -Encoding: 7682 7682 265 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<281 700> 727 102<449 775> 1331 102<563 901> 1516 150<717 831> -VStem: 682 184 872 176<300 657> 944 178<999 1290> -AnchorPoint: "bottom" 471 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1055 246 2 -Refer: 28 66 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E03 -Encoding: 7683 7683 266 -Width: 1069 -VWidth: 0 -Flags: W -HStem: -20 102<417 739> 819 102<614 888> 1085 150<727 842> 1270 102<284 461> -VStem: 211 158<129 459> 213 70<1221 1259> 403 174<984 1268> 692 184 952 168<362 753> -AnchorPoint: "bottom" 494 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1065 -184 2 -Refer: 6 98 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0A -Encoding: 7690 7690 267 -Width: 1216 -VWidth: 0 -Flags: W -HStem: 0 102<291 782> 1331 102<573 1062> 1516 150<807 922> -VStem: 772 184 1157 172<718 1227> -AnchorPoint: "bottom" 512 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1145 246 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wgrave -Encoding: 7808 7808 268 -Width: 1701 -VWidth: 0 -Flags: W -HStem: 0 43<461 668 1061 1268> 860 41<952 1157> 1085 387 1393 41<332 508 1847 2042> -VStem: 918 295 -AnchorPoint: "bottom" 864 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1255 -170 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wacute -Encoding: 7810 7810 269 -Width: 1701 -VWidth: 0 -Flags: W -HStem: 0 43<461 668 1061 1268> 860 41<952 1157> 1085 387 1393 41<332 508 1847 2042> -VStem: 993 406 -AnchorPoint: "bottom" 864 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1386 -170 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0B -Encoding: 7691 7691 270 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -20 102<404 666 925 1088> 819 102<556 809> 1085 150<711 825> -VStem: 150 168<174 538> 676 184 866 102<182 586> 1090 70<93 131> -AnchorPoint: "bottom" 485 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1049 -184 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ygrave -Encoding: 7922 7922 271 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<451 634> 1393 41<414 609 1112 1327> 1501 387 -VStem: 711 295 -AnchorPoint: "ogonek" 569 0 basechar 0 -AnchorPoint: "bottom" 537 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1049 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ydieresis -Encoding: 376 376 272 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<451 634> 1393 41<414 609 1112 1327> 1516 150<680 795 1008 1122> -VStem: 645 184 973 184 -AnchorPoint: "ogonek" 569 0 basechar 0 -AnchorPoint: "bottom" 537 0 basechar 0 -AnchorPoint: "top" 940 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1182 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1E -Encoding: 7710 7710 273 -Width: 899 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 799 102<475 920> 1331 102<573 1227> 1516 150<829 944> -VStem: 795 184 -AnchorPoint: "bottom" 328 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1167 246 2 -Refer: 33 70 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1F -Encoding: 7711 7711 274 -Width: 608 -VWidth: 0 -Flags: W -HStem: -276 102<36 145> 799 102<311 391 580 717> 1270 102<687 874> 1516 150<688 803> -VStem: -39 74<-170 -125> 653 184 -AnchorPoint: "bottom" 195 -256 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1026 246 2 -Refer: 12 102 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E40 -Encoding: 7744 7744 275 -Width: 1544 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 1200 1384> 1393 41<414 608 1503 1706> 1434 150<1022 1137> -VStem: 987 184 -AnchorPoint: "bottom" 733 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1360 164 2 -Refer: 40 77 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E41 -Encoding: 7745 7745 276 -Width: 1574 -VWidth: 0 -Flags: W -HStem: 0 43<184 358 760 933 1317 1490> 819 102<221 380 584 880 1151 1437> 1085 150<1051 1165> -VStem: 150 70<770 808> 340 174<527 759> 1016 184 1460 158<430 798> -AnchorPoint: "bottom" 741 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1389 -184 2 -Refer: 11 109 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E56 -Encoding: 7766 7766 277 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 655 102<440 858> 1331 102<573 969> 1516 150<786 901> -VStem: 752 184 1032 174<951 1271> -AnchorPoint: "bottom" 369 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1124 246 2 -Refer: 29 80 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wgrave -Encoding: 7809 7809 278 -Width: 1587 -VWidth: 0 -Flags: W -HStem: 0 43<384 577 1039 1233> 860 41<270 425 901 1081 1557 1745> 1071 387 -VStem: 866 295 -AnchorPoint: "bottom" 799 0 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1204 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E57 -Encoding: 7767 7767 279 -Width: 1107 -VWidth: 0 -Flags: W -HStem: -16 102<505 758> 823 102<229 383 639 924> 1085 150<794 909> -VStem: 150 70<770 804> 760 184 993 164<365 748> -AnchorPoint: "bottom" 532 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1132 -184 2 -Refer: 16 112 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wacute -Encoding: 7811 7811 280 -Width: 1587 -VWidth: 0 -Flags: W -HStem: 0 43<384 577 1039 1233> 860 41<270 425 901 1081 1557 1745> 1071 387 -VStem: 944 406 -AnchorPoint: "bottom" 799 0 basechar 0 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1337 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E60 -Encoding: 7776 7776 281 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -20 102<495 829> 1352 102<765 1066> 1516 150<901 1016> -VStem: 207 166<209 350> 430 180<951 1185> 866 184 1024 176<277 545> -AnchorPoint: "cedilla" 598 0 basechar 0 -AnchorPoint: "bottom" 602 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1239 246 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ygrave -Encoding: 7923 7923 282 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<133 262> 860 41<270 425 901 1090> 1071 387 -VStem: 551 295 -AnchorPoint: "ogonek" 631 0 basechar 0 -AnchorPoint: "bottom" 299 -315 basechar 0 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 889 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wdieresis -Encoding: 7812 7812 283 -Width: 1701 -VWidth: 0 -Flags: W -HStem: 0 43<461 668 1061 1268> 860 41<952 1157> 1249 150<924 1038 1251 1366> 1393 41<332 508 1847 2042> -VStem: 889 184 1217 184 -AnchorPoint: "bottom" 864 0 basechar 0 -AnchorPoint: "top" 1171 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1425 -20 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wdieresis -Encoding: 7813 7813 284 -Width: 1587 -VWidth: 0 -Flags: W -HStem: 0 43<384 577 1039 1233> 860 41<270 425 901 1081 1557 1745> 1085 150<836 950 1163 1278> -VStem: 801 184 1128 184 -AnchorPoint: "bottom" 799 0 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1337 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E61 -Encoding: 7777 7777 285 -Width: 860 -VWidth: 0 -Flags: W -HStem: -20 102<279 603> 819 102<467 723> 1085 150<596 711> -VStem: 252 166<581 768> 561 184 688 168<168 375> -AnchorPoint: "bottom" 422 0 basechar 0 -AnchorPoint: "cedilla" 422 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 934 -184 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Wcircumflex -Encoding: 372 372 286 -Width: 1701 -VWidth: 0 -Flags: W -HStem: 0 43<461 668 1061 1268> 860 41<952 1157> 1108 299 1393 41<332 508 1847 2042> -VStem: 842 551 -AnchorPoint: "bottom" 864 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1393 -150 2 -Refer: 50 87 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6A -Encoding: 7786 7786 287 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43<532 716> 1331 102<352 840 1014 1526> 1516 150<930 1044> -VStem: 895 184 -AnchorPoint: "bottom" 623 0 basechar 0 -AnchorPoint: "cedilla" 618 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1268 246 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ycircumflex -Encoding: 374 374 288 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<451 634> 1393 41<414 609 1112 1327> 1503 299 -VStem: 631 551 -AnchorPoint: "ogonek" 569 0 basechar 0 -AnchorPoint: "bottom" 537 0 basechar 0 -AnchorPoint: "top" 940 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1182 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: wcircumflex -Encoding: 373 373 289 -Width: 1587 -VWidth: 0 -Flags: W -HStem: 0 43<384 577 1039 1233> 860 41<270 425 901 1081 1557 1745> 1073 299 -VStem: 786 551 -AnchorPoint: "bottom" 799 0 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1337 -184 2 -Refer: 22 119 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6B -Encoding: 7787 7787 290 -Width: 577 -VWidth: 0 -Flags: W -HStem: -20 102<346 523> 799 102<291 371 559 696> 1434 150<557 672> -VStem: 229 174<85 272> 522 184 524 70<93 131> -AnchorPoint: "cedilla" 393 4 basechar 0 -AnchorPoint: "bottom" 262 0 basechar 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 895 164 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ycircumflex -Encoding: 375 375 291 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<133 262> 860 41<270 425 901 1090> 1073 299 -VStem: 471 551 -AnchorPoint: "ogonek" 631 0 basechar 0 -AnchorPoint: "bottom" 299 -315 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1022 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Rcommaaccent -Encoding: 342 342 292 -Width: 1101 -VWidth: 0 -Flags: W -HStem: -401 49<270 451> -164 57<401 490> 0 43<92 276 819 991> 655 102<440 679> 1331 102<573 969> -VStem: 516 129<-312 -181> 829 170<0 381> 1032 174<954 1271> -AnchorPoint: "top" 811 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1098 0 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Itilde -Encoding: 296 296 293 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1516 117<573 766> 1581 117<362 555> -VStem: 92 506 260 608 -AnchorPoint: "ogonek" 156 0 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 827 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Lcommaaccent -Encoding: 315 315 294 -Width: 1052 -VWidth: 0 -Flags: W -HStem: -401 49<266 447> -164 57<397 485> 0 102<281 942> 1393 41<404 588> -VStem: 512 129<-312 -181> -AnchorPoint: "top" 680 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1094 0 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Gcommaaccent -Encoding: 290 290 295 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -401 49<479 660> -164 57<610 698> -20 102<585 956> 717 102<1059 1210> 1331 102<803 1211> -VStem: 201 176<307 781> 725 129<-312 -181> -AnchorPoint: "top" 1008 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1307 0 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: rcommaaccent -Encoding: 343 343 296 -Width: 770 -VWidth: 0 -Flags: W -HStem: -401 49<66 246> -164 57<197 285> 0 43<184 358> 819 102<221 380 570 863> -VStem: 150 70<770 808> 311 129<-312 -181> 340 174<629 766> -AnchorPoint: "top" 666 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 893 0 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: itilde -Encoding: 297 297 297 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1085 117<467 660> 1151 117<256 449> -VStem: 135 174<85 272> 154 608 430 70<93 131> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 721 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: lcommaaccent -Encoding: 316 316 298 -Width: 495 -VWidth: 0 -Flags: W -HStem: -406 49<49 230> -168 57<180 268> -20 102<252 428> -VStem: 135 174<85 274> 295 129<-316 -186> 430 70<93 131> -AnchorPoint: "top" 506 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 877 -4 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Ncommaaccent -Encoding: 325 325 299 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -401 49<377 558> -164 57<508 596> 0 43<92 276 961 1165> 1393 41<414 616 1303 1487> -VStem: 623 129<-312 -181> -AnchorPoint: "top" 967 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1204 0 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Kcommaaccent -Encoding: 310 310 300 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -401 49<336 517> -164 57<467 555> 0 43<92 276 936 1151> 1393 41<414 598 1208 1458> -VStem: 582 129<-312 -181> -AnchorPoint: "top" 733 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1163 0 2 -Refer: 38 75 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Utilde -Encoding: 360 360 301 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1516 117<1018 1211> 1581 117<807 1000> -VStem: 176 174<211 687> 393 174<1372 1434> 705 608 -AnchorPoint: "ogonek" 623 0 basechar 0 -AnchorPoint: "bottom" 627 0 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: ncommaaccent -Encoding: 326 326 302 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -401 49<381 562> -164 57<512 600> 0 43<184 358 821 994> 819 102<221 380 602 914> -VStem: 150 70<770 808> 627 129<-312 -181> 954 164<389 778> -AnchorPoint: "top" 817 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1208 0 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: kcommaaccent -Encoding: 311 311 303 -Width: 917 -VWidth: 0 -Flags: W -HStem: -401 49<205 386> -164 57<336 424> 0 43<143 317 710 909> 860 41<847 1081> 1270 102<284 461> -VStem: 213 70<1221 1259> 403 174<987 1268> 451 129<-312 -181> -AnchorPoint: "top" 715 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1032 0 2 -Refer: 25 107 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: utilde -Encoding: 361 361 304 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1085 117<778 971> 1151 117<567 760> -VStem: 154 172<137 501> 465 608 762 174<142 374> 1057 70<93 131> -AnchorPoint: "ogonek" 932 0 basechar 0 -AnchorPoint: "bottom" 471 0 basechar 0 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1032 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: kgreenlandic -Encoding: 312 312 305 -Width: 917 -VWidth: 0 -Flags: W -HStem: 0 43G<82 255 649 848> 860 41G<281 455 785 1020> -AnchorPoint: "top" 639 1004 basechar 0 -AnchorPoint: "bottom" 446 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -309 270 m 1,0,-1 - 246 0 l 1,1,-1 - 82 0 l 1,2,-1 - 291 901 l 1,3,-1 - 455 901 l 1,4,-1 - 356 479 l 1,5,-1 - 831 901 l 1,6,-1 - 1020 901 l 1,7,-1 - 569 502 l 1,8,-1 - 848 0 l 1,9,-1 - 672 0 l 1,10,-1 - 451 395 l 1,11,-1 - 309 270 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Tbar -Encoding: 358 358 306 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43G<532 716> 901 102<604 741 938 1065> 1331 102<352 840 1014 1526> -AnchorPoint: "top" 954 1434 basechar 0 -AnchorPoint: "bottom" 623 0 basechar 0 -AnchorPoint: "cedilla" 618 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -352 1434 m 1,0,-1 - 1554 1434 l 1,1,-1 - 1526 1331 l 1,2,-1 - 1014 1331 l 1,3,-1 - 938 1004 l 1,4,-1 - 1090 1004 l 1,5,-1 - 1065 901 l 1,6,-1 - 915 901 l 1,7,-1 - 707 0 l 1,8,-1 - 532 0 l 1,9,-1 - 741 901 l 1,10,-1 - 580 901 l 1,11,-1 - 604 1004 l 1,12,-1 - 764 1004 l 1,13,-1 - 840 1331 l 1,14,-1 - 328 1331 l 1,15,-1 - 352 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tbar -Encoding: 359 359 307 -Width: 577 -VWidth: 0 -Flags: W -HStem: -20 102<346 523> 500 102<184 301 489 645> 799 102<291 371 559 696> -VStem: 229 174<85 270> 524 70<93 131> -AnchorPoint: "top" 582 1352 basechar 0 -AnchorPoint: "cedilla" 393 4 basechar 0 -AnchorPoint: "bottom" 262 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -414 276 m 2,0,1 - 403 228 403 228 403 182 c 0,2,3 - 403 82 403 82 446 82 c 0,4,5 - 474 82 474 82 496.5 96.5 c 128,-1,6 - 519 111 519 111 524 131 c 1,7,-1 - 594 131 l 1,8,9 - 581 68 581 68 522.5 24 c 128,-1,10 - 464 -20 464 -20 395 -20 c 0,11,12 - 322 -20 322 -20 275.5 29.5 c 128,-1,13 - 229 79 229 79 229 156 c 0,14,15 - 229 178 229 178 236 213 c 2,16,-1 - 301 500 l 1,17,-1 - 160 500 l 1,18,-1 - 184 602 l 1,19,-1 - 326 602 l 1,20,-1 - 371 799 l 1,21,-1 - 236 799 l 1,22,-1 - 291 901 l 1,23,-1 - 395 901 l 1,24,-1 - 463 1198 l 1,25,-1 - 635 1229 l 1,26,-1 - 559 901 l 1,27,-1 - 721 901 l 1,28,-1 - 696 799 l 1,29,-1 - 535 799 l 1,30,-1 - 489 602 l 1,31,-1 - 670 602 l 1,32,-1 - 645 500 l 1,33,-1 - 465 500 l 1,34,-1 - 414 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Eng -Encoding: 330 330 308 -Width: 1271 -VWidth: 0 -Flags: W -HStem: -20 102<640 894> 0 43G<147 331> 1270 102<749 1105> -VStem: 1176 176<810 1200> -LayerCount: 2 -Fore -SplineSet -1268 639 m 2,0,1 - 1231 476 1231 476 1187 361.5 c 128,-1,2 - 1143 247 1143 247 1079.5 157.5 c 128,-1,3 - 1016 68 1016 68 927 24 c 128,-1,4 - 838 -20 838 -20 721 -20 c 0,5,6 - 644 -20 644 -20 580.5 3.5 c 128,-1,7 - 517 27 517 27 442 72 c 1,8,-1 - 569 178 l 1,9,10 - 632 126 632 126 677 104 c 128,-1,11 - 722 82 722 82 774 82 c 0,12,13 - 805 82 805 82 832.5 91.5 c 128,-1,14 - 860 101 860 101 882.5 115 c 128,-1,15 - 905 129 905 129 925.5 155.5 c 128,-1,16 - 946 182 946 182 961 206 c 128,-1,17 - 976 230 976 230 992 270 c 128,-1,18 - 1008 310 1008 310 1018 340.5 c 128,-1,19 - 1028 371 1028 371 1041.5 421 c 128,-1,20 - 1055 471 1055 471 1062.5 504.5 c 128,-1,21 - 1070 538 1070 538 1083 594 c 2,22,-1 - 1157 918 l 2,23,24 - 1176 1002 1176 1002 1176 1055 c 0,25,26 - 1176 1270 1176 1270 952 1270 c 0,27,28 - 772 1270 772 1270 584 1135 c 1,29,-1 - 322 0 l 1,30,-1 - 147 0 l 1,31,-1 - 459 1352 l 1,32,-1 - 633 1352 l 1,33,-1 - 618 1282 l 1,34,35 - 623 1284 623 1284 646 1295 c 128,-1,36 - 669 1306 669 1306 679 1310.5 c 128,-1,37 - 689 1315 689 1315 713.5 1325 c 128,-1,38 - 738 1335 738 1335 753.5 1340 c 128,-1,39 - 769 1345 769 1345 795 1352 c 128,-1,40 - 821 1359 821 1359 842.5 1362.5 c 128,-1,41 - 864 1366 864 1366 891.5 1369 c 128,-1,42 - 919 1372 919 1372 946 1372 c 0,43,44 - 1135 1372 1135 1372 1243.5 1293.5 c 128,-1,45 - 1352 1215 1352 1215 1352 1061 c 0,46,47 - 1352 1006 1352 1006 1337 942 c 2,48,-1 - 1268 639 l 2,0,1 -EndSplineSet -Validated: 1 -Substitution2: "'locl' Localized Forms in Sami-1" Engsami -EndChar - -StartChar: eng -Encoding: 331 331 309 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -348 102<506 738> 0 43G<184 358> 819 102<221 380 602 914> -VStem: 150 70<770 808> 954 164<391 778> -AnchorPoint: "top" 821 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -967 -68 m 2,0,1 - 950 -141 950 -141 910 -197 c 128,-1,2 - 870 -253 870 -253 818 -285 c 128,-1,3 - 766 -317 766 -317 710 -332.5 c 128,-1,4 - 654 -348 654 -348 598 -348 c 0,5,6 - 469 -348 469 -348 412 -256 c 1,7,-1 - 555 -195 l 1,8,9 - 577 -246 577 -246 651 -246 c 0,10,11 - 711 -246 711 -246 750 -187.5 c 128,-1,12 - 789 -129 789 -129 819 0 c 2,13,-1 - 930 467 l 1,14,15 - 954 575 954 575 954 643 c 0,16,17 - 954 741 954 741 908.5 780 c 128,-1,18 - 863 819 863 819 776 819 c 0,19,20 - 648 819 648 819 512 721 c 1,21,22 - 511 716 511 716 510 705 c 128,-1,23 - 509 694 509 694 508 688 c 2,24,-1 - 348 0 l 1,25,-1 - 184 0 l 1,26,-1 - 328 625 l 2,27,28 - 340 678 340 678 340 719 c 0,29,30 - 340 764 340 764 328 791.5 c 128,-1,31 - 316 819 316 819 295 819 c 0,32,33 - 267 819 267 819 245.5 804.5 c 128,-1,34 - 224 790 224 790 219 770 c 1,35,-1 - 150 770 l 1,36,37 - 164 833 164 833 221.5 877.5 c 128,-1,38 - 279 922 279 922 348 922 c 0,39,40 - 442 922 442 922 489 842 c 1,41,42 - 627 922 627 922 770 922 c 0,43,44 - 1118 922 1118 922 1118 641 c 0,45,46 - 1118 584 1118 584 1098 492 c 1,47,-1 - 967 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: asciicircum -Encoding: 94 94 310 -Width: 856 -VWidth: 0 -Flags: W -HStem: 193 627 -LayerCount: 2 -Fore -SplineSet -614 819 m 1,0,-1 - 881 250 l 1,1,-1 - 786 193 l 1,2,-1 - 573 639 l 1,3,-1 - 160 193 l 1,4,-1 - 90 250 l 1,5,-1 - 614 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: grave -Encoding: 96 96 311 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: 432 295 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 770 0 2 -Validated: 1 -EndChar - -StartChar: asciitilde -Encoding: 126 126 312 -Width: 831 -VWidth: 0 -Flags: W -HStem: 420 117<532 774> 485 117<293 535> -LayerCount: 2 -Fore -SplineSet -805 602 m 1,0,-1 - 889 602 l 1,1,2 - 861 524 861 524 787 472 c 128,-1,3 - 713 420 713 420 625 420 c 0,4,5 - 587 420 587 420 506 452.5 c 128,-1,6 - 425 485 425 485 406 485 c 0,7,8 - 356 485 356 485 314.5 468.5 c 128,-1,9 - 273 452 273 452 262 420 c 1,10,-1 - 178 420 l 1,11,12 - 206 498 206 498 280 550 c 128,-1,13 - 354 602 354 602 442 602 c 0,14,15 - 480 602 480 602 561.5 569.5 c 128,-1,16 - 643 537 643 537 662 537 c 0,17,18 - 712 537 712 537 753 553.5 c 128,-1,19 - 794 570 794 570 805 602 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: exclamdown -Encoding: 161 161 313 -Width: 356 -VWidth: 0 -Flags: W -HStem: 1032 164<369 494> -VStem: 313 102<772 827> -LayerCount: 2 -Fore -SplineSet -494 1032 m 1,0,-1 - 330 1032 l 1,1,-1 - 369 1196 l 1,2,-1 - 532 1196 l 1,3,-1 - 494 1032 l 1,0,-1 -37 -238 m 25,4,-1 - 313 827 l 1,5,-1 - 416 827 l 1,6,-1 - 201 -238 l 1,7,-1 - 37 -238 l 25,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: questiondown -Encoding: 191 191 314 -Width: 882 -VWidth: 0 -Flags: W -HStem: -238 102<323 613> -53 41G<664 792> 551 215<608 692> 971 164<664 788> -VStem: 78 164<-55 317> -LayerCount: 2 -Fore -SplineSet -788 971 m 1,0,-1 - 625 971 l 1,1,-1 - 664 1135 l 1,2,-1 - 827 1135 l 1,3,-1 - 788 971 l 1,0,-1 -565 651 m 1,4,-1 - 608 766 l 1,5,-1 - 711 766 l 1,6,-1 - 692 551 l 1,7,-1 - 621 551 l 2,8,9 - 531 551 531 551 457 512 c 128,-1,10 - 383 473 383 473 337 409 c 128,-1,11 - 291 345 291 345 266.5 266 c 128,-1,12 - 242 187 242 187 242 102 c 0,13,14 - 242 -10 242 -10 300.5 -72.5 c 128,-1,15 - 359 -135 359 -135 473 -135 c 0,16,17 - 545 -135 545 -135 592.5 -106 c 128,-1,18 - 640 -77 640 -77 696 -12 c 1,19,-1 - 807 -59 l 1,20,21 - 719 -146 719 -146 627.5 -192 c 128,-1,22 - 536 -238 536 -238 418 -238 c 0,23,24 - 255 -238 255 -238 166.5 -151 c 128,-1,25 - 78 -64 78 -64 78 90 c 0,26,27 - 78 206 78 206 118 307.5 c 128,-1,28 - 158 409 158 409 225 480.5 c 128,-1,29 - 292 552 292 552 380 597 c 128,-1,30 - 468 642 468 642 565 651 c 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: cent -Encoding: 162 162 315 -Width: 944 -VWidth: 0 -Flags: W -HStem: 20 102<476 530> 778 102<648 706> -VStem: 188 166<184 535> 821 150<628 749> -LayerCount: 2 -Fore -SplineSet -379 39 m 1,0,1 - 188 96 188 96 188 309 c 0,2,3 - 188 395 188 395 214 483 c 128,-1,4 - 240 571 240 571 287.5 648 c 128,-1,5 - 335 725 335 725 409 783.5 c 128,-1,6 - 483 842 483 842 571 866 c 1,7,-1 - 602 1004 l 1,8,-1 - 676 1004 l 1,9,-1 - 647 879 l 1,10,11 - 659 881 659 881 686 881 c 0,12,13 - 715 881 715 881 729 879 c 1,14,-1 - 758 1004 l 1,15,-1 - 831 1004 l 1,16,-1 - 799 864 l 1,17,18 - 871 839 871 839 910.5 781 c 128,-1,19 - 950 723 950 723 971 635 c 1,20,-1 - 821 567 l 1,21,22 - 819 641 819 641 810 685.5 c 128,-1,23 - 801 730 801 730 774 754 c 1,24,-1 - 629 127 l 1,25,26 - 680 135 680 135 715 162.5 c 128,-1,27 - 750 190 750 190 797 246 c 1,28,-1 - 907 199 l 1,29,30 - 833 125 833 125 763 82.5 c 128,-1,31 - 693 40 693 40 606 27 c 1,32,-1 - 575 -102 l 1,33,-1 - 502 -102 l 1,34,-1 - 530 20 l 1,35,-1 - 528 20 l 2,36,37 - 482 20 482 20 451 25 c 1,38,-1 - 420 -102 l 1,39,-1 - 346 -102 l 1,40,-1 - 379 39 l 1,0,1 -410 172 m 1,41,-1 - 541 735 l 1,42,43 - 488 701 488 701 449 644 c 128,-1,44 - 410 587 410 587 390.5 525.5 c 128,-1,45 - 371 464 371 464 362.5 413.5 c 128,-1,46 - 354 363 354 363 354 324 c 0,47,48 - 354 222 354 222 410 172 c 1,41,-1 -475 137 m 1,49,50 - 505 126 505 126 555 123 c 1,51,-1 - 707 778 l 1,52,-1 - 694 778 l 2,53,54 - 654 778 654 778 623 770 c 1,55,-1 - 475 137 l 1,49,50 -EndSplineSet -Validated: 1 -EndChar - -StartChar: brokenbar -Encoding: 166 166 316 -Width: 305 -VWidth: 0 -Flags: W -HStem: 0 43G<92 214> 1393 41G<414 537> -VStem: 92 444 -LayerCount: 2 -Fore -SplineSet -537 1434 m 25,0,-1 - 385 778 l 1,1,-1 - 272 778 l 1,2,-1 - 424 1434 l 1,3,-1 - 537 1434 l 25,0,-1 -356 655 m 25,4,-1 - 205 0 l 1,5,-1 - 92 0 l 1,6,-1 - 244 655 l 1,7,-1 - 356 655 l 25,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: OE -Encoding: 338 338 317 -Width: 1851 -VWidth: 0 -Flags: W -HStem: -20 102<553 867> 0 102<1169 1831> 799 102<1354 1798> 1331 102<1452 2105> 1352 102<810 1140> -VStem: 199 176<286 779> -AnchorPoint: "top" 1243 1434 basechar 0 -AnchorPoint: "bottom" 926 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1831 0 m 1,0,-1 - 971 0 l 1,1,-1 - 983 55 l 1,2,3 - 830 -20 830 -20 659 -20 c 0,4,5 - 571 -20 571 -20 491 11 c 128,-1,6 - 411 42 411 42 344.5 102 c 128,-1,7 - 278 162 278 162 238.5 262 c 128,-1,8 - 199 362 199 362 199 489 c 0,9,10 - 199 621 199 621 236 758 c 128,-1,11 - 273 895 273 895 344 1019 c 128,-1,12 - 415 1143 415 1143 508.5 1240.5 c 128,-1,13 - 602 1338 602 1338 725.5 1396 c 128,-1,14 - 849 1454 849 1454 981 1454 c 0,15,16 - 1157 1454 1157 1454 1288 1370 c 1,17,-1 - 1303 1434 l 1,18,-1 - 2130 1434 l 1,19,-1 - 2105 1331 l 1,20,-1 - 1452 1331 l 1,21,-1 - 1354 901 l 1,22,-1 - 1823 901 l 1,23,-1 - 1798 799 l 1,24,-1 - 1329 799 l 1,25,-1 - 1169 102 l 1,26,-1 - 1855 102 l 1,27,-1 - 1831 0 l 1,0,-1 -1026 236 m 1,28,-1 - 1249 1202 l 1,29,30 - 1201 1276 1201 1276 1127.5 1314 c 128,-1,31 - 1054 1352 1054 1352 969 1352 c 0,32,33 - 860 1352 860 1352 750.5 1276.5 c 128,-1,34 - 641 1201 641 1201 559.5 1082 c 128,-1,35 - 478 963 478 963 426.5 809.5 c 128,-1,36 - 375 656 375 656 375 508 c 0,37,38 - 375 401 375 401 405.5 316 c 128,-1,39 - 436 231 436 231 484.5 182 c 128,-1,40 - 533 133 533 133 587 107.5 c 128,-1,41 - 641 82 641 82 694 82 c 0,42,43 - 770 82 770 82 857.5 121.5 c 128,-1,44 - 945 161 945 161 1026 236 c 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: oe -Encoding: 339 339 318 -Width: 1683 -VWidth: 0 -Flags: W -HStem: -20 102<384 672 1134 1453> 451 102<1081 1591> 819 102<554 822 1271 1533> -VStem: 147 164<157 530> 897 137<362 449> 1591 160<554 758> -LayerCount: 2 -Fore -SplineSet -532 82 m 0,0,1 - 608 82 608 82 677.5 127.5 c 128,-1,2 - 747 173 747 173 794 244.5 c 128,-1,3 - 841 316 841 316 869 403.5 c 128,-1,4 - 897 491 897 491 897 575 c 0,5,6 - 897 686 897 686 844.5 752.5 c 128,-1,7 - 792 819 792 819 702 819 c 0,8,9 - 602 819 602 819 511 748 c 128,-1,10 - 420 677 420 677 365.5 559 c 128,-1,11 - 311 441 311 441 311 311 c 0,12,13 - 311 201 311 201 366 141.5 c 128,-1,14 - 421 82 421 82 532 82 c 0,0,1 -1047 451 m 1,15,16 - 1034 397 1034 397 1034 340 c 0,17,18 - 1034 220 1034 220 1103 151 c 128,-1,19 - 1172 82 1172 82 1292 82 c 0,20,21 - 1439 82 1439 82 1546 205 c 1,22,-1 - 1659 158 l 1,23,24 - 1575 76 1575 76 1467.5 28 c 128,-1,25 - 1360 -20 1360 -20 1239 -20 c 0,26,27 - 1119 -20 1119 -20 1031.5 27.5 c 128,-1,28 - 944 75 944 75 903 162 c 1,29,30 - 742 -20 742 -20 479 -20 c 0,31,32 - 318 -20 318 -20 232.5 65 c 128,-1,33 - 147 150 147 150 147 301 c 0,34,35 - 147 430 147 430 197.5 547.5 c 128,-1,36 - 248 665 248 665 327 745.5 c 128,-1,37 - 406 826 406 826 504 874 c 128,-1,38 - 602 922 602 922 696 922 c 0,39,40 - 822 922 822 922 911 875 c 128,-1,41 - 1000 828 1000 828 1038 737 c 1,42,43 - 1119 823 1119 823 1218.5 872.5 c 128,-1,44 - 1318 922 1318 922 1415 922 c 0,45,46 - 1499 922 1499 922 1565 893.5 c 128,-1,47 - 1631 865 1631 865 1671 815.5 c 128,-1,48 - 1711 766 1711 766 1731 704 c 128,-1,49 - 1751 642 1751 642 1751 571 c 0,50,51 - 1751 508 1751 508 1737 451 c 1,52,-1 - 1047 451 l 1,15,16 -1081 553 m 1,53,-1 - 1589 553 l 1,54,55 - 1591 567 1591 567 1591 596 c 0,56,57 - 1591 699 1591 699 1548.5 759 c 128,-1,58 - 1506 819 1506 819 1421 819 c 0,59,60 - 1317 819 1317 819 1225.5 744.5 c 128,-1,61 - 1134 670 1134 670 1081 553 c 1,53,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Euro -Encoding: 8364 8364 319 -Width: 1204 -VWidth: 0 -Flags: W -HStem: -20 102<624 916> 512 102<244 309 483 848> 819 102<315 367 565 918> 1331 102<849 1175> -VStem: 309 164<258 512 614 774> -LayerCount: 2 -Fore -SplineSet -1171 209 m 1,0,1 - 1083 107 1083 107 958.5 43.5 c 128,-1,2 - 834 -20 834 -20 705 -20 c 0,3,4 - 636 -20 636 -20 568 10.5 c 128,-1,5 - 500 41 500 41 441 100 c 128,-1,6 - 382 159 382 159 345.5 258.5 c 128,-1,7 - 309 358 309 358 309 483 c 2,8,-1 - 309 512 l 1,9,-1 - 190 512 l 1,10,-1 - 244 614 l 1,11,-1 - 319 614 l 1,12,13 - 331 698 331 698 367 819 c 1,14,-1 - 260 819 l 1,15,-1 - 315 922 l 1,16,-1 - 403 922 l 1,17,18 - 446 1027 446 1027 505.5 1114 c 128,-1,19 - 565 1201 565 1201 628 1259 c 128,-1,20 - 691 1317 691 1317 759.5 1357.5 c 128,-1,21 - 828 1398 828 1398 890 1416 c 128,-1,22 - 952 1434 952 1434 1008 1434 c 0,23,24 - 1326 1434 1326 1434 1405 1245 c 1,25,-1 - 1260 1178 l 1,26,27 - 1207 1331 1207 1331 1008 1331 c 0,28,29 - 883 1331 883 1331 764.5 1228.5 c 128,-1,30 - 646 1126 646 1126 565 922 c 1,31,-1 - 942 922 l 1,32,-1 - 918 819 l 1,33,-1 - 528 819 l 1,34,35 - 498 716 498 716 483 614 c 1,36,-1 - 870 614 l 1,37,-1 - 848 512 l 1,38,-1 - 473 512 l 1,39,-1 - 473 485 l 2,40,41 - 473 384 473 384 498.5 303.5 c 128,-1,42 - 524 223 524 223 566 176.5 c 128,-1,43 - 608 130 608 130 655.5 106 c 128,-1,44 - 703 82 703 82 752 82 c 0,45,46 - 926 82 926 82 1063 264 c 1,47,-1 - 1171 209 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: yen -Encoding: 165 165 320 -Width: 1075 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 43G<451 634> 274 102<371 514 713 831> 483 102<428 561 760 889> 1393 41G<414 609 1112 1327> -LayerCount: 2 -Fore -SplineSet -745 899 m 1,0,-1 - 1143 1434 l 1,1,-1 - 1327 1434 l 1,2,-1 - 788 709 l 1,3,-1 - 760 586 l 1,4,-1 - 913 586 l 1,5,-1 - 889 483 l 1,6,-1 - 737 483 l 1,7,-1 - 713 377 l 1,8,-1 - 856 377 l 1,9,-1 - 831 274 l 1,10,-1 - 688 274 l 1,11,-1 - 625 0 l 1,12,-1 - 451 0 l 1,13,-1 - 514 274 l 1,14,-1 - 346 274 l 1,15,-1 - 371 377 l 1,16,-1 - 537 377 l 1,17,-1 - 561 483 l 1,18,-1 - 403 483 l 1,19,-1 - 428 586 l 1,20,-1 - 586 586 l 1,21,-1 - 614 711 l 1,22,-1 - 414 1434 l 1,23,-1 - 598 1434 l 1,24,-1 - 745 899 l 1,0,-1 -EndSplineSet -EndChar - -StartChar: sterling -Encoding: 163 163 321 -Width: 903 -VWidth: 0 -Flags: W -HStem: 0 102<76 134 229 821> 696 102<332 358 537 727> 1169 102<654 887> -LayerCount: 2 -Fore -SplineSet -428 991 m 2,0,1 - 450 1087 450 1087 512.5 1153 c 128,-1,2 - 575 1219 575 1219 646.5 1245.5 c 128,-1,3 - 718 1272 718 1272 795 1272 c 0,4,5 - 926 1272 926 1272 983 1180 c 1,6,-1 - 838 1118 l 1,7,8 - 816 1169 816 1169 743 1169 c 0,9,10 - 681 1169 681 1169 637.5 1109.5 c 128,-1,11 - 594 1050 594 1050 565 924 c 2,12,-1 - 537 799 l 1,13,-1 - 752 799 l 1,14,-1 - 727 696 l 1,15,-1 - 512 696 l 1,16,-1 - 455 446 l 2,17,18 - 439 375 439 375 404 309 c 128,-1,19 - 369 243 369 243 331 200.5 c 128,-1,20 - 293 158 293 158 267 133.5 c 128,-1,21 - 241 109 241 109 229 102 c 1,22,-1 - 846 102 l 1,23,-1 - 821 0 l 1,24,-1 - 51 0 l 1,25,-1 - 76 102 l 1,26,27 - 96 102 96 102 142 154 c 128,-1,28 - 188 206 188 206 236 289.5 c 128,-1,29 - 284 373 284 373 301 446 c 2,30,-1 - 358 696 l 1,31,-1 - 276 696 l 1,32,-1 - 332 799 l 1,33,-1 - 383 799 l 1,34,-1 - 428 991 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: section -Encoding: 167 167 322 -Width: 808 -VWidth: 0 -Flags: W -HStem: -18 102<275 504> 1268 102<607 836> -VStem: 139 98<122 220> 287 150<573 811> 379 152<960 1188> 582 152<169 391> 674 150<537 779> 874 96<1132 1230> -LayerCount: 2 -Fore -SplineSet -733 307 m 0,0,1 - 733 269 733 269 719 226 c 128,-1,2 - 705 183 705 183 675 139.5 c 128,-1,3 - 645 96 645 96 603.5 61 c 128,-1,4 - 562 26 562 26 501 4 c 128,-1,5 - 440 -18 440 -18 371 -18 c 0,6,7 - 330 -18 330 -18 296.5 -8.5 c 128,-1,8 - 263 1 263 1 229 24.5 c 128,-1,9 - 195 48 195 48 172 97 c 128,-1,10 - 149 146 149 146 139 217 c 1,11,-1 - 238 238 l 1,12,13 - 241 211 241 211 244 195 c 128,-1,14 - 247 179 247 179 257.5 155 c 128,-1,15 - 268 131 268 131 283.5 118 c 128,-1,16 - 299 105 299 105 328 94.5 c 128,-1,17 - 357 84 357 84 397 84 c 0,18,19 - 447 84 447 84 486 111.5 c 128,-1,20 - 525 139 525 139 544.5 177.5 c 128,-1,21 - 564 216 564 216 573 248 c 128,-1,22 - 582 280 582 280 582 299 c 0,23,24 - 582 391 582 391 455 436 c 1,25,26 - 372 467 372 467 329.5 526.5 c 128,-1,27 - 287 586 287 586 287 662 c 0,28,29 - 287 719 287 719 316.5 793.5 c 128,-1,30 - 346 868 346 868 416 926 c 1,31,32 - 379 981 379 981 379 1044 c 0,33,34 - 379 1092 379 1092 402 1147 c 128,-1,35 - 425 1202 425 1202 467.5 1252.5 c 128,-1,36 - 510 1303 510 1303 581.5 1336.5 c 128,-1,37 - 653 1370 653 1370 739 1370 c 0,38,39 - 780 1370 780 1370 813.5 1360.5 c 128,-1,40 - 847 1351 847 1351 881 1327.5 c 128,-1,41 - 915 1304 915 1304 938 1255 c 128,-1,42 - 961 1206 961 1206 971 1135 c 1,43,-1 - 874 1114 l 1,44,45 - 871 1140 871 1140 867.5 1156.5 c 128,-1,46 - 864 1173 864 1173 853.5 1196.5 c 128,-1,47 - 843 1220 843 1220 827.5 1234 c 128,-1,48 - 812 1248 812 1248 782.5 1258 c 128,-1,49 - 753 1268 753 1268 713 1268 c 0,50,51 - 663 1268 663 1268 624 1240.5 c 128,-1,52 - 585 1213 585 1213 566.5 1174 c 128,-1,53 - 548 1135 548 1135 539 1103.5 c 128,-1,54 - 530 1072 530 1072 530 1053 c 0,55,56 - 530 960 530 960 655 915 c 1,57,58 - 738 883 738 883 780.5 824 c 128,-1,59 - 823 765 823 765 823 690 c 0,60,61 - 823 633 823 633 793.5 558.5 c 128,-1,62 - 764 484 764 484 694 426 c 1,63,64 - 733 368 733 368 733 307 c 0,0,1 -504 844 m 1,65,66 - 468 802 468 802 452 749.5 c 128,-1,67 - 436 697 436 697 436 662 c 0,68,69 - 436 632 436 632 444 612.5 c 128,-1,70 - 452 593 452 593 470 580 c 128,-1,71 - 488 567 488 567 506.5 559 c 128,-1,72 - 525 551 525 551 555 537 c 128,-1,73 - 585 523 585 523 608 508 c 1,74,75 - 644 549 644 549 659 601 c 128,-1,76 - 674 653 674 653 674 690 c 128,-1,77 - 674 727 674 727 659.5 750 c 128,-1,78 - 645 773 645 773 626 782.5 c 128,-1,79 - 607 792 607 792 569 809.5 c 128,-1,80 - 531 827 531 827 504 844 c 1,65,66 -EndSplineSet -Validated: 1 -EndChar - -StartChar: copyright -Encoding: 169 169 323 -Width: 1101 -VWidth: 0 -Flags: W -HStem: -20 82<444 693> 193 61<541 726> 733 61<620 818> 946 82<629 879> -VStem: 219 115<183 591> 389 92<298 592> 989 115<415 825> -LayerCount: 2 -Fore -SplineSet -764 946 m 0,0,1 - 690 946 690 946 612 896 c 128,-1,2 - 534 846 534 846 473 767 c 128,-1,3 - 412 688 412 688 373 582 c 128,-1,4 - 334 476 334 476 334 371 c 0,5,6 - 334 235 334 235 398.5 148 c 128,-1,7 - 463 61 463 61 559 61 c 0,8,9 - 633 61 633 61 711 111 c 128,-1,10 - 789 161 789 161 850 240 c 128,-1,11 - 911 319 911 319 950 425.5 c 128,-1,12 - 989 532 989 532 989 637 c 0,13,14 - 989 773 989 773 924.5 859.5 c 128,-1,15 - 860 946 860 946 764 946 c 0,0,1 -219 365 m 0,16,17 - 219 493 219 493 272.5 617 c 128,-1,18 - 326 741 326 741 408 830 c 128,-1,19 - 490 919 490 919 590.5 973.5 c 128,-1,20 - 691 1028 691 1028 782 1028 c 0,21,22 - 844 1028 844 1028 901.5 1001 c 128,-1,23 - 959 974 959 974 1004.5 926 c 128,-1,24 - 1050 878 1050 878 1077 804 c 128,-1,25 - 1104 730 1104 730 1104 643 c 0,26,27 - 1104 539 1104 539 1069 436.5 c 128,-1,28 - 1034 334 1034 334 975.5 253.5 c 128,-1,29 - 917 173 917 173 844 110.5 c 128,-1,30 - 771 48 771 48 692 14 c 128,-1,31 - 613 -20 613 -20 541 -20 c 0,32,33 - 479 -20 479 -20 421.5 7 c 128,-1,34 - 364 34 364 34 318.5 82 c 128,-1,35 - 273 130 273 130 246 204 c 128,-1,36 - 219 278 219 278 219 365 c 0,16,17 -717 733 m 0,37,38 - 662 733 662 733 615.5 701.5 c 128,-1,39 - 569 670 569 670 540.5 622.5 c 128,-1,40 - 512 575 512 575 496.5 522 c 128,-1,41 - 481 469 481 469 481 422 c 0,42,43 - 481 339 481 339 525.5 296.5 c 128,-1,44 - 570 254 570 254 623 254 c 0,45,46 - 653 254 653 254 678.5 261 c 128,-1,47 - 704 268 704 268 724.5 282.5 c 128,-1,48 - 745 297 745 297 754.5 306 c 128,-1,49 - 764 315 764 315 778 330 c 1,50,-1 - 840 299 l 1,51,52 - 734 193 734 193 596 193 c 0,53,54 - 515 193 515 193 452 249.5 c 128,-1,55 - 389 306 389 306 389 412 c 0,56,57 - 389 557 389 557 487 676 c 128,-1,58 - 585 795 585 795 719 795 c 0,59,60 - 811 795 811 795 857 773 c 128,-1,61 - 903 751 903 751 930 705 c 1,62,-1 - 840 670 l 1,63,64 - 827 700 827 700 800.5 716.5 c 128,-1,65 - 774 733 774 733 717 733 c 0,37,38 -EndSplineSet -Validated: 1 -EndChar - -StartChar: registered -Encoding: 174 174 324 -Width: 1101 -VWidth: 0 -Flags: W -HStem: -20 82<444 693> 469 61<578 660> 739 61<625 781> 946 82<629 879> -VStem: 219 115<183 591> 709 90<207 433> 791 90<559 736> 989 115<415 825> -LayerCount: 2 -Fore -SplineSet -764 946 m 0,0,1 - 690 946 690 946 612 896 c 128,-1,2 - 534 846 534 846 473 767 c 128,-1,3 - 412 688 412 688 373 582 c 128,-1,4 - 334 476 334 476 334 371 c 0,5,6 - 334 235 334 235 398.5 148 c 128,-1,7 - 463 61 463 61 559 61 c 0,8,9 - 633 61 633 61 711 111 c 128,-1,10 - 789 161 789 161 850 240 c 128,-1,11 - 911 319 911 319 950 425.5 c 128,-1,12 - 989 532 989 532 989 637 c 0,13,14 - 989 773 989 773 924.5 859.5 c 128,-1,15 - 860 946 860 946 764 946 c 0,0,1 -219 365 m 0,16,17 - 219 493 219 493 272.5 617 c 128,-1,18 - 326 741 326 741 408 830 c 128,-1,19 - 490 919 490 919 590.5 973.5 c 128,-1,20 - 691 1028 691 1028 782 1028 c 0,21,22 - 844 1028 844 1028 901.5 1001 c 128,-1,23 - 959 974 959 974 1004.5 926 c 128,-1,24 - 1050 878 1050 878 1077 804 c 128,-1,25 - 1104 730 1104 730 1104 643 c 0,26,27 - 1104 539 1104 539 1069 436.5 c 128,-1,28 - 1034 334 1034 334 975.5 253.5 c 128,-1,29 - 917 173 917 173 844 110.5 c 128,-1,30 - 771 48 771 48 692 14 c 128,-1,31 - 613 -20 613 -20 541 -20 c 0,32,33 - 479 -20 479 -20 421.5 7 c 128,-1,34 - 364 34 364 34 318.5 82 c 128,-1,35 - 273 130 273 130 246 204 c 128,-1,36 - 219 278 219 278 219 365 c 0,16,17 -881 670 m 0,37,38 - 881 614 881 614 841.5 561 c 128,-1,39 - 802 508 802 508 741 485 c 1,40,41 - 759 454 759 454 779 392 c 128,-1,42 - 799 330 799 330 799 268 c 0,43,44 - 799 247 799 247 791 207 c 1,45,-1 - 702 207 l 1,46,47 - 709 238 709 238 709 262 c 0,48,49 - 709 325 709 325 686.5 385.5 c 128,-1,50 - 664 446 664 446 639 469 c 1,51,-1 - 563 469 l 1,52,-1 - 502 207 l 1,53,-1 - 412 207 l 1,54,-1 - 549 801 l 1,55,-1 - 727 801 l 2,56,57 - 809 801 809 801 845 762.5 c 128,-1,58 - 881 724 881 724 881 670 c 0,37,38 -678 530 m 2,59,60 - 728 530 728 530 759.5 573.5 c 128,-1,61 - 791 617 791 617 791 666 c 0,62,63 - 791 739 791 739 725 739 c 2,64,-1 - 625 739 l 1,65,-1 - 578 530 l 1,66,-1 - 678 530 l 2,59,60 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ordfeminine -Encoding: 170 170 325 -Width: 624 -VWidth: 0 -Flags: W -HStem: 348 61<166 629> 516 61<337 507 578 662> 938 61<416 577> -VStem: 229 90<586 840> 508 96<585 819> 655 45<581 602> -LayerCount: 2 -Fore -SplineSet -166 410 m 1,0,-1 - 643 410 l 1,1,-1 - 629 348 l 1,2,-1 - 152 348 l 1,3,-1 - 166 410 l 1,0,-1 -229 686 m 0,4,5 - 229 801 229 801 316 900 c 128,-1,6 - 403 999 403 999 500 999 c 0,7,8 - 514 999 514 999 527.5 998.5 c 128,-1,9 - 541 998 541 998 553.5 995.5 c 128,-1,10 - 566 993 566 993 575 991.5 c 128,-1,11 - 584 990 584 990 595.5 986.5 c 128,-1,12 - 607 983 607 983 613.5 981 c 128,-1,13 - 620 979 620 979 631.5 974 c 128,-1,14 - 643 969 643 969 646.5 967.5 c 128,-1,15 - 650 966 650 966 662 960.5 c 128,-1,16 - 674 955 674 955 676 954 c 1,17,-1 - 610 672 l 2,18,19 - 604 645 604 645 604 625 c 0,20,21 - 604 603 604 603 609 590.5 c 128,-1,22 - 614 578 614 578 621 578 c 0,23,24 - 649 578 649 578 655 602 c 1,25,-1 - 700 602 l 1,26,27 - 690 560 690 560 658 538 c 128,-1,28 - 626 516 626 516 592 516 c 0,29,30 - 555 516 555 516 526 549 c 1,31,32 - 445 516 445 516 375 516 c 0,33,34 - 308 516 308 516 268.5 564 c 128,-1,35 - 229 612 229 612 229 686 c 0,4,5 -502 938 m 0,36,37 - 461 938 461 938 427.5 916.5 c 128,-1,38 - 394 895 394 895 374.5 863.5 c 128,-1,39 - 355 832 355 832 342 794 c 128,-1,40 - 329 756 329 756 324 726 c 128,-1,41 - 319 696 319 696 319 674 c 0,42,43 - 319 578 319 578 406 578 c 0,44,45 - 453 578 453 578 508 600 c 1,46,47 - 506 614 506 614 510 639 c 1,48,-1 - 578 928 l 1,49,50 - 548 938 548 938 502 938 c 0,36,37 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ordmasculine -Encoding: 186 186 326 -Width: 620 -VWidth: 0 -Flags: W -HStem: 348 61<166 629> 516 61<371 531> 938 61<450 599> -VStem: 250 94<594 840> 627 92<670 923> -LayerCount: 2 -Fore -SplineSet -166 410 m 1,0,-1 - 643 410 l 1,1,-1 - 629 348 l 1,2,-1 - 152 348 l 1,3,-1 - 166 410 l 1,0,-1 -451 578 m 0,4,5 - 524 578 524 578 575.5 657 c 128,-1,6 - 627 736 627 736 627 819 c 0,7,8 - 627 873 627 873 602.5 905.5 c 128,-1,9 - 578 938 578 938 535 938 c 0,10,11 - 462 938 462 938 403 863 c 128,-1,12 - 344 788 344 788 344 688 c 0,13,14 - 344 578 344 578 451 578 c 0,4,5 -719 831 m 0,15,16 - 719 795 719 795 710 755.5 c 128,-1,17 - 701 716 701 716 678.5 672.5 c 128,-1,18 - 656 629 656 629 623 595 c 128,-1,19 - 590 561 590 561 537 538.5 c 128,-1,20 - 484 516 484 516 420 516 c 0,21,22 - 338 516 338 516 294 560 c 128,-1,23 - 250 604 250 604 250 682 c 0,24,25 - 250 750 250 750 276.5 810.5 c 128,-1,26 - 303 871 303 871 344.5 911.5 c 128,-1,27 - 386 952 386 952 436 975.5 c 128,-1,28 - 486 999 486 999 532 999 c 0,29,30 - 620 999 620 999 669.5 956 c 128,-1,31 - 719 913 719 913 719 831 c 0,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: guilsinglright -Encoding: 8250 8250 327 -Width: 589 -VWidth: 0 -Flags: W -VStem: 131 461 -LayerCount: 2 -Fore -SplineSet -481 451 m 1,0,-1 - 283 778 l 1,1,-1 - 369 817 l 1,2,-1 - 592 451 l 1,3,-1 - 201 86 l 1,4,-1 - 131 125 l 1,5,-1 - 481 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: guilsinglleft -Encoding: 8249 8249 328 -Width: 589 -VWidth: 0 -Flags: W -VStem: 207 461 -LayerCount: 2 -Fore -SplineSet -317 453 m 1,0,-1 - 516 125 l 1,1,-1 - 430 86 l 1,2,-1 - 207 453 l 1,3,-1 - 598 817 l 1,4,-1 - 668 778 l 1,5,-1 - 317 453 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: guillemotleft -Encoding: 171 171 329 -Width: 856 -VWidth: 0 -Flags: W -VStem: 207 461 453 461 -LayerCount: 2 -Fore -Refer: 328 8249 N 1 0 0 1 246 0 2 -Refer: 328 8249 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: guillemotright -Encoding: 187 187 330 -Width: 856 -VWidth: 0 -Flags: W -VStem: 131 461 377 461 -LayerCount: 2 -Fore -Refer: 327 8250 N 1 0 0 1 246 0 2 -Refer: 327 8250 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: quoteleft -Encoding: 8216 8216 331 -Width: 356 -VWidth: 0 -Flags: W -HStem: 985 367 -VStem: 319 147<985 1058> -LayerCount: 2 -Fore -SplineSet -557 1352 m 1,0,1 - 469 1258 469 1258 469 1161 c 0,2,3 - 469 1146 469 1146 472 1113 c 128,-1,4 - 475 1080 475 1080 475 1059 c 0,5,6 - 475 1021 475 1021 467 985 c 1,7,-1 - 319 985 l 1,8,9 - 334 1049 334 1049 350.5 1102 c 128,-1,10 - 367 1155 367 1155 377.5 1185 c 128,-1,11 - 388 1215 388 1215 407.5 1248.5 c 128,-1,12 - 427 1282 427 1282 432.5 1290.5 c 128,-1,13 - 438 1299 438 1299 459.5 1325 c 128,-1,14 - 481 1351 481 1351 481 1352 c 1,15,-1 - 557 1352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quoteright -Encoding: 8217 8217 332 -Width: 356 -VWidth: 0 -Flags: W -HStem: 985 367 -VStem: 410 147<1279 1352> -LayerCount: 2 -Fore -SplineSet -319 985 m 1,0,1 - 408 1081 408 1081 408 1176 c 0,2,3 - 408 1190 408 1190 404.5 1224 c 128,-1,4 - 401 1258 401 1258 401 1278 c 0,5,6 - 401 1312 401 1312 410 1352 c 1,7,-1 - 557 1352 l 1,8,9 - 542 1288 542 1288 525.5 1235 c 128,-1,10 - 509 1182 509 1182 498.5 1152 c 128,-1,11 - 488 1122 488 1122 468.5 1088.5 c 128,-1,12 - 449 1055 449 1055 443.5 1046.5 c 128,-1,13 - 438 1038 438 1038 416.5 1012 c 128,-1,14 - 395 986 395 986 395 985 c 1,15,-1 - 319 985 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: quotedblleft -Encoding: 8220 8220 333 -Width: 602 -VWidth: 0 -Flags: W -HStem: 985 367 -VStem: 319 147<985 1058> 565 147<985 1058> -LayerCount: 2 -Fore -Refer: 331 8216 N 1 0 0 1 246 0 2 -Refer: 331 8216 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: quotedblright -Encoding: 8221 8221 334 -Width: 602 -VWidth: 0 -Flags: W -HStem: 985 367 -VStem: 410 147<1279 1352> 655 147<1279 1352> -LayerCount: 2 -Fore -Refer: 332 8217 N 1 0 0 1 246 0 2 -Refer: 332 8217 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: quotesinglbase -Encoding: 8218 8218 335 -Width: 356 -VWidth: 0 -Flags: W -HStem: -203 367 -VStem: 145 147<91 164> -LayerCount: 2 -Fore -Refer: 332 8217 N 1 0 0 1 -264 -1188 2 -Validated: 1 -EndChar - -StartChar: quotedblbase -Encoding: 8222 8222 336 -Width: 602 -VWidth: 0 -Flags: W -HStem: -203 367 -VStem: 145 147<91 164> 391 147<91 164> -LayerCount: 2 -Fore -Refer: 334 8221 N 1 0 0 1 -264 -1188 2 -Validated: 1 -EndChar - -StartChar: ellipsis -Encoding: 8230 8230 337 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 164<129 256 477 604 825 952> -VStem: 92 201 440 201 788 201 -CounterMasks: 1 70 -LayerCount: 2 -Fore -Refer: 54 46 N 1 0 0 1 696 0 2 -Refer: 54 46 N 1 0 0 1 348 0 2 -Refer: 54 46 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: bullet -Encoding: 8226 8226 338 -Width: 620 -VWidth: 0 -Flags: W -HStem: 287 483<347 522> -VStem: 197 469<441 612> -LayerCount: 2 -Fore -SplineSet -666 602 m 0,0,1 - 666 566 666 566 657 526.5 c 128,-1,2 - 648 487 648 487 625.5 443.5 c 128,-1,3 - 603 400 603 400 570 366 c 128,-1,4 - 537 332 537 332 484 309.5 c 128,-1,5 - 431 287 431 287 367 287 c 0,6,7 - 285 287 285 287 241 331 c 128,-1,8 - 197 375 197 375 197 453 c 0,9,10 - 197 521 197 521 223.5 581.5 c 128,-1,11 - 250 642 250 642 291.5 682.5 c 128,-1,12 - 333 723 333 723 383 746.5 c 128,-1,13 - 433 770 433 770 479 770 c 0,14,15 - 567 770 567 770 616.5 727 c 128,-1,16 - 666 684 666 684 666 602 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: endash -Encoding: 8211 8211 339 -Width: 802 -VWidth: 0 -Flags: W -HStem: 348 102<186 801> -VStem: 162 664 -LayerCount: 2 -Fore -SplineSet -186 451 m 1,0,-1 - 825 451 l 1,1,-1 - 801 348 l 1,2,-1 - 162 348 l 1,3,-1 - 186 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: emdash -Encoding: 8212 8212 340 -Width: 1110 -VWidth: 0 -Flags: W -HStem: 348 102<186 1108> -LayerCount: 2 -Fore -SplineSet -186 451 m 1,0,-1 - 1133 451 l 1,1,-1 - 1108 348 l 1,2,-1 - 162 348 l 1,3,-1 - 186 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00AD -Encoding: 173 173 341 -Width: 649 -VWidth: 0 -Flags: W -HStem: 348 102<186 647> -VStem: 162 510 -LayerCount: 2 -Fore -Refer: 82 45 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: degree -Encoding: 176 176 342 -Width: 577 -VWidth: 0 -Flags: W -HStem: 1010 96<478 630> 1286 96<500 652> -VStem: 373 100<1111 1260> 657 98<1132 1281> -LayerCount: 2 -Fore -SplineSet -586 1286 m 0,0,1 - 546 1286 546 1286 509.5 1253.5 c 128,-1,2 - 473 1221 473 1221 473 1176 c 0,3,4 - 473 1146 473 1146 493 1126 c 128,-1,5 - 513 1106 513 1106 545 1106 c 0,6,7 - 584 1106 584 1106 620.5 1139 c 128,-1,8 - 657 1172 657 1172 657 1217 c 0,9,10 - 657 1247 657 1247 637.5 1266.5 c 128,-1,11 - 618 1286 618 1286 586 1286 c 0,0,1 -373 1155 m 0,12,13 - 373 1242 373 1242 445.5 1312 c 128,-1,14 - 518 1382 518 1382 608 1382 c 0,15,16 - 673 1382 673 1382 714.5 1340.5 c 128,-1,17 - 756 1299 756 1299 756 1237 c 0,18,19 - 756 1150 756 1150 684 1080 c 128,-1,20 - 612 1010 612 1010 522 1010 c 0,21,22 - 457 1010 457 1010 415 1051.5 c 128,-1,23 - 373 1093 373 1093 373 1155 c 0,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: currency -Encoding: 164 164 343 -Width: 724 -VWidth: 0 -Flags: W -HStem: 248 96<366 533> 561 96<401 568> -VStem: 256 100<354 522> 578 100<383 551> -LayerCount: 2 -Fore -SplineSet -492 561 m 0,0,1 - 444 561 444 561 400 521 c 128,-1,2 - 356 481 356 481 356 428 c 0,3,4 - 356 392 356 392 380 368 c 128,-1,5 - 404 344 404 344 442 344 c 0,6,7 - 490 344 490 344 534 384 c 128,-1,8 - 578 424 578 424 578 477 c 0,9,10 - 578 513 578 513 554 537 c 128,-1,11 - 530 561 530 561 492 561 c 0,0,1 -266 348 m 1,12,13 - 256 378 256 378 256 408 c 0,14,15 - 256 485 256 485 315 557 c 1,16,-1 - 236 662 l 1,17,-1 - 324 733 l 1,18,-1 - 403 629 l 1,19,20 - 457 657 457 657 514 657 c 0,21,22 - 570 657 570 657 612 629 c 1,23,-1 - 741 733 l 1,24,-1 - 797 662 l 1,25,-1 - 668 557 l 1,26,27 - 678 527 678 527 678 498 c 0,28,29 - 678 421 678 421 618 348 c 1,30,-1 - 698 244 l 1,31,-1 - 610 172 l 1,32,-1 - 530 276 l 1,33,34 - 476 248 476 248 420 248 c 128,-1,35 - 364 248 364 248 322 276 c 1,36,-1 - 193 172 l 1,37,-1 - 137 244 l 1,38,-1 - 266 348 l 1,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: macron -Encoding: 175 175 344 -Width: 614 -VWidth: 0 -Flags: W -HStem: 1270 82<383 836> -VStem: 365 489 -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 905 0 2 -Validated: 1 -EndChar - -StartChar: acute -Encoding: 180 180 345 -Width: 493 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: 375 406 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 768 0 2 -Validated: 1 -EndChar - -StartChar: periodcentered -Encoding: 183 183 346 -Width: 288 -VWidth: 0 -Flags: W -HStem: 383 150<193 307> -VStem: 158 184 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 530 -887 2 -Validated: 1 -EndChar - -StartChar: logicalnot -Encoding: 172 172 347 -Width: 696 -VWidth: 0 -Flags: W -HStem: 348 102<186 612> -VStem: 162 557 -LayerCount: 2 -Fore -SplineSet -186 451 m 1,0,-1 - 719 451 l 1,1,-1 - 659 195 l 1,2,-1 - 578 195 l 1,3,-1 - 612 348 l 1,4,-1 - 162 348 l 1,5,-1 - 186 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: plusminus -Encoding: 177 177 348 -Width: 856 -VWidth: 0 -Flags: W -HStem: 53 102<119 786> 453 102<211 481 608 879> -LayerCount: 2 -Fore -SplineSet -119 156 m 1,0,-1 - 811 156 l 1,1,-1 - 786 53 l 1,2,-1 - 94 53 l 1,3,-1 - 119 156 l 1,0,-1 -584 453 m 1,4,-1 - 539 260 l 1,5,-1 - 436 260 l 1,6,-1 - 481 453 l 1,7,-1 - 186 453 l 1,8,-1 - 211 555 l 1,9,-1 - 506 555 l 1,10,-1 - 549 748 l 1,11,-1 - 651 748 l 1,12,-1 - 608 555 l 1,13,-1 - 903 555 l 1,14,-1 - 879 453 l 1,15,-1 - 584 453 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B5 -Encoding: 181 181 349 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<395 676 892 1055> 860 41G<281 455 918 1092> -VStem: 1057 70<93 131> -LayerCount: 2 -Fore -SplineSet -946 276 m 2,0,1 - 936 232 936 232 936 182 c 0,2,3 - 936 82 936 82 979 82 c 0,4,5 - 1007 82 1007 82 1029.5 96.5 c 128,-1,6 - 1052 111 1052 111 1057 131 c 1,7,-1 - 1126 131 l 1,8,9 - 1113 68 1113 68 1055 24 c 128,-1,10 - 997 -20 997 -20 928 -20 c 0,11,12 - 875 -20 875 -20 835 6.5 c 128,-1,13 - 795 33 795 33 776 78 c 1,14,15 - 709 32 709 32 627 6 c 128,-1,16 - 545 -20 545 -20 475 -20 c 0,17,18 - 333 -20 333 -20 254 37 c 1,19,-1 - 178 -293 l 1,20,-1 - 14 -293 l 1,21,-1 - 291 901 l 1,22,-1 - 455 901 l 1,23,-1 - 354 467 l 1,24,25 - 332 368 332 368 332 305 c 0,26,27 - 332 188 332 188 384.5 135 c 128,-1,28 - 437 82 437 82 528 82 c 0,29,30 - 652 82 652 82 764 188 c 1,31,32 - 765 192 765 192 766 200.5 c 128,-1,33 - 767 209 767 209 768 213 c 2,34,-1 - 928 901 l 1,35,-1 - 1092 901 l 1,36,-1 - 946 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: divide -Encoding: 247 247 350 -Width: 710 -VWidth: 0 -Flags: W -HStem: 117 150<336 451> 348 102<186 709> 532 150<432 547> -VStem: 162 571 -CounterMasks: 1 e0 -LayerCount: 2 -Fore -SplineSet -336 266 m 1,0,-1 - 485 266 l 1,1,-1 - 451 117 l 1,2,-1 - 301 117 l 1,3,-1 - 336 266 l 1,0,-1 -432 682 m 1,4,-1 - 582 682 l 1,5,-1 - 547 532 l 1,6,-1 - 397 532 l 1,7,-1 - 432 682 l 1,4,-1 -186 451 m 1,8,-1 - 733 451 l 1,9,-1 - 709 348 l 1,10,-1 - 162 348 l 1,11,-1 - 186 451 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: paragraph -Encoding: 182 182 351 -Width: 995 -VWidth: 0 -Flags: W -HStem: 0 43G<518 650 772 904> 655 102<548 670> 1331 102<660 825 948 1079> -VStem: 313 174<816 1138> -LayerCount: 2 -Fore -SplineSet -803 1331 m 2,0,1 - 735 1331 735 1331 674.5 1297 c 128,-1,2 - 614 1263 614 1263 574 1209 c 128,-1,3 - 534 1155 534 1155 510.5 1089.5 c 128,-1,4 - 487 1024 487 1024 487 961 c 0,5,6 - 487 875 487 875 531 816.5 c 128,-1,7 - 575 758 575 758 670 758 c 2,8,-1 - 692 758 l 1,9,-1 - 825 1331 l 1,10,-1 - 803 1331 l 2,0,1 -1079 1331 m 1,11,-1 - 948 1331 l 1,12,-1 - 641 0 l 1,13,-1 - 518 0 l 1,14,-1 - 670 655 l 1,15,16 - 574 656 574 656 502.5 683.5 c 128,-1,17 - 431 711 431 711 391 756 c 128,-1,18 - 351 801 351 801 332 853 c 128,-1,19 - 313 905 313 905 313 963 c 0,20,21 - 313 1024 313 1024 334.5 1088.5 c 128,-1,22 - 356 1153 356 1153 401.5 1215 c 128,-1,23 - 447 1277 447 1277 509.5 1325.5 c 128,-1,24 - 572 1374 572 1374 660.5 1404 c 128,-1,25 - 749 1434 749 1434 850 1434 c 2,26,-1 - 1227 1434 l 1,27,-1 - 895 0 l 1,28,-1 - 772 0 l 1,29,-1 - 1079 1331 l 1,11,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B9 -Encoding: 185 185 352 -Width: 321 -VWidth: 0 -Flags: W -HStem: 1282 66<393 436> -VStem: 313 242 -LayerCount: 2 -Fore -SplineSet -555 1366 m 1,0,-1 - 414 754 l 1,1,-1 - 313 754 l 1,2,-1 - 436 1288 l 1,3,-1 - 379 1282 l 1,4,-1 - 393 1348 l 1,5,-1 - 555 1366 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B2 -Encoding: 178 178 353 -Width: 559 -VWidth: 0 -Flags: W -HStem: 752 66<373 651> 1292 66<487 637> -VStem: 649 100<1106 1287> -LayerCount: 2 -Fore -SplineSet -258 752 m 1,0,1 - 272 810 272 810 301 857 c 128,-1,2 - 330 904 330 904 365.5 934 c 128,-1,3 - 401 964 401 964 440.5 989 c 128,-1,4 - 480 1014 480 1014 516.5 1036 c 128,-1,5 - 553 1058 553 1058 583 1081.5 c 128,-1,6 - 613 1105 613 1105 631 1138.5 c 128,-1,7 - 649 1172 649 1172 649 1214 c 0,8,9 - 649 1253 649 1253 628.5 1272.5 c 128,-1,10 - 608 1292 608 1292 578 1292 c 0,11,12 - 493 1292 493 1292 442 1204 c 1,13,-1 - 367 1235 l 1,14,15 - 457 1358 457 1358 610 1358 c 0,16,17 - 673 1358 673 1358 711.5 1320.5 c 128,-1,18 - 750 1283 750 1283 750 1221 c 0,19,20 - 750 1158 750 1158 715.5 1109 c 128,-1,21 - 681 1060 681 1060 629.5 1027.5 c 128,-1,22 - 578 995 578 995 525.5 966.5 c 128,-1,23 - 473 938 473 938 429 900 c 128,-1,24 - 385 862 385 862 373 817 c 1,25,-1 - 666 817 l 1,26,-1 - 651 752 l 1,27,-1 - 258 752 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni00B3 -Encoding: 179 179 354 -Width: 583 -VWidth: 0 -Flags: W -HStem: 741 68<393 559> 1034 66<492 592> 1290 68<500 652> -VStem: 283 88<824 871> 616 102<853 1016> 659 100<1133 1285> -LayerCount: 2 -Fore -SplineSet -492 1100 m 1,0,1 - 542 1100 542 1100 577 1112 c 128,-1,2 - 612 1124 612 1124 628.5 1143.5 c 128,-1,3 - 645 1163 645 1163 652 1182.5 c 128,-1,4 - 659 1202 659 1202 659 1223 c 0,5,6 - 659 1257 659 1257 637.5 1273.5 c 128,-1,7 - 616 1290 616 1290 584 1290 c 0,8,9 - 553 1290 553 1290 529 1277 c 128,-1,10 - 505 1264 505 1264 492.5 1249.5 c 128,-1,11 - 480 1235 480 1235 459 1204 c 1,12,-1 - 385 1235 l 1,13,14 - 427 1293 427 1293 480.5 1325.5 c 128,-1,15 - 534 1358 534 1358 616 1358 c 0,16,17 - 680 1358 680 1358 720 1318 c 128,-1,18 - 760 1278 760 1278 760 1223 c 0,19,20 - 760 1122 760 1122 651 1067 c 1,21,22 - 719 1027 719 1027 719 958 c 0,23,24 - 719 872 719 872 646.5 806.5 c 128,-1,25 - 574 741 574 741 475 741 c 0,26,27 - 315 741 315 741 283 866 c 1,28,-1 - 371 897 l 1,29,30 - 375 860 375 860 398.5 834.5 c 128,-1,31 - 422 809 422 809 473 809 c 0,32,33 - 517 809 517 809 566.5 847 c 128,-1,34 - 616 885 616 885 616 944 c 0,35,36 - 616 1034 616 1034 477 1034 c 1,37,-1 - 492 1100 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: threequarters -Encoding: 190 190 355 -Width: 1081 -VWidth: 0 -Flags: W -HStem: 0 43G<731 841> 131 66<610 762 877 924> 741 68<393 559> 1034 66<492 592> 1290 68<500 652> -VStem: 283 88<824 871> 616 102<853 1016> 659 100<1133 1285> -LayerCount: 2 -Fore -SplineSet -492 1100 m 1,0,1 - 542 1100 542 1100 577 1112 c 128,-1,2 - 612 1124 612 1124 628.5 1143.5 c 128,-1,3 - 645 1163 645 1163 652 1182.5 c 128,-1,4 - 659 1202 659 1202 659 1223 c 0,5,6 - 659 1257 659 1257 637.5 1273.5 c 128,-1,7 - 616 1290 616 1290 584 1290 c 0,8,9 - 553 1290 553 1290 529 1277 c 128,-1,10 - 505 1264 505 1264 492.5 1249.5 c 128,-1,11 - 480 1235 480 1235 459 1204 c 1,12,-1 - 385 1235 l 1,13,14 - 427 1293 427 1293 480.5 1325.5 c 128,-1,15 - 534 1358 534 1358 616 1358 c 0,16,17 - 680 1358 680 1358 720 1318 c 128,-1,18 - 760 1278 760 1278 760 1223 c 0,19,20 - 760 1122 760 1122 651 1067 c 1,21,22 - 719 1027 719 1027 719 958 c 0,23,24 - 719 872 719 872 646.5 806.5 c 128,-1,25 - 574 741 574 741 475 741 c 0,26,27 - 315 741 315 741 283 866 c 1,28,-1 - 371 897 l 1,29,30 - 375 860 375 860 398.5 834.5 c 128,-1,31 - 422 809 422 809 473 809 c 0,32,33 - 517 809 517 809 566.5 847 c 128,-1,34 - 616 885 616 885 616 944 c 0,35,36 - 616 1034 616 1034 477 1034 c 1,37,-1 - 492 1100 l 1,0,1 -143 264 m 1,38,-1 - 1083 1047 l 1,39,-1 - 1241 1047 l 1,40,-1 - 301 264 l 1,41,-1 - 143 264 l 1,38,-1 -512 174 m 1,42,-1 - 872 606 l 1,43,-1 - 971 606 l 1,44,-1 - 877 197 l 1,45,-1 - 938 197 l 1,46,-1 - 924 131 l 1,47,-1 - 862 131 l 1,48,-1 - 831 0 l 1,49,-1 - 731 0 l 1,50,-1 - 762 131 l 1,51,-1 - 502 131 l 1,52,-1 - 512 174 l 1,42,-1 -840 473 m 1,53,-1 - 610 197 l 1,54,-1 - 776 197 l 1,55,-1 - 840 473 l 1,53,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: onequarter -Encoding: 188 188 356 -Width: 1081 -VWidth: 0 -Flags: W -HStem: 0 43G<731 841> 131 66<610 762 877 924> 1282 66<571 614> -LayerCount: 2 -Fore -SplineSet -733 1366 m 1,0,-1 - 592 754 l 1,1,-1 - 492 754 l 1,2,-1 - 614 1288 l 1,3,-1 - 557 1282 l 1,4,-1 - 571 1348 l 1,5,-1 - 733 1366 l 1,0,-1 -143 264 m 1,6,-1 - 1083 1047 l 1,7,-1 - 1241 1047 l 1,8,-1 - 301 264 l 1,9,-1 - 143 264 l 1,6,-1 -512 174 m 1,10,-1 - 872 606 l 1,11,-1 - 971 606 l 1,12,-1 - 877 197 l 1,13,-1 - 938 197 l 1,14,-1 - 924 131 l 1,15,-1 - 862 131 l 1,16,-1 - 831 0 l 1,17,-1 - 731 0 l 1,18,-1 - 762 131 l 1,19,-1 - 502 131 l 1,20,-1 - 512 174 l 1,10,-1 -840 473 m 1,21,-1 - 610 197 l 1,22,-1 - 776 197 l 1,23,-1 - 840 473 l 1,21,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: onehalf -Encoding: 189 189 357 -Width: 1085 -VWidth: 0 -Flags: W -HStem: 0 66<725 1004> 541 66<839 990> 1282 66<571 614> -VStem: 1001 100<355 535> -LayerCount: 2 -Fore -SplineSet -733 1366 m 1,0,-1 - 592 754 l 1,1,-1 - 492 754 l 1,2,-1 - 614 1288 l 1,3,-1 - 557 1282 l 1,4,-1 - 571 1348 l 1,5,-1 - 733 1366 l 1,0,-1 -143 264 m 1,6,-1 - 1083 1047 l 1,7,-1 - 1241 1047 l 1,8,-1 - 301 264 l 1,9,-1 - 143 264 l 1,6,-1 -610 0 m 1,10,11 - 624 58 624 58 653 105 c 128,-1,12 - 682 152 682 152 717.5 182 c 128,-1,13 - 753 212 753 212 792.5 237.5 c 128,-1,14 - 832 263 832 263 868.5 284.5 c 128,-1,15 - 905 306 905 306 935 330 c 128,-1,16 - 965 354 965 354 983 387.5 c 128,-1,17 - 1001 421 1001 421 1001 463 c 0,18,19 - 1001 502 1001 502 980.5 521.5 c 128,-1,20 - 960 541 960 541 930 541 c 0,21,22 - 846 541 846 541 795 453 c 1,23,-1 - 719 483 l 1,24,25 - 809 606 809 606 963 606 c 0,26,27 - 1026 606 1026 606 1064 568.5 c 128,-1,28 - 1102 531 1102 531 1102 469 c 0,29,30 - 1102 406 1102 406 1067.5 357 c 128,-1,31 - 1033 308 1033 308 981.5 276 c 128,-1,32 - 930 244 930 244 877.5 215.5 c 128,-1,33 - 825 187 825 187 781 149 c 128,-1,34 - 737 111 737 111 725 66 c 1,35,-1 - 1018 66 l 1,36,-1 - 1004 0 l 1,37,-1 - 610 0 l 1,10,11 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii00208 -Encoding: 8213 8213 358 -Width: 1384 -VWidth: 0 -Flags: W -HStem: 348 102<186 1382> -LayerCount: 2 -Fore -SplineSet -186 451 m 1,0,-1 - 1407 451 l 1,1,-1 - 1382 348 l 1,2,-1 - 162 348 l 1,3,-1 - 186 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Scommaaccent -Encoding: 536 536 359 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -401 49<360 541> -164 57<492 580> -20 102<495 829> 1352 102<765 1066> -VStem: 207 166<209 350> 430 180<951 1185> 606 129<-312 -181> 1024 176<277 545> -AnchorPoint: "top" 926 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1188 0 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: scommaaccent -Encoding: 537 537 360 -Width: 860 -VWidth: 0 -Flags: W -HStem: -401 49<184 365> -164 57<315 404> -20 102<279 603> 819 102<467 723> -VStem: 252 166<581 768> 430 129<-312 -181> 688 168<168 375> -AnchorPoint: "top" 621 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1012 0 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021A -Encoding: 538 538 361 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -401 49<381 562> -164 57<512 600> 0 43<532 716> 1331 102<352 840 1014 1526> -VStem: 627 129<-312 -181> -AnchorPoint: "top" 954 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 1208 0 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021B -Encoding: 539 539 362 -Width: 577 -VWidth: 0 -Flags: W -HStem: -397 49<156 337> -160 57<287 375> -20 102<346 523> 799 102<291 371 559 696> -VStem: 229 174<85 272> 401 129<-308 -177> 524 70<93 131> -AnchorPoint: "top" 582 1352 basechar 0 -LayerCount: 2 -Fore -Refer: 108 806 N 1 0 0 1 983 4 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: longs -Encoding: 383 383 363 -Width: 731 -VWidth: 0 -Flags: W -HStem: 0 43G<92 266> 1270 102<579 874> -LayerCount: 2 -Fore -SplineSet -92 0 m 1,0,-1 - 291 864 l 2,1,2 - 317 978 317 978 336 1045 c 128,-1,3 - 355 1112 355 1112 384 1176.5 c 128,-1,4 - 413 1241 413 1241 444.5 1273 c 128,-1,5 - 476 1305 476 1305 527.5 1330.5 c 128,-1,6 - 579 1356 579 1356 642.5 1364 c 128,-1,7 - 706 1372 706 1372 799 1372 c 0,8,9 - 852 1372 852 1372 903 1357.5 c 128,-1,10 - 954 1343 954 1343 985.5 1327 c 128,-1,11 - 1017 1311 1017 1311 1069 1280 c 1,12,-1 - 942 1174 l 1,13,14 - 877 1227 877 1227 835.5 1248.5 c 128,-1,15 - 794 1270 794 1270 743 1270 c 0,16,17 - 693 1270 693 1270 658.5 1263.5 c 128,-1,18 - 624 1257 624 1257 598.5 1242 c 128,-1,19 - 573 1227 573 1227 556.5 1204.5 c 128,-1,20 - 540 1182 540 1182 527 1148 c 128,-1,21 - 514 1114 514 1114 503.5 1072.5 c 128,-1,22 - 493 1031 493 1031 481 974 c 0,23,24 - 472 932 472 932 467 909 c 2,25,-1 - 256 0 l 1,26,-1 - 92 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ydieresis -Encoding: 255 255 364 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<133 262> 860 41<270 425 901 1090> 1085 150<520 635 848 963> -VStem: 485 184 813 184 -AnchorPoint: "ogonek" 631 0 basechar 0 -AnchorPoint: "bottom" 299 -315 basechar 0 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1022 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uniFB00 -Encoding: 64256 64256 365 -Width: 1191 -VWidth: 0 -Flags: W -HStem: -276 102<36 145 619 729> 799 102<311 391 580 975 1163 1300> 1270 102<687 874 1270 1458> -VStem: -39 74<-172 -125> 545 74<-172 -125> -LayerCount: 2 -Fore -SplineSet -256 799 m 1,0,-1 - 311 901 l 1,1,-1 - 416 901 l 1,2,-1 - 461 1096 l 2,3,4 - 491 1222 491 1222 575 1297 c 128,-1,5 - 659 1372 659 1372 780 1372 c 0,6,7 - 865 1372 865 1372 920 1350 c 1,8,-1 - 852 1239 l 1,9,10 - 833 1270 833 1270 786 1270 c 0,11,12 - 722 1270 722 1270 682 1221 c 128,-1,13 - 642 1172 642 1172 612 1042 c 2,14,-1 - 580 901 l 1,15,-1 - 999 901 l 1,16,-1 - 1044 1096 l 2,17,18 - 1074 1222 1074 1222 1158.5 1297 c 128,-1,19 - 1243 1372 1243 1372 1364 1372 c 0,20,21 - 1448 1372 1448 1372 1503 1350 c 1,22,-1 - 1436 1239 l 1,23,24 - 1417 1270 1417 1270 1370 1270 c 0,25,26 - 1306 1270 1306 1270 1266 1221 c 128,-1,27 - 1226 1172 1226 1172 1196 1042 c 2,28,-1 - 1163 901 l 1,29,-1 - 1325 901 l 1,30,-1 - 1300 799 l 1,31,-1 - 1139 799 l 1,32,-1 - 944 -43 l 2,33,34 - 921 -140 921 -140 843.5 -208 c 128,-1,35 - 766 -276 766 -276 678 -276 c 0,36,37 - 618 -276 618 -276 581.5 -242.5 c 128,-1,38 - 545 -209 545 -209 545 -156 c 0,39,40 - 545 -145 545 -145 549 -125 c 1,41,-1 - 618 -125 l 1,42,-1 - 618 -133 l 2,43,44 - 618 -151 618 -151 633 -162.5 c 128,-1,45 - 648 -174 648 -174 672 -174 c 0,46,47 - 703 -174 703 -174 739.5 -116.5 c 128,-1,48 - 776 -59 776 -59 795 20 c 2,49,-1 - 975 799 l 1,50,-1 - 555 799 l 1,51,-1 - 360 -43 l 2,52,53 - 337 -140 337 -140 259.5 -208 c 128,-1,54 - 182 -276 182 -276 94 -276 c 0,55,56 - 34 -276 34 -276 -2.5 -242.5 c 128,-1,57 - -39 -209 -39 -209 -39 -156 c 0,58,59 - -39 -145 -39 -145 -35 -125 c 1,60,-1 - 35 -125 l 1,61,-1 - 35 -133 l 2,62,63 - 35 -151 35 -151 49.5 -162.5 c 128,-1,64 - 64 -174 64 -174 88 -174 c 0,65,66 - 119 -174 119 -174 155.5 -116.5 c 128,-1,67 - 192 -59 192 -59 211 20 c 2,68,-1 - 391 799 l 1,69,-1 - 256 799 l 1,0,-1 -EndSplineSet -Validated: 1 -LCarets2: 1 0 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f f -EndChar - -StartChar: fi -Encoding: 64257 64257 366 -Width: 1163 -VWidth: 0 -Flags: W -HStem: -276 102<36 145> -20 102<932 1108> 799 102<311 391 580 956> 1065 164<1057 1182> 1270 102<687 874> -VStem: -39 74<-172 -125> 815 172<85 272> 1110 70<93 131> -LayerCount: 2 -Fore -SplineSet -1057 1229 m 1,0,-1 - 1221 1229 l 1,1,-1 - 1182 1065 l 1,2,-1 - 1018 1065 l 1,3,-1 - 1057 1229 l 1,0,-1 -360 -43 m 2,4,5 - 337 -140 337 -140 259.5 -208 c 128,-1,6 - 182 -276 182 -276 94 -276 c 0,7,8 - 34 -276 34 -276 -2.5 -242.5 c 128,-1,9 - -39 -209 -39 -209 -39 -156 c 0,10,11 - -39 -145 -39 -145 -35 -125 c 1,12,-1 - 35 -125 l 1,13,-1 - 35 -133 l 2,14,15 - 35 -151 35 -151 49.5 -162.5 c 128,-1,16 - 64 -174 64 -174 88 -174 c 0,17,18 - 119 -174 119 -174 155.5 -116.5 c 128,-1,19 - 192 -59 192 -59 211 20 c 2,20,-1 - 391 799 l 1,21,-1 - 256 799 l 1,22,-1 - 311 901 l 1,23,-1 - 416 901 l 1,24,-1 - 461 1096 l 2,25,26 - 491 1222 491 1222 575 1297 c 128,-1,27 - 659 1372 659 1372 780 1372 c 0,28,29 - 865 1372 865 1372 920 1350 c 1,30,-1 - 852 1239 l 1,31,32 - 833 1270 833 1270 786 1270 c 0,33,34 - 722 1270 722 1270 682 1221 c 128,-1,35 - 642 1172 642 1172 612 1042 c 2,36,-1 - 580 901 l 1,37,-1 - 1145 901 l 1,38,-1 - 999 276 l 2,39,40 - 987 223 987 223 987 182 c 0,41,42 - 987 137 987 137 999 109.5 c 128,-1,43 - 1011 82 1011 82 1032 82 c 0,44,45 - 1060 82 1060 82 1082.5 96.5 c 128,-1,46 - 1105 111 1105 111 1110 131 c 1,47,-1 - 1180 131 l 1,48,49 - 1167 68 1167 68 1108.5 24 c 128,-1,50 - 1050 -20 1050 -20 981 -20 c 0,51,52 - 908 -20 908 -20 861.5 29.5 c 128,-1,53 - 815 79 815 79 815 156 c 0,54,55 - 815 183 815 183 821 213 c 2,56,-1 - 956 799 l 1,57,-1 - 555 799 l 1,58,-1 - 360 -43 l 2,4,5 -EndSplineSet -Validated: 1 -LCarets2: 1 0 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f i -EndChar - -StartChar: fl -Encoding: 64258 64258 367 -Width: 1153 -VWidth: 0 -Flags: W -HStem: -276 102<36 145> -20 102<909 1086> 799 102<311 391 580 717> 1270 102<708 1035> -VStem: -39 74<-172 -125> 793 172<86 273> 1087 70<93 131> -LayerCount: 2 -Fore -SplineSet -360 -43 m 2,0,1 - 337 -140 337 -140 259.5 -208 c 128,-1,2 - 182 -276 182 -276 94 -276 c 0,3,4 - 34 -276 34 -276 -2.5 -242.5 c 128,-1,5 - -39 -209 -39 -209 -39 -156 c 0,6,7 - -39 -145 -39 -145 -35 -125 c 1,8,-1 - 35 -125 l 1,9,-1 - 35 -133 l 2,10,11 - 35 -151 35 -151 49.5 -162.5 c 128,-1,12 - 64 -174 64 -174 88 -174 c 0,13,14 - 119 -174 119 -174 155.5 -116.5 c 128,-1,15 - 192 -59 192 -59 211 20 c 2,16,-1 - 391 799 l 1,17,-1 - 256 799 l 1,18,-1 - 311 901 l 1,19,-1 - 416 901 l 1,20,-1 - 461 1096 l 2,21,22 - 524 1372 524 1372 862 1372 c 0,23,24 - 911 1372 911 1372 982 1366 c 128,-1,25 - 1053 1360 1053 1360 1077 1352 c 1,26,-1 - 1225 1352 l 1,27,-1 - 977 276 l 2,28,29 - 965 223 965 223 965 182 c 0,30,31 - 965 137 965 137 977 109.5 c 128,-1,32 - 989 82 989 82 1010 82 c 0,33,34 - 1038 82 1038 82 1060 96.5 c 128,-1,35 - 1082 111 1082 111 1087 131 c 1,36,-1 - 1157 131 l 1,37,38 - 1144 68 1144 68 1085.5 24 c 128,-1,39 - 1027 -20 1027 -20 958 -20 c 0,40,41 - 885 -20 885 -20 839 30 c 128,-1,42 - 793 80 793 80 793 156 c 0,43,44 - 793 183 793 183 799 213 c 2,45,-1 - 1036 1241 l 1,46,47 - 1022 1251 1022 1251 959.5 1260.5 c 128,-1,48 - 897 1270 897 1270 868 1270 c 0,49,50 - 834 1270 834 1270 814 1268.5 c 128,-1,51 - 794 1267 794 1267 759 1255 c 128,-1,52 - 724 1243 724 1243 700.5 1220.5 c 128,-1,53 - 677 1198 677 1198 652 1152.5 c 128,-1,54 - 627 1107 627 1107 612 1042 c 2,55,-1 - 580 901 l 1,56,-1 - 741 901 l 1,57,-1 - 717 799 l 1,58,-1 - 555 799 l 1,59,-1 - 360 -43 l 2,0,1 -EndSplineSet -Validated: 1 -LCarets2: 1 0 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f l -EndChar - -StartChar: uniFB03 -Encoding: 64259 64259 368 -Width: 1746 -VWidth: 0 -Flags: W -HStem: -276 102<36 145 619 729> -20 102<1516 1692> 799 102<311 391 580 975 1163 1540> 1065 164<1640 1765> 1270 102<687 874 1270 1458> -VStem: -39 74<-172 -125> 545 74<-172 -125> 1399 172<85 272> 1694 70<93 131> -LayerCount: 2 -Fore -SplineSet -256 799 m 1,0,-1 - 311 901 l 1,1,-1 - 416 901 l 1,2,-1 - 461 1096 l 2,3,4 - 491 1222 491 1222 575 1297 c 128,-1,5 - 659 1372 659 1372 780 1372 c 0,6,7 - 865 1372 865 1372 920 1350 c 1,8,-1 - 852 1239 l 1,9,10 - 833 1270 833 1270 786 1270 c 0,11,12 - 722 1270 722 1270 682 1221 c 128,-1,13 - 642 1172 642 1172 612 1042 c 2,14,-1 - 580 901 l 1,15,-1 - 999 901 l 1,16,-1 - 1044 1096 l 2,17,18 - 1074 1222 1074 1222 1158.5 1297 c 128,-1,19 - 1243 1372 1243 1372 1364 1372 c 0,20,21 - 1448 1372 1448 1372 1503 1350 c 1,22,-1 - 1436 1239 l 1,23,24 - 1417 1270 1417 1270 1370 1270 c 0,25,26 - 1306 1270 1306 1270 1266 1221 c 128,-1,27 - 1226 1172 1226 1172 1196 1042 c 2,28,-1 - 1163 901 l 1,29,-1 - 1729 901 l 1,30,-1 - 1583 276 l 2,31,32 - 1571 223 1571 223 1571 182 c 0,33,34 - 1571 137 1571 137 1583 109.5 c 128,-1,35 - 1595 82 1595 82 1616 82 c 0,36,37 - 1644 82 1644 82 1666.5 96.5 c 128,-1,38 - 1689 111 1689 111 1694 131 c 1,39,-1 - 1763 131 l 1,40,41 - 1750 68 1750 68 1692 24 c 128,-1,42 - 1634 -20 1634 -20 1565 -20 c 0,43,44 - 1492 -20 1492 -20 1445.5 29.5 c 128,-1,45 - 1399 79 1399 79 1399 156 c 0,46,47 - 1399 183 1399 183 1405 213 c 2,48,-1 - 1540 799 l 1,49,-1 - 1139 799 l 1,50,-1 - 944 -43 l 2,51,52 - 921 -140 921 -140 843.5 -208 c 128,-1,53 - 766 -276 766 -276 678 -276 c 0,54,55 - 618 -276 618 -276 581.5 -242.5 c 128,-1,56 - 545 -209 545 -209 545 -156 c 0,57,58 - 545 -145 545 -145 549 -125 c 1,59,-1 - 618 -125 l 1,60,-1 - 618 -133 l 2,61,62 - 618 -151 618 -151 633 -162.5 c 128,-1,63 - 648 -174 648 -174 672 -174 c 0,64,65 - 703 -174 703 -174 739.5 -116.5 c 128,-1,66 - 776 -59 776 -59 795 20 c 2,67,-1 - 975 799 l 1,68,-1 - 555 799 l 1,69,-1 - 360 -43 l 2,70,71 - 337 -140 337 -140 259.5 -208 c 128,-1,72 - 182 -276 182 -276 94 -276 c 0,73,74 - 34 -276 34 -276 -2.5 -242.5 c 128,-1,75 - -39 -209 -39 -209 -39 -156 c 0,76,77 - -39 -145 -39 -145 -35 -125 c 1,78,-1 - 35 -125 l 1,79,-1 - 35 -133 l 2,80,81 - 35 -151 35 -151 49.5 -162.5 c 128,-1,82 - 64 -174 64 -174 88 -174 c 0,83,84 - 119 -174 119 -174 155.5 -116.5 c 128,-1,85 - 192 -59 192 -59 211 20 c 2,86,-1 - 391 799 l 1,87,-1 - 256 799 l 1,0,-1 -1640 1229 m 1,88,-1 - 1804 1229 l 1,89,-1 - 1765 1065 l 1,90,-1 - 1602 1065 l 1,91,-1 - 1640 1229 l 1,88,-1 -EndSplineSet -Validated: 1 -LCarets2: 2 0 0 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f f i -EndChar - -StartChar: uniFB04 -Encoding: 64260 64260 369 -Width: 1738 -VWidth: 0 -Flags: W -HStem: -276 102<36 145 621 731> -20 102<1495 1671> 799 102<311 391 580 977 1165 1303> 1270 102<687 874 1293 1620> -VStem: -39 74<-172 -125> 547 74<-172 -125> 1378 172<86 273> 1673 70<93 131> -LayerCount: 2 -Fore -SplineSet -946 -43 m 2,0,1 - 923 -140 923 -140 845.5 -208 c 128,-1,2 - 768 -276 768 -276 680 -276 c 0,3,4 - 620 -276 620 -276 583.5 -242.5 c 128,-1,5 - 547 -209 547 -209 547 -156 c 0,6,7 - 547 -145 547 -145 551 -125 c 1,8,-1 - 621 -125 l 1,9,-1 - 621 -133 l 2,10,11 - 621 -151 621 -151 635.5 -162.5 c 128,-1,12 - 650 -174 650 -174 674 -174 c 0,13,14 - 705 -174 705 -174 741.5 -116.5 c 128,-1,15 - 778 -59 778 -59 797 20 c 2,16,-1 - 977 799 l 1,17,-1 - 555 799 l 1,18,-1 - 360 -43 l 2,19,20 - 337 -140 337 -140 259.5 -208 c 128,-1,21 - 182 -276 182 -276 94 -276 c 0,22,23 - 34 -276 34 -276 -2.5 -242.5 c 128,-1,24 - -39 -209 -39 -209 -39 -156 c 0,25,26 - -39 -145 -39 -145 -35 -125 c 1,27,-1 - 35 -125 l 1,28,-1 - 35 -133 l 2,29,30 - 35 -151 35 -151 49.5 -162.5 c 128,-1,31 - 64 -174 64 -174 88 -174 c 0,32,33 - 119 -174 119 -174 155.5 -116.5 c 128,-1,34 - 192 -59 192 -59 211 20 c 2,35,-1 - 391 799 l 1,36,-1 - 256 799 l 1,37,-1 - 311 901 l 1,38,-1 - 416 901 l 1,39,-1 - 461 1096 l 2,40,41 - 491 1222 491 1222 575 1297 c 128,-1,42 - 659 1372 659 1372 780 1372 c 0,43,44 - 865 1372 865 1372 920 1350 c 1,45,-1 - 852 1239 l 1,46,47 - 833 1270 833 1270 786 1270 c 0,48,49 - 722 1270 722 1270 682 1221 c 128,-1,50 - 642 1172 642 1172 612 1042 c 2,51,-1 - 580 901 l 1,52,-1 - 1001 901 l 1,53,-1 - 1047 1096 l 1,54,55 - 1110 1372 1110 1372 1448 1372 c 0,56,57 - 1497 1372 1497 1372 1568 1366 c 128,-1,58 - 1639 1360 1639 1360 1663 1352 c 1,59,-1 - 1810 1352 l 1,60,-1 - 1563 276 l 2,61,62 - 1550 219 1550 219 1550 182 c 0,63,64 - 1550 137 1550 137 1562 109.5 c 128,-1,65 - 1574 82 1574 82 1595 82 c 0,66,67 - 1623 82 1623 82 1645.5 96.5 c 128,-1,68 - 1668 111 1668 111 1673 131 c 1,69,-1 - 1743 131 l 1,70,71 - 1730 68 1730 68 1671.5 24 c 128,-1,72 - 1613 -20 1613 -20 1544 -20 c 0,73,74 - 1471 -20 1471 -20 1424.5 30 c 128,-1,75 - 1378 80 1378 80 1378 156 c 0,76,77 - 1378 183 1378 183 1384 213 c 2,78,-1 - 1622 1241 l 1,79,80 - 1608 1251 1608 1251 1545.5 1260.5 c 128,-1,81 - 1483 1270 1483 1270 1454 1270 c 0,82,83 - 1420 1270 1420 1270 1400 1268.5 c 128,-1,84 - 1380 1267 1380 1267 1345 1255 c 128,-1,85 - 1310 1243 1310 1243 1286.5 1220.5 c 128,-1,86 - 1263 1198 1263 1198 1238 1152.5 c 128,-1,87 - 1213 1107 1213 1107 1198 1042 c 2,88,-1 - 1165 901 l 1,89,-1 - 1327 901 l 1,90,-1 - 1303 799 l 1,91,-1 - 1141 799 l 1,92,-1 - 946 -43 l 2,0,1 -EndSplineSet -Validated: 1 -LCarets2: 2 565 946 -Ligature2: "'liga' Standard Ligatures in Latin lookup 0-1" f f l -EndChar - -StartChar: uni00A0 -Encoding: 160 160 370 -Width: 409 -VWidth: 0 -Flags: W -LayerCount: 2 -EndChar - -StartChar: circumflex -Encoding: 710 710 371 -Width: 602 -VWidth: 0 -Flags: W -HStem: 1257 299 -VStem: 336 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 887 0 2 -Validated: 1 -EndChar - -StartChar: caron -Encoding: 711 711 372 -Width: 602 -VWidth: 0 -Flags: W -HStem: 1139 387 -VStem: 401 479 -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 889 0 2 -Validated: 1 -EndChar - -StartChar: breve -Encoding: 728 728 373 -Width: 585 -VWidth: 0 -Flags: W -HStem: 1270 117<501 735> -VStem: 397 84<1416 1460> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 881 0 2 -Validated: 1 -EndChar - -StartChar: dotaccent -Encoding: 729 729 374 -Width: 272 -VWidth: 0 -Flags: W -HStem: 1270 150<389 504> -VStem: 354 184 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 727 0 2 -Validated: 1 -EndChar - -StartChar: ring -Encoding: 730 730 375 -Width: 434 -VWidth: 0 -Flags: W -HStem: 1167 61<440 577> 1417 61<469 604> -VStem: 362 63<1243 1375> 618 63<1270 1404> -LayerCount: 2 -Fore -Refer: 100 778 N 1 0 0 1 805 0 2 -Validated: 1 -EndChar - -StartChar: ogonek -Encoding: 731 731 376 -Width: 405 -VWidth: 0 -Flags: W -HStem: -319 37<179 270> -VStem: 16 119<-266 -112> -LayerCount: 2 -Fore -Refer: 110 808 N 1 0 0 1 774 0 2 -Validated: 1 -EndChar - -StartChar: hungarumlaut -Encoding: 733 733 377 -Width: 718 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: 324 406 651 406 -LayerCount: 2 -Fore -Refer: 101 779 N 1 0 0 1 881 0 2 -Validated: 1 -EndChar - -StartChar: dieresis -Encoding: 168 168 378 -Width: 559 -VWidth: 0 -Flags: W -HStem: 1270 150<367 481 694 809> -VStem: 332 184 659 184 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 868 0 2 -Validated: 1 -EndChar - -StartChar: cedilla -Encoding: 184 184 379 -Width: 471 -VWidth: 0 -Flags: W -HStem: -401 49<-20 159> -164 164<164 217> -VStem: 225 129<-312 -182> -LayerCount: 2 -Fore -Refer: 109 807 S 1 0 0 1 807 0 2 -Validated: 1 -EndChar - -StartChar: uni01EA -Encoding: 490 490 380 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -319 37<613 705> -20 102<553 861> 1352 102<811 1133> -VStem: 199 176<286 770> 451 119<-266 -112> 1315 176<653 1162> -AnchorPoint: "bottom" 602 -287 basechar 0 -AnchorPoint: "top" 997 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -969 1352 m 0,0,1 - 860 1352 860 1352 750.5 1276.5 c 128,-1,2 - 641 1201 641 1201 559.5 1082 c 128,-1,3 - 478 963 478 963 426.5 809.5 c 128,-1,4 - 375 656 375 656 375 508 c 0,5,6 - 375 401 375 401 405.5 316 c 128,-1,7 - 436 231 436 231 484.5 182 c 128,-1,8 - 533 133 533 133 587 107.5 c 128,-1,9 - 641 82 641 82 694 82 c 0,10,11 - 806 82 806 82 918.5 153.5 c 128,-1,12 - 1031 225 1031 225 1118 341 c 128,-1,13 - 1205 457 1205 457 1260 615.5 c 128,-1,14 - 1315 774 1315 774 1315 938 c 0,15,16 - 1315 1043 1315 1043 1286 1124.5 c 128,-1,17 - 1257 1206 1257 1206 1207.5 1254.5 c 128,-1,18 - 1158 1303 1158 1303 1097.5 1327.5 c 128,-1,19 - 1037 1352 1037 1352 969 1352 c 0,0,1 -686 -20 m 1,20,21 - 569 -89 569 -89 569 -195 c 0,22,23 - 569 -239 569 -239 602 -261 c 128,-1,24 - 635 -283 635 -283 713 -283 c 1,25,-1 - 705 -319 l 1,26,27 - 566 -319 566 -319 508.5 -286.5 c 128,-1,28 - 451 -254 451 -254 451 -207 c 0,29,30 - 451 -159 451 -159 498 -108.5 c 128,-1,31 - 545 -58 545 -58 619 -19 c 1,32,33 - 536 -12 536 -12 462.5 22 c 128,-1,34 - 389 56 389 56 329 116.5 c 128,-1,35 - 269 177 269 177 234 273 c 128,-1,36 - 199 369 199 369 199 489 c 0,37,38 - 199 624 199 624 236.5 763 c 128,-1,39 - 274 902 274 902 345.5 1025 c 128,-1,40 - 417 1148 417 1148 511 1244.5 c 128,-1,41 - 605 1341 605 1341 727.5 1397.5 c 128,-1,42 - 850 1454 850 1454 981 1454 c 0,43,44 - 1088 1454 1088 1454 1179 1423 c 128,-1,45 - 1270 1392 1270 1392 1340.5 1332 c 128,-1,46 - 1411 1272 1411 1272 1451 1173.5 c 128,-1,47 - 1491 1075 1491 1075 1491 948 c 0,48,49 - 1491 830 1491 830 1461 702 c 128,-1,50 - 1431 574 1431 574 1365 447 c 128,-1,51 - 1299 320 1299 320 1207 218.5 c 128,-1,52 - 1115 117 1115 117 979.5 51 c 128,-1,53 - 844 -15 844 -15 686 -20 c 1,20,21 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01EB -Encoding: 491 491 381 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -319 37<457 549> -20 102<385 668> 819 102<554 823> -VStem: 147 164<157 530> 295 119<-266 -112> 897 168<366 739> -AnchorPoint: "top" 737 1004 basechar 0 -AnchorPoint: "bottom" 457 -287 basechar 0 -LayerCount: 2 -Fore -SplineSet -532 82 m 0,0,1 - 608 82 608 82 677.5 127.5 c 128,-1,2 - 747 173 747 173 794 244.5 c 128,-1,3 - 841 316 841 316 869 403.5 c 128,-1,4 - 897 491 897 491 897 575 c 0,5,6 - 897 688 897 688 845.5 753.5 c 128,-1,7 - 794 819 794 819 702 819 c 0,8,9 - 602 819 602 819 511 748 c 128,-1,10 - 420 677 420 677 365.5 559 c 128,-1,11 - 311 441 311 441 311 311 c 0,12,13 - 311 201 311 201 366.5 141.5 c 128,-1,14 - 422 82 422 82 532 82 c 0,0,1 -461 -20 m 1,15,16 - 309 -15 309 -15 228 69 c 128,-1,17 - 147 153 147 153 147 301 c 0,18,19 - 147 430 147 430 197.5 547.5 c 128,-1,20 - 248 665 248 665 327 745.5 c 128,-1,21 - 406 826 406 826 504 874 c 128,-1,22 - 602 922 602 922 696 922 c 0,23,24 - 867 922 867 922 966 838 c 128,-1,25 - 1065 754 1065 754 1065 594 c 0,26,27 - 1065 548 1065 548 1057 497 c 128,-1,28 - 1049 446 1049 446 1030 388 c 128,-1,29 - 1011 330 1011 330 982.5 276 c 128,-1,30 - 954 222 954 222 911 171 c 128,-1,31 - 868 120 868 120 814.5 80.5 c 128,-1,32 - 761 41 761 41 688.5 14.5 c 128,-1,33 - 616 -12 616 -12 533 -18 c 1,34,35 - 414 -86 414 -86 414 -195 c 0,36,37 - 414 -239 414 -239 446.5 -261 c 128,-1,38 - 479 -283 479 -283 557 -283 c 1,39,-1 - 549 -319 l 1,40,41 - 410 -319 410 -319 352.5 -286.5 c 128,-1,42 - 295 -254 295 -254 295 -207 c 0,43,44 - 295 -159 295 -159 341.5 -108.5 c 128,-1,45 - 388 -58 388 -58 461 -20 c 1,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0400 -Encoding: 1024 1024 382 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1501 387 -VStem: 697 295 -LayerCount: 2 -Fore -Refer: 144 200 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10023 -Encoding: 1025 1025 383 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1516 150<666 780 993 1108> -VStem: 631 184 958 184 -LayerCount: 2 -Fore -Refer: 147 203 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10051 -Encoding: 1026 1026 384 -Width: 1449 -VWidth: 0 -Flags: W -HStem: -348 102<744 1070> 0 43G<532 716> 819 102<959 1272> 1331 102<352 840 1014 1526> -VStem: 1313 164<386 778> -AnchorPoint: "top" 954 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -352 1434 m 1,0,-1 - 1554 1434 l 1,1,-1 - 1526 1331 l 1,2,-1 - 1014 1331 l 1,3,-1 - 907 870 l 1,4,5 - 1020 922 1020 922 1128 922 c 0,6,7 - 1477 922 1477 922 1477 641 c 0,8,9 - 1477 574 1477 574 1456 492 c 1,10,-1 - 1380 160 l 2,11,12 - 1355 51 1355 51 1333 -20.5 c 128,-1,13 - 1311 -92 1311 -92 1279.5 -153 c 128,-1,14 - 1248 -214 1248 -214 1212.5 -248.5 c 128,-1,15 - 1177 -283 1177 -283 1123 -307 c 128,-1,16 - 1069 -331 1069 -331 1003 -339.5 c 128,-1,17 - 937 -348 937 -348 844 -348 c 0,18,19 - 699 -348 699 -348 541 -256 c 1,20,-1 - 668 -150 l 1,21,22 - 784 -246 784 -246 897 -246 c 0,23,24 - 944 -246 944 -246 979 -239.5 c 128,-1,25 - 1014 -233 1014 -233 1041 -222.5 c 128,-1,26 - 1068 -212 1068 -212 1089.5 -188 c 128,-1,27 - 1111 -164 1111 -164 1125.5 -141 c 128,-1,28 - 1140 -118 1140 -118 1155 -74 c 128,-1,29 - 1170 -30 1170 -30 1180 9 c 128,-1,30 - 1190 48 1190 48 1206 115 c 2,31,-1 - 1288 467 l 1,32,33 - 1313 580 1313 580 1313 643 c 0,34,35 - 1313 742 1313 742 1268 780.5 c 128,-1,36 - 1223 819 1223 819 1135 819 c 0,37,38 - 1005 819 1005 819 872 723 c 1,39,-1 - 707 0 l 1,40,-1 - 532 0 l 1,41,-1 - 840 1331 l 1,42,-1 - 328 1331 l 1,43,-1 - 352 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10052 -Encoding: 1027 1027 385 -Width: 899 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1331 102<573 1227> 1501 387 -VStem: 774 406 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1168 246 2 -Refer: 401 1043 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10053 -Encoding: 1028 1028 386 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 713 102<426 1061> 1352 102<820 1194> -VStem: 201 176<307 708> -AnchorPoint: "top" 1008 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -399 713 m 1,0,1 - 377 609 377 609 377 522 c 0,2,3 - 377 433 377 433 400 358 c 128,-1,4 - 423 283 423 283 461 233 c 128,-1,5 - 499 183 499 183 548 148 c 128,-1,6 - 597 113 597 113 648 97.5 c 128,-1,7 - 699 82 699 82 750 82 c 0,8,9 - 990 82 990 82 1149 264 c 1,10,-1 - 1257 209 l 1,11,12 - 1153 106 1153 106 1005 43 c 128,-1,13 - 857 -20 857 -20 696 -20 c 0,14,15 - 626 -20 626 -20 557 -0.5 c 128,-1,16 - 488 19 488 19 423.5 61.5 c 128,-1,17 - 359 104 359 104 310 164.5 c 128,-1,18 - 261 225 261 225 231 314.5 c 128,-1,19 - 201 404 201 404 201 510 c 0,20,21 - 201 683 201 683 266.5 855 c 128,-1,22 - 332 1027 332 1027 439.5 1158.5 c 128,-1,23 - 547 1290 547 1290 694.5 1372 c 128,-1,24 - 842 1454 842 1454 997 1454 c 0,25,26 - 1371 1454 1371 1454 1489 1245 c 1,27,-1 - 1321 1178 l 1,28,29 - 1284 1256 1284 1256 1205 1304 c 128,-1,30 - 1126 1352 1126 1352 1004 1352 c 0,31,32 - 901 1352 901 1352 807 1307 c 128,-1,33 - 713 1262 713 1262 641 1185 c 128,-1,34 - 569 1108 569 1108 515 1014.5 c 128,-1,35 - 461 921 461 921 426 815 c 1,36,-1 - 1085 815 l 1,37,-1 - 1061 713 l 1,38,-1 - 399 713 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10054 -Encoding: 1029 1029 387 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -20 102<495 829> 1352 102<765 1066> -VStem: 207 166<209 350> 430 180<951 1185> 1024 176<277 545> -LayerCount: 2 -Fore -Refer: 45 83 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10055 -Encoding: 1030 1030 388 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> -VStem: 92 506 -AnchorPoint: "top" 182 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10056 -Encoding: 1031 1031 389 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1516 150<326 440 653 768> -VStem: 92 506 291 184 618 184 -LayerCount: 2 -Fore -Refer: 151 207 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10057 -Encoding: 1032 1032 390 -Width: 948 -VWidth: 0 -Flags: W -HStem: -20 102<260 588> 1393 41<943 1126> -AnchorPoint: "top" 711 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 37 74 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10058 -Encoding: 1033 1033 391 -Width: 1843 -VWidth: 0 -Flags: W -HStem: -20 102<142 375> 0 102<1092 1457> 799 102<1276 1609> 1331 102<860 1200> -VStem: 1679 172<362 724> -AnchorPoint: "top" 1051 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1851 547 m 0,0,1 - 1851 482 1851 482 1828 408.5 c 128,-1,2 - 1805 335 1805 335 1756.5 262.5 c 128,-1,3 - 1708 190 1708 190 1642 131.5 c 128,-1,4 - 1576 73 1576 73 1482 36.5 c 128,-1,5 - 1388 0 1388 0 1282 0 c 2,6,-1 - 893 0 l 1,7,-1 - 1200 1331 l 1,8,-1 - 860 1331 l 1,9,-1 - 612 260 l 2,10,11 - 595 187 595 187 553.5 131 c 128,-1,12 - 512 75 512 75 458 43.5 c 128,-1,13 - 404 12 404 12 347 -4 c 128,-1,14 - 290 -20 290 -20 233 -20 c 0,15,16 - 104 -20 104 -20 47 72 c 1,17,-1 - 190 133 l 1,18,19 - 212 82 212 82 287 82 c 0,20,21 - 347 82 347 82 386 140.5 c 128,-1,22 - 425 199 425 199 455 328 c 2,23,-1 - 711 1434 l 1,24,-1 - 1399 1434 l 1,25,-1 - 1276 901 l 1,26,-1 - 1487 901 l 2,27,28 - 1574 901 1574 901 1644.5 871 c 128,-1,29 - 1715 841 1715 841 1759.5 791 c 128,-1,30 - 1804 741 1804 741 1827.5 678.5 c 128,-1,31 - 1851 616 1851 616 1851 547 c 0,0,1 -1337 102 m 2,32,33 - 1424 102 1424 102 1505 173.5 c 128,-1,34 - 1586 245 1586 245 1632.5 351.5 c 128,-1,35 - 1679 458 1679 458 1679 561 c 0,36,37 - 1679 608 1679 608 1669 649 c 128,-1,38 - 1659 690 1659 690 1638.5 724.5 c 128,-1,39 - 1618 759 1618 759 1582 779 c 128,-1,40 - 1546 799 1546 799 1497 799 c 2,41,-1 - 1251 799 l 1,42,-1 - 1092 102 l 1,43,-1 - 1337 102 l 2,32,33 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10059 -Encoding: 1034 1034 392 -Width: 1783 -VWidth: 0 -Flags: W -HStem: 0 102<1032 1398> 799 102<465 1018 1217 1550> 1393 41G<404 588 1156 1339> -VStem: 1620 172<362 724> -AnchorPoint: "top" 885 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1792 547 m 0,0,1 - 1792 482 1792 482 1769 408.5 c 128,-1,2 - 1746 335 1746 335 1697.5 262.5 c 128,-1,3 - 1649 190 1649 190 1583 131.5 c 128,-1,4 - 1517 73 1517 73 1423 36.5 c 128,-1,5 - 1329 0 1329 0 1223 0 c 2,6,-1 - 834 0 l 1,7,-1 - 1018 799 l 1,8,-1 - 440 799 l 1,9,-1 - 256 0 l 1,10,-1 - 82 0 l 1,11,-1 - 414 1434 l 1,12,-1 - 588 1434 l 1,13,-1 - 465 901 l 1,14,-1 - 1042 901 l 1,15,-1 - 1165 1434 l 1,16,-1 - 1339 1434 l 1,17,-1 - 1217 901 l 1,18,-1 - 1427 901 l 2,19,20 - 1514 901 1514 901 1585 871 c 128,-1,21 - 1656 841 1656 841 1700 791 c 128,-1,22 - 1744 741 1744 741 1768 678.5 c 128,-1,23 - 1792 616 1792 616 1792 547 c 0,0,1 -1278 102 m 2,24,25 - 1365 102 1365 102 1446 173.5 c 128,-1,26 - 1527 245 1527 245 1573.5 351.5 c 128,-1,27 - 1620 458 1620 458 1620 561 c 0,28,29 - 1620 608 1620 608 1610 649 c 128,-1,30 - 1600 690 1600 690 1579.5 724.5 c 128,-1,31 - 1559 759 1559 759 1523 779 c 128,-1,32 - 1487 799 1487 799 1438 799 c 2,33,-1 - 1192 799 l 1,34,-1 - 1032 102 l 1,35,-1 - 1278 102 l 2,24,25 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10060 -Encoding: 1035 1035 393 -Width: 1449 -VWidth: 0 -Flags: W -HStem: 0 43G<532 716 1180 1353> 819 102<959 1272> 1331 102<352 840 1014 1526> -VStem: 1313 164<389 778> -AnchorPoint: "top" 954 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -352 1434 m 1,0,-1 - 1554 1434 l 1,1,-1 - 1526 1331 l 1,2,-1 - 1014 1331 l 1,3,-1 - 907 870 l 1,4,5 - 1020 922 1020 922 1128 922 c 0,6,7 - 1477 922 1477 922 1477 641 c 0,8,9 - 1477 574 1477 574 1456 492 c 1,10,-1 - 1343 0 l 1,11,-1 - 1180 0 l 1,12,-1 - 1288 467 l 1,13,14 - 1313 580 1313 580 1313 643 c 0,15,16 - 1313 742 1313 742 1268 780.5 c 128,-1,17 - 1223 819 1223 819 1135 819 c 0,18,19 - 1005 819 1005 819 872 723 c 1,20,-1 - 707 0 l 1,21,-1 - 532 0 l 1,22,-1 - 840 1331 l 1,23,-1 - 328 1331 l 1,24,-1 - 352 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10061 -Encoding: 1036 1036 394 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 119<1030 1110> 1393 41<414 598 1207 1458> 1501 387 -VStem: 776 406 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1170 246 2 -Refer: 408 1050 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni040D -Encoding: 1037 1037 395 -Width: 1261 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 981 1165> 1393 41<414 598 1303 1487> 1501 387 -VStem: 787 295 -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1125 246 2 -Refer: 406 1048 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10062 -Encoding: 1038 1038 396 -Width: 1003 -VWidth: 0 -Flags: W -HStem: -20 102<254 382> 1393 41<362 517 1145 1343> 1434 117<708 1015> -VStem: 625 78<1554 1632> 1028 76<1560 1645> -LayerCount: 2 -Fore -Refer: 1072 57420 S 1 0 0 1 1126 164 2 -Refer: 417 1059 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10145 -Encoding: 1039 1039 397 -Width: 1173 -VWidth: 0 -Flags: W -HStem: 0 102<291 532 629 918> 1393 41G<414 598 1215 1399> -VStem: 559 117<-320 -186> -AnchorPoint: "top" 897 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -92 0 m 1,0,-1 - 424 1434 l 1,1,-1 - 598 1434 l 1,2,-1 - 291 102 l 1,3,-1 - 918 102 l 1,4,-1 - 1225 1434 l 1,5,-1 - 1399 1434 l 1,6,-1 - 1067 0 l 1,7,-1 - 629 0 l 1,8,-1 - 586 -125 l 1,9,10 - 631 -141 631 -141 653.5 -174 c 128,-1,11 - 676 -207 676 -207 676 -238 c 0,12,13 - 676 -287 676 -287 622 -329 c 128,-1,14 - 568 -371 568 -371 496 -397 c 1,15,-1 - 481 -373 l 1,16,17 - 511 -353 511 -353 535 -320.5 c 128,-1,18 - 559 -288 559 -288 559 -254 c 0,19,20 - 559 -194 559 -194 467 -164 c 1,21,-1 - 532 0 l 1,22,-1 - 92 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10017 -Encoding: 1040 1040 398 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> -AnchorPoint: "top" 975 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10018 -Encoding: 1041 1041 399 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<281 667> 799 102<465 819> 1331 102<563 1073> -VStem: 889 172<362 724> -AnchorPoint: "top" 844 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -547 102 m 2,0,1 - 634 102 634 102 715 173.5 c 128,-1,2 - 796 245 796 245 842.5 351.5 c 128,-1,3 - 889 458 889 458 889 561 c 0,4,5 - 889 608 889 608 879 649 c 128,-1,6 - 869 690 869 690 848.5 724.5 c 128,-1,7 - 828 759 828 759 792 779 c 128,-1,8 - 756 799 756 799 707 799 c 2,9,-1 - 440 799 l 1,10,-1 - 281 102 l 1,11,-1 - 547 102 l 2,0,1 -1061 547 m 0,12,13 - 1061 482 1061 482 1038 408.5 c 128,-1,14 - 1015 335 1015 335 966.5 262.5 c 128,-1,15 - 918 190 918 190 852 131.5 c 128,-1,16 - 786 73 786 73 692 36.5 c 128,-1,17 - 598 0 598 0 492 0 c 2,18,-1 - 82 0 l 1,19,-1 - 414 1434 l 1,20,-1 - 1098 1434 l 1,21,-1 - 1073 1331 l 1,22,-1 - 563 1331 l 1,23,-1 - 465 901 l 1,24,-1 - 696 901 l 2,25,26 - 783 901 783 901 854 871 c 128,-1,27 - 925 841 925 841 969 791 c 128,-1,28 - 1013 741 1013 741 1037 678.5 c 128,-1,29 - 1061 616 1061 616 1061 547 c 0,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10019 -Encoding: 1042 1042 400 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<281 700> 727 102<449 775> 1331 102<563 901> -VStem: 872 176<300 657> 944 178<999 1290> -AnchorPoint: "top" 741 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 28 66 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10020 -Encoding: 1043 1043 401 -Width: 899 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276> 1331 102<573 1227> -AnchorPoint: "top" 854 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -266 0 m 1,0,-1 - 92 0 l 1,1,-1 - 424 1434 l 1,2,-1 - 1251 1434 l 1,3,-1 - 1227 1331 l 1,4,-1 - 573 1331 l 1,5,-1 - 266 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10021 -Encoding: 1044 1044 402 -Width: 1230 -VWidth: 0 -Flags: W -HStem: -141 244<90 197 1049 1145> 0 102<229 235 385 874> 1331 102<772 788 943 1157 1331 1374> -AnchorPoint: "top" 1079 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -772 1434 m 1,0,-1 - 1399 1434 l 1,1,-1 - 1374 1331 l 1,2,-1 - 1331 1331 l 1,3,-1 - 1049 102 l 1,4,-1 - 1202 102 l 1,5,-1 - 1145 -141 l 1,6,-1 - 981 -141 l 1,7,-1 - 1014 0 l 1,8,9 - 229 0 l 1,10,-1 - 197 -141 l 1,11,-1 - 33 -141 l 1,12,-1 - 66 0 l 1,13,-1 - 90 102 l 1,14,-1 - 207 102 l 1,15,16 - 256 172 256 172 314.5 271.5 c 128,-1,17 - 373 371 373 371 454 525 c 128,-1,18 - 535 679 535 679 623.5 890.5 c 128,-1,19 - 712 1102 712 1102 788 1331 c 1,20,-1 - 748 1331 l 1,21,-1 - 772 1434 l 1,0,-1 -1157 1331 m 1,22,-1 - 952 1331 l 1,23,24 - 884 1125 884 1125 800 922 c 128,-1,25 - 716 719 716 719 635 559 c 128,-1,26 - 554 399 554 399 495.5 293 c 128,-1,27 - 437 187 437 187 385 102 c 1,28,-1 - 874 102 l 1,29,-1 - 1157 1331 l 1,22,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10022 -Encoding: 1045 1045 403 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> -AnchorPoint: "top" 854 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10024 -Encoding: 1046 1046 404 -Width: 1525 -VWidth: 0 -Flags: W -HStem: 0 43G<37 216 672 855 1307 1481> 1331 102<389 439 1675 1767> -VStem: 37 174<0 68> 1307 176<0 178> -AnchorPoint: "top" 1094 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -999 666 m 1,0,-1 - 846 0 l 1,1,-1 - 672 0 l 1,2,-1 - 825 666 l 1,3,4 - 761 642 761 642 653 539 c 128,-1,5 - 545 436 545 436 451 321.5 c 128,-1,6 - 357 207 357 207 286 111.5 c 128,-1,7 - 215 16 215 16 211 0 c 1,8,-1 - 37 0 l 1,9,10 - 43 27 43 27 106.5 118 c 128,-1,11 - 170 209 170 209 262 320 c 128,-1,12 - 354 431 354 431 476 544.5 c 128,-1,13 - 598 658 598 658 702 717 c 1,14,15 - 644 761 644 761 603 841.5 c 128,-1,16 - 562 922 562 922 540 1003 c 128,-1,17 - 518 1084 518 1084 496.5 1160 c 128,-1,18 - 475 1236 475 1236 443.5 1283.5 c 128,-1,19 - 412 1331 412 1331 365 1331 c 1,20,-1 - 389 1434 l 1,21,22 - 456 1434 456 1434 510.5 1409.5 c 128,-1,23 - 565 1385 565 1385 599.5 1344.5 c 128,-1,24 - 634 1304 634 1304 662 1251 c 128,-1,25 - 690 1198 690 1198 707 1141.5 c 128,-1,26 - 724 1085 724 1085 741 1027 c 128,-1,27 - 758 969 758 969 771.5 920.5 c 128,-1,28 - 785 872 785 872 806 833 c 128,-1,29 - 827 794 827 794 852 778 c 1,30,-1 - 1004 1434 l 1,31,-1 - 1178 1434 l 1,32,-1 - 1026 778 l 1,33,34 - 1063 797 1063 797 1107.5 844.5 c 128,-1,35 - 1152 892 1152 892 1195 950.5 c 128,-1,36 - 1238 1009 1238 1009 1287.5 1076.5 c 128,-1,37 - 1337 1144 1337 1144 1393 1206.5 c 128,-1,38 - 1449 1269 1449 1269 1508.5 1320.5 c 128,-1,39 - 1568 1372 1568 1372 1641.5 1403 c 128,-1,40 - 1715 1434 1715 1434 1792 1434 c 1,41,-1 - 1767 1331 l 1,42,43 - 1732 1331 1732 1331 1694.5 1305.5 c 128,-1,44 - 1657 1280 1657 1280 1619.5 1236.5 c 128,-1,45 - 1582 1193 1582 1193 1542 1139 c 128,-1,46 - 1502 1085 1502 1085 1456.5 1024 c 128,-1,47 - 1411 963 1411 963 1365 907 c 128,-1,48 - 1319 851 1319 851 1261.5 799 c 128,-1,49 - 1204 747 1204 747 1147 715 c 1,50,51 - 1219 659 1219 659 1285.5 553.5 c 128,-1,52 - 1352 448 1352 448 1393 341.5 c 128,-1,53 - 1434 235 1434 235 1458.5 145.5 c 128,-1,54 - 1483 56 1483 56 1483 14 c 0,55,56 - 1483 11 1483 11 1482 6.5 c 128,-1,57 - 1481 2 1481 2 1481 0 c 1,58,-1 - 1307 0 l 1,59,-1 - 1307 4 l 2,60,61 - 1307 32 1307 32 1280 127 c 128,-1,62 - 1253 222 1253 222 1212 334 c 128,-1,63 - 1171 446 1171 446 1112.5 544 c 128,-1,64 - 1054 642 1054 642 1001 666 c 1,65,-1 - 999 666 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10025 -Encoding: 1047 1047 405 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<329 651> 799 102<551 798> 1352 102<618 948> -VStem: 893 176<350 699> 991 174<1050 1310> -AnchorPoint: "top" 834 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1069 537 m 0,0,1 - 1069 444 1069 444 1023 346 c 128,-1,2 - 977 248 977 248 899 166.5 c 128,-1,3 - 821 85 821 85 704.5 32.5 c 128,-1,4 - 588 -20 588 -20 459 -20 c 0,5,6 - 301 -20 301 -20 213.5 52 c 128,-1,7 - 126 124 126 124 106 244 c 1,8,-1 - 268 285 l 1,9,-1 - 268 279 l 2,10,11 - 268 174 268 174 325 128 c 128,-1,12 - 382 82 382 82 512 82 c 0,13,14 - 606 82 606 82 696 151 c 128,-1,15 - 786 220 786 220 839.5 323 c 128,-1,16 - 893 426 893 426 893 526 c 0,17,18 - 893 576 893 576 881 621.5 c 128,-1,19 - 869 667 869 667 844 708 c 128,-1,20 - 819 749 819 749 771 774 c 128,-1,21 - 723 799 723 799 659 799 c 2,22,-1 - 526 799 l 1,23,-1 - 551 901 l 1,24,-1 - 623 901 l 2,25,26 - 704 901 704 901 769.5 920.5 c 128,-1,27 - 835 940 835 940 875.5 970.5 c 128,-1,28 - 916 1001 916 1001 943 1041 c 128,-1,29 - 970 1081 970 1081 980.5 1119.5 c 128,-1,30 - 991 1158 991 1158 991 1196 c 0,31,32 - 991 1267 991 1267 948 1309.5 c 128,-1,33 - 905 1352 905 1352 825 1352 c 0,34,35 - 705 1352 705 1352 631 1317 c 128,-1,36 - 557 1282 557 1282 526 1198 c 1,37,-1 - 385 1239 l 1,38,39 - 464 1342 464 1342 585 1398 c 128,-1,40 - 706 1454 706 1454 819 1454 c 0,41,42 - 988 1454 988 1454 1076.5 1382 c 128,-1,43 - 1165 1310 1165 1310 1165 1200 c 0,44,45 - 1165 1154 1165 1154 1150.5 1107.5 c 128,-1,46 - 1136 1061 1136 1061 1105.5 1013.5 c 128,-1,47 - 1075 966 1075 966 1020 923.5 c 128,-1,48 - 965 881 965 881 891 852 c 1,49,50 - 985 802 985 802 1027 717.5 c 128,-1,51 - 1069 633 1069 633 1069 537 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10026 -Encoding: 1048 1048 406 -Width: 1261 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276 981 1165> 1393 41G<414 598 1303 1487> -AnchorPoint: "top" 944 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1313 1434 m 1,0,-1 - 1487 1434 l 1,1,-1 - 1155 0 l 1,2,-1 - 981 0 l 1,3,-1 - 1241 1122 l 1,4,-1 - 281 61 l 1,5,-1 - 266 0 l 1,6,-1 - 92 0 l 1,7,-1 - 424 1434 l 1,8,-1 - 598 1434 l 1,9,-1 - 338 309 l 1,10,-1 - 1298 1372 l 1,11,-1 - 1313 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10027 -Encoding: 1049 1049 407 -Width: 1261 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 981 1165> 1393 41<414 598 1303 1487> 1434 117<814 1121> -VStem: 731 78<1554 1632> 1135 76<1560 1645> -LayerCount: 2 -Fore -Refer: 1072 57420 S 1 0 0 1 1233 164 2 -Refer: 406 1048 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10028 -Encoding: 1050 1050 408 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 119<1030 1110> 1393 41G<414 598 1207 1458> -AnchorPoint: "top" 856 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1137 119 m 1,0,-1 - 1110 0 l 1,1,2 - 1015 0 1015 0 946 35.5 c 128,-1,3 - 877 71 877 71 839.5 128.5 c 128,-1,4 - 802 186 802 186 778.5 256.5 c 128,-1,5 - 755 327 755 327 743 400 c 128,-1,6 - 731 473 731 473 719.5 536 c 128,-1,7 - 708 599 708 599 688.5 645.5 c 128,-1,8 - 669 692 669 692 637 705 c 1,9,-1 - 375 469 l 1,10,-1 - 266 0 l 1,11,-1 - 92 0 l 1,12,-1 - 424 1434 l 1,13,-1 - 598 1434 l 1,14,-1 - 426 696 l 1,15,-1 - 1253 1434 l 1,16,-1 - 1458 1434 l 1,17,-1 - 750 805 l 1,18,19 - 802 780 802 780 837.5 728.5 c 128,-1,20 - 873 677 873 677 891.5 615 c 128,-1,21 - 910 553 910 553 924 483.5 c 128,-1,22 - 938 414 938 414 951.5 350 c 128,-1,23 - 965 286 965 286 985.5 234 c 128,-1,24 - 1006 182 1006 182 1044 150.5 c 128,-1,25 - 1082 119 1082 119 1137 119 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10029 -Encoding: 1051 1051 409 -Width: 1214 -VWidth: 0 -Flags: W -HStem: -20 102<142 375> 0 43G<934 1117> 1331 102<860 1241> -AnchorPoint: "top" 1071 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -934 0 m 1,0,-1 - 1241 1331 l 1,1,-1 - 860 1331 l 1,2,-1 - 612 260 l 2,3,4 - 595 187 595 187 553.5 131 c 128,-1,5 - 512 75 512 75 458 43.5 c 128,-1,6 - 404 12 404 12 347 -4 c 128,-1,7 - 290 -20 290 -20 233 -20 c 0,8,9 - 104 -20 104 -20 47 72 c 1,10,-1 - 190 133 l 1,11,12 - 212 82 212 82 287 82 c 0,13,14 - 347 82 347 82 386 140.5 c 128,-1,15 - 425 199 425 199 455 328 c 2,16,-1 - 711 1434 l 1,17,-1 - 1440 1434 l 1,18,-1 - 1108 0 l 1,19,-1 - 934 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10030 -Encoding: 1052 1052 410 -Width: 1544 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 1200 1384> 1393 41<414 608 1503 1706> -AnchorPoint: "top" 1065 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 40 77 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10031 -Encoding: 1053 1053 411 -Width: 1259 -VWidth: 0 -Flags: W -HStem: 0 43<82 265 915 1099> 717 102<444 1081> 1393 41<404 588 1238 1421> -AnchorPoint: "top" 926 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 35 72 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10032 -Encoding: 1054 1054 412 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> -VStem: 199 176<286 770> 1315 176<653 1162> -AnchorPoint: "top" 997 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10033 -Encoding: 1055 1055 413 -Width: 1173 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276 893 1076> 1331 102<573 1200> -AnchorPoint: "top" 907 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -92 0 m 9,0,-1 - 424 1434 l 1,1,-1 - 1399 1434 l 1,2,-1 - 1067 0 l 1,3,-1 - 893 0 l 1,4,-1 - 1200 1331 l 1,5,-1 - 573 1331 l 1,6,-1 - 266 0 l 1,7,-1 - 92 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10034 -Encoding: 1056 1056 414 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 655 102<440 858> 1331 102<573 969> -VStem: 1032 174<951 1271> -AnchorPoint: "top" 811 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 29 80 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10035 -Encoding: 1057 1057 415 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 1352 102<814 1199> -VStem: 201 176<307 773> -AnchorPoint: "top" 1008 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 30 67 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10036 -Encoding: 1058 1058 416 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43<532 716> 1331 102<352 840 1014 1526> -AnchorPoint: "top" 954 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 46 84 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10037 -Encoding: 1059 1059 417 -Width: 1003 -VWidth: 0 -Flags: W -HStem: -20 102<254 382> 1393 41G<362 517 1145 1343> -AnchorPoint: "top" 852 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -258 -20 m 0,0,1 - 203 -20 203 -20 164 13 c 128,-1,2 - 125 46 125 46 78 115 c 1,3,-1 - 223 180 l 1,4,5 - 245 135 245 135 262 113 c 128,-1,6 - 279 91 279 91 288 86.5 c 128,-1,7 - 297 82 297 82 311 82 c 0,8,9 - 330 82 330 82 346.5 91.5 c 128,-1,10 - 363 101 363 101 386.5 132.5 c 128,-1,11 - 410 164 410 164 422 183 c 128,-1,12 - 434 202 434 202 469 260 c 0,13,14 - 478 275 478 275 483 283 c 2,15,-1 - 510 328 l 1,16,-1 - 362 1434 l 1,17,-1 - 512 1434 l 1,18,-1 - 631 532 l 1,19,-1 - 1169 1434 l 1,20,-1 - 1343 1434 l 1,21,-1 - 653 279 l 1,22,23 - 561 122 561 122 470.5 51 c 128,-1,24 - 380 -20 380 -20 258 -20 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10038 -Encoding: 1060 1060 418 -Width: 1370 -VWidth: 0 -Flags: W -HStem: 0 43G<592 776> 188 106<545 635> 1143 104<715 856 1053 1129> 1393 41G<914 1098> -VStem: 215 174<446 810> 1300 174<628 983> -AnchorPoint: "top" 1014 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -659 295 m 1,0,-1 - 856 1143 l 1,1,2 - 658 1117 658 1117 523.5 958.5 c 128,-1,3 - 389 800 389 800 389 614 c 0,4,5 - 389 486 389 486 463.5 401.5 c 128,-1,6 - 538 317 538 317 659 295 c 1,0,-1 -881 1247 m 1,7,-1 - 924 1434 l 1,8,-1 - 1098 1434 l 1,9,-1 - 1053 1241 l 1,10,11 - 1240 1211 1240 1211 1357.5 1100.5 c 128,-1,12 - 1475 990 1475 990 1475 825 c 0,13,14 - 1475 714 1475 714 1424 605.5 c 128,-1,15 - 1373 497 1373 497 1285 411.5 c 128,-1,16 - 1197 326 1197 326 1073 266.5 c 128,-1,17 - 949 207 949 207 811 190 c 1,18,-1 - 766 0 l 1,19,-1 - 592 0 l 1,20,-1 - 635 188 l 1,21,22 - 524 203 524 203 430 256.5 c 128,-1,23 - 336 310 336 310 275.5 403.5 c 128,-1,24 - 215 497 215 497 215 612 c 0,25,26 - 215 732 215 732 274.5 846.5 c 128,-1,27 - 334 961 334 961 428.5 1044 c 128,-1,28 - 523 1127 523 1127 642.5 1181.5 c 128,-1,29 - 762 1236 762 1236 881 1247 c 1,7,-1 -1028 1137 m 1,30,-1 - 834 295 l 1,31,32 - 1025 330 1025 330 1162.5 480 c 128,-1,33 - 1300 630 1300 630 1300 819 c 0,34,35 - 1300 944 1300 944 1227 1027 c 128,-1,36 - 1154 1110 1154 1110 1028 1137 c 1,30,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10039 -Encoding: 1061 1061 419 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<41 254 802 997> 1393 41<414 609 1072 1286> -AnchorPoint: "top" 844 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 49 88 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10040 -Encoding: 1062 1062 420 -Width: 1290 -VWidth: 0 -Flags: W -HStem: 0 102<291 918> 1393 41G<414 598 1215 1399> -VStem: 1100 117<-320 -186> -AnchorPoint: "top" 897 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1204 102 m 13,0,-1 - 1126 -125 l 1,1,2 - 1171 -141 1171 -141 1194 -174 c 128,-1,3 - 1217 -207 1217 -207 1217 -238 c 0,4,5 - 1217 -287 1217 -287 1162.5 -329 c 128,-1,6 - 1108 -371 1108 -371 1036 -397 c 1,7,-1 - 1022 -373 l 1,8,9 - 1052 -353 1052 -353 1076 -320.5 c 128,-1,10 - 1100 -288 1100 -288 1100 -254 c 0,11,12 - 1100 -194 1100 -194 1008 -164 c 1,13,-1 - 1073 0 l 1,14,-1 - 92 0 l 1,15,-1 - 424 1434 l 1,16,-1 - 598 1434 l 1,17,-1 - 291 102 l 1,18,-1 - 918 102 l 1,19,-1 - 1225 1434 l 1,20,-1 - 1399 1434 l 1,21,-1 - 1092 102 l 1,22,-1 - 1204 102 l 13,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10041 -Encoding: 1063 1063 421 -Width: 1060 -VWidth: 0 -Flags: W -HStem: 0 43G<780 964> 522 102<535 862> 1393 41G<404 588 1103 1286> -VStem: 299 178<683 1135> -AnchorPoint: "top" 856 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -946 721 m 1,0,-1 - 1112 1434 l 1,1,-1 - 1286 1434 l 1,2,-1 - 954 0 l 1,3,-1 - 780 0 l 1,4,-1 - 913 573 l 1,5,6 - 863 550 863 550 778.5 536 c 128,-1,7 - 694 522 694 522 631 522 c 0,8,9 - 464 522 464 522 381.5 599.5 c 128,-1,10 - 299 677 299 677 299 842 c 0,11,12 - 299 930 299 930 332 1085 c 1,13,-1 - 414 1434 l 1,14,-1 - 588 1434 l 1,15,-1 - 512 1110 l 2,16,17 - 477 957 477 957 477 852 c 0,18,19 - 477 780 477 780 493.5 732.5 c 128,-1,20 - 510 685 510 685 542 662.5 c 128,-1,21 - 574 640 574 640 606 632.5 c 128,-1,22 - 638 625 638 625 684 625 c 0,23,24 - 816 625 816 625 946 721 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10042 -Encoding: 1064 1064 422 -Width: 1511 -VWidth: 0 -Flags: W -HStem: 0 102<291 686 860 1255> 1393 41G<414 598 984 1167 1553 1737> -AnchorPoint: "top" 1083 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1737 1434 m 1,0,-1 - 1405 0 l 1,1,-1 - 92 0 l 1,2,-1 - 424 1434 l 1,3,-1 - 598 1434 l 1,4,-1 - 291 102 l 1,5,-1 - 686 102 l 1,6,-1 - 993 1434 l 1,7,-1 - 1167 1434 l 1,8,-1 - 860 102 l 1,9,-1 - 1255 102 l 1,10,-1 - 1563 1434 l 1,11,-1 - 1737 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10043 -Encoding: 1065 1065 423 -Width: 1628 -VWidth: 0 -Flags: W -HStem: 0 102<291 686 860 1255> 1393 41G<414 598 984 1167 1553 1737> -VStem: 1438 117<-320 -186> -AnchorPoint: "top" 1083 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1411 0 m 1,0,-1 - 92 0 l 1,1,-1 - 424 1434 l 1,2,-1 - 598 1434 l 1,3,-1 - 291 102 l 1,4,-1 - 686 102 l 1,5,-1 - 993 1434 l 1,6,-1 - 1167 1434 l 1,7,-1 - 860 102 l 1,8,-1 - 1255 102 l 1,9,-1 - 1563 1434 l 1,10,-1 - 1737 1434 l 1,11,-1 - 1430 102 l 1,12,-1 - 1542 102 l 1,13,-1 - 1464 -125 l 1,14,15 - 1509 -141 1509 -141 1531.5 -174 c 128,-1,16 - 1554 -207 1554 -207 1554 -238 c 0,17,18 - 1554 -287 1554 -287 1500 -329 c 128,-1,19 - 1446 -371 1446 -371 1374 -397 c 1,20,-1 - 1360 -373 l 1,21,22 - 1390 -353 1390 -353 1414 -320.5 c 128,-1,23 - 1438 -288 1438 -288 1438 -254 c 0,24,25 - 1438 -194 1438 -194 1346 -164 c 1,26,-1 - 1411 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10044 -Encoding: 1066 1066 424 -Width: 1306 -VWidth: 0 -Flags: W -HStem: 0 102<535 921> 799 102<719 1073> 1331 102<352 643> -VStem: 1143 172<362 724> -AnchorPoint: "top" 756 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1315 547 m 0,0,1 - 1315 482 1315 482 1291.5 408.5 c 128,-1,2 - 1268 335 1268 335 1220 262.5 c 128,-1,3 - 1172 190 1172 190 1106 131.5 c 128,-1,4 - 1040 73 1040 73 945.5 36.5 c 128,-1,5 - 851 0 851 0 745 0 c 2,6,-1 - 336 0 l 1,7,-1 - 643 1331 l 1,8,-1 - 328 1331 l 1,9,-1 - 352 1434 l 1,10,-1 - 842 1434 l 1,11,-1 - 719 901 l 1,12,-1 - 950 901 l 2,13,14 - 1037 901 1037 901 1108 871 c 128,-1,15 - 1179 841 1179 841 1223 791 c 128,-1,16 - 1267 741 1267 741 1291 678.5 c 128,-1,17 - 1315 616 1315 616 1315 547 c 0,0,1 -801 102 m 2,18,19 - 888 102 888 102 969 173.5 c 128,-1,20 - 1050 245 1050 245 1096.5 351.5 c 128,-1,21 - 1143 458 1143 458 1143 561 c 0,22,23 - 1143 608 1143 608 1133 649 c 128,-1,24 - 1123 690 1123 690 1102.5 724.5 c 128,-1,25 - 1082 759 1082 759 1046 779 c 128,-1,26 - 1010 799 1010 799 961 799 c 2,27,-1 - 694 799 l 1,28,-1 - 535 102 l 1,29,-1 - 801 102 l 2,18,19 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10045 -Encoding: 1067 1067 425 -Width: 1349 -VWidth: 0 -Flags: W -HStem: 0 43<1075 1259> 0 102<281 667> 799 102<465 819> 1393 41<404 588 1397 1581> -VStem: 889 172<362 724> 1075 506 -AnchorPoint: "top" 975 1442 basechar 0 -LayerCount: 2 -Fore -Refer: 426 1068 N 1 0 0 1 0 0 2 -Refer: 36 73 N 1 0 0 1 983 0 2 -Validated: 1 -EndChar - -StartChar: afii10046 -Encoding: 1068 1068 426 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<281 667> 799 102<465 819> 1393 41G<404 588> -VStem: 889 172<362 724> -AnchorPoint: "top" 745 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -547 102 m 2,0,1 - 634 102 634 102 715 173.5 c 128,-1,2 - 796 245 796 245 842.5 351.5 c 128,-1,3 - 889 458 889 458 889 561 c 0,4,5 - 889 608 889 608 879 649 c 128,-1,6 - 869 690 869 690 848.5 724.5 c 128,-1,7 - 828 759 828 759 792 779 c 128,-1,8 - 756 799 756 799 707 799 c 2,9,-1 - 440 799 l 1,10,-1 - 281 102 l 1,11,-1 - 547 102 l 2,0,1 -1061 547 m 0,12,13 - 1061 482 1061 482 1038 408.5 c 128,-1,14 - 1015 335 1015 335 966.5 262.5 c 128,-1,15 - 918 190 918 190 852 131.5 c 128,-1,16 - 786 73 786 73 692 36.5 c 128,-1,17 - 598 0 598 0 492 0 c 2,18,-1 - 82 0 l 1,19,-1 - 414 1434 l 1,20,-1 - 588 1434 l 1,21,-1 - 465 901 l 1,22,-1 - 696 901 l 2,23,24 - 783 901 783 901 854 871 c 128,-1,25 - 925 841 925 841 969 791 c 128,-1,26 - 1013 741 1013 741 1037 678.5 c 128,-1,27 - 1061 616 1061 616 1061 547 c 0,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10047 -Encoding: 1069 1069 427 -Width: 1282 -VWidth: 0 -Flags: W -HStem: -20 102<352 762> 713 102<717 1198> 1352 102<677 1087> -VStem: 1233 172<818 1191> -AnchorPoint: "top" 926 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -111 209 m 1,0,-1 - 244 264 l 1,1,2 - 264 216 264 216 286 185.5 c 128,-1,3 - 308 155 308 155 346 130 c 128,-1,4 - 384 105 384 105 443 93.5 c 128,-1,5 - 502 82 502 82 588 82 c 0,6,7 - 649 82 649 82 716.5 104 c 128,-1,8 - 784 126 784 126 857 175.5 c 128,-1,9 - 930 225 930 225 994.5 296 c 128,-1,10 - 1059 367 1059 367 1113.5 475.5 c 128,-1,11 - 1168 584 1168 584 1198 713 c 1,12,-1 - 692 713 l 1,13,-1 - 717 815 l 1,14,-1 - 1219 815 l 1,15,16 - 1233 911 1233 911 1233 969 c 0,17,18 - 1233 1157 1233 1157 1148.5 1254.5 c 128,-1,19 - 1064 1352 1064 1352 920 1352 c 0,20,21 - 771 1352 771 1352 671 1306 c 128,-1,22 - 571 1260 571 1260 494 1178 c 1,23,-1 - 354 1245 l 1,24,25 - 458 1344 458 1344 588.5 1399 c 128,-1,26 - 719 1454 719 1454 913 1454 c 0,27,28 - 1020 1454 1020 1454 1108.5 1424.5 c 128,-1,29 - 1197 1395 1197 1395 1264 1336 c 128,-1,30 - 1331 1277 1331 1277 1368 1182 c 128,-1,31 - 1405 1087 1405 1087 1405 963 c 0,32,33 - 1405 856 1405 856 1374 717 c 1,34,35 - 1339 568 1339 568 1274 444.5 c 128,-1,36 - 1209 321 1209 321 1127 236 c 128,-1,37 - 1045 151 1045 151 946 92.5 c 128,-1,38 - 847 34 847 34 744 7 c 128,-1,39 - 641 -20 641 -20 535 -20 c 0,40,41 - 237 -20 237 -20 111 209 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10048 -Encoding: 1070 1070 428 -Width: 1615 -VWidth: 0 -Flags: W -HStem: -20 102<845 1147> 0 43G<92 276> 713 102<455 553> 1352 102<1097 1414> 1393 41G<414 598> -VStem: 524 174<258 710> 1565 174<668 1190> -AnchorPoint: "top" 913 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1255 1352 m 0,0,1 - 1162 1352 1162 1352 1074 1295.5 c 128,-1,2 - 986 1239 986 1239 919.5 1146.5 c 128,-1,3 - 853 1054 853 1054 802 940 c 128,-1,4 - 751 826 751 826 724.5 706.5 c 128,-1,5 - 698 587 698 587 698 481 c 0,6,7 - 698 380 698 380 723.5 301 c 128,-1,8 - 749 222 749 222 791 175.5 c 128,-1,9 - 833 129 833 129 881.5 105.5 c 128,-1,10 - 930 82 930 82 981 82 c 0,11,12 - 1078 82 1078 82 1169.5 136 c 128,-1,13 - 1261 190 1261 190 1331.5 280.5 c 128,-1,14 - 1402 371 1402 371 1455.5 484.5 c 128,-1,15 - 1509 598 1509 598 1537 723.5 c 128,-1,16 - 1565 849 1565 849 1565 967 c 0,17,18 - 1565 1159 1565 1159 1478.5 1255.5 c 128,-1,19 - 1392 1352 1392 1352 1255 1352 c 0,0,1 -1739 971 m 0,20,21 - 1739 896 1739 896 1726.5 810.5 c 128,-1,22 - 1714 725 1714 725 1685 628 c 128,-1,23 - 1656 531 1656 531 1613 440 c 128,-1,24 - 1570 349 1570 349 1505 264.5 c 128,-1,25 - 1440 180 1440 180 1361.5 117.5 c 128,-1,26 - 1283 55 1283 55 1175.5 17.5 c 128,-1,27 - 1068 -20 1068 -20 946 -20 c 0,28,29 - 860 -20 860 -20 785.5 9.5 c 128,-1,30 - 711 39 711 39 651.5 97 c 128,-1,31 - 592 155 592 155 558 250 c 128,-1,32 - 524 345 524 345 524 467 c 0,33,34 - 524 580 524 580 553 713 c 1,35,-1 - 430 713 l 1,36,-1 - 266 0 l 1,37,-1 - 92 0 l 1,38,-1 - 424 1434 l 1,39,-1 - 598 1434 l 1,40,-1 - 455 815 l 1,41,-1 - 582 815 l 1,42,43 - 621 944 621 944 680 1051 c 128,-1,44 - 739 1158 739 1158 807.5 1231.5 c 128,-1,45 - 876 1305 876 1305 954.5 1356 c 128,-1,46 - 1033 1407 1033 1407 1111.5 1430.5 c 128,-1,47 - 1190 1454 1190 1454 1268 1454 c 0,48,49 - 1482 1454 1482 1454 1610.5 1333 c 128,-1,50 - 1739 1212 1739 1212 1739 971 c 0,20,21 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10049 -Encoding: 1071 1071 429 -Width: 1120 -VWidth: 0 -Flags: W -HStem: 0 119<68 157> 655 102<725 991> 1331 102<730 1147> -VStem: 381 174<817 1139> -AnchorPoint: "top" 958 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -870 1331 m 2,0,1 - 780 1331 780 1331 706 1273 c 128,-1,2 - 632 1215 632 1215 593.5 1131 c 128,-1,3 - 555 1047 555 1047 555 961 c 128,-1,4 - 555 875 555 875 599 816.5 c 128,-1,5 - 643 758 643 758 737 758 c 2,6,-1 - 1014 758 l 1,7,-1 - 1147 1331 l 1,8,-1 - 870 1331 l 2,0,1 -381 963 m 0,9,10 - 381 1041 381 1041 417 1122 c 128,-1,11 - 453 1203 453 1203 519 1273.5 c 128,-1,12 - 585 1344 585 1344 692 1389 c 128,-1,13 - 799 1434 799 1434 926 1434 c 2,14,-1 - 1346 1434 l 1,15,-1 - 1014 0 l 1,16,-1 - 840 0 l 1,17,-1 - 991 655 l 1,18,-1 - 764 655 l 1,19,20 - 725 619 725 619 672.5 550 c 128,-1,21 - 620 481 620 481 573 412 c 128,-1,22 - 526 343 526 343 463.5 266.5 c 128,-1,23 - 401 190 401 190 340 132.5 c 128,-1,24 - 279 75 279 75 200.5 37.5 c 128,-1,25 - 122 0 122 0 41 0 c 1,26,-1 - 68 119 l 1,27,28 - 118 119 118 119 180 179.5 c 128,-1,29 - 242 240 242 240 296 320 c 128,-1,30 - 350 400 350 400 431 507 c 128,-1,31 - 512 614 512 614 582 680 c 1,32,33 - 479 716 479 716 430 793 c 128,-1,34 - 381 870 381 870 381 963 c 0,9,10 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10065 -Encoding: 1072 1072 430 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> -VStem: 154 158<136 521> 711 172<113 272> 1004 72<93 131> -AnchorPoint: "top" 731 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10066 -Encoding: 1073 1073 431 -Width: 1007 -VWidth: 0 -Flags: W -HStem: -20 102<415 672> 819 102<511 825> 1202 102<676 1012> -VStem: 182 160<158 602> 891 168<375 750> -AnchorPoint: "top" 862 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -182 330 m 0,0,1 - 182 443 182 443 213.5 576.5 c 128,-1,2 - 245 710 245 710 303 837.5 c 128,-1,3 - 361 965 361 965 436 1070.5 c 128,-1,4 - 511 1176 511 1176 606.5 1240.5 c 128,-1,5 - 702 1305 702 1305 799 1305 c 2,6,-1 - 850 1305 l 2,7,8 - 911 1305 911 1305 977.5 1331.5 c 128,-1,9 - 1044 1358 1044 1358 1071 1397 c 1,10,-1 - 1133 1370 l 1,11,12 - 1131 1366 1131 1366 1128.5 1359.5 c 128,-1,13 - 1126 1353 1126 1353 1115.5 1334.5 c 128,-1,14 - 1105 1316 1105 1316 1092.5 1299.5 c 128,-1,15 - 1080 1283 1080 1283 1060 1262.5 c 128,-1,16 - 1040 1242 1040 1242 1018.5 1227 c 128,-1,17 - 997 1212 997 1212 967 1202 c 128,-1,18 - 937 1192 937 1192 905 1192 c 0,19,20 - 876 1192 876 1192 844 1197 c 128,-1,21 - 812 1202 812 1202 776 1202 c 0,22,23 - 703 1202 703 1202 624.5 1120 c 128,-1,24 - 546 1038 546 1038 475 866 c 1,25,26 - 597 922 597 922 705 922 c 0,27,28 - 888 922 888 922 973.5 835.5 c 128,-1,29 - 1059 749 1059 749 1059 602 c 0,30,31 - 1059 439 1059 439 981.5 295.5 c 128,-1,32 - 904 152 904 152 771.5 66 c 128,-1,33 - 639 -20 639 -20 487 -20 c 0,34,35 - 447 -20 447 -20 410 -12.5 c 128,-1,36 - 373 -5 373 -5 329.5 17.5 c 128,-1,37 - 286 40 286 40 255 77 c 128,-1,38 - 224 114 224 114 203 179 c 128,-1,39 - 182 244 182 244 182 330 c 0,0,1 -408 674 m 1,40,41 - 342 464 342 464 342 332 c 0,42,43 - 342 203 342 203 396.5 142.5 c 128,-1,44 - 451 82 451 82 541 82 c 0,45,46 - 615 82 615 82 682.5 130 c 128,-1,47 - 750 178 750 178 794.5 251.5 c 128,-1,48 - 839 325 839 325 865 413 c 128,-1,49 - 891 501 891 501 891 582 c 0,50,51 - 891 687 891 687 846 753 c 128,-1,52 - 801 819 801 819 711 819 c 0,53,54 - 613 819 613 819 529 784.5 c 128,-1,55 - 445 750 445 750 408 674 c 1,40,41 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10067 -Encoding: 1074 1074 432 -Width: 1007 -VWidth: 0 -Flags: W -HStem: -20 102<388 709> 440 102<371 731> 819 102<529 809> -VStem: 147 166<160 436> 811 164<177 383> 825 158<621 798> -AnchorPoint: "top" 674 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -651 819 m 0,0,1 - 570 819 570 819 485 740.5 c 128,-1,2 - 400 662 400 662 371 543 c 1,3,-1 - 551 543 l 2,4,5 - 654 543 654 543 729 585 c 128,-1,6 - 804 627 804 627 813 666 c 0,7,8 - 825 720 825 720 825 733 c 0,9,10 - 825 772 825 772 788 795.5 c 128,-1,11 - 751 819 751 819 651 819 c 0,0,1 -983 719 m 0,12,13 - 983 671 983 671 967.5 633.5 c 128,-1,14 - 952 596 952 596 933 575.5 c 128,-1,15 - 914 555 914 555 883.5 539 c 128,-1,16 - 853 523 853 523 837 518.5 c 128,-1,17 - 821 514 821 514 797 508 c 1,18,19 - 887 492 887 492 931 435 c 128,-1,20 - 975 378 975 378 975 309 c 0,21,22 - 975 267 975 267 956.5 222.5 c 128,-1,23 - 938 178 938 178 896.5 134 c 128,-1,24 - 855 90 855 90 797 56 c 128,-1,25 - 739 22 739 22 652.5 1 c 128,-1,26 - 566 -20 566 -20 465 -20 c 0,27,28 - 320 -20 320 -20 233.5 52.5 c 128,-1,29 - 147 125 147 125 147 246 c 0,30,31 - 147 273 147 273 158 326 c 1,32,-1 - 219 590 l 2,33,34 - 228 626 228 626 250 668.5 c 128,-1,35 - 272 711 272 711 309.5 756.5 c 128,-1,36 - 347 802 347 802 394 838.5 c 128,-1,37 - 441 875 441 875 504 898.5 c 128,-1,38 - 567 922 567 922 635 922 c 0,39,40 - 715 922 715 922 777 910.5 c 128,-1,41 - 839 899 839 899 877 879.5 c 128,-1,42 - 915 860 915 860 939.5 833 c 128,-1,43 - 964 806 964 806 973.5 778.5 c 128,-1,44 - 983 751 983 751 983 719 c 0,12,13 -528 82 m 0,45,46 - 596 82 596 82 649 99 c 128,-1,47 - 702 116 702 116 731.5 140.5 c 128,-1,48 - 761 165 761 165 780 196 c 128,-1,49 - 799 227 799 227 805 251 c 128,-1,50 - 811 275 811 275 811 295 c 0,51,52 - 811 360 811 360 744.5 400 c 128,-1,53 - 678 440 678 440 553 440 c 2,54,-1 - 348 440 l 1,55,56 - 313 294 313 294 313 279 c 0,57,58 - 313 250 313 250 324 218.5 c 128,-1,59 - 335 187 335 187 358.5 155 c 128,-1,60 - 382 123 382 123 426 102.5 c 128,-1,61 - 470 82 470 82 528 82 c 0,45,46 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10068 -Encoding: 1075 1075 433 -Width: 792 -VWidth: 0 -Flags: W -HStem: -20 102<371 621> 819 102<382 631> -VStem: 186 174<96 261> 641 174<661 805> -AnchorPoint: "top" 621 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -360 164 m 128,-1,1 - 360 120 360 120 393.5 101 c 128,-1,2 - 427 82 427 82 496 82 c 0,3,4 - 550 82 550 82 624 127.5 c 128,-1,5 - 698 173 698 173 723 221 c 1,6,-1 - 788 205 l 1,7,8 - 675 -20 675 -20 444 -20 c 0,9,10 - 310 -20 310 -20 248 27 c 128,-1,11 - 186 74 186 74 186 156 c 0,12,13 - 186 216 186 216 233 288 c 128,-1,14 - 280 360 280 360 347 423.5 c 128,-1,15 - 414 487 414 487 480.5 546 c 128,-1,16 - 547 605 547 605 594 656 c 128,-1,17 - 641 707 641 707 641 737 c 0,18,19 - 641 819 641 819 506 819 c 0,20,21 - 453 819 453 819 378 772.5 c 128,-1,22 - 303 726 303 726 276 678 c 1,23,-1 - 211 694 l 1,24,25 - 324 922 324 922 557 922 c 0,26,27 - 691 922 691 922 753 874.5 c 128,-1,28 - 815 827 815 827 815 745 c 0,29,30 - 815 699 815 699 768 637 c 128,-1,31 - 721 575 721 575 654.5 513.5 c 128,-1,32 - 588 452 588 452 521 391 c 128,-1,33 - 454 330 454 330 407 269 c 128,-1,0 - 360 208 360 208 360 164 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10069 -Encoding: 1076 1076 434 -Width: 1007 -VWidth: 0 -Flags: W -HStem: -20 102<422 692> 819 102<578 854> -VStem: 172 166<174 544> 897 168<385 777> -LayerCount: 2 -Fore -SplineSet -172 330 m 0,0,1 - 172 400 172 400 193 478.5 c 128,-1,2 - 214 557 214 557 258.5 636.5 c 128,-1,3 - 303 716 303 716 364.5 779 c 128,-1,4 - 426 842 426 842 516 882 c 128,-1,5 - 606 922 606 922 709 922 c 0,6,7 - 814 922 814 922 891 883 c 1,8,9 - 882 918 882 918 876.5 936.5 c 128,-1,10 - 871 955 871 955 850 1003 c 128,-1,11 - 829 1051 829 1051 802.5 1089.5 c 128,-1,12 - 776 1128 776 1128 726 1182 c 128,-1,13 - 676 1236 676 1236 612 1286 c 1,14,-1 - 737 1380 l 1,15,16 - 1065 1069 1065 1069 1065 670 c 0,17,18 - 1065 566 1065 566 1036 434 c 1,19,20 - 1013 337 1013 337 969 258.5 c 128,-1,21 - 925 180 925 180 870 129 c 128,-1,22 - 815 78 815 78 749.5 43.5 c 128,-1,23 - 684 9 684 9 620 -5.5 c 128,-1,24 - 556 -20 556 -20 492 -20 c 0,25,26 - 347 -20 347 -20 259.5 79 c 128,-1,27 - 172 178 172 178 172 330 c 0,0,1 -715 819 m 0,28,29 - 620 819 620 819 531.5 747 c 128,-1,30 - 443 675 443 675 390.5 566 c 128,-1,31 - 338 457 338 457 338 348 c 0,32,33 - 338 235 338 235 392 158.5 c 128,-1,34 - 446 82 446 82 545 82 c 0,35,36 - 626 82 626 82 690 122.5 c 128,-1,37 - 754 163 754 163 791.5 224 c 128,-1,38 - 829 285 829 285 854 363 c 128,-1,39 - 879 441 879 441 888 508 c 128,-1,40 - 897 575 897 575 897 635 c 0,41,42 - 897 733 897 733 854 776 c 128,-1,43 - 811 819 811 819 715 819 c 0,28,29 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10070 -Encoding: 1077 1077 435 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> -VStem: 150 166<182 446> 872 160<556 758> -AnchorPoint: "top" 733 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10072 -Encoding: 1078 1078 436 -Width: 1382 -VWidth: 0 -Flags: W -HStem: -20 102<91 202> 0 43G<610 784 1081 1255> 799 102<328 392 1335 1450> -VStem: 16 74<85 131> 1083 174<0 183> -AnchorPoint: "top" 926 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -862 379 m 1,0,-1 - 774 0 l 1,1,-1 - 610 0 l 1,2,-1 - 698 379 l 1,3,4 - 672 381 672 381 637 389 c 1,5,6 - 569 339 569 339 492.5 257.5 c 128,-1,7 - 416 176 416 176 365 102 c 1,8,9 - 324 45 324 45 267 12.5 c 128,-1,10 - 210 -20 210 -20 150 -20 c 0,11,12 - 91 -20 91 -20 53.5 13 c 128,-1,13 - 16 46 16 46 16 98 c 0,14,15 - 16 111 16 111 20 131 c 1,16,-1 - 90 131 l 1,17,-1 - 90 123 l 2,18,19 - 90 106 90 106 105.5 94 c 128,-1,20 - 121 82 121 82 143 82 c 0,21,22 - 158 82 158 82 175 97.5 c 128,-1,23 - 192 113 192 113 219.5 146.5 c 128,-1,24 - 247 180 247 180 282.5 221.5 c 128,-1,25 - 318 263 318 263 384 326.5 c 128,-1,26 - 450 390 450 390 530 453 c 1,27,28 - 500 485 500 485 481 534.5 c 128,-1,29 - 462 584 462 584 452.5 627.5 c 128,-1,30 - 443 671 443 671 429 711.5 c 128,-1,31 - 415 752 415 752 384.5 775.5 c 128,-1,32 - 354 799 354 799 303 799 c 1,33,-1 - 328 901 l 1,34,35 - 404 901 404 901 460 881.5 c 128,-1,36 - 516 862 516 862 547 830 c 128,-1,37 - 578 798 578 798 598.5 758.5 c 128,-1,38 - 619 719 619 719 630.5 676.5 c 128,-1,39 - 642 634 642 634 652.5 597.5 c 128,-1,40 - 663 561 663 561 680 531 c 128,-1,41 - 697 501 697 501 723 489 c 1,42,-1 - 819 901 l 1,43,-1 - 983 901 l 1,44,-1 - 887 489 l 1,45,46 - 919 501 919 501 950.5 531 c 128,-1,47 - 982 561 982 561 1009.5 597.5 c 128,-1,48 - 1037 634 1037 634 1068.5 676.5 c 128,-1,49 - 1100 719 1100 719 1138.5 758.5 c 128,-1,50 - 1177 798 1177 798 1223 830 c 128,-1,51 - 1269 862 1269 862 1334 881.5 c 128,-1,52 - 1399 901 1399 901 1475 901 c 1,53,-1 - 1450 799 l 1,54,55 - 1399 799 1399 799 1357.5 775.5 c 128,-1,56 - 1316 752 1316 752 1283.5 711.5 c 128,-1,57 - 1251 671 1251 671 1221 627.5 c 128,-1,58 - 1191 584 1191 584 1149.5 534.5 c 128,-1,59 - 1108 485 1108 485 1063 453 c 1,60,61 - 1145 351 1145 351 1201 216 c 128,-1,62 - 1257 81 1257 81 1257 16 c 0,63,64 - 1257 13 1257 13 1256 7.5 c 128,-1,65 - 1255 2 1255 2 1255 0 c 1,66,-1 - 1081 0 l 1,67,68 - 1083 8 1083 8 1083 27 c 0,69,70 - 1083 96 1083 96 1036 210.5 c 128,-1,71 - 989 325 989 325 930 389 c 1,72,73 - 883 381 883 381 862 379 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10073 -Encoding: 1079 1079 437 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<290 607> 451 102<422 660> 819 102<442 740> -VStem: 102 127<140 181> 713 166<179 402> 762 166<625 797> -AnchorPoint: "top" 662 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -879 319 m 0,0,1 - 879 275 879 275 866.5 231.5 c 128,-1,2 - 854 188 854 188 820 141.5 c 128,-1,3 - 786 95 786 95 734.5 60 c 128,-1,4 - 683 25 683 25 597.5 2.5 c 128,-1,5 - 512 -20 512 -20 403 -20 c 0,6,7 - 282 -20 282 -20 204 40.5 c 128,-1,8 - 126 101 126 101 102 178 c 1,9,-1 - 229 203 l 1,10,11 - 241 150 241 150 305.5 116 c 128,-1,12 - 370 82 370 82 451 82 c 0,13,14 - 515 82 515 82 567 103 c 128,-1,15 - 619 124 619 124 650 157 c 128,-1,16 - 681 190 681 190 697 228.5 c 128,-1,17 - 713 267 713 267 713 305 c 0,18,19 - 713 451 713 451 471 451 c 2,20,-1 - 399 451 l 1,21,-1 - 422 553 l 1,22,-1 - 479 553 l 2,23,24 - 557 553 557 553 615.5 569.5 c 128,-1,25 - 674 586 674 586 704 612 c 128,-1,26 - 734 638 734 638 748 665.5 c 128,-1,27 - 762 693 762 693 762 721 c 0,28,29 - 762 766 762 766 725 792.5 c 128,-1,30 - 688 819 688 819 621 819 c 0,31,32 - 530 819 530 819 468.5 791 c 128,-1,33 - 407 763 407 763 385 711 c 1,34,-1 - 270 735 l 1,35,36 - 315 814 315 814 404.5 868 c 128,-1,37 - 494 922 494 922 621 922 c 0,38,39 - 778 922 778 922 853 874.5 c 128,-1,40 - 928 827 928 827 928 745 c 0,41,42 - 928 672 928 672 879 611.5 c 128,-1,43 - 830 551 830 551 743 512 c 1,44,45 - 879 451 879 451 879 319 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10074 -Encoding: 1080 1080 438 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> -VStem: 154 172<137 501> 762 174<142 374> 1057 70<93 131> -AnchorPoint: "top" 719 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 19 117 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10075 -Encoding: 1081 1081 439 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1085 117<622 929> -VStem: 154 172<137 501> 539 78<1206 1284> 762 174<142 374> 942 76<1212 1296> 1057 70<93 131> -LayerCount: 2 -Back -SplineSet -763.904 1202.18 m 0 - 839.68 1202.18 923.648 1251.33 940.032 1296.38 c 1 - 1013.76 1275.9 l 1 - 976.896 1173.5 856.064 1085.44 737.28 1085.44 c 0 - 626.688 1085.44 548.864 1163.26 548.864 1257.47 c 0 - 548.864 1263.62 550.912 1269.76 550.912 1275.9 c 1 - 632.832 1296.38 l 1 - 632.832 1292.29 l 2 - 632.832 1249.28 690.176 1202.18 763.904 1202.18 c 0 -946.176 276.48 m 2 - 937.984 241.664 935.936 210.944 935.936 182.272 c 0 - 935.936 122.88 950.272 81.9199 978.944 81.9199 c 0 - 1015.81 81.9199 1050.62 104.448 1056.77 131.072 c 1 - 1126.4 131.072 l 1 - 1107.97 47.1035 1019.9 -20.4805 927.744 -20.4805 c 0 - 864.256 -20.4805 813.056 12.2881 784.384 61.4404 c 1 - 690.176 10.2402 571.392 -20.4805 475.136 -20.4805 c 0 - 251.904 -20.4805 153.6 63.4883 153.6 239.616 c 0 - 153.6 288.768 161.792 346.112 176.128 409.6 c 2 - 290.816 901.12 l 1 - 454.656 901.12 l 1 - 346.112 434.176 l 2 - 331.776 374.784 325.632 323.584 325.632 280.576 c 0 - 325.632 122.88 415.744 81.9199 528.384 81.9199 c 0 - 618.496 81.9199 690.176 116.736 761.856 174.08 c 1 - 761.856 186.368 765.952 200.704 768 212.992 c 2 - 927.744 901.12 l 1 - 1091.58 901.12 l 1 - 946.176 276.48 l 2 -EndSplineSet -Fore -Refer: 1072 57420 S 1 0 0 1 1040 -184 2 -Refer: 438 1080 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10076 -Encoding: 1082 1082 440 -Width: 956 -VWidth: 0 -Flags: W -HStem: 0 43G<182 355 749 948> 819 102<221 397> 860 41G<886 1120> -VStem: 150 70<770 808> 340 174<535 818> -AnchorPoint: "top" 709 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -457 477 m 1,0,-1 - 932 901 l 1,1,-1 - 1120 901 l 1,2,-1 - 670 502 l 1,3,-1 - 948 0 l 1,4,-1 - 772 0 l 1,5,-1 - 551 395 l 1,6,-1 - 408 268 l 1,7,-1 - 346 0 l 1,8,-1 - 182 0 l 1,9,-1 - 328 625 l 2,10,11 - 340 678 340 678 340 719 c 0,12,13 - 340 764 340 764 328 791.5 c 128,-1,14 - 316 819 316 819 295 819 c 0,15,16 - 267 819 267 819 245.5 804.5 c 128,-1,17 - 224 790 224 790 219 770 c 1,18,-1 - 150 770 l 1,19,20 - 164 833 164 833 221.5 877.5 c 128,-1,21 - 279 922 279 922 348 922 c 0,22,23 - 421 922 421 922 467.5 872 c 128,-1,24 - 514 822 514 822 514 745 c 0,25,26 - 514 728 514 728 506 688 c 1,27,-1 - 457 477 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10077 -Encoding: 1083 1083 441 -Width: 1259 -VWidth: 0 -Flags: W -HStem: -20 102<142 373 1029 1202> 799 102<821 1015> -VStem: 909 176<83 368> 1022 170<504 791> 1206 70<94 131> -AnchorPoint: "top" 1012 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1096 276 m 1,0,1 - 1085 219 1085 219 1085 184 c 0,2,3 - 1085 82 1085 82 1128 82 c 0,4,5 - 1153 82 1153 82 1177.5 96.5 c 128,-1,6 - 1202 111 1202 111 1206 131 c 1,7,-1 - 1276 131 l 1,8,9 - 1262 69 1262 69 1204 24.5 c 128,-1,10 - 1146 -20 1146 -20 1077 -20 c 0,11,12 - 1004 -20 1004 -20 956.5 27.5 c 128,-1,13 - 909 75 909 75 909 152 c 0,14,15 - 909 168 909 168 918 213 c 1,16,-1 - 1006 592 l 1,17,18 - 1022 674 1022 674 1022 711 c 0,19,20 - 1022 764 1022 764 999 781.5 c 128,-1,21 - 976 799 976 799 926 799 c 0,22,23 - 834 799 834 799 750.5 668 c 128,-1,24 - 667 537 667 537 602 260 c 0,25,26 - 585 187 585 187 545 131 c 128,-1,27 - 505 75 505 75 453 43 c 128,-1,28 - 401 11 401 11 345 -4.5 c 128,-1,29 - 289 -20 289 -20 233 -20 c 0,30,31 - 104 -20 104 -20 47 72 c 1,32,-1 - 190 133 l 1,33,34 - 212 82 212 82 287 82 c 0,35,36 - 347 82 347 82 386 140.5 c 128,-1,37 - 425 199 425 199 455 328 c 0,38,39 - 478 428 478 428 514 512.5 c 128,-1,40 - 550 597 550 597 589.5 654.5 c 128,-1,41 - 629 712 629 712 675 757 c 128,-1,42 - 721 802 721 802 762 828.5 c 128,-1,43 - 803 855 803 855 844 872 c 128,-1,44 - 885 889 885 889 914 895 c 128,-1,45 - 943 901 943 901 965 901 c 0,46,47 - 1192 901 1192 901 1192 727 c 0,48,49 - 1192 689 1192 689 1180 643 c 1,50,-1 - 1096 276 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10078 -Encoding: 1084 1084 442 -Width: 1226 -VWidth: 0 -Flags: W -HStem: -20 102<75 183> 0 43G<956 1130> 860 41G<386 571 1135 1329> -VStem: 0 74<85 131> -AnchorPoint: "top" 891 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1100 614 m 1,0,-1 - 659 25 l 1,1,-1 - 492 612 l 1,2,-1 - 399 213 l 2,3,4 - 376 114 376 114 298 47 c 128,-1,5 - 220 -20 220 -20 133 -20 c 0,6,7 - 74 -20 74 -20 37 14 c 128,-1,8 - 0 48 0 48 0 100 c 0,9,10 - 0 111 0 111 4 131 c 1,11,-1 - 74 131 l 1,12,-1 - 74 123 l 2,13,14 - 74 105 74 105 88.5 93.5 c 128,-1,15 - 103 82 103 82 127 82 c 0,16,17 - 161 82 161 82 199 147 c 128,-1,18 - 237 212 237 212 250 276 c 1,19,-1 - 395 901 l 1,20,-1 - 559 901 l 1,21,-1 - 725 311 l 1,22,-1 - 1165 901 l 1,23,-1 - 1329 901 l 1,24,-1 - 1120 0 l 1,25,-1 - 956 0 l 1,26,-1 - 1100 614 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10079 -Encoding: 1085 1085 443 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -20 102<900 1075> 0 43G<92 266> 440 102<381 842> 860 41G<292 465 939 1112> -VStem: 782 174<82 268> 1077 70<93 131> -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -967 276 m 1,0,1 - 956 223 956 223 956 184 c 0,2,3 - 956 82 956 82 999 82 c 0,4,5 - 1026 82 1026 82 1049.5 96.5 c 128,-1,6 - 1073 111 1073 111 1077 131 c 1,7,-1 - 1147 131 l 1,8,9 - 1132 68 1132 68 1074.5 24 c 128,-1,10 - 1017 -20 1017 -20 948 -20 c 0,11,12 - 875 -20 875 -20 828.5 28.5 c 128,-1,13 - 782 77 782 77 782 154 c 0,14,15 - 782 183 782 183 788 213 c 1,16,-1 - 842 440 l 1,17,-1 - 358 440 l 1,18,-1 - 256 0 l 1,19,-1 - 92 0 l 1,20,-1 - 301 901 l 1,21,-1 - 465 901 l 1,22,-1 - 381 543 l 1,23,-1 - 864 543 l 1,24,-1 - 948 901 l 1,25,-1 - 1112 901 l 1,26,-1 - 967 276 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10080 -Encoding: 1086 1086 444 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> -VStem: 147 164<157 530> 897 168<366 739> -AnchorPoint: "top" 737 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10081 -Encoding: 1087 1087 445 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<184 358 821 994> 819 102<221 380 602 914> -VStem: 150 70<770 808> 954 164<389 778> -AnchorPoint: "top" 817 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 4 110 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10082 -Encoding: 1088 1088 446 -Width: 1107 -VWidth: 0 -Flags: W -HStem: -16 102<505 758> 823 102<229 383 639 924> -VStem: 150 70<770 804> 993 164<365 748> -AnchorPoint: "top" 850 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 16 112 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10083 -Encoding: 1089 1089 447 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 819 102<553 814> -VStem: 150 166<182 543> 872 147<669 756> -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 5 99 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10084 -Encoding: 1090 1090 448 -Width: 1574 -VWidth: 0 -Flags: W -HStem: 0 43<184 358 760 933 1317 1490> 819 102<221 380 584 880 1151 1437> -VStem: 150 70<770 808> 340 174<527 759> 1460 158<430 798> -AnchorPoint: "top" 1075 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 11 109 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10085 -Encoding: 1091 1091 449 -Width: 1021 -VWidth: 0 -Flags: W -HStem: -348 102<335 623> -20 102<380 692> 860 41G<281 455 918 1092> -VStem: 154 172<137 501> -AnchorPoint: "top" 719 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -758 172 m 1,0,-1 - 928 901 l 1,1,-1 - 1092 901 l 1,2,-1 - 920 160 l 2,3,4 - 904 92 904 92 892.5 45.5 c 128,-1,5 - 881 -1 881 -1 866 -50 c 128,-1,6 - 851 -99 851 -99 837.5 -131 c 128,-1,7 - 824 -163 824 -163 805.5 -196 c 128,-1,8 - 787 -229 787 -229 767.5 -248.5 c 128,-1,9 - 748 -268 748 -268 721.5 -287 c 128,-1,10 - 695 -306 695 -306 665.5 -316 c 128,-1,11 - 636 -326 636 -326 597 -334 c 128,-1,12 - 558 -342 558 -342 514 -345 c 128,-1,13 - 470 -348 470 -348 414 -348 c 0,14,15 - 361 -348 361 -348 309.5 -333.5 c 128,-1,16 - 258 -319 258 -319 226.5 -303 c 128,-1,17 - 195 -287 195 -287 141 -256 c 1,18,-1 - 268 -150 l 1,19,20 - 333 -203 333 -203 374.5 -224.5 c 128,-1,21 - 416 -246 416 -246 467 -246 c 0,22,23 - 519 -246 519 -246 555.5 -236 c 128,-1,24 - 592 -226 592 -226 618 -208 c 128,-1,25 - 644 -190 644 -190 663.5 -153.5 c 128,-1,26 - 683 -117 683 -117 696.5 -76 c 128,-1,27 - 710 -35 710 -35 727 33 c 1,28,29 - 603 -20 603 -20 475 -20 c 0,30,31 - 309 -20 309 -20 231.5 43.5 c 128,-1,32 - 154 107 154 107 154 240 c 0,33,34 - 154 311 154 311 176 410 c 1,35,-1 - 291 901 l 1,36,-1 - 455 901 l 1,37,-1 - 346 434 l 2,38,39 - 326 350 326 350 326 281 c 0,40,41 - 326 171 326 171 379.5 126.5 c 128,-1,42 - 433 82 433 82 528 82 c 0,43,44 - 643 82 643 82 758 172 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10086 -Encoding: 1092 1092 450 -Width: 1460 -VWidth: 0 -Flags: W -HStem: -430 102<444 552> -16 102<360 599 930 1168> 823 102<503 727 1081 1334> 1253 102<1124 1235> -VStem: 154 162<130 539> 371 72<-324 -279> 776 113<369 517> 1235 72<1204 1249> 1362 160<401 800> -AnchorPoint: "top" 1061 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1522 657 m 0,0,1 - 1522 584 1522 584 1507 507 c 128,-1,2 - 1492 430 1492 430 1464 354.5 c 128,-1,3 - 1436 279 1436 279 1391.5 212 c 128,-1,4 - 1347 145 1347 145 1291.5 94 c 128,-1,5 - 1236 43 1236 43 1161.5 13.5 c 128,-1,6 - 1087 -16 1087 -16 1004 -16 c 0,7,8 - 939 -16 939 -16 904.5 1 c 128,-1,9 - 870 18 870 18 827 59 c 1,10,-1 - 768 -197 l 2,11,12 - 745 -297 745 -297 668 -363.5 c 128,-1,13 - 591 -430 591 -430 504 -430 c 0,14,15 - 449 -430 449 -430 410 -398 c 128,-1,16 - 371 -366 371 -366 371 -313 c 0,17,18 - 371 -291 371 -291 375 -279 c 1,19,-1 - 444 -279 l 1,20,21 - 444 -281 444 -281 443 -284.5 c 128,-1,22 - 442 -288 442 -288 442 -289 c 0,23,24 - 442 -305 442 -305 456.5 -316.5 c 128,-1,25 - 471 -328 471 -328 496 -328 c 0,26,27 - 529 -328 529 -328 566 -263 c 128,-1,28 - 603 -198 603 -198 618 -133 c 2,29,-1 - 664 59 l 1,30,31 - 546 -16 546 -16 420 -16 c 0,32,33 - 284 -16 284 -16 219 62 c 128,-1,34 - 154 140 154 140 154 274 c 0,35,36 - 154 312 154 312 159.5 360.5 c 128,-1,37 - 165 409 165 409 180 473 c 128,-1,38 - 195 537 195 537 217.5 598 c 128,-1,39 - 240 659 240 659 277 719.5 c 128,-1,40 - 314 780 314 780 360 825 c 128,-1,41 - 406 870 406 870 472.5 898 c 128,-1,42 - 539 926 539 926 616 926 c 0,43,44 - 770 926 770 926 850 866 c 1,45,-1 - 909 1122 l 2,46,47 - 932 1222 932 1222 1009.5 1289 c 128,-1,48 - 1087 1356 1087 1356 1174 1356 c 0,49,50 - 1228 1356 1228 1356 1267.5 1324 c 128,-1,51 - 1307 1292 1307 1292 1307 1239 c 0,52,53 - 1307 1228 1307 1228 1303 1204 c 1,54,-1 - 1233 1204 l 1,55,56 - 1233 1205 1233 1205 1234 1208 c 128,-1,57 - 1235 1211 1235 1211 1235 1212 c 0,58,59 - 1235 1228 1235 1228 1220 1240.5 c 128,-1,60 - 1205 1253 1205 1253 1180 1253 c 0,61,62 - 1147 1253 1147 1253 1109.5 1188.5 c 128,-1,63 - 1072 1124 1072 1124 1057 1059 c 2,64,-1 - 1014 866 l 1,65,66 - 1076 900 1076 900 1122.5 913 c 128,-1,67 - 1169 926 1169 926 1241 926 c 0,68,69 - 1386 926 1386 926 1454 859.5 c 128,-1,70 - 1522 793 1522 793 1522 657 c 0,0,1 -760 475 m 1,71,72 - 776 553 776 553 776 614 c 0,73,74 - 776 709 776 709 738.5 766 c 128,-1,75 - 701 823 701 823 625 823 c 0,76,77 - 569 823 569 823 522 795 c 128,-1,78 - 475 767 475 767 443.5 723 c 128,-1,79 - 412 679 412 679 388 621.5 c 128,-1,80 - 364 564 364 564 350.5 510 c 128,-1,81 - 337 456 337 456 328.5 403 c 128,-1,82 - 320 350 320 350 317.5 319.5 c 128,-1,83 - 315 289 315 289 315 274 c 0,84,85 - 315 86 315 86 475 86 c 0,86,87 - 525 86 525 86 567 109.5 c 128,-1,88 - 609 133 609 133 637.5 168 c 128,-1,89 - 666 203 666 203 690.5 258 c 128,-1,90 - 715 313 715 313 729.5 361.5 c 128,-1,91 - 744 410 744 410 760 475 c 1,71,72 -1059 86 m 0,92,93 - 1122 86 1122 86 1175.5 134.5 c 128,-1,94 - 1229 183 1229 183 1262.5 253.5 c 128,-1,95 - 1296 324 1296 324 1319.5 407 c 128,-1,96 - 1343 490 1343 490 1352.5 556 c 128,-1,97 - 1362 622 1362 622 1362 664 c 0,98,99 - 1362 823 1362 823 1249 823 c 0,100,101 - 1201 823 1201 823 1161 813 c 128,-1,102 - 1121 803 1121 803 1091.5 786.5 c 128,-1,103 - 1062 770 1062 770 1037.5 743 c 128,-1,104 - 1013 716 1013 716 997 689 c 128,-1,105 - 981 662 981 662 966.5 623 c 128,-1,106 - 952 584 952 584 943 552 c 128,-1,107 - 934 520 934 520 924 475 c 0,108,109 - 889 331 889 331 889 258 c 0,110,111 - 889 86 889 86 1059 86 c 0,92,93 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10087 -Encoding: 1093 1093 451 -Width: 954 -VWidth: 0 -Flags: W -HStem: 0 43<61 276 687 883> 860 41<328 521 822 1034> -AnchorPoint: "top" 707 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 23 120 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10088 -Encoding: 1094 1094 452 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690> 860 41G<281 455 918 1092> -VStem: 154 172<137 501> 762 174<142 374> 922 117<-320 -186> 1057 70<93 131> -AnchorPoint: "top" 719 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -946 276 m 2,0,1 - 936 232 936 232 936 182 c 0,2,3 - 936 82 936 82 979 82 c 0,4,5 - 1007 82 1007 82 1029.5 96.5 c 128,-1,6 - 1052 111 1052 111 1057 131 c 1,7,-1 - 1126 131 l 1,8,9 - 1116 82 1116 82 1077 42.5 c 128,-1,10 - 1038 3 1038 3 985 -12 c 1,11,-1 - 948 -125 l 1,12,13 - 993 -141 993 -141 1015.5 -174 c 128,-1,14 - 1038 -207 1038 -207 1038 -238 c 0,15,16 - 1038 -287 1038 -287 984 -329 c 128,-1,17 - 930 -371 930 -371 858 -397 c 1,18,-1 - 844 -373 l 1,19,20 - 874 -353 874 -353 898 -320.5 c 128,-1,21 - 922 -288 922 -288 922 -254 c 0,22,23 - 922 -194 922 -194 829 -164 c 1,24,-1 - 889 -16 l 1,25,26 - 820 -1 820 -1 784 61 c 1,27,28 - 714 23 714 23 631 1.5 c 128,-1,29 - 548 -20 548 -20 475 -20 c 0,30,31 - 309 -20 309 -20 231.5 43.5 c 128,-1,32 - 154 107 154 107 154 240 c 0,33,34 - 154 311 154 311 176 410 c 1,35,-1 - 291 901 l 1,36,-1 - 455 901 l 1,37,-1 - 346 434 l 2,38,39 - 326 350 326 350 326 281 c 0,40,41 - 326 171 326 171 379.5 126.5 c 128,-1,42 - 433 82 433 82 528 82 c 0,43,44 - 646 82 646 82 762 174 c 1,45,46 - 762 177 762 177 768 213 c 1,47,-1 - 928 901 l 1,48,-1 - 1092 901 l 1,49,-1 - 946 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10089 -Encoding: 1095 1095 453 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<828 1003> 313 102<448 727> 860 41G<284 465 867 1040> -VStem: 244 172<446 845> 711 174<82 266> 1006 70<93 131> -AnchorPoint: "top" 698 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -895 276 m 1,0,1 - 885 228 885 228 885 184 c 0,2,3 - 885 82 885 82 928 82 c 0,4,5 - 955 82 955 82 978.5 96.5 c 128,-1,6 - 1002 111 1002 111 1006 131 c 1,7,-1 - 1075 131 l 1,8,9 - 1060 68 1060 68 1003 24 c 128,-1,10 - 946 -20 946 -20 877 -20 c 0,11,12 - 804 -20 804 -20 757.5 28.5 c 128,-1,13 - 711 77 711 77 711 154 c 0,14,15 - 711 183 711 183 717 213 c 2,16,-1 - 752 365 l 1,17,18 - 639 313 639 313 520 313 c 0,19,20 - 369 313 369 313 306.5 368 c 128,-1,21 - 244 423 244 423 244 549 c 0,22,23 - 244 662 244 662 301 901 c 1,24,-1 - 465 901 l 1,25,26 - 416 701 416 701 416 584 c 0,27,28 - 416 482 416 482 454.5 449 c 128,-1,29 - 493 416 493 416 575 416 c 0,30,31 - 700 416 700 416 786 512 c 1,32,-1 - 877 901 l 1,33,-1 - 1040 901 l 1,34,-1 - 895 276 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10090 -Encoding: 1096 1096 454 -Width: 1605 -VWidth: 0 -Flags: W -HStem: -20 102<335 620 892 1187 1392 1551> 860 41G<281 455 838 1012 1414 1587> -VStem: 154 158<103 471> 1257 174<142 374> 1552 70<93 131> -AnchorPoint: "top" 946 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1444 276 m 2,0,1 - 1432 223 1432 223 1432 182 c 0,2,3 - 1432 137 1432 137 1444 109.5 c 128,-1,4 - 1456 82 1456 82 1477 82 c 0,5,6 - 1504 82 1504 82 1525.5 96.5 c 128,-1,7 - 1547 111 1547 111 1552 131 c 1,8,-1 - 1622 131 l 1,9,10 - 1609 68 1609 68 1550.5 24 c 128,-1,11 - 1492 -20 1492 -20 1423 -20 c 0,12,13 - 1329 -20 1329 -20 1282 59 c 1,14,15 - 1215 18 1215 18 1158 -1 c 128,-1,16 - 1101 -20 1101 -20 1032 -20 c 0,17,18 - 819 -20 819 -20 750 86 c 1,19,20 - 590 -20 590 -20 465 -20 c 0,21,22 - 301 -20 301 -20 227.5 41 c 128,-1,23 - 154 102 154 102 154 231 c 0,24,25 - 154 308 154 308 178 410 c 2,26,-1 - 291 901 l 1,27,-1 - 455 901 l 1,28,-1 - 340 401 l 2,29,30 - 311 272 311 272 311 215 c 0,31,32 - 311 137 311 137 346.5 109.5 c 128,-1,33 - 382 82 382 82 459 82 c 0,34,35 - 598 82 598 82 682 182 c 1,36,-1 - 848 901 l 1,37,-1 - 1012 901 l 1,38,-1 - 897 401 l 2,39,40 - 868 275 868 275 868 217 c 0,41,42 - 868 137 868 137 905.5 109.5 c 128,-1,43 - 943 82 943 82 1026 82 c 0,44,45 - 1141 82 1141 82 1257 174 c 1,46,47 - 1257 181 1257 181 1260 194.5 c 128,-1,48 - 1263 208 1263 208 1264 213 c 2,49,-1 - 1423 901 l 1,50,-1 - 1587 901 l 1,51,-1 - 1444 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10091 -Encoding: 1097 1097 455 -Width: 1605 -VWidth: 0 -Flags: W -HStem: -20 102<335 620 892 1187> 860 41G<281 455 838 1012 1414 1587> -VStem: 154 158<103 471> 1257 174<142 374> 1411 117<-320 -186> 1552 70<94 131> -AnchorPoint: "top" 946 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1444 276 m 2,0,1 - 1432 223 1432 223 1432 182 c 0,2,3 - 1432 137 1432 137 1444 109.5 c 128,-1,4 - 1456 82 1456 82 1477 82 c 0,5,6 - 1504 82 1504 82 1525.5 96.5 c 128,-1,7 - 1547 111 1547 111 1552 131 c 1,8,-1 - 1622 131 l 1,9,10 - 1612 80 1612 80 1570.5 40 c 128,-1,11 - 1529 0 1529 0 1475 -14 c 1,12,-1 - 1438 -125 l 1,13,14 - 1483 -141 1483 -141 1505.5 -174 c 128,-1,15 - 1528 -207 1528 -207 1528 -238 c 0,16,17 - 1528 -287 1528 -287 1474 -329 c 128,-1,18 - 1420 -371 1420 -371 1348 -397 c 1,19,-1 - 1333 -373 l 1,20,21 - 1363 -353 1363 -353 1387 -320.5 c 128,-1,22 - 1411 -288 1411 -288 1411 -254 c 0,23,24 - 1411 -194 1411 -194 1319 -164 c 1,25,-1 - 1378 -14 l 1,26,27 - 1313 2 1313 2 1282 59 c 1,28,29 - 1215 18 1215 18 1158 -1 c 128,-1,30 - 1101 -20 1101 -20 1032 -20 c 0,31,32 - 819 -20 819 -20 750 86 c 1,33,34 - 590 -20 590 -20 465 -20 c 0,35,36 - 301 -20 301 -20 227.5 41 c 128,-1,37 - 154 102 154 102 154 231 c 0,38,39 - 154 308 154 308 178 410 c 2,40,-1 - 291 901 l 1,41,-1 - 455 901 l 1,42,-1 - 340 401 l 2,43,44 - 311 272 311 272 311 215 c 0,45,46 - 311 137 311 137 346.5 109.5 c 128,-1,47 - 382 82 382 82 459 82 c 0,48,49 - 598 82 598 82 682 182 c 1,50,-1 - 848 901 l 1,51,-1 - 1012 901 l 1,52,-1 - 897 401 l 2,53,54 - 868 275 868 275 868 217 c 0,55,56 - 868 137 868 137 905.5 109.5 c 128,-1,57 - 943 82 943 82 1026 82 c 0,58,59 - 1141 82 1141 82 1257 174 c 1,60,61 - 1257 181 1257 181 1260 194.5 c 128,-1,62 - 1263 208 1263 208 1264 213 c 2,63,-1 - 1423 901 l 1,64,-1 - 1587 901 l 1,65,-1 - 1444 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10092 -Encoding: 1098 1098 456 -Width: 1114 -VWidth: 0 -Flags: W -HStem: -20 102<582 855> 481 102<653 938> 799 102<256 504> -VStem: 385 156<124 368> 967 168<201 452> -AnchorPoint: "top" 784 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -811 481 m 0,0,1 - 749 481 749 481 700 461.5 c 128,-1,2 - 651 442 651 442 622 413.5 c 128,-1,3 - 593 385 593 385 574 348.5 c 128,-1,4 - 555 312 555 312 548 281 c 128,-1,5 - 541 250 541 250 541 223 c 0,6,7 - 541 153 541 153 591 117.5 c 128,-1,8 - 641 82 641 82 721 82 c 0,9,10 - 830 82 830 82 898.5 166 c 128,-1,11 - 967 250 967 250 967 352 c 0,12,13 - 967 481 967 481 811 481 c 0,0,1 -1135 381 m 0,14,15 - 1135 329 1135 329 1122 277.5 c 128,-1,16 - 1109 226 1109 226 1074.5 171 c 128,-1,17 - 1040 116 1040 116 988 74.5 c 128,-1,18 - 936 33 936 33 850.5 6.5 c 128,-1,19 - 765 -20 765 -20 657 -20 c 0,20,21 - 629 -20 629 -20 599 -15.5 c 128,-1,22 - 569 -11 569 -11 529 5 c 128,-1,23 - 489 21 489 21 458.5 46.5 c 128,-1,24 - 428 72 428 72 406.5 120.5 c 128,-1,25 - 385 169 385 169 385 233 c 0,26,27 - 385 288 385 288 399 348 c 2,28,-1 - 504 799 l 1,29,-1 - 231 799 l 1,30,-1 - 256 901 l 1,31,-1 - 692 901 l 1,32,-1 - 604 522 l 1,33,34 - 627 545 627 545 694.5 564.5 c 128,-1,35 - 762 584 762 584 811 584 c 0,36,37 - 981 584 981 584 1058 534 c 128,-1,38 - 1135 484 1135 484 1135 381 c 0,14,15 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10093 -Encoding: 1099 1099 457 -Width: 1302 -VWidth: 0 -Flags: W -HStem: -20 102<345 617 1071 1248> 481 102<415 700> 860 41<281 455 1111 1284> -VStem: 147 156<124 366> 729 168<201 452> 954 174<85 272> 1249 70<93 131> -AnchorPoint: "top" 815 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 458 1100 N 1 0 0 1 0 0 2 -Refer: 112 305 N 1 0 0 1 819 0 2 -Validated: 1 -EndChar - -StartChar: afii10094 -Encoding: 1100 1100 458 -Width: 876 -VWidth: 0 -Flags: W -HStem: -20 102<345 617> 481 102<415 700> 860 41G<281 455> -VStem: 147 156<124 366> 729 168<201 452> -AnchorPoint: "top" 391 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -897 381 m 0,0,1 - 897 329 897 329 884 277.5 c 128,-1,2 - 871 226 871 226 836.5 171 c 128,-1,3 - 802 116 802 116 750.5 74.5 c 128,-1,4 - 699 33 699 33 613.5 6.5 c 128,-1,5 - 528 -20 528 -20 420 -20 c 0,6,7 - 392 -20 392 -20 362 -15.5 c 128,-1,8 - 332 -11 332 -11 291.5 5 c 128,-1,9 - 251 21 251 21 220.5 46.5 c 128,-1,10 - 190 72 190 72 168.5 120.5 c 128,-1,11 - 147 169 147 169 147 233 c 0,12,13 - 147 284 147 284 162 348 c 2,14,-1 - 291 901 l 1,15,-1 - 455 901 l 1,16,-1 - 367 522 l 1,17,18 - 390 545 390 545 457 564.5 c 128,-1,19 - 524 584 524 584 573 584 c 0,20,21 - 743 584 743 584 820 534 c 128,-1,22 - 897 484 897 484 897 381 c 0,0,1 -573 481 m 0,23,24 - 511 481 511 481 462 461.5 c 128,-1,25 - 413 442 413 442 384 413.5 c 128,-1,26 - 355 385 355 385 336 348.5 c 128,-1,27 - 317 312 317 312 310 281 c 128,-1,28 - 303 250 303 250 303 223 c 0,29,30 - 303 153 303 153 353 117.5 c 128,-1,31 - 403 82 403 82 483 82 c 0,32,33 - 592 82 592 82 660.5 166 c 128,-1,34 - 729 250 729 250 729 352 c 0,35,36 - 729 481 729 481 573 481 c 0,23,24 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10095 -Encoding: 1101 1101 459 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<287 596> 430 102<481 838> 819 102<480 775> -VStem: 856 168<532 734> -AnchorPoint: "top" 692 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1024 590 m 0,0,1 - 1024 546 1024 546 1016.5 497 c 128,-1,2 - 1009 448 1009 448 990 388 c 128,-1,3 - 971 328 971 328 941 272 c 128,-1,4 - 911 216 911 216 862 162 c 128,-1,5 - 813 108 813 108 751 68.5 c 128,-1,6 - 689 29 689 29 600 4.5 c 128,-1,7 - 511 -20 511 -20 406 -20 c 0,8,9 - 288 -20 288 -20 216.5 26 c 128,-1,10 - 145 72 145 72 98 158 c 1,11,-1 - 231 205 l 1,12,13 - 248 163 248 163 270.5 138.5 c 128,-1,14 - 293 114 293 114 340 98 c 128,-1,15 - 387 82 387 82 459 82 c 0,16,17 - 505 82 505 82 561 107 c 128,-1,18 - 617 132 617 132 671.5 175.5 c 128,-1,19 - 726 219 726 219 771.5 286.5 c 128,-1,20 - 817 354 817 354 838 430 c 1,21,-1 - 457 430 l 1,22,-1 - 481 532 l 1,23,-1 - 856 532 l 1,24,-1 - 856 565 l 2,25,26 - 856 680 856 680 802 749.5 c 128,-1,27 - 748 819 748 819 670 819 c 0,28,29 - 550 819 550 819 481 777.5 c 128,-1,30 - 412 736 412 736 365 641 c 1,31,-1 - 248 709 l 1,32,33 - 398 922 398 922 664 922 c 0,34,35 - 837 922 837 922 930.5 834.5 c 128,-1,36 - 1024 747 1024 747 1024 590 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10096 -Encoding: 1102 1102 460 -Width: 1263 -VWidth: 0 -Flags: W -HStem: -20 102<684 937> 0 43G<92 265> 430 102<379 473> 819 102<849 1089> 860 41G<292 465> -VStem: 455 166<145 423> 1149 166<362 758> -AnchorPoint: "top" 694 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1315 606 m 0,0,1 - 1315 565 1315 565 1308.5 517 c 128,-1,2 - 1302 469 1302 469 1285 407 c 128,-1,3 - 1268 345 1268 345 1241.5 287 c 128,-1,4 - 1215 229 1215 229 1171 172.5 c 128,-1,5 - 1127 116 1127 116 1071 74 c 128,-1,6 - 1015 32 1015 32 935 6 c 128,-1,7 - 855 -20 855 -20 760 -20 c 0,8,9 - 607 -20 607 -20 531 58 c 128,-1,10 - 455 136 455 136 455 279 c 0,11,12 - 455 348 455 348 473 430 c 1,13,-1 - 354 430 l 1,14,-1 - 256 0 l 1,15,-1 - 92 0 l 1,16,-1 - 301 901 l 1,17,-1 - 465 901 l 1,18,-1 - 379 532 l 1,19,-1 - 502 532 l 1,20,21 - 565 708 565 708 700 815 c 128,-1,22 - 835 922 835 922 977 922 c 0,23,24 - 1137 922 1137 922 1226 841.5 c 128,-1,25 - 1315 761 1315 761 1315 606 c 0,0,1 -813 82 m 0,26,27 - 884 82 884 82 948 131 c 128,-1,28 - 1012 180 1012 180 1055 255 c 128,-1,29 - 1098 330 1098 330 1123.5 419.5 c 128,-1,30 - 1149 509 1149 509 1149 592 c 0,31,32 - 1149 697 1149 697 1105.5 758 c 128,-1,33 - 1062 819 1062 819 983 819 c 0,34,35 - 888 819 888 819 803 742 c 128,-1,36 - 718 665 718 665 669.5 545.5 c 128,-1,37 - 621 426 621 426 621 301 c 0,38,39 - 621 196 621 196 669.5 139 c 128,-1,40 - 718 82 718 82 813 82 c 0,26,27 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10097 -Encoding: 1103 1103 461 -Width: 1064 -VWidth: 0 -Flags: W -HStem: -20 102<835 1008> 0 102<82 174> 358 102<491 756> 799 102<504 858> -VStem: 240 168<505 712> 715 176<83 355> 1012 70<94 131> -AnchorPoint: "top" 754 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -670 799 m 2,0,1 - 560 799 560 799 484 743 c 128,-1,2 - 408 687 408 687 408 600 c 0,3,4 - 408 537 408 537 460.5 499 c 128,-1,5 - 513 461 513 461 612 461 c 2,6,-1 - 780 461 l 1,7,-1 - 858 799 l 1,8,-1 - 670 799 l 2,0,1 -240 569 m 0,9,10 - 240 666 240 666 302.5 743 c 128,-1,11 - 365 820 365 820 463.5 860.5 c 128,-1,12 - 562 901 562 901 674 901 c 2,13,-1 - 1047 901 l 1,14,-1 - 901 276 l 1,15,16 - 891 224 891 224 891 184 c 0,17,18 - 891 82 891 82 934 82 c 0,19,20 - 959 82 959 82 983.5 96.5 c 128,-1,21 - 1008 111 1008 111 1012 131 c 1,22,-1 - 1081 131 l 1,23,24 - 1067 69 1067 69 1009.5 24.5 c 128,-1,25 - 952 -20 952 -20 883 -20 c 0,26,27 - 810 -20 810 -20 762.5 27.5 c 128,-1,28 - 715 75 715 75 715 152 c 0,29,30 - 715 173 715 173 723 213 c 1,31,-1 - 756 358 l 1,32,-1 - 610 358 l 2,33,34 - 566 358 566 358 532 342.5 c 128,-1,35 - 498 327 498 327 477.5 302 c 128,-1,36 - 457 277 457 277 435 245 c 128,-1,37 - 413 213 413 213 395 179 c 128,-1,38 - 377 145 377 145 347.5 113 c 128,-1,39 - 318 81 318 81 282 56 c 128,-1,40 - 246 31 246 31 188 15.5 c 128,-1,41 - 130 0 130 0 57 0 c 1,42,-1 - 82 102 l 1,43,44 - 122 102 122 102 153.5 121 c 128,-1,45 - 185 140 185 140 208.5 172.5 c 128,-1,46 - 232 205 232 205 253.5 240 c 128,-1,47 - 275 275 275 275 307.5 316 c 128,-1,48 - 340 357 340 357 377 385 c 1,49,50 - 240 439 240 439 240 569 c 0,9,10 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0450 -Encoding: 1104 1104 462 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1071 387 -VStem: 150 166<182 446> 575 295 872 160<556 758> -LayerCount: 2 -Fore -Refer: 114 232 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10071 -Encoding: 1105 1105 463 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1085 150<545 659 872 987> -VStem: 150 166<182 446> 510 184 838 184 872 160<556 758> -LayerCount: 2 -Fore -Refer: 134 235 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10099 -Encoding: 1106 1106 464 -Width: 1026 -VWidth: 0 -Flags: W -HStem: -348 102<336 663> 0 43G<135 308> 819 102<551 865> 1085 102<328 385 573 725> -VStem: 905 164<386 778> -LayerCount: 2 -Fore -SplineSet -973 160 m 2,0,1 - 948 51 948 51 926 -21 c 128,-1,2 - 904 -93 904 -93 872.5 -153.5 c 128,-1,3 - 841 -214 841 -214 805 -248.5 c 128,-1,4 - 769 -283 769 -283 715 -307 c 128,-1,5 - 661 -331 661 -331 595 -339.5 c 128,-1,6 - 529 -348 529 -348 436 -348 c 0,7,8 - 287 -348 287 -348 133 -256 c 1,9,-1 - 260 -150 l 1,10,11 - 376 -246 376 -246 489 -246 c 0,12,13 - 530 -246 530 -246 561.5 -242 c 128,-1,14 - 593 -238 593 -238 619.5 -227 c 128,-1,15 - 646 -216 646 -216 665.5 -203.5 c 128,-1,16 - 685 -191 685 -191 702 -166.5 c 128,-1,17 - 719 -142 719 -142 731 -118.5 c 128,-1,18 - 743 -95 743 -95 755.5 -55 c 128,-1,19 - 768 -15 768 -15 777 21.5 c 128,-1,20 - 786 58 786 58 799 115 c 2,21,-1 - 881 467 l 1,22,23 - 905 575 905 575 905 643 c 0,24,25 - 905 741 905 741 859.5 780 c 128,-1,26 - 814 819 814 819 727 819 c 0,27,28 - 598 819 598 819 465 723 c 1,29,-1 - 299 0 l 1,30,-1 - 135 0 l 1,31,-1 - 385 1085 l 1,32,-1 - 303 1085 l 1,33,-1 - 328 1188 l 1,34,-1 - 410 1188 l 1,35,-1 - 446 1352 l 1,36,-1 - 610 1352 l 1,37,-1 - 573 1188 l 1,38,-1 - 750 1188 l 1,39,-1 - 725 1085 l 1,40,-1 - 549 1085 l 1,41,-1 - 500 870 l 1,42,43 - 613 922 613 922 721 922 c 0,44,45 - 1069 922 1069 922 1069 641 c 0,46,47 - 1069 584 1069 584 1049 492 c 1,48,-1 - 973 160 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10100 -Encoding: 1107 1107 465 -Width: 792 -VWidth: 0 -Flags: W -HStem: -20 102<371 621> 819 102<382 631> 1071 387 -VStem: 186 174<96 261> 541 406 641 174<661 805> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 934 -184 2 -Refer: 433 1075 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10101 -Encoding: 1108 1108 466 -Width: 944 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 430 102<354 727> 819 102<552 840> -VStem: 150 166<182 429> 891 150<704 765> -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -150 324 m 0,0,1 - 150 443 150 443 199.5 555.5 c 128,-1,2 - 249 668 249 668 327.5 747.5 c 128,-1,3 - 406 827 406 827 504 874.5 c 128,-1,4 - 602 922 602 922 696 922 c 0,5,6 - 838 922 838 922 926.5 868.5 c 128,-1,7 - 1015 815 1015 815 1040 711 c 1,8,-1 - 891 643 l 1,9,10 - 885 819 885 819 702 819 c 0,11,12 - 600 819 600 819 502.5 741 c 128,-1,13 - 405 663 405 663 354 532 c 1,14,-1 - 752 532 l 1,15,-1 - 727 430 l 1,16,-1 - 326 430 l 1,17,18 - 315 370 315 370 315 340 c 0,19,20 - 315 220 315 220 384 151 c 128,-1,21 - 453 82 453 82 573 82 c 0,22,23 - 725 82 725 82 827 205 c 1,24,-1 - 940 158 l 1,25,26 - 856 76 856 76 748.5 28 c 128,-1,27 - 641 -20 641 -20 520 -20 c 0,28,29 - 351 -20 351 -20 250.5 72.5 c 128,-1,30 - 150 165 150 165 150 324 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10102 -Encoding: 1109 1109 467 -Width: 860 -VWidth: 0 -Flags: W -HStem: -20 102<279 603> 819 102<467 723> -VStem: 252 166<581 768> 688 168<168 375> -AnchorPoint: "top" 389 1004 basechar 0 -LayerCount: 2 -Fore -Refer: 7 115 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10103 -Encoding: 1110 1110 468 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1065 164<377 502> -VStem: 135 174<85 272> 430 70<93 131> -LayerCount: 2 -Fore -Refer: 8 105 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10104 -Encoding: 1111 1111 469 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1085 150<219 334 547 662> -VStem: 135 174<85 272> 184 184 430 70<93 131> 512 184 -LayerCount: 2 -Fore -Refer: 135 239 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10105 -Encoding: 1112 1112 470 -Width: 376 -VWidth: 0 -Flags: W -HStem: -348 102<-190 42> 860 41<322 496> 1065 164<408 532> -LayerCount: 2 -Fore -Refer: 13 106 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10106 -Encoding: 1113 1113 471 -Width: 1662 -VWidth: 0 -Flags: W -HStem: -20 102<142 373 1131 1404> 481 102<1201 1487> 799 102<821 1015> -VStem: 934 156<124 367> 1022 170<524 791> 1516 168<201 452> -AnchorPoint: "top" 1012 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1004 584 m 1,0,1 - 1022 676 1022 676 1022 711 c 0,2,3 - 1022 764 1022 764 999 781.5 c 128,-1,4 - 976 799 976 799 926 799 c 0,5,6 - 834 799 834 799 750.5 668 c 128,-1,7 - 667 537 667 537 602 260 c 0,8,9 - 585 187 585 187 545 131 c 128,-1,10 - 505 75 505 75 453 43 c 128,-1,11 - 401 11 401 11 345 -4.5 c 128,-1,12 - 289 -20 289 -20 233 -20 c 0,13,14 - 104 -20 104 -20 47 72 c 1,15,-1 - 190 133 l 1,16,17 - 212 82 212 82 287 82 c 0,18,19 - 347 82 347 82 386 140.5 c 128,-1,20 - 425 199 425 199 455 328 c 0,21,22 - 478 428 478 428 514 512.5 c 128,-1,23 - 550 597 550 597 589.5 654.5 c 128,-1,24 - 629 712 629 712 675 757 c 128,-1,25 - 721 802 721 802 762 828.5 c 128,-1,26 - 803 855 803 855 844 872 c 128,-1,27 - 885 889 885 889 914 895 c 128,-1,28 - 943 901 943 901 965 901 c 0,29,30 - 1192 901 1192 901 1192 727 c 0,31,32 - 1192 681 1192 681 1167 584 c 1,33,-1 - 1153 522 l 1,34,35 - 1176 545 1176 545 1243.5 564.5 c 128,-1,36 - 1311 584 1311 584 1360 584 c 0,37,38 - 1530 584 1530 584 1606.5 534 c 128,-1,39 - 1683 484 1683 484 1683 381 c 0,40,41 - 1683 329 1683 329 1670 277.5 c 128,-1,42 - 1657 226 1657 226 1622.5 171 c 128,-1,43 - 1588 116 1588 116 1536.5 74.5 c 128,-1,44 - 1485 33 1485 33 1399.5 6.5 c 128,-1,45 - 1314 -20 1314 -20 1206 -20 c 0,46,47 - 1178 -20 1178 -20 1148 -15.5 c 128,-1,48 - 1118 -11 1118 -11 1078 5 c 128,-1,49 - 1038 21 1038 21 1007.5 46.5 c 128,-1,50 - 977 72 977 72 955.5 120.5 c 128,-1,51 - 934 169 934 169 934 233 c 0,52,53 - 934 288 934 288 948 348 c 2,54,-1 - 1004 584 l 1,0,1 -1360 481 m 0,55,56 - 1298 481 1298 481 1249 461.5 c 128,-1,57 - 1200 442 1200 442 1171 413.5 c 128,-1,58 - 1142 385 1142 385 1123 348.5 c 128,-1,59 - 1104 312 1104 312 1097 281 c 128,-1,60 - 1090 250 1090 250 1090 223 c 0,61,62 - 1090 153 1090 153 1140 117.5 c 128,-1,63 - 1190 82 1190 82 1270 82 c 0,64,65 - 1379 82 1379 82 1447.5 166 c 128,-1,66 - 1516 250 1516 250 1516 352 c 0,67,68 - 1516 481 1516 481 1360 481 c 0,55,56 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10107 -Encoding: 1114 1114 472 -Width: 1443 -VWidth: 0 -Flags: W -HStem: -20 102<912 1185> 0 43G<92 266> 440 102<381 750> 481 102<982 1268> 860 41G<292 465 849 1022> -VStem: 715 156<124 367> 1296 168<201 452> -AnchorPoint: "top" 690 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1141 481 m 0,0,1 - 1079 481 1079 481 1029.5 461.5 c 128,-1,2 - 980 442 980 442 951.5 413.5 c 128,-1,3 - 923 385 923 385 903.5 348.5 c 128,-1,4 - 884 312 884 312 877 281 c 128,-1,5 - 870 250 870 250 870 223 c 0,6,7 - 870 153 870 153 920.5 117.5 c 128,-1,8 - 971 82 971 82 1051 82 c 0,9,10 - 1124 82 1124 82 1182 124 c 128,-1,11 - 1240 166 1240 166 1268 227 c 128,-1,12 - 1296 288 1296 288 1296 352 c 0,13,14 - 1296 481 1296 481 1141 481 c 0,0,1 -1464 381 m 0,15,16 - 1464 329 1464 329 1451 277.5 c 128,-1,17 - 1438 226 1438 226 1403.5 171 c 128,-1,18 - 1369 116 1369 116 1317.5 74.5 c 128,-1,19 - 1266 33 1266 33 1180.5 6.5 c 128,-1,20 - 1095 -20 1095 -20 987 -20 c 0,21,22 - 959 -20 959 -20 929 -15.5 c 128,-1,23 - 899 -11 899 -11 859 5 c 128,-1,24 - 819 21 819 21 788.5 46.5 c 128,-1,25 - 758 72 758 72 736.5 120.5 c 128,-1,26 - 715 169 715 169 715 233 c 0,27,28 - 715 288 715 288 729 348 c 2,29,-1 - 750 440 l 1,30,-1 - 358 440 l 1,31,-1 - 256 0 l 1,32,-1 - 92 0 l 1,33,-1 - 301 901 l 1,34,-1 - 465 901 l 1,35,-1 - 381 543 l 1,36,-1 - 774 543 l 1,37,-1 - 858 901 l 1,38,-1 - 1022 901 l 1,39,-1 - 934 522 l 1,40,41 - 957 545 957 545 1024.5 564.5 c 128,-1,42 - 1092 584 1092 584 1141 584 c 0,43,44 - 1311 584 1311 584 1387.5 534 c 128,-1,45 - 1464 484 1464 484 1464 381 c 0,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10108 -Encoding: 1115 1115 473 -Width: 1026 -VWidth: 0 -UnlinkRmOvrlpSave: 1 -Flags: W -HStem: 0 43G<135 308 772 945> 819 102<551 865> 1085 102<328 385 573 725> -VStem: 905 164<389 778> -LayerCount: 2 -Fore -SplineSet -465 723 m 1,0,-1 - 299 0 l 1,1,-1 - 135 0 l 1,2,-1 - 385 1085 l 1,3,-1 - 303 1085 l 1,4,-1 - 328 1188 l 1,5,-1 - 410 1188 l 1,6,-1 - 446 1352 l 1,7,-1 - 610 1352 l 1,8,-1 - 573 1188 l 1,9,-1 - 750 1188 l 1,10,-1 - 725 1085 l 1,11,-1 - 549 1085 l 1,12,-1 - 500 870 l 1,13,14 - 613 922 613 922 721 922 c 0,15,16 - 1069 922 1069 922 1069 641 c 0,17,18 - 1069 584 1069 584 1049 492 c 1,19,-1 - 936 0 l 1,20,-1 - 772 0 l 1,21,-1 - 881 467 l 1,22,23 - 905 575 905 575 905 643 c 0,24,25 - 905 741 905 741 859.5 780 c 128,-1,26 - 814 819 814 819 727 819 c 0,27,28 - 598 819 598 819 465 723 c 1,0,-1 -EndSplineSet -EndChar - -StartChar: afii10109 -Encoding: 1116 1116 474 -Width: 956 -VWidth: 0 -Flags: W -HStem: 0 43<182 355 749 948> 819 102<221 397> 860 41<886 1120> 1071 387 -VStem: 150 70<770 808> 340 174<535 818> 629 406 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1022 -184 2 -Refer: 440 1082 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni045D -Encoding: 1117 1117 475 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1071 387 -VStem: 154 172<137 501> 561 295 762 174<142 374> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 899 -184 2 -Refer: 438 1080 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: afii10110 -Encoding: 1118 1118 476 -Width: 1021 -VWidth: 0 -Flags: W -HStem: -348 102<335 623> -20 102<380 692> 860 41<281 455 918 1092> 1085 117<599 906> -VStem: 154 172<137 501> 516 78<1206 1284> 920 76<1212 1296> -LayerCount: 2 -Fore -Refer: 1072 57420 S 1 0 0 1 1018 -184 2 -Refer: 449 1091 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10193 -Encoding: 1119 1119 477 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<414 690 896 1055> 860 41G<281 455 918 1092> -VStem: 154 172<137 501> 358 117<-320 -186> 762 174<142 374> 1057 70<93 131> -AnchorPoint: "top" 719 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -946 276 m 2,0,1 - 936 232 936 232 936 182 c 0,2,3 - 936 82 936 82 979 82 c 0,4,5 - 1007 82 1007 82 1029.5 96.5 c 128,-1,6 - 1052 111 1052 111 1057 131 c 1,7,-1 - 1126 131 l 1,8,9 - 1113 68 1113 68 1055 24 c 128,-1,10 - 997 -20 997 -20 928 -20 c 0,11,12 - 832 -20 832 -20 784 61 c 1,13,14 - 714 23 714 23 631 1.5 c 128,-1,15 - 548 -20 548 -20 475 -20 c 0,16,17 - 438 -20 438 -20 420 -18 c 1,18,-1 - 385 -125 l 1,19,20 - 430 -141 430 -141 452.5 -174 c 128,-1,21 - 475 -207 475 -207 475 -238 c 0,22,23 - 475 -287 475 -287 421 -329 c 128,-1,24 - 367 -371 367 -371 295 -397 c 1,25,-1 - 281 -373 l 1,26,27 - 311 -353 311 -353 334.5 -320.5 c 128,-1,28 - 358 -288 358 -288 358 -254 c 0,29,30 - 358 -194 358 -194 266 -164 c 1,31,-1 - 330 -4 l 1,32,33 - 154 44 154 44 154 240 c 0,34,35 - 154 311 154 311 176 410 c 1,36,-1 - 291 901 l 1,37,-1 - 455 901 l 1,38,-1 - 346 434 l 2,39,40 - 326 350 326 350 326 281 c 0,41,42 - 326 171 326 171 379.5 126.5 c 128,-1,43 - 433 82 433 82 528 82 c 0,44,45 - 646 82 646 82 762 174 c 1,46,47 - 762 177 762 177 768 213 c 1,48,-1 - 928 901 l 1,49,-1 - 1092 901 l 1,50,-1 - 946 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii61352 -Encoding: 8470 8470 478 -Width: 2086 -VWidth: 0 -Flags: W -HStem: -20 102<122 351> 0 43G<1227 1431> 348 61<1612 2075> 516 61<1817 1976> 938 61<1896 2045> 1352 102<1756 1989> 1393 41G<681 882> -VStem: 1696 94<594 840> 2073 92<670 923> -LayerCount: 2 -Fore -SplineSet -1612 410 m 1,0,-1 - 2089 410 l 1,1,-1 - 2075 348 l 1,2,-1 - 1597 348 l 1,3,-1 - 1612 410 l 1,0,-1 -1896 578 m 0,4,5 - 1969 578 1969 578 2021 657.5 c 128,-1,6 - 2073 737 2073 737 2073 819 c 0,7,8 - 2073 873 2073 873 2048 905.5 c 128,-1,9 - 2023 938 2023 938 1980 938 c 0,10,11 - 1907 938 1907 938 1848.5 863 c 128,-1,12 - 1790 788 1790 788 1790 688 c 0,13,14 - 1790 578 1790 578 1896 578 c 0,4,5 -2165 831 m 0,15,16 - 2165 795 2165 795 2156 755.5 c 128,-1,17 - 2147 716 2147 716 2124.5 672.5 c 128,-1,18 - 2102 629 2102 629 2069 595 c 128,-1,19 - 2036 561 2036 561 1983 538.5 c 128,-1,20 - 1930 516 1930 516 1866 516 c 0,21,22 - 1784 516 1784 516 1740 560 c 128,-1,23 - 1696 604 1696 604 1696 682 c 0,24,25 - 1696 750 1696 750 1722.5 810.5 c 128,-1,26 - 1749 871 1749 871 1790.5 911.5 c 128,-1,27 - 1832 952 1832 952 1882 975.5 c 128,-1,28 - 1932 999 1932 999 1978 999 c 0,29,30 - 2066 999 2066 999 2115.5 956 c 128,-1,31 - 2165 913 2165 913 2165 831 c 0,15,16 -1421 0 m 1,32,-1 - 1243 0 l 1,33,-1 - 795 1137 l 1,34,-1 - 594 262 l 2,35,36 - 577 188 577 188 537 132 c 128,-1,37 - 497 76 497 76 444 44 c 128,-1,38 - 391 12 391 12 335 -4 c 128,-1,39 - 279 -20 279 -20 223 -20 c 0,40,41 - 161 -20 161 -20 108 3.5 c 128,-1,42 - 55 27 55 27 27 72 c 1,43,-1 - 170 133 l 1,44,45 - 192 82 192 82 266 82 c 0,46,47 - 326 82 326 82 365 140.5 c 128,-1,48 - 404 199 404 199 434 328 c 2,49,-1 - 690 1434 l 1,50,-1 - 866 1434 l 1,51,-1 - 1315 295 l 1,52,-1 - 1518 1171 l 2,53,54 - 1535 1245 1535 1245 1575 1301.5 c 128,-1,55 - 1615 1358 1615 1358 1667.5 1390 c 128,-1,56 - 1720 1422 1720 1422 1776 1438 c 128,-1,57 - 1832 1454 1832 1454 1888 1454 c 0,58,59 - 1950 1454 1950 1454 2003.5 1430.5 c 128,-1,60 - 2057 1407 2057 1407 2085 1362 c 1,61,-1 - 1942 1300 l 1,62,63 - 1919 1352 1919 1352 1843 1352 c 0,64,65 - 1783 1352 1783 1352 1745 1293.5 c 128,-1,66 - 1707 1235 1707 1235 1677 1106 c 2,67,-1 - 1421 0 l 1,32,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10050 -Encoding: 1168 1168 479 -Width: 899 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276> 1331 102<573 1116> -AnchorPoint: "top" 854 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -266 0 m 1,0,-1 - 92 0 l 1,1,-1 - 424 1434 l 1,2,-1 - 1116 1434 l 1,3,-1 - 1155 1606 l 1,4,-1 - 1290 1606 l 1,5,-1 - 1227 1331 l 1,6,-1 - 573 1331 l 1,7,-1 - 266 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii10098 -Encoding: 1169 1169 480 -Width: 714 -VWidth: 0 -Flags: W -HStem: 0 43G<92 265> 799 102<440 758> -AnchorPoint: "top" 623 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -256 0 m 1,0,-1 - 92 0 l 1,1,-1 - 301 901 l 1,2,-1 - 758 901 l 1,3,-1 - 799 1085 l 1,4,-1 - 934 1085 l 1,5,-1 - 868 799 l 1,6,-1 - 440 799 l 1,7,-1 - 256 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: hookabovecomb -Encoding: 777 777 481 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1438 61<-334 -171> -VStem: -219 117<1341 1437> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --281 1227 m 9,0,-1 - -332 1227 l 1,1,2 - -322 1268 -322 1268 -302 1294.5 c 128,-1,3 - -282 1321 -282 1321 -264.5 1331 c 128,-1,4 - -247 1341 -247 1341 -233 1359 c 128,-1,5 - -219 1377 -219 1377 -219 1405 c 0,6,7 - -219 1438 -219 1438 -258 1438 c 0,8,9 - -282 1438 -282 1438 -306 1434 c 0,10,11 - -328 1430 -328 1430 -340 1426 c 2,12,-1 - -352 1421 l 1,13,-1 - -342 1464 l 1,14,15 - -278 1499 -278 1499 -215 1499 c 0,16,17 - -155 1499 -155 1499 -128.5 1475.5 c 128,-1,18 - -102 1452 -102 1452 -102 1419 c 128,-1,19 - -102 1386 -102 1386 -117.5 1365.5 c 128,-1,20 - -133 1345 -133 1345 -157 1334.5 c 128,-1,21 - -181 1324 -181 1324 -205.5 1313.5 c 128,-1,22 - -230 1303 -230 1303 -251.5 1281.5 c 128,-1,23 - -273 1260 -273 1260 -281 1227 c 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni031B -Encoding: 795 795 482 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1055 43<-47 109> -VStem: 129 160<1269 1457> -AnchorPoint: "horn" 35 1075 mark 0 -LayerCount: 2 -Fore -SplineSet --57 1055 m 1,0,-1 - -47 1098 l 1,1,-1 - 41 1098 l 2,2,3 - 91 1098 91 1098 137.5 1138.5 c 128,-1,4 - 184 1179 184 1179 184 1223 c 0,5,6 - 184 1248 184 1248 156.5 1299 c 128,-1,7 - 129 1350 129 1350 129 1386 c 0,8,9 - 129 1427 129 1427 163.5 1451 c 128,-1,10 - 198 1475 198 1475 246 1475 c 0,11,12 - 289 1475 289 1475 289 1417 c 0,13,14 - 289 1256 289 1256 216 1155.5 c 128,-1,15 - 143 1055 143 1055 31 1055 c 2,16,-1 - -57 1055 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: dotbelowcomb -Encoding: 803 803 483 -Width: 0 -VWidth: 0 -Flags: W -HStem: -272 150<-694 -580> -VStem: -729 184 -AnchorPoint: "bottom" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --694 -123 m 1,0,-1 - -545 -123 l 1,1,-1 - -580 -272 l 1,2,-1 - -729 -272 l 1,3,-1 - -694 -123 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0324 -Encoding: 804 804 484 -Width: 0 -VWidth: 0 -Flags: W -HStem: -272 150<-479 -365 -193 -78> -VStem: -514 184 -227 184 -AnchorPoint: "bottom" -236 0 mark 0 -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 145 -1542 2 -Refer: 98 775 N 1 0 0 1 -141 -1542 2 -Validated: 1 -EndChar - -StartChar: uni0325 -Encoding: 805 805 485 -Width: 0 -VWidth: 0 -Flags: W -HStem: -393 61<-725 -588> -143 61<-697 -561> -VStem: -803 63<-318 -185> -547 63<-291 -157> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --621 -143 m 0,0,1 - -663 -143 -663 -143 -701 -176.5 c 128,-1,2 - -739 -210 -739 -210 -739 -258 c 0,3,4 - -739 -289 -739 -289 -718 -310.5 c 128,-1,5 - -697 -332 -697 -332 -664 -332 c 0,6,7 - -623 -332 -623 -332 -585 -298.5 c 128,-1,8 - -547 -265 -547 -265 -547 -217 c 0,9,10 - -547 -186 -547 -186 -568 -164.5 c 128,-1,11 - -589 -143 -589 -143 -621 -143 c 0,0,1 --803 -272 m 0,12,13 - -803 -195 -803 -195 -740.5 -138.5 c 128,-1,14 - -678 -82 -678 -82 -606 -82 c 0,15,16 - -551 -82 -551 -82 -517 -116 c 128,-1,17 - -483 -150 -483 -150 -483 -203 c 0,18,19 - -483 -280 -483 -280 -545 -336.5 c 128,-1,20 - -607 -393 -607 -393 -678 -393 c 0,21,22 - -733 -393 -733 -393 -768 -359 c 128,-1,23 - -803 -325 -803 -325 -803 -272 c 0,12,13 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032C -Encoding: 812 812 486 -Width: 0 -VWidth: 0 -Flags: W -HStem: -449 387 -VStem: -852 479 -AnchorPoint: "bottom" -586 0 mark 0 -LayerCount: 2 -Fore -SplineSet --690 -449 m 1,0,-1 - -852 -115 l 1,1,-1 - -776 -61 l 1,2,-1 - -641 -242 l 1,3,-1 - -424 -61 l 1,4,-1 - -373 -115 l 1,5,-1 - -690 -449 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032D -Encoding: 813 813 487 -Width: 0 -VWidth: 0 -Flags: W -HStem: -449 387 -VStem: -918 479 -AnchorPoint: "bottom" -586 0 mark 0 -LayerCount: 2 -Fore -SplineSet --600 -61 m 1,0,-1 - -438 -395 l 1,1,-1 - -514 -449 l 1,2,-1 - -647 -268 l 1,3,-1 - -866 -449 l 1,4,-1 - -918 -395 l 1,5,-1 - -600 -61 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032E -Encoding: 814 814 488 -Width: 0 -VWidth: 0 -Flags: W -HStem: -272 117<-736 -502> -VStem: -840 84<-126 -82> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --625 -156 m 0,0,1 - -569 -156 -569 -156 -515 -126 c 128,-1,2 - -461 -96 -461 -96 -449 -61 c 1,3,-1 - -375 -82 l 1,4,5 - -403 -160 -403 -160 -483 -216 c 128,-1,6 - -563 -272 -563 -272 -651 -272 c 0,7,8 - -733 -272 -733 -272 -786.5 -222 c 128,-1,9 - -840 -172 -840 -172 -840 -100 c 0,10,11 - -840 -88 -840 -88 -838 -82 c 1,12,-1 - -756 -61 l 1,13,-1 - -756 -66 l 2,14,15 - -756 -101 -756 -101 -717.5 -128.5 c 128,-1,16 - -679 -156 -679 -156 -625 -156 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni032F -Encoding: 815 815 489 -Width: 0 -VWidth: 0 -Flags: W -HStem: -199 117<-756 -522> -VStem: -502 84<-272 -228> -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --633 -199 m 0,0,1 - -689 -199 -689 -199 -743 -228.5 c 128,-1,2 - -797 -258 -797 -258 -809 -293 c 1,3,-1 - -883 -272 l 1,4,5 - -855 -194 -855 -194 -774.5 -138 c 128,-1,6 - -694 -82 -694 -82 -606 -82 c 0,7,8 - -524 -82 -524 -82 -471 -132 c 128,-1,9 - -418 -182 -418 -182 -418 -254 c 0,10,11 - -418 -266 -418 -266 -420 -272 c 1,12,-1 - -502 -293 l 1,13,-1 - -502 -289 l 2,14,15 - -502 -254 -502 -254 -540.5 -226.5 c 128,-1,16 - -579 -199 -579 -199 -633 -199 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0330 -Encoding: 816 816 490 -Width: 0 -VWidth: 0 -Flags: W -HStem: -285 117<-635 -440> -219 117<-846 -651> -VStem: -946 606 -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --424 -102 m 1,0,-1 - -340 -102 l 1,1,2 - -368 -182 -368 -182 -432 -233.5 c 128,-1,3 - -496 -285 -496 -285 -582 -285 c 0,4,5 - -620 -285 -620 -285 -671 -252 c 128,-1,6 - -722 -219 -722 -219 -741 -219 c 0,7,8 - -839 -219 -839 -219 -862 -285 c 1,9,-1 - -946 -285 l 1,10,11 - -918 -205 -918 -205 -854.5 -153.5 c 128,-1,12 - -791 -102 -791 -102 -705 -102 c 0,13,14 - -667 -102 -667 -102 -615.5 -135 c 128,-1,15 - -564 -168 -564 -168 -545 -168 c 0,16,17 - -447 -168 -447 -168 -424 -102 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0331 -Encoding: 817 817 491 -Width: 0 -VWidth: 0 -Flags: W -HStem: -205 82<-862 -410> -VStem: -881 489 -AnchorPoint: "bottom" -588 0 mark 0 -LayerCount: 2 -Fore -SplineSet --862 -123 m 1,0,-1 - -391 -123 l 1,1,-1 - -410 -205 l 1,2,-1 - -881 -205 l 1,3,-1 - -862 -123 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uhorn -Encoding: 432 432 492 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 614 43<1034 1166> 860 41G<281 455 918 1092> -VStem: 154 172<137 501> 762 174<142 374> 1057 70<93 131> 1186 160<829 1017> -AnchorPoint: "top" 719 1004 basechar 0 -AnchorPoint: "bottom" 471 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -946 276 m 2,0,1 - 936 232 936 232 936 182 c 0,2,3 - 936 82 936 82 979 82 c 0,4,5 - 1007 82 1007 82 1029.5 96.5 c 128,-1,6 - 1052 111 1052 111 1057 131 c 1,7,-1 - 1126 131 l 1,8,9 - 1113 68 1113 68 1055 24 c 128,-1,10 - 997 -20 997 -20 928 -20 c 0,11,12 - 832 -20 832 -20 784 61 c 1,13,14 - 714 23 714 23 631 1.5 c 128,-1,15 - 548 -20 548 -20 475 -20 c 0,16,17 - 309 -20 309 -20 231.5 43.5 c 128,-1,18 - 154 107 154 107 154 240 c 0,19,20 - 154 311 154 311 176 410 c 1,21,-1 - 291 901 l 1,22,-1 - 455 901 l 1,23,-1 - 346 434 l 2,24,25 - 326 350 326 350 326 281 c 0,26,27 - 326 171 326 171 379.5 126.5 c 128,-1,28 - 433 82 433 82 528 82 c 0,29,30 - 646 82 646 82 762 174 c 1,31,32 - 762 177 762 177 768 213 c 1,33,-1 - 928 901 l 1,34,-1 - 1092 901 l 1,35,-1 - 1034 657 l 1,36,-1 - 1098 657 l 2,37,38 - 1148 657 1148 657 1194.5 697.5 c 128,-1,39 - 1241 738 1241 738 1241 782 c 0,40,41 - 1241 807 1241 807 1213.5 858.5 c 128,-1,42 - 1186 910 1186 910 1186 946 c 0,43,44 - 1186 987 1186 987 1220.5 1010.5 c 128,-1,45 - 1255 1034 1255 1034 1303 1034 c 0,46,47 - 1346 1034 1346 1034 1346 977 c 0,48,49 - 1346 816 1346 816 1272.5 715 c 128,-1,50 - 1199 614 1199 614 1087 614 c 2,51,-1 - 1024 614 l 1,52,-1 - 946 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ohorn -Encoding: 416 416 493 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1135> -VStem: 199 176<286 770> 1315 176<653 1117> 1520 160<1276 1467> -AnchorPoint: "top" 997 1434 basechar 0 -AnchorPoint: "ogonek" 684 0 basechar 0 -AnchorPoint: "bottom" 680 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -969 1352 m 0,0,1 - 860 1352 860 1352 750.5 1276.5 c 128,-1,2 - 641 1201 641 1201 559.5 1082 c 128,-1,3 - 478 963 478 963 426.5 809.5 c 128,-1,4 - 375 656 375 656 375 508 c 0,5,6 - 375 401 375 401 405.5 316 c 128,-1,7 - 436 231 436 231 484.5 182 c 128,-1,8 - 533 133 533 133 587 107.5 c 128,-1,9 - 641 82 641 82 694 82 c 0,10,11 - 806 82 806 82 918.5 153.5 c 128,-1,12 - 1031 225 1031 225 1118 341 c 128,-1,13 - 1205 457 1205 457 1260 615.5 c 128,-1,14 - 1315 774 1315 774 1315 938 c 0,15,16 - 1315 1043 1315 1043 1286 1124.5 c 128,-1,17 - 1257 1206 1257 1206 1207.5 1254.5 c 128,-1,18 - 1158 1303 1158 1303 1097.5 1327.5 c 128,-1,19 - 1037 1352 1037 1352 969 1352 c 0,0,1 -659 -20 m 0,20,21 - 571 -20 571 -20 490.5 11 c 128,-1,22 - 410 42 410 42 343.5 102 c 128,-1,23 - 277 162 277 162 238 262 c 128,-1,24 - 199 362 199 362 199 489 c 0,25,26 - 199 624 199 624 236.5 763 c 128,-1,27 - 274 902 274 902 345.5 1025 c 128,-1,28 - 417 1148 417 1148 511 1244.5 c 128,-1,29 - 605 1341 605 1341 727.5 1397.5 c 128,-1,30 - 850 1454 850 1454 981 1454 c 0,31,32 - 1160 1454 1160 1454 1292 1367.5 c 128,-1,33 - 1424 1281 1424 1281 1470 1114 c 1,34,35 - 1511 1128 1511 1128 1543 1163.5 c 128,-1,36 - 1575 1199 1575 1199 1575 1233 c 0,37,38 - 1575 1258 1575 1258 1547.5 1309.5 c 128,-1,39 - 1520 1361 1520 1361 1520 1397 c 0,40,41 - 1520 1438 1520 1438 1554 1461.5 c 128,-1,42 - 1588 1485 1588 1485 1636 1485 c 0,43,44 - 1679 1485 1679 1485 1679 1427 c 0,45,46 - 1679 1289 1679 1289 1624.5 1193.5 c 128,-1,47 - 1570 1098 1570 1098 1481 1073 c 1,48,49 - 1491 1024 1491 1024 1491 948 c 0,50,51 - 1491 863 1491 863 1475 772 c 128,-1,52 - 1459 681 1459 681 1425 586 c 128,-1,53 - 1391 491 1391 491 1342.5 403.5 c 128,-1,54 - 1294 316 1294 316 1224.5 238.5 c 128,-1,55 - 1155 161 1155 161 1072.5 103.5 c 128,-1,56 - 990 46 990 46 883.5 13 c 128,-1,57 - 777 -20 777 -20 659 -20 c 0,20,21 -EndSplineSet -Validated: 1 -EndChar - -StartChar: ohorn -Encoding: 417 417 494 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 824> -VStem: 147 164<157 530> 897 168<369 646> 1094 160<829 1017> -AnchorPoint: "top" 737 1004 basechar 0 -AnchorPoint: "bottom" 487 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1065 594 m 0,0,1 - 1065 546 1065 546 1056 492.5 c 128,-1,2 - 1047 439 1047 439 1026 378.5 c 128,-1,3 - 1005 318 1005 318 974.5 262 c 128,-1,4 - 944 206 944 206 896 154 c 128,-1,5 - 848 102 848 102 789.5 64 c 128,-1,6 - 731 26 731 26 651 3 c 128,-1,7 - 571 -20 571 -20 479 -20 c 0,8,9 - 318 -20 318 -20 232.5 64.5 c 128,-1,10 - 147 149 147 149 147 301 c 0,11,12 - 147 430 147 430 197.5 547.5 c 128,-1,13 - 248 665 248 665 327 745.5 c 128,-1,14 - 406 826 406 826 504 874 c 128,-1,15 - 602 922 602 922 696 922 c 0,16,17 - 845 922 845 922 940.5 858 c 128,-1,18 - 1036 794 1036 794 1059 670 c 1,19,20 - 1097 688 1097 688 1123 719.5 c 128,-1,21 - 1149 751 1149 751 1149 782 c 0,22,23 - 1149 807 1149 807 1121.5 858.5 c 128,-1,24 - 1094 910 1094 910 1094 946 c 0,25,26 - 1094 987 1094 987 1128 1010.5 c 128,-1,27 - 1162 1034 1162 1034 1210 1034 c 0,28,29 - 1253 1034 1253 1034 1253 977 c 0,30,31 - 1253 843 1253 843 1201 749 c 128,-1,32 - 1149 655 1149 655 1063 625 c 1,33,34 - 1063 620 1063 620 1064 609.5 c 128,-1,35 - 1065 599 1065 599 1065 594 c 0,0,1 -532 82 m 0,36,37 - 608 82 608 82 677.5 127.5 c 128,-1,38 - 747 173 747 173 794 244.5 c 128,-1,39 - 841 316 841 316 869 403.5 c 128,-1,40 - 897 491 897 491 897 575 c 0,41,42 - 897 688 897 688 845.5 753.5 c 128,-1,43 - 794 819 794 819 702 819 c 0,44,45 - 602 819 602 819 511 748 c 128,-1,46 - 420 677 420 677 365.5 559 c 128,-1,47 - 311 441 311 441 311 311 c 0,48,49 - 311 201 311 201 366.5 141.5 c 128,-1,50 - 422 82 422 82 532 82 c 0,36,37 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Uhorn -Encoding: 431 431 495 -Width: 1357 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1065 43<1409 1543> 1393 41G<384 567 1301 1485> -VStem: 176 174<211 687> 393 174<1372 1434> 1563 160<1279 1467> -AnchorPoint: "top" 958 1434 basechar 0 -AnchorPoint: "bottom" 627 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1311 1434 m 1,0,-1 - 1485 1434 l 1,1,-1 - 1409 1108 l 1,2,-1 - 1475 1108 l 2,3,4 - 1525 1108 1525 1108 1571.5 1148.5 c 128,-1,5 - 1618 1189 1618 1189 1618 1233 c 0,6,7 - 1618 1258 1618 1258 1590.5 1309.5 c 128,-1,8 - 1563 1361 1563 1361 1563 1397 c 0,9,10 - 1563 1438 1563 1438 1597 1461.5 c 128,-1,11 - 1631 1485 1631 1485 1679 1485 c 0,12,13 - 1722 1485 1722 1485 1722 1427 c 0,14,15 - 1722 1266 1722 1266 1649 1165.5 c 128,-1,16 - 1576 1065 1576 1065 1464 1065 c 2,17,-1 - 1399 1065 l 1,18,-1 - 1294 610 l 2,19,20 - 1259 461 1259 461 1203.5 348.5 c 128,-1,21 - 1148 236 1148 236 1083 167 c 128,-1,22 - 1018 98 1018 98 935.5 55 c 128,-1,23 - 853 12 853 12 772.5 -4 c 128,-1,24 - 692 -20 692 -20 598 -20 c 0,25,26 - 538 -20 538 -20 483 -9 c 128,-1,27 - 428 2 428 2 370.5 31 c 128,-1,28 - 313 60 313 60 271 105.5 c 128,-1,29 - 229 151 229 151 202.5 226 c 128,-1,30 - 176 301 176 301 176 397 c 0,31,32 - 176 490 176 490 203 610 c 2,33,-1 - 393 1434 l 1,34,-1 - 567 1434 l 1,35,-1 - 377 610 l 1,36,37 - 350 487 350 487 350 401 c 0,38,39 - 350 325 350 325 369 266 c 128,-1,40 - 388 207 388 207 416.5 173 c 128,-1,41 - 445 139 445 139 484 118 c 128,-1,42 - 523 97 523 97 559 89.5 c 128,-1,43 - 595 82 595 82 633 82 c 0,44,45 - 684 82 684 82 734 95 c 128,-1,46 - 784 108 784 108 842.5 144.5 c 128,-1,47 - 901 181 901 181 950.5 238 c 128,-1,48 - 1000 295 1000 295 1045.5 390.5 c 128,-1,49 - 1091 486 1091 486 1120 610 c 2,50,-1 - 1311 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ebreve -Encoding: 276 276 496 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1516 117<788 1022> -VStem: 684 84<1662 1706> -AnchorPoint: "bottom" 537 0 basechar 0 -AnchorPoint: "ogonek" 754 0 basechar 0 -AnchorPoint: "top" 922 1720 basechar 0 -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 3 -Refer: 97 774 N 1 0 0 1 1167 246 2 -Validated: 1 -EndChar - -StartChar: ebreve -Encoding: 277 277 497 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1085 117<667 901> -VStem: 150 166<182 446> 563 84<1231 1276> 872 160<556 758> -AnchorPoint: "top" 815 1352 basechar 0 -AnchorPoint: "ogonek" 559 0 basechar 0 -AnchorPoint: "bottom" 510 0 basechar 0 -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 3 -Refer: 97 774 N 1 0 0 1 1047 -184 2 -Validated: 1 -EndChar - -StartChar: Ibreve -Encoding: 300 300 498 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1516 117<448 682> -VStem: 92 506 344 84<1662 1706> -AnchorPoint: "top" 580 1720 basechar 0 -AnchorPoint: "ogonek" 156 0 basechar 0 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 3 -Refer: 97 774 N 1 0 0 1 827 246 2 -Validated: 1 -EndChar - -StartChar: ibreve -Encoding: 301 301 499 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1085 117<342 575> -VStem: 135 174<85 272> 238 84<1231 1276> 430 70<93 131> -AnchorPoint: "top" 487 1352 basechar 0 -AnchorPoint: "bottom" 172 0 basechar 0 -AnchorPoint: "ogonek" 248 0 basechar 0 -LayerCount: 2 -Fore -Refer: 112 305 N 1 0 0 1 0 0 3 -Refer: 97 774 N 1 0 0 1 721 -184 2 -Validated: 1 -EndChar - -StartChar: Obreve -Encoding: 334 334 500 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1516 117<931 1165> -VStem: 199 176<286 770> 827 84<1662 1706> 1315 176<653 1162> -AnchorPoint: "top" 1071 1720 basechar 0 -AnchorPoint: "ogonek" 684 0 basechar 0 -AnchorPoint: "bottom" 680 0 basechar 0 -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 3 -Refer: 97 774 N 1 0 0 1 1311 246 2 -Validated: 1 -EndChar - -StartChar: obreve -Encoding: 335 335 501 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1085 117<671 905> -VStem: 147 164<157 530> 567 84<1231 1276> 897 168<366 739> -AnchorPoint: "top" 817 1352 basechar 0 -AnchorPoint: "bottom" 487 0 basechar 0 -AnchorPoint: "ogonek" 508 0 basechar 0 -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 3 -Refer: 97 774 N 1 0 0 1 1051 -184 2 -Validated: 1 -EndChar - -StartChar: uni1EA0 -Encoding: 7840 7840 502 -Width: 1275 -VWidth: 0 -Flags: W -HStem: -272 150<535 649> 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> -VStem: 500 184 -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1229 0 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EA1 -Encoding: 7841 7841 503 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -272 150<342 457> -20 102<366 693 846 1001> 819 102<532 850> -VStem: 154 158<136 521> 307 184 711 172<113 272> 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1036 0 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EB8 -Encoding: 7864 7864 504 -Width: 962 -VWidth: 0 -Flags: W -HStem: -272 150<432 547> 0 102<281 942> 799 102<465 909> 1331 102<563 1217> -VStem: 397 184 -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1126 0 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EB9 -Encoding: 7865 7865 505 -Width: 964 -VWidth: 0 -Flags: W -HStem: -272 150<406 520> -20 102<419 734> 451 102<362 869> 819 102<551 814> -VStem: 150 166<182 446> 371 184 872 160<556 758> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1100 0 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECA -Encoding: 7882 7882 506 -Width: 436 -VWidth: 0 -Flags: W -HStem: -272 150<77 191> 0 43<92 276> 1393 41<414 598> -VStem: 42 184 92 506 -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 771 0 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECB -Encoding: 7883 7883 507 -Width: 483 -VWidth: 0 -Flags: W -HStem: -272 150<68 182> -20 102<252 428> 860 41<292 465> 1065 164<377 502> -VStem: 33 184 135 174<85 272> 430 70<93 131> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 762 0 2 -Refer: 8 105 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECC -Encoding: 7884 7884 508 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -272 150<575 690> -20 102<553 861> 1352 102<811 1133> -VStem: 199 176<286 770> 541 184 1315 176<653 1162> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1270 0 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECD -Encoding: 7885 7885 509 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -272 150<383 498> -20 102<385 668> 819 102<554 823> -VStem: 147 164<157 530> 348 184 897 168<366 739> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1077 0 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED8 -Encoding: 7896 7896 510 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -272 150<575 690> -20 102<553 861> 1352 102<811 1133> 1503 299 -VStem: 199 176<286 770> 541 184 760 551 1315 176<653 1162> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1311 246 2 -Refer: 508 7884 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED9 -Encoding: 7897 7897 511 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -272 150<383 498> -20 102<385 668> 819 102<554 823> 1073 299 -VStem: 147 164<157 530> 348 184 500 551 897 168<366 739> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1051 -184 2 -Refer: 509 7885 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE4 -Encoding: 7908 7908 512 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -272 150<522 637> -20 102<471 807> 1393 41<384 567 1301 1485> -VStem: 176 174<211 687> 393 174<1372 1434> 487 184 -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1217 0 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE5 -Encoding: 7909 7909 513 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -272 150<367 481> -20 102<380 690 896 1055> 860 41<281 455 918 1092> -VStem: 154 172<137 501> 332 184 762 174<142 374> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1061 0 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF0 -Encoding: 7920 7920 514 -Width: 1357 -VWidth: 0 -Flags: W -HStem: -272 150<522 637> -20 102<471 807> 1065 43<1409 1543> 1393 41<384 567 1301 1485> -VStem: 176 174<211 687> 393 174<1372 1434> 487 184 1563 160<1279 1467> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1217 0 2 -Refer: 495 431 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF1 -Encoding: 7921 7921 515 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -272 150<367 481> -20 102<380 690 896 1055> 614 43<1034 1166> 860 41<281 455 918 1092> -VStem: 154 172<137 501> 332 184 762 174<142 374> 1057 70<93 131> 1186 160<829 1017> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1061 0 2 -Refer: 492 432 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF4 -Encoding: 7924 7924 516 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -272 150<432 547> 0 43<451 634> 1393 41<414 609 1112 1327> -VStem: 397 184 -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1126 0 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF5 -Encoding: 7925 7925 517 -Width: 931 -VWidth: 0 -Flags: W -HStem: -412 150<485 600> -348 102<133 262> 860 41<270 425 901 1090> -VStem: 451 184 -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1180 -139 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF6 -Encoding: 7926 7926 518 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<451 634> 1393 41<414 609 1112 1327> 1683 61<848 1011> -VStem: 963 117<1587 1683> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1182 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF7 -Encoding: 7927 7927 519 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<133 262> 860 41<270 425 901 1090> 1253 61<688 851> -VStem: 803 117<1157 1253> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1022 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF8 -Encoding: 7928 7928 520 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<451 634> 1393 41<414 609 1112 1327> 1516 117<928 1120> 1581 117<717 909> -VStem: 614 608 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1182 246 2 -Refer: 51 89 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EF9 -Encoding: 7929 7929 521 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<133 262> 860 41<270 425 901 1090> 1085 117<768 961> 1151 117<557 750> -VStem: 455 608 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1022 -184 2 -Refer: 24 121 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EA2 -Encoding: 7842 7842 522 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1683 61<954 1117> -VStem: 1069 117<1587 1683> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EA3 -Encoding: 7843 7843 523 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1253 61<711 873> -VStem: 154 158<136 521> 711 172<113 272> 825 117<1157 1253> 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1044 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EBA -Encoding: 7866 7866 524 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1683 61<834 996> -VStem: 948 117<1587 1683> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1167 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EBB -Encoding: 7867 7867 525 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1253 61<713 876> -VStem: 150 166<182 446> 827 117<1157 1253> 872 160<556 758> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EC8 -Encoding: 7880 7880 526 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1683 61<494 656> -VStem: 92 506 608 117<1587 1683> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 827 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EC9 -Encoding: 7881 7881 527 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1253 61<387 550> -VStem: 135 174<85 272> 430 70<93 131> 502 117<1157 1253> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 721 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECE -Encoding: 7886 7886 528 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1683 61<977 1140> -VStem: 199 176<286 770> 1092 117<1587 1683> 1315 176<653 1162> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1311 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ECF -Encoding: 7887 7887 529 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1253 61<717 880> -VStem: 147 164<157 530> 831 117<1157 1253> 897 168<366 739> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EDA -Encoding: 7898 7898 530 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1135> 1501 387 -VStem: 199 176<286 770> 918 406 1315 176<653 1117> 1520 160<1276 1467> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1311 246 2 -Refer: 493 416 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EDB -Encoding: 7899 7899 531 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 824> 1071 387 -VStem: 147 164<157 530> 658 406 897 168<369 646> 1094 160<829 1017> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1051 -184 2 -Refer: 494 417 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EDC -Encoding: 7900 7900 532 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1135> 1501 387 -VStem: 199 176<286 770> 840 295 1315 176<653 1117> 1520 160<1276 1467> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1178 246 2 -Refer: 493 416 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EDD -Encoding: 7901 7901 533 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 824> 1071 387 -VStem: 147 164<157 530> 580 295 897 168<369 646> 1094 160<829 1017> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 918 -184 2 -Refer: 494 417 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EDE -Encoding: 7902 7902 534 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1135> 1683 61<977 1140> -VStem: 199 176<286 770> 1092 117<1587 1683> 1315 176<653 1117> 1520 160<1276 1467> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1311 246 2 -Refer: 493 416 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EDF -Encoding: 7903 7903 535 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 824> 1253 61<717 880> -VStem: 147 164<157 530> 831 117<1157 1253> 897 168<369 646> 1094 160<829 1017> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1051 -184 2 -Refer: 494 417 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE0 -Encoding: 7904 7904 536 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1135> 1516 117<1057 1249> 1581 117<846 1038> -VStem: 199 176<286 770> 743 608 1315 176<653 1117> 1520 160<1276 1467> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1311 246 2 -Refer: 493 416 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE1 -Encoding: 7905 7905 537 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 824> 1085 117<797 989> 1151 117<586 778> -VStem: 147 164<157 530> 483 608 897 168<369 646> 1094 160<829 1017> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1051 -184 2 -Refer: 494 417 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE2 -Encoding: 7906 7906 538 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -272 150<575 690> -20 102<553 861> 1352 102<811 1135> -VStem: 199 176<286 770> 541 184 1315 176<653 1117> 1520 160<1276 1467> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1270 0 2 -Refer: 493 416 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE3 -Encoding: 7907 7907 539 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -272 150<383 498> -20 102<385 668> 819 102<554 824> -VStem: 147 164<157 530> 348 184 897 168<369 646> 1094 160<829 1017> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1077 0 2 -Refer: 494 417 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE6 -Encoding: 7910 7910 540 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1683 61<938 1101> -VStem: 176 174<211 687> 393 174<1372 1434> 1053 117<1587 1683> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE7 -Encoding: 7911 7911 541 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1253 61<698 861> -VStem: 154 172<137 501> 762 174<142 374> 813 117<1157 1253> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1032 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE8 -Encoding: 7912 7912 542 -Width: 1357 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1065 43<1409 1543> 1393 41<384 567 1301 1485> 1501 387 -VStem: 176 174<211 687> 393 174<1372 1434> 879 406 1563 160<1279 1467> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1272 246 2 -Refer: 495 431 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EE9 -Encoding: 7913 7913 543 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 614 43<1034 1166> 860 41<281 455 918 1092> 1071 387 -VStem: 154 172<137 501> 639 406 762 174<142 374> 1057 70<93 131> 1186 160<829 1017> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1032 -184 2 -Refer: 492 432 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EEA -Encoding: 7914 7914 544 -Width: 1357 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1065 43<1409 1543> 1393 41<384 567 1301 1485> 1501 387 -VStem: 176 174<211 687> 393 174<1372 1434> 801 295 1563 160<1279 1467> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 1139 246 2 -Refer: 495 431 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EEB -Encoding: 7915 7915 545 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 614 43<1034 1166> 860 41<281 455 918 1092> 1071 387 -VStem: 154 172<137 501> 561 295 762 174<142 374> 1057 70<93 131> 1186 160<829 1017> -LayerCount: 2 -Fore -Refer: 92 768 N 1 0 0 1 899 -184 2 -Refer: 492 432 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EEC -Encoding: 7916 7916 546 -Width: 1357 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1065 43<1409 1543> 1393 41<384 567 1301 1485> 1683 61<938 1101> -VStem: 176 174<211 687> 393 174<1372 1434> 1053 117<1587 1683> 1563 160<1279 1467> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1272 246 2 -Refer: 495 431 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EED -Encoding: 7917 7917 547 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 614 43<1034 1166> 860 41<281 455 918 1092> 1253 61<698 861> -VStem: 154 172<137 501> 762 174<142 374> 813 117<1157 1253> 1057 70<93 131> 1186 160<829 1017> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1032 -184 2 -Refer: 492 432 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EEE -Encoding: 7918 7918 548 -Width: 1357 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1065 43<1409 1543> 1393 41<384 567 1301 1485> 1516 117<1018 1211> 1581 117<807 1000> -VStem: 176 174<211 687> 393 174<1372 1434> 705 608 1563 160<1279 1467> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1272 246 2 -Refer: 495 431 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EEF -Encoding: 7919 7919 549 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 614 43<1034 1166> 860 41<281 455 918 1092> 1085 117<778 971> 1151 117<567 760> -VStem: 154 172<137 501> 465 608 762 174<142 374> 1057 70<93 131> 1186 160<829 1017> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1032 -184 2 -Refer: 492 432 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EA4 -Encoding: 7844 7844 550 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<49 232 1074 1255> 391 102<424 883> 1227 299 1481 279 -VStem: 381 551 782 276 -LayerCount: 2 -Fore -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1243 -31 2 -Refer: 929 58624 S 1 0 0 1 635 0 2 -Validated: 1 -EndChar - -StartChar: uni1EBE -Encoding: 7870 7870 551 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 1034> 655 102<522 969> 1126 102<608 1262> 1264 299 1481 279 -VStem: 635 551 1096 307 -LayerCount: 2 -Fore -Refer: 927 57371 S 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1186 6 2 -Refer: 929 58624 N 1 0 0 1 594 0 2 -Validated: 1 -EndChar - -StartChar: uni1ED0 -Encoding: 7888 7888 552 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<578 910> 1147 102<797 1145> 1257 299 1481 279 -VStem: 223 176<269 708> 754 551 1227 307 1325 176<535 974> -LayerCount: 2 -Fore -Refer: 928 57441 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1305 0 2 -Refer: 929 58624 N 1 0 0 1 725 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA5 -Encoding: 7845 7845 553 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1022 299 1276 279 -VStem: 94 164<178 440> 211 551 612 276 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 2 -Refer: 94 770 S 1 0 0 1 1073 -236 2 -Refer: 929 58624 S 1 0 0 1 465 -205 2 -Validated: 1 -EndChar - -StartChar: uni1EBF -Encoding: 7871 7871 554 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1022 299 1239 279 -VStem: 150 166<182 446> 553 551 872 160<556 758> 1014 307 -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 3 -Refer: 94 770 S 1 0 0 1 1104 -236 2 -Refer: 929 58624 S 1 0 0 1 512 -242 2 -Validated: 1 -EndChar - -StartChar: uni1ED1 -Encoding: 7889 7889 555 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1022 299 1245 279 -VStem: 147 164<157 530> 569 551 897 168<366 739> 1042 307 -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1120 -236 2 -Refer: 929 58624 N 1 0 0 1 541 -236 2 -Validated: 1 -EndChar - -StartChar: uni1EA6 -Encoding: 7846 7846 556 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<49 242 1084 1255> 391 102<539 997> 1227 299 1481 279 -VStem: 692 551 1016 246 -LayerCount: 2 -Fore -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1243 -31 2 -Refer: 930 58625 N 1 0 0 1 483 0 2 -Validated: 1 -EndChar - -StartChar: uni1EC0 -Encoding: 7872 7872 557 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 1034> 655 102<522 969> 1126 102<608 1262> 1264 299 1481 279 -VStem: 635 551 958 246 -LayerCount: 2 -Fore -Refer: 927 57371 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1186 6 2 -Refer: 930 58625 N 1 0 0 1 426 0 2 -Validated: 1 -EndChar - -StartChar: uni1ED2 -Encoding: 7890 7890 558 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<578 910> 1147 102<797 1145> 1257 299 1481 279 -VStem: 223 176<269 708> 754 551 1077 246 1325 176<535 974> -LayerCount: 2 -Fore -Refer: 928 57441 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1305 0 2 -Refer: 930 58625 N 1 0 0 1 545 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA7 -Encoding: 7847 7847 559 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1022 299 1276 279 -VStem: 154 158<136 521> 522 551 711 172<113 272> 846 246 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1073 -236 2 -Refer: 930 58625 N 1 0 0 1 313 -205 2 -Validated: 1 -EndChar - -StartChar: uni1EC1 -Encoding: 7873 7873 560 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1022 299 1239 279 -VStem: 150 166<182 446> 545 551 868 246 872 160<556 758> -LayerCount: 2 -Fore -Refer: 3 101 N 1 0 0 1 0 0 3 -Refer: 94 770 N 1 0 0 1 1096 -236 2 -Refer: 930 58625 N 1 0 0 1 336 -242 2 -Validated: 1 -EndChar - -StartChar: uni1ED3 -Encoding: 7891 7891 561 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1032 299 1251 279 -VStem: 147 164<157 530> 565 551 889 246 897 168<366 739> -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1116 -225 2 -Refer: 930 58625 N 1 0 0 1 356 -229 2 -Validated: 1 -EndChar - -StartChar: uni1EA8 -Encoding: 7848 7848 562 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<49 242 1084 1255> 391 102<539 997> 1227 299 1688 61<1114 1277> -VStem: 692 551 1229 117<1591 1687> -LayerCount: 2 -Fore -Refer: 481 777 S 1 0 0 1 1448 250 2 -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 94 770 S 1 0 0 1 1243 -31 2 -Validated: 1 -EndChar - -StartChar: uni1EBC -Encoding: 7868 7868 563 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1516 117<913 1106> 1581 117<702 895> -VStem: 600 608 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1167 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EBD -Encoding: 7869 7869 564 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1085 117<792 985> 1151 117<581 774> -VStem: 150 166<182 446> 479 608 872 160<556 758> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EC2 -Encoding: 7874 7874 565 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 1034> 655 102<522 969> 1126 102<608 1262> 1264 299 1706 61<1075 1238> -VStem: 635 551 1190 117<1610 1706> -LayerCount: 2 -Fore -Refer: 481 777 S 1 0 0 1 1409 268 2 -Refer: 927 57371 N 1 0 0 1 0 0 2 -Refer: 94 770 S 1 0 0 1 1186 6 2 -Validated: 1 -EndChar - -StartChar: uni1ED4 -Encoding: 7892 7892 566 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<578 910> 1147 102<797 1145> 1257 299 1737 61<1167 1330> -VStem: 223 176<269 708> 754 551 1282 117<1640 1736> 1325 176<535 974> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1501 299 2 -Refer: 928 57441 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1305 0 2 -Validated: 1 -EndChar - -StartChar: uni1EA9 -Encoding: 7849 7849 567 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1022 299 1483 61<944 1107> -VStem: 154 158<136 521> 522 551 711 172<113 272> 1004 72<93 131> 1059 117<1386 1482> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 2 -Refer: 481 777 N 1 0 0 1 1278 45 2 -Refer: 94 770 N 1 0 0 1 1073 -236 2 -Validated: 1 -EndChar - -StartChar: uni1EC3 -Encoding: 7875 7875 568 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1073 299 1561 61<1000 1162> -VStem: 150 166<182 446> 496 551 872 160<556 758> 1114 117<1464 1560> -LayerCount: 2 -Fore -Refer: 481 777 S 1 0 0 1 1333 123 2 -Refer: 125 234 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED5 -Encoding: 7893 7893 569 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1073 299 1561 61<1002 1164> -VStem: 147 164<157 530> 500 551 897 168<366 739> 1116 117<1464 1560> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1335 123 2 -Refer: 127 244 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EAA -Encoding: 7850 7850 570 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1503 299 1802 117<1100 1292> 1868 117<889 1081> -VStem: 737 551 786 608 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1354 532 2 -Refer: 140 194 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EAB -Encoding: 7851 7851 571 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1073 299 1434 117<874 1067> 1499 117<663 856> -VStem: 154 158<136 521> 494 551 561 608 711 172<113 272> 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1128 164 2 -Refer: 124 226 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EC4 -Encoding: 7876 7876 572 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<373 1034> 655 102<522 969> 1126 102<608 1262> 1264 299 1599 117<950 1143> 1665 117<739 932> -VStem: 635 551 637 608 -LayerCount: 2 -Fore -Refer: 95 771 S 1 0 0 1 1204 330 2 -Refer: 927 57371 N 1 0 0 1 0 0 2 -Refer: 94 770 S 1 0 0 1 1186 6 2 -Validated: 1 -EndChar - -StartChar: uni1EC5 -Encoding: 7877 7877 573 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1073 299 1434 117<874 1067> 1499 117<663 856> -VStem: 150 166<182 446> 496 551 561 608 872 160<556 758> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1128 164 2 -Refer: 125 234 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1ED6 -Encoding: 7894 7894 574 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<578 910> 1147 102<797 1145> 1257 299 1614 117<1116 1309> 1679 117<905 1098> -VStem: 223 176<269 708> 754 551 803 608 1325 176<535 974> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1370 344 2 -Refer: 928 57441 N 1 0 0 1 0 0 2 -Refer: 94 770 N 1 0 0 1 1305 0 2 -Validated: 1 -EndChar - -StartChar: uni1ED7 -Encoding: 7895 7895 575 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1073 299 1434 117<876 1069> 1499 117<665 858> -VStem: 147 164<157 530> 500 551 563 608 897 168<366 739> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1130 164 2 -Refer: 127 244 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EAC -Encoding: 7852 7852 576 -Width: 1275 -VWidth: 0 -Flags: W -HStem: -272 150<535 649> 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1503 299 -VStem: 500 184 737 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1288 246 2 -Refer: 502 7840 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EAD -Encoding: 7853 7853 577 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -272 150<342 457> -20 102<366 693 846 1001> 819 102<532 850> 1073 299 -VStem: 154 158<136 521> 307 184 494 551 711 172<113 272> 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1045 -184 2 -Refer: 503 7841 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EC6 -Encoding: 7878 7878 578 -Width: 962 -VWidth: 0 -Flags: W -HStem: -272 150<432 547> 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1503 299 -VStem: 397 184 617 551 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1168 246 2 -Refer: 504 7864 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EC7 -Encoding: 7879 7879 579 -Width: 964 -VWidth: 0 -Flags: W -HStem: -272 150<406 520> -20 102<419 734> 451 102<362 869> 819 102<551 814> 1073 299 -VStem: 150 166<182 446> 371 184 496 551 872 160<556 758> -AnchorPoint: "top" 815 1352 basechar 0 -LayerCount: 2 -Fore -Refer: 94 770 N 1 0 0 1 1047 -184 2 -Refer: 505 7865 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EAE -Encoding: 7854 7854 580 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<49 232 1074 1255> 391 102<424 883> 1294 117<529 773> 1481 279 -VStem: 420 78<1452 1489> 598 276 805 78<1452 1489> -LayerCount: 2 -Fore -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 97 774 S 1 0 0 1 1239 25 2 -Refer: 929 58624 S 1 0 0 1 451 0 2 -Validated: 1 -EndChar - -StartChar: uni1EAF -Encoding: 7855 7855 581 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1090 117<367 612> 1276 279 -VStem: 94 164<178 440> 258 78<1247 1284> 436 276 643 78<1247 1284> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 2 -Refer: 97 774 N 1 0 0 1 1077 -180 2 -Refer: 929 58624 N 1 0 0 1 289 -205 2 -Validated: 1 -EndChar - -StartChar: uni1EB0 -Encoding: 7856 7856 582 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<49 232 1074 1255> 391 102<424 883> 1294 117<529 773> 1481 279 -VStem: 420 78<1452 1489> 434 276 805 78<1452 1489> -LayerCount: 2 -Fore -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 97 774 S 1 0 0 1 1239 25 2 -Refer: 930 58625 S 1 0 0 1 287 0 2 -Validated: 1 -EndChar - -StartChar: uni1EB1 -Encoding: 7857 7857 583 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1090 117<367 612> 1276 279 -VStem: 94 164<178 440> 258 78<1247 1284> 272 276 643 78<1247 1284> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 2 -Refer: 97 774 N 1 0 0 1 1077 -180 2 -Refer: 930 58625 N 1 0 0 1 125 -205 2 -Validated: 1 -EndChar - -StartChar: uni1EB2 -Encoding: 7858 7858 584 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<49 242 1084 1255> 391 102<539 997> 1294 117<860 1093> 1712 61<909 1072> -VStem: 756 84<1440 1485> 1024 117<1616 1712> -LayerCount: 2 -Fore -Refer: 481 777 S 1 0 0 1 1243 274 2 -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 97 774 S 1 0 0 1 1239 25 2 -Validated: 1 -EndChar - -StartChar: uni1EB3 -Encoding: 7859 7859 585 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1085 117<665 899> 1458 61<744 906> -VStem: 154 158<136 521> 561 84<1231 1276> 711 172<113 272> 858 117<1362 1458> 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 481 777 N 1 0 0 1 1077 20 2 -Refer: 207 259 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1EB4 -Encoding: 7860 7860 586 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<49 242 1084 1255> 391 102<539 997> 1294 117<897 1130> 1575 117<1087 1280> 1640 117<876 1069> -VStem: 774 608 793 84<1440 1485> -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 1341 305 2 -Refer: 926 57344 N 1 0 0 1 0 0 2 -Refer: 97 774 N 1 0 0 1 1276 25 2 -Validated: 1 -EndChar - -StartChar: uni1EB5 -Encoding: 7861 7861 587 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1090 117<698 932> 1370 117<889 1081> 1436 117<678 871> -VStem: 154 158<136 521> 575 608 594 84<1236 1280> 711 172<113 272> 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 2 -Refer: 95 771 N 1 0 0 1 1143 100 2 -Refer: 97 774 N 1 0 0 1 1077 -180 2 -Validated: 1 -EndChar - -StartChar: uni1EB6 -Encoding: 7862 7862 588 -Width: 1275 -VWidth: 0 -Flags: W -HStem: -272 150<535 649> 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1516 117<909 1143> -VStem: 500 184 805 84<1662 1706> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1288 246 2 -Refer: 502 7840 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1EB7 -Encoding: 7863 7863 589 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -272 150<342 457> -20 102<366 693 846 1001> 819 102<532 850> 1085 117<665 899> -VStem: 154 158<136 521> 307 184 561 84<1231 1276> 711 172<113 272> 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 97 774 N 1 0 0 1 1044 -184 2 -Refer: 503 7841 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0181 -Encoding: 385 385 590 -Width: 1341 -VWidth: 0 -Flags: W -HStem: 0 102<598 1017> 727 102<766 1092> 918 43G<420 472> 1331 102<600 705 881 1218> -VStem: 297 178<1002 1214> 1190 176<296 656> 1262 178<999 1290> -LayerCount: 2 -Fore -SplineSet -946 829 m 2,0,1 - 1064 829 1064 829 1163 925.5 c 128,-1,2 - 1262 1022 1262 1022 1262 1159 c 0,3,4 - 1262 1232 1262 1232 1226.5 1281.5 c 128,-1,5 - 1191 1331 1191 1331 1106 1331 c 2,6,-1 - 881 1331 l 1,7,-1 - 766 829 l 1,8,-1 - 946 829 l 2,0,1 -1440 1188 m 0,9,10 - 1440 1121 1440 1121 1420.5 1060 c 128,-1,11 - 1401 999 1401 999 1373.5 958 c 128,-1,12 - 1346 917 1346 917 1309 881.5 c 128,-1,13 - 1272 846 1272 846 1244.5 827.5 c 128,-1,14 - 1217 809 1217 809 1190 795 c 1,15,16 - 1280 754 1280 754 1323 675.5 c 128,-1,17 - 1366 597 1366 597 1366 498 c 0,18,19 - 1366 406 1366 406 1332 320 c 128,-1,20 - 1298 234 1298 234 1232.5 161 c 128,-1,21 - 1167 88 1167 88 1057 44 c 128,-1,22 - 947 0 947 0 809 0 c 2,23,-1 - 399 0 l 1,24,-1 - 705 1325 l 1,25,26 - 644 1315 644 1315 597 1288 c 128,-1,27 - 550 1261 550 1261 525 1224.5 c 128,-1,28 - 500 1188 500 1188 487.5 1150.5 c 128,-1,29 - 475 1113 475 1113 475 1077 c 0,30,31 - 475 1062 475 1062 479.5 1051 c 128,-1,32 - 484 1040 484 1040 488.5 1036 c 128,-1,33 - 493 1032 493 1032 504 1024 c 1,34,-1 - 453 918 l 1,35,36 - 422 930 422 930 400 941 c 128,-1,37 - 378 952 378 952 351.5 971.5 c 128,-1,38 - 325 991 325 991 311 1019.5 c 128,-1,39 - 297 1048 297 1048 297 1083 c 0,40,41 - 297 1137 297 1137 327 1197 c 128,-1,42 - 357 1257 357 1257 410.5 1310.5 c 128,-1,43 - 464 1364 464 1364 548.5 1399 c 128,-1,44 - 633 1434 633 1434 731 1434 c 2,45,-1 - 1100 1434 l 2,46,47 - 1440 1434 1440 1434 1440 1188 c 0,9,10 -864 102 m 2,48,49 - 939 102 939 102 1002 136 c 128,-1,50 - 1065 170 1065 170 1105 225.5 c 128,-1,51 - 1145 281 1145 281 1167.5 349.5 c 128,-1,52 - 1190 418 1190 418 1190 489 c 0,53,54 - 1190 536 1190 536 1180 577 c 128,-1,55 - 1170 618 1170 618 1149.5 652.5 c 128,-1,56 - 1129 687 1129 687 1093 707 c 128,-1,57 - 1057 727 1057 727 1008 727 c 2,58,-1 - 741 727 l 1,59,-1 - 598 102 l 1,60,-1 - 864 102 l 2,48,49 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0253 -Encoding: 595 595 591 -Width: 1079 -VWidth: 0 -Flags: W -HStem: -20 102<413 735> 819 102<609 883> 1270 102<621 852> -VStem: 207 158<129 460> 948 168<362 753> -LayerCount: 2 -Fore -SplineSet -1116 606 m 0,0,1 - 1116 561 1116 561 1109 510 c 128,-1,2 - 1102 459 1102 459 1083.5 397.5 c 128,-1,3 - 1065 336 1065 336 1037 278.5 c 128,-1,4 - 1009 221 1009 221 963 166 c 128,-1,5 - 917 111 917 111 860 70 c 128,-1,6 - 803 29 803 29 721.5 4.5 c 128,-1,7 - 640 -20 640 -20 545 -20 c 0,8,9 - 473 -20 473 -20 418.5 -10.5 c 128,-1,10 - 364 -1 364 -1 313 24.5 c 128,-1,11 - 262 50 262 50 234.5 102 c 128,-1,12 - 207 154 207 154 207 231 c 0,13,14 - 207 292 207 292 225 369 c 2,15,-1 - 391 1092 l 2,16,17 - 408 1165 408 1165 448 1221 c 128,-1,18 - 488 1277 488 1277 541 1308.5 c 128,-1,19 - 594 1340 594 1340 650 1356 c 128,-1,20 - 706 1372 706 1372 762 1372 c 0,21,22 - 889 1372 889 1372 946 1280 c 1,23,-1 - 803 1219 l 1,24,25 - 781 1270 781 1270 707 1270 c 0,26,27 - 647 1270 647 1270 608 1211.5 c 128,-1,28 - 569 1153 569 1153 539 1024 c 2,29,-1 - 500 852 l 1,30,31 - 621 922 621 922 762 922 c 0,32,33 - 946 922 946 922 1031 837 c 128,-1,34 - 1116 752 1116 752 1116 606 c 0,0,1 -598 82 m 0,35,36 - 674 82 674 82 741.5 130 c 128,-1,37 - 809 178 809 178 853 252.5 c 128,-1,38 - 897 327 897 327 922.5 414 c 128,-1,39 - 948 501 948 501 948 582 c 0,40,41 - 948 686 948 686 904 752.5 c 128,-1,42 - 860 819 860 819 768 819 c 0,43,44 - 677 819 677 819 602 770.5 c 128,-1,45 - 527 722 527 722 480.5 645 c 128,-1,46 - 434 568 434 568 412 471 c 2,47,-1 - 373 303 l 2,48,49 - 365 270 365 270 365 236 c 0,50,51 - 365 190 365 190 383.5 158 c 128,-1,52 - 402 126 402 126 437 110 c 128,-1,53 - 472 94 472 94 510 88 c 128,-1,54 - 548 82 548 82 598 82 c 0,35,36 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0257 -Encoding: 599 599 592 -Width: 1204 -VWidth: 0 -Flags: W -HStem: -20 102<404 666 925 1088> 819 102<556 809> 1270 102<1233 1464> -VStem: 150 168<174 538> 866 102<182 586> 1090 70<93 131> -LayerCount: 2 -Fore -SplineSet -979 276 m 2,0,1 - 969 232 969 232 969 182 c 0,2,3 - 969 82 969 82 1012 82 c 0,4,5 - 1040 82 1040 82 1062.5 96.5 c 128,-1,6 - 1085 111 1085 111 1090 131 c 1,7,-1 - 1159 131 l 1,8,9 - 1146 68 1146 68 1088 24 c 128,-1,10 - 1030 -20 1030 -20 961 -20 c 0,11,12 - 908 -20 908 -20 868 6.5 c 128,-1,13 - 828 33 828 33 809 78 c 1,14,15 - 677 -20 677 -20 471 -20 c 0,16,17 - 317 -20 317 -20 233.5 73 c 128,-1,18 - 150 166 150 166 150 317 c 0,19,20 - 150 420 150 420 189.5 527 c 128,-1,21 - 229 634 229 634 297.5 722 c 128,-1,22 - 366 810 366 810 469 866 c 128,-1,23 - 572 922 572 922 688 922 c 0,24,25 - 846 922 846 922 942 823 c 1,26,-1 - 1004 1092 l 2,27,28 - 1026 1188 1026 1188 1089 1253.5 c 128,-1,29 - 1152 1319 1152 1319 1224.5 1345.5 c 128,-1,30 - 1297 1372 1297 1372 1374 1372 c 0,31,32 - 1502 1372 1502 1372 1559 1280 c 1,33,-1 - 1415 1219 l 1,34,35 - 1393 1270 1393 1270 1319 1270 c 0,36,37 - 1259 1270 1259 1270 1220 1211.5 c 128,-1,38 - 1181 1153 1181 1153 1151 1024 c 2,39,-1 - 979 276 l 2,0,1 -524 82 m 128,-1,41 - 623 82 623 82 702.5 153 c 128,-1,42 - 782 224 782 224 824 338.5 c 128,-1,43 - 866 453 866 453 866 586 c 0,44,45 - 866 691 866 691 825.5 755 c 128,-1,46 - 785 819 785 819 694 819 c 0,47,48 - 599 819 599 819 510.5 747 c 128,-1,49 - 422 675 422 675 369.5 566 c 128,-1,50 - 317 457 317 457 317 348 c 0,51,52 - 317 236 317 236 371 159 c 128,-1,40 - 425 82 425 82 524 82 c 128,-1,41 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni018A -Encoding: 394 394 593 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 102<598 1092> 918 43G<420 472> 1331 102<600 705 881 1370> -VStem: 297 178<1002 1215> 1464 172<716 1227> -LayerCount: 2 -Fore -SplineSet -881 1331 m 1,0,-1 - 598 102 l 1,1,-1 - 950 102 l 2,2,3 - 1092 102 1092 102 1221.5 260 c 128,-1,4 - 1351 418 1351 418 1425 737 c 0,5,6 - 1464 903 1464 903 1464 1024 c 0,7,8 - 1464 1185 1464 1185 1401 1258 c 128,-1,9 - 1338 1331 1338 1331 1233 1331 c 2,10,-1 - 881 1331 l 1,0,-1 -1636 1020 m 0,11,12 - 1636 962 1636 962 1626.5 885.5 c 128,-1,13 - 1617 809 1617 809 1592.5 710 c 128,-1,14 - 1568 611 1568 611 1531.5 514.5 c 128,-1,15 - 1495 418 1495 418 1435.5 324 c 128,-1,16 - 1376 230 1376 230 1302 159 c 128,-1,17 - 1228 88 1228 88 1122.5 44 c 128,-1,18 - 1017 0 1017 0 895 0 c 2,19,-1 - 399 0 l 1,20,-1 - 705 1325 l 1,21,22 - 645 1315 645 1315 600 1289.5 c 128,-1,23 - 555 1264 555 1264 532.5 1235.5 c 128,-1,24 - 510 1207 510 1207 496 1172.5 c 128,-1,25 - 482 1138 482 1138 478.5 1116.5 c 128,-1,26 - 475 1095 475 1095 475 1077 c 0,27,28 - 475 1062 475 1062 479.5 1051 c 128,-1,29 - 484 1040 484 1040 488.5 1036 c 128,-1,30 - 493 1032 493 1032 504 1024 c 1,31,-1 - 453 918 l 1,32,33 - 422 930 422 930 400 941 c 128,-1,34 - 378 952 378 952 351.5 971.5 c 128,-1,35 - 325 991 325 991 311 1019.5 c 128,-1,36 - 297 1048 297 1048 297 1083 c 0,37,38 - 297 1137 297 1137 327 1197 c 128,-1,39 - 357 1257 357 1257 410.5 1310.5 c 128,-1,40 - 464 1364 464 1364 548.5 1399 c 128,-1,41 - 633 1434 633 1434 731 1434 c 2,42,-1 - 1227 1434 l 2,43,44 - 1636 1434 1636 1434 1636 1020 c 0,11,12 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni018E -Encoding: 398 398 594 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<121 807> 799 102<522 967> 1331 102<461 1090> -LayerCount: 2 -Fore -SplineSet -96 0 m 1,0,-1 - 121 102 l 1,1,-1 - 807 102 l 1,2,-1 - 967 799 l 1,3,-1 - 498 799 l 1,4,-1 - 522 901 l 1,5,-1 - 991 901 l 1,6,-1 - 1090 1331 l 1,7,-1 - 436 1331 l 1,8,-1 - 461 1434 l 1,9,-1 - 1288 1434 l 1,10,-1 - 956 0 l 1,11,-1 - 96 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01DD -Encoding: 477 477 595 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<368 631> 348 102<313 819> 819 102<448 763> -VStem: 150 160<143 345> 866 166<455 720> -AnchorPoint: "bottom" 672 901 basechar 0 -AnchorPoint: "ogonek" 623 901 basechar 0 -AnchorPoint: "top" 449 -102 basechar 0 -LayerCount: 2 -Fore -SplineSet -150 330 m 0,0,1 - 150 451 150 451 338 451 c 2,2,-1 - 854 451 l 1,3,4 - 866 507 866 507 866 561 c 0,5,6 - 866 681 866 681 797 750 c 128,-1,7 - 728 819 728 819 608 819 c 0,8,9 - 461 819 461 819 354 696 c 1,10,-1 - 242 743 l 1,11,12 - 326 825 326 825 433.5 873.5 c 128,-1,13 - 541 922 541 922 662 922 c 0,14,15 - 831 922 831 922 931.5 829.5 c 128,-1,16 - 1032 737 1032 737 1032 578 c 0,17,18 - 1032 459 1032 459 982 347 c 128,-1,19 - 932 235 932 235 854 155.5 c 128,-1,20 - 776 76 776 76 677.5 28 c 128,-1,21 - 579 -20 579 -20 485 -20 c 0,22,23 - 401 -20 401 -20 335 8.5 c 128,-1,24 - 269 37 269 37 229.5 86.5 c 128,-1,25 - 190 136 190 136 170 197.5 c 128,-1,26 - 150 259 150 259 150 330 c 0,0,1 -819 348 m 1,27,-1 - 395 348 l 2,28,29 - 350 348 350 348 329.5 338.5 c 128,-1,30 - 309 329 309 329 309 305 c 0,31,32 - 309 202 309 202 351.5 142 c 128,-1,33 - 394 82 394 82 479 82 c 0,34,35 - 583 82 583 82 674.5 156.5 c 128,-1,36 - 766 231 766 231 819 348 c 1,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0259 -Encoding: 601 601 596 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<368 631> 348 102<313 819> 819 102<448 763> -VStem: 150 160<143 345> 866 166<455 720> -LayerCount: 2 -Fore -Refer: 595 477 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0198 -Encoding: 408 408 597 -Width: 1374 -VWidth: 0 -Flags: W -HStem: 0 43G<174 358 1018 1233> 1341 113<1393 1573> 1393 41G<496 680> -VStem: 1587 143<1137 1329> -LayerCount: 2 -Fore -SplineSet -801 776 m 1,0,-1 - 1233 0 l 1,1,-1 - 1040 0 l 1,2,-1 - 674 662 l 1,3,-1 - 457 469 l 1,4,-1 - 348 0 l 1,5,-1 - 174 0 l 1,6,-1 - 506 1434 l 1,7,-1 - 680 1434 l 1,8,-1 - 508 696 l 1,9,-1 - 1149 1266 l 2,10,11 - 1252 1357 1252 1357 1334.5 1405.5 c 128,-1,12 - 1417 1454 1417 1454 1507 1454 c 0,13,14 - 1600 1454 1600 1454 1665.5 1401.5 c 128,-1,15 - 1731 1349 1731 1349 1731 1257 c 0,16,17 - 1731 1207 1731 1207 1712 1160.5 c 128,-1,18 - 1693 1114 1693 1114 1666 1082 c 128,-1,19 - 1639 1050 1639 1050 1607 1024 c 128,-1,20 - 1575 998 1575 998 1551.5 984.5 c 128,-1,21 - 1528 971 1528 971 1513 967 c 1,22,-1 - 1479 1081 l 1,23,24 - 1522 1106 1522 1106 1548 1141 c 128,-1,25 - 1574 1176 1574 1176 1580.5 1199.5 c 128,-1,26 - 1587 1223 1587 1223 1587 1245 c 0,27,28 - 1587 1285 1587 1285 1563 1313 c 128,-1,29 - 1539 1341 1539 1341 1501 1341 c 0,30,31 - 1459 1341 1459 1341 1417.5 1314.5 c 128,-1,32 - 1376 1288 1376 1288 1276 1198 c 2,33,-1 - 801 776 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0199 -Encoding: 409 409 598 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43G<147 321 714 913> 860 41G<851 1085> 1270 102<629 860> -LayerCount: 2 -Fore -SplineSet -422 477 m 1,0,-1 - 897 901 l 1,1,-1 - 1085 901 l 1,2,-1 - 637 502 l 1,3,-1 - 913 0 l 1,4,-1 - 737 0 l 1,5,-1 - 516 395 l 1,6,-1 - 373 268 l 1,7,-1 - 311 0 l 1,8,-1 - 147 0 l 1,9,-1 - 399 1092 l 2,10,11 - 416 1165 416 1165 456 1221 c 128,-1,12 - 496 1277 496 1277 549 1308.5 c 128,-1,13 - 602 1340 602 1340 658 1356 c 128,-1,14 - 714 1372 714 1372 770 1372 c 0,15,16 - 897 1372 897 1372 954 1280 c 1,17,-1 - 811 1219 l 1,18,19 - 789 1270 789 1270 715 1270 c 0,20,21 - 655 1270 655 1270 616 1211.5 c 128,-1,22 - 577 1153 577 1153 547 1024 c 2,23,-1 - 422 477 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E62 -Encoding: 7778 7778 599 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -272 150<498 612> -20 102<495 829> 1352 102<765 1066> -VStem: 207 166<209 350> 430 180<951 1185> 463 184 1024 176<277 545> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1192 0 2 -Refer: 45 83 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E63 -Encoding: 7779 7779 600 -Width: 860 -VWidth: 0 -Flags: W -HStem: -272 150<317 432> -20 102<279 603> 819 102<467 723> -VStem: 252 166<581 768> 283 184 688 168<168 375> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1012 0 2 -Refer: 7 115 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: Engsami -Encoding: 58626 58626 601 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -348 102<545 873> 0 43G<92 276> 1393 41G<414 616 1303 1487> -AnchorPoint: "top" 967 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1313 1434 m 1,0,-1 - 1487 1434 l 1,1,-1 - 1192 160 l 2,2,3 - 1167 52 1167 52 1144 -20.5 c 128,-1,4 - 1121 -93 1121 -93 1088.5 -153 c 128,-1,5 - 1056 -213 1056 -213 1019 -248 c 128,-1,6 - 982 -283 982 -283 926.5 -307 c 128,-1,7 - 871 -331 871 -331 804.5 -339.5 c 128,-1,8 - 738 -348 738 -348 645 -348 c 0,9,10 - 496 -348 496 -348 342 -256 c 1,11,-1 - 469 -150 l 1,12,13 - 585 -246 585 -246 698 -246 c 0,14,15 - 789 -246 789 -246 842 -221 c 128,-1,16 - 895 -196 895 -196 924 -146.5 c 128,-1,17 - 953 -97 953 -97 979 0 c 1,18,-1 - 528 1137 l 1,19,-1 - 266 0 l 1,20,-1 - 92 0 l 1,21,-1 - 424 1434 l 1,22,-1 - 600 1434 l 1,23,-1 - 1049 295 l 1,24,-1 - 1313 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0193 -Encoding: 403 403 602 -Width: 1523 -VWidth: 0 -Flags: W -HStem: -20 102<626 997> 717 102<1102 1251> 1331 102<845 1252 1593 1839> -VStem: 242 176<307 780> -LayerCount: 2 -Fore -SplineSet -1040 1331 m 0,0,1 - 939 1331 939 1331 848.5 1292 c 128,-1,2 - 758 1253 758 1253 691.5 1187 c 128,-1,3 - 625 1121 625 1121 571.5 1038 c 128,-1,4 - 518 955 518 955 485.5 863.5 c 128,-1,5 - 453 772 453 772 435.5 685 c 128,-1,6 - 418 598 418 598 418 522 c 0,7,8 - 418 433 418 433 441 358 c 128,-1,9 - 464 283 464 283 502 233 c 128,-1,10 - 540 183 540 183 589 148 c 128,-1,11 - 638 113 638 113 689 97.5 c 128,-1,12 - 740 82 740 82 791 82 c 0,13,14 - 989 82 989 82 1135 209 c 1,15,-1 - 1251 717 l 1,16,-1 - 1079 717 l 1,17,-1 - 1102 819 l 1,18,-1 - 1438 819 l 1,19,-1 - 1298 209 l 1,20,21 - 1194 106 1194 106 1046 43 c 128,-1,22 - 898 -20 898 -20 737 -20 c 0,23,24 - 667 -20 667 -20 598 -0.5 c 128,-1,25 - 529 19 529 19 464.5 61.5 c 128,-1,26 - 400 104 400 104 351 164.5 c 128,-1,27 - 302 225 302 225 272 314.5 c 128,-1,28 - 242 404 242 404 242 510 c 0,29,30 - 242 594 242 594 268 717 c 1,31,32 - 302 865 302 865 367.5 987.5 c 128,-1,33 - 433 1110 433 1110 512 1191 c 128,-1,34 - 591 1272 591 1272 683 1328 c 128,-1,35 - 775 1384 775 1384 863 1409 c 128,-1,36 - 951 1434 951 1434 1034 1434 c 0,37,38 - 1165 1434 1165 1434 1278.5 1406.5 c 128,-1,39 - 1392 1379 1392 1379 1456 1325 c 1,40,41 - 1511 1385 1511 1385 1588 1414.5 c 128,-1,42 - 1665 1444 1665 1444 1743 1444 c 0,43,44 - 1870 1444 1870 1444 1927 1352 c 1,45,-1 - 1784 1290 l 1,46,47 - 1762 1341 1762 1341 1688 1341 c 0,48,49 - 1628 1341 1628 1341 1590 1283 c 128,-1,50 - 1552 1225 1552 1225 1522 1096 c 1,51,-1 - 1352 1028 l 1,52,53 - 1362 1076 1362 1076 1362 1108 c 0,54,55 - 1362 1171 1362 1171 1334 1216.5 c 128,-1,56 - 1306 1262 1306 1262 1257.5 1286 c 128,-1,57 - 1209 1310 1209 1310 1155.5 1320.5 c 128,-1,58 - 1102 1331 1102 1331 1040 1331 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019D -Encoding: 413 413 603 -Width: 1275 -VWidth: 0 -Flags: W -HStem: -348 102<-165 67> 0 43G<946 1130> 1270 102<749 1106> -VStem: 946 174<0 62> 1176 176<813 1199> -LayerCount: 2 -Fore -SplineSet -459 1352 m 1,0,-1 - 633 1352 l 1,1,-1 - 618 1282 l 1,2,3 - 623 1284 623 1284 646 1295 c 128,-1,4 - 669 1306 669 1306 679 1310.5 c 128,-1,5 - 689 1315 689 1315 713.5 1325 c 128,-1,6 - 738 1335 738 1335 753.5 1340 c 128,-1,7 - 769 1345 769 1345 795 1352 c 128,-1,8 - 821 1359 821 1359 842.5 1362.5 c 128,-1,9 - 864 1366 864 1366 891.5 1369 c 128,-1,10 - 919 1372 919 1372 946 1372 c 0,11,12 - 1136 1372 1136 1372 1244 1292.5 c 128,-1,13 - 1352 1213 1352 1213 1352 1059 c 0,14,15 - 1352 1006 1352 1006 1337 942 c 2,16,-1 - 1120 0 l 1,17,-1 - 946 0 l 1,18,-1 - 1157 918 l 2,19,20 - 1176 1002 1176 1002 1176 1055 c 0,21,22 - 1176 1270 1176 1270 952 1270 c 0,23,24 - 772 1270 772 1270 584 1135 c 1,25,-1 - 305 -68 l 2,26,27 - 288 -141 288 -141 246.5 -197 c 128,-1,28 - 205 -253 205 -253 151 -284.5 c 128,-1,29 - 97 -316 97 -316 40 -332 c 128,-1,30 - -17 -348 -17 -348 -74 -348 c 0,31,32 - -203 -348 -203 -348 -260 -256 c 1,33,-1 - -117 -195 l 1,34,35 - -95 -246 -95 -246 -20 -246 c 0,36,37 - 40 -246 40 -246 78.5 -187.5 c 128,-1,38 - 117 -129 117 -129 147 0 c 2,39,-1 - 459 1352 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B3 -Encoding: 435 435 604 -Width: 1189 -VWidth: 0 -Flags: W -HStem: 0 43G<391 575> 1346 113<1180 1351> 1393 41G<354 550> -VStem: 1368 147<1210 1330> -LayerCount: 2 -Fore -SplineSet -1364 1198 m 1,0,1 - 1368 1212 1368 1212 1368 1237 c 0,2,3 - 1368 1285 1368 1285 1342 1315.5 c 128,-1,4 - 1316 1346 1316 1346 1274 1346 c 0,5,6 - 1247 1346 1247 1346 1223 1335 c 128,-1,7 - 1199 1324 1199 1324 1171 1295 c 128,-1,8 - 1143 1266 1143 1266 1126 1244.5 c 128,-1,9 - 1109 1223 1109 1223 1073 1174 c 0,10,11 - 1064 1161 1064 1161 1059 1155 c 2,12,-1 - 729 709 l 1,13,-1 - 565 0 l 1,14,-1 - 391 0 l 1,15,-1 - 555 711 l 1,16,-1 - 354 1434 l 1,17,-1 - 539 1434 l 1,18,-1 - 686 899 l 1,19,-1 - 897 1184 l 2,20,21 - 926 1224 926 1224 952 1255 c 128,-1,22 - 978 1286 978 1286 1020 1326.5 c 128,-1,23 - 1062 1367 1062 1367 1102.5 1393.5 c 128,-1,24 - 1143 1420 1143 1420 1197.5 1439 c 128,-1,25 - 1252 1458 1252 1458 1307 1458 c 0,26,27 - 1406 1458 1406 1458 1461 1402 c 128,-1,28 - 1516 1346 1516 1346 1516 1264 c 0,29,30 - 1516 1242 1516 1242 1509 1210 c 1,31,-1 - 1364 1198 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B4 -Encoding: 436 436 605 -Width: 1116 -VWidth: 0 -Flags: W -HStem: -348 102<116 245> 819 102<1003 1132> 860 41G<254 409> -LayerCount: 2 -Fore -SplineSet -741 623 m 2,0,1 - 829 771 829 771 922 846.5 c 128,-1,2 - 1015 922 1015 922 1128 922 c 0,3,4 - 1183 922 1183 922 1222.5 888.5 c 128,-1,5 - 1262 855 1262 855 1309 786 c 1,6,-1 - 1161 721 l 1,7,8 - 1140 765 1140 765 1123 787.5 c 128,-1,9 - 1106 810 1106 810 1096.5 814.5 c 128,-1,10 - 1087 819 1087 819 1073 819 c 0,11,12 - 1055 819 1055 819 1039 810 c 128,-1,13 - 1023 801 1023 801 1000.5 771 c 128,-1,14 - 978 741 978 741 967 724 c 128,-1,15 - 956 707 956 707 923 651 c 0,16,17 - 910 629 910 629 903 618 c 2,18,-1 - 506 -49 l 2,19,20 - 418 -197 418 -197 326 -272.5 c 128,-1,21 - 234 -348 234 -348 121 -348 c 0,22,23 - 66 -348 66 -348 27 -315 c 128,-1,24 - -12 -282 -12 -282 -59 -213 c 1,25,-1 - 86 -147 l 1,26,27 - 117 -211 117 -211 135 -228.5 c 128,-1,28 - 153 -246 153 -246 174 -246 c 0,29,30 - 193 -246 193 -246 209.5 -236.5 c 128,-1,31 - 226 -227 226 -227 249.5 -195.5 c 128,-1,32 - 273 -164 273 -164 285 -145 c 128,-1,33 - 297 -126 297 -126 332 -68 c 0,34,35 - 341 -53 341 -53 346 -45 c 2,36,-1 - 373 0 l 1,37,-1 - 254 901 l 1,38,-1 - 403 901 l 1,39,-1 - 494 205 l 1,40,-1 - 741 623 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0260 -Encoding: 608 608 606 -Width: 1140 -VWidth: 0 -Flags: W -HStem: -348 102<293 621> -20 102<423 732> 819 102<557 812> 1022 102<1153 1384> -VStem: 176 166<162 536> -LayerCount: 2 -Fore -SplineSet -700 819 m 128,-1,1 - 618 819 618 819 548 769.5 c 128,-1,2 - 478 720 478 720 434.5 644 c 128,-1,3 - 391 568 391 568 366.5 482.5 c 128,-1,4 - 342 397 342 397 342 319 c 0,5,6 - 342 206 342 206 400 144 c 128,-1,7 - 458 82 458 82 571 82 c 0,8,9 - 677 82 677 82 762 145 c 1,10,-1 - 870 608 l 1,11,12 - 867 705 867 705 824.5 762 c 128,-1,0 - 782 819 782 819 700 819 c 128,-1,1 -176 307 m 0,13,14 - 176 461 176 461 249 604 c 128,-1,15 - 322 747 322 747 442.5 834.5 c 128,-1,16 - 563 922 563 922 694 922 c 0,17,18 - 833 922 833 922 924 844 c 1,19,20 - 946 940 946 940 1009 1005.5 c 128,-1,21 - 1072 1071 1072 1071 1144.5 1097.5 c 128,-1,22 - 1217 1124 1217 1124 1294 1124 c 0,23,24 - 1422 1124 1422 1124 1479 1032 c 1,25,-1 - 1335 971 l 1,26,27 - 1313 1022 1313 1022 1239 1022 c 0,28,29 - 1184 1022 1184 1022 1142.5 968 c 128,-1,30 - 1101 914 1101 914 1071 776 c 1,31,-1 - 930 160 l 2,32,33 - 905 51 905 51 883 -21 c 128,-1,34 - 861 -93 861 -93 829.5 -153.5 c 128,-1,35 - 798 -214 798 -214 762 -248.5 c 128,-1,36 - 726 -283 726 -283 672 -307 c 128,-1,37 - 618 -331 618 -331 552 -339.5 c 128,-1,38 - 486 -348 486 -348 393 -348 c 0,39,40 - 244 -348 244 -348 90 -256 c 1,41,-1 - 217 -150 l 1,42,43 - 333 -246 333 -246 446 -246 c 0,44,45 - 540 -246 540 -246 594.5 -218.5 c 128,-1,46 - 649 -191 649 -191 678.5 -137 c 128,-1,47 - 708 -83 708 -83 735 23 c 1,48,49 - 627 -20 627 -20 518 -20 c 0,50,51 - 355 -20 355 -20 265.5 67 c 128,-1,52 - 176 154 176 154 176 307 c 0,13,14 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0272 -Encoding: 626 626 607 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -348 102<-129 103> 0 43G<819 993> 819 102<221 380 602 914> -VStem: 150 70<770 808> 954 164<389 778> -LayerCount: 2 -Fore -SplineSet -332 -68 m 2,0,1 - 315 -141 315 -141 275 -197 c 128,-1,2 - 235 -253 235 -253 183 -285 c 128,-1,3 - 131 -317 131 -317 75 -332.5 c 128,-1,4 - 19 -348 19 -348 -37 -348 c 0,5,6 - -166 -348 -166 -348 -223 -256 c 1,7,-1 - -80 -195 l 1,8,9 - -58 -246 -58 -246 16 -246 c 0,10,11 - 76 -246 76 -246 115 -187.5 c 128,-1,12 - 154 -129 154 -129 184 0 c 2,13,-1 - 328 625 l 2,14,15 - 340 678 340 678 340 719 c 0,16,17 - 340 764 340 764 328 791.5 c 128,-1,18 - 316 819 316 819 295 819 c 0,19,20 - 267 819 267 819 245.5 804.5 c 128,-1,21 - 224 790 224 790 219 770 c 1,22,-1 - 150 770 l 1,23,24 - 164 833 164 833 221.5 877.5 c 128,-1,25 - 279 922 279 922 348 922 c 0,26,27 - 442 922 442 922 489 842 c 1,28,29 - 627 922 627 922 770 922 c 0,30,31 - 1118 922 1118 922 1118 641 c 0,32,33 - 1118 584 1118 584 1098 492 c 1,34,-1 - 983 0 l 1,35,-1 - 819 0 l 1,36,-1 - 930 467 l 1,37,38 - 954 575 954 575 954 643 c 0,39,40 - 954 741 954 741 908.5 780 c 128,-1,41 - 863 819 863 819 776 819 c 0,42,43 - 648 819 648 819 512 721 c 1,44,45 - 511 716 511 716 510 705 c 128,-1,46 - 509 694 509 694 508 688 c 2,47,-1 - 332 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0186 -Encoding: 390 390 608 -Width: 1331 -VWidth: 0 -Flags: W -HStem: -20 102<407 781> 1352 102<719 1100> -VStem: 1270 172<662 1165> -AnchorPoint: "top" 977 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -152 209 m 1,0,-1 - 285 264 l 1,1,2 - 361 82 361 82 598 82 c 0,3,4 - 648 82 648 82 706 98 c 128,-1,5 - 764 114 764 114 828 146 c 128,-1,6 - 892 178 892 178 954 231 c 128,-1,7 - 1016 284 1016 284 1071 351.5 c 128,-1,8 - 1126 419 1126 419 1171 513.5 c 128,-1,9 - 1216 608 1216 608 1241 717 c 0,10,11 - 1270 842 1270 842 1270 946 c 0,12,13 - 1270 1143 1270 1143 1175 1247.5 c 128,-1,14 - 1080 1352 1080 1352 930 1352 c 0,15,16 - 698 1352 698 1352 535 1178 c 1,17,-1 - 395 1245 l 1,18,19 - 611 1454 611 1454 985 1454 c 0,20,21 - 1072 1454 1072 1454 1152 1423 c 128,-1,22 - 1232 1392 1232 1392 1297.5 1332 c 128,-1,23 - 1363 1272 1363 1272 1402.5 1171.5 c 128,-1,24 - 1442 1071 1442 1071 1442 944 c 0,25,26 - 1442 843 1442 843 1415 717 c 1,27,28 - 1386 593 1386 593 1332.5 485 c 128,-1,29 - 1279 377 1279 377 1211.5 298 c 128,-1,30 - 1144 219 1144 219 1066 157 c 128,-1,31 - 988 95 988 95 907 57 c 128,-1,32 - 826 19 826 19 750 -0.5 c 128,-1,33 - 674 -20 674 -20 606 -20 c 0,34,35 - 445 -20 445 -20 327 43 c 128,-1,36 - 209 106 209 106 152 209 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0254 -Encoding: 596 596 609 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<316 636> 819 102<536 796> -VStem: 885 166<361 727> -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -457 82 m 0,0,1 - 553 82 553 82 635.5 125.5 c 128,-1,2 - 718 169 718 169 771.5 239 c 128,-1,3 - 825 309 825 309 855 393.5 c 128,-1,4 - 885 478 885 478 885 563 c 0,5,6 - 885 681 885 681 825 750 c 128,-1,7 - 765 819 765 819 668 819 c 0,8,9 - 587 819 587 819 519 762 c 128,-1,10 - 451 705 451 705 403 608 c 1,11,-1 - 285 676 l 1,12,13 - 363 787 363 787 476 854.5 c 128,-1,14 - 589 922 589 922 723 922 c 0,15,16 - 858 922 858 922 954.5 824.5 c 128,-1,17 - 1051 727 1051 727 1051 569 c 0,18,19 - 1051 463 1051 463 1008 358 c 128,-1,20 - 965 253 965 253 890.5 169 c 128,-1,21 - 816 85 816 85 704 32.5 c 128,-1,22 - 592 -20 592 -20 465 -20 c 0,23,24 - 344 -20 344 -20 258 28 c 128,-1,25 - 172 76 172 76 127 158 c 1,26,-1 - 260 205 l 1,27,28 - 307 82 307 82 457 82 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0190 -Encoding: 400 400 610 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -20 102<441 769> 799 102<647 881> 1352 102<692 1025> -VStem: 174 174<178 537> 397 176<966 1224> -AnchorPoint: "top" 868 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -748 799 m 2,0,1 - 642 799 642 799 547.5 728.5 c 128,-1,2 - 453 658 453 658 400.5 557 c 128,-1,3 - 348 456 348 456 348 358 c 0,4,5 - 348 309 348 309 359.5 262.5 c 128,-1,6 - 371 216 371 216 394.5 174.5 c 128,-1,7 - 418 133 418 133 461.5 107.5 c 128,-1,8 - 505 82 505 82 563 82 c 0,9,10 - 695 82 695 82 774.5 130 c 128,-1,11 - 854 178 854 178 901 285 c 1,12,-1 - 1042 244 l 1,13,14 - 968 124 968 124 848.5 52 c 128,-1,15 - 729 -20 729 -20 571 -20 c 0,16,17 - 484 -20 484 -20 414 3 c 128,-1,18 - 344 26 344 26 300 63.5 c 128,-1,19 - 256 101 256 101 227 150.5 c 128,-1,20 - 198 200 198 200 186 250 c 128,-1,21 - 174 300 174 300 174 352 c 0,22,23 - 174 500 174 500 280 642.5 c 128,-1,24 - 386 785 386 785 541 850 c 1,25,26 - 397 918 397 918 397 1065 c 0,27,28 - 397 1136 397 1136 430.5 1204.5 c 128,-1,29 - 464 1273 464 1273 525 1329 c 128,-1,30 - 586 1385 586 1385 681.5 1419.5 c 128,-1,31 - 777 1454 777 1454 891 1454 c 0,32,33 - 1004 1454 1004 1454 1099.5 1398 c 128,-1,34 - 1195 1342 1195 1342 1227 1239 c 1,35,-1 - 1065 1198 l 1,36,-1 - 1065 1217 l 2,37,38 - 1065 1290 1065 1290 1007 1321 c 128,-1,39 - 949 1352 949 1352 836 1352 c 0,40,41 - 720 1352 720 1352 646.5 1267 c 128,-1,42 - 573 1182 573 1182 573 1079 c 0,43,44 - 573 999 573 999 636 950 c 128,-1,45 - 699 901 699 901 834 901 c 2,46,-1 - 905 901 l 1,47,-1 - 881 799 l 1,48,-1 - 748 799 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni025B -Encoding: 603 603 611 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<319 643> 451 102<466 682> 819 102<490 789> -VStem: 113 168<123 346> 268 164<590 764> 815 127<732 787> -AnchorPoint: "top" 674 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -610 451 m 2,0,1 - 530 451 530 451 468.5 434 c 128,-1,2 - 407 417 407 417 372.5 392 c 128,-1,3 - 338 367 338 367 316.5 333.5 c 128,-1,4 - 295 300 295 300 288 273.5 c 128,-1,5 - 281 247 281 247 281 221 c 0,6,7 - 281 162 281 162 323.5 122 c 128,-1,8 - 366 82 366 82 459 82 c 0,9,10 - 540 82 540 82 620.5 116 c 128,-1,11 - 701 150 701 150 737 203 c 1,12,-1 - 852 178 l 1,13,14 - 792 100 792 100 687 40 c 128,-1,15 - 582 -20 582 -20 461 -20 c 0,16,17 - 113 -20 113 -20 113 190 c 0,18,19 - 113 286 113 286 176 375 c 128,-1,20 - 239 464 239 464 367 512 c 1,21,22 - 268 573 268 573 268 664 c 0,23,24 - 268 696 268 696 279.5 729.5 c 128,-1,25 - 291 763 291 763 321 798 c 128,-1,26 - 351 833 351 833 396 860 c 128,-1,27 - 441 887 441 887 514 904.5 c 128,-1,28 - 587 922 587 922 678 922 c 0,29,30 - 805 922 805 922 868.5 868 c 128,-1,31 - 932 814 932 814 942 735 c 1,32,-1 - 815 711 l 1,33,34 - 815 819 815 819 629 819 c 0,35,36 - 532 819 532 819 482 770 c 128,-1,37 - 432 721 432 721 432 668 c 0,38,39 - 432 616 432 616 483.5 584.5 c 128,-1,40 - 535 553 535 553 647 553 c 2,41,-1 - 705 553 l 1,42,-1 - 682 451 l 1,43,-1 - 610 451 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0189 -Encoding: 393 393 612 -Width: 1216 -VWidth: 0 -Flags: W -HStem: 0 102<291 782> 700 102<203 254 453 797> 1331 102<573 1062> -VStem: 1157 172<718 1227> -LayerCount: 2 -Fore -Refer: 198 272 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0256 -Encoding: 598 598 613 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -348 102<930 1110> -20 102<432 694> 819 102<584 837> -VStem: 178 168<174 538> 756 166<-241 44> -LayerCount: 2 -Fore -SplineSet -178 317 m 0,0,1 - 178 399 178 399 202.5 485 c 128,-1,2 - 227 571 227 571 275.5 648.5 c 128,-1,3 - 324 726 324 726 388 787.5 c 128,-1,4 - 452 849 452 849 538 885.5 c 128,-1,5 - 624 922 624 922 717 922 c 0,6,7 - 875 922 875 922 971 823 c 1,8,-1 - 1092 1352 l 1,9,-1 - 1255 1352 l 1,10,-1 - 944 0 l 2,11,12 - 922 -96 922 -96 922 -147 c 0,13,14 - 922 -246 922 -246 997 -246 c 0,15,16 - 1069 -246 1069 -246 1118 -195 c 1,17,-1 - 1233 -256 l 1,18,19 - 1134 -348 1134 -348 1006 -348 c 0,20,21 - 902 -348 902 -348 829 -296 c 128,-1,22 - 756 -244 756 -244 756 -141 c 0,23,24 - 756 -104 756 -104 764 -68 c 2,25,-1 - 791 47 l 1,26,27 - 671 -20 671 -20 500 -20 c 0,28,29 - 346 -20 346 -20 262 73 c 128,-1,30 - 178 166 178 166 178 317 c 0,0,1 -553 82 m 128,-1,32 - 652 82 652 82 731.5 153 c 128,-1,33 - 811 224 811 224 853 338.5 c 128,-1,34 - 895 453 895 453 895 586 c 0,35,36 - 895 691 895 691 854.5 755 c 128,-1,37 - 814 819 814 819 723 819 c 0,38,39 - 628 819 628 819 539.5 747 c 128,-1,40 - 451 675 451 675 398.5 566 c 128,-1,41 - 346 457 346 457 346 348 c 0,42,43 - 346 236 346 236 400 159 c 128,-1,31 - 454 82 454 82 553 82 c 128,-1,32 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0191 -Encoding: 401 401 614 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -348 102<-139 94> 799 102<557 1001> 1331 102<655 1309> -LayerCount: 2 -Fore -SplineSet -332 -68 m 6,0,1 - 315 -141 315 -141 273.5 -197 c 128,-1,2 - 232 -253 232 -253 178 -284.5 c 128,-1,3 - 124 -316 124 -316 67 -332 c 128,-1,4 - 10 -348 10 -348 -47 -348 c 0,5,6 - -176 -348 -176 -348 -233 -256 c 1,7,-1 - -90 -195 l 1,8,9 - -68 -246 -68 -246 6 -246 c 0,10,11 - 66 -246 66 -246 105 -187.5 c 128,-1,12 - 144 -129 144 -129 174 0 c 2,13,-1 - 506 1434 l 1,14,-1 - 1333 1434 l 1,15,-1 - 1309 1331 l 1,16,-1 - 655 1331 l 1,17,-1 - 557 901 l 1,18,-1 - 1026 901 l 1,19,-1 - 1001 799 l 1,20,-1 - 532 799 l 1,21,-1 - 332 -68 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: florin -Encoding: 402 402 615 -Width: 559 -VWidth: 0 -Flags: W -HStem: -348 102<-147 85> 799 102<270 350 539 676> 1270 102<646 833> -LayerCount: 2 -Fore -SplineSet -313 -68 m 6,0,1 - 291 -164 291 -164 228.5 -229.5 c 128,-1,2 - 166 -295 166 -295 94 -321.5 c 128,-1,3 - 22 -348 22 -348 -55 -348 c 0,4,5 - -185 -348 -185 -348 -242 -256 c 1,6,-1 - -98 -195 l 1,7,8 - -76 -246 -76 -246 -2 -246 c 0,9,10 - 58 -246 58 -246 97 -187.5 c 128,-1,11 - 136 -129 136 -129 166 0 c 2,12,-1 - 350 799 l 1,13,-1 - 215 799 l 1,14,-1 - 270 901 l 1,15,-1 - 375 901 l 1,16,-1 - 420 1096 l 2,17,18 - 448 1221 448 1221 533 1296.5 c 128,-1,19 - 618 1372 618 1372 739 1372 c 0,20,21 - 824 1372 824 1372 879 1350 c 1,22,-1 - 811 1239 l 1,23,24 - 792 1270 792 1270 745 1270 c 0,25,26 - 681 1270 681 1270 641 1221 c 128,-1,27 - 601 1172 601 1172 571 1042 c 2,28,-1 - 539 901 l 1,29,-1 - 700 901 l 1,30,-1 - 676 799 l 1,31,-1 - 514 799 l 1,32,-1 - 313 -68 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0194 -Encoding: 404 404 616 -Width: 1153 -VWidth: 0 -Flags: W -HStem: -418 102<440 547> 1393 41G<356 523 1283 1466> -VStem: 336 147<-314 -165> 553 150<-315 -124> -LayerCount: 2 -Fore -SplineSet -506 -315 m 0,0,1 - 553 -315 553 -315 553 -225 c 0,2,3 - 553 -197 553 -197 549 -123 c 1,4,5 - 483 -240 483 -240 483 -289 c 0,6,7 - 483 -315 483 -315 506 -315 c 0,0,1 -336 -305 m 0,8,9 - 336 -211 336 -211 526 106 c 1,10,-1 - 356 1434 l 1,11,-1 - 518 1434 l 1,12,-1 - 653 324 l 1,13,-1 - 1307 1434 l 1,14,-1 - 1466 1434 l 1,15,-1 - 680 109 l 1,16,17 - 702 -49 702 -49 702 -174 c 0,18,19 - 702 -235 702 -235 694 -266 c 0,20,21 - 676 -340 676 -340 618.5 -379 c 128,-1,22 - 561 -418 561 -418 483 -418 c 0,23,24 - 416 -418 416 -418 376 -389 c 128,-1,25 - 336 -360 336 -360 336 -305 c 0,8,9 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0263 -Encoding: 611 611 617 -Width: 823 -VWidth: 0 -Flags: W -HStem: -418 102<311 393> 860 41G<227 386 844 1020> -VStem: 172 139<-314 -170> 399 139<-310 -97> -LayerCount: 2 -Fore -SplineSet -172 -305 m 0,0,1 - 172 -260 172 -260 221.5 -154.5 c 128,-1,2 - 271 -49 271 -49 315 26.5 c 128,-1,3 - 359 102 359 102 369 115 c 1,4,-1 - 227 901 l 1,5,-1 - 379 901 l 1,6,-1 - 483 297 l 1,7,-1 - 870 901 l 1,8,-1 - 1020 901 l 1,9,-1 - 516 117 l 1,10,11 - 539 -23 539 -23 539 -162 c 0,12,13 - 539 -228 539 -228 530 -266 c 0,14,15 - 512 -340 512 -340 454.5 -379 c 128,-1,16 - 397 -418 397 -418 319 -418 c 0,17,18 - 252 -418 252 -418 212 -389 c 128,-1,19 - 172 -360 172 -360 172 -305 c 0,0,1 -393 -94 m 1,20,21 - 387 -107 387 -107 376 -128.5 c 128,-1,22 - 365 -150 365 -150 358.5 -162.5 c 128,-1,23 - 352 -175 352 -175 343.5 -192.5 c 128,-1,24 - 335 -210 335 -210 330 -221 c 128,-1,25 - 325 -232 325 -232 320 -244.5 c 128,-1,26 - 315 -257 315 -257 313 -265 c 128,-1,27 - 311 -273 311 -273 311 -279 c 0,28,29 - 311 -294 311 -294 320 -304.5 c 128,-1,30 - 329 -315 329 -315 342 -315 c 0,31,32 - 359 -315 359 -315 375 -300.5 c 128,-1,33 - 391 -286 391 -286 395 -266 c 0,34,35 - 399 -242 399 -242 399 -207 c 0,36,37 - 399 -156 399 -156 393 -94 c 1,20,21 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B2 -Encoding: 434 434 618 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<541 871> 1393 41G<478 662 1159 1378> -VStem: 266 174<189 666> 487 174<1372 1434> 1262 180<656 1265> -LayerCount: 2 -Fore -SplineSet -1159 1434 m 1,0,-1 - 1354 1434 l 1,1,2 - 1385 1345 1385 1345 1400 1297 c 128,-1,3 - 1415 1249 1415 1249 1428.5 1171.5 c 128,-1,4 - 1442 1094 1442 1094 1442 1014 c 0,5,6 - 1442 850 1442 850 1384 598 c 0,7,8 - 1352 459 1352 459 1276 340 c 128,-1,9 - 1200 221 1200 221 1103 144 c 128,-1,10 - 1006 67 1006 67 898.5 23.5 c 128,-1,11 - 791 -20 791 -20 692 -20 c 0,12,13 - 629 -20 629 -20 577.5 -13.5 c 128,-1,14 - 526 -7 526 -7 465 17 c 128,-1,15 - 404 41 404 41 363 81 c 128,-1,16 - 322 121 322 121 294 194.5 c 128,-1,17 - 266 268 266 268 266 367 c 0,18,19 - 266 485 266 485 297 614 c 1,20,-1 - 487 1434 l 1,21,-1 - 662 1434 l 1,22,-1 - 471 614 l 2,23,24 - 440 485 440 485 440 377 c 0,25,26 - 440 298 440 298 460 240.5 c 128,-1,27 - 480 183 480 183 507.5 153.5 c 128,-1,28 - 535 124 535 124 578 107 c 128,-1,29 - 621 90 621 90 653 86 c 128,-1,30 - 685 82 685 82 727 82 c 0,31,32 - 824 82 824 82 927 159 c 128,-1,33 - 1030 236 1030 236 1106 354.5 c 128,-1,34 - 1182 473 1182 473 1210 598 c 0,35,36 - 1262 823 1262 823 1262 981 c 0,37,38 - 1262 1027 1262 1027 1257 1073 c 128,-1,39 - 1252 1119 1252 1119 1247.5 1148 c 128,-1,40 - 1243 1177 1243 1177 1228.5 1227 c 128,-1,41 - 1214 1277 1214 1277 1209 1292 c 128,-1,42 - 1204 1307 1204 1307 1183 1366 c 128,-1,43 - 1162 1425 1162 1425 1159 1434 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni028B -Encoding: 651 651 619 -Width: 1067 -VWidth: 0 -Flags: W -HStem: -20 102<442 698> 872 29G<343 516 793 877> -VStem: 215 172<137 501> 899 164<356 719> -LayerCount: 2 -Fore -SplineSet -590 82 m 0,0,1 - 664 82 664 82 736.5 155 c 128,-1,2 - 809 228 809 228 854 341.5 c 128,-1,3 - 899 455 899 455 899 567 c 0,4,5 - 899 746 899 746 750 793 c 1,6,-1 - 815 913 l 1,7,8 - 920 887 920 887 991.5 802 c 128,-1,9 - 1063 717 1063 717 1063 575 c 0,10,11 - 1063 428 1063 428 993.5 291 c 128,-1,12 - 924 154 924 154 801.5 67 c 128,-1,13 - 679 -20 679 -20 537 -20 c 0,14,15 - 371 -20 371 -20 293 43.5 c 128,-1,16 - 215 107 215 107 215 240 c 0,17,18 - 215 306 215 306 238 410 c 1,19,-1 - 352 901 l 1,20,-1 - 516 901 l 1,21,-1 - 408 434 l 2,22,23 - 387 346 387 346 387 281 c 0,24,25 - 387 171 387 171 441 126.5 c 128,-1,26 - 495 82 495 82 590 82 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01E8 -Encoding: 488 488 620 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 936 1151> 1384 387 1393 41<414 598 1208 1458> -VStem: 695 479 -LayerCount: 2 -Fore -Refer: 372 711 S 1 0 0 1 294 246 2 -Refer: 38 75 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01E9 -Encoding: 489 489 621 -Width: 917 -VWidth: 0 -Flags: W -HStem: 0 43<143 317 710 909> 860 41<847 1081> 1270 102<284 461> 1309 387 -VStem: 213 70<1221 1259> 403 174<987 1268> 577 479 -LayerCount: 2 -Fore -Refer: 372 711 S 1 0 0 1 176 170 2 -Refer: 25 107 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01B7 -Encoding: 439 439 622 -Width: 1030 -VWidth: 0 -Flags: W -HStem: -20 102<349 643> 1331 102<489 965> -VStem: 133 141<156 326> 872 174<333 695> -AnchorPoint: "top" 844 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -506 82 m 0,0,1 - 567 82 567 82 631.5 117 c 128,-1,2 - 696 152 696 152 749.5 210.5 c 128,-1,3 - 803 269 803 269 837.5 355 c 128,-1,4 - 872 441 872 441 872 535 c 0,5,6 - 872 644 872 644 815.5 713 c 128,-1,7 - 759 782 759 782 633 782 c 2,8,-1 - 510 782 l 1,9,-1 - 965 1331 l 1,10,-1 - 465 1331 l 1,11,-1 - 489 1434 l 1,12,-1 - 1233 1434 l 1,13,-1 - 780 885 l 1,14,15 - 885 885 885 885 966 791.5 c 128,-1,16 - 1047 698 1047 698 1047 545 c 0,17,18 - 1047 428 1047 428 997 320 c 128,-1,19 - 947 212 947 212 869.5 139 c 128,-1,20 - 792 66 792 66 697.5 23 c 128,-1,21 - 603 -20 603 -20 514 -20 c 0,22,23 - 317 -20 317 -20 225 56 c 128,-1,24 - 133 132 133 132 133 268 c 0,25,26 - 133 286 133 286 137 326 c 1,27,-1 - 276 340 l 1,28,29 - 274 324 274 324 274 295 c 0,30,31 - 274 196 274 196 332 139 c 128,-1,32 - 390 82 390 82 506 82 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0292 -Encoding: 658 658 623 -Width: 940 -VWidth: 0 -Flags: W -HStem: -410 102<199 513> 270 102<594 625> 799 102<299 774> -VStem: -12 139<-234 -192> 698 166<-117 197> -AnchorPoint: "top" 670 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -348 -307 m 0,0,1 - 495 -307 495 -307 596.5 -201.5 c 128,-1,2 - 698 -96 698 -96 698 63 c 0,3,4 - 698 270 698 270 446 270 c 2,5,-1 - 324 270 l 1,6,-1 - 774 799 l 1,7,-1 - 244 799 l 1,8,-1 - 299 901 l 1,9,-1 - 1042 901 l 1,10,-1 - 594 373 l 1,11,12 - 645 373 645 373 691.5 356.5 c 128,-1,13 - 738 340 738 340 777.5 307 c 128,-1,14 - 817 274 817 274 840.5 217.5 c 128,-1,15 - 864 161 864 161 864 88 c 0,16,17 - 864 -21 864 -21 821.5 -115.5 c 128,-1,18 - 779 -210 779 -210 708.5 -273.5 c 128,-1,19 - 638 -337 638 -337 546 -373.5 c 128,-1,20 - 454 -410 454 -410 356 -410 c 0,21,22 - 206 -410 206 -410 108.5 -349 c 128,-1,23 - 11 -288 11 -288 -12 -197 c 1,24,-1 - 127 -147 l 1,25,26 - 139 -220 139 -220 201.5 -263.5 c 128,-1,27 - 264 -307 264 -307 348 -307 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01EE -Encoding: 494 494 624 -Width: 1030 -VWidth: 0 -Flags: W -HStem: -20 102<349 643> 1331 102<489 965> 1384 387 -VStem: 133 141<156 326> 686 479 872 174<333 695> -LayerCount: 2 -Fore -SplineSet -506 82 m 0,0,1 - 567 82 567 82 631.5 117 c 128,-1,2 - 696 152 696 152 749.5 210.5 c 128,-1,3 - 803 269 803 269 837.5 355 c 128,-1,4 - 872 441 872 441 872 535 c 0,5,6 - 872 644 872 644 815.5 713 c 128,-1,7 - 759 782 759 782 633 782 c 2,8,-1 - 510 782 l 1,9,-1 - 965 1331 l 1,10,-1 - 465 1331 l 1,11,-1 - 489 1434 l 1,12,-1 - 824 1434 l 1,13,-1 - 686 1718 l 1,14,-1 - 762 1772 l 1,15,-1 - 897 1591 l 1,16,-1 - 1114 1772 l 1,17,-1 - 1165 1718 l 1,18,-1 - 895 1434 l 1,19,-1 - 1233 1434 l 1,20,-1 - 780 885 l 1,21,22 - 885 885 885 885 966 791.5 c 128,-1,23 - 1047 698 1047 698 1047 545 c 0,24,25 - 1047 428 1047 428 997 320 c 128,-1,26 - 947 212 947 212 869.5 139 c 128,-1,27 - 792 66 792 66 697.5 23 c 128,-1,28 - 603 -20 603 -20 514 -20 c 0,29,30 - 317 -20 317 -20 225 56 c 128,-1,31 - 133 132 133 132 133 268 c 0,32,33 - 133 286 133 286 137 326 c 1,34,-1 - 276 340 l 1,35,36 - 274 324 274 324 274 295 c 0,37,38 - 274 196 274 196 332 139 c 128,-1,39 - 390 82 390 82 506 82 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01EF -Encoding: 495 495 625 -Width: 940 -VWidth: 0 -Flags: W -HStem: -410 102<199 513> 270 102<594 625> 799 102<299 774> 954 387 -VStem: -12 139<-234 -192> 539 479 698 166<-117 197> -LayerCount: 2 -Fore -Refer: 623 658 N 1 0 0 1 0 0 2 -Refer: 102 780 N 1 0 0 1 1026 -184 2 -Validated: 1 -EndChar - -StartChar: uni01E4 -Encoding: 484 484 626 -Width: 1458 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 451 102<1006 1466> 717 102<1059 1210> 1331 102<803 1211> -VStem: 201 176<307 781> 981 510 -LayerCount: 2 -Fore -SplineSet -1312 451 m 1,0,-1 - 1257 209 l 1,1,2 - 1153 106 1153 106 1005 43 c 128,-1,3 - 857 -20 857 -20 696 -20 c 0,4,5 - 626 -20 626 -20 557 -0.5 c 128,-1,6 - 488 19 488 19 423.5 61.5 c 128,-1,7 - 359 104 359 104 310 164.5 c 128,-1,8 - 261 225 261 225 231 314.5 c 128,-1,9 - 201 404 201 404 201 510 c 0,10,11 - 201 633 201 633 237.5 763 c 128,-1,12 - 274 893 274 893 344.5 1012.5 c 128,-1,13 - 415 1132 415 1132 509 1226.5 c 128,-1,14 - 603 1321 603 1321 729.5 1377.5 c 128,-1,15 - 856 1434 856 1434 993 1434 c 0,16,17 - 1379 1434 1379 1434 1489 1245 c 1,18,-1 - 1321 1178 l 1,19,20 - 1249 1331 1249 1331 999 1331 c 0,21,22 - 898 1331 898 1331 807.5 1292 c 128,-1,23 - 717 1253 717 1253 650.5 1187 c 128,-1,24 - 584 1121 584 1121 530.5 1038 c 128,-1,25 - 477 955 477 955 444.5 863.5 c 128,-1,26 - 412 772 412 772 394.5 685 c 128,-1,27 - 377 598 377 598 377 522 c 0,28,29 - 377 433 377 433 400 358 c 128,-1,30 - 423 283 423 283 461 233 c 128,-1,31 - 499 183 499 183 548 148 c 128,-1,32 - 597 113 597 113 648 97.5 c 128,-1,33 - 699 82 699 82 750 82 c 0,34,35 - 946 82 946 82 1092 209 c 1,36,-1 - 1148 451 l 1,37,-1 - 981 451 l 1,38,-1 - 1006 553 l 1,39,-1 - 1172 553 l 1,40,-1 - 1210 717 l 1,41,-1 - 1038 717 l 1,42,-1 - 1059 819 l 1,43,-1 - 1395 819 l 1,44,-1 - 1335 553 l 1,45,-1 - 1491 553 l 1,46,-1 - 1466 451 l 1,47,-1 - 1312 451 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01E5 -Encoding: 485 485 627 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 564> -135 102<451 629 840 997> 61 102<412 720> 819 102<511 784 1073 1185> -VStem: 166 166<244 609> 1186 74<770 815> -LayerCount: 2 -Fore -SplineSet -723 104 m 1,0,1 - 618 61 618 61 508 61 c 0,2,3 - 345 61 345 61 255.5 148 c 128,-1,4 - 166 235 166 235 166 389 c 0,5,6 - 166 504 166 504 206.5 604.5 c 128,-1,7 - 247 705 247 705 315.5 774 c 128,-1,8 - 384 843 384 843 475 882.5 c 128,-1,9 - 566 922 566 922 666 922 c 0,10,11 - 833 922 833 922 922 815 c 1,12,13 - 962 865 962 865 1016.5 893.5 c 128,-1,14 - 1071 922 1071 922 1126 922 c 0,15,16 - 1185 922 1185 922 1222.5 888.5 c 128,-1,17 - 1260 855 1260 855 1260 803 c 0,18,19 - 1260 795 1260 795 1255 770 c 1,20,-1 - 1186 770 l 1,21,-1 - 1186 778 l 2,22,23 - 1186 795 1186 795 1170 807 c 128,-1,24 - 1154 819 1154 819 1130 819 c 0,25,26 - 1099 819 1099 819 1063 761.5 c 128,-1,27 - 1027 704 1027 704 1008 625 c 2,28,-1 - 920 242 l 1,29,30 - 876 55 876 55 840 -33 c 1,31,-1 - 1022 -33 l 1,32,-1 - 997 -135 l 1,33,-1 - 793 -135 l 1,34,35 - 729 -246 729 -246 628.5 -297 c 128,-1,36 - 528 -348 528 -348 365 -348 c 0,37,38 - 215 -348 215 -348 61 -256 c 1,39,-1 - 188 -150 l 1,40,41 - 304 -246 304 -246 418 -246 c 0,42,43 - 554 -246 554 -246 629 -135 c 1,44,-1 - 426 -135 l 1,45,-1 - 451 -33 l 1,46,-1 - 680 -33 l 1,47,48 - 705 32 705 32 723 104 c 1,0,1 -672 819 m 0,49,50 - 606 819 606 819 549 795 c 128,-1,51 - 492 771 492 771 453 730 c 128,-1,52 - 414 689 414 689 386 635 c 128,-1,53 - 358 581 358 581 345 521.5 c 128,-1,54 - 332 462 332 462 332 401 c 0,55,56 - 332 288 332 288 390 226 c 128,-1,57 - 448 164 448 164 561 164 c 0,58,59 - 671 164 671 164 752 227 c 1,60,-1 - 842 608 l 1,61,62 - 839 705 839 705 796.5 762 c 128,-1,63 - 754 819 754 819 672 819 c 0,49,50 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0187 -Encoding: 391 391 628 -Width: 1523 -VWidth: 0 -Flags: W -HStem: -20 102<626 997> 1331 102<845 1252 1593 1839> -VStem: 242 176<307 780> -LayerCount: 2 -Fore -SplineSet -1040 1331 m 0,0,1 - 939 1331 939 1331 848.5 1292 c 128,-1,2 - 758 1253 758 1253 691.5 1187 c 128,-1,3 - 625 1121 625 1121 571.5 1038 c 128,-1,4 - 518 955 518 955 485.5 863.5 c 128,-1,5 - 453 772 453 772 435.5 685 c 128,-1,6 - 418 598 418 598 418 522 c 0,7,8 - 418 433 418 433 441 358 c 128,-1,9 - 464 283 464 283 502 233 c 128,-1,10 - 540 183 540 183 589 148 c 128,-1,11 - 638 113 638 113 689 97.5 c 128,-1,12 - 740 82 740 82 791 82 c 0,13,14 - 1031 82 1031 82 1190 264 c 1,15,-1 - 1298 209 l 1,16,17 - 1194 106 1194 106 1046 43 c 128,-1,18 - 898 -20 898 -20 737 -20 c 0,19,20 - 667 -20 667 -20 598 -0.5 c 128,-1,21 - 529 19 529 19 464.5 61.5 c 128,-1,22 - 400 104 400 104 351 164.5 c 128,-1,23 - 302 225 302 225 272 314.5 c 128,-1,24 - 242 404 242 404 242 510 c 0,25,26 - 242 594 242 594 268 717 c 1,27,28 - 302 865 302 865 367.5 987.5 c 128,-1,29 - 433 1110 433 1110 512 1191 c 128,-1,30 - 591 1272 591 1272 683 1328 c 128,-1,31 - 775 1384 775 1384 863 1409 c 128,-1,32 - 951 1434 951 1434 1034 1434 c 0,33,34 - 1165 1434 1165 1434 1278.5 1406.5 c 128,-1,35 - 1392 1379 1392 1379 1456 1325 c 1,36,37 - 1511 1385 1511 1385 1588 1414.5 c 128,-1,38 - 1665 1444 1665 1444 1743 1444 c 0,39,40 - 1870 1444 1870 1444 1927 1352 c 1,41,-1 - 1784 1290 l 1,42,43 - 1762 1341 1762 1341 1688 1341 c 0,44,45 - 1628 1341 1628 1341 1590 1283 c 128,-1,46 - 1552 1225 1552 1225 1522 1096 c 1,47,-1 - 1352 1028 l 1,48,49 - 1362 1076 1362 1076 1362 1108 c 0,50,51 - 1362 1171 1362 1171 1334 1216.5 c 128,-1,52 - 1306 1262 1306 1262 1257.5 1286 c 128,-1,53 - 1209 1310 1209 1310 1155.5 1320.5 c 128,-1,54 - 1102 1331 1102 1331 1040 1331 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0188 -Encoding: 392 392 629 -Width: 1140 -VWidth: 0 -Flags: W -HStem: -20 102<447 762> 819 102<581 843> 1022 102<1152 1384> -VStem: 178 166<182 543> 901 147<676 736> -LayerCount: 2 -Fore -SplineSet -178 324 m 0,0,1 - 178 443 178 443 228 555 c 128,-1,2 - 278 667 278 667 356 746.5 c 128,-1,3 - 434 826 434 826 532.5 874 c 128,-1,4 - 631 922 631 922 725 922 c 0,5,6 - 848 922 848 922 928 864 c 1,7,8 - 965 994 965 994 1070.5 1059 c 128,-1,9 - 1176 1124 1176 1124 1294 1124 c 0,10,11 - 1422 1124 1422 1124 1479 1032 c 1,12,-1 - 1335 971 l 1,13,14 - 1313 1022 1313 1022 1239 1022 c 0,15,16 - 1187 1022 1187 1022 1146 970 c 128,-1,17 - 1105 918 1105 918 1075 788 c 2,18,-1 - 1049 676 l 1,19,-1 - 901 608 l 1,20,21 - 898 705 898 705 855.5 762 c 128,-1,22 - 813 819 813 819 731 819 c 0,23,24 - 630 819 630 819 539.5 747.5 c 128,-1,25 - 449 676 449 676 396.5 565.5 c 128,-1,26 - 344 455 344 455 344 340 c 0,27,28 - 344 220 344 220 413 151 c 128,-1,29 - 482 82 482 82 602 82 c 0,30,31 - 749 82 749 82 856 205 c 1,32,-1 - 969 158 l 1,33,34 - 885 76 885 76 777.5 28 c 128,-1,35 - 670 -20 670 -20 549 -20 c 0,36,37 - 379 -20 379 -20 278.5 72.5 c 128,-1,38 - 178 165 178 165 178 324 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0196 -Encoding: 406 406 630 -Width: 641 -VWidth: 0 -Flags: W -HStem: -20 102<392 556> 1393 41G<494 678> -VStem: 221 168<84 375> -LayerCount: 2 -Fore -SplineSet -504 1434 m 25,0,-1 - 678 1434 l 1,1,-1 - 422 328 l 1,2,3 - 389 178 389 178 389 143 c 0,4,5 - 389 82 389 82 440 82 c 0,6,7 - 468 82 468 82 483.5 91.5 c 128,-1,8 - 499 101 499 101 530 133 c 1,9,-1 - 645 72 l 1,10,11 - 591 22 591 22 548 1 c 128,-1,12 - 505 -20 505 -20 449 -20 c 0,13,14 - 350 -20 350 -20 285.5 28.5 c 128,-1,15 - 221 77 221 77 221 176 c 0,16,17 - 221 208 221 208 231 260 c 1,18,-1 - 504 1434 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0197 -Encoding: 407 407 631 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43G<172 356> 799 102<256 356 555 655> 1393 41G<494 678> -VStem: 172 506 -LayerCount: 2 -Fore -SplineSet -231 799 m 1,0,-1 - 256 901 l 1,1,-1 - 381 901 l 1,2,-1 - 504 1434 l 1,3,-1 - 678 1434 l 1,4,-1 - 555 901 l 1,5,-1 - 680 901 l 1,6,-1 - 655 799 l 1,7,-1 - 530 799 l 1,8,-1 - 346 0 l 1,9,-1 - 172 0 l 1,10,-1 - 356 799 l 1,11,-1 - 231 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019F -Encoding: 415 415 632 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<595 903> 666 102<457 1315> 1352 102<851 1174> -VStem: 240 178<286 663> 1356 176<771 1163> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -SplineSet -700 -20 m 0,0,1 - 612 -20 612 -20 532 11 c 128,-1,2 - 452 42 452 42 385.5 102 c 128,-1,3 - 319 162 319 162 279.5 262 c 128,-1,4 - 240 362 240 362 240 489 c 0,5,6 - 240 586 240 586 268 717 c 1,7,8 - 302 865 302 865 365.5 989.5 c 128,-1,9 - 429 1114 429 1114 506 1198.5 c 128,-1,10 - 583 1283 583 1283 672.5 1341.5 c 128,-1,11 - 762 1400 762 1400 850 1427 c 128,-1,12 - 938 1454 938 1454 1022 1454 c 0,13,14 - 1129 1454 1129 1454 1220 1423.5 c 128,-1,15 - 1311 1393 1311 1393 1381.5 1333 c 128,-1,16 - 1452 1273 1452 1273 1492 1174 c 128,-1,17 - 1532 1075 1532 1075 1532 948 c 0,18,19 - 1532 839 1532 839 1503 717 c 0,20,21 - 1460 531 1460 531 1375.5 387 c 128,-1,22 - 1291 243 1291 243 1182 155.5 c 128,-1,23 - 1073 68 1073 68 951 24 c 128,-1,24 - 829 -20 829 -20 700 -20 c 0,0,1 -1315 666 m 1,25,-1 - 432 666 l 1,26,27 - 418 586 418 586 418 508 c 0,28,29 - 418 422 418 422 438 349.5 c 128,-1,30 - 458 277 458 277 490.5 228.5 c 128,-1,31 - 523 180 523 180 565 146 c 128,-1,32 - 607 112 607 112 650 97 c 128,-1,33 - 693 82 693 82 735 82 c 0,34,35 - 794 82 794 82 858.5 104.5 c 128,-1,36 - 923 127 923 127 990.5 174.5 c 128,-1,37 - 1058 222 1058 222 1118.5 289.5 c 128,-1,38 - 1179 357 1179 357 1231 454.5 c 128,-1,39 - 1283 552 1283 552 1315 666 c 1,25,-1 -1339 768 m 1,40,41 - 1356 854 1356 854 1356 938 c 0,42,43 - 1356 1043 1356 1043 1327 1124.5 c 128,-1,44 - 1298 1206 1298 1206 1248.5 1254.5 c 128,-1,45 - 1199 1303 1199 1303 1138.5 1327.5 c 128,-1,46 - 1078 1352 1078 1352 1010 1352 c 0,47,48 - 956 1352 956 1352 895.5 1329.5 c 128,-1,49 - 835 1307 835 1307 771 1259.5 c 128,-1,50 - 707 1212 707 1212 649 1145 c 128,-1,51 - 591 1078 591 1078 540 980 c 128,-1,52 - 489 882 489 882 457 768 c 1,53,-1 - 1339 768 l 1,40,41 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A4 -Encoding: 420 420 633 -Width: 1314 -VWidth: 0 -Flags: W -HStem: 0 43G<399 583> 655 102<748 1165> 918 43G<420 472> 1331 102<600 705 881 1276> -VStem: 297 178<1002 1215> 1339 174<951 1271> -LayerCount: 2 -Fore -SplineSet -1024 758 m 2,0,1 - 1114 758 1114 758 1188 816 c 128,-1,2 - 1262 874 1262 874 1300.5 958 c 128,-1,3 - 1339 1042 1339 1042 1339 1128 c 0,4,5 - 1339 1215 1339 1215 1295.5 1273 c 128,-1,6 - 1252 1331 1252 1331 1157 1331 c 2,7,-1 - 881 1331 l 1,8,-1 - 748 758 l 1,9,-1 - 1024 758 l 2,0,1 -1513 1128 m 0,10,11 - 1513 1066 1513 1066 1491 1001 c 128,-1,12 - 1469 936 1469 936 1423 874 c 128,-1,13 - 1377 812 1377 812 1314 763 c 128,-1,14 - 1251 714 1251 714 1162 684.5 c 128,-1,15 - 1073 655 1073 655 971 655 c 2,16,-1 - 725 655 l 1,17,-1 - 573 0 l 1,18,-1 - 399 0 l 1,19,-1 - 705 1325 l 1,20,21 - 645 1315 645 1315 600 1289.5 c 128,-1,22 - 555 1264 555 1264 532.5 1235.5 c 128,-1,23 - 510 1207 510 1207 496 1172.5 c 128,-1,24 - 482 1138 482 1138 478.5 1116.5 c 128,-1,25 - 475 1095 475 1095 475 1077 c 0,26,27 - 475 1062 475 1062 479.5 1051 c 128,-1,28 - 484 1040 484 1040 488.5 1036 c 128,-1,29 - 493 1032 493 1032 504 1024 c 1,30,-1 - 453 918 l 1,31,32 - 422 930 422 930 400 941 c 128,-1,33 - 378 952 378 952 351.5 971.5 c 128,-1,34 - 325 991 325 991 311 1019.5 c 128,-1,35 - 297 1048 297 1048 297 1083 c 0,36,37 - 297 1137 297 1137 327 1197 c 128,-1,38 - 357 1257 357 1257 410.5 1310.5 c 128,-1,39 - 464 1364 464 1364 548.5 1399 c 128,-1,40 - 633 1434 633 1434 731 1434 c 2,41,-1 - 1151 1434 l 2,42,43 - 1230 1434 1230 1434 1293.5 1416 c 128,-1,44 - 1357 1398 1357 1398 1397 1368.5 c 128,-1,45 - 1437 1339 1437 1339 1464 1299 c 128,-1,46 - 1491 1259 1491 1259 1502 1216.5 c 128,-1,47 - 1513 1174 1513 1174 1513 1128 c 0,10,11 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A5 -Encoding: 421 421 634 -Width: 1087 -VWidth: 0 -Flags: W -HStem: -16 102<468 721> 823 102<602 887> 1151 102<601 833> -VStem: 956 164<365 748> -LayerCount: 2 -Fore -SplineSet -1120 575 m 0,0,1 - 1120 461 1120 461 1070.5 352 c 128,-1,2 - 1021 243 1021 243 941 162.5 c 128,-1,3 - 861 82 861 82 755.5 33 c 128,-1,4 - 650 -16 650 -16 543 -16 c 0,5,6 - 407 -16 407 -16 326 59 c 1,7,-1 - 217 -410 l 1,8,-1 - 53 -410 l 1,9,-1 - 373 973 l 2,10,11 - 395 1069 395 1069 457.5 1134.5 c 128,-1,12 - 520 1200 520 1200 592 1226.5 c 128,-1,13 - 664 1253 664 1253 741 1253 c 0,14,15 - 871 1253 871 1253 928 1161 c 1,16,-1 - 784 1100 l 1,17,18 - 762 1151 762 1151 688 1151 c 0,19,20 - 628 1151 628 1151 589 1092.5 c 128,-1,21 - 550 1034 550 1034 520 905 c 1,22,-1 - 512 866 l 1,23,24 - 621 926 621 926 780 926 c 0,25,26 - 938 926 938 926 1029 828 c 128,-1,27 - 1120 730 1120 730 1120 575 c 0,0,1 -598 86 m 0,28,29 - 673 86 673 86 756 152.5 c 128,-1,30 - 839 219 839 219 897.5 333.5 c 128,-1,31 - 956 448 956 448 956 569 c 0,32,33 - 956 677 956 677 912.5 750 c 128,-1,34 - 869 823 869 823 788 823 c 0,35,36 - 632 823 632 823 548 741.5 c 128,-1,37 - 464 660 464 660 428 504 c 0,38,39 - 403 399 403 399 403 322 c 0,40,41 - 403 217 403 217 449 151.5 c 128,-1,42 - 495 86 495 86 598 86 c 0,28,29 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A9 -Encoding: 425 425 635 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<332 983> 1331 102<625 1274> -LayerCount: 2 -Fore -SplineSet -625 1331 m 1,0,-1 - 901 725 l 1,1,-1 - 332 102 l 1,2,-1 - 1008 102 l 1,3,-1 - 983 0 l 1,4,-1 - 61 0 l 1,5,-1 - 717 725 l 1,6,-1 - 401 1434 l 1,7,-1 - 1274 1434 l 1,8,-1 - 1280 1331 l 1,9,-1 - 625 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B1 -Encoding: 433 433 636 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<561 887> 1331 102<582 711 1298 1452> -VStem: 266 172<217 700> 1251 168<582 1060> -LayerCount: 2 -Fore -SplineSet -717 82 m 0,0,1 - 804 82 804 82 882 119 c 128,-1,2 - 960 156 960 156 1017 218.5 c 128,-1,3 - 1074 281 1074 281 1119.5 360 c 128,-1,4 - 1165 439 1165 439 1193 525.5 c 128,-1,5 - 1221 612 1221 612 1236 694.5 c 128,-1,6 - 1251 777 1251 777 1251 850 c 0,7,8 - 1251 981 1251 981 1209.5 1073 c 128,-1,9 - 1168 1165 1168 1165 1092 1188 c 1,10,-1 - 1149 1434 l 1,11,-1 - 1477 1434 l 1,12,-1 - 1452 1331 l 1,13,-1 - 1298 1331 l 1,14,-1 - 1278 1239 l 1,15,16 - 1337 1167 1337 1167 1378 1052.5 c 128,-1,17 - 1419 938 1419 938 1419 809 c 0,18,19 - 1419 730 1419 730 1401 651 c 0,20,21 - 1369 513 1369 513 1310 399 c 128,-1,22 - 1251 285 1251 285 1179.5 209 c 128,-1,23 - 1108 133 1108 133 1024 80 c 128,-1,24 - 940 27 940 27 857.5 3.5 c 128,-1,25 - 775 -20 775 -20 694 -20 c 0,26,27 - 627 -20 627 -20 565.5 -3.5 c 128,-1,28 - 504 13 504 13 449 49 c 128,-1,29 - 394 85 394 85 353.5 137.5 c 128,-1,30 - 313 190 313 190 289.5 266.5 c 128,-1,31 - 266 343 266 343 266 436 c 0,32,33 - 266 541 266 541 292.5 645 c 128,-1,34 - 319 749 319 749 361 833.5 c 128,-1,35 - 403 918 403 918 460 996.5 c 128,-1,36 - 517 1075 517 1075 573.5 1133 c 128,-1,37 - 630 1191 630 1191 690 1239 c 1,38,-1 - 711 1331 l 1,39,-1 - 557 1331 l 1,40,-1 - 582 1434 l 1,41,-1 - 909 1434 l 1,42,-1 - 852 1188 l 1,43,44 - 750 1162 750 1162 653.5 1042.5 c 128,-1,45 - 557 923 557 923 497.5 753.5 c 128,-1,46 - 438 584 438 584 438 420 c 0,47,48 - 438 254 438 254 511.5 168 c 128,-1,49 - 585 82 585 82 717 82 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0268 -Encoding: 616 616 637 -Width: 512 -VWidth: 0 -Flags: W -HStem: -20 102<338 514> 518 102<188 297 485 588> 860 41G<378 551> 1085 164<467 592> -VStem: 221 174<85 271> 516 70<93 131> -LayerCount: 2 -Fore -SplineSet -406 276 m 2,0,1 - 395 228 395 228 395 182 c 0,2,3 - 395 82 395 82 438 82 c 0,4,5 - 466 82 466 82 488.5 96.5 c 128,-1,6 - 511 111 511 111 516 131 c 1,7,-1 - 586 131 l 1,8,9 - 573 68 573 68 514.5 24 c 128,-1,10 - 456 -20 456 -20 387 -20 c 0,11,12 - 314 -20 314 -20 267.5 29.5 c 128,-1,13 - 221 79 221 79 221 156 c 0,14,15 - 221 183 221 183 227 213 c 2,16,-1 - 297 518 l 1,17,-1 - 164 518 l 1,18,-1 - 188 621 l 1,19,-1 - 322 621 l 1,20,-1 - 387 901 l 1,21,-1 - 551 901 l 1,22,-1 - 485 621 l 1,23,-1 - 612 621 l 1,24,-1 - 588 518 l 1,25,-1 - 461 518 l 1,26,-1 - 406 276 l 2,0,1 -467 1249 m 1,27,-1 - 631 1249 l 1,28,-1 - 592 1085 l 1,29,-1 - 428 1085 l 1,30,-1 - 467 1249 l 1,27,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0269 -Encoding: 617 617 638 -Width: 630 -VWidth: 0 -Flags: W -HStem: -20 102<382 507> 799 102<299 356> -VStem: 221 158<84 375> 547 115<116 236> -LayerCount: 2 -Fore -SplineSet -299 901 m 1,0,-1 - 545 901 l 1,1,-1 - 412 328 l 1,2,3 - 379 178 379 178 379 143 c 0,4,5 - 379 112 379 112 394 97 c 128,-1,6 - 409 82 409 82 444 82 c 0,7,8 - 480 82 480 82 504 118 c 128,-1,9 - 528 154 528 154 547 236 c 1,10,-1 - 662 236 l 1,11,12 - 628 87 628 87 578 33.5 c 128,-1,13 - 528 -20 528 -20 438 -20 c 0,14,15 - 341 -20 341 -20 281 27 c 128,-1,16 - 221 74 221 74 221 172 c 0,17,18 - 221 219 221 219 231 260 c 2,19,-1 - 356 799 l 1,20,-1 - 274 799 l 1,21,-1 - 299 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0275 -Encoding: 629 629 639 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<413 698> 399 102<373 897> 819 102<583 852> -VStem: 176 164<157 398> 926 168<504 739> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -SplineSet -1094 594 m 0,0,1 - 1094 546 1094 546 1085 492.5 c 128,-1,2 - 1076 439 1076 439 1055 378.5 c 128,-1,3 - 1034 318 1034 318 1003.5 262 c 128,-1,4 - 973 206 973 206 925 154 c 128,-1,5 - 877 102 877 102 818.5 64 c 128,-1,6 - 760 26 760 26 680 3 c 128,-1,7 - 600 -20 600 -20 508 -20 c 0,8,9 - 347 -20 347 -20 261.5 65 c 128,-1,10 - 176 150 176 150 176 301 c 0,11,12 - 176 430 176 430 226.5 547.5 c 128,-1,13 - 277 665 277 665 356 745.5 c 128,-1,14 - 435 826 435 826 533 874 c 128,-1,15 - 631 922 631 922 725 922 c 0,16,17 - 896 922 896 922 995 838 c 128,-1,18 - 1094 754 1094 754 1094 594 c 0,0,1 -897 399 m 1,19,-1 - 348 399 l 1,20,21 - 340 337 340 337 340 311 c 0,22,23 - 340 201 340 201 395 141.5 c 128,-1,24 - 450 82 450 82 561 82 c 0,25,26 - 667 82 667 82 760 170 c 128,-1,27 - 853 258 853 258 897 399 c 1,19,-1 -373 502 m 1,28,-1 - 922 502 l 1,29,30 - 926 529 926 529 926 575 c 0,31,32 - 926 687 926 687 874 753 c 128,-1,33 - 822 819 822 819 731 819 c 0,34,35 - 622 819 622 819 520.5 732 c 128,-1,36 - 419 645 419 645 373 502 c 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0283 -Encoding: 643 643 640 -Width: 722 -VWidth: 0 -Flags: W -HStem: -20 102<93 324> 1270 102<809 997> -LayerCount: 2 -Fore -SplineSet -553 260 m 2,0,1 - 536 187 536 187 496 131 c 128,-1,2 - 456 75 456 75 404 43 c 128,-1,3 - 352 11 352 11 296 -4.5 c 128,-1,4 - 240 -20 240 -20 184 -20 c 0,5,6 - 55 -20 55 -20 -2 72 c 1,7,-1 - 141 133 l 1,8,9 - 163 82 163 82 238 82 c 0,10,11 - 298 82 298 82 337 140.5 c 128,-1,12 - 376 199 376 199 406 328 c 2,13,-1 - 584 1096 l 2,14,15 - 612 1221 612 1221 697 1296.5 c 128,-1,16 - 782 1372 782 1372 903 1372 c 0,17,18 - 987 1372 987 1372 1042 1350 c 1,19,-1 - 975 1239 l 1,20,21 - 956 1270 956 1270 909 1270 c 0,22,23 - 845 1270 845 1270 805 1221 c 128,-1,24 - 765 1172 765 1172 735 1042 c 2,25,-1 - 553 260 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni028A -Encoding: 650 650 641 -Width: 1054 -VWidth: 0 -Flags: W -HStem: -20 102<411 702> 799 102<395 487 938 1055> -VStem: 193 162<138 439> 860 164<255 597> -LayerCount: 2 -Fore -SplineSet -1024 444 m 0,0,1 - 1024 313 1024 313 953 205 c 128,-1,2 - 882 97 882 97 768 38.5 c 128,-1,3 - 654 -20 654 -20 524 -20 c 0,4,5 - 438 -20 438 -20 372.5 5.5 c 128,-1,6 - 307 31 307 31 269 73 c 128,-1,7 - 231 115 231 115 212 164.5 c 128,-1,8 - 193 214 193 214 193 268 c 0,9,10 - 193 366 193 366 263 494 c 128,-1,11 - 333 622 333 622 465 705 c 1,12,-1 - 487 799 l 1,13,-1 - 371 799 l 1,14,-1 - 395 901 l 1,15,-1 - 676 901 l 1,16,-1 - 621 668 l 1,17,18 - 613 665 613 665 599 658 c 128,-1,19 - 585 651 585 651 547.5 623.5 c 128,-1,20 - 510 596 510 596 478 561 c 128,-1,21 - 446 526 446 526 412.5 465 c 128,-1,22 - 379 404 379 404 362 332 c 0,23,24 - 354 299 354 299 354 260 c 0,25,26 - 354 176 354 176 404.5 129 c 128,-1,27 - 455 82 455 82 547 82 c 0,28,29 - 686 82 686 82 773 184 c 128,-1,30 - 860 286 860 286 860 438 c 0,31,32 - 860 486 860 486 848 527.5 c 128,-1,33 - 836 569 836 569 819 593.5 c 128,-1,34 - 802 618 802 618 784.5 636 c 128,-1,35 - 767 654 767 654 755 661 c 2,36,-1 - 743 668 l 1,37,-1 - 799 901 l 1,38,-1 - 1079 901 l 1,39,-1 - 1055 799 l 1,40,-1 - 938 799 l 1,41,-1 - 915 705 l 1,42,43 - 955 672 955 672 989.5 605 c 128,-1,44 - 1024 538 1024 538 1024 444 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: IJ -Encoding: 306 306 642 -Width: 1386 -VWidth: 0 -Flags: W -HStem: -20 102<698 1026> 0 43<92 276> 1393 41<414 598 1381 1565> -VStem: 92 506 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Refer: 37 74 N 1 0 0 1 438 0 2 -Validated: 1 -EndChar - -StartChar: ij -Encoding: 307 307 643 -Width: 843 -VWidth: 0 -Flags: W -HStem: -348 102<246 478> 0 43G<123 296> 860 41G<322 496 759 932> 1085 164<412 537 848 973> -LayerCount: 2 -Fore -SplineSet -412 1249 m 1,0,-1 - 575 1249 l 1,1,-1 - 537 1085 l 1,2,-1 - 373 1085 l 1,3,-1 - 412 1249 l 1,0,-1 -332 901 m 1,4,-1 - 496 901 l 1,5,-1 - 287 0 l 1,6,-1 - 123 0 l 1,7,-1 - 332 901 l 1,4,-1 -295 -195 m 1,8,9 - 317 -246 317 -246 391 -246 c 0,10,11 - 451 -246 451 -246 490 -187.5 c 128,-1,12 - 529 -129 529 -129 559 0 c 2,13,-1 - 768 901 l 1,14,-1 - 932 901 l 1,15,-1 - 707 -68 l 2,16,17 - 690 -141 690 -141 650 -197 c 128,-1,18 - 610 -253 610 -253 558 -285 c 128,-1,19 - 506 -317 506 -317 450 -332.5 c 128,-1,20 - 394 -348 394 -348 338 -348 c 0,21,22 - 209 -348 209 -348 152 -256 c 1,23,-1 - 295 -195 l 1,8,9 -848 1249 m 1,24,-1 - 1012 1249 l 1,25,-1 - 973 1085 l 1,26,-1 - 809 1085 l 1,27,-1 - 848 1249 l 1,24,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Ldot -Encoding: 319 319 644 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 608 150<662 776> 1393 41<404 588> -VStem: 627 184 -LayerCount: 2 -Fore -Refer: 39 76 N 1 0 0 1 0 0 3 -Refer: 346 183 N 1 0 0 1 469 225 2 -Validated: 1 -EndChar - -StartChar: ldot -Encoding: 320 320 645 -Width: 729 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 608 150<588 702> -VStem: 135 174<85 274> 430 70<93 131> 553 184 -LayerCount: 2 -Fore -Refer: 15 108 N 1 0 0 1 0 0 2 -Refer: 346 183 N 1 0 0 1 395 225 2 -Validated: 1 -EndChar - -StartChar: napostrophe -Encoding: 329 329 646 -Width: 1316 -VWidth: 0 -Flags: W -HStem: 0 43<426 599 1063 1236> 819 102<463 622 843 1155> 987 367 -VStem: 379 147<1281 1354> 391 70<770 808> 1196 164<389 778> -LayerCount: 2 -Fore -Refer: 106 787 N 1 0 0 1 629 -283 2 -Refer: 4 110 N 1 0 0 1 242 0 2 -Validated: 1 -EndChar - -StartChar: uni018F -Encoding: 399 399 647 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<573 884> 614 102<399 1284> 1352 102<791 1163> -VStem: 219 178<286 612> 1339 174<719 1158> -LayerCount: 2 -Fore -SplineSet -1284 614 m 1,0,-1 - 403 614 l 1,1,2 - 397 559 397 559 397 510 c 0,3,4 - 397 403 397 403 427.5 317 c 128,-1,5 - 458 231 458 231 505.5 182 c 128,-1,6 - 553 133 553 133 604 107.5 c 128,-1,7 - 655 82 655 82 702 82 c 0,8,9 - 775 82 775 82 855 113 c 128,-1,10 - 935 144 935 144 1015.5 205.5 c 128,-1,11 - 1096 267 1096 267 1168 373 c 128,-1,12 - 1240 479 1240 479 1284 614 c 1,0,-1 -1313 717 m 1,13,14 - 1339 835 1339 835 1339 938 c 0,15,16 - 1339 1138 1339 1138 1242 1245 c 128,-1,17 - 1145 1352 1145 1352 1001 1352 c 0,18,19 - 769 1352 769 1352 606 1178 c 1,20,-1 - 467 1245 l 1,21,22 - 683 1454 683 1454 1057 1454 c 0,23,24 - 1142 1454 1142 1454 1221 1422.5 c 128,-1,25 - 1300 1391 1300 1391 1366.5 1330.5 c 128,-1,26 - 1433 1270 1433 1270 1473 1168.5 c 128,-1,27 - 1513 1067 1513 1067 1513 940 c 0,28,29 - 1513 835 1513 835 1487 717 c 0,30,31 - 1451 559 1451 559 1383.5 431.5 c 128,-1,32 - 1316 304 1316 304 1234.5 221.5 c 128,-1,33 - 1153 139 1153 139 1056 83 c 128,-1,34 - 959 27 959 27 866 3.5 c 128,-1,35 - 773 -20 773 -20 680 -20 c 0,36,37 - 592 -20 592 -20 511.5 11 c 128,-1,38 - 431 42 431 42 364.5 102 c 128,-1,39 - 298 162 298 162 258.5 262 c 128,-1,40 - 219 362 219 362 219 489 c 0,41,42 - 219 582 219 582 248 717 c 1,43,-1 - 1313 717 l 1,13,14 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019E -Encoding: 414 414 648 -Width: 1034 -VWidth: 0 -Flags: W -HStem: 0 43G<143 317> 819 102<180 339 561 873> -VStem: 109 70<770 808> 686 164<-410 -348> 913 164<389 778> -AnchorPoint: "bottom" 537 0 basechar 0 -AnchorPoint: "cedilla" 537 0 basechar 0 -AnchorPoint: "top" 776 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -287 625 m 2,0,1 - 299 678 299 678 299 719 c 0,2,3 - 299 764 299 764 287 791.5 c 128,-1,4 - 275 819 275 819 254 819 c 0,5,6 - 226 819 226 819 204.5 804.5 c 128,-1,7 - 183 790 183 790 178 770 c 1,8,-1 - 109 770 l 1,9,10 - 123 833 123 833 180.5 877.5 c 128,-1,11 - 238 922 238 922 307 922 c 0,12,13 - 402 922 402 922 449 842 c 1,14,15 - 587 922 587 922 729 922 c 0,16,17 - 1077 922 1077 922 1077 641 c 0,18,19 - 1077 584 1077 584 1057 492 c 1,20,-1 - 850 -410 l 1,21,-1 - 686 -410 l 1,22,-1 - 889 467 l 2,23,24 - 913 575 913 575 913 643 c 0,25,26 - 913 741 913 741 867.5 780 c 128,-1,27 - 822 819 822 819 735 819 c 0,28,29 - 607 819 607 819 471 721 c 1,30,31 - 470 716 470 716 469 705 c 128,-1,32 - 468 694 468 694 467 688 c 2,33,-1 - 307 0 l 1,34,-1 - 143 0 l 1,35,-1 - 287 625 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0220 -Encoding: 544 544 649 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43G<147 331> 1352 102<767 1124> 1393 41G<468 651> -VStem: 852 174<-412 -349> 1194 176<912 1281> -LayerCount: 2 -Fore -SplineSet -147 0 m 9,0,-1 - 477 1434 l 1,1,-1 - 651 1434 l 1,2,-1 - 637 1364 l 1,3,4 - 642 1366 642 1366 665 1377 c 128,-1,5 - 688 1388 688 1388 698 1392.5 c 128,-1,6 - 708 1397 708 1397 732.5 1407 c 128,-1,7 - 757 1417 757 1417 772.5 1422 c 128,-1,8 - 788 1427 788 1427 814 1434 c 128,-1,9 - 840 1441 840 1441 861.5 1444.5 c 128,-1,10 - 883 1448 883 1448 910.5 1451 c 128,-1,11 - 938 1454 938 1454 965 1454 c 0,12,13 - 1155 1454 1155 1454 1262.5 1375 c 128,-1,14 - 1370 1296 1370 1296 1370 1141 c 0,15,16 - 1370 1084 1370 1084 1356 1024 c 2,17,-1 - 1026 -412 l 1,18,-1 - 852 -412 l 1,19,-1 - 1176 999 l 2,20,21 - 1194 1079 1194 1079 1194 1137 c 0,22,23 - 1194 1352 1194 1352 971 1352 c 0,24,25 - 790 1352 790 1352 602 1217 c 1,26,-1 - 322 0 l 1,27,-1 - 147 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A2 -Encoding: 418 418 650 -Width: 1765 -VWidth: 0 -Flags: W -HStem: -20 102<594 907> 1135 102<1525 1656> 1352 102<847 1175> -VStem: 240 176<286 770> 1356 174<652 1103> 1659 168<849 1133> -LayerCount: 2 -Fore -SplineSet -1501 -412 m 1,0,-1 - 1327 -412 l 1,1,-1 - 1626 889 l 1,2,3 - 1659 1039 1659 1039 1659 1073 c 0,4,5 - 1659 1135 1659 1135 1608 1135 c 0,6,7 - 1580 1135 1580 1135 1564.5 1125.5 c 128,-1,8 - 1549 1116 1549 1116 1518 1083 c 1,9,10 - 1530 1019 1530 1019 1530 944 c 0,11,12 - 1530 843 1530 843 1503 717 c 1,13,14 - 1460 531 1460 531 1375.5 387 c 128,-1,15 - 1291 243 1291 243 1182 155.5 c 128,-1,16 - 1073 68 1073 68 951 24 c 128,-1,17 - 829 -20 829 -20 700 -20 c 0,18,19 - 612 -20 612 -20 532 11 c 128,-1,20 - 452 42 452 42 385.5 102 c 128,-1,21 - 319 162 319 162 279.5 262 c 128,-1,22 - 240 362 240 362 240 489 c 0,23,24 - 240 586 240 586 268 717 c 1,25,26 - 302 865 302 865 365.5 989.5 c 128,-1,27 - 429 1114 429 1114 506 1198.5 c 128,-1,28 - 583 1283 583 1283 672.5 1341.5 c 128,-1,29 - 762 1400 762 1400 850 1427 c 128,-1,30 - 938 1454 938 1454 1022 1454 c 0,31,32 - 1177 1454 1177 1454 1297.5 1391.5 c 128,-1,33 - 1418 1329 1418 1329 1479 1204 c 1,34,35 - 1535 1237 1535 1237 1599 1237 c 0,36,37 - 1698 1237 1698 1237 1762.5 1188.5 c 128,-1,38 - 1827 1140 1827 1140 1827 1040 c 0,39,40 - 1827 1008 1827 1008 1817 956 c 1,41,-1 - 1501 -412 l 1,0,-1 -1010 1352 m 0,42,43 - 938 1352 938 1352 856.5 1312 c 128,-1,44 - 775 1272 775 1272 694.5 1197 c 128,-1,45 - 614 1122 614 1122 545.5 996.5 c 128,-1,46 - 477 871 477 871 442 717 c 0,47,48 - 416 604 416 604 416 508 c 0,49,50 - 416 401 416 401 446.5 316 c 128,-1,51 - 477 231 477 231 525.5 182 c 128,-1,52 - 574 133 574 133 628 107.5 c 128,-1,53 - 682 82 682 82 735 82 c 0,54,55 - 797 82 797 82 864.5 106 c 128,-1,56 - 932 130 932 130 1002.5 182 c 128,-1,57 - 1073 234 1073 234 1135 307 c 128,-1,58 - 1197 380 1197 380 1249 486.5 c 128,-1,59 - 1301 593 1301 593 1329 717 c 0,60,61 - 1356 840 1356 840 1356 938 c 0,62,63 - 1356 1043 1356 1043 1327 1124.5 c 128,-1,64 - 1298 1206 1298 1206 1248.5 1254.5 c 128,-1,65 - 1199 1303 1199 1303 1138.5 1327.5 c 128,-1,66 - 1078 1352 1078 1352 1010 1352 c 0,42,43 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01A3 -Encoding: 419 419 651 -Width: 1392 -VWidth: 0 -Flags: W -HStem: -20 102<413 697> 745 102<1086 1219> 819 102<582 852> -VStem: 176 164<157 530> 926 166<365 717> 1221 168<459 743> -LayerCount: 2 -Fore -SplineSet -176 301 m 0,0,1 - 176 430 176 430 226.5 547.5 c 128,-1,2 - 277 665 277 665 356 745.5 c 128,-1,3 - 435 826 435 826 533 874 c 128,-1,4 - 631 922 631 922 725 922 c 0,5,6 - 932 922 932 922 1026 805 c 1,7,8 - 1087 848 1087 848 1163 848 c 0,9,10 - 1262 848 1262 848 1325.5 799.5 c 128,-1,11 - 1389 751 1389 751 1389 651 c 0,12,13 - 1389 624 1389 624 1378 567 c 1,14,-1 - 1153 -410 l 1,15,-1 - 979 -410 l 1,16,-1 - 1188 500 l 1,17,18 - 1221 650 1221 650 1221 684 c 0,19,20 - 1221 745 1221 745 1169 745 c 0,21,22 - 1141 745 1141 745 1125.5 735.5 c 128,-1,23 - 1110 726 1110 726 1079 694 c 1,24,25 - 1092 644 1092 644 1092 592 c 0,26,27 - 1092 544 1092 544 1083 491 c 128,-1,28 - 1074 438 1074 438 1053.5 378 c 128,-1,29 - 1033 318 1033 318 1002.5 262 c 128,-1,30 - 972 206 972 206 924 154 c 128,-1,31 - 876 102 876 102 818 64 c 128,-1,32 - 760 26 760 26 680 3 c 128,-1,33 - 600 -20 600 -20 508 -20 c 0,34,35 - 347 -20 347 -20 261.5 65 c 128,-1,36 - 176 150 176 150 176 301 c 0,0,1 -561 82 m 0,37,38 - 637 82 637 82 706.5 127.5 c 128,-1,39 - 776 173 776 173 823 244.5 c 128,-1,40 - 870 316 870 316 898 403.5 c 128,-1,41 - 926 491 926 491 926 575 c 0,42,43 - 926 686 926 686 873.5 752.5 c 128,-1,44 - 821 819 821 819 731 819 c 0,45,46 - 631 819 631 819 540 748 c 128,-1,47 - 449 677 449 677 394.5 559 c 128,-1,48 - 340 441 340 441 340 311 c 0,49,50 - 340 201 340 201 395 141.5 c 128,-1,51 - 450 82 450 82 561 82 c 0,37,38 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01AC -Encoding: 428 428 652 -Width: 1314 -VWidth: 0 -Flags: W -HStem: 0 43G<553 736> 918 43G<420 472> 1331 102<590 860 1034 1550> -VStem: 297 178<1002 1213> -LayerCount: 2 -Fore -SplineSet -297 1083 m 0,0,1 - 297 1137 297 1137 327 1197 c 128,-1,2 - 357 1257 357 1257 410.5 1310.5 c 128,-1,3 - 464 1364 464 1364 548.5 1399 c 128,-1,4 - 633 1434 633 1434 731 1434 c 2,5,-1 - 1575 1434 l 1,6,-1 - 1550 1331 l 1,7,-1 - 1034 1331 l 1,8,-1 - 727 0 l 1,9,-1 - 553 0 l 1,10,-1 - 860 1331 l 1,11,-1 - 721 1331 l 2,12,13 - 623 1331 623 1331 549 1253.5 c 128,-1,14 - 475 1176 475 1176 475 1077 c 0,15,16 - 475 1062 475 1062 479.5 1051 c 128,-1,17 - 484 1040 484 1040 488.5 1036 c 128,-1,18 - 493 1032 493 1032 504 1024 c 1,19,-1 - 453 918 l 1,20,21 - 422 930 422 930 400 941 c 128,-1,22 - 378 952 378 952 351.5 971.5 c 128,-1,23 - 325 991 325 991 311 1019.5 c 128,-1,24 - 297 1048 297 1048 297 1083 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01AE -Encoding: 430 430 653 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -348 102<712 893> 1331 102<373 860 1034 1550> -VStem: 528 176<-240 84> -LayerCount: 2 -Fore -SplineSet -727 0 m 2,0,1 - 705 -96 705 -96 705 -147 c 0,2,3 - 705 -246 705 -246 780 -246 c 0,4,5 - 852 -246 852 -246 901 -195 c 1,6,-1 - 1016 -256 l 1,7,8 - 917 -348 917 -348 788 -348 c 0,9,10 - 721 -348 721 -348 664.5 -328 c 128,-1,11 - 608 -308 608 -308 568 -258.5 c 128,-1,12 - 528 -209 528 -209 528 -137 c 0,13,14 - 528 -106 528 -106 537 -68 c 2,15,-1 - 860 1331 l 1,16,-1 - 348 1331 l 1,17,-1 - 373 1434 l 1,18,-1 - 1575 1434 l 1,19,-1 - 1550 1331 l 1,20,-1 - 1034 1331 l 1,21,-1 - 727 0 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0288 -Encoding: 648 648 654 -Width: 567 -VWidth: 0 -Flags: W -HStem: -348 102<338 518> 799 102<293 373 561 698> -VStem: 164 166<-241 84> -LayerCount: 2 -Fore -SplineSet -373 799 m 1,0,-1 - 238 799 l 1,1,-1 - 293 901 l 1,2,-1 - 397 901 l 1,3,-1 - 465 1198 l 1,4,-1 - 637 1229 l 1,5,-1 - 561 901 l 1,6,-1 - 723 901 l 1,7,-1 - 698 799 l 1,8,-1 - 537 799 l 1,9,-1 - 352 0 l 2,10,11 - 330 -96 330 -96 330 -147 c 0,12,13 - 330 -246 330 -246 406 -246 c 0,14,15 - 477 -246 477 -246 526 -195 c 1,16,-1 - 641 -256 l 1,17,18 - 542 -348 542 -348 414 -348 c 0,19,20 - 310 -348 310 -348 237 -296 c 128,-1,21 - 164 -244 164 -244 164 -141 c 0,22,23 - 164 -104 164 -104 172 -68 c 2,24,-1 - 373 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01AD -Encoding: 429 429 655 -Width: 577 -VWidth: 0 -Flags: W -HStem: -20 102<346 523> 799 102<291 371 559 696> 1270 102<670 901> -VStem: 229 174<85 272> 524 70<93 131> -LayerCount: 2 -Fore -SplineSet -559 901 m 1,0,-1 - 721 901 l 1,1,-1 - 696 799 l 1,2,-1 - 535 799 l 1,3,-1 - 414 276 l 2,4,5 - 403 228 403 228 403 182 c 0,6,7 - 403 82 403 82 446 82 c 0,8,9 - 474 82 474 82 496.5 96.5 c 128,-1,10 - 519 111 519 111 524 131 c 1,11,-1 - 594 131 l 1,12,13 - 581 68 581 68 522.5 24 c 128,-1,14 - 464 -20 464 -20 395 -20 c 0,15,16 - 322 -20 322 -20 275.5 29.5 c 128,-1,17 - 229 79 229 79 229 156 c 0,18,19 - 229 178 229 178 236 213 c 1,20,-1 - 371 799 l 1,21,-1 - 236 799 l 1,22,-1 - 291 901 l 1,23,-1 - 395 901 l 1,24,-1 - 440 1092 l 2,25,26 - 457 1165 457 1165 497 1221 c 128,-1,27 - 537 1277 537 1277 590 1308.5 c 128,-1,28 - 643 1340 643 1340 699 1356 c 128,-1,29 - 755 1372 755 1372 811 1372 c 0,30,31 - 938 1372 938 1372 995 1280 c 1,32,-1 - 852 1219 l 1,33,34 - 830 1270 830 1270 756 1270 c 0,35,36 - 696 1270 696 1270 657 1211.5 c 128,-1,37 - 618 1153 618 1153 588 1024 c 2,38,-1 - 559 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B5 -Encoding: 437 437 656 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<309 983> 696 102<430 582 829 973> 1331 102<434 1057> -LayerCount: 2 -Fore -SplineSet -1057 1331 m 1,0,-1 - 379 1331 l 1,1,-1 - 434 1434 l 1,2,-1 - 1307 1434 l 1,3,-1 - 829 799 l 1,4,-1 - 997 799 l 1,5,-1 - 973 696 l 1,6,-1 - 752 696 l 1,7,-1 - 309 102 l 1,8,-1 - 1008 102 l 1,9,-1 - 983 0 l 1,10,-1 - 61 0 l 1,11,-1 - 582 696 l 1,12,-1 - 406 696 l 1,13,-1 - 430 799 l 1,14,-1 - 659 799 l 1,15,-1 - 1057 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01B6 -Encoding: 438 438 657 -Width: 860 -VWidth: 0 -Flags: W -HStem: 0 102<324 823> 416 102<313 420 688 776> 799 102<283 758> -LayerCount: 2 -Fore -SplineSet -758 799 m 1,0,-1 - 227 799 l 1,1,-1 - 283 901 l 1,2,-1 - 1026 901 l 1,3,-1 - 688 518 l 1,4,-1 - 799 518 l 1,5,-1 - 776 416 l 1,6,-1 - 598 416 l 1,7,-1 - 324 102 l 1,8,-1 - 848 102 l 1,9,-1 - 823 0 l 1,10,-1 - 53 0 l 1,11,-1 - 420 416 l 1,12,-1 - 291 416 l 1,13,-1 - 313 518 l 1,14,-1 - 510 518 l 1,15,-1 - 758 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01C0 -Encoding: 448 448 658 -Width: 456 -VWidth: 0 -Flags: W -HStem: 0 43<174 296> 1393 41<496 618> -VStem: 174 444 -LayerCount: 2 -Fore -Refer: 59 124 N 1 0 0 1 82 0 2 -Validated: 1 -EndChar - -StartChar: uni01C1 -Encoding: 449 449 659 -Width: 722 -VWidth: 0 -Flags: W -HStem: 0 43<174 296 440 562> 1393 41<496 618 763 885> -VStem: 174 444 440 444 -LayerCount: 2 -Fore -Refer: 59 124 N 1 0 0 1 82 0 2 -Refer: 59 124 N 1 0 0 1 348 0 2 -Validated: 1 -EndChar - -StartChar: uni01C2 -Encoding: 450 450 660 -Width: 708 -VWidth: 0 -Flags: W -HStem: 0 43G<250 372> 573 102<186 383 518 707> 799 102<238 434 571 760> 1393 41G<572 694> -VStem: 162 621 -LayerCount: 2 -Fore -SplineSet -383 573 m 1,0,-1 - 162 573 l 1,1,-1 - 186 676 l 1,2,-1 - 406 676 l 1,3,-1 - 434 799 l 1,4,-1 - 215 799 l 1,5,-1 - 238 901 l 1,6,-1 - 459 901 l 1,7,-1 - 582 1434 l 1,8,-1 - 694 1434 l 1,9,-1 - 571 901 l 1,10,-1 - 782 901 l 1,11,-1 - 760 799 l 1,12,-1 - 547 799 l 1,13,-1 - 518 676 l 1,14,-1 - 731 676 l 1,15,-1 - 707 573 l 1,16,-1 - 496 573 l 1,17,-1 - 362 0 l 1,18,-1 - 250 0 l 1,19,-1 - 383 573 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01C3 -Encoding: 451 451 661 -Width: 356 -VWidth: 0 -Flags: W -HStem: 0 164<129 256> 1393 41<416 588> -VStem: 209 102<369 424> -LayerCount: 2 -Fore -Refer: 53 33 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Gcaron -Encoding: 486 486 662 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 717 102<1059 1210> 1331 102<803 1211> 1384 387 -VStem: 201 176<307 781> 834 479 -LayerCount: 2 -Fore -SplineSet -1395 819 m 1,0,-1 - 1257 209 l 1,1,2 - 1153 106 1153 106 1005 43 c 128,-1,3 - 857 -20 857 -20 696 -20 c 0,4,5 - 626 -20 626 -20 557 -0.5 c 128,-1,6 - 488 19 488 19 423.5 61.5 c 128,-1,7 - 359 104 359 104 310 164.5 c 128,-1,8 - 261 225 261 225 231 314.5 c 128,-1,9 - 201 404 201 404 201 510 c 0,10,11 - 201 631 201 631 236.5 759 c 128,-1,12 - 272 887 272 887 340.5 1005 c 128,-1,13 - 409 1123 409 1123 501 1217.5 c 128,-1,14 - 593 1312 593 1312 715.5 1370.5 c 128,-1,15 - 838 1429 838 1429 972 1433 c 1,16,-1 - 834 1718 l 1,17,-1 - 909 1772 l 1,18,-1 - 1044 1591 l 1,19,-1 - 1262 1772 l 1,20,-1 - 1313 1718 l 1,21,-1 - 1041 1433 l 1,22,23 - 1386 1422 1386 1422 1489 1245 c 1,24,-1 - 1321 1178 l 1,25,26 - 1249 1331 1249 1331 999 1331 c 0,27,28 - 898 1331 898 1331 807.5 1292 c 128,-1,29 - 717 1253 717 1253 650.5 1187 c 128,-1,30 - 584 1121 584 1121 530.5 1038 c 128,-1,31 - 477 955 477 955 444.5 863.5 c 128,-1,32 - 412 772 412 772 394.5 685 c 128,-1,33 - 377 598 377 598 377 522 c 0,34,35 - 377 433 377 433 400 358 c 128,-1,36 - 423 283 423 283 461 233 c 128,-1,37 - 499 183 499 183 548 148 c 128,-1,38 - 597 113 597 113 648 97.5 c 128,-1,39 - 699 82 699 82 750 82 c 0,40,41 - 946 82 946 82 1092 209 c 1,42,-1 - 1210 717 l 1,43,-1 - 1038 717 l 1,44,-1 - 1059 819 l 1,45,-1 - 1395 819 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: gcaron -Encoding: 487 487 663 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 592> -20 102<394 702> 819 102<529 784 1073 1185> 954 387 -VStem: 147 166<162 536> 561 479 1186 74<770 815> -LayerCount: 2 -Fore -Refer: 102 780 N 1 0 0 1 1049 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01F4 -Encoding: 500 500 664 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<585 956> 717 102<1059 1210> 1331 102<803 1211> 1501 387 -VStem: 201 176<307 781> 928 406 -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1321 246 2 -Refer: 34 71 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01F5 -Encoding: 501 501 665 -Width: 1091 -VWidth: 0 -Flags: W -HStem: -348 102<264 592> -20 102<394 702> 819 102<529 784 1073 1185> 1071 387 -VStem: 147 166<162 536> 629 406 1186 74<770 815> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1022 -184 2 -Refer: 20 103 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0200 -Encoding: 512 512 666 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1501 387 -VStem: 653 295 981 295 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1155 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0201 -Encoding: 513 513 667 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1071 387 -VStem: 154 158<136 521> 410 295 711 172<113 272> 737 295 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 911 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0202 -Encoding: 514 514 668 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1589 117<889 1120> -VStem: 1143 84<1516 1560> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1288 246 2 -Refer: 27 65 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0203 -Encoding: 515 515 669 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1159 117<645 877> -VStem: 154 158<136 521> 711 172<113 272> 899 84<1085 1130> 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1044 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0204 -Encoding: 516 516 670 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1501 387 -VStem: 532 295 860 295 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1034 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0205 -Encoding: 517 517 671 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1071 387 -VStem: 150 166<182 446> 412 295 739 295 872 160<556 758> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 913 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0206 -Encoding: 518 518 672 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1589 117<768 999> -VStem: 1022 84<1516 1560> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1167 246 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0207 -Encoding: 519 519 673 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1159 117<647 879> -VStem: 150 166<182 446> 872 160<556 758> 901 84<1085 1130> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1047 -184 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0208 -Encoding: 520 520 674 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1501 387 -VStem: 92 506 193 295 520 295 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 694 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0209 -Encoding: 521 521 675 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1071 387 -VStem: 86 295 135 174<85 272> 414 295 430 70<93 131> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 588 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020A -Encoding: 522 522 676 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1589 117<428 659> -VStem: 92 506 682 84<1516 1560> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 827 246 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020B -Encoding: 523 523 677 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1159 117<321 553> -VStem: 135 174<85 272> 430 70<93 131> 575 84<1085 1130> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 721 -184 2 -Refer: 112 305 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020C -Encoding: 524 524 678 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1501 387 -VStem: 199 176<286 770> 676 295 1004 295 1315 176<653 1162> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1178 246 2 -Refer: 42 79 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020D -Encoding: 525 525 679 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1071 387 -VStem: 147 164<157 530> 416 295 743 295 897 168<366 739> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 918 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020E -Encoding: 526 526 680 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1589 117<911 1143> -VStem: 199 176<286 770> 1165 84<1516 1560> 1315 176<653 1162> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1311 246 2 -Refer: 42 79 S 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni020F -Encoding: 527 527 681 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1159 117<651 883> -VStem: 147 164<157 530> 897 168<366 739> 905 84<1085 1130> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1051 -184 2 -Refer: 9 111 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0210 -Encoding: 528 528 682 -Width: 1101 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 819 991> 655 102<440 679> 1331 102<573 969> 1501 387 -VStem: 489 295 817 295 829 170<0 381> 1032 174<954 1271> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 991 246 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0211 -Encoding: 529 529 683 -Width: 770 -VWidth: 0 -Flags: W -HStem: 0 43<184 358> 819 102<221 380 570 863> 1071 387 -VStem: 150 70<770 808> 340 174<629 766> 344 295 672 295 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 846 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0212 -Encoding: 530 530 684 -Width: 1101 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 819 991> 655 102<440 679> 1331 102<573 969> 1589 117<725 956> -VStem: 829 170<0 381> 979 84<1516 1560> 1032 174<954 1271> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1124 246 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0213 -Encoding: 531 531 685 -Width: 770 -VWidth: 0 -Flags: W -HStem: 0 43<184 358> 819 102<221 380 570 863> 1159 117<579 811> -VStem: 150 70<770 808> 340 174<629 766> 834 84<1085 1130> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 979 -184 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0214 -Encoding: 532 532 686 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1501 387 -VStem: 176 174<211 687> 393 174<1372 1434> 637 295 965 295 -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 1139 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0215 -Encoding: 533 533 687 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1071 387 -VStem: 154 172<137 501> 397 295 725 295 762 174<142 374> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 103 783 N 1 0 0 1 899 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0216 -Encoding: 534 534 688 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1589 117<872 1104> -VStem: 176 174<211 687> 393 174<1372 1434> 1126 84<1516 1560> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1272 246 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0217 -Encoding: 535 535 689 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1159 117<633 864> -VStem: 154 172<137 501> 762 174<142 374> 887 84<1085 1130> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 104 785 N 1 0 0 1 1032 -184 2 -Refer: 19 117 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021E -Encoding: 542 542 690 -Width: 1259 -VWidth: 0 -Flags: W -HStem: 0 43<82 265 915 1099> 717 102<444 1081> 1384 387 1393 41<404 588 1238 1421> -VStem: 736 479 -LayerCount: 2 -Fore -Refer: 372 711 S 1 0 0 1 335 246 2 -Refer: 35 72 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni021F -Encoding: 543 543 691 -Width: 1034 -VWidth: 0 -Flags: W -HStem: 0 43<143 317 780 954> 819 102<560 873> 1270 102<284 461> 1309 387 -VStem: 213 70<1221 1259> 403 174<985 1268> 616 479 913 164<389 778> -LayerCount: 2 -Fore -Refer: 372 711 N 1 0 0 1 215 170 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0222 -Encoding: 546 546 692 -Width: 1126 -VWidth: 0 -Flags: W -HStem: -20 102<431 764> 1352 102<704 807 975 1034> -VStem: 168 174<168 460> 385 180<955 1186> 950 180<278 544> 1087 176<996 1296> -LayerCount: 2 -Fore -SplineSet -799 829 m 1,0,1 - 844 846 844 846 879 862.5 c 128,-1,2 - 914 879 914 879 955.5 907.5 c 128,-1,3 - 997 936 997 936 1023.5 968.5 c 128,-1,4 - 1050 1001 1050 1001 1068.5 1048 c 128,-1,5 - 1087 1095 1087 1095 1087 1151 c 0,6,7 - 1087 1233 1087 1233 1047 1292.5 c 128,-1,8 - 1007 1352 1007 1352 950 1352 c 1,9,-1 - 975 1454 l 1,10,11 - 1098 1454 1098 1454 1181 1371.5 c 128,-1,12 - 1264 1289 1264 1289 1264 1165 c 0,13,14 - 1264 1134 1264 1134 1253 1085 c 0,15,16 - 1237 1015 1237 1015 1204.5 962 c 128,-1,17 - 1172 909 1172 909 1124 872.5 c 128,-1,18 - 1076 836 1076 836 1027.5 812 c 128,-1,19 - 979 788 979 788 913 766 c 1,20,21 - 962 737 962 737 997 709 c 128,-1,22 - 1032 681 1032 681 1064.5 644 c 128,-1,23 - 1097 607 1097 607 1113.5 560.5 c 128,-1,24 - 1130 514 1130 514 1130 459 c 0,25,26 - 1130 367 1130 367 1089 281 c 128,-1,27 - 1048 195 1048 195 974 128 c 128,-1,28 - 900 61 900 61 788.5 20.5 c 128,-1,29 - 677 -20 677 -20 545 -20 c 0,30,31 - 371 -20 371 -20 269.5 68 c 128,-1,32 - 168 156 168 156 168 289 c 0,33,34 - 168 329 168 329 176 365 c 0,35,36 - 194 445 194 445 232.5 508 c 128,-1,37 - 271 571 271 571 328.5 615.5 c 128,-1,38 - 386 660 386 660 441.5 689.5 c 128,-1,39 - 497 719 497 719 573 748 c 1,40,41 - 484 798 484 798 434.5 861 c 128,-1,42 - 385 924 385 924 385 1016 c 0,43,44 - 385 1128 385 1128 453.5 1231 c 128,-1,45 - 522 1334 522 1334 625.5 1394 c 128,-1,46 - 729 1454 729 1454 831 1454 c 1,47,-1 - 807 1352 l 1,48,49 - 747 1352 747 1352 689 1302 c 128,-1,50 - 631 1252 631 1252 598 1184.5 c 128,-1,51 - 565 1117 565 1117 565 1061 c 0,52,53 - 565 1022 565 1022 582.5 989 c 128,-1,54 - 600 956 600 956 638 926.5 c 128,-1,55 - 676 897 676 897 708.5 878 c 128,-1,56 - 741 859 741 859 799 829 c 1,0,1 -582 82 m 0,57,58 - 668 82 668 82 736 109.5 c 128,-1,59 - 804 137 804 137 843 176 c 128,-1,60 - 882 215 882 215 907.5 264.5 c 128,-1,61 - 933 314 933 314 941.5 352.5 c 128,-1,62 - 950 391 950 391 950 422 c 0,63,64 - 950 470 950 470 932 508 c 128,-1,65 - 914 546 914 546 867.5 581 c 128,-1,66 - 821 616 821 616 793 632.5 c 128,-1,67 - 765 649 765 649 693 686 c 0,68,69 - 686 690 686 690 682 692 c 1,70,71 - 619 670 619 670 571 645 c 128,-1,72 - 523 620 523 620 477 582.5 c 128,-1,73 - 431 545 431 545 398.5 490 c 128,-1,74 - 366 435 366 435 350 365 c 1,75,76 - 342 319 342 319 342 301 c 0,77,78 - 342 206 342 206 408 144 c 128,-1,79 - 474 82 474 82 582 82 c 0,57,58 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0223 -Encoding: 547 547 693 -Width: 1003 -VWidth: 0 -Flags: W -HStem: -20 102<404 665> 1126 100<577 730> 1229 102<864 935> -VStem: 162 180<146 447> 362 180<870 1086> 829 180<271 554> 956 174<961 1211> -LayerCount: 2 -Fore -SplineSet -709 799 m 1,0,1 - 745 816 745 816 770.5 830 c 128,-1,2 - 796 844 796 844 834 873.5 c 128,-1,3 - 872 903 872 903 896 934 c 128,-1,4 - 920 965 920 965 938 1012.5 c 128,-1,5 - 956 1060 956 1060 956 1114 c 0,6,7 - 956 1229 956 1229 842 1229 c 1,8,-1 - 864 1331 l 1,9,10 - 989 1331 989 1331 1059.5 1280.5 c 128,-1,11 - 1130 1230 1130 1230 1130 1126 c 0,12,13 - 1130 1061 1130 1061 1109.5 1004.5 c 128,-1,14 - 1089 948 1089 948 1059.5 910 c 128,-1,15 - 1030 872 1030 872 985 837.5 c 128,-1,16 - 940 803 940 803 904.5 784 c 128,-1,17 - 869 765 869 765 823 745 c 1,18,19 - 909 698 909 698 959.5 634.5 c 128,-1,20 - 1010 571 1010 571 1010 471 c 0,21,22 - 1010 438 1010 438 995 365 c 1,23,24 - 949 169 949 169 822.5 74.5 c 128,-1,25 - 696 -20 696 -20 483 -20 c 0,26,27 - 332 -20 332 -20 247 47.5 c 128,-1,28 - 162 115 162 115 162 248 c 0,29,30 - 162 331 162 331 187.5 402.5 c 128,-1,31 - 213 474 213 474 248 520.5 c 128,-1,32 - 283 567 283 567 337.5 608.5 c 128,-1,33 - 392 650 392 650 431 671 c 128,-1,34 - 470 692 470 692 522 715 c 1,35,36 - 446 756 446 756 404 805.5 c 128,-1,37 - 362 855 362 855 362 930 c 0,38,39 - 362 1052 362 1052 448 1139.5 c 128,-1,40 - 534 1227 534 1227 668 1227 c 0,41,42 - 716 1227 716 1227 766 1212 c 1,43,-1 - 717 1114 l 1,44,45 - 679 1126 679 1126 649 1126 c 0,46,47 - 617 1126 617 1126 593.5 1103.5 c 128,-1,48 - 570 1081 570 1081 560.5 1049.5 c 128,-1,49 - 551 1018 551 1018 547 997 c 128,-1,50 - 543 976 543 976 543 965 c 0,51,52 - 543 909 543 909 585 872 c 128,-1,53 - 627 835 627 835 709 799 c 1,0,1 -520 82 m 0,54,55 - 591 82 591 82 651.5 117.5 c 128,-1,56 - 712 153 712 153 749.5 206.5 c 128,-1,57 - 787 260 787 260 808 319 c 128,-1,58 - 829 378 829 378 829 430 c 0,59,60 - 829 475 829 475 813.5 511 c 128,-1,61 - 798 547 798 547 766.5 575 c 128,-1,62 - 735 603 735 603 705.5 621 c 128,-1,63 - 676 639 676 639 629 662 c 1,64,65 - 342 530 342 530 342 287 c 0,66,67 - 342 196 342 196 390 139 c 128,-1,68 - 438 82 438 82 520 82 c 0,54,55 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni022A -Encoding: 554 554 694 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1516 150<809 924 1137 1251> 1751 82<852 1305> -VStem: 199 176<286 770> 774 184 834 489 1102 184 1315 176<653 1162> -LayerCount: 2 -Fore -Refer: 157 214 N 1 0 0 1 0 0 3 -Refer: 96 772 N 1 0 0 1 1374 481 2 -Validated: 1 -EndChar - -StartChar: uni022B -Encoding: 555 555 695 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1085 150<549 664 877 991> 1382 82<608 1061> -VStem: 147 164<157 530> 514 184 590 489 842 184 897 168<366 739> -LayerCount: 2 -Fore -Refer: 136 246 N 1 0 0 1 0 0 3 -Refer: 96 772 S 1 0 0 1 1130 113 2 -Validated: 1 -EndChar - -StartChar: uni022C -Encoding: 556 556 696 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1516 117<1057 1249> 1581 117<846 1038> 1751 82<860 1313> -VStem: 199 176<286 770> 743 608 842 489 1315 176<653 1162> -LayerCount: 2 -Fore -Refer: 156 213 N 1 0 0 1 0 0 3 -Refer: 96 772 S 1 0 0 1 1382 481 2 -Validated: 1 -EndChar - -StartChar: uni022D -Encoding: 557 557 697 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1085 117<797 989> 1151 117<586 778> 1382 82<629 1081> -VStem: 147 164<157 530> 483 608 610 489 897 168<366 739> -LayerCount: 2 -Fore -Refer: 131 245 N 1 0 0 1 0 0 3 -Refer: 96 772 S 1 0 0 1 1151 113 2 -Validated: 1 -EndChar - -StartChar: uni022E -Encoding: 558 558 698 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<594 902> 1352 102<852 1174> 1516 150<1012 1126> -VStem: 240 176<286 770> 977 184 1356 176<653 1162> -LayerCount: 2 -Fore -Refer: 98 775 S 1 0 0 1 1350 246 2 -Refer: 42 79 N 1 0 0 1 41 0 3 -Validated: 1 -EndChar - -StartChar: uni022F -Encoding: 559 559 699 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<413 697> 819 102<582 852> 1085 150<760 874> -VStem: 176 164<157 530> 725 184 926 168<366 739> -LayerCount: 2 -Fore -Refer: 98 775 N 1 0 0 1 1098 -184 2 -Refer: 9 111 N 1 0 0 1 29 0 3 -Validated: 1 -EndChar - -StartChar: uni0230 -Encoding: 560 560 700 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<594 902> 1352 102<852 1174> 1516 150<1012 1126> 1751 82<877 1329> -VStem: 240 176<286 770> 858 489 977 184 1356 176<653 1162> -LayerCount: 2 -Fore -Refer: 698 558 N 1 0 0 1 0 0 3 -Refer: 96 772 S 1 0 0 1 1399 481 2 -Validated: 1 -EndChar - -StartChar: uni0231 -Encoding: 561 561 701 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<413 697> 819 102<582 852> 1085 150<760 874> 1382 82<670 1122> -VStem: 176 164<157 530> 651 489 725 184 926 168<366 739> -LayerCount: 2 -Fore -Refer: 699 559 N 1 0 0 1 0 0 3 -Refer: 96 772 N 1 0 0 1 1192 113 2 -Validated: 1 -EndChar - -StartChar: uni0232 -Encoding: 562 562 702 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<451 634> 1393 41<414 609 1112 1327> 1516 82<645 1098> -VStem: 627 489 -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 3 -Refer: 96 772 S 1 0 0 1 1167 246 2 -Validated: 1 -EndChar - -StartChar: uni0233 -Encoding: 563 563 703 -Width: 931 -VWidth: 0 -Flags: W -HStem: -348 102<133 262> 860 41<270 425 901 1090> 1085 82<506 958> -VStem: 487 489 -LayerCount: 2 -Fore -Refer: 24 121 N 1 0 0 1 0 0 3 -Refer: 96 772 S 1 0 0 1 1028 -184 2 -Validated: 1 -EndChar - -StartChar: uni0241 -Encoding: 577 577 704 -Width: 933 -VWidth: 0 -Flags: W -HStem: 0 43G<225 399> 557 98<518 694> 1270 102<532 844> -VStem: 913 166<875 1203> -LayerCount: 2 -Fore -SplineSet -1079 1087 m 0,0,1 - 1079 988 1079 988 1046.5 901.5 c 128,-1,2 - 1014 815 1014 815 958.5 753 c 128,-1,3 - 903 691 903 691 831 646 c 128,-1,4 - 759 601 759 601 679 579 c 128,-1,5 - 599 557 599 557 518 557 c 1,6,-1 - 389 0 l 1,7,-1 - 225 0 l 1,8,-1 - 377 655 l 1,9,-1 - 496 655 l 2,10,11 - 684 655 684 655 798.5 771 c 128,-1,12 - 913 887 913 887 913 1071 c 0,13,14 - 913 1270 913 1270 672 1270 c 0,15,16 - 600 1270 600 1270 552.5 1241 c 128,-1,17 - 505 1212 505 1212 449 1147 c 1,18,-1 - 338 1194 l 1,19,20 - 426 1280 426 1280 517.5 1326 c 128,-1,21 - 609 1372 609 1372 727 1372 c 0,22,23 - 897 1372 897 1372 988 1301 c 128,-1,24 - 1079 1230 1079 1230 1079 1087 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0242 -Encoding: 578 578 705 -Width: 872 -VWidth: 0 -Flags: W -HStem: 0 246<283 389> 147 98<424 570> 819 102<441 710> -VStem: 762 166<441 766> -LayerCount: 2 -Fore -SplineSet -928 647 m 0,0,1 - 928 552 928 552 896.5 469.5 c 128,-1,2 - 865 387 865 387 813 329 c 128,-1,3 - 761 271 761 271 695 229 c 128,-1,4 - 629 187 629 187 559.5 167 c 128,-1,5 - 490 147 490 147 424 147 c 1,6,-1 - 389 0 l 1,7,-1 - 225 0 l 1,8,-1 - 283 246 l 1,9,-1 - 365 246 l 2,10,11 - 446 246 446 246 512 265.5 c 128,-1,12 - 578 285 578 285 619.5 318.5 c 128,-1,13 - 661 352 661 352 690.5 391.5 c 128,-1,14 - 720 431 720 431 735 477 c 128,-1,15 - 750 523 750 523 756 560 c 128,-1,16 - 762 597 762 597 762 633 c 0,17,18 - 762 819 762 819 571 819 c 0,19,20 - 534 819 534 819 502 808.5 c 128,-1,21 - 470 798 470 798 440 774.5 c 128,-1,22 - 410 751 410 751 390.5 731.5 c 128,-1,23 - 371 712 371 712 340 676 c 1,24,-1 - 227 723 l 1,25,26 - 321 815 321 815 416.5 868.5 c 128,-1,27 - 512 922 512 922 627 922 c 0,28,29 - 763 922 763 922 845.5 853 c 128,-1,30 - 928 784 928 784 928 647 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0251 -Encoding: 593 593 706 -Width: 1126 -VWidth: 0 -Flags: W -HStem: -20 102<447 765 914 1065> 819 102<581 842> 860 41G<932 1106> -VStem: 178 166<182 543> 774 170<109 364> 1071 70<94 131> -LayerCount: 2 -Fore -SplineSet -178 324 m 0,0,1 - 178 443 178 443 228 555 c 128,-1,2 - 278 667 278 667 356 746.5 c 128,-1,3 - 434 826 434 826 532.5 874 c 128,-1,4 - 631 922 631 922 725 922 c 0,5,6 - 848 922 848 922 932 860 c 1,7,-1 - 942 901 l 1,8,-1 - 1106 901 l 1,9,-1 - 961 276 l 1,10,11 - 944 196 944 196 944 162 c 0,12,13 - 944 82 944 82 991 82 c 0,14,15 - 1018 82 1018 82 1042.5 95.5 c 128,-1,16 - 1067 109 1067 109 1071 131 c 1,17,-1 - 1141 131 l 1,18,19 - 1127 71 1127 71 1067.5 25.5 c 128,-1,20 - 1008 -20 1008 -20 942 -20 c 0,21,22 - 861 -20 861 -20 811 43 c 1,23,24 - 688 -20 688 -20 549 -20 c 0,25,26 - 379 -20 379 -20 278.5 72.5 c 128,-1,27 - 178 165 178 165 178 324 c 0,0,1 -731 819 m 0,28,29 - 630 819 630 819 539.5 747.5 c 128,-1,30 - 449 676 449 676 396.5 565.5 c 128,-1,31 - 344 455 344 455 344 340 c 0,32,33 - 344 220 344 220 413 151 c 128,-1,34 - 482 82 482 82 602 82 c 0,35,36 - 697 82 697 82 776 133 c 1,37,38 - 776 136 776 136 775 143.5 c 128,-1,39 - 774 151 774 151 774 154 c 0,40,41 - 774 173 774 173 782 213 c 1,42,-1 - 891 682 l 1,43,44 - 875 746 875 746 835 782.5 c 128,-1,45 - 795 819 795 819 731 819 c 0,28,29 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C6D -Encoding: 11373 11373 707 -Width: 1445 -VWidth: 0 -Flags: W -HStem: -20 102<626 997 1189 1355> 1352 102<853 1237> 1393 41G<1298 1477> -VStem: 242 176<307 781> 1020 168<125 376> -LayerCount: 2 -Fore -SplineSet -1303 1434 m 1,0,-1 - 1477 1434 l 1,1,-1 - 1221 328 l 1,2,3 - 1188 178 1188 178 1188 143 c 0,4,5 - 1188 82 1188 82 1239 82 c 0,6,7 - 1267 82 1267 82 1282.5 91.5 c 128,-1,8 - 1298 101 1298 101 1329 133 c 1,9,-1 - 1444 72 l 1,10,11 - 1391 23 1391 23 1347 1.5 c 128,-1,12 - 1303 -20 1303 -20 1247 -20 c 0,13,14 - 1121 -20 1121 -20 1063 49 c 1,15,16 - 906 -20 906 -20 737 -20 c 0,17,18 - 667 -20 667 -20 598 -0.5 c 128,-1,19 - 529 19 529 19 464.5 61.5 c 128,-1,20 - 400 104 400 104 351 164.5 c 128,-1,21 - 302 225 302 225 272 314.5 c 128,-1,22 - 242 404 242 404 242 510 c 0,23,24 - 242 594 242 594 268 717 c 1,25,26 - 302 865 302 865 368 989.5 c 128,-1,27 - 434 1114 434 1114 513.5 1198 c 128,-1,28 - 593 1282 593 1282 685.5 1341 c 128,-1,29 - 778 1400 778 1400 866.5 1427 c 128,-1,30 - 955 1454 955 1454 1038 1454 c 0,31,32 - 1191 1454 1191 1454 1298 1419 c 1,33,-1 - 1303 1434 l 1,0,-1 -1044 1352 m 0,34,35 - 950 1352 950 1352 862.5 1314 c 128,-1,36 - 775 1276 775 1276 707.5 1211.5 c 128,-1,37 - 640 1147 640 1147 584.5 1063 c 128,-1,38 - 529 979 529 979 493 886.5 c 128,-1,39 - 457 794 457 794 437.5 700.5 c 128,-1,40 - 418 607 418 607 418 522 c 0,41,42 - 418 433 418 433 441 358 c 128,-1,43 - 464 283 464 283 502 233 c 128,-1,44 - 540 183 540 183 589 148 c 128,-1,45 - 638 113 638 113 689 97.5 c 128,-1,46 - 740 82 740 82 791 82 c 0,47,48 - 918 82 918 82 1024 135 c 1,49,50 - 1020 163 1020 163 1020 178 c 0,51,52 - 1020 208 1020 208 1030 260 c 1,53,-1 - 1268 1288 l 1,54,55 - 1178 1352 1178 1352 1044 1352 c 0,34,35 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni019C -Encoding: 412 412 708 -Width: 1871 -VWidth: 0 -Flags: W -HStem: -20 102<460 754 1143 1416> 0 43G<1530 1713> -VStem: 248 174<118 516> 483 174<1289 1352> -LayerCount: 2 -Fore -SplineSet -2015 1352 m 1,0,-1 - 1704 0 l 1,1,-1 - 1530 0 l 1,2,-1 - 1554 102 l 1,3,4 - 1531 78 1531 78 1511 61.5 c 128,-1,5 - 1491 45 1491 45 1457 23.5 c 128,-1,6 - 1423 2 1423 2 1378 -9 c 128,-1,7 - 1333 -20 1333 -20 1280 -20 c 0,8,9 - 1136 -20 1136 -20 1064.5 15 c 128,-1,10 - 993 50 993 50 956 127 c 1,11,12 - 874 51 874 51 776.5 15.5 c 128,-1,13 - 679 -20 679 -20 598 -20 c 0,14,15 - 248 -20 248 -20 248 262 c 0,16,17 - 248 328 248 328 266 410 c 2,18,-1 - 483 1352 l 1,19,-1 - 657 1352 l 1,20,-1 - 446 434 l 1,21,22 - 422 323 422 323 422 254 c 0,23,24 - 422 159 422 159 464 120.5 c 128,-1,25 - 506 82 506 82 590 82 c 1,26,27 - 712 84 712 84 810.5 163.5 c 128,-1,28 - 909 243 909 243 948 410 c 2,29,-1 - 1165 1352 l 1,30,-1 - 1339 1352 l 1,31,-1 - 1128 434 l 1,32,33 - 1104 323 1104 323 1104 254 c 0,34,35 - 1104 159 1104 159 1146 120.5 c 128,-1,36 - 1188 82 1188 82 1272 82 c 0,37,38 - 1324 82 1324 82 1378 106 c 128,-1,39 - 1432 130 1432 130 1475 167 c 128,-1,40 - 1518 204 1518 204 1550.5 242 c 128,-1,41 - 1583 280 1583 280 1604 315 c 1,42,-1 - 1841 1352 l 1,43,-1 - 2015 1352 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni026F -Encoding: 623 623 709 -Width: 1605 -VWidth: 0 -Flags: W -HStem: 0 102<335 620 892 1187 1392 1551> 881 41G<281 455 838 1012 1414 1587> -VStem: 154 158<124 492> 1257 174<163 395> 1552 70<114 152> -LayerCount: 2 -Fore -SplineSet -1444 297 m 2,0,1 - 1432 245 1432 245 1432 203 c 0,2,3 - 1432 158 1432 158 1444 130 c 128,-1,4 - 1456 102 1456 102 1477 102 c 0,5,6 - 1504 102 1504 102 1525.5 116.5 c 128,-1,7 - 1547 131 1547 131 1552 152 c 1,8,-1 - 1622 152 l 1,9,10 - 1608 89 1608 89 1550 44.5 c 128,-1,11 - 1492 0 1492 0 1423 0 c 0,12,13 - 1329 0 1329 0 1282 80 c 1,14,15 - 1214 39 1214 39 1157 19.5 c 128,-1,16 - 1100 0 1100 0 1032 0 c 0,17,18 - 819 0 819 0 750 106 c 1,19,20 - 590 0 590 0 465 0 c 0,21,22 - 301 0 301 0 227.5 61.5 c 128,-1,23 - 154 123 154 123 154 252 c 0,24,25 - 154 328 154 328 178 430 c 2,26,-1 - 291 922 l 1,27,-1 - 455 922 l 1,28,-1 - 340 422 l 2,29,30 - 311 293 311 293 311 236 c 0,31,32 - 311 157 311 157 346.5 129.5 c 128,-1,33 - 382 102 382 102 459 102 c 0,34,35 - 597 102 597 102 682 203 c 1,36,-1 - 848 922 l 1,37,-1 - 1012 922 l 1,38,-1 - 897 422 l 2,39,40 - 868 296 868 296 868 238 c 0,41,42 - 868 158 868 158 905.5 130 c 128,-1,43 - 943 102 943 102 1026 102 c 0,44,45 - 1140 102 1140 102 1257 195 c 1,46,47 - 1257 202 1257 202 1260 215 c 128,-1,48 - 1263 228 1263 228 1264 233 c 2,49,-1 - 1423 922 l 1,50,-1 - 1587 922 l 1,51,-1 - 1444 297 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0271 -Encoding: 625 625 710 -Width: 1570 -VWidth: 0 -Flags: W -HStem: -348 102<1004 1236> 0 43G<184 358 760 933> 819 102<221 380 584 880 1151 1437> -VStem: 150 70<770 808> 340 174<629 759> 1460 158<430 798> -LayerCount: 2 -Fore -SplineSet -1464 -68 m 2,0,1 - 1442 -164 1442 -164 1379.5 -229.5 c 128,-1,2 - 1317 -295 1317 -295 1245 -321.5 c 128,-1,3 - 1173 -348 1173 -348 1096 -348 c 0,4,5 - 966 -348 966 -348 909 -256 c 1,6,-1 - 1053 -195 l 1,7,8 - 1075 -246 1075 -246 1149 -246 c 0,9,10 - 1209 -246 1209 -246 1248 -187.5 c 128,-1,11 - 1287 -129 1287 -129 1317 0 c 2,12,-1 - 1432 500 l 2,13,14 - 1460 624 1460 624 1460 686 c 0,15,16 - 1460 764 1460 764 1425 791.5 c 128,-1,17 - 1390 819 1390 819 1313 819 c 0,18,19 - 1174 819 1174 819 1090 719 c 1,20,-1 - 924 0 l 1,21,-1 - 760 0 l 1,22,-1 - 874 500 l 2,23,24 - 903 626 903 626 903 684 c 0,25,26 - 903 764 903 764 865.5 791.5 c 128,-1,27 - 828 819 828 819 745 819 c 0,28,29 - 630 819 630 819 514 727 c 1,30,31 - 514 720 514 720 511 705.5 c 128,-1,32 - 508 691 508 691 508 688 c 2,33,-1 - 348 0 l 1,34,-1 - 184 0 l 1,35,-1 - 328 625 l 2,36,37 - 340 678 340 678 340 719 c 0,38,39 - 340 764 340 764 328 791.5 c 128,-1,40 - 316 819 316 819 295 819 c 0,41,42 - 267 819 267 819 245.5 804.5 c 128,-1,43 - 224 790 224 790 219 770 c 1,44,-1 - 150 770 l 1,45,46 - 164 833 164 833 221.5 877.5 c 128,-1,47 - 279 922 279 922 348 922 c 0,48,49 - 442 922 442 922 489 842 c 1,50,51 - 557 883 557 883 614 902.5 c 128,-1,52 - 671 922 671 922 739 922 c 0,53,54 - 952 922 952 922 1022 815 c 1,55,56 - 1183 922 1183 922 1307 922 c 0,57,58 - 1471 922 1471 922 1544.5 860.5 c 128,-1,59 - 1618 799 1618 799 1618 670 c 0,60,61 - 1618 598 1618 598 1593 492 c 2,62,-1 - 1464 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C6E -Encoding: 11374 11374 711 -Width: 1480 -VWidth: 0 -Flags: W -HStem: -348 102<887 1120> 0 43G<92 276> 1393 41G<414 608 1503 1706> -LayerCount: 2 -Fore -SplineSet -1358 -68 m 2,0,1 - 1341 -141 1341 -141 1299.5 -197 c 128,-1,2 - 1258 -253 1258 -253 1204 -284.5 c 128,-1,3 - 1150 -316 1150 -316 1093 -332 c 128,-1,4 - 1036 -348 1036 -348 979 -348 c 0,5,6 - 850 -348 850 -348 793 -256 c 1,7,-1 - 936 -195 l 1,8,9 - 958 -246 958 -246 1032 -246 c 0,10,11 - 1092 -246 1092 -246 1131 -187.5 c 128,-1,12 - 1170 -129 1170 -129 1200 0 c 2,13,-1 - 1446 1065 l 1,14,-1 - 750 70 l 1,15,-1 - 512 1065 l 1,16,-1 - 266 0 l 1,17,-1 - 92 0 l 1,18,-1 - 424 1434 l 1,19,-1 - 598 1434 l 1,20,-1 - 834 432 l 1,21,-1 - 1532 1434 l 1,22,-1 - 1706 1434 l 1,23,-1 - 1358 -68 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni027D -Encoding: 637 637 712 -Width: 729 -VWidth: 0 -Flags: W -HStem: -348 102<293 473> 819 102<180 339 529 822> -VStem: 109 70<770 808> 119 166<-241 85> 299 174<527 766> -LayerCount: 2 -Fore -SplineSet -287 625 m 2,0,1 - 299 678 299 678 299 719 c 0,2,3 - 299 764 299 764 287 791.5 c 128,-1,4 - 275 819 275 819 254 819 c 0,5,6 - 226 819 226 819 204.5 804.5 c 128,-1,7 - 183 790 183 790 178 770 c 1,8,-1 - 109 770 l 1,9,10 - 123 833 123 833 180.5 877.5 c 128,-1,11 - 238 922 238 922 307 922 c 0,12,13 - 402 922 402 922 449 842 c 1,14,15 - 519 884 519 884 572 903 c 128,-1,16 - 625 922 625 922 692 922 c 0,17,18 - 798 922 798 922 874 893 c 1,19,-1 - 840 741 l 1,20,21 - 819 819 819 819 682 819 c 0,22,23 - 620 819 620 819 572 797.5 c 128,-1,24 - 524 776 524 776 473 731 c 1,25,26 - 473 709 473 709 467 688 c 1,27,-1 - 307 0 l 2,28,29 - 285 -96 285 -96 285 -147 c 0,30,31 - 285 -246 285 -246 360 -246 c 0,32,33 - 432 -246 432 -246 481 -195 c 1,34,-1 - 596 -256 l 1,35,36 - 497 -348 497 -348 369 -348 c 0,37,38 - 265 -348 265 -348 192 -296 c 128,-1,39 - 119 -244 119 -244 119 -141 c 0,40,41 - 119 -104 119 -104 127 -68 c 2,42,-1 - 287 625 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0244 -Encoding: 580 580 713 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<566 902> 696 102<242 315 514 1233 1432 1505> 1393 41G<478 662 1395 1579> -VStem: 270 174<211 695> -LayerCount: 2 -Fore -SplineSet -217 696 m 1,0,-1 - 242 799 l 1,1,-1 - 340 799 l 1,2,-1 - 487 1434 l 1,3,-1 - 662 1434 l 1,4,-1 - 514 799 l 1,5,-1 - 1257 799 l 1,6,-1 - 1405 1434 l 1,7,-1 - 1579 1434 l 1,8,-1 - 1432 799 l 1,9,-1 - 1530 799 l 1,10,-1 - 1505 696 l 1,11,-1 - 1407 696 l 1,12,-1 - 1389 610 l 2,13,14 - 1357 459 1357 459 1301.5 346 c 128,-1,15 - 1246 233 1246 233 1181 164 c 128,-1,16 - 1116 95 1116 95 1032 53 c 128,-1,17 - 948 11 948 11 867.5 -4.5 c 128,-1,18 - 787 -20 787 -20 692 -20 c 0,19,20 - 633 -20 633 -20 578 -9 c 128,-1,21 - 523 2 523 2 465.5 31.5 c 128,-1,22 - 408 61 408 61 366 106.5 c 128,-1,23 - 324 152 324 152 297 226.5 c 128,-1,24 - 270 301 270 301 270 397 c 0,25,26 - 270 490 270 490 297 610 c 1,27,-1 - 315 696 l 1,28,-1 - 217 696 l 1,0,-1 -1233 696 m 1,29,-1 - 489 696 l 1,30,-1 - 471 610 l 1,31,32 - 444 487 444 487 444 401 c 0,33,34 - 444 325 444 325 463 266 c 128,-1,35 - 482 207 482 207 510.5 173 c 128,-1,36 - 539 139 539 139 578 118 c 128,-1,37 - 617 97 617 97 653 89.5 c 128,-1,38 - 689 82 689 82 727 82 c 0,39,40 - 778 82 778 82 829 95.5 c 128,-1,41 - 880 109 880 109 939 145.5 c 128,-1,42 - 998 182 998 182 1048 239 c 128,-1,43 - 1098 296 1098 296 1143 391.5 c 128,-1,44 - 1188 487 1188 487 1214 610 c 1,45,-1 - 1233 696 l 1,29,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0289 -Encoding: 649 649 714 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 416 102<127 178 367 815 1001 1067> 860 41G<281 455 918 1092> -VStem: 154 172<137 413> 762 174<142 378> 1057 70<93 131> -LayerCount: 2 -Fore -SplineSet -154 240 m 0,0,1 - 154 313 154 313 178 416 c 1,2,-1 - 104 416 l 1,3,-1 - 127 518 l 1,4,-1 - 201 518 l 1,5,-1 - 291 901 l 1,6,-1 - 455 901 l 1,7,-1 - 367 518 l 1,8,-1 - 840 518 l 1,9,-1 - 928 901 l 1,10,-1 - 1092 901 l 1,11,-1 - 1001 518 l 1,12,-1 - 1090 518 l 1,13,-1 - 1067 416 l 1,14,-1 - 979 416 l 1,15,-1 - 946 276 l 2,16,17 - 936 232 936 232 936 182 c 0,18,19 - 936 82 936 82 979 82 c 0,20,21 - 1007 82 1007 82 1029.5 96.5 c 128,-1,22 - 1052 111 1052 111 1057 131 c 1,23,-1 - 1126 131 l 1,24,25 - 1113 68 1113 68 1055 24 c 128,-1,26 - 997 -20 997 -20 928 -20 c 0,27,28 - 832 -20 832 -20 784 61 c 1,29,30 - 714 23 714 23 631 1.5 c 128,-1,31 - 548 -20 548 -20 475 -20 c 0,32,33 - 309 -20 309 -20 231.5 43.5 c 128,-1,34 - 154 107 154 107 154 240 c 0,0,1 -815 416 m 1,35,-1 - 342 416 l 1,36,37 - 326 334 326 334 326 281 c 0,38,39 - 326 171 326 171 379.5 126.5 c 128,-1,40 - 433 82 433 82 528 82 c 0,41,42 - 646 82 646 82 762 174 c 1,43,44 - 762 177 762 177 768 213 c 1,45,-1 - 815 416 l 1,35,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni028C -Encoding: 652 652 715 -Width: 931 -VWidth: 0 -Flags: W -HStem: 0 43G<49 237 713 868> 860 41G<561 755> -AnchorPoint: "bottom" 467 0 basechar 0 -AnchorPoint: "top" 707 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -586 901 m 1,0,-1 - 750 901 l 1,1,-1 - 868 0 l 1,2,-1 - 719 0 l 1,3,-1 - 627 696 l 1,4,-1 - 213 0 l 1,5,-1 - 49 0 l 1,6,-1 - 586 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0245 -Encoding: 581 581 716 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43G<31 219 1086 1255> 1393 41G<860 1070> -AnchorPoint: "bottom" 639 0 basechar 0 -AnchorPoint: "top" 975 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -928 1231 m 1,0,-1 - 195 0 l 1,1,-1 - 31 0 l 1,2,-1 - 885 1434 l 1,3,-1 - 1065 1434 l 1,4,-1 - 1255 0 l 1,5,-1 - 1092 0 l 1,6,-1 - 928 1231 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0294 -Encoding: 660 660 717 -Width: 933 -VWidth: 0 -Flags: W -HStem: 0 43<225 399> 557 98<518 694> 1270 102<532 844> -VStem: 913 166<875 1203> -LayerCount: 2 -Fore -Refer: 704 577 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni2C64 -Encoding: 11364 11364 718 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -348 102<334 514> 0 43G<901 1073> 655 102<522 761> 1331 102<655 1051> -VStem: 150 176<-240 78> 911 170<0 380> 1114 174<953 1271> -LayerCount: 2 -Fore -SplineSet -1288 1128 m 0,0,1 - 1288 1041 1288 1041 1246.5 952 c 128,-1,2 - 1205 863 1205 863 1119 788 c 128,-1,3 - 1033 713 1033 713 920 680 c 1,4,5 - 984 597 984 597 1032.5 429 c 128,-1,6 - 1081 261 1081 261 1081 115 c 0,7,8 - 1081 52 1081 52 1069 0 c 1,9,-1 - 901 0 l 1,10,11 - 911 41 911 41 911 106 c 0,12,13 - 911 254 911 254 855.5 419 c 128,-1,14 - 800 584 800 584 723 655 c 1,15,-1 - 500 655 l 1,16,-1 - 348 0 l 2,17,18 - 326 -96 326 -96 326 -147 c 0,19,20 - 326 -246 326 -246 401 -246 c 0,21,22 - 473 -246 473 -246 522 -195 c 1,23,-1 - 637 -256 l 1,24,25 - 538 -348 538 -348 410 -348 c 0,26,27 - 343 -348 343 -348 286.5 -328 c 128,-1,28 - 230 -308 230 -308 190 -258.5 c 128,-1,29 - 150 -209 150 -209 150 -137 c 0,30,31 - 150 -101 150 -101 158 -68 c 2,32,-1 - 506 1434 l 1,33,-1 - 926 1434 l 2,34,35 - 1005 1434 1005 1434 1068.5 1416 c 128,-1,36 - 1132 1398 1132 1398 1172 1368.5 c 128,-1,37 - 1212 1339 1212 1339 1239 1299 c 128,-1,38 - 1266 1259 1266 1259 1277 1216.5 c 128,-1,39 - 1288 1174 1288 1174 1288 1128 c 0,0,1 -799 758 m 2,40,41 - 889 758 889 758 963 816 c 128,-1,42 - 1037 874 1037 874 1075.5 958 c 128,-1,43 - 1114 1042 1114 1042 1114 1128 c 0,44,45 - 1114 1215 1114 1215 1070.5 1273 c 128,-1,46 - 1027 1331 1027 1331 932 1331 c 2,47,-1 - 655 1331 l 1,48,-1 - 522 758 l 1,49,-1 - 799 758 l 2,40,41 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni01CD -Encoding: 461 461 719 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1516 387 -VStem: 825 479 -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 3 -Refer: 372 711 N 1 0 0 1 424 377 2 -Validated: 1 -EndChar - -StartChar: uni01CE -Encoding: 462 462 720 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1044 387 -VStem: 154 158<136 521> 539 479 711 172<113 272> 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 3 -Refer: 372 711 N 1 0 0 1 137 -94 2 -Validated: 1 -EndChar - -StartChar: uni01CF -Encoding: 463 463 721 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1516 387 -VStem: 92 506 358 479 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 3 -Refer: 372 711 N 1 0 0 1 -43 377 2 -Validated: 1 -EndChar - -StartChar: uni01D0 -Encoding: 464 464 722 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1044 387 -VStem: 135 174<85 272> 272 479 430 70<93 131> -LayerCount: 2 -Fore -Refer: 112 305 N 1 0 0 1 0 0 3 -Refer: 372 711 N 1 0 0 1 -129 -94 2 -Validated: 1 -EndChar - -StartChar: uni01D1 -Encoding: 465 465 723 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1516 387 -VStem: 199 176<286 770> 911 479 1315 176<653 1162> -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 3 -Refer: 372 711 N 1 0 0 1 510 377 2 -Validated: 1 -EndChar - -StartChar: uni01D2 -Encoding: 466 466 724 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1044 387 -VStem: 147 164<157 530> 612 479 897 168<366 739> -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 3 -Refer: 372 711 N 1 0 0 1 211 -94 2 -Validated: 1 -EndChar - -StartChar: uni01D3 -Encoding: 467 467 725 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1434 387 -VStem: 176 174<211 687> 393 174<1372 1434> 801 479 -LayerCount: 2 -Fore -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 372 711 N 1 0 0 1 399 295 2 -Validated: 1 -EndChar - -StartChar: uni01D4 -Encoding: 468 468 726 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1044 387 -VStem: 154 172<137 501> 644 479 762 174<142 374> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 19 117 N 1 0 0 1 0 0 3 -Refer: 372 711 N 1 0 0 1 243 -94 2 -Validated: 1 -EndChar - -StartChar: uni01D5 -Encoding: 469 469 727 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1434 150<741 856 1069 1184> 1669 82<786 1239> -VStem: 176 174<211 687> 393 174<1372 1434> 707 184 768 489 1034 184 -LayerCount: 2 -Fore -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1243 164 2 -Refer: 96 772 N 1 0 0 1 1309 399 2 -Validated: 1 -EndChar - -StartChar: uni01D6 -Encoding: 470 470 728 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1085 150<530 645 858 973> 1386 82<602 1055> -VStem: 154 172<137 501> 496 184 584 489 762 174<142 374> 823 184 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 137 252 N 1 0 0 1 0 0 3 -Refer: 96 772 N 1 0 0 1 1124 117 2 -Validated: 1 -EndChar - -StartChar: uni01D7 -Encoding: 471 471 729 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1434 150<733 848 1061 1176> 1638 279 -VStem: 176 174<211 687> 393 174<1372 1434> 698 184 950 307 1026 184 -LayerCount: 2 -Fore -Refer: 929 58624 S 1 0 0 1 449 158 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1235 164 2 -Validated: 1 -EndChar - -StartChar: uni01D8 -Encoding: 472 472 730 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1085 150<530 645 858 973> 1354 279 -VStem: 154 172<137 501> 496 184 756 307 762 174<142 374> 823 184 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 929 58624 N 1 0 0 1 254 -127 2 -Refer: 137 252 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01D9 -Encoding: 473 473 731 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1434 150<729 844 1057 1171> 1579 387 -VStem: 176 174<211 687> 393 174<1372 1434> 694 184 803 479 1022 184 -LayerCount: 2 -Fore -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1231 164 2 -Refer: 372 711 N 1 0 0 1 401 440 2 -Validated: 1 -EndChar - -StartChar: uni01DA -Encoding: 474 474 732 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1085 150<530 645 858 973> 1257 387 -VStem: 154 172<137 501> 496 184 610 479 762 174<142 374> 823 184 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 137 252 N 1 0 0 1 0 0 3 -Refer: 372 711 N 1 0 0 1 209 119 2 -Validated: 1 -EndChar - -StartChar: uni01DB -Encoding: 475 475 733 -Width: 1306 -VWidth: 0 -Flags: W -HStem: -20 102<471 807> 1393 41<384 567 1301 1485> 1434 150<733 848 1061 1176> 1638 279 -VStem: 176 174<211 687> 393 174<1372 1434> 698 184 811 246 1026 184 -LayerCount: 2 -Fore -Refer: 930 58625 S 1 0 0 1 279 158 2 -Refer: 47 85 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1235 164 2 -Validated: 1 -EndChar - -StartChar: uni01DC -Encoding: 476 476 734 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1085 150<530 645 858 973> 1352 279 -VStem: 154 172<137 501> 496 184 625 246 762 174<142 374> 823 184 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 930 58625 N 1 0 0 1 92 -129 2 -Refer: 137 252 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni01DE -Encoding: 478 478 735 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1516 150<786 901 1114 1229> 1751 82<829 1282> -VStem: 752 184 811 489 1079 184 -LayerCount: 2 -Fore -Refer: 142 196 N 1 0 0 1 0 0 3 -Refer: 96 772 S 1 0 0 1 1352 481 2 -Validated: 1 -EndChar - -StartChar: uni01DF -Encoding: 479 479 736 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1085 150<543 657 870 985> 1382 82<604 1057> -VStem: 154 158<136 521> 508 184 586 489 711 172<113 272> 836 184 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 132 228 N 1 0 0 1 0 0 3 -Refer: 96 772 N 1 0 0 1 1126 113 2 -Validated: 1 -EndChar - -StartChar: uni048A -Encoding: 1162 1162 737 -Width: 1441 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276> 1393 41G<414 598 1303 1487> 1434 117<814 1121> -VStem: 731 78<1554 1632> 1135 76<1560 1645> -LayerCount: 2 -Fore -SplineSet -731 1552 m 0,0,1 - 731 1590 731 1590 754 1617.5 c 128,-1,2 - 777 1645 777 1645 803 1645 c 0,3,4 - 819 1645 819 1645 825 1640.5 c 128,-1,5 - 831 1636 831 1636 829 1628 c 128,-1,6 - 827 1620 827 1620 822.5 1611.5 c 128,-1,7 - 818 1603 818 1603 813.5 1592.5 c 128,-1,8 - 809 1582 809 1582 809 1575 c 0,9,10 - 809 1550 809 1550 913 1550 c 2,11,-1 - 1016 1550 l 2,12,13 - 1127 1550 1127 1550 1135 1579 c 0,14,15 - 1139 1597 1139 1597 1137 1611.5 c 128,-1,16 - 1135 1626 1135 1626 1142 1635.5 c 128,-1,17 - 1149 1645 1149 1645 1171 1645 c 0,18,19 - 1210 1645 1210 1645 1210 1597 c 0,20,21 - 1210 1524 1210 1524 1125.5 1479 c 128,-1,22 - 1041 1434 1041 1434 938 1434 c 0,23,24 - 853 1434 853 1434 792 1467.5 c 128,-1,25 - 731 1501 731 1501 731 1552 c 0,0,1 -1313 1434 m 1,26,-1 - 1487 1434 l 1,27,-1 - 1180 102 l 1,28,-1 - 1409 102 l 1,29,-1 - 1176 -254 l 1,30,-1 - 1081 -254 l 1,31,-1 - 1192 0 l 1,32,-1 - 981 0 l 1,33,-1 - 1241 1122 l 1,34,-1 - 281 61 l 1,35,-1 - 266 0 l 1,36,-1 - 92 0 l 1,37,-1 - 424 1434 l 1,38,-1 - 598 1434 l 1,39,-1 - 338 309 l 1,40,-1 - 1298 1372 l 1,41,-1 - 1313 1434 l 1,26,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048B -Encoding: 1163 1163 738 -Width: 1288 -VWidth: 0 -Flags: W -HStem: -20 123<945 1040> -20 102<380 690> 860 41G<281 455 918 1092> 1085 117<622 929> -VStem: 154 172<137 501> 539 78<1206 1284> 762 174<143 272> 942 76<1212 1296> -LayerCount: 2 -Fore -SplineSet -539 1204 m 0,0,1 - 539 1242 539 1242 561.5 1269 c 128,-1,2 - 584 1296 584 1296 610 1296 c 0,3,4 - 635 1296 635 1296 636 1285.5 c 128,-1,5 - 637 1275 637 1275 626.5 1255.5 c 128,-1,6 - 616 1236 616 1236 616 1227 c 0,7,8 - 616 1202 616 1202 721 1202 c 2,9,-1 - 823 1202 l 2,10,11 - 934 1202 934 1202 942 1231 c 0,12,13 - 944 1240 944 1240 943.5 1261 c 128,-1,14 - 943 1282 943 1282 950 1289 c 128,-1,15 - 957 1296 957 1296 979 1296 c 0,16,17 - 1018 1296 1018 1296 1018 1249 c 0,18,19 - 1018 1176 1018 1176 933 1130.5 c 128,-1,20 - 848 1085 848 1085 745 1085 c 0,21,22 - 660 1085 660 1085 599.5 1119 c 128,-1,23 - 539 1153 539 1153 539 1204 c 0,0,1 -1040 0 m 1,24,25 - 994 -20 994 -20 928 -20 c 0,26,27 - 832 -20 832 -20 784 61 c 1,28,29 - 714 23 714 23 631 1.5 c 128,-1,30 - 548 -20 548 -20 475 -20 c 0,31,32 - 309 -20 309 -20 231.5 43.5 c 128,-1,33 - 154 107 154 107 154 240 c 0,34,35 - 154 311 154 311 176 410 c 1,36,-1 - 291 901 l 1,37,-1 - 455 901 l 1,38,-1 - 346 434 l 2,39,40 - 326 350 326 350 326 281 c 0,41,42 - 326 171 326 171 379.5 126.5 c 128,-1,43 - 433 82 433 82 528 82 c 0,44,45 - 646 82 646 82 762 174 c 1,46,47 - 762 177 762 177 768 213 c 1,48,-1 - 928 901 l 1,49,-1 - 1092 901 l 1,50,-1 - 946 276 l 2,51,52 - 936 232 936 232 936 182 c 0,53,54 - 936 142 936 142 966 122 c 128,-1,55 - 996 102 996 102 1026 102 c 2,56,-1 - 1257 102 l 1,57,-1 - 1022 -254 l 1,58,-1 - 928 -254 l 1,59,-1 - 1040 0 l 1,24,25 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048C -Encoding: 1164 1164 739 -Width: 1171 -VWidth: 0 -Flags: W -HStem: 0 102<455 841> 799 102<639 994> 1085 102<356 506 705 905> 1393 41G<578 762> -VStem: 1063 172<362 725> -LayerCount: 2 -Fore -SplineSet -1235 547 m 0,0,1 - 1235 482 1235 482 1212 409 c 128,-1,2 - 1189 336 1189 336 1140.5 263 c 128,-1,3 - 1092 190 1092 190 1026 131.5 c 128,-1,4 - 960 73 960 73 866 36.5 c 128,-1,5 - 772 0 772 0 666 0 c 2,6,-1 - 256 0 l 1,7,-1 - 506 1085 l 1,8,-1 - 332 1085 l 1,9,-1 - 356 1188 l 1,10,-1 - 530 1188 l 1,11,-1 - 588 1434 l 1,12,-1 - 762 1434 l 1,13,-1 - 705 1188 l 1,14,-1 - 930 1188 l 1,15,-1 - 905 1085 l 1,16,-1 - 680 1085 l 1,17,-1 - 639 901 l 1,18,-1 - 870 901 l 2,19,20 - 1042 901 1042 901 1138.5 797 c 128,-1,21 - 1235 693 1235 693 1235 547 c 0,0,1 -721 102 m 2,22,23 - 808 102 808 102 889 173.5 c 128,-1,24 - 970 245 970 245 1016.5 351.5 c 128,-1,25 - 1063 458 1063 458 1063 561 c 0,26,27 - 1063 608 1063 608 1053 649 c 128,-1,28 - 1043 690 1043 690 1022.5 724.5 c 128,-1,29 - 1002 759 1002 759 966 779 c 128,-1,30 - 930 799 930 799 881 799 c 2,31,-1 - 614 799 l 1,32,-1 - 455 102 l 1,33,-1 - 721 102 l 2,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048D -Encoding: 1165 1165 740 -Width: 1034 -VWidth: 0 -Flags: W -HStem: -20 102<506 779> 481 102<577 862> 651 102<225 395 582 774> 860 41G<443 616> -VStem: 309 156<124 367> 891 168<201 452> -LayerCount: 2 -Fore -SplineSet -735 481 m 0,0,1 - 673 481 673 481 624 461.5 c 128,-1,2 - 575 442 575 442 546 413.5 c 128,-1,3 - 517 385 517 385 498 348.5 c 128,-1,4 - 479 312 479 312 472 281 c 128,-1,5 - 465 250 465 250 465 223 c 0,6,7 - 465 153 465 153 515 117.5 c 128,-1,8 - 565 82 565 82 645 82 c 0,9,10 - 754 82 754 82 822.5 166 c 128,-1,11 - 891 250 891 250 891 352 c 0,12,13 - 891 481 891 481 735 481 c 0,0,1 -1059 381 m 0,14,15 - 1059 329 1059 329 1046 277.5 c 128,-1,16 - 1033 226 1033 226 998.5 171 c 128,-1,17 - 964 116 964 116 912.5 74.5 c 128,-1,18 - 861 33 861 33 775.5 6.5 c 128,-1,19 - 690 -20 690 -20 582 -20 c 0,20,21 - 554 -20 554 -20 524 -15.5 c 128,-1,22 - 494 -11 494 -11 453.5 5 c 128,-1,23 - 413 21 413 21 382.5 46.5 c 128,-1,24 - 352 72 352 72 330.5 120.5 c 128,-1,25 - 309 169 309 169 309 233 c 0,26,27 - 309 284 309 284 324 348 c 2,28,-1 - 395 651 l 1,29,-1 - 201 651 l 1,30,-1 - 225 754 l 1,31,-1 - 418 754 l 1,32,-1 - 453 901 l 1,33,-1 - 616 901 l 1,34,-1 - 582 754 l 1,35,-1 - 799 754 l 1,36,-1 - 774 651 l 1,37,-1 - 559 651 l 1,38,-1 - 528 522 l 1,39,40 - 551 545 551 545 618.5 564.5 c 128,-1,41 - 686 584 686 584 735 584 c 0,42,43 - 905 584 905 584 982 534 c 128,-1,44 - 1059 484 1059 484 1059 381 c 0,14,15 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048E -Encoding: 1166 1166 741 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276> 655 102<440 797> 1331 102<573 969> -VStem: 1032 174<952 1271> -LayerCount: 2 -Fore -SplineSet -573 1331 m 1,0,-1 - 440 758 l 1,1,-1 - 717 758 l 2,2,3 - 752 758 752 758 799 772 c 1,4,-1 - 727 870 l 1,5,-1 - 858 963 l 1,6,-1 - 918 848 l 1,7,8 - 972 902 972 902 1002 977.5 c 128,-1,9 - 1032 1053 1032 1053 1032 1128 c 0,10,11 - 1032 1215 1032 1215 988.5 1273 c 128,-1,12 - 945 1331 945 1331 850 1331 c 2,13,-1 - 573 1331 l 1,0,-1 -860 686 m 1,14,15 - 769 655 769 655 664 655 c 2,16,-1 - 418 655 l 1,17,-1 - 266 0 l 1,18,-1 - 92 0 l 1,19,-1 - 424 1434 l 1,20,-1 - 844 1434 l 2,21,22 - 923 1434 923 1434 986.5 1416 c 128,-1,23 - 1050 1398 1050 1398 1090 1368.5 c 128,-1,24 - 1130 1339 1130 1339 1157 1299 c 128,-1,25 - 1184 1259 1184 1259 1195 1216.5 c 128,-1,26 - 1206 1174 1206 1174 1206 1128 c 0,27,28 - 1206 1023 1206 1023 1144 915.5 c 128,-1,29 - 1082 808 1082 808 971 739 c 1,30,-1 - 1049 588 l 1,31,-1 - 973 535 l 1,32,-1 - 860 686 l 1,14,15 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni048F -Encoding: 1167 1167 742 -Width: 1107 -VWidth: 0 -Flags: W -HStem: -16 102<505 758> 819 102<222 383 633 930> -VStem: 150 70<770 804> 993 164<367 748> -LayerCount: 2 -Fore -SplineSet -328 625 m 1,0,1 - 348 719 348 719 348 748 c 0,2,3 - 348 819 348 819 295 819 c 0,4,5 - 270 819 270 819 247 804 c 128,-1,6 - 224 789 224 789 219 770 c 1,7,-1 - 150 770 l 1,8,9 - 163 832 163 832 222 877 c 128,-1,10 - 281 922 281 922 348 922 c 0,11,12 - 451 922 451 922 496 834 c 1,13,14 - 619 926 619 926 817 926 c 0,15,16 - 975 926 975 926 1066 828 c 128,-1,17 - 1157 730 1157 730 1157 575 c 0,18,19 - 1157 451 1157 451 1101 336 c 128,-1,20 - 1045 221 1045 221 948 135 c 1,21,-1 - 1032 -31 l 1,22,-1 - 956 -84 l 1,23,-1 - 850 61 l 1,24,25 - 718 -16 718 -16 580 -16 c 0,26,27 - 440 -16 440 -16 362 59 c 1,28,-1 - 254 -410 l 1,29,-1 - 90 -410 l 1,30,-1 - 328 625 l 1,0,1 -786 150 m 1,31,-1 - 711 252 l 1,32,-1 - 842 344 l 1,33,-1 - 887 254 l 1,34,35 - 993 403 993 403 993 569 c 0,36,37 - 993 677 993 677 949.5 750 c 128,-1,38 - 906 823 906 823 825 823 c 0,39,40 - 669 823 669 823 585 741.5 c 128,-1,41 - 501 660 501 660 465 504 c 0,42,43 - 440 399 440 399 440 322 c 0,44,45 - 440 217 440 217 486 151.5 c 128,-1,46 - 532 86 532 86 635 86 c 0,47,48 - 702 86 702 86 786 150 c 1,31,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0492 -Encoding: 1170 1170 743 -Width: 1136 -VWidth: 0 -Flags: W -HStem: 0 43G<272 456> 799 102<291 457 655 840> 1331 102<754 1407> -LayerCount: 2 -Fore -SplineSet -266 799 m 1,0,-1 - 291 901 l 1,1,-1 - 481 901 l 1,2,-1 - 604 1434 l 1,3,-1 - 1432 1434 l 1,4,-1 - 1407 1331 l 1,5,-1 - 754 1331 l 1,6,-1 - 655 901 l 1,7,-1 - 864 901 l 1,8,-1 - 840 799 l 1,9,-1 - 631 799 l 1,10,-1 - 446 0 l 1,11,-1 - 272 0 l 1,12,-1 - 457 799 l 1,13,-1 - 266 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0493 -Encoding: 1171 1171 744 -Width: 792 -VWidth: 0 -Flags: W -HStem: -20 102<371 621> 393 102<190 317 635 739> 819 102<382 631> -VStem: 186 174<96 264> 641 174<659 805> -LayerCount: 2 -Fore -SplineSet -360 164 m 0,0,1 - 360 120 360 120 393.5 101 c 128,-1,2 - 427 82 427 82 496 82 c 0,3,4 - 550 82 550 82 624 127.5 c 128,-1,5 - 698 173 698 173 723 221 c 1,6,-1 - 788 205 l 1,7,8 - 675 -20 675 -20 444 -20 c 0,9,10 - 310 -20 310 -20 248 27 c 128,-1,11 - 186 74 186 74 186 156 c 0,12,13 - 186 255 186 255 317 393 c 1,14,-1 - 166 393 l 1,15,-1 - 190 496 l 1,16,-1 - 424 496 l 1,17,18 - 436 507 436 507 460 528.5 c 128,-1,19 - 484 550 484 550 496.5 561 c 128,-1,20 - 509 572 509 572 529 590.5 c 128,-1,21 - 549 609 549 609 560.5 620.5 c 128,-1,22 - 572 632 572 632 587 647.5 c 128,-1,23 - 602 663 602 663 610 673.5 c 128,-1,24 - 618 684 618 684 626 696.5 c 128,-1,25 - 634 709 634 709 637.5 718.5 c 128,-1,26 - 641 728 641 728 641 737 c 0,27,28 - 641 819 641 819 506 819 c 0,29,30 - 453 819 453 819 378 772.5 c 128,-1,31 - 303 726 303 726 276 678 c 1,32,-1 - 211 694 l 1,33,34 - 324 922 324 922 557 922 c 0,35,36 - 691 922 691 922 753 874.5 c 128,-1,37 - 815 827 815 827 815 745 c 0,38,39 - 815 696 815 696 768.5 636.5 c 128,-1,40 - 722 577 722 577 635 496 c 1,41,-1 - 764 496 l 1,42,-1 - 739 393 l 1,43,-1 - 524 393 l 1,44,45 - 444 317 444 317 402 263 c 128,-1,46 - 360 209 360 209 360 164 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0494 -Encoding: 1172 1172 745 -Width: 1167 -VWidth: 0 -Flags: W -HStem: -217 102<571 776> -59 41G<488 552> 0 43G<174 358> 819 102<603 936> 1331 102<655 1309> -VStem: 983 176<375 771> -LayerCount: 2 -Fore -SplineSet -514 723 m 1,0,-1 - 348 0 l 1,1,-1 - 174 0 l 1,2,-1 - 506 1434 l 1,3,-1 - 1333 1434 l 1,4,-1 - 1309 1331 l 1,5,-1 - 655 1331 l 1,6,-1 - 549 870 l 1,7,8 - 662 922 662 922 786 922 c 0,9,10 - 967 922 967 922 1063 848 c 128,-1,11 - 1159 774 1159 774 1159 627 c 0,12,13 - 1159 565 1159 565 1141 492 c 1,14,-1 - 1096 291 l 2,15,16 - 1062 143 1062 143 1010.5 39.5 c 128,-1,17 - 959 -64 959 -64 896 -118 c 128,-1,18 - 833 -172 833 -172 769.5 -194.5 c 128,-1,19 - 706 -217 706 -217 631 -217 c 0,20,21 - 573 -217 573 -217 509 -191.5 c 128,-1,22 - 445 -166 445 -166 410 -125 c 1,23,-1 - 537 -18 l 1,24,25 - 561 -68 561 -68 596 -91.5 c 128,-1,26 - 631 -115 631 -115 684 -115 c 0,27,28 - 750 -115 750 -115 809 -29.5 c 128,-1,29 - 868 56 868 56 911 246 c 1,30,-1 - 963 467 l 1,31,32 - 983 561 983 561 983 631 c 0,33,34 - 983 736 983 736 934 777.5 c 128,-1,35 - 885 819 885 819 793 819 c 0,36,37 - 724 819 724 819 650 793.5 c 128,-1,38 - 576 768 576 768 514 723 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0495 -Encoding: 1173 1173 746 -Width: 1001 -VWidth: 0 -Flags: W -HStem: -236 102<464 640> 0 43G<123 296> 487 102<454 739> 799 102<471 899> -VStem: 762 162<88 462> -LayerCount: 2 -Fore -SplineSet -565 -133 m 0,0,1 - 614 -133 614 -133 654.5 -69.5 c 128,-1,2 - 695 -6 695 -6 717 80.5 c 128,-1,3 - 739 167 739 167 750.5 240.5 c 128,-1,4 - 762 314 762 314 762 350 c 0,5,6 - 762 427 762 427 727.5 457 c 128,-1,7 - 693 487 693 487 618 487 c 0,8,9 - 553 487 553 487 498.5 464 c 128,-1,10 - 444 441 444 441 377 393 c 1,11,-1 - 287 0 l 1,12,-1 - 123 0 l 1,13,-1 - 332 901 l 1,14,-1 - 924 901 l 1,15,-1 - 899 799 l 1,16,-1 - 471 799 l 1,17,-1 - 412 541 l 1,18,19 - 470 567 470 567 513 578.5 c 128,-1,20 - 556 590 556 590 610 590 c 0,21,22 - 774 590 774 590 849 528.5 c 128,-1,23 - 924 467 924 467 924 338 c 0,24,25 - 924 306 924 306 919.5 264.5 c 128,-1,26 - 915 223 915 223 902 167 c 128,-1,27 - 889 111 889 111 869.5 57 c 128,-1,28 - 850 3 850 3 817 -51 c 128,-1,29 - 784 -105 784 -105 742.5 -145.5 c 128,-1,30 - 701 -186 701 -186 641 -211 c 128,-1,31 - 581 -236 581 -236 510 -236 c 0,32,33 - 441 -236 441 -236 386.5 -211.5 c 128,-1,34 - 332 -187 332 -187 311 -143 c 1,35,-1 - 438 -37 l 1,36,37 - 457 -92 457 -92 484 -112.5 c 128,-1,38 - 511 -133 511 -133 565 -133 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0496 -Encoding: 1174 1174 747 -Width: 1525 -VWidth: 0 -Flags: W -HStem: 0 43G<37 216 672 855> 1331 102<389 439 1675 1767> -VStem: 37 174<0 68> 1307 176<0 178> 1411 117<-320 -186> -LayerCount: 2 -Fore -SplineSet -999 666 m 1,0,-1 - 846 0 l 1,1,-1 - 672 0 l 1,2,-1 - 825 666 l 1,3,4 - 761 642 761 642 653 539 c 128,-1,5 - 545 436 545 436 451 321.5 c 128,-1,6 - 357 207 357 207 286 111.5 c 128,-1,7 - 215 16 215 16 211 0 c 1,8,-1 - 37 0 l 1,9,10 - 43 27 43 27 106.5 118 c 128,-1,11 - 170 209 170 209 262 320 c 128,-1,12 - 354 431 354 431 476 544.5 c 128,-1,13 - 598 658 598 658 702 717 c 1,14,15 - 644 761 644 761 603 841.5 c 128,-1,16 - 562 922 562 922 540 1003 c 128,-1,17 - 518 1084 518 1084 496.5 1160 c 128,-1,18 - 475 1236 475 1236 443.5 1283.5 c 128,-1,19 - 412 1331 412 1331 365 1331 c 1,20,-1 - 389 1434 l 1,21,22 - 456 1434 456 1434 510.5 1409.5 c 128,-1,23 - 565 1385 565 1385 599.5 1344.5 c 128,-1,24 - 634 1304 634 1304 662 1251 c 128,-1,25 - 690 1198 690 1198 707 1141.5 c 128,-1,26 - 724 1085 724 1085 741 1027 c 128,-1,27 - 758 969 758 969 771.5 920.5 c 128,-1,28 - 785 872 785 872 806 833 c 128,-1,29 - 827 794 827 794 852 778 c 1,30,-1 - 1004 1434 l 1,31,-1 - 1178 1434 l 1,32,-1 - 1026 778 l 1,33,34 - 1063 797 1063 797 1107.5 844.5 c 128,-1,35 - 1152 892 1152 892 1195 950.5 c 128,-1,36 - 1238 1009 1238 1009 1287.5 1076.5 c 128,-1,37 - 1337 1144 1337 1144 1393 1206.5 c 128,-1,38 - 1449 1269 1449 1269 1508.5 1320.5 c 128,-1,39 - 1568 1372 1568 1372 1641.5 1403 c 128,-1,40 - 1715 1434 1715 1434 1792 1434 c 1,41,-1 - 1767 1331 l 1,42,43 - 1732 1331 1732 1331 1694.5 1305.5 c 128,-1,44 - 1657 1280 1657 1280 1619.5 1236.5 c 128,-1,45 - 1582 1193 1582 1193 1542 1139 c 128,-1,46 - 1502 1085 1502 1085 1456.5 1024 c 128,-1,47 - 1411 963 1411 963 1365 907 c 128,-1,48 - 1319 851 1319 851 1261.5 799 c 128,-1,49 - 1204 747 1204 747 1147 715 c 1,50,51 - 1219 659 1219 659 1285.5 553.5 c 128,-1,52 - 1352 448 1352 448 1393 341.5 c 128,-1,53 - 1434 235 1434 235 1458.5 145.5 c 128,-1,54 - 1483 56 1483 56 1483 14 c 0,55,56 - 1483 11 1483 11 1482 6.5 c 128,-1,57 - 1481 2 1481 2 1481 0 c 2,58,-1 - 1438 -125 l 1,59,60 - 1483 -141 1483 -141 1505.5 -174 c 128,-1,61 - 1528 -207 1528 -207 1528 -238 c 0,62,63 - 1528 -287 1528 -287 1474 -329 c 128,-1,64 - 1420 -371 1420 -371 1348 -397 c 1,65,-1 - 1333 -373 l 1,66,67 - 1363 -353 1363 -353 1387 -320.5 c 128,-1,68 - 1411 -288 1411 -288 1411 -254 c 0,69,70 - 1411 -194 1411 -194 1319 -164 c 1,71,-1 - 1384 0 l 1,72,-1 - 1307 0 l 1,73,-1 - 1307 4 l 2,74,75 - 1307 32 1307 32 1280 127 c 128,-1,76 - 1253 222 1253 222 1212 334 c 128,-1,77 - 1171 446 1171 446 1112.5 544 c 128,-1,78 - 1054 642 1054 642 1001 666 c 1,79,-1 - 999 666 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0497 -Encoding: 1175 1175 748 -Width: 1286 -VWidth: 0 -Flags: W -HStem: -20 102<42 152> 0 43G<561 735> 799 102<279 343 1286 1401> -VStem: -33 74<85 131> 1034 174<0 183> 1137 117<-320 -186> -LayerCount: 2 -Fore -SplineSet -813 379 m 1,0,-1 - 725 0 l 1,1,-1 - 561 0 l 1,2,-1 - 649 379 l 1,3,4 - 623 381 623 381 588 389 c 1,5,6 - 520 339 520 339 442.5 257 c 128,-1,7 - 365 175 365 175 315 102 c 1,8,9 - 274 45 274 45 217 12.5 c 128,-1,10 - 160 -20 160 -20 100 -20 c 0,11,12 - 41 -20 41 -20 4 13 c 128,-1,13 - -33 46 -33 46 -33 98 c 0,14,15 - -33 111 -33 111 -29 131 c 1,16,-1 - 41 131 l 1,17,-1 - 41 123 l 2,18,19 - 41 106 41 106 56.5 94 c 128,-1,20 - 72 82 72 82 94 82 c 0,21,22 - 109 82 109 82 126 97.5 c 128,-1,23 - 143 113 143 113 170.5 146.5 c 128,-1,24 - 198 180 198 180 233.5 221.5 c 128,-1,25 - 269 263 269 263 335 326.5 c 128,-1,26 - 401 390 401 390 481 453 c 1,27,28 - 451 485 451 485 432 534.5 c 128,-1,29 - 413 584 413 584 403.5 627.5 c 128,-1,30 - 394 671 394 671 380 711.5 c 128,-1,31 - 366 752 366 752 335.5 775.5 c 128,-1,32 - 305 799 305 799 254 799 c 1,33,-1 - 279 901 l 1,34,35 - 355 901 355 901 411 881.5 c 128,-1,36 - 467 862 467 862 498 830 c 128,-1,37 - 529 798 529 798 549.5 758.5 c 128,-1,38 - 570 719 570 719 581.5 676.5 c 128,-1,39 - 593 634 593 634 603.5 597.5 c 128,-1,40 - 614 561 614 561 631 531 c 128,-1,41 - 648 501 648 501 674 489 c 1,42,-1 - 770 901 l 1,43,-1 - 934 901 l 1,44,-1 - 838 489 l 1,45,46 - 870 501 870 501 901.5 531 c 128,-1,47 - 933 561 933 561 960.5 597.5 c 128,-1,48 - 988 634 988 634 1019 676.5 c 128,-1,49 - 1050 719 1050 719 1088.5 758.5 c 128,-1,50 - 1127 798 1127 798 1173 830 c 128,-1,51 - 1219 862 1219 862 1284 881.5 c 128,-1,52 - 1349 901 1349 901 1425 901 c 1,53,-1 - 1401 799 l 1,54,55 - 1350 799 1350 799 1308.5 775.5 c 128,-1,56 - 1267 752 1267 752 1234.5 711.5 c 128,-1,57 - 1202 671 1202 671 1172 627.5 c 128,-1,58 - 1142 584 1142 584 1100.5 534.5 c 128,-1,59 - 1059 485 1059 485 1014 453 c 1,60,61 - 1096 351 1096 351 1152 216 c 128,-1,62 - 1208 81 1208 81 1208 16 c 0,63,64 - 1208 13 1208 13 1207 7.5 c 128,-1,65 - 1206 2 1206 2 1206 0 c 2,66,-1 - 1163 -125 l 1,67,68 - 1208 -141 1208 -141 1230.5 -174 c 128,-1,69 - 1253 -207 1253 -207 1253 -238 c 0,70,71 - 1253 -287 1253 -287 1199 -329 c 128,-1,72 - 1145 -371 1145 -371 1073 -397 c 1,73,-1 - 1059 -373 l 1,74,75 - 1089 -353 1089 -353 1113 -320.5 c 128,-1,76 - 1137 -288 1137 -288 1137 -254 c 0,77,78 - 1137 -194 1137 -194 1044 -164 c 1,79,-1 - 1110 0 l 1,80,-1 - 1032 0 l 1,81,82 - 1034 8 1034 8 1034 27 c 0,83,84 - 1034 96 1034 96 987 210.5 c 128,-1,85 - 940 325 940 325 881 389 c 1,86,87 - 834 381 834 381 813 379 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0498 -Encoding: 1176 1176 749 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<329 457> 799 102<551 798> 1352 102<618 948> -VStem: 492 117<-320 -186> 893 176<353 699> 991 174<1050 1310> -LayerCount: 2 -Fore -SplineSet -457 -20 m 1,0,1 - 301 -20 301 -20 213.5 52 c 128,-1,2 - 126 124 126 124 106 244 c 1,3,-1 - 268 285 l 1,4,-1 - 268 279 l 2,5,6 - 268 174 268 174 325 128 c 128,-1,7 - 382 82 382 82 512 82 c 0,8,9 - 606 82 606 82 696 151 c 128,-1,10 - 786 220 786 220 839.5 323 c 128,-1,11 - 893 426 893 426 893 526 c 0,12,13 - 893 576 893 576 881 621.5 c 128,-1,14 - 869 667 869 667 844 708 c 128,-1,15 - 819 749 819 749 771 774 c 128,-1,16 - 723 799 723 799 659 799 c 2,17,-1 - 526 799 l 1,18,-1 - 551 901 l 1,19,-1 - 623 901 l 2,20,21 - 704 901 704 901 769.5 920.5 c 128,-1,22 - 835 940 835 940 875.5 970.5 c 128,-1,23 - 916 1001 916 1001 943 1041 c 128,-1,24 - 970 1081 970 1081 980.5 1119.5 c 128,-1,25 - 991 1158 991 1158 991 1196 c 0,26,27 - 991 1267 991 1267 948 1309.5 c 128,-1,28 - 905 1352 905 1352 825 1352 c 0,29,30 - 705 1352 705 1352 631 1317 c 128,-1,31 - 557 1282 557 1282 526 1198 c 1,32,-1 - 385 1239 l 1,33,34 - 464 1342 464 1342 585 1398 c 128,-1,35 - 706 1454 706 1454 819 1454 c 0,36,37 - 988 1454 988 1454 1076.5 1382 c 128,-1,38 - 1165 1310 1165 1310 1165 1200 c 0,39,40 - 1165 1154 1165 1154 1150.5 1107.5 c 128,-1,41 - 1136 1061 1136 1061 1105.5 1013.5 c 128,-1,42 - 1075 966 1075 966 1020 923.5 c 128,-1,43 - 965 881 965 881 891 852 c 1,44,45 - 985 802 985 802 1027 717.5 c 128,-1,46 - 1069 633 1069 633 1069 537 c 0,47,48 - 1069 453 1069 453 1031 364 c 128,-1,49 - 993 275 993 275 928 197.5 c 128,-1,50 - 863 120 863 120 765 63 c 128,-1,51 - 667 6 667 6 557 -12 c 1,52,-1 - 518 -125 l 1,53,54 - 563 -141 563 -141 585.5 -174 c 128,-1,55 - 608 -207 608 -207 608 -238 c 0,56,57 - 608 -287 608 -287 554 -329 c 128,-1,58 - 500 -371 500 -371 428 -397 c 1,59,-1 - 414 -373 l 1,60,61 - 444 -353 444 -353 468 -320.5 c 128,-1,62 - 492 -288 492 -288 492 -254 c 0,63,64 - 492 -194 492 -194 399 -164 c 1,65,-1 - 457 -20 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0499 -Encoding: 1177 1177 750 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<292 393> 451 102<422 660> 819 102<442 740> -VStem: 102 127<138 181> 428 117<-320 -186> 713 166<178 402> 762 166<625 797> -LayerCount: 2 -Fore -SplineSet -393 -20 m 1,0,1 - 276 -17 276 -17 201 42.5 c 128,-1,2 - 126 102 126 102 102 178 c 1,3,-1 - 229 203 l 1,4,5 - 241 150 241 150 305.5 116 c 128,-1,6 - 370 82 370 82 451 82 c 0,7,8 - 515 82 515 82 567 103 c 128,-1,9 - 619 124 619 124 650 157 c 128,-1,10 - 681 190 681 190 697 228.5 c 128,-1,11 - 713 267 713 267 713 305 c 0,12,13 - 713 451 713 451 471 451 c 2,14,-1 - 399 451 l 1,15,-1 - 422 553 l 1,16,-1 - 479 553 l 2,17,18 - 557 553 557 553 615.5 569.5 c 128,-1,19 - 674 586 674 586 704 612 c 128,-1,20 - 734 638 734 638 748 665.5 c 128,-1,21 - 762 693 762 693 762 721 c 0,22,23 - 762 766 762 766 725 792.5 c 128,-1,24 - 688 819 688 819 621 819 c 0,25,26 - 530 819 530 819 468.5 791 c 128,-1,27 - 407 763 407 763 385 711 c 1,28,-1 - 270 735 l 1,29,30 - 315 814 315 814 404.5 868 c 128,-1,31 - 494 922 494 922 621 922 c 0,32,33 - 778 922 778 922 853 874.5 c 128,-1,34 - 928 827 928 827 928 745 c 0,35,36 - 928 672 928 672 879 611.5 c 128,-1,37 - 830 551 830 551 743 512 c 1,38,39 - 879 451 879 451 879 319 c 0,40,41 - 879 279 879 279 868.5 239 c 128,-1,42 - 858 199 858 199 830.5 155.5 c 128,-1,43 - 803 112 803 112 760.5 78 c 128,-1,44 - 718 44 718 44 649 18 c 128,-1,45 - 580 -8 580 -8 492 -16 c 1,46,-1 - 455 -125 l 1,47,48 - 500 -141 500 -141 522.5 -174 c 128,-1,49 - 545 -207 545 -207 545 -238 c 0,50,51 - 545 -287 545 -287 491 -329 c 128,-1,52 - 437 -371 437 -371 365 -397 c 1,53,-1 - 350 -373 l 1,54,55 - 380 -353 380 -353 404 -320.5 c 128,-1,56 - 428 -288 428 -288 428 -254 c 0,57,58 - 428 -194 428 -194 336 -164 c 1,59,-1 - 393 -20 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049A -Encoding: 1178 1178 751 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276> 1393 41G<414 598 1207 1458> -VStem: 1040 117<-320 -186> -LayerCount: 2 -Fore -SplineSet -1018 10 m 1,0,1 - 946 26 946 26 893.5 70 c 128,-1,2 - 841 114 841 114 813 172.5 c 128,-1,3 - 785 231 785 231 766 298 c 128,-1,4 - 747 365 747 365 736.5 431.5 c 128,-1,5 - 726 498 726 498 715 554.5 c 128,-1,6 - 704 611 704 611 685 652 c 128,-1,7 - 666 693 666 693 637 705 c 1,8,-1 - 375 469 l 1,9,-1 - 266 0 l 1,10,-1 - 92 0 l 1,11,-1 - 424 1434 l 1,12,-1 - 598 1434 l 1,13,-1 - 426 696 l 1,14,-1 - 1253 1434 l 1,15,-1 - 1458 1434 l 1,16,-1 - 750 805 l 1,17,18 - 802 780 802 780 837.5 728.5 c 128,-1,19 - 873 677 873 677 891.5 615 c 128,-1,20 - 910 553 910 553 924 483.5 c 128,-1,21 - 938 414 938 414 951.5 350 c 128,-1,22 - 965 286 965 286 985.5 234 c 128,-1,23 - 1006 182 1006 182 1044 150.5 c 128,-1,24 - 1082 119 1082 119 1137 119 c 1,25,-1 - 1067 -125 l 1,26,27 - 1112 -141 1112 -141 1134.5 -174 c 128,-1,28 - 1157 -207 1157 -207 1157 -238 c 0,29,30 - 1157 -287 1157 -287 1103 -329 c 128,-1,31 - 1049 -371 1049 -371 977 -397 c 1,32,-1 - 963 -373 l 1,33,34 - 993 -353 993 -353 1016.5 -320.5 c 128,-1,35 - 1040 -288 1040 -288 1040 -254 c 0,36,37 - 1040 -194 1040 -194 948 -164 c 1,38,-1 - 1018 10 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049B -Encoding: 1179 1179 752 -Width: 917 -VWidth: 0 -Flags: W -HStem: 0 43G<82 255> 819 102<121 297> 860 41G<785 1020> -VStem: 49 70<770 808> 240 174<536 818> 778 117<-320 -186> -LayerCount: 2 -Fore -SplineSet -227 625 m 2,0,1 - 240 682 240 682 240 719 c 0,2,3 - 240 764 240 764 228 791.5 c 128,-1,4 - 216 819 216 819 195 819 c 0,5,6 - 167 819 167 819 145.5 804.5 c 128,-1,7 - 124 790 124 790 119 770 c 1,8,-1 - 49 770 l 1,9,10 - 63 833 63 833 121 877.5 c 128,-1,11 - 179 922 179 922 248 922 c 0,12,13 - 321 922 321 922 367.5 872 c 128,-1,14 - 414 822 414 822 414 745 c 0,15,16 - 414 728 414 728 406 688 c 1,17,-1 - 356 479 l 1,18,-1 - 831 901 l 1,19,-1 - 1020 901 l 1,20,-1 - 569 502 l 1,21,-1 - 848 0 l 1,22,-1 - 805 -125 l 1,23,24 - 850 -141 850 -141 872.5 -174 c 128,-1,25 - 895 -207 895 -207 895 -238 c 0,26,27 - 895 -287 895 -287 841 -329 c 128,-1,28 - 787 -371 787 -371 715 -397 c 1,29,-1 - 700 -373 l 1,30,31 - 730 -353 730 -353 754 -320.5 c 128,-1,32 - 778 -288 778 -288 778 -254 c 0,33,34 - 778 -194 778 -194 686 -164 c 1,35,-1 - 752 0 l 1,36,-1 - 672 0 l 1,37,-1 - 451 395 l 1,38,-1 - 309 270 l 1,39,-1 - 246 0 l 1,40,-1 - 82 0 l 1,41,-1 - 227 625 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049C -Encoding: 1180 1180 753 -Width: 1357 -VWidth: 0 -Flags: W -HStem: 0 119<1230 1311> 717 119<541 629> 1393 41G<496 680 1229 1659> -LayerCount: 2 -Fore -SplineSet -348 0 m 1,0,-1 - 174 0 l 1,1,-1 - 506 1434 l 1,2,-1 - 680 1434 l 1,3,-1 - 541 836 l 1,4,-1 - 655 836 l 1,5,-1 - 713 1085 l 1,6,-1 - 827 1085 l 1,7,-1 - 776 856 l 1,8,9 - 828 884 828 884 936.5 977 c 128,-1,10 - 1045 1070 1045 1070 1384 1372 c 0,11,12 - 1430 1412 1430 1412 1454 1434 c 1,13,-1 - 1659 1434 l 1,14,-1 - 952 805 l 1,15,16 - 1004 780 1004 780 1039.5 728.5 c 128,-1,17 - 1075 677 1075 677 1093 615 c 128,-1,18 - 1111 553 1111 553 1124.5 483.5 c 128,-1,19 - 1138 414 1138 414 1151.5 350 c 128,-1,20 - 1165 286 1165 286 1185 234 c 128,-1,21 - 1205 182 1205 182 1243 150.5 c 128,-1,22 - 1281 119 1281 119 1337 119 c 1,23,-1 - 1311 0 l 1,24,25 - 1227 0 1227 0 1163.5 31 c 128,-1,26 - 1100 62 1100 62 1063.5 112 c 128,-1,27 - 1027 162 1027 162 999 226.5 c 128,-1,28 - 971 291 971 291 957 358.5 c 128,-1,29 - 943 426 943 426 927 490.5 c 128,-1,30 - 911 555 911 555 895.5 605 c 128,-1,31 - 880 655 880 655 851.5 686 c 128,-1,32 - 823 717 823 717 782 717 c 2,33,-1 - 743 717 l 1,34,-1 - 682 455 l 1,35,-1 - 567 455 l 1,36,-1 - 629 717 l 1,37,-1 - 514 717 l 1,38,-1 - 348 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049D -Encoding: 1181 1181 754 -Width: 1120 -VWidth: 0 -Flags: W -HStem: 0 43G<147 321 853 1053> 451 102<438 489> 860 41G<347 520 991 1225> -LayerCount: 2 -Fore -SplineSet -311 0 m 1,0,-1 - 147 0 l 1,1,-1 - 356 901 l 1,2,-1 - 520 901 l 1,3,-1 - 438 553 l 1,4,-1 - 512 553 l 1,5,-1 - 573 815 l 1,6,-1 - 688 815 l 1,7,-1 - 627 553 l 1,8,-1 - 653 553 l 1,9,-1 - 1036 901 l 1,10,-1 - 1225 901 l 1,11,-1 - 776 502 l 1,12,-1 - 1053 0 l 1,13,-1 - 877 0 l 1,14,-1 - 623 451 l 1,15,-1 - 604 451 l 1,16,-1 - 543 184 l 1,17,-1 - 428 184 l 1,18,-1 - 489 451 l 1,19,-1 - 416 451 l 1,20,-1 - 311 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049E -Encoding: 1182 1182 755 -Width: 1316 -VWidth: 0 -Flags: W -HStem: 0 119<1107 1188> 1085 102<274 422 618 823> 1393 41G<492 676 1285 1536> -LayerCount: 2 -Fore -SplineSet -250 1085 m 1,0,-1 - 274 1188 l 1,1,-1 - 444 1188 l 1,2,-1 - 502 1434 l 1,3,-1 - 676 1434 l 1,4,-1 - 618 1188 l 1,5,-1 - 848 1188 l 1,6,-1 - 823 1085 l 1,7,-1 - 594 1085 l 1,8,-1 - 504 696 l 1,9,-1 - 1331 1434 l 1,10,-1 - 1536 1434 l 1,11,-1 - 827 805 l 1,12,13 - 879 780 879 780 914.5 728.5 c 128,-1,14 - 950 677 950 677 968.5 615 c 128,-1,15 - 987 553 987 553 1001 483.5 c 128,-1,16 - 1015 414 1015 414 1028.5 350 c 128,-1,17 - 1042 286 1042 286 1062.5 234 c 128,-1,18 - 1083 182 1083 182 1121 150.5 c 128,-1,19 - 1159 119 1159 119 1214 119 c 1,20,-1 - 1188 0 l 1,21,22 - 1093 0 1093 0 1024 35.5 c 128,-1,23 - 955 71 955 71 917.5 128.5 c 128,-1,24 - 880 186 880 186 856.5 256.5 c 128,-1,25 - 833 327 833 327 821 400 c 128,-1,26 - 809 473 809 473 797.5 536 c 128,-1,27 - 786 599 786 599 766.5 645.5 c 128,-1,28 - 747 692 747 692 715 705 c 1,29,-1 - 453 469 l 1,30,-1 - 344 0 l 1,31,-1 - 170 0 l 1,32,-1 - 422 1085 l 1,33,-1 - 250 1085 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni049F -Encoding: 1183 1183 756 -Width: 1099 -VWidth: 0 -Flags: W -HStem: 0 43G<262 435 829 1028> 860 41G<966 1200> 983 102<299 489 676 848> 1270 102<403 580> -VStem: 332 70<1221 1259> 522 174<1087 1268> -LayerCount: 2 -Fore -SplineSet -872 1085 m 1,0,-1 - 848 983 l 1,1,-1 - 653 983 l 1,2,-1 - 537 477 l 1,3,-1 - 1012 901 l 1,4,-1 - 1200 901 l 1,5,-1 - 750 502 l 1,6,-1 - 1028 0 l 1,7,-1 - 852 0 l 1,8,-1 - 631 395 l 1,9,-1 - 487 268 l 1,10,-1 - 426 0 l 1,11,-1 - 262 0 l 1,12,-1 - 489 983 l 1,13,-1 - 274 983 l 1,14,-1 - 299 1085 l 1,15,-1 - 512 1085 l 1,16,17 - 522 1137 522 1137 522 1169 c 0,18,19 - 522 1214 522 1214 510 1242 c 128,-1,20 - 498 1270 498 1270 477 1270 c 0,21,22 - 449 1270 449 1270 427.5 1255.5 c 128,-1,23 - 406 1241 406 1241 401 1221 c 1,24,-1 - 332 1221 l 1,25,26 - 345 1284 345 1284 403 1328 c 128,-1,27 - 461 1372 461 1372 530 1372 c 0,28,29 - 603 1372 603 1372 649.5 1322.5 c 128,-1,30 - 696 1273 696 1273 696 1196 c 0,31,32 - 696 1179 696 1179 688 1139 c 2,33,-1 - 676 1085 l 1,34,-1 - 872 1085 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A0 -Encoding: 1184 1184 757 -Width: 1546 -VWidth: 0 -Flags: W -HStem: 0 119<1419 1499> 1331 102<352 788> -LayerCount: 2 -Fore -SplineSet -1526 119 m 1,0,-1 - 1499 0 l 1,1,2 - 1404 0 1404 0 1335 35.5 c 128,-1,3 - 1266 71 1266 71 1228.5 129 c 128,-1,4 - 1191 187 1191 187 1167.5 257.5 c 128,-1,5 - 1144 328 1144 328 1132 401.5 c 128,-1,6 - 1120 475 1120 475 1108.5 537.5 c 128,-1,7 - 1097 600 1097 600 1077.5 646.5 c 128,-1,8 - 1058 693 1058 693 1026 705 c 1,9,-1 - 764 469 l 1,10,-1 - 655 0 l 1,11,-1 - 481 0 l 1,12,-1 - 788 1331 l 1,13,-1 - 328 1331 l 1,14,-1 - 352 1434 l 1,15,-1 - 987 1434 l 1,16,-1 - 815 696 l 1,17,-1 - 1642 1434 l 1,18,-1 - 1847 1434 l 1,19,-1 - 1141 805 l 1,20,21 - 1193 780 1193 780 1228.5 728.5 c 128,-1,22 - 1264 677 1264 677 1282 615 c 128,-1,23 - 1300 553 1300 553 1313.5 483.5 c 128,-1,24 - 1327 414 1327 414 1340.5 350 c 128,-1,25 - 1354 286 1354 286 1374 234 c 128,-1,26 - 1394 182 1394 182 1432 150.5 c 128,-1,27 - 1470 119 1470 119 1526 119 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A1 -Encoding: 1185 1185 758 -Width: 1163 -VWidth: 0 -Flags: W -HStem: 0 43G<330 503 897 1096> 799 102<240 514> -LayerCount: 2 -Fore -SplineSet -555 268 m 1,0,-1 - 494 0 l 1,1,-1 - 330 0 l 1,2,-1 - 514 799 l 1,3,-1 - 215 799 l 1,4,-1 - 240 901 l 1,5,-1 - 702 901 l 1,6,-1 - 604 477 l 1,7,-1 - 1079 901 l 1,8,-1 - 1268 901 l 1,9,-1 - 819 502 l 1,10,-1 - 1096 0 l 1,11,-1 - 920 0 l 1,12,-1 - 698 395 l 1,13,-1 - 555 268 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A2 -Encoding: 1186 1186 759 -Width: 1189 -VWidth: 0 -Flags: W -HStem: 0 43G<82 265> 717 102<444 1081> 1393 41G<404 588 1238 1421> -VStem: 1020 117<-320 -186> -LayerCount: 2 -Fore -SplineSet -588 1434 m 1,0,-1 - 444 819 l 1,1,-1 - 1104 819 l 1,2,-1 - 1247 1434 l 1,3,-1 - 1421 1434 l 1,4,-1 - 1090 0 l 5,5,-1 - 1047 -125 l 5,6,7 - 1092 -141 1092 -141 1114.5 -174 c 132,-1,8 - 1137 -207 1137 -207 1137 -238 c 4,9,10 - 1137 -287 1137 -287 1082.5 -329 c 132,-1,11 - 1028 -371 1028 -371 956 -397 c 5,12,-1 - 942 -373 l 5,13,14 - 972 -353 972 -353 996 -320.5 c 132,-1,15 - 1020 -288 1020 -288 1020 -254 c 4,16,17 - 1020 -194 1020 -194 928 -164 c 5,18,-1 - 993 0 l 5,19,-1 - 915 0 l 5,20,-1 - 1081 717 l 1,21,-1 - 422 717 l 1,22,-1 - 256 0 l 1,23,-1 - 82 0 l 1,24,-1 - 414 1434 l 1,25,-1 - 588 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A3 -Encoding: 1187 1187 760 -Width: 1130 -VWidth: 0 -Flags: W -HStem: 0 43G<92 266> 440 102<381 842> 860 41G<292 465 939 1112> -VStem: 782 174<84 268> 934 117<-320 -186> 1077 70<93 131> -LayerCount: 2 -Fore -SplineSet -997 -14 m 1,0,-1 - 961 -125 l 1,1,2 - 1006 -141 1006 -141 1028.5 -174 c 128,-1,3 - 1051 -207 1051 -207 1051 -238 c 0,4,5 - 1051 -287 1051 -287 996.5 -329 c 128,-1,6 - 942 -371 942 -371 870 -397 c 1,7,-1 - 856 -373 l 1,8,9 - 886 -353 886 -353 910 -320.5 c 128,-1,10 - 934 -288 934 -288 934 -254 c 0,11,12 - 934 -194 934 -194 842 -164 c 1,13,-1 - 901 -14 l 1,14,15 - 847 0 847 0 814.5 45 c 128,-1,16 - 782 90 782 90 782 154 c 0,17,18 - 782 183 782 183 788 213 c 1,19,-1 - 842 440 l 1,20,-1 - 358 440 l 1,21,-1 - 256 0 l 1,22,-1 - 92 0 l 1,23,-1 - 301 901 l 1,24,-1 - 465 901 l 1,25,-1 - 381 543 l 1,26,-1 - 864 543 l 1,27,-1 - 948 901 l 1,28,-1 - 1112 901 l 1,29,-1 - 967 276 l 1,30,31 - 956 223 956 223 956 184 c 0,32,33 - 956 82 956 82 999 82 c 0,34,35 - 1026 82 1026 82 1049.5 96.5 c 128,-1,36 - 1073 111 1073 111 1077 131 c 1,37,-1 - 1147 131 l 1,38,39 - 1135 79 1135 79 1093.5 39.5 c 128,-1,40 - 1052 0 1052 0 997 -14 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A4 -Encoding: 1188 1188 761 -Width: 1871 -VWidth: 0 -Flags: W -HStem: 0 43G<174 358 1008 1191> 717 102<537 1174> 1331 102<1489 2142> -LayerCount: 2 -Fore -SplineSet -680 1434 m 1,0,-1 - 537 819 l 1,1,-1 - 1196 819 l 1,2,-1 - 1339 1434 l 1,3,-1 - 2167 1434 l 1,4,-1 - 2142 1331 l 1,5,-1 - 1489 1331 l 1,6,-1 - 1182 0 l 1,7,-1 - 1008 0 l 1,8,-1 - 1174 717 l 1,9,-1 - 514 717 l 1,10,-1 - 348 0 l 1,11,-1 - 174 0 l 1,12,-1 - 506 1434 l 1,13,-1 - 680 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A5 -Encoding: 1189 1189 762 -Width: 1415 -VWidth: 0 -Flags: W -HStem: 0 43G<123 296 770 943> 440 102<412 872> 799 102<1118 1546> -LayerCount: 2 -Fore -SplineSet -332 901 m 1,0,-1 - 496 901 l 1,1,-1 - 412 543 l 1,2,-1 - 895 543 l 1,3,-1 - 979 901 l 1,4,-1 - 1571 901 l 1,5,-1 - 1546 799 l 1,6,-1 - 1118 799 l 1,7,-1 - 934 0 l 1,8,-1 - 770 0 l 1,9,-1 - 872 440 l 1,10,-1 - 389 440 l 1,11,-1 - 287 0 l 1,12,-1 - 123 0 l 1,13,-1 - 332 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A6 -Encoding: 1190 1190 763 -Width: 1968 -VWidth: 0 -Flags: W -HStem: -217 102<1372 1576> -59 41G<1289 1353> 0 43G<174 358 975 1158> 819 102<1404 1737> 1331 102<655 1282> -VStem: 1784 176<375 771> -LayerCount: 2 -Fore -SplineSet -174 0 m 1,0,-1 - 506 1434 l 1,1,-1 - 1481 1434 l 1,2,-1 - 1350 870 l 1,3,4 - 1463 922 1463 922 1587 922 c 0,5,6 - 1768 922 1768 922 1864 848 c 128,-1,7 - 1960 774 1960 774 1960 627 c 0,8,9 - 1960 565 1960 565 1942 492 c 1,10,-1 - 1896 291 l 2,11,12 - 1869 172 1869 172 1829 81 c 128,-1,13 - 1789 -10 1789 -10 1745 -65.5 c 128,-1,14 - 1701 -121 1701 -121 1647.5 -156 c 128,-1,15 - 1594 -191 1594 -191 1542.5 -204 c 128,-1,16 - 1491 -217 1491 -217 1432 -217 c 0,17,18 - 1374 -217 1374 -217 1309.5 -191.5 c 128,-1,19 - 1245 -166 1245 -166 1210 -125 c 1,20,-1 - 1337 -18 l 1,21,22 - 1383 -115 1383 -115 1485 -115 c 0,23,24 - 1551 -115 1551 -115 1610 -29.5 c 128,-1,25 - 1669 56 1669 56 1712 246 c 2,26,-1 - 1763 467 l 1,27,28 - 1784 566 1784 566 1784 631 c 0,29,30 - 1784 736 1784 736 1734.5 777.5 c 128,-1,31 - 1685 819 1685 819 1593 819 c 0,32,33 - 1525 819 1525 819 1451 793.5 c 128,-1,34 - 1377 768 1377 768 1315 723 c 1,35,-1 - 1149 0 l 1,36,-1 - 975 0 l 1,37,-1 - 1282 1331 l 1,38,-1 - 655 1331 l 1,39,-1 - 348 0 l 1,40,-1 - 174 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A7 -Encoding: 1191 1191 764 -Width: 1599 -VWidth: 0 -Flags: W -HStem: -236 102<1111 1287> 0 43G<123 296 770 943> 487 102<1101 1386> 799 102<471 954> -VStem: 1409 162<88 462> -LayerCount: 2 -Fore -SplineSet -1212 -133 m 0,0,1 - 1261 -133 1261 -133 1301.5 -69.5 c 128,-1,2 - 1342 -6 1342 -6 1364 80.5 c 128,-1,3 - 1386 167 1386 167 1397.5 240.5 c 128,-1,4 - 1409 314 1409 314 1409 350 c 0,5,6 - 1409 427 1409 427 1375 457 c 128,-1,7 - 1341 487 1341 487 1266 487 c 0,8,9 - 1201 487 1201 487 1146 464 c 128,-1,10 - 1091 441 1091 441 1024 393 c 1,11,-1 - 934 0 l 1,12,-1 - 770 0 l 1,13,-1 - 954 799 l 1,14,-1 - 471 799 l 1,15,-1 - 287 0 l 1,16,-1 - 123 0 l 1,17,-1 - 332 901 l 1,18,-1 - 1143 901 l 1,19,-1 - 1059 541 l 1,20,21 - 1117 567 1117 567 1160 578.5 c 128,-1,22 - 1203 590 1203 590 1257 590 c 0,23,24 - 1421 590 1421 590 1496 528.5 c 128,-1,25 - 1571 467 1571 467 1571 338 c 0,26,27 - 1571 306 1571 306 1566.5 264.5 c 128,-1,28 - 1562 223 1562 223 1549 167 c 128,-1,29 - 1536 111 1536 111 1516.5 57 c 128,-1,30 - 1497 3 1497 3 1464 -51 c 128,-1,31 - 1431 -105 1431 -105 1389.5 -145.5 c 128,-1,32 - 1348 -186 1348 -186 1288 -211 c 128,-1,33 - 1228 -236 1228 -236 1157 -236 c 0,34,35 - 1088 -236 1088 -236 1033.5 -211.5 c 128,-1,36 - 979 -187 979 -187 958 -143 c 1,37,-1 - 1085 -37 l 1,38,39 - 1104 -92 1104 -92 1131 -112.5 c 128,-1,40 - 1158 -133 1158 -133 1212 -133 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A8 -Encoding: 1192 1192 765 -Width: 1658 -VWidth: 0 -Flags: W -HStem: -20 102<626 914 1131 1388> 1268 84<1216 1362> 1352 84<845 1016> -VStem: 242 176<307 787> 768 164<244 739> 1397 166<697 1202> -LayerCount: 2 -Fore -SplineSet -1036 150 m 1,0,1 - 1129 208 1129 208 1202.5 322 c 128,-1,2 - 1276 436 1276 436 1316.5 567 c 128,-1,3 - 1357 698 1357 698 1377 819.5 c 128,-1,4 - 1397 941 1397 941 1397 1040 c 0,5,6 - 1397 1146 1397 1146 1372 1207 c 128,-1,7 - 1347 1268 1347 1268 1300 1268 c 0,8,9 - 1239 1268 1239 1268 1171.5 1182.5 c 128,-1,10 - 1104 1097 1104 1097 1052 972 c 128,-1,11 - 1000 847 1000 847 966 700 c 128,-1,12 - 932 553 932 553 932 436 c 0,13,14 - 932 237 932 237 1036 150 c 1,0,1 -915 96 m 1,15,16 - 768 230 768 230 768 481 c 0,17,18 - 768 625 768 625 812 780 c 128,-1,19 - 856 935 856 935 929 1061.5 c 128,-1,20 - 1002 1188 1002 1188 1105 1270 c 128,-1,21 - 1208 1352 1208 1352 1317 1352 c 128,-1,22 - 1426 1352 1426 1352 1494.5 1248.5 c 128,-1,23 - 1563 1145 1563 1145 1563 969 c 0,24,25 - 1563 812 1563 812 1513 649.5 c 128,-1,26 - 1463 487 1463 487 1362.5 339 c 128,-1,27 - 1262 191 1262 191 1128 100 c 1,28,29 - 1183 82 1183 82 1264 82 c 0,30,31 - 1321 82 1321 82 1381.5 121 c 128,-1,32 - 1442 160 1442 160 1495 229 c 1,33,-1 - 1593 145 l 1,34,35 - 1518 67 1518 67 1433.5 23.5 c 128,-1,36 - 1349 -20 1349 -20 1272 -20 c 0,37,38 - 1116 -20 1116 -20 1006 35 c 1,39,40 - 877 -20 877 -20 737 -20 c 0,41,42 - 667 -20 667 -20 598 -0.5 c 128,-1,43 - 529 19 529 19 464.5 61.5 c 128,-1,44 - 400 104 400 104 351 164.5 c 128,-1,45 - 302 225 302 225 272 314.5 c 128,-1,46 - 242 404 242 404 242 510 c 0,47,48 - 242 612 242 612 268.5 721 c 128,-1,49 - 295 830 295 830 342.5 932.5 c 128,-1,50 - 390 1035 390 1035 461.5 1126.5 c 128,-1,51 - 533 1218 533 1218 619 1287 c 128,-1,52 - 705 1356 705 1356 812.5 1396 c 128,-1,53 - 920 1436 920 1436 1034 1436 c 1,54,-1 - 1016 1352 l 1,55,56 - 908 1352 908 1352 810.5 1296.5 c 128,-1,57 - 713 1241 713 1241 643 1151 c 128,-1,58 - 573 1061 573 1061 521 951 c 128,-1,59 - 469 841 469 841 443.5 730 c 128,-1,60 - 418 619 418 619 418 522 c 0,61,62 - 418 433 418 433 441 358 c 128,-1,63 - 464 283 464 283 502 233 c 128,-1,64 - 540 183 540 183 589 148 c 128,-1,65 - 638 113 638 113 689 97.5 c 128,-1,66 - 740 82 740 82 791 82 c 0,67,68 - 858 82 858 82 915 96 c 1,15,16 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04A9 -Encoding: 1193 1193 766 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -20 102<449 626 902 1045> 715 102<820 962> 799 102<544 698> -VStem: 182 164<183 562> 532 158<162 524> 977 162<349 706> -LayerCount: 2 -Fore -SplineSet -1139 553 m 0,0,1 - 1139 487 1139 487 1116 404.5 c 128,-1,2 - 1093 322 1093 322 1036 230.5 c 128,-1,3 - 979 139 979 139 901 82 c 1,4,-1 - 922 82 l 2,5,6 - 979 82 979 82 1039.5 121 c 128,-1,7 - 1100 160 1100 160 1153 229 c 1,8,-1 - 1251 145 l 1,9,10 - 1176 67 1176 67 1091.5 23.5 c 128,-1,11 - 1007 -20 1007 -20 930 -20 c 0,12,13 - 831 -20 831 -20 752 8 c 1,14,15 - 657 -20 657 -20 549 -20 c 0,16,17 - 479 -20 479 -20 414.5 3 c 128,-1,18 - 350 26 350 26 297.5 69.5 c 128,-1,19 - 245 113 245 113 213.5 184 c 128,-1,20 - 182 255 182 255 182 342 c 0,21,22 - 182 420 182 420 204 499 c 128,-1,23 - 226 578 226 578 271.5 650.5 c 128,-1,24 - 317 723 317 723 380 778.5 c 128,-1,25 - 443 834 443 834 532 867.5 c 128,-1,26 - 621 901 621 901 723 901 c 1,27,-1 - 698 799 l 1,28,29 - 625 799 625 799 563.5 767.5 c 128,-1,30 - 502 736 502 736 463 687 c 128,-1,31 - 424 638 424 638 396.5 576.5 c 128,-1,32 - 369 515 369 515 357.5 456 c 128,-1,33 - 346 397 346 397 346 344 c 0,34,35 - 346 275 346 275 367.5 223 c 128,-1,36 - 389 171 389 171 426 141 c 128,-1,37 - 463 111 463 111 507.5 96.5 c 128,-1,38 - 552 82 552 82 602 82 c 2,39,-1 - 629 82 l 1,40,41 - 532 176 532 176 532 330 c 0,42,43 - 532 429 532 429 568.5 521 c 128,-1,44 - 605 613 605 613 661.5 677 c 128,-1,45 - 718 741 718 741 787.5 779 c 128,-1,46 - 857 817 857 817 922 817 c 0,47,48 - 1024 817 1024 817 1081.5 741.5 c 128,-1,49 - 1139 666 1139 666 1139 553 c 0,0,1 -901 715 m 0,50,51 - 855 715 855 715 814 669.5 c 128,-1,52 - 773 624 773 624 747 559 c 128,-1,53 - 721 494 721 494 705.5 425.5 c 128,-1,54 - 690 357 690 357 690 307 c 0,55,56 - 690 182 690 182 774 123 c 1,57,58 - 828 153 828 153 869.5 212.5 c 128,-1,59 - 911 272 911 272 933 340 c 128,-1,60 - 955 408 955 408 966 471 c 128,-1,61 - 977 534 977 534 977 586 c 0,62,63 - 977 715 977 715 901 715 c 0,50,51 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AA -Encoding: 1194 1194 767 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -20 102<727 954> 1352 102<814 1199> -VStem: 201 176<303 773> 664 117<-320 -186> -LayerCount: 2 -Fore -SplineSet -1012 1352 m 0,0,1 - 892 1352 892 1352 785.5 1294 c 128,-1,2 - 679 1236 679 1236 606.5 1145 c 128,-1,3 - 534 1054 534 1054 480.5 942.5 c 128,-1,4 - 427 831 427 831 402 722.5 c 128,-1,5 - 377 614 377 614 377 522 c 0,6,7 - 377 433 377 433 400 358 c 128,-1,8 - 423 283 423 283 461 233 c 128,-1,9 - 499 183 499 183 548 148 c 128,-1,10 - 597 113 597 113 648 97.5 c 128,-1,11 - 699 82 699 82 750 82 c 0,12,13 - 990 82 990 82 1149 264 c 1,14,-1 - 1257 209 l 1,15,16 - 1157 111 1157 111 1018 48.5 c 128,-1,17 - 879 -14 879 -14 727 -20 c 1,18,-1 - 690 -125 l 1,19,20 - 735 -141 735 -141 757.5 -174 c 128,-1,21 - 780 -207 780 -207 780 -238 c 0,22,23 - 780 -287 780 -287 726 -329 c 128,-1,24 - 672 -371 672 -371 600 -397 c 1,25,-1 - 586 -373 l 1,26,27 - 616 -353 616 -353 640 -320.5 c 128,-1,28 - 664 -288 664 -288 664 -254 c 0,29,30 - 664 -194 664 -194 571 -164 c 1,31,-1 - 631 -16 l 1,32,33 - 549 -5 549 -5 474.5 32.5 c 128,-1,34 - 400 70 400 70 337.5 132.5 c 128,-1,35 - 275 195 275 195 238 292.5 c 128,-1,36 - 201 390 201 390 201 510 c 0,37,38 - 201 612 201 612 228 722 c 128,-1,39 - 255 832 255 832 304 937 c 128,-1,40 - 353 1042 353 1042 426.5 1136 c 128,-1,41 - 500 1230 500 1230 587 1300.5 c 128,-1,42 - 674 1371 674 1371 782.5 1412.5 c 128,-1,43 - 891 1454 891 1454 1006 1454 c 0,44,45 - 1368 1454 1368 1454 1489 1245 c 1,46,-1 - 1321 1178 l 1,47,48 - 1239 1352 1239 1352 1012 1352 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AB -Encoding: 1195 1195 768 -Width: 944 -VWidth: 0 -Flags: W -HStem: 819 102<553 814> -VStem: 150 166<182 543> 508 117<-320 -186> 872 147<669 756> -LayerCount: 2 -Fore -SplineSet -150 324 m 0,0,1 - 150 443 150 443 199.5 555 c 128,-1,2 - 249 667 249 667 327.5 746.5 c 128,-1,3 - 406 826 406 826 504 874 c 128,-1,4 - 602 922 602 922 696 922 c 0,5,6 - 830 922 830 922 912 854.5 c 128,-1,7 - 994 787 994 787 1020 676 c 1,8,-1 - 872 608 l 1,9,10 - 869 705 869 705 826.5 762 c 128,-1,11 - 784 819 784 819 702 819 c 0,12,13 - 601 819 601 819 510.5 747.5 c 128,-1,14 - 420 676 420 676 367.5 565.5 c 128,-1,15 - 315 455 315 455 315 340 c 0,16,17 - 315 220 315 220 384 151 c 128,-1,18 - 453 82 453 82 573 82 c 0,19,20 - 720 82 720 82 827 205 c 1,21,-1 - 940 158 l 1,22,23 - 778 -1 778 -1 571 -18 c 1,24,-1 - 535 -125 l 1,25,26 - 580 -141 580 -141 602.5 -174 c 128,-1,27 - 625 -207 625 -207 625 -238 c 0,28,29 - 625 -287 625 -287 570.5 -329 c 128,-1,30 - 516 -371 516 -371 444 -397 c 1,31,-1 - 430 -373 l 1,32,33 - 460 -353 460 -353 484 -320.5 c 128,-1,34 - 508 -288 508 -288 508 -254 c 0,35,36 - 508 -194 508 -194 416 -164 c 1,37,-1 - 473 -18 l 1,38,39 - 323 -6 323 -6 236.5 85 c 128,-1,40 - 150 176 150 176 150 324 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AC -Encoding: 1196 1196 769 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 1331 102<352 840 1014 1526> -VStem: 637 117<-320 -186> -AnchorPoint: "top" 954 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -352 1434 m 1,0,-1 - 1554 1434 l 1,1,-1 - 1526 1331 l 1,2,-1 - 1014 1331 l 1,3,-1 - 707 0 l 1,4,-1 - 664 -125 l 1,5,6 - 709 -141 709 -141 731.5 -174 c 128,-1,7 - 754 -207 754 -207 754 -238 c 0,8,9 - 754 -287 754 -287 699.5 -329 c 128,-1,10 - 645 -371 645 -371 573 -397 c 1,11,-1 - 559 -373 l 1,12,13 - 589 -353 589 -353 613 -320.5 c 128,-1,14 - 637 -288 637 -288 637 -254 c 0,15,16 - 637 -194 637 -194 545 -164 c 1,17,-1 - 610 0 l 1,18,-1 - 532 0 l 1,19,-1 - 840 1331 l 1,20,-1 - 328 1331 l 1,21,-1 - 352 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AD -Encoding: 1197 1197 770 -Width: 1468 -VWidth: 0 -Flags: W -HStem: 0 43G<82 255 657 831> 819 102<118 278 482 777 1049 1334> -VStem: 47 70<770 808> 238 174<527 759> 1309 117<-320 -186> 1358 158<430 798> -LayerCount: 2 -Fore -SplineSet -225 625 m 2,0,1 - 238 682 238 682 238 719 c 0,2,3 - 238 764 238 764 226 791.5 c 128,-1,4 - 214 819 214 819 193 819 c 0,5,6 - 165 819 165 819 143.5 804.5 c 128,-1,7 - 122 790 122 790 117 770 c 1,8,-1 - 47 770 l 1,9,10 - 61 833 61 833 119 877.5 c 128,-1,11 - 177 922 177 922 246 922 c 0,12,13 - 340 922 340 922 387 842 c 1,14,15 - 455 883 455 883 512 902.5 c 128,-1,16 - 569 922 569 922 637 922 c 0,17,18 - 850 922 850 922 920 815 c 1,19,20 - 1081 922 1081 922 1204 922 c 0,21,22 - 1368 922 1368 922 1442 860.5 c 128,-1,23 - 1516 799 1516 799 1516 670 c 0,24,25 - 1516 598 1516 598 1491 492 c 2,26,-1 - 1378 0 l 1,27,-1 - 1335 -125 l 1,28,29 - 1380 -141 1380 -141 1402.5 -174 c 128,-1,30 - 1425 -207 1425 -207 1425 -238 c 0,31,32 - 1425 -287 1425 -287 1371 -329 c 128,-1,33 - 1317 -371 1317 -371 1245 -397 c 1,34,-1 - 1231 -373 l 1,35,36 - 1261 -353 1261 -353 1285 -320.5 c 128,-1,37 - 1309 -288 1309 -288 1309 -254 c 0,38,39 - 1309 -194 1309 -194 1217 -164 c 1,40,-1 - 1282 0 l 1,41,-1 - 1214 0 l 1,42,-1 - 1329 500 l 2,43,44 - 1358 629 1358 629 1358 686 c 0,45,46 - 1358 764 1358 764 1322.5 791.5 c 128,-1,47 - 1287 819 1287 819 1210 819 c 0,48,49 - 1071 819 1071 819 987 719 c 1,50,-1 - 821 0 l 1,51,-1 - 657 0 l 1,52,-1 - 772 500 l 2,53,54 - 801 626 801 626 801 684 c 0,55,56 - 801 764 801 764 763.5 791.5 c 128,-1,57 - 726 819 726 819 643 819 c 0,58,59 - 528 819 528 819 412 727 c 1,60,61 - 412 720 412 720 409 705.5 c 128,-1,62 - 406 691 406 691 406 688 c 2,63,-1 - 246 0 l 1,64,-1 - 82 0 l 1,65,-1 - 225 625 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04AE -Encoding: 1198 1198 771 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43<451 634> 1393 41<414 609 1112 1327> -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04AF -Encoding: 1199 1199 772 -Width: 849 -VWidth: 0 -Flags: W -HStem: 860 41G<227 382 858 1047> -LayerCount: 2 -Fore -SplineSet -346 0 m 1,0,-1 - 227 901 l 1,1,-1 - 377 901 l 1,2,-1 - 467 205 l 1,3,-1 - 883 901 l 1,4,-1 - 1047 901 l 1,5,-1 - 510 0 l 1,6,-1 - 416 -410 l 1,7,-1 - 252 -410 l 1,8,-1 - 346 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B0 -Encoding: 1200 1200 773 -Width: 952 -VWidth: 0 -Flags: W -HStem: 0 43G<451 634> 418 102<369 547 745 918> 1393 41G<414 609 1112 1327> -LayerCount: 2 -Fore -SplineSet -344 418 m 1,0,-1 - 369 520 l 1,1,-1 - 571 520 l 1,2,-1 - 614 711 l 1,3,-1 - 414 1434 l 1,4,-1 - 598 1434 l 1,5,-1 - 745 899 l 1,6,-1 - 1143 1434 l 1,7,-1 - 1327 1434 l 1,8,-1 - 788 709 l 1,9,-1 - 745 520 l 1,10,-1 - 942 520 l 1,11,-1 - 918 418 l 1,12,-1 - 721 418 l 1,13,-1 - 625 0 l 1,14,-1 - 451 0 l 1,15,-1 - 547 418 l 1,16,-1 - 344 418 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B1 -Encoding: 1201 1201 774 -Width: 849 -VWidth: 0 -Flags: W -HStem: -102 102<154 324 510 702> 860 41G<227 382 858 1047> -LayerCount: 2 -Fore -SplineSet -129 -102 m 1,0,-1 - 154 0 l 1,1,-1 - 346 0 l 1,2,-1 - 227 901 l 1,3,-1 - 377 901 l 1,4,-1 - 467 205 l 1,5,-1 - 883 901 l 1,6,-1 - 1047 901 l 1,7,-1 - 510 0 l 1,8,-1 - 727 0 l 1,9,-1 - 702 -102 l 1,10,-1 - 487 -102 l 1,11,-1 - 416 -410 l 1,12,-1 - 252 -410 l 1,13,-1 - 324 -102 l 1,14,-1 - 129 -102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B2 -Encoding: 1202 1202 775 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43G<41 254> 1393 41G<414 609 1072 1286> -VStem: 928 117<-320 -186> -LayerCount: 2 -Fore -SplineSet -901 0 m 1,0,-1 - 813 0 l 1,1,-1 - 651 578 l 1,2,-1 - 223 0 l 1,3,-1 - 41 0 l 1,4,-1 - 602 758 l 1,5,-1 - 414 1434 l 1,6,-1 - 598 1434 l 1,7,-1 - 735 938 l 1,8,-1 - 1102 1434 l 1,9,-1 - 1286 1434 l 1,10,-1 - 786 760 l 1,11,-1 - 997 0 l 1,12,-1 - 954 -125 l 1,13,14 - 999 -141 999 -141 1021.5 -174 c 128,-1,15 - 1044 -207 1044 -207 1044 -238 c 0,16,17 - 1044 -287 1044 -287 990 -329 c 128,-1,18 - 936 -371 936 -371 864 -397 c 1,19,-1 - 850 -373 l 1,20,21 - 880 -353 880 -353 904 -320.5 c 128,-1,22 - 928 -288 928 -288 928 -254 c 0,23,24 - 928 -194 928 -194 836 -164 c 1,25,-1 - 901 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B3 -Encoding: 1203 1203 776 -Width: 954 -VWidth: 0 -Flags: W -HStem: 0 43G<61 276> 860 41G<328 521 822 1034> -VStem: 813 117<-320 -186> -LayerCount: 2 -Fore -SplineSet -498 494 m 1,0,-1 - 328 901 l 1,1,-1 - 504 901 l 1,2,-1 - 616 629 l 1,3,-1 - 858 901 l 1,4,-1 - 1034 901 l 1,5,-1 - 674 494 l 1,6,-1 - 883 0 l 1,7,-1 - 840 -125 l 1,8,9 - 885 -141 885 -141 907.5 -174 c 128,-1,10 - 930 -207 930 -207 930 -238 c 0,11,12 - 930 -287 930 -287 876 -329 c 128,-1,13 - 822 -371 822 -371 750 -397 c 1,14,-1 - 735 -373 l 1,15,16 - 765 -353 765 -353 789 -320.5 c 128,-1,17 - 813 -288 813 -288 813 -254 c 0,18,19 - 813 -194 813 -194 721 -164 c 1,20,-1 - 786 0 l 1,21,-1 - 705 0 l 1,22,-1 - 555 358 l 1,23,-1 - 240 0 l 1,24,-1 - 61 0 l 1,25,-1 - 498 494 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B4 -Encoding: 1204 1204 777 -Width: 1679 -VWidth: 0 -Flags: W -HStem: 0 102<680 1307> 1331 102<352 788 963 1423> -VStem: 1489 117<-320 -186> -LayerCount: 2 -Fore -SplineSet -1593 102 m 1,0,-1 - 1516 -125 l 1,1,2 - 1561 -141 1561 -141 1583.5 -174 c 128,-1,3 - 1606 -207 1606 -207 1606 -238 c 0,4,5 - 1606 -287 1606 -287 1551.5 -329 c 128,-1,6 - 1497 -371 1497 -371 1425 -397 c 1,7,-1 - 1411 -373 l 1,8,9 - 1441 -353 1441 -353 1465 -320.5 c 128,-1,10 - 1489 -288 1489 -288 1489 -254 c 0,11,12 - 1489 -194 1489 -194 1397 -164 c 1,13,-1 - 1462 0 l 1,14,-1 - 481 0 l 1,15,-1 - 788 1331 l 1,16,-1 - 328 1331 l 1,17,-1 - 352 1434 l 1,18,-1 - 1452 1434 l 1,19,-1 - 1423 1331 l 1,20,-1 - 963 1331 l 1,21,-1 - 680 102 l 1,22,-1 - 1307 102 l 1,23,-1 - 1614 1434 l 1,24,-1 - 1788 1434 l 1,25,-1 - 1481 102 l 1,26,-1 - 1593 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B5 -Encoding: 1205 1205 778 -Width: 1419 -VWidth: 0 -Flags: W -HStem: -20 102<690 1000> 799 102<262 575 739 1077> -VStem: 463 172<137 502> 1071 174<142 272> 1231 117<-320 -186> 1366 70<93 131> -LayerCount: 2 -Fore -SplineSet -238 799 m 5,0,-1 - 262 901 l 1,1,-1 - 1102 901 l 1,2,-1 - 1077 799 l 1,3,-1 - 739 799 l 1,4,-1 - 655 434 l 2,5,6 - 635 350 635 350 635 281 c 0,7,8 - 635 171 635 171 689 126.5 c 128,-1,9 - 743 82 743 82 838 82 c 0,10,11 - 955 82 955 82 1071 174 c 1,12,13 - 1071 177 1071 177 1077 213 c 1,14,-1 - 1237 901 l 1,15,-1 - 1401 901 l 1,16,-1 - 1255 276 l 2,17,18 - 1245 232 1245 232 1245 182 c 0,19,20 - 1245 82 1245 82 1288 82 c 0,21,22 - 1316 82 1316 82 1338.5 96.5 c 128,-1,23 - 1361 111 1361 111 1366 131 c 1,24,-1 - 1436 131 l 1,25,26 - 1426 82 1426 82 1386.5 42.5 c 128,-1,27 - 1347 3 1347 3 1294 -12 c 1,28,-1 - 1257 -125 l 1,29,30 - 1302 -141 1302 -141 1325 -174 c 128,-1,31 - 1348 -207 1348 -207 1348 -238 c 0,32,33 - 1348 -287 1348 -287 1293.5 -329 c 128,-1,34 - 1239 -371 1239 -371 1167 -397 c 1,35,-1 - 1153 -373 l 1,36,37 - 1183 -353 1183 -353 1207 -320.5 c 128,-1,38 - 1231 -288 1231 -288 1231 -254 c 0,39,40 - 1231 -194 1231 -194 1139 -164 c 1,41,-1 - 1198 -16 l 1,42,43 - 1131 -1 1131 -1 1094 61 c 1,44,45 - 1024 23 1024 23 940.5 1.5 c 128,-1,46 - 857 -20 857 -20 784 -20 c 0,47,48 - 618 -20 618 -20 540.5 43.5 c 128,-1,49 - 463 107 463 107 463 240 c 0,50,51 - 463 311 463 311 485 410 c 2,52,-1 - 575 799 l 1,53,-1 - 238 799 l 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B6 -Encoding: 1206 1206 779 -Width: 1060 -VWidth: 0 -Flags: W -HStem: 522 102<535 862> 1393 41G<404 588 1103 1286> -VStem: 299 178<683 1135> 885 117<-320 -186> -LayerCount: 2 -Fore -SplineSet -946 721 m 1,0,-1 - 1112 1434 l 1,1,-1 - 1286 1434 l 1,2,-1 - 954 0 l 1,3,-1 - 911 -125 l 1,4,5 - 956 -141 956 -141 978.5 -174 c 128,-1,6 - 1001 -207 1001 -207 1001 -238 c 0,7,8 - 1001 -287 1001 -287 947 -329 c 128,-1,9 - 893 -371 893 -371 821 -397 c 1,10,-1 - 807 -373 l 1,11,12 - 837 -353 837 -353 861 -320.5 c 128,-1,13 - 885 -288 885 -288 885 -254 c 0,14,15 - 885 -194 885 -194 793 -164 c 1,16,-1 - 858 0 l 1,17,-1 - 780 0 l 1,18,-1 - 913 573 l 1,19,20 - 863 550 863 550 778.5 536 c 128,-1,21 - 694 522 694 522 631 522 c 0,22,23 - 464 522 464 522 381.5 599.5 c 128,-1,24 - 299 677 299 677 299 842 c 0,25,26 - 299 930 299 930 332 1085 c 1,27,-1 - 414 1434 l 1,28,-1 - 588 1434 l 1,29,-1 - 512 1110 l 2,30,31 - 477 957 477 957 477 852 c 0,32,33 - 477 780 477 780 493.5 732.5 c 128,-1,34 - 510 685 510 685 542 662.5 c 128,-1,35 - 574 640 574 640 606 632.5 c 128,-1,36 - 638 625 638 625 684 625 c 0,37,38 - 816 625 816 625 946 721 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B7 -Encoding: 1207 1207 780 -Width: 1058 -VWidth: 0 -Flags: W -HStem: 313 102<448 727> 860 41G<284 465 867 1040> -VStem: 244 172<446 845> 711 174<83 266> 864 117<-320 -186> 1006 70<94 131> -LayerCount: 2 -Fore -SplineSet -928 -14 m 5,0,-1 - 891 -125 l 5,1,2 - 936 -141 936 -141 958.5 -174 c 132,-1,3 - 981 -207 981 -207 981 -238 c 4,4,5 - 981 -287 981 -287 927 -329 c 132,-1,6 - 873 -371 873 -371 801 -397 c 5,7,-1 - 786 -373 l 5,8,9 - 816 -353 816 -353 840 -320.5 c 132,-1,10 - 864 -288 864 -288 864 -254 c 4,11,12 - 864 -194 864 -194 772 -164 c 5,13,-1 - 831 -14 l 5,14,15 - 776 0 776 0 743.5 44.5 c 132,-1,16 - 711 89 711 89 711 154 c 0,17,18 - 711 183 711 183 717 213 c 2,19,-1 - 752 365 l 1,20,21 - 639 313 639 313 520 313 c 0,22,23 - 369 313 369 313 306.5 368 c 128,-1,24 - 244 423 244 423 244 549 c 0,25,26 - 244 662 244 662 301 901 c 1,27,-1 - 465 901 l 1,28,29 - 416 701 416 701 416 584 c 0,30,31 - 416 482 416 482 454.5 449 c 128,-1,32 - 493 416 493 416 575 416 c 0,33,34 - 700 416 700 416 786 512 c 1,35,-1 - 877 901 l 1,36,-1 - 1040 901 l 1,37,-1 - 895 276 l 1,38,39 - 885 228 885 228 885 184 c 0,40,41 - 885 82 885 82 928 82 c 0,42,43 - 955 82 955 82 978.5 96.5 c 128,-1,44 - 1002 111 1002 111 1006 131 c 1,45,-1 - 1075 131 l 1,46,47 - 1063 80 1063 80 1022.5 39.5 c 132,-1,48 - 982 -1 982 -1 928 -14 c 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B8 -Encoding: 1208 1208 781 -Width: 1165 -VWidth: 0 -Flags: W -HStem: 0 43G<780 964> 524 111<526 573 713 880> 864 41G<652 776> 1393 41G<404 588 1103 1286> -VStem: 299 178<686 1135> -LayerCount: 2 -Fore -SplineSet -662 905 m 1,0,-1 - 776 905 l 1,1,-1 - 713 627 l 1,2,3 - 830 636 830 636 946 721 c 1,4,-1 - 1112 1434 l 1,5,-1 - 1286 1434 l 1,6,-1 - 954 0 l 1,7,-1 - 780 0 l 1,8,-1 - 913 573 l 1,9,10 - 830 535 830 535 688 524 c 1,11,-1 - 631 274 l 1,12,-1 - 516 274 l 1,13,-1 - 573 524 l 1,14,15 - 435 536 435 536 367 613.5 c 128,-1,16 - 299 691 299 691 299 842 c 0,17,18 - 299 930 299 930 332 1085 c 1,19,-1 - 414 1434 l 1,20,-1 - 588 1434 l 1,21,-1 - 512 1110 l 2,22,23 - 477 957 477 957 477 852 c 0,24,25 - 477 667 477 667 600 635 c 1,26,-1 - 662 905 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04B9 -Encoding: 1209 1209 782 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<828 1003> 313 106<443 492> 860 41G<284 465 867 1040> -VStem: 244 172<445 845> 711 174<82 266> 1006 70<93 131> -LayerCount: 2 -Fore -SplineSet -561 612 m 1,0,-1 - 676 612 l 1,1,-1 - 631 420 l 1,2,3 - 721 437 721 437 786 512 c 1,4,-1 - 877 901 l 1,5,-1 - 1040 901 l 1,6,-1 - 895 276 l 1,7,8 - 885 228 885 228 885 184 c 0,9,10 - 885 82 885 82 928 82 c 0,11,12 - 955 82 955 82 978.5 96.5 c 128,-1,13 - 1002 111 1002 111 1006 131 c 1,14,-1 - 1075 131 l 1,15,16 - 1060 68 1060 68 1003 24 c 128,-1,17 - 946 -20 946 -20 877 -20 c 0,18,19 - 804 -20 804 -20 757.5 28.5 c 128,-1,20 - 711 77 711 77 711 154 c 0,21,22 - 711 183 711 183 717 213 c 2,23,-1 - 752 365 l 1,24,25 - 683 334 683 334 608 322 c 1,26,-1 - 565 135 l 1,27,-1 - 451 135 l 1,28,-1 - 492 313 l 1,29,30 - 357 317 357 317 300.5 373 c 128,-1,31 - 244 429 244 429 244 549 c 0,32,33 - 244 662 244 662 301 901 c 1,34,-1 - 465 901 l 1,35,36 - 416 701 416 701 416 584 c 0,37,38 - 416 502 416 502 441.5 465 c 128,-1,39 - 467 428 467 428 516 420 c 1,40,-1 - 561 612 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BA -Encoding: 1210 1210 783 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43G<147 331 946 1130> 819 102<644 1001> 1393 41G<470 653> -VStem: 1071 176<359 749> -LayerCount: 2 -Fore -SplineSet -147 0 m 9,0,-1 - 479 1434 l 1,1,-1 - 653 1434 l 1,2,-1 - 514 831 l 1,3,4 - 518 833 518 833 546 846 c 128,-1,5 - 574 859 574 859 585.5 864 c 128,-1,6 - 597 869 597 869 625 880.5 c 128,-1,7 - 653 892 653 892 673.5 897 c 128,-1,8 - 694 902 694 902 723 909 c 128,-1,9 - 752 916 752 916 781.5 919 c 128,-1,10 - 811 922 811 922 842 922 c 0,11,12 - 1031 922 1031 922 1139 842.5 c 128,-1,13 - 1247 763 1247 763 1247 608 c 0,14,15 - 1247 552 1247 552 1233 492 c 2,16,-1 - 1120 0 l 1,17,-1 - 946 0 l 1,18,-1 - 1055 467 l 2,19,20 - 1071 538 1071 538 1071 604 c 0,21,22 - 1071 819 1071 819 848 819 c 0,23,24 - 667 819 667 819 479 684 c 1,25,-1 - 322 0 l 1,26,-1 - 147 0 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BB -Encoding: 1211 1211 784 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43<143 317 780 954> 819 102<560 873> 1270 102<284 461> -VStem: 213 70<1221 1259> 403 174<985 1268> 913 164<389 778> -LayerCount: 2 -Fore -Refer: 2 104 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04BC -Encoding: 1212 1212 785 -Width: 1742 -VWidth: 0 -Flags: W -HStem: -20 102<905 1283> 717 102<506 588 788 1674> 1352 102<1189 1501> -VStem: 305 176<837 1095> 559 174<276 713> 614 174<819 919> 1677 176<822 1147> -LayerCount: 2 -Fore -SplineSet -762 717 m 1,0,1 - 733 585 733 585 733 496 c 0,2,3 - 733 296 733 296 830 189 c 128,-1,4 - 927 82 927 82 1071 82 c 0,5,6 - 1193 82 1193 82 1294 130 c 128,-1,7 - 1395 178 1395 178 1468 256 c 1,8,-1 - 1606 188 l 1,9,10 - 1391 -20 1391 -20 1018 -20 c 0,11,12 - 933 -20 933 -20 853.5 11.5 c 128,-1,13 - 774 43 774 43 707 103.5 c 128,-1,14 - 640 164 640 164 599.5 265.5 c 128,-1,15 - 559 367 559 367 559 494 c 0,16,17 - 559 585 559 585 588 717 c 1,18,19 - 435 717 435 717 370 780.5 c 128,-1,20 - 305 844 305 844 305 961 c 0,21,22 - 305 1025 305 1025 330 1143 c 1,23,-1 - 500 1085 l 1,24,25 - 481 1008 481 1008 481 946 c 0,26,27 - 481 910 481 910 490 884.5 c 128,-1,28 - 499 859 499 859 510 846.5 c 128,-1,29 - 521 834 521 834 542.5 827.5 c 128,-1,30 - 564 821 564 821 577 820 c 128,-1,31 - 590 819 590 819 614 819 c 1,32,33 - 657 954 657 954 726 1063.5 c 128,-1,34 - 795 1173 795 1173 873.5 1244.5 c 128,-1,35 - 952 1316 952 1316 1043 1364.5 c 128,-1,36 - 1134 1413 1134 1413 1221 1433.5 c 128,-1,37 - 1308 1454 1308 1454 1395 1454 c 0,38,39 - 1465 1454 1465 1454 1530 1435 c 128,-1,40 - 1595 1416 1595 1416 1654 1375.5 c 128,-1,41 - 1713 1335 1713 1335 1757 1276 c 128,-1,42 - 1801 1217 1801 1217 1827 1131.5 c 128,-1,43 - 1853 1046 1853 1046 1853 944 c 0,44,45 - 1853 838 1853 838 1827 717 c 1,46,-1 - 762 717 l 1,0,1 -788 819 m 1,47,-1 - 1669 819 l 1,48,49 - 1677 893 1677 893 1677 924 c 0,50,51 - 1677 1031 1677 1031 1646 1117 c 128,-1,52 - 1615 1203 1615 1203 1567.5 1252 c 128,-1,53 - 1520 1301 1520 1301 1468.5 1326.5 c 128,-1,54 - 1417 1352 1417 1352 1370 1352 c 0,55,56 - 1297 1352 1297 1352 1217 1320.5 c 128,-1,57 - 1137 1289 1137 1289 1056.5 1227.5 c 128,-1,58 - 976 1166 976 1166 904 1060 c 128,-1,59 - 832 954 832 954 788 819 c 1,47,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BD -Encoding: 1213 1213 786 -Width: 1359 -VWidth: 0 -Flags: W -HStem: -20 102<779 1094> 451 102<444 526 723 1231> 819 102<915 1176> -VStem: 244 176<573 828> 510 166<182 449> 1231 162<554 762> -LayerCount: 2 -Fore -SplineSet -723 553 m 1,0,-1 - 1229 553 l 1,1,2 - 1231 567 1231 567 1231 598 c 0,3,4 - 1231 700 1231 700 1189 759.5 c 128,-1,5 - 1147 819 1147 819 1063 819 c 0,6,7 - 965 819 965 819 871.5 747.5 c 128,-1,8 - 778 676 778 676 723 553 c 1,0,-1 -690 451 m 1,9,10 - 676 383 676 383 676 340 c 0,11,12 - 676 220 676 220 745 151 c 128,-1,13 - 814 82 814 82 934 82 c 0,14,15 - 1081 82 1081 82 1188 205 c 1,16,-1 - 1300 158 l 1,17,18 - 1216 76 1216 76 1109 28 c 128,-1,19 - 1002 -20 1002 -20 881 -20 c 0,20,21 - 711 -20 711 -20 610.5 72.5 c 128,-1,22 - 510 165 510 165 510 324 c 0,23,24 - 510 379 510 379 526 451 c 1,25,26 - 373 451 373 451 308.5 514 c 128,-1,27 - 244 577 244 577 244 694 c 0,28,29 - 244 764 244 764 268 877 c 1,30,-1 - 438 819 l 1,31,32 - 420 734 420 734 420 682 c 0,33,34 - 420 646 420 646 429.5 620 c 128,-1,35 - 439 594 439 594 451.5 581.5 c 128,-1,36 - 464 569 464 569 486 562 c 128,-1,37 - 508 555 508 555 522 554 c 128,-1,38 - 536 553 536 553 559 553 c 1,39,40 - 630 718 630 718 773.5 820 c 128,-1,41 - 917 922 917 922 1057 922 c 0,42,43 - 1141 922 1141 922 1207 893.5 c 128,-1,44 - 1273 865 1273 865 1313 815.5 c 128,-1,45 - 1353 766 1353 766 1373 704 c 128,-1,46 - 1393 642 1393 642 1393 571 c 0,47,48 - 1393 512 1393 512 1378 451 c 1,49,-1 - 690 451 l 1,9,10 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BE -Encoding: 1214 1214 787 -Width: 1742 -VWidth: 0 -Flags: W -HStem: -20 102<1055 1281> 717 102<506 588 788 1674> 1352 102<1189 1501> -VStem: 305 176<837 1095> 559 174<273 713> 614 174<819 919> 991 117<-320 -186> 1677 176<822 1147> -LayerCount: 2 -Fore -SplineSet -788 819 m 1,0,-1 - 1669 819 l 1,1,2 - 1677 893 1677 893 1677 924 c 0,3,4 - 1677 1031 1677 1031 1646 1117 c 128,-1,5 - 1615 1203 1615 1203 1567.5 1252 c 128,-1,6 - 1520 1301 1520 1301 1468.5 1326.5 c 128,-1,7 - 1417 1352 1417 1352 1370 1352 c 0,8,9 - 1297 1352 1297 1352 1217 1320.5 c 128,-1,10 - 1137 1289 1137 1289 1056.5 1227.5 c 128,-1,11 - 976 1166 976 1166 904 1060 c 128,-1,12 - 832 954 832 954 788 819 c 1,0,-1 -762 717 m 1,13,14 - 733 585 733 585 733 496 c 0,15,16 - 733 296 733 296 830 189 c 128,-1,17 - 927 82 927 82 1071 82 c 0,18,19 - 1193 82 1193 82 1294 130 c 128,-1,20 - 1395 178 1395 178 1468 256 c 1,21,-1 - 1606 188 l 1,22,23 - 1402 -9 1402 -9 1055 -20 c 1,24,-1 - 1018 -125 l 1,25,26 - 1063 -141 1063 -141 1085.5 -174 c 128,-1,27 - 1108 -207 1108 -207 1108 -238 c 0,28,29 - 1108 -287 1108 -287 1054 -329 c 128,-1,30 - 1000 -371 1000 -371 928 -397 c 1,31,-1 - 913 -373 l 1,32,33 - 943 -353 943 -353 967 -320.5 c 128,-1,34 - 991 -288 991 -288 991 -254 c 0,35,36 - 991 -194 991 -194 899 -164 c 1,37,-1 - 958 -16 l 1,38,39 - 880 -6 880 -6 810.5 30.5 c 128,-1,40 - 741 67 741 67 683.5 127.5 c 128,-1,41 - 626 188 626 188 592.5 283 c 128,-1,42 - 559 378 559 378 559 494 c 0,43,44 - 559 585 559 585 588 717 c 1,45,46 - 435 717 435 717 370 780.5 c 128,-1,47 - 305 844 305 844 305 961 c 0,48,49 - 305 1025 305 1025 330 1143 c 1,50,-1 - 500 1085 l 1,51,52 - 481 1008 481 1008 481 946 c 0,53,54 - 481 910 481 910 490 884.5 c 128,-1,55 - 499 859 499 859 510 846.5 c 128,-1,56 - 521 834 521 834 542.5 827.5 c 128,-1,57 - 564 821 564 821 577 820 c 128,-1,58 - 590 819 590 819 614 819 c 1,59,60 - 657 954 657 954 726 1063.5 c 128,-1,61 - 795 1173 795 1173 873.5 1244.5 c 128,-1,62 - 952 1316 952 1316 1043 1364.5 c 128,-1,63 - 1134 1413 1134 1413 1221 1433.5 c 128,-1,64 - 1308 1454 1308 1454 1395 1454 c 0,65,66 - 1465 1454 1465 1454 1530 1435 c 128,-1,67 - 1595 1416 1595 1416 1654 1375.5 c 128,-1,68 - 1713 1335 1713 1335 1757 1276 c 128,-1,69 - 1801 1217 1801 1217 1827 1131.5 c 128,-1,70 - 1853 1046 1853 1046 1853 944 c 0,71,72 - 1853 838 1853 838 1827 717 c 1,73,-1 - 762 717 l 1,13,14 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04BF -Encoding: 1215 1215 788 -Width: 1359 -VWidth: 0 -Flags: W -HStem: 451 102<444 526 723 1231> 819 102<915 1176> -VStem: 244 176<573 828> 510 166<183 449> 862 117<-320 -186> 1231 162<554 762> -LayerCount: 2 -Fore -SplineSet -690 451 m 1,0,1 - 676 383 676 383 676 340 c 0,2,3 - 676 220 676 220 745 151 c 128,-1,4 - 814 82 814 82 934 82 c 0,5,6 - 1081 82 1081 82 1188 205 c 1,7,-1 - 1300 158 l 1,8,9 - 1138 -1 1138 -1 926 -18 c 1,10,-1 - 889 -125 l 1,11,12 - 934 -141 934 -141 956.5 -174 c 128,-1,13 - 979 -207 979 -207 979 -238 c 0,14,15 - 979 -287 979 -287 925 -329 c 128,-1,16 - 871 -371 871 -371 799 -397 c 1,17,-1 - 784 -373 l 1,18,19 - 814 -353 814 -353 838 -320.5 c 128,-1,20 - 862 -288 862 -288 862 -254 c 0,21,22 - 862 -194 862 -194 770 -164 c 1,23,-1 - 827 -18 l 1,24,25 - 680 -4 680 -4 595 86.5 c 128,-1,26 - 510 177 510 177 510 324 c 0,27,28 - 510 379 510 379 526 451 c 1,29,30 - 373 451 373 451 308.5 514 c 128,-1,31 - 244 577 244 577 244 694 c 0,32,33 - 244 764 244 764 268 877 c 1,34,-1 - 438 819 l 1,35,36 - 420 734 420 734 420 682 c 0,37,38 - 420 646 420 646 429.5 620 c 128,-1,39 - 439 594 439 594 451.5 581.5 c 128,-1,40 - 464 569 464 569 486 562 c 128,-1,41 - 508 555 508 555 522 554 c 128,-1,42 - 536 553 536 553 559 553 c 1,43,44 - 630 718 630 718 773.5 820 c 128,-1,45 - 917 922 917 922 1057 922 c 0,46,47 - 1141 922 1141 922 1207 893.5 c 128,-1,48 - 1273 865 1273 865 1313 815.5 c 128,-1,49 - 1353 766 1353 766 1373 704 c 128,-1,50 - 1393 642 1393 642 1393 571 c 0,51,52 - 1393 512 1393 512 1378 451 c 1,53,-1 - 690 451 l 1,0,1 -723 553 m 1,54,-1 - 1229 553 l 1,55,56 - 1231 567 1231 567 1231 598 c 0,57,58 - 1231 700 1231 700 1189 759.5 c 128,-1,59 - 1147 819 1147 819 1063 819 c 0,60,61 - 965 819 965 819 871.5 747.5 c 128,-1,62 - 778 676 778 676 723 553 c 1,54,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C0 -Encoding: 1216 1216 789 -Width: 514 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> -VStem: 92 506 -AnchorPoint: "top" 182 1434 basechar 0 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04C1 -Encoding: 1217 1217 790 -Width: 1525 -VWidth: 0 -Flags: W -HStem: 0 43<37 216 672 855 1307 1481> 1331 102<389 439 1675 1767> 1577 117<1039 1272> -VStem: 37 174<0 68> 935 84<1723 1767> 1307 176<0 178> -LayerCount: 2 -Fore -Refer: 373 728 N 1 0 0 1 537 307 2 -Refer: 404 1046 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04C2 -Encoding: 1218 1218 791 -Width: 1382 -VWidth: 0 -Flags: W -HStem: -20 102<91 202> 0 43<610 784 1081 1255> 799 102<328 392 1335 1450> 1044 117<841 1075> -VStem: 16 74<85 131> 737 84<1190 1235> 1083 174<0 183> -LayerCount: 2 -Fore -Refer: 373 728 N 1 0 0 1 340 -225 2 -Refer: 436 1078 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni04C3 -Encoding: 1219 1219 792 -Width: 1347 -VWidth: 0 -Flags: W -HStem: -217 102<747 952> -59 41G<664 728> 0 43G<174 358> 819 102<966 1104> 1393 41G<496 680 1289 1540> -VStem: 1159 176<375 771> -LayerCount: 2 -Fore -SplineSet -457 469 m 1,0,-1 - 348 0 l 1,1,-1 - 174 0 l 1,2,-1 - 506 1434 l 1,3,-1 - 680 1434 l 1,4,-1 - 508 696 l 1,5,-1 - 1335 1434 l 1,6,-1 - 1540 1434 l 1,7,-1 - 965 922 l 1,8,9 - 1145 922 1145 922 1240 848 c 128,-1,10 - 1335 774 1335 774 1335 627 c 0,11,12 - 1335 565 1335 565 1317 492 c 1,13,-1 - 1272 291 l 2,14,15 - 1238 143 1238 143 1186.5 39.5 c 128,-1,16 - 1135 -64 1135 -64 1072 -118 c 128,-1,17 - 1009 -172 1009 -172 945.5 -194.5 c 128,-1,18 - 882 -217 882 -217 807 -217 c 0,19,20 - 749 -217 749 -217 685 -191.5 c 128,-1,21 - 621 -166 621 -166 586 -125 c 1,22,-1 - 713 -18 l 1,23,24 - 737 -68 737 -68 772 -91.5 c 128,-1,25 - 807 -115 807 -115 860 -115 c 0,26,27 - 926 -115 926 -115 985 -29.5 c 128,-1,28 - 1044 56 1044 56 1087 246 c 1,29,-1 - 1139 467 l 1,30,31 - 1159 561 1159 561 1159 631 c 0,32,33 - 1159 736 1159 736 1110 777.5 c 128,-1,34 - 1061 819 1061 819 969 819 c 0,35,36 - 896 819 896 819 817 791 c 1,37,-1 - 457 469 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C4 -Encoding: 1220 1220 793 -Width: 1042 -VWidth: 0 -Flags: W -HStem: -236 102<554 729> 0 43G<147 321> 487 102<733 825> 860 41G<347 520 851 1085> -VStem: 852 162<91 463> -LayerCount: 2 -Fore -SplineSet -655 -133 m 0,0,1 - 704 -133 704 -133 744.5 -69.5 c 128,-1,2 - 785 -6 785 -6 807 80.5 c 128,-1,3 - 829 167 829 167 840.5 240.5 c 128,-1,4 - 852 314 852 314 852 350 c 0,5,6 - 852 427 852 427 818 457 c 128,-1,7 - 784 487 784 487 709 487 c 0,8,9 - 647 487 647 487 598 469 c 1,10,-1 - 373 268 l 1,11,-1 - 311 0 l 1,12,-1 - 147 0 l 1,13,-1 - 356 901 l 1,14,-1 - 520 901 l 1,15,-1 - 422 477 l 1,16,-1 - 897 901 l 1,17,-1 - 1085 901 l 1,18,-1 - 733 590 l 1,19,20 - 879 584 879 584 946.5 522.5 c 128,-1,21 - 1014 461 1014 461 1014 338 c 0,22,23 - 1014 304 1014 304 1009 260.5 c 128,-1,24 - 1004 217 1004 217 990.5 161 c 128,-1,25 - 977 105 977 105 957 51 c 128,-1,26 - 937 -3 937 -3 904 -55.5 c 128,-1,27 - 871 -108 871 -108 829.5 -147.5 c 128,-1,28 - 788 -187 788 -187 728.5 -211.5 c 128,-1,29 - 669 -236 669 -236 600 -236 c 128,-1,30 - 531 -236 531 -236 476.5 -211.5 c 128,-1,31 - 422 -187 422 -187 401 -143 c 1,32,-1 - 528 -37 l 1,33,34 - 547 -92 547 -92 574 -112.5 c 128,-1,35 - 601 -133 601 -133 655 -133 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C5 -Encoding: 1221 1221 794 -Width: 1413 -VWidth: 0 -Flags: W -HStem: -20 102<146 379> 0 102<1137 1165> 1331 102<864 1245> -LayerCount: 2 -Fore -SplineSet -1165 0 m 1,0,-1 - 938 0 l 1,1,-1 - 1245 1331 l 1,2,-1 - 864 1331 l 1,3,-1 - 616 260 l 2,4,5 - 599 187 599 187 557.5 131 c 128,-1,6 - 516 75 516 75 462 43.5 c 128,-1,7 - 408 12 408 12 351 -4 c 128,-1,8 - 294 -20 294 -20 238 -20 c 0,9,10 - 108 -20 108 -20 51 72 c 1,11,-1 - 195 133 l 1,12,13 - 217 82 217 82 291 82 c 0,14,15 - 351 82 351 82 390 140.5 c 128,-1,16 - 429 199 429 199 459 328 c 2,17,-1 - 715 1434 l 1,18,-1 - 1444 1434 l 1,19,-1 - 1137 102 l 1,20,-1 - 1382 102 l 1,21,-1 - 1147 -254 l 1,22,-1 - 1053 -254 l 1,23,-1 - 1165 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C6 -Encoding: 1222 1222 795 -Width: 1437 -VWidth: 0 -Flags: W -HStem: -20 123<1094 1190> -20 102<142 373> 799 102<821 1015> -VStem: 909 176<117 269> 1022 170<504 791> -LayerCount: 2 -Fore -SplineSet -1077 -20 m 0,0,1 - 1002 -20 1002 -20 955.5 30 c 128,-1,2 - 909 80 909 80 909 152 c 0,3,4 - 909 168 909 168 918 213 c 1,5,-1 - 1006 592 l 1,6,7 - 1022 674 1022 674 1022 711 c 0,8,9 - 1022 764 1022 764 999 781.5 c 128,-1,10 - 976 799 976 799 926 799 c 0,11,12 - 834 799 834 799 750.5 668 c 128,-1,13 - 667 537 667 537 602 260 c 0,14,15 - 585 187 585 187 545 131 c 128,-1,16 - 505 75 505 75 453 43 c 128,-1,17 - 401 11 401 11 345 -4.5 c 128,-1,18 - 289 -20 289 -20 233 -20 c 0,19,20 - 104 -20 104 -20 47 72 c 1,21,-1 - 190 133 l 1,22,23 - 212 82 212 82 287 82 c 0,24,25 - 347 82 347 82 386 140.5 c 128,-1,26 - 425 199 425 199 455 328 c 0,27,28 - 478 428 478 428 514 512.5 c 128,-1,29 - 550 597 550 597 589.5 654.5 c 128,-1,30 - 629 712 629 712 675 757 c 128,-1,31 - 721 802 721 802 762 828.5 c 128,-1,32 - 803 855 803 855 844 872 c 128,-1,33 - 885 889 885 889 914 895 c 128,-1,34 - 943 901 943 901 965 901 c 0,35,36 - 1192 901 1192 901 1192 727 c 0,37,38 - 1192 689 1192 689 1180 643 c 1,39,-1 - 1096 276 l 2,40,41 - 1085 228 1085 228 1085 182 c 0,42,43 - 1085 143 1085 143 1115.5 122.5 c 128,-1,44 - 1146 102 1146 102 1176 102 c 2,45,-1 - 1407 102 l 1,46,-1 - 1171 -254 l 1,47,-1 - 1077 -254 l 1,48,-1 - 1190 0 l 1,49,50 - 1143 -20 1143 -20 1077 -20 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C7 -Encoding: 1223 1223 796 -Width: 1351 -VWidth: 0 -Flags: W -HStem: -217 102<725 929> -59 41G<641 706> 0 43G<174 358> 717 102<537 1174> 1393 41G<496 680 1330 1513> -LayerCount: 2 -Fore -SplineSet -1249 291 m 2,0,1 - 1215 143 1215 143 1163.5 39.5 c 128,-1,2 - 1112 -64 1112 -64 1049 -118 c 128,-1,3 - 986 -172 986 -172 922.5 -194.5 c 128,-1,4 - 859 -217 859 -217 784 -217 c 0,5,6 - 726 -217 726 -217 662 -191.5 c 128,-1,7 - 598 -166 598 -166 563 -125 c 1,8,-1 - 690 -18 l 1,9,10 - 736 -115 736 -115 838 -115 c 0,11,12 - 904 -115 904 -115 963 -29.5 c 128,-1,13 - 1022 56 1022 56 1065 246 c 2,14,-1 - 1174 717 l 1,15,-1 - 514 717 l 1,16,-1 - 348 0 l 1,17,-1 - 174 0 l 1,18,-1 - 506 1434 l 1,19,-1 - 680 1434 l 1,20,-1 - 537 819 l 1,21,-1 - 1196 819 l 1,22,-1 - 1339 1434 l 1,23,-1 - 1513 1434 l 1,24,-1 - 1249 291 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C8 -Encoding: 1224 1224 797 -Width: 1054 -VWidth: 0 -Flags: W -HStem: -236 102<536 713> 0 43G<123 296> 440 102<412 872> 860 41G<322 496 969 1143> -LayerCount: 2 -Fore -SplineSet -971 160 m 2,0,1 - 928 -26 928 -26 829.5 -131 c 128,-1,2 - 731 -236 731 -236 582 -236 c 0,3,4 - 513 -236 513 -236 458.5 -211.5 c 128,-1,5 - 404 -187 404 -187 383 -143 c 1,6,-1 - 510 -37 l 1,7,8 - 529 -92 529 -92 556 -112.5 c 128,-1,9 - 583 -133 583 -133 637 -133 c 0,10,11 - 739 -133 739 -133 801 135 c 2,12,-1 - 872 440 l 1,13,-1 - 389 440 l 1,14,-1 - 287 0 l 1,15,-1 - 123 0 l 1,16,-1 - 332 901 l 1,17,-1 - 496 901 l 1,18,-1 - 412 543 l 1,19,-1 - 895 543 l 1,20,-1 - 979 901 l 1,21,-1 - 1143 901 l 1,22,-1 - 971 160 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04C9 -Encoding: 1225 1225 798 -Width: 1486 -VWidth: 0 -Flags: W -HStem: 0 102<1206 1235> 717 102<537 1174> 1393 41G<496 680 1330 1513> -LayerCount: 2 -Fore -SplineSet -1206 102 m 1,0,-1 - 1452 102 l 1,1,-1 - 1217 -254 l 1,2,-1 - 1122 -254 l 1,3,-1 - 1235 0 l 1,4,-1 - 1008 0 l 1,5,-1 - 1174 717 l 1,6,-1 - 514 717 l 1,7,-1 - 348 0 l 1,8,-1 - 174 0 l 1,9,-1 - 506 1434 l 1,10,-1 - 680 1434 l 1,11,-1 - 537 819 l 1,12,-1 - 1196 819 l 1,13,-1 - 1339 1434 l 1,14,-1 - 1513 1434 l 1,15,-1 - 1206 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CA -Encoding: 1226 1226 799 -Width: 1308 -VWidth: 0 -Flags: W -HStem: -20 123<965 1061> 0 43G<92 266> 440 102<381 842> 860 41G<292 465 939 1112> -VStem: 780 176<115 367> -LayerCount: 2 -Fore -SplineSet -1112 901 m 1,0,-1 - 967 276 l 2,1,2 - 956 228 956 228 956 182 c 0,3,4 - 956 143 956 143 986.5 122.5 c 128,-1,5 - 1017 102 1017 102 1047 102 c 2,6,-1 - 1278 102 l 1,7,-1 - 1042 -254 l 1,8,-1 - 948 -254 l 1,9,-1 - 1061 0 l 1,10,11 - 1014 -20 1014 -20 948 -20 c 0,12,13 - 873 -20 873 -20 826.5 30 c 128,-1,14 - 780 80 780 80 780 152 c 0,15,16 - 780 173 780 173 788 213 c 1,17,-1 - 842 440 l 1,18,-1 - 358 440 l 1,19,-1 - 256 0 l 1,20,-1 - 92 0 l 1,21,-1 - 301 901 l 1,22,-1 - 465 901 l 1,23,-1 - 381 543 l 1,24,-1 - 864 543 l 1,25,-1 - 948 901 l 1,26,-1 - 1112 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CB -Encoding: 1227 1227 800 -Width: 1165 -VWidth: 0 -Flags: W -HStem: 0 102<750 846> 522 102<575 900> 1393 41G<445 629 1143 1327> -VStem: 340 178<684 1135> 545 98<-315 -254> -LayerCount: 2 -Fore -SplineSet -1327 1434 m 1,0,-1 - 995 0 l 1,1,-1 - 782 0 l 1,2,3 - 779 -3 779 -3 772.5 -10 c 128,-1,4 - 766 -17 766 -17 748.5 -44 c 128,-1,5 - 731 -71 731 -71 714.5 -103.5 c 128,-1,6 - 698 -136 698 -136 678 -193 c 128,-1,7 - 658 -250 658 -250 643 -315 c 1,8,-1 - 545 -315 l 1,9,-1 - 643 102 l 1,10,-1 - 846 102 l 1,11,-1 - 954 573 l 1,12,13 - 904 550 904 550 819.5 536 c 128,-1,14 - 735 522 735 522 672 522 c 0,15,16 - 506 522 506 522 423 600 c 128,-1,17 - 340 678 340 678 340 842 c 0,18,19 - 340 950 340 950 373 1085 c 1,20,-1 - 455 1434 l 1,21,-1 - 629 1434 l 1,22,-1 - 553 1110 l 2,23,24 - 518 957 518 957 518 852 c 0,25,26 - 518 780 518 780 534 732.5 c 128,-1,27 - 550 685 550 685 581.5 662.5 c 128,-1,28 - 613 640 613 640 645.5 632.5 c 128,-1,29 - 678 625 678 625 725 625 c 0,30,31 - 854 625 854 625 987 721 c 1,32,-1 - 1153 1434 l 1,33,-1 - 1327 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CC -Encoding: 1228 1228 801 -Width: 942 -VWidth: 0 -Flags: W -HStem: 0 102<590 682> 313 102<437 717> 860 41G<273 455 857 1030> -VStem: 233 172<447 845> 385 98<-315 -254> -LayerCount: 2 -Fore -SplineSet -1030 901 m 1,0,-1 - 821 0 l 1,1,-1 - 623 0 l 1,2,3 - 619 -3 619 -3 613 -10 c 128,-1,4 - 607 -17 607 -17 589 -44 c 128,-1,5 - 571 -71 571 -71 554.5 -103.5 c 128,-1,6 - 538 -136 538 -136 518 -193 c 128,-1,7 - 498 -250 498 -250 483 -315 c 1,8,-1 - 385 -315 l 1,9,-1 - 483 102 l 1,10,-1 - 682 102 l 1,11,-1 - 741 365 l 1,12,13 - 628 313 628 313 510 313 c 0,14,15 - 360 313 360 313 296.5 368.5 c 128,-1,16 - 233 424 233 424 233 549 c 0,17,18 - 233 657 233 657 291 901 c 1,19,-1 - 455 901 l 1,20,21 - 406 689 406 689 406 584 c 0,22,23 - 406 482 406 482 444.5 449 c 128,-1,24 - 483 416 483 416 565 416 c 0,25,26 - 690 416 690 416 776 512 c 1,27,-1 - 866 901 l 1,28,-1 - 1030 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CD -Encoding: 1229 1229 802 -Width: 1761 -VWidth: 0 -Flags: W -HStem: 0 102<1481 1509> 1393 41G<496 690 1585 1788> -LayerCount: 2 -Fore -SplineSet -1481 102 m 5,0,-1 - 1726 102 l 1,1,-1 - 1491 -254 l 1,2,-1 - 1397 -254 l 1,3,-1 - 1509 0 l 1,4,-1 - 1282 0 l 1,5,-1 - 1536 1098 l 1,6,-1 - 840 102 l 1,7,-1 - 602 1098 l 1,8,-1 - 348 0 l 1,9,-1 - 174 0 l 1,10,-1 - 506 1434 l 1,11,-1 - 680 1434 l 1,12,-1 - 915 432 l 1,13,-1 - 1614 1434 l 1,14,-1 - 1788 1434 l 1,15,-1 - 1481 102 l 5,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CE -Encoding: 1230 1230 803 -Width: 1382 -VWidth: 0 -Flags: W -HStem: -20 102<32 140> 0 102<1102 1128> 860 41G<343 528 1092 1286> -VStem: -43 74<85 131> -LayerCount: 2 -Fore -SplineSet -1057 614 m 1,0,-1 - 616 25 l 1,1,-1 - 449 612 l 1,2,-1 - 356 213 l 2,3,4 - 333 114 333 114 255 47 c 128,-1,5 - 177 -20 177 -20 90 -20 c 0,6,7 - 31 -20 31 -20 -6 14 c 128,-1,8 - -43 48 -43 48 -43 100 c 0,9,10 - -43 111 -43 111 -39 131 c 1,11,-1 - 31 131 l 1,12,-1 - 31 123 l 2,13,14 - 31 105 31 105 45.5 93.5 c 128,-1,15 - 60 82 60 82 84 82 c 0,16,17 - 118 82 118 82 156 147 c 128,-1,18 - 194 212 194 212 207 276 c 1,19,-1 - 352 901 l 1,20,-1 - 516 901 l 1,21,-1 - 682 311 l 1,22,-1 - 1122 901 l 1,23,-1 - 1286 901 l 1,24,-1 - 1102 102 l 1,25,-1 - 1346 102 l 1,26,-1 - 1110 -254 l 1,27,-1 - 1016 -254 l 1,28,-1 - 1128 0 l 1,29,-1 - 913 0 l 1,30,-1 - 1057 614 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04CF -Encoding: 1231 1231 804 -Width: 356 -VWidth: 0 -Flags: W -HStem: 0 43G<92 276> 860 41G<292 475> -VStem: 92 383 -LayerCount: 2 -Fore -SplineSet -475 901 m 1,0,-1 - 266 0 l 1,1,-1 - 92 0 l 1,2,-1 - 301 901 l 1,3,-1 - 475 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04D0 -Encoding: 1232 1232 805 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> 1516 117<868 1174> -VStem: 784 78<1636 1714> 1188 76<1642 1726> -LayerCount: 2 -Back -SplineSet -1091.58 0 m 1,30,-1 -1019.9 1632.26 m 0,0,1 - 1095.68 1632.26 1179.65 1681.41 1196.03 1726.46 c 1,2,-1 - 1269.76 1705.98 l 1,3,4 - 1232.9 1603.58 1112.06 1515.52 993.28 1515.52 c 0,5,6 - 882.688 1515.52 804.864 1593.34 804.864 1687.55 c 0,7,8 - 804.864 1693.7 806.912 1699.84 806.912 1705.98 c 1,9,-1 - 888.832 1726.46 l 1,10,-1 - 888.832 1722.37 l 2,11,12 - 888.832 1679.36 946.176 1632.26 1019.9 1632.26 c 0,0,1 -1091.58 6.14355 m 1,0,-1 -30.7197 0 m 1,1,-1 - 884.736 1433.6 l 1,2,-1 - 1064.96 1433.6 l 1,3,-1 - 1255.42 0 l 1,4,-1 - 1091.58 0 l 1,5,-1 - 1036.29 409.6 l 1,6,-1 - 438.272 409.6 l 1,7,-1 - 194.56 0 l 1,8,-1 - 30.7197 0 l 1,1,-1 -927.744 1230.85 m 1,9,-1 - 499.712 512 l 1,10,-1 - 1024 512 l 1,11,-1 - 927.744 1230.85 l 1,9,-1 -EndSplineSet -Fore -Refer: 1072 57420 S 1 0 0 1 1286 246 2 -Refer: 27 65 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D1 -Encoding: 1233 1233 806 -Width: 921 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1085 117<622 929> -VStem: 154 158<136 521> 539 78<1206 1284> 711 172<113 272> 942 76<1212 1296> 1004 72<93 131> -LayerCount: 2 -Back -SplineSet -776.192 1202.18 m 0 - 851.968 1202.18 935.936 1251.33 952.32 1296.38 c 1 - 1026.05 1275.9 l 1 - 989.184 1173.5 868.352 1085.44 749.568 1085.44 c 0 - 638.976 1085.44 561.152 1163.26 561.152 1257.47 c 0 - 561.152 1263.62 563.2 1269.76 563.2 1275.9 c 1 - 645.12 1296.38 l 1 - 645.12 1292.29 l 2 - 645.12 1249.28 702.464 1202.18 776.192 1202.18 c 0 -153.6 309.248 m 0 - 153.6 616.448 440.32 921.6 681.984 921.6 c 0 - 851.968 921.6 944.128 878.592 1024 837.632 c 1 - 894.976 276.48 l 2 - 886.784 241.664 882.688 206.848 882.688 178.176 c 0 - 882.688 120.832 899.072 81.9199 925.696 81.9199 c 0 - 962.561 81.9199 997.376 104.448 1003.52 131.072 c 1 - 1075.2 131.072 l 1 - 1056.77 47.1035 966.656 -20.4805 874.496 -20.4805 c 0 - 817.152 -20.4805 772.096 4.0957 743.424 43.0078 c 1 - 645.12 2.04785 542.72 -20.4805 440.32 -20.4805 c 0 - 260.096 -20.4805 153.6 120.832 153.6 309.248 c 0 -851.968 796.672 m 1 - 813.056 811.008 761.856 819.2 688.128 819.2 c 0 - 387.072 819.2 311.296 413.696 311.296 282.624 c 0 - 311.296 126.976 397.312 81.9199 493.568 81.9199 c 0 - 565.248 81.9199 638.976 98.3037 710.656 131.072 c 1 - 710.656 139.264 710.656 147.456 710.656 155.648 c 0 - 710.656 174.08 712.704 192.512 716.8 212.992 c 2 - 851.968 796.672 l 1 -EndSplineSet -Fore -Refer: 1072 57420 S 1 0 0 1 1040 -184 2 -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D2 -Encoding: 1234 1234 807 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43<39 218 1085 1264> 410 102<389 913> 1393 41<546 756> 1516 178<383 547 752 915> -VStem: 383 164<1516 1694> 752 164<1516 1694> -LayerCount: 2 -Fore -Refer: 142 196 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D3 -Encoding: 1235 1235 808 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<356 691> 0 43<694 858> 520 102<343 688> 819 102<304 636> 1085 178<221 385 590 754> -VStem: 94 164<178 440> 221 164<1085 1264> 590 164<1085 1264> 694 164<0 16 107 507 606 754> -LayerCount: 2 -Fore -Refer: 132 228 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D4 -Encoding: 1236 1236 809 -Width: 1558 -VWidth: 0 -Flags: W -HStem: 0 102<788 1475> 410 102<389 614> 799 102<788 1257> 1331 102<788 1442> -VStem: 614 174<102 410 512 799 901 1130> -LayerCount: 2 -Fore -Refer: 168 198 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D5 -Encoding: 1237 1237 810 -Width: 1632 -VWidth: 0 -Flags: W -HStem: -20 102<356 690 1019 1337> 451 102<868 1374> 520 102<343 688> 819 102<304 637 1007 1266> -VStem: 94 164<178 440> 694 164<250 451> -LayerCount: 2 -Fore -Refer: 169 230 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D6 -Encoding: 1238 1238 811 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> 1516 117<745 1051> -VStem: 662 78<1636 1714> 1065 76<1642 1726> -LayerCount: 2 -Back -SplineSet -942.08 0 m 1 - 81.9199 0 l 1 - 413.696 1433.6 l 1 - 1241.09 1433.6 l 1 - 1216.51 1331.2 l 9 - 563.2 1331.2 l 1 - 464.896 901.12 l 1 - 933.888 901.12 l 17 - 909.312 798.72 l 9 - 440.32 798.72 l 1 - 280.576 102.4 l 1 - 966.656 102.4 l 17 - 942.08 0 l 1 -899.072 1632.26 m 0 - 974.848 1632.26 1058.82 1681.41 1075.2 1726.46 c 1 - 1148.93 1705.98 l 1 - 1112.06 1603.58 991.232 1515.52 872.448 1515.52 c 0 - 761.856 1515.52 684.032 1593.34 684.032 1687.55 c 0 - 684.032 1693.7 686.08 1699.84 686.08 1705.98 c 1 - 768 1726.46 l 1 - 768 1722.37 l 2 - 768 1679.36 825.344 1632.26 899.072 1632.26 c 0 -EndSplineSet -Fore -Refer: 1072 57420 N 1 0 0 1 1163 246 2 -Refer: 32 69 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D7 -Encoding: 1239 1239 812 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1085 117<628 935> -VStem: 150 166<182 446> 545 78<1206 1284> 872 160<556 758> 948 76<1212 1296> -LayerCount: 2 -Back -SplineSet -1032.19 571.392 m 0 - 1032.19 503.808 985.088 450.56 843.776 450.56 c 10 - 327.68 450.56 l 1 - 319.488 413.696 315.392 376.832 315.392 339.968 c 0 - 315.392 180.224 413.696 81.9199 573.44 81.9199 c 0 - 677.888 81.9199 761.856 129.024 827.392 204.8 c 1 - 940.032 157.696 l 1 - 833.536 53.248 688.128 -20.4805 520.192 -20.4805 c 0 - 294.912 -20.4805 149.504 110.592 149.504 323.584 c 0 - 149.504 651.264 442.368 921.6 696.32 921.6 c 0 - 929.792 921.6 1032.19 755.712 1032.19 571.392 c 0 -362.496 552.96 m 1 - 786.432 552.96 l 2 - 843.776 552.96 872.448 563.2 872.448 595.968 c 0 - 872.448 727.04 819.2 819.2 702.464 819.2 c 0 - 559.104 819.2 430.08 702.464 362.496 552.96 c 1 -778.24 1202.18 m 0 - 854.016 1202.18 937.984 1251.33 954.368 1296.38 c 1 - 1028.1 1275.9 l 1 - 991.232 1173.5 870.4 1085.44 751.616 1085.44 c 0 - 641.024 1085.44 563.2 1163.26 563.2 1257.47 c 0 - 563.2 1263.62 565.248 1269.76 565.248 1275.9 c 1 - 647.168 1296.38 l 1 - 647.168 1292.29 l 2 - 647.168 1249.28 704.512 1202.18 778.24 1202.18 c 0 -EndSplineSet -Fore -Refer: 1072 57420 S 1 0 0 1 1047 -184 2 -Refer: 435 1077 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04D8 -Encoding: 1240 1240 813 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<542 855> 614 102<262 1143> 1352 102<490 863> -VStem: 1143 178<427 614 717 1012> -LayerCount: 2 -Fore -Refer: 647 399 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: afii10846 -Encoding: 1241 1241 814 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<371 628> 348 102<262 768> 819 102<299 614> -VStem: 778 164<451 645> -LayerCount: 2 -Fore -Refer: 595 477 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04DA -Encoding: 1242 1242 815 -Width: 1402 -VWidth: 0 -Flags: W -HStem: -20 102<542 855> 614 102<262 1143> 1352 102<490 863> 1516 178<438 602 807 971> -VStem: 438 164<1516 1694> 807 164<1516 1694> 1143 178<427 614 717 1012> -LayerCount: 2 -Fore -Refer: 647 399 N 1 0 0 1 0 0 2 -Refer: 99 776 S 1 0 0 1 1294 246 2 -Validated: 1 -EndChar - -StartChar: uni04DB -Encoding: 1243 1243 816 -Width: 1028 -VWidth: 0 -Flags: W -HStem: -20 102<371 628> 348 102<262 768> 819 102<299 614> 1085 178<213 377 582 745> -VStem: 213 164<1085 1264> 582 164<1085 1264> 778 164<451 645> -LayerCount: 2 -Fore -Refer: 595 477 N 1 0 0 1 0 0 2 -Refer: 99 776 N 1 0 0 1 1069 -184 2 -Validated: 1 -EndChar - -StartChar: uni04DC -Encoding: 1244 1244 817 -Width: 1525 -VWidth: 0 -Flags: W -HStem: 0 43<86 260 721 895 1356 1530> 1331 102<106 189 1427 1509> 1516 178<541 705 909 1073> -VStem: 86 174<0 96> 541 164<1516 1694> 721 174<0 666 778 1434> 909 164<1516 1694> 1356 174<0 96> -LayerCount: 2 -Fore -Refer: 404 1046 N 1 0 0 1 0 0 3 -Refer: 99 776 S 1 0 0 1 1397 246 2 -Validated: 1 -EndChar - -StartChar: uni04DD -Encoding: 1245 1245 818 -Width: 1382 -VWidth: 0 -Flags: W -HStem: -20 102<91 202> 0 43<610 784 1081 1255> 799 102<328 392 1335 1450> 1085 150<748 862 1075 1190> -VStem: 16 74<85 131> 713 184 1040 184 1083 174<0 183> -LayerCount: 2 -Fore -Refer: 436 1078 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1249 -184 2 -Validated: 1 -EndChar - -StartChar: uni04DE -Encoding: 1246 1246 819 -Width: 1017 -VWidth: 0 -Flags: W -HStem: -20 102<332 660> 799 102<373 641> 1352 102<345 676> 1516 178<246 410 614 778> -VStem: 246 164<1516 1694> 614 164<1516 1694> 752 174<1000 1276> 813 174<263 622> -LayerCount: 2 -Fore -Refer: 405 1047 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1102 246 2 -Validated: 1 -EndChar - -StartChar: uni04DF -Encoding: 1247 1247 820 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<259 582> 451 102<295 543> 819 102<261 562> 1085 178<160 324 528 692> -VStem: 160 164<1085 1264> 528 164<1085 1264> 598 164<604 783> 647 164<145 379> -LayerCount: 2 -Fore -Refer: 437 1079 N 1 0 0 1 0 0 3 -Refer: 99 776 N 1 0 0 1 1016 -184 2 -Validated: 1 -EndChar - -StartChar: uni04E0 -Encoding: 1248 1248 821 -Width: 1030 -VWidth: 0 -Flags: W -HStem: -20 102<322 620> 782 102<575 613> 1331 102<158 657> -VStem: 61 137<202 327> 762 174<241 621> -LayerCount: 2 -Fore -Refer: 622 439 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E1 -Encoding: 1249 1249 822 -Width: 940 -VWidth: 0 -Flags: W -HStem: -410 102<262 579> 270 102<508 568> 799 102<90 590> -VStem: 694 164<-190 144> -LayerCount: 2 -Fore -Refer: 623 658 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E2 -Encoding: 1250 1250 823 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1063 1237> 1393 41<174 348 1063 1237> 1556 82<475 946> -VStem: 174 174<0 61 309 1434> 475 471<1556 1638> 1063 174<0 1122 1372 1434> -LayerCount: 2 -Fore -Refer: 406 1048 N 1 0 0 1 0 0 2 -Refer: 96 772 S 1 0 0 1 1309 287 2 -Validated: 1 -EndChar - -StartChar: uni04E3 -Encoding: 1251 1251 824 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<380 690 896 1055> 860 41<281 455 918 1092> 1126 82<524 977> -VStem: 154 172<137 501> 506 489 762 174<142 374> 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 264 363 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E4 -Encoding: 1252 1252 825 -Width: 1406 -VWidth: 0 -Flags: W -HStem: 0 43<174 348 1063 1237> 1393 41<174 348 1063 1237> 1516 178<438 602 807 971> -VStem: 174 174<0 61 309 1434> 438 164<1516 1694> 807 164<1516 1694> 1063 174<0 1122 1372 1434> -LayerCount: 2 -Fore -Refer: 406 1048 N 1 0 0 1 0 0 2 -Refer: 99 776 S 1 0 0 1 1294 246 2 -Validated: 1 -EndChar - -StartChar: uni04E5 -Encoding: 1253 1253 826 -Width: 1110 -VWidth: 0 -Flags: W -HStem: 0 43<123 316 770 934> 860 41<123 287 741 934> 1085 178<260 424 629 793> -VStem: 123 164<227 901> 260 164<1085 1264> 629 164<1085 1264> 770 164<0 668> -LayerCount: 2 -Fore -Refer: 137 252 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E6 -Encoding: 1254 1254 827 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> 1516 150<809 924 1137 1251> -VStem: 199 176<286 770> 774 184 1102 184 1315 176<653 1162> -LayerCount: 2 -Fore -Refer: 157 214 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E7 -Encoding: 1255 1255 828 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1085 150<549 664 877 991> -VStem: 147 164<157 530> 514 184 842 184 897 168<366 739> -LayerCount: 2 -Fore -Refer: 136 246 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04E8 -Encoding: 1256 1256 829 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<554 862> 666 102<416 1274> 1352 102<810 1133> -VStem: 199 178<286 663> 1315 176<771 1163> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -Refer: 632 415 N 1 0 0 1 -41 0 2 -Validated: 1 -EndChar - -StartChar: uni04E9 -Encoding: 1257 1257 830 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 670> 399 102<344 868> 819 102<554 823> -VStem: 147 164<157 398> 897 168<504 739> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -Refer: 639 629 N 1 0 0 1 -29 0 2 -Validated: 1 -EndChar - -StartChar: uni04EA -Encoding: 1258 1258 831 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<554 862> 666 102<416 1274> 1352 102<810 1133> 1516 150<809 924 1137 1251> -VStem: 199 178<286 663> 774 184 1102 184 1315 176<771 1163> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1311 246 2 -Refer: 632 415 N 1 0 0 1 -41 0 2 -Validated: 1 -EndChar - -StartChar: uni04EB -Encoding: 1259 1259 832 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<384 670> 399 102<344 868> 819 102<554 823> 1085 150<549 664 877 991> -VStem: 147 164<157 398> 514 184 842 184 897 168<504 739> -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1051 -184 2 -Refer: 639 629 N 1 0 0 1 -29 0 2 -Validated: 1 -EndChar - -StartChar: uni04EC -Encoding: 1260 1260 833 -Width: 1347 -VWidth: 0 -Flags: W -HStem: -20 102<352 762> 713 102<717 1198> 1352 102<677 1087> 1516 150<711 825 1038 1153> -VStem: 676 184 1004 184 1233 172<818 1191> -LayerCount: 2 -Fore -Refer: 427 1069 N 1 0 0 1 0 0 2 -Refer: 99 776 N 1 0 0 1 1212 246 2 -Validated: 1 -EndChar - -StartChar: uni04ED -Encoding: 1261 1261 834 -Width: 989 -VWidth: 0 -Flags: W -HStem: -20 102<287 596> 430 102<481 838> 819 102<480 775> 1085 150<518 633 846 961> -VStem: 483 184 811 184 856 168<532 734> -LayerCount: 2 -Fore -Refer: 459 1101 N 1 0 0 1 0 0 2 -Refer: 99 776 S 1 0 0 1 1020 -184 2 -Validated: 1 -EndChar - -StartChar: uni04EE -Encoding: 1262 1262 835 -Width: 1081 -VWidth: 0 -Flags: W -HStem: -20 102<277 402> 1393 41<82 246 874 1063> 1556 82<338 809> -VStem: 338 471<1556 1638> -LayerCount: 2 -Fore -Refer: 417 1059 N 1 0 0 1 0 0 2 -Refer: 96 772 N 1 0 0 1 1171 287 2 -Validated: 1 -EndChar - -StartChar: uni04EF -Encoding: 1263 1263 836 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<335 623> -20 102<380 692> 860 41<281 455 918 1092> 1126 82<518 971> -VStem: 154 172<137 501> 500 489 -LayerCount: 2 -Fore -Refer: 449 1091 S 1 0 0 1 0 0 2 -Refer: 96 772 N 1 0 0 1 1040 -143 2 -Validated: 1 -EndChar - -StartChar: uni04F0 -Encoding: 1264 1264 837 -Width: 1081 -VWidth: 0 -Flags: W -HStem: -20 102<277 402> 1393 41<82 246 874 1063> 1516 178<307 471 676 840> -VStem: 307 164<1516 1694> 676 164<1516 1694> -LayerCount: 2 -Fore -Refer: 417 1059 N 1 0 0 1 0 0 2 -Refer: 99 776 S 1 0 0 1 1163 246 2 -Validated: 1 -EndChar - -StartChar: uni04F1 -Encoding: 1265 1265 838 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<335 623> -20 102<380 692> 860 41<281 455 918 1092> 1085 150<518 633 846 961> -VStem: 154 172<137 501> 483 184 811 184 -LayerCount: 2 -Fore -Refer: 99 776 N 1 0 0 1 1020 -184 2 -Refer: 449 1091 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni04F2 -Encoding: 1266 1266 839 -Width: 1081 -VWidth: 0 -Flags: W -HStem: -20 102<254 382> 1393 41<362 517 1145 1343> 1501 387 -VStem: 604 406 932 406 -LayerCount: 2 -Fore -Refer: 417 1059 N 1 0 0 1 0 0 2 -Refer: 101 779 N 1 0 0 1 1161 246 2 -Validated: 1 -EndChar - -StartChar: uni04F3 -Encoding: 1267 1267 840 -Width: 880 -VWidth: 0 -Flags: W -HStem: -348 102<335 623> -20 102<380 692> 860 41<281 455 918 1092> 1071 387 -VStem: 154 172<137 501> 492 406 819 406 -LayerCount: 2 -Fore -Refer: 449 1091 N 1 0 0 1 0 0 2 -Refer: 101 779 N 1 0 0 1 1049 -184 2 -Validated: 1 -EndChar - -StartChar: uni04F4 -Encoding: 1268 1268 841 -Width: 1165 -VWidth: 0 -Flags: W -HStem: 0 43<821 995> 522 102<425 746> 1393 41<123 297 821 995> 1516 178<291 455 659 823> -VStem: 123 174<791 1434> 291 164<1516 1694> 659 164<1516 1694> 821 174<0 573 688 1434> -LayerCount: 2 -Fore -Refer: 421 1063 N 1 0 0 1 0 0 2 -Refer: 99 776 N 1 0 0 1 1147 246 2 -Validated: 1 -EndChar - -StartChar: uni04F5 -Encoding: 1269 1269 842 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<828 1003> 313 102<448 727> 860 41<284 465 867 1040> 1085 150<504 618 831 946> -VStem: 244 172<446 845> 469 184 711 174<82 266> 797 184 1006 70<93 131> -LayerCount: 2 -Fore -Refer: 453 1095 N 1 0 0 1 0 0 2 -Refer: 99 776 N 1 0 0 1 1006 -184 2 -Validated: 1 -EndChar - -StartChar: uni04F8 -Encoding: 1272 1272 843 -Width: 1505 -VWidth: 0 -Flags: W -HStem: 0 43<1075 1259> 0 102<281 667> 799 102<465 819> 1393 41<404 588 1397 1581> 1516 150<795 909 1122 1237> -VStem: 760 184 889 172<362 724> 1075 506 1087 184 -LayerCount: 2 -Fore -Refer: 425 1067 N 1 0 0 1 0 0 2 -Refer: 99 776 N 1 0 0 1 1296 246 2 -Validated: 1 -EndChar - -StartChar: uni04F9 -Encoding: 1273 1273 844 -Width: 1302 -VWidth: 0 -Flags: W -HStem: -20 102<345 617 1071 1248> 481 102<415 700> 860 41<281 455 1111 1284> 1085 150<602 717 930 1044> -VStem: 147 156<124 366> 567 184 729 168<201 452> 895 184 954 174<85 272> 1249 70<93 131> -LayerCount: 2 -Fore -Refer: 457 1099 N 1 0 0 1 0 0 2 -Refer: 99 776 N 1 0 0 1 1104 -184 2 -Validated: 1 -EndChar - -StartChar: uni04F6 -Encoding: 1270 1270 845 -Width: 899 -VWidth: 0 -Flags: W -HStem: 1331 102<573 1227> -VStem: 197 117<-320 -186> -LayerCount: 2 -Fore -SplineSet -170 0 m 1,0,-1 - 92 0 l 1,1,-1 - 424 1434 l 1,2,-1 - 1251 1434 l 1,3,-1 - 1227 1331 l 1,4,-1 - 573 1331 l 1,5,-1 - 266 0 l 1,6,-1 - 223 -125 l 1,7,8 - 268 -141 268 -141 290.5 -174 c 128,-1,9 - 313 -207 313 -207 313 -238 c 0,10,11 - 313 -287 313 -287 259 -329 c 128,-1,12 - 205 -371 205 -371 133 -397 c 1,13,-1 - 119 -373 l 1,14,15 - 149 -353 149 -353 173 -320.5 c 128,-1,16 - 197 -288 197 -288 197 -254 c 0,17,18 - 197 -194 197 -194 104 -164 c 1,19,-1 - 170 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04F7 -Encoding: 1271 1271 846 -Width: 792 -VWidth: 0 -Flags: W -HStem: 819 102<382 631> -VStem: 186 174<97 261> 432 117<-320 -186> 641 174<661 805> -LayerCount: 2 -Fore -SplineSet -360 164 m 128,-1,1 - 360 120 360 120 393.5 101 c 128,-1,2 - 427 82 427 82 496 82 c 0,3,4 - 550 82 550 82 624 127.5 c 128,-1,5 - 698 173 698 173 723 221 c 1,6,-1 - 788 205 l 1,7,8 - 690 7 690 7 496 -16 c 1,9,-1 - 459 -125 l 1,10,11 - 504 -141 504 -141 526.5 -174 c 128,-1,12 - 549 -207 549 -207 549 -238 c 0,13,14 - 549 -287 549 -287 495 -329 c 128,-1,15 - 441 -371 441 -371 369 -397 c 1,16,-1 - 354 -373 l 1,17,18 - 384 -353 384 -353 408 -320.5 c 128,-1,19 - 432 -288 432 -288 432 -254 c 0,20,21 - 432 -194 432 -194 340 -164 c 1,22,-1 - 397 -18 l 1,23,24 - 186 -2 186 -2 186 156 c 0,25,26 - 186 216 186 216 233 288 c 128,-1,27 - 280 360 280 360 347 423.5 c 128,-1,28 - 414 487 414 487 480.5 546 c 128,-1,29 - 547 605 547 605 594 656 c 128,-1,30 - 641 707 641 707 641 737 c 0,31,32 - 641 819 641 819 506 819 c 0,33,34 - 453 819 453 819 378 772.5 c 128,-1,35 - 303 726 303 726 276 678 c 1,36,-1 - 211 694 l 1,37,38 - 324 922 324 922 557 922 c 0,39,40 - 691 922 691 922 753 874.5 c 128,-1,41 - 815 827 815 827 815 745 c 0,42,43 - 815 699 815 699 768 637 c 128,-1,44 - 721 575 721 575 654.5 513.5 c 128,-1,45 - 588 452 588 452 521 391 c 128,-1,46 - 454 330 454 330 407 269 c 128,-1,0 - 360 208 360 208 360 164 c 128,-1,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FA -Encoding: 1274 1274 847 -Width: 1136 -VWidth: 0 -Flags: W -HStem: -348 102<134 365> 799 102<291 457 655 840> 1331 102<754 1407> -LayerCount: 2 -Fore -SplineSet -266 799 m 1,0,-1 - 291 901 l 1,1,-1 - 481 901 l 1,2,-1 - 604 1434 l 1,3,-1 - 1432 1434 l 1,4,-1 - 1407 1331 l 1,5,-1 - 754 1331 l 1,6,-1 - 655 901 l 1,7,-1 - 864 901 l 1,8,-1 - 840 799 l 1,9,-1 - 631 799 l 1,10,-1 - 471 102 l 1,11,-1 - 635 102 l 1,12,-1 - 594 -68 l 2,13,14 - 577 -141 577 -141 537 -197 c 128,-1,15 - 497 -253 497 -253 445 -285 c 128,-1,16 - 393 -317 393 -317 337 -332.5 c 128,-1,17 - 281 -348 281 -348 225 -348 c 0,18,19 - 96 -348 96 -348 39 -256 c 1,20,-1 - 182 -195 l 1,21,22 - 204 -246 204 -246 279 -246 c 0,23,24 - 339 -246 339 -246 377.5 -187.5 c 128,-1,25 - 416 -129 416 -129 446 0 c 1,26,-1 - 272 0 l 1,27,-1 - 457 799 l 1,28,-1 - 266 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FB -Encoding: 1275 1275 848 -Width: 792 -VWidth: 0 -Flags: W -HStem: -348 102<252 483> -20 102<371 564> 393 102<190 317 635 739> 819 102<382 631> -VStem: 186 174<96 264> 641 174<659 805> 723 66<182 208> -LayerCount: 2 -Fore -SplineSet -360 164 m 0,0,1 - 360 120 360 120 393.5 101 c 128,-1,2 - 427 82 427 82 496 82 c 0,3,4 - 550 82 550 82 624 127.5 c 128,-1,5 - 698 173 698 173 723 221 c 1,6,-1 - 788 205 l 1,7,-1 - 713 -68 l 2,8,9 - 693 -140 693 -140 652.5 -196 c 128,-1,10 - 612 -252 612 -252 561 -284 c 128,-1,11 - 510 -316 510 -316 455 -332 c 128,-1,12 - 400 -348 400 -348 344 -348 c 0,13,14 - 215 -348 215 -348 158 -256 c 1,15,-1 - 301 -195 l 1,16,17 - 323 -246 323 -246 397 -246 c 0,18,19 - 457 -246 457 -246 495 -188 c 128,-1,20 - 533 -130 533 -130 565 -2 c 1,21,22 - 510 -20 510 -20 444 -20 c 0,23,24 - 310 -20 310 -20 248 27 c 128,-1,25 - 186 74 186 74 186 156 c 0,26,27 - 186 255 186 255 317 393 c 1,28,-1 - 166 393 l 1,29,-1 - 190 496 l 1,30,-1 - 424 496 l 1,31,32 - 436 507 436 507 460 528.5 c 128,-1,33 - 484 550 484 550 496.5 561 c 128,-1,34 - 509 572 509 572 529 590.5 c 128,-1,35 - 549 609 549 609 560.5 620.5 c 128,-1,36 - 572 632 572 632 587 647.5 c 128,-1,37 - 602 663 602 663 610 673.5 c 128,-1,38 - 618 684 618 684 626 696.5 c 128,-1,39 - 634 709 634 709 637.5 718.5 c 128,-1,40 - 641 728 641 728 641 737 c 0,41,42 - 641 819 641 819 506 819 c 0,43,44 - 453 819 453 819 378 772.5 c 128,-1,45 - 303 726 303 726 276 678 c 1,46,-1 - 211 694 l 1,47,48 - 324 922 324 922 557 922 c 0,49,50 - 691 922 691 922 753 874.5 c 128,-1,51 - 815 827 815 827 815 745 c 0,52,53 - 815 696 815 696 768.5 636.5 c 128,-1,54 - 722 577 722 577 635 496 c 1,55,-1 - 764 496 l 1,56,-1 - 739 393 l 1,57,-1 - 524 393 l 1,58,59 - 444 317 444 317 402 263 c 128,-1,60 - 360 209 360 209 360 164 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FC -Encoding: 1276 1276 849 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -217 102<583 785> -59 41G<500 564> 0 43G<86 289> 1393 41G<459 644 1126 1331> -VStem: 831 174<-65 276> -LayerCount: 2 -Fore -SplineSet -1006 57 m 0,0,1 - 1006 42 1006 42 999 15 c 128,-1,2 - 992 -12 992 -12 968 -54 c 128,-1,3 - 944 -96 944 -96 907.5 -131 c 128,-1,4 - 871 -166 871 -166 801.5 -191.5 c 128,-1,5 - 732 -217 732 -217 643 -217 c 0,6,7 - 585 -217 585 -217 521 -191.5 c 128,-1,8 - 457 -166 457 -166 422 -125 c 1,9,-1 - 549 -18 l 1,10,11 - 573 -68 573 -68 608 -91.5 c 128,-1,12 - 643 -115 643 -115 696 -115 c 0,13,14 - 738 -115 738 -115 768 -91 c 128,-1,15 - 798 -67 798 -67 810 -32.5 c 128,-1,16 - 822 2 822 2 826.5 24 c 128,-1,17 - 831 46 831 46 831 57 c 0,18,19 - 831 108 831 108 802.5 218.5 c 128,-1,20 - 774 329 774 329 698 590 c 1,21,-1 - 258 0 l 1,22,-1 - 86 0 l 1,23,-1 - 651 758 l 1,24,-1 - 459 1434 l 1,25,-1 - 633 1434 l 1,26,-1 - 776 926 l 1,27,-1 - 1157 1434 l 1,28,-1 - 1331 1434 l 1,29,-1 - 825 758 l 1,30,31 - 973 244 973 244 995 139 c 0,32,33 - 1006 84 1006 84 1006 57 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FD -Encoding: 1277 1277 850 -Width: 849 -VWidth: 0 -Flags: W -HStem: -258 102<330 517> 0 43G<8 222> 860 41G<274 467 769 981> -VStem: 584 166<-83 260> -LayerCount: 2 -Fore -SplineSet -432 -156 m 0,0,1 - 476 -156 476 -156 508.5 -125.5 c 128,-1,2 - 541 -95 541 -95 556 -51.5 c 128,-1,3 - 571 -8 571 -8 577.5 25 c 128,-1,4 - 584 58 584 58 584 78 c 0,5,6 - 584 132 584 132 563.5 195.5 c 128,-1,7 - 543 259 543 259 500 358 c 1,8,-1 - 186 0 l 1,9,-1 - 8 0 l 1,10,-1 - 444 494 l 1,11,-1 - 274 901 l 1,12,-1 - 451 901 l 1,13,-1 - 563 629 l 1,14,-1 - 805 901 l 1,15,-1 - 981 901 l 1,16,-1 - 623 494 l 1,17,18 - 750 200 750 200 750 76 c 0,19,20 - 750 69 750 69 749 57 c 128,-1,21 - 748 45 748 45 740.5 10.5 c 128,-1,22 - 733 -24 733 -24 720.5 -56 c 128,-1,23 - 708 -88 708 -88 680 -126.5 c 128,-1,24 - 652 -165 652 -165 614.5 -192.5 c 128,-1,25 - 577 -220 577 -220 515.5 -239 c 128,-1,26 - 454 -258 454 -258 379 -258 c 0,27,28 - 310 -258 310 -258 254.5 -234 c 128,-1,29 - 199 -210 199 -210 178 -166 c 1,30,-1 - 305 -59 l 1,31,32 - 324 -115 324 -115 351 -135.5 c 128,-1,33 - 378 -156 378 -156 432 -156 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FE -Encoding: 1278 1278 851 -Width: 1191 -VWidth: 0 -Flags: W -HStem: 0 43G<41 254 802 997> 719 82<356 573 817 1034> 1393 41G<414 609 1072 1286> -LayerCount: 2 -Fore -SplineSet -573 719 m 1,0,-1 - 328 719 l 1,1,-1 - 356 801 l 1,2,-1 - 590 801 l 1,3,-1 - 414 1434 l 1,4,-1 - 598 1434 l 1,5,-1 - 735 938 l 1,6,-1 - 1102 1434 l 1,7,-1 - 1286 1434 l 1,8,-1 - 817 801 l 1,9,-1 - 1061 801 l 1,10,-1 - 1034 719 l 1,11,-1 - 799 719 l 1,12,-1 - 997 0 l 1,13,-1 - 813 0 l 1,14,-1 - 651 578 l 1,15,-1 - 223 0 l 1,16,-1 - 41 0 l 1,17,-1 - 573 719 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni04FF -Encoding: 1279 1279 852 -Width: 833 -VWidth: 0 -Flags: W -HStem: 0 43G<61 276 687 883> 455 82<233 463 713 913> 860 41G<328 521 822 1034> -LayerCount: 2 -Fore -SplineSet -463 455 m 1,0,-1 - 207 455 l 1,1,-1 - 233 537 l 1,2,-1 - 479 537 l 1,3,-1 - 328 901 l 1,4,-1 - 504 901 l 1,5,-1 - 616 629 l 1,6,-1 - 858 901 l 1,7,-1 - 1034 901 l 1,8,-1 - 713 537 l 1,9,-1 - 942 537 l 1,10,-1 - 913 455 l 1,11,-1 - 690 455 l 1,12,-1 - 883 0 l 1,13,-1 - 705 0 l 1,14,-1 - 555 358 l 1,15,-1 - 240 0 l 1,16,-1 - 61 0 l 1,17,-1 - 463 455 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0510 -Encoding: 1296 1296 853 -Width: 1077 -VWidth: 0 -Flags: W -HStem: -20 102<441 769> 799 102<647 881> 1352 102<692 1025> -VStem: 174 174<178 537> 397 176<966 1224> -LayerCount: 2 -Fore -Refer: 610 400 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0511 -Encoding: 1297 1297 854 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<319 643> 451 102<466 682> 819 102<490 789> -VStem: 113 168<123 346> 268 164<590 764> 815 127<732 787> -LayerCount: 2 -Fore -Refer: 611 603 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni0512 -Encoding: 1298 1298 855 -Width: 1280 -VWidth: 0 -Flags: W -HStem: -348 102<625 858> -20 102<146 379> 1331 102<864 1245> -LayerCount: 2 -Fore -SplineSet -1096 -68 m 6,0,1 - 1079 -141 1079 -141 1037.5 -197 c 132,-1,2 - 996 -253 996 -253 942 -284.5 c 132,-1,3 - 888 -316 888 -316 831 -332 c 132,-1,4 - 774 -348 774 -348 717 -348 c 4,5,6 - 587 -348 587 -348 530 -256 c 5,7,-1 - 674 -195 l 5,8,9 - 696 -246 696 -246 770 -246 c 4,10,11 - 830 -246 830 -246 869 -187.5 c 132,-1,12 - 908 -129 908 -129 938 0 c 6,13,-1 - 1245 1331 l 1,14,-1 - 864 1331 l 1,15,-1 - 616 260 l 2,16,17 - 599 187 599 187 557.5 131 c 128,-1,18 - 516 75 516 75 462 43.5 c 128,-1,19 - 408 12 408 12 351 -4 c 128,-1,20 - 294 -20 294 -20 238 -20 c 0,21,22 - 108 -20 108 -20 51 72 c 1,23,-1 - 195 133 l 1,24,25 - 217 82 217 82 291 82 c 0,26,27 - 351 82 351 82 390 140.5 c 128,-1,28 - 429 199 429 199 459 328 c 2,29,-1 - 715 1434 l 1,30,-1 - 1444 1434 l 1,31,-1 - 1096 -68 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0513 -Encoding: 1299 1299 856 -Width: 1138 -VWidth: 0 -Flags: W -HStem: -348 102<555 787> -20 102<142 373> 799 102<821 1015> -VStem: 1022 170<509 791> -LayerCount: 2 -Fore -SplineSet -1016 -68 m 6,0,1 - 999 -141 999 -141 959 -197 c 132,-1,2 - 919 -253 919 -253 867 -285 c 132,-1,3 - 815 -317 815 -317 759 -332.5 c 132,-1,4 - 703 -348 703 -348 647 -348 c 4,5,6 - 518 -348 518 -348 461 -256 c 5,7,-1 - 604 -195 l 5,8,9 - 626 -246 626 -246 700 -246 c 4,10,11 - 760 -246 760 -246 799 -187.5 c 132,-1,12 - 838 -129 838 -129 868 0 c 6,13,-1 - 1006 592 l 1,14,15 - 1022 674 1022 674 1022 711 c 0,16,17 - 1022 764 1022 764 999 781.5 c 128,-1,18 - 976 799 976 799 926 799 c 0,19,20 - 834 799 834 799 750.5 668 c 128,-1,21 - 667 537 667 537 602 260 c 0,22,23 - 585 187 585 187 545 131 c 128,-1,24 - 505 75 505 75 453 43 c 128,-1,25 - 401 11 401 11 345 -4.5 c 128,-1,26 - 289 -20 289 -20 233 -20 c 0,27,28 - 104 -20 104 -20 47 72 c 1,29,-1 - 190 133 l 1,30,31 - 212 82 212 82 287 82 c 0,32,33 - 347 82 347 82 386 140.5 c 128,-1,34 - 425 199 425 199 455 328 c 0,35,36 - 478 428 478 428 514 512.5 c 128,-1,37 - 550 597 550 597 589.5 654.5 c 128,-1,38 - 629 712 629 712 675 757 c 128,-1,39 - 721 802 721 802 762 828.5 c 128,-1,40 - 803 855 803 855 844 872 c 128,-1,41 - 885 889 885 889 914 895 c 128,-1,42 - 943 901 943 901 965 901 c 0,43,44 - 1192 901 1192 901 1192 727 c 0,45,46 - 1192 689 1192 689 1180 643 c 1,47,-1 - 1016 -68 l 6,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni051A -Encoding: 1306 1306 857 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -348 102<894 1034> -14 96<543 580 756 866> 1352 102<782 1146> -VStem: 199 174<265 777> 578 178<-121 -15> 1317 174<662 1166> -LayerCount: 2 -Fore -Refer: 43 81 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051B -Encoding: 1307 1307 858 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -410 102<831 1008> -20 102<389 663> 819 102<538 861> -VStem: 156 168<148 534> 715 174<-306 -13> 909 158<450 772> 1010 70<-296 -258> -LayerCount: 2 -Fore -Refer: 17 113 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051C -Encoding: 1308 1308 859 -Width: 1771 -VWidth: 0 -Flags: W -HStem: 0 43<461 668 1061 1268> 860 41<952 1157> 1393 41<332 508 1847 2042> -LayerCount: 2 -Fore -Refer: 50 87 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051D -Encoding: 1309 1309 860 -Width: 1529 -VWidth: 0 -Flags: W -HStem: 0 43<384 577 1039 1233> 860 41<270 425 901 1081 1557 1745> -LayerCount: 2 -Fore -Refer: 22 119 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni051E -Encoding: 1310 1310 861 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 119<1111 1192> 909 43G<1198 1281> 1393 41G<496 680 1289 1540> -LayerCount: 2 -Fore -SplineSet -1219 119 m 1,0,-1 - 1192 0 l 1,1,2 - 1097 0 1097 0 1028 35.5 c 128,-1,3 - 959 71 959 71 921.5 129 c 128,-1,4 - 884 187 884 187 860.5 257.5 c 128,-1,5 - 837 328 837 328 825 401.5 c 128,-1,6 - 813 475 813 475 801.5 537.5 c 128,-1,7 - 790 600 790 600 770.5 646.5 c 128,-1,8 - 751 693 751 693 719 705 c 1,9,-1 - 457 469 l 1,10,-1 - 348 0 l 1,11,-1 - 174 0 l 1,12,-1 - 506 1434 l 1,13,-1 - 680 1434 l 1,14,-1 - 508 696 l 1,15,-1 - 1012 1145 l 1,16,-1 - 872 1288 l 1,17,-1 - 940 1352 l 1,18,-1 - 1079 1206 l 1,19,-1 - 1335 1434 l 1,20,-1 - 1540 1434 l 1,21,-1 - 1174 1108 l 1,22,-1 - 1305 973 l 1,23,-1 - 1237 909 l 1,24,-1 - 1106 1047 l 1,25,-1 - 834 805 l 1,26,27 - 886 780 886 780 921.5 728.5 c 128,-1,28 - 957 677 957 677 975 615 c 128,-1,29 - 993 553 993 553 1006.5 483.5 c 128,-1,30 - 1020 414 1020 414 1033.5 350 c 128,-1,31 - 1047 286 1047 286 1067 234 c 128,-1,32 - 1087 182 1087 182 1125 150.5 c 128,-1,33 - 1163 119 1163 119 1219 119 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni051F -Encoding: 1311 1311 862 -Width: 980 -VWidth: 0 -Flags: W -HStem: 0 43G<82 255 649 848> 819 102<121 297> 860 41G<785 1020> -VStem: 49 70<770 808> 240 174<536 818> -LayerCount: 2 -Fore -SplineSet -508 868 m 1,0,-1 - 575 932 l 1,1,-1 - 709 793 l 1,2,-1 - 831 901 l 1,3,-1 - 1020 901 l 1,4,-1 - 797 702 l 1,5,-1 - 940 553 l 1,6,-1 - 872 489 l 1,7,-1 - 727 641 l 1,8,-1 - 569 502 l 1,9,-1 - 848 0 l 1,10,-1 - 672 0 l 1,11,-1 - 451 395 l 1,12,-1 - 309 270 l 1,13,-1 - 246 0 l 1,14,-1 - 82 0 l 1,15,-1 - 227 625 l 2,16,17 - 240 682 240 682 240 719 c 0,18,19 - 240 764 240 764 228 791.5 c 128,-1,20 - 216 819 216 819 195 819 c 0,21,22 - 167 819 167 819 145.5 804.5 c 128,-1,23 - 124 790 124 790 119 770 c 1,24,-1 - 49 770 l 1,25,26 - 63 833 63 833 121 877.5 c 128,-1,27 - 179 922 179 922 248 922 c 0,28,29 - 321 922 321 922 367.5 872 c 128,-1,30 - 414 822 414 822 414 745 c 0,31,32 - 414 728 414 728 406 688 c 1,33,-1 - 356 479 l 1,34,-1 - 639 731 l 1,35,-1 - 508 868 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0180 -Encoding: 384 384 863 -Width: 1120 -VWidth: 0 -Flags: W -HStem: -20 102<454 775> 819 102<650 924> 1085 102<356 430 618 817> -VStem: 248 158<129 459> 989 168<364 753> -LayerCount: 2 -Fore -SplineSet -453 471 m 2,0,-1 - 414 303 l 2,1,2 - 406 270 406 270 406 236 c 0,3,4 - 406 190 406 190 424.5 158 c 128,-1,5 - 443 126 443 126 478 110 c 128,-1,6 - 513 94 513 94 551 88 c 128,-1,7 - 589 82 589 82 639 82 c 0,8,9 - 702 82 702 82 759 115 c 128,-1,10 - 816 148 816 148 857.5 202 c 128,-1,11 - 899 256 899 256 929 319.5 c 128,-1,12 - 959 383 959 383 975 451 c 0,13,14 - 989 511 989 511 989 582 c 0,15,16 - 989 686 989 686 945 752.5 c 128,-1,17 - 901 819 901 819 809 819 c 0,18,19 - 718 819 718 819 643 770.5 c 128,-1,20 - 568 722 568 722 521.5 645 c 128,-1,21 - 475 568 475 568 453 471 c 2,0,-1 -541 852 m 1,22,23 - 662 922 662 922 803 922 c 0,24,25 - 987 922 987 922 1072 837 c 128,-1,26 - 1157 752 1157 752 1157 606 c 0,27,28 - 1157 530 1157 530 1139 451 c 0,29,30 - 1116 351 1116 351 1072.5 268.5 c 128,-1,31 - 1029 186 1029 186 962.5 120 c 128,-1,32 - 896 54 896 54 800 17 c 128,-1,33 - 704 -20 704 -20 586 -20 c 0,34,35 - 514 -20 514 -20 459.5 -10.5 c 128,-1,36 - 405 -1 405 -1 354 24.5 c 128,-1,37 - 303 50 303 50 275.5 102 c 128,-1,38 - 248 154 248 154 248 231 c 0,39,40 - 248 292 248 292 266 369 c 2,41,-1 - 430 1085 l 1,42,-1 - 332 1085 l 1,43,-1 - 356 1188 l 1,44,-1 - 455 1188 l 1,45,-1 - 492 1352 l 1,46,-1 - 655 1352 l 1,47,-1 - 618 1188 l 1,48,-1 - 842 1188 l 1,49,-1 - 817 1085 l 1,50,-1 - 594 1085 l 1,51,-1 - 541 852 l 1,22,23 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Oslashacute -Encoding: 510 510 864 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<551 861> 0 43<332 465> 1352 102<811 1139> 1393 41<1225 1364> 1501 387 -VStem: 199 176<283 770> 918 406 1315 176<653 1159> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1311 246 2 -Refer: 166 216 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: oslashacute -Encoding: 511 511 865 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<446 668> 819 102<554 775> 1126 387 -VStem: 147 164<154 530> 712 406 897 168<366 738> -LayerCount: 2 -Fore -Refer: 93 769 N 1 0 0 1 1105 -129 2 -Refer: 167 248 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni0228 -Encoding: 552 552 866 -Width: 962 -VWidth: 0 -Flags: W -HStem: -388 49<189 368> -150 164<373 427> 0 102<281 942> 799 102<465 909> 1331 102<563 1217> -VStem: 434 129<-298 -168> -LayerCount: 2 -Fore -SplineSet -283 -352 m 1,0,1 - 325 -352 325 -352 356.5 -350 c 128,-1,2 - 388 -348 388 -348 422.5 -341 c 128,-1,3 - 457 -334 457 -334 478.5 -322 c 128,-1,4 - 500 -310 500 -310 514.5 -289 c 128,-1,5 - 529 -268 529 -268 529 -238 c 0,6,7 - 529 -206 529 -206 500 -188.5 c 128,-1,8 - 471 -171 471 -171 402 -164 c 1,9,-1 - 467 0 l 1,10,-1 - 82 0 l 1,11,-1 - 414 1434 l 1,12,-1 - 1241 1434 l 1,13,-1 - 1217 1331 l 1,14,-1 - 563 1331 l 1,15,-1 - 465 901 l 1,16,-1 - 934 901 l 1,17,-1 - 909 799 l 1,18,-1 - 440 799 l 1,19,-1 - 281 102 l 1,20,-1 - 967 102 l 1,21,-1 - 942 0 l 1,22,-1 - 574 0 l 1,23,-1 - 537 -111 l 1,24,25 - 592 -120 592 -120 625 -148.5 c 128,-1,26 - 658 -177 658 -177 658 -221 c 0,27,28 - 658 -267 658 -267 625 -302.5 c 128,-1,29 - 592 -338 592 -338 536.5 -359 c 128,-1,30 - 481 -380 481 -380 414 -390.5 c 128,-1,31 - 347 -401 347 -401 273 -401 c 1,32,-1 - 283 -352 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0229 -Encoding: 553 553 867 -Width: 964 -VWidth: 0 -Flags: W -HStem: -400 49<297 477> -163 164<481 535> -20 102<419 734> 451 102<362 869> 819 102<551 814> -VStem: 150 166<182 446> 543 129<-311 -181> 872 160<556 758> -LayerCount: 2 -Fore -SplineSet -297 -352 m 1,0,1 - 339 -352 339 -352 370.5 -350 c 128,-1,2 - 402 -348 402 -348 436.5 -341 c 128,-1,3 - 471 -334 471 -334 492.5 -322 c 128,-1,4 - 514 -310 514 -310 528.5 -289 c 128,-1,5 - 543 -268 543 -268 543 -238 c 0,6,7 - 543 -206 543 -206 514 -188.5 c 128,-1,8 - 485 -171 485 -171 416 -164 c 1,9,-1 - 474 -19 l 1,10,11 - 324 -6 324 -6 237 85 c 128,-1,12 - 150 176 150 176 150 324 c 0,13,14 - 150 443 150 443 199.5 555 c 128,-1,15 - 249 667 249 667 327.5 746.5 c 128,-1,16 - 406 826 406 826 504 874 c 128,-1,17 - 602 922 602 922 696 922 c 0,18,19 - 780 922 780 922 846 893.5 c 128,-1,20 - 912 865 912 865 952 815.5 c 128,-1,21 - 992 766 992 766 1012 704 c 128,-1,22 - 1032 642 1032 642 1032 571 c 0,23,24 - 1032 451 1032 451 844 451 c 2,25,-1 - 328 451 l 1,26,27 - 315 391 315 391 315 340 c 0,28,29 - 315 220 315 220 384 151 c 128,-1,30 - 453 82 453 82 573 82 c 0,31,32 - 720 82 720 82 827 205 c 1,33,-1 - 940 158 l 1,34,35 - 784 6 784 6 582 -17 c 1,36,-1 - 551 -111 l 1,37,38 - 606 -120 606 -120 639 -148.5 c 128,-1,39 - 672 -177 672 -177 672 -221 c 0,40,41 - 672 -267 672 -267 639 -302.5 c 128,-1,42 - 606 -338 606 -338 550.5 -359 c 128,-1,43 - 495 -380 495 -380 428 -390.5 c 128,-1,44 - 361 -401 361 -401 287 -401 c 1,45,-1 - 297 -352 l 1,0,1 -362 553 m 1,46,-1 - 786 553 l 2,47,48 - 831 553 831 553 851.5 562.5 c 128,-1,49 - 872 572 872 572 872 596 c 0,50,51 - 872 699 872 699 829.5 759 c 128,-1,52 - 787 819 787 819 702 819 c 0,53,54 - 598 819 598 819 506.5 744.5 c 128,-1,55 - 415 670 415 670 362 553 c 1,46,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0243 -Encoding: 579 579 868 -Width: 1116 -VWidth: 0 -Flags: W -HStem: 0 102<344 763> 389 102<147 608> 727 102<512 838> 1331 102<627 964> -VStem: 123 510 936 176<300 657> 1008 178<999 1290> -LayerCount: 2 -Fore -SplineSet -936 795 m 1,0,1 - 1026 756 1026 756 1069 677.5 c 128,-1,2 - 1112 599 1112 599 1112 500 c 0,3,4 - 1112 427 1112 427 1091.5 356.5 c 128,-1,5 - 1071 286 1071 286 1026.5 221 c 128,-1,6 - 982 156 982 156 918 107 c 128,-1,7 - 854 58 854 58 760.5 29 c 128,-1,8 - 667 0 667 0 555 0 c 2,9,-1 - 145 0 l 1,10,-1 - 235 389 l 1,11,-1 - 123 389 l 1,12,-1 - 147 492 l 1,13,-1 - 259 492 l 1,14,-1 - 477 1434 l 1,15,-1 - 846 1434 l 2,16,17 - 1186 1434 1186 1434 1186 1188 c 0,18,19 - 1186 1065 1186 1065 1120 960.5 c 128,-1,20 - 1054 856 1054 856 936 795 c 1,0,1 -512 829 m 1,21,-1 - 692 829 l 2,22,23 - 810 829 810 829 909 925.5 c 128,-1,24 - 1008 1022 1008 1022 1008 1159 c 0,25,26 - 1008 1232 1008 1232 972.5 1281.5 c 128,-1,27 - 937 1331 937 1331 852 1331 c 2,28,-1 - 627 1331 l 1,29,-1 - 512 829 l 1,21,-1 -610 102 m 2,30,31 - 685 102 685 102 748 136 c 128,-1,32 - 811 170 811 170 851 225.5 c 128,-1,33 - 891 281 891 281 913.5 349.5 c 128,-1,34 - 936 418 936 418 936 489 c 0,35,36 - 936 536 936 536 926 577 c 128,-1,37 - 916 618 916 618 895.5 652.5 c 128,-1,38 - 875 687 875 687 839 707 c 128,-1,39 - 803 727 803 727 754 727 c 2,40,-1 - 487 727 l 1,41,-1 - 433 492 l 1,42,-1 - 633 492 l 1,43,-1 - 608 389 l 1,44,-1 - 410 389 l 1,45,-1 - 344 102 l 1,46,-1 - 610 102 l 2,30,31 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024A -Encoding: 586 586 869 -Width: 1290 -VWidth: 0 -Flags: W -HStem: -412 102<1116 1296> -20 102<626 972> 1352 102<874 1237> 1393 41G<1298 1477> -VStem: 242 176<307 801> 932 176<-303 10> -LayerCount: 2 -Fore -SplineSet -1130 -63 m 2,0,1 - 1108 -159 1108 -159 1108 -211 c 0,2,3 - 1108 -309 1108 -309 1184 -309 c 0,4,5 - 1256 -309 1256 -309 1305 -258 c 1,6,-1 - 1419 -319 l 1,7,8 - 1319 -412 1319 -412 1192 -412 c 0,9,10 - 1125 -412 1125 -412 1068.5 -392 c 128,-1,11 - 1012 -372 1012 -372 972 -322.5 c 128,-1,12 - 932 -273 932 -273 932 -201 c 0,13,14 - 932 -164 932 -164 940 -131 c 2,15,-1 - 975 16 l 1,16,17 - 856 -20 856 -20 737 -20 c 0,18,19 - 667 -20 667 -20 598 -0.5 c 128,-1,20 - 529 19 529 19 464.5 61.5 c 128,-1,21 - 400 104 400 104 351 164.5 c 128,-1,22 - 302 225 302 225 272 314.5 c 128,-1,23 - 242 404 242 404 242 510 c 0,24,25 - 242 635 242 635 270.5 751.5 c 128,-1,26 - 299 868 299 868 348 960.5 c 128,-1,27 - 397 1053 397 1053 462 1133.5 c 128,-1,28 - 527 1214 527 1214 600.5 1272 c 128,-1,29 - 674 1330 674 1330 751 1371.5 c 128,-1,30 - 828 1413 828 1413 901 1433.5 c 128,-1,31 - 974 1454 974 1454 1038 1454 c 0,32,33 - 1191 1454 1191 1454 1298 1419 c 1,34,-1 - 1303 1434 l 1,35,-1 - 1477 1434 l 1,36,-1 - 1130 -63 l 2,0,1 -999 123 m 1,37,-1 - 1268 1288 l 1,38,39 - 1178 1352 1178 1352 1044 1352 c 0,40,41 - 965 1352 965 1352 878.5 1315 c 128,-1,42 - 792 1278 792 1278 710.5 1204.5 c 128,-1,43 - 629 1131 629 1131 563.5 1033 c 128,-1,44 - 498 935 498 935 458 801.5 c 128,-1,45 - 418 668 418 668 418 522 c 0,46,47 - 418 433 418 433 441 358 c 128,-1,48 - 464 283 464 283 502 233 c 128,-1,49 - 540 183 540 183 589 148 c 128,-1,50 - 638 113 638 113 689 97.5 c 128,-1,51 - 740 82 740 82 791 82 c 0,52,53 - 903 82 903 82 999 123 c 1,37,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024B -Encoding: 587 587 870 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -410 102<919 1095> -20 102<408 682> 819 102<560 879> -VStem: 174 168<148 544> 741 168<-302 22> 928 158<449 772> -LayerCount: 2 -Fore -SplineSet -930 -61 m 2,0,1 - 909 -152 909 -152 909 -209 c 0,2,3 - 909 -307 909 -307 983 -307 c 0,4,5 - 1055 -307 1055 -307 1104 -256 c 1,6,-1 - 1219 -317 l 1,7,8 - 1119 -410 1119 -410 991 -410 c 0,9,10 - 887 -410 887 -410 814 -358 c 128,-1,11 - 741 -306 741 -306 741 -203 c 0,12,13 - 741 -169 741 -169 750 -129 c 2,14,-1 - 793 49 l 1,15,16 - 673 -20 673 -20 530 -20 c 0,17,18 - 346 -20 346 -20 260 64.5 c 128,-1,19 - 174 149 174 149 174 295 c 0,20,21 - 174 469 174 469 241.5 610.5 c 128,-1,22 - 309 752 309 752 441 837 c 128,-1,23 - 573 922 573 922 748 922 c 0,24,25 - 805 922 805 922 850 916.5 c 128,-1,26 - 895 911 895 911 940.5 895 c 128,-1,27 - 986 879 986 879 1016.5 852 c 128,-1,28 - 1047 825 1047 825 1066 778.5 c 128,-1,29 - 1085 732 1085 732 1085 670 c 128,-1,30 - 1085 608 1085 608 1067 532 c 2,31,-1 - 930 -61 l 2,0,1 -879 430 m 2,32,-1 - 918 598 l 2,33,34 - 928 640 928 640 928 666 c 0,35,36 - 928 712 928 712 909 744 c 128,-1,37 - 890 776 890 776 854.5 791.5 c 128,-1,38 - 819 807 819 807 780.5 813 c 128,-1,39 - 742 819 742 819 692 819 c 0,40,41 - 595 819 595 819 512.5 742 c 128,-1,42 - 430 665 430 665 386 551 c 128,-1,43 - 342 437 342 437 342 319 c 0,44,45 - 342 215 342 215 386 148.5 c 128,-1,46 - 430 82 430 82 522 82 c 0,47,48 - 613 82 613 82 688.5 130.5 c 128,-1,49 - 764 179 764 179 810.5 256 c 128,-1,50 - 857 333 857 333 879 430 c 2,32,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0266 -Encoding: 614 614 871 -Width: 1087 -VWidth: 0 -Flags: W -HStem: 0 43G<147 321 784 958> 819 102<563 877> 1270 102<629 860> -VStem: 918 164<389 778> -LayerCount: 2 -Fore -SplineSet -399 1092 m 2,0,1 - 416 1165 416 1165 456 1221 c 128,-1,2 - 496 1277 496 1277 549 1308.5 c 128,-1,3 - 602 1340 602 1340 658 1356 c 128,-1,4 - 714 1372 714 1372 770 1372 c 0,5,6 - 897 1372 897 1372 954 1280 c 1,7,-1 - 811 1219 l 1,8,9 - 789 1270 789 1270 715 1270 c 0,10,11 - 655 1270 655 1270 616 1211.5 c 128,-1,12 - 577 1153 577 1153 547 1024 c 2,13,-1 - 512 870 l 1,14,15 - 625 922 625 922 733 922 c 0,16,17 - 1081 922 1081 922 1081 641 c 0,18,19 - 1081 584 1081 584 1061 492 c 1,20,-1 - 948 0 l 1,21,-1 - 784 0 l 1,22,-1 - 893 467 l 1,23,24 - 918 579 918 579 918 643 c 0,25,26 - 918 741 918 741 872 780 c 128,-1,27 - 826 819 826 819 739 819 c 0,28,29 - 610 819 610 819 477 723 c 1,30,-1 - 311 0 l 1,31,-1 - 147 0 l 1,32,-1 - 399 1092 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni027E -Encoding: 638 638 872 -Width: 729 -VWidth: 0 -Flags: W -HStem: -2 43G<150 323> 799 102<522 753> -LayerCount: 2 -Fore -SplineSet -313 -2 m 17,0,-1 - 150 0 l 1,1,-1 - 293 621 l 2,2,3 - 310 694 310 694 350 750 c 128,-1,4 - 390 806 390 806 443 837.5 c 128,-1,5 - 496 869 496 869 552 885 c 128,-1,6 - 608 901 608 901 664 901 c 0,7,8 - 791 901 791 901 848 809 c 1,9,-1 - 705 748 l 1,10,11 - 683 799 683 799 608 799 c 0,12,13 - 548 799 548 799 509 740.5 c 128,-1,14 - 470 682 470 682 440 553 c 2,15,-1 - 313 -2 l 17,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0295 -Encoding: 661 661 873 -Width: 933 -VWidth: 0 -Flags: W -HStem: 0 43G<545 718> 557 98<566 674> 1270 102<659 970> -VStem: 301 166<744 1076> -LayerCount: 2 -Fore -SplineSet -545 0 m 1,0,-1 - 674 557 l 1,1,2 - 573 557 573 557 490 591 c 128,-1,3 - 407 625 407 625 354 696 c 128,-1,4 - 301 767 301 767 301 864 c 0,5,6 - 301 987 301 987 347.5 1086 c 128,-1,7 - 394 1185 394 1185 471.5 1246 c 128,-1,8 - 549 1307 549 1307 644 1339.5 c 128,-1,9 - 739 1372 739 1372 842 1372 c 0,10,11 - 960 1372 960 1372 1031 1326 c 128,-1,12 - 1102 1280 1102 1280 1149 1194 c 1,13,-1 - 1014 1147 l 1,14,15 - 990 1211 990 1211 955 1240.5 c 128,-1,16 - 920 1270 920 1270 848 1270 c 0,17,18 - 771 1270 771 1270 703.5 1245.5 c 128,-1,19 - 636 1221 636 1221 582.5 1173 c 128,-1,20 - 529 1125 529 1125 498 1048 c 128,-1,21 - 467 971 467 971 467 874 c 0,22,23 - 467 796 467 796 509 745 c 128,-1,24 - 551 694 551 694 610 674.5 c 128,-1,25 - 669 655 669 655 741 655 c 2,26,-1 - 860 655 l 1,27,-1 - 709 0 l 1,28,-1 - 545 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57929 -Encoding: 700 700 874 -Width: 356 -VWidth: 0 -Flags: W -HStem: 985 367 -VStem: 410 147<1279 1352> -LayerCount: 2 -Fore -Refer: 332 8217 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni02C0 -Encoding: 704 704 875 -Width: 557 -VWidth: 0 -Flags: W -HStem: 901 43G<360 472> 1030 70<492 588> 1386 68<485 652> -VStem: 668 100<1167 1378> -LayerCount: 2 -Fore -SplineSet -768 1300 m 0,0,1 - 768 1221 768 1221 722 1157 c 128,-1,2 - 676 1093 676 1093 613.5 1061.5 c 128,-1,3 - 551 1030 551 1030 492 1030 c 1,4,-1 - 463 901 l 1,5,-1 - 360 901 l 1,6,-1 - 406 1100 l 1,7,-1 - 467 1100 l 2,8,9 - 548 1100 548 1100 608 1149 c 128,-1,10 - 668 1198 668 1198 668 1298 c 0,11,12 - 668 1386 668 1386 573 1386 c 0,13,14 - 491 1386 491 1386 455 1313 c 1,15,-1 - 379 1337 l 1,16,17 - 412 1382 412 1382 476 1418 c 128,-1,18 - 540 1454 540 1454 600 1454 c 0,19,20 - 675 1454 675 1454 721.5 1414 c 128,-1,21 - 768 1374 768 1374 768 1300 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024C -Encoding: 588 588 876 -Width: 1189 -VWidth: 0 -Flags: W -HStem: 0 43<164 347 891 1063> 655 102<186 647 512 750> 1331 102<645 1041> -VStem: 162 510 901 170<0 381> 1104 174<954 1271> -LayerCount: 2 -Fore -SplineSet -496 1434 m 1,0,-1 - 915 1434 l 2,1,2 - 1013 1434 1013 1434 1086.5 1407.5 c 128,-1,3 - 1160 1381 1160 1381 1200 1335.5 c 128,-1,4 - 1240 1290 1240 1290 1259 1238.5 c 128,-1,5 - 1278 1187 1278 1187 1278 1128 c 0,6,7 - 1278 1041 1278 1041 1237 953 c 128,-1,8 - 1196 865 1196 865 1109.5 789 c 128,-1,9 - 1023 713 1023 713 907 680 c 1,10,11 - 971 596 971 596 1021 429 c 128,-1,12 - 1071 262 1071 262 1071 117 c 0,13,14 - 1071 53 1071 53 1059 0 c 1,15,-1 - 891 0 l 1,16,17 - 901 41 901 41 901 106 c 0,18,19 - 901 253 901 253 845 418.5 c 128,-1,20 - 789 584 789 584 713 655 c 1,21,-1 - 489 655 l 1,22,-1 - 338 0 l 1,23,-1 - 164 0 l 1,24,-1 - 316 655 l 1,25,-1 - 162 655 l 1,26,-1 - 186 758 l 1,27,-1 - 339 758 l 1,28,-1 - 496 1434 l 1,0,-1 -512 758 m 1,29,-1 - 788 758 l 2,30,31 - 856 758 856 758 916.5 792 c 128,-1,32 - 977 826 977 826 1017 880 c 128,-1,33 - 1057 934 1057 934 1080.5 999.5 c 128,-1,34 - 1104 1065 1104 1065 1104 1128 c 0,35,36 - 1104 1215 1104 1215 1060.5 1273 c 128,-1,37 - 1017 1331 1017 1331 922 1331 c 2,38,-1 - 645 1331 l 1,39,-1 - 512 758 l 1,29,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni024D -Encoding: 589 589 877 -Width: 770 -VWidth: 0 -Flags: W -HStem: 0 43<143 317> 389 102<94 555> 819 102<180 339 529 822> -VStem: 70 510 109 70<770 808> 299 174<629 766> -LayerCount: 2 -Fore -SplineSet -881 741 m 1,0,1 - 860 819 860 819 723 819 c 0,2,3 - 661 819 661 819 613 797.5 c 128,-1,4 - 565 776 565 776 514 731 c 1,5,6 - 514 709 514 709 508 688 c 1,7,-1 - 462 492 l 1,8,-1 - 659 492 l 1,9,-1 - 635 389 l 1,10,-1 - 438 389 l 1,11,-1 - 348 0 l 1,12,-1 - 184 0 l 1,13,-1 - 274 389 l 1,14,-1 - 150 389 l 1,15,-1 - 174 492 l 1,16,-1 - 297 492 l 1,17,-1 - 328 625 l 2,18,19 - 340 678 340 678 340 719 c 0,20,21 - 340 764 340 764 328 791.5 c 128,-1,22 - 316 819 316 819 295 819 c 0,23,24 - 267 819 267 819 245.5 804.5 c 128,-1,25 - 224 790 224 790 219 770 c 1,26,-1 - 150 770 l 1,27,28 - 164 833 164 833 221.5 877.5 c 128,-1,29 - 279 922 279 922 348 922 c 0,30,31 - 442 922 442 922 489 842 c 1,32,33 - 558 884 558 884 611.5 903 c 128,-1,34 - 665 922 665 922 733 922 c 0,35,36 - 839 922 839 922 915 893 c 1,37,-1 - 881 741 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni02CA -Encoding: 714 714 878 -Width: 493 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: 375 406 -LayerCount: 2 -Fore -Refer: 345 180 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni02CB -Encoding: 715 715 879 -Width: 497 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: 432 295 -LayerCount: 2 -Fore -Refer: 311 96 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni030D -Encoding: 781 781 880 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1257 328<-264 -258> -VStem: -340 158 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --340 1257 m 1,0,-1 - -264 1585 l 1,1,-1 - -182 1585 l 1,2,-1 - -258 1257 l 1,3,-1 - -340 1257 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0329 -Encoding: 809 809 881 -Width: 0 -VWidth: 0 -Flags: W -HStem: -410 328<-649 -643> -VStem: -725 158 -AnchorPoint: "bottom" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --725 -410 m 1,0,-1 - -649 -82 l 1,1,-1 - -567 -82 l 1,2,-1 - -643 -410 l 1,3,-1 - -725 -410 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC4 -Encoding: 7620 7620 882 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 82<-522 -94> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet -98 1548 m 1,0,-1 - 186 1456 l 1,1,-1 - -70 1270 l 1,2,-1 - -541 1270 l 1,3,-1 - -522 1352 l 1,4,-1 - -94 1352 l 1,5,-1 - 98 1548 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC5 -Encoding: 7621 7621 883 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 82<-479 -70> -VStem: -711 659 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --541 1270 m 1,0,-1 - -711 1456 l 1,1,-1 - -578 1548 l 1,2,-1 - -479 1352 l 1,3,-1 - -51 1352 l 1,4,-1 - -70 1270 l 1,5,-1 - -541 1270 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC6 -Encoding: 7622 7622 884 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1331 82<-508 -98> -VStem: -526 659 -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --98 1331 m 1,0,-1 - -526 1331 l 1,1,-1 - -508 1413 l 1,2,-1 - -37 1413 l 1,3,-1 - 133 1227 l 1,4,-1 - 2 1135 l 1,5,-1 - -98 1331 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1DC7 -Encoding: 7623 7623 885 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1331 82<-483 -55> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --674 1135 m 1,0,-1 - -764 1227 l 1,1,-1 - -508 1413 l 1,2,-1 - -37 1413 l 1,3,-1 - -55 1331 l 1,4,-1 - -483 1331 l 1,5,-1 - -674 1135 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E04 -Encoding: 7684 7684 886 -Width: 1052 -VWidth: 0 -Flags: W -HStem: -272 150<367 481> 0 102<281 700> 727 102<449 775> 1331 102<563 901> -VStem: 332 184 872 176<300 657> 944 178<999 1290> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1061 0 2 -Refer: 28 66 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E05 -Encoding: 7685 7685 887 -Width: 1069 -VWidth: 0 -Flags: W -HStem: -272 150<389 504> -20 102<417 739> 819 102<614 888> 1270 102<284 461> -VStem: 211 158<129 459> 213 70<1221 1259> 354 184 403 174<984 1268> 952 168<362 753> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1083 0 2 -Refer: 6 98 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0C -Encoding: 7692 7692 888 -Width: 1216 -VWidth: 0 -Flags: W -HStem: -272 150<408 522> 0 102<291 782> 1331 102<573 1062> -VStem: 373 184 1157 172<718 1227> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1102 0 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0D -Encoding: 7693 7693 889 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -272 150<381 496> -20 102<404 666 925 1088> 819 102<556 809> -VStem: 150 168<174 538> 346 184 866 102<182 586> 1090 70<93 131> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1075 0 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0E -Encoding: 7694 7694 890 -Width: 1216 -VWidth: 0 -Flags: W -HStem: -205 82<238 690> 0 102<291 782> 1331 102<573 1062> -VStem: 219 489 1157 172<718 1227> -LayerCount: 2 -Fore -Refer: 491 817 N 1 0 0 1 1100 0 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E0F -Encoding: 7695 7695 891 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -205 82<211 664> -20 102<404 666 925 1088> 819 102<556 809> -VStem: 150 168<174 538> 193 489 866 102<182 586> 1090 70<93 131> -LayerCount: 2 -Fore -Refer: 491 817 N 1 0 0 1 1073 0 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E12 -Encoding: 7698 7698 892 -Width: 1216 -VWidth: 0 -Flags: W -HStem: -449 387 0 102<291 782> 1331 102<573 1062> -VStem: 180 479 1157 172<718 1227> -LayerCount: 2 -Fore -Refer: 487 813 N 1 0 0 1 1098 0 2 -Refer: 31 68 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E13 -Encoding: 7699 7699 893 -Width: 1142 -VWidth: 0 -Flags: W -HStem: -449 387 -20 102<404 666 925 1088> 819 102<556 809> -VStem: 150 168<174 538> 154 479 866 102<182 586> 1090 70<93 131> -LayerCount: 2 -Fore -Refer: 487 813 N 1 0 0 1 1071 0 2 -Refer: 0 100 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E24 -Encoding: 7716 7716 894 -Width: 1259 -VWidth: 0 -Flags: W -HStem: -272 150<477 592> 0 43<82 265 915 1099> 717 102<444 1081> 1393 41<404 588 1238 1421> -VStem: 442 184 -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1171 0 2 -Refer: 35 72 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E25 -Encoding: 7717 7717 895 -Width: 1034 -VWidth: 0 -Flags: W -HStem: -272 150<444 559> 0 43<143 317 780 954> 819 102<560 873> 1270 102<284 461> -VStem: 213 70<1221 1259> 403 174<985 1268> 410 184 913 164<389 778> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1139 0 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2E -Encoding: 7726 7726 896 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1516 150<326 440 653 768> 1788 387 -VStem: 92 506 291 184 542 406 618 184 -LayerCount: 2 -Fore -Refer: 878 714 N 1 0 0 1 167 532 2 -Refer: 151 207 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2F -Encoding: 7727 7727 897 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1085 150<219 334 547 662> 1358 387 -VStem: 135 174<85 272> 184 184 430 70<93 131> 435 406 512 184 -LayerCount: 2 -Fore -Refer: 878 714 N 1 0 0 1 61 102 2 -Refer: 135 239 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E36 -Encoding: 7734 7734 898 -Width: 1052 -VWidth: 0 -Flags: W -HStem: -272 150<408 522> 0 102<281 942> 1393 41<404 588> -VStem: 373 184 -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1102 0 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E37 -Encoding: 7735 7735 899 -Width: 495 -VWidth: 0 -Flags: W -HStem: -272 150<68 182> -20 102<252 428> -VStem: 33 184 135 174<85 274> 430 70<93 131> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 762 0 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3C -Encoding: 7740 7740 900 -Width: 1052 -VWidth: 0 -Flags: W -HStem: -449 387 0 102<281 942> 1393 41<404 588> -VStem: 180 479 -LayerCount: 2 -Fore -Refer: 487 813 N 1 0 0 1 1098 0 2 -Refer: 39 76 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3D -Encoding: 7741 7741 901 -Width: 495 -VWidth: 0 -Flags: W -HStem: -449 387 -20 102<252 428> -VStem: -160 479 135 174<85 274> 430 70<93 131> -LayerCount: 2 -Fore -Refer: 487 813 N 1 0 0 1 758 0 2 -Refer: 15 108 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3E -Encoding: 7742 7742 902 -Width: 1544 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 1200 1384> 1393 41<414 608 1503 1706> 1536 387 -VStem: 1030 406 -LayerCount: 2 -Fore -Refer: 878 714 N 1 0 0 1 655 281 2 -Refer: 40 77 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E3F -Encoding: 7743 7743 903 -Width: 1574 -VWidth: 0 -Flags: W -HStem: 0 43<184 358 760 933 1317 1490> 819 102<221 380 584 880 1151 1437> 1044 387 -VStem: 150 70<770 808> 340 174<527 759> 907 406 1460 158<430 798> -LayerCount: 2 -Fore -Refer: 878 714 S 1 0 0 1 533 -211 2 -Refer: 11 109 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E44 -Encoding: 7748 7748 904 -Width: 1325 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 961 1165> 1393 41<414 616 1303 1487> 1577 150<949 1064> -VStem: 914 184 -LayerCount: 2 -Fore -Refer: 374 729 N 1 0 0 1 560 307 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E45 -Encoding: 7749 7749 905 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<184 358 821 994> 819 102<221 380 602 914> 1044 150<721 836> -VStem: 150 70<770 808> 686 184 954 164<389 778> -LayerCount: 2 -Fore -Refer: 374 729 S 1 0 0 1 332 -225 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E46 -Encoding: 7750 7750 906 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -272 150<508 623> 0 43<92 276 961 1165> 1393 41<414 616 1303 1487> -VStem: 473 184 -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1202 0 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E47 -Encoding: 7751 7751 907 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -272 150<514 629> 0 43<184 358 821 994> 819 102<221 380 602 914> -VStem: 150 70<770 808> 479 184 954 164<389 778> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1208 0 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E4A -Encoding: 7754 7754 908 -Width: 1325 -VWidth: 0 -Flags: W -HStem: -449 387 0 43<92 276 961 1165> 1393 41<414 616 1303 1487> -VStem: 281 479 -LayerCount: 2 -Fore -Refer: 487 813 N 1 0 0 1 1198 0 2 -Refer: 41 78 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E4B -Encoding: 7755 7755 909 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -449 387 0 43<184 358 821 994> 819 102<221 380 602 914> -VStem: 150 70<770 808> 287 479 954 164<389 778> -LayerCount: 2 -Fore -Refer: 487 813 N 1 0 0 1 1204 0 2 -Refer: 4 110 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E4C -Encoding: 7756 7756 910 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<578 910> 1147 102<797 1145> 1296 117<1040 1233> 1362 117<829 1022> 1501 279 -VStem: 223 176<269 708> 727 608 1018 307 1325 176<535 974> -LayerCount: 2 -Fore -Refer: 929 58624 N 1 0 0 1 516 20 2 -Refer: 928 57441 N 1 0 0 1 0 0 2 -Refer: 95 771 N 1 0 0 1 1294 27 2 -Validated: 1 -EndChar - -StartChar: uni1E4D -Encoding: 7757 7757 911 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1085 117<797 989> 1151 117<586 778> 1321 279 -VStem: 147 164<157 530> 483 608 776 307 897 168<366 739> -LayerCount: 2 -Fore -Refer: 929 58624 S 1 0 0 1 274 -160 2 -Refer: 131 245 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E50 -Encoding: 7760 7760 912 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<578 910> 1147 102<797 1145> 1352 82<772 1225> 1501 279 -VStem: 223 176<269 708> 754 489 858 246 1325 176<535 974> -LayerCount: 2 -Fore -Refer: 96 772 S 1 0 0 1 1294 82 2 -Refer: 928 57441 S 1 0 0 1 0 0 2 -Refer: 930 58625 N 1 0 0 1 326 20 2 -Validated: 1 -EndChar - -StartChar: uni1E51 -Encoding: 7761 7761 913 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1085 82<528 981> 1276 279 -VStem: 147 164<157 530> 510 489 618 246 897 168<366 739> -LayerCount: 2 -Fore -Refer: 930 58625 N 1 0 0 1 86 -205 2 -Refer: 263 333 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E52 -Encoding: 7762 7762 914 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<578 910> 1147 102<797 1145> 1352 82<772 1225> 1501 279 -VStem: 223 176<269 708> 754 489 1008 307 1325 176<535 974> -LayerCount: 2 -Fore -Refer: 96 772 N 1 0 0 1 1294 82 2 -Refer: 928 57441 N 1 0 0 1 0 0 2 -Refer: 929 58624 N 1 0 0 1 506 20 2 -Validated: 1 -EndChar - -StartChar: uni1E53 -Encoding: 7763 7763 915 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1085 82<528 981> 1276 279 -VStem: 147 164<157 530> 510 489 756 307 897 168<366 739> -LayerCount: 2 -Fore -Refer: 929 58624 S 1 0 0 1 254 -205 2 -Refer: 263 333 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6C -Encoding: 7788 7788 916 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -272 150<518 633> 0 43<532 716> 1331 102<352 840 1014 1526> -VStem: 483 184 -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1212 0 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6D -Encoding: 7789 7789 917 -Width: 577 -VWidth: 0 -Flags: W -HStem: -272 150<158 272> -20 102<346 523> 799 102<291 371 559 696> -VStem: 123 184 229 174<85 272> 524 70<93 131> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 852 0 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6E -Encoding: 7790 7790 918 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -205 82<348 801> 0 43<532 716> 1331 102<352 840 1014 1526> -VStem: 330 489 -LayerCount: 2 -Fore -Refer: 491 817 N 1 0 0 1 1210 0 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E6F -Encoding: 7791 7791 919 -Width: 577 -VWidth: 0 -Flags: W -HStem: -205 82<-12 440> -20 102<346 523> 799 102<291 371 559 696> -VStem: -31 489 229 174<85 272> 524 70<93 131> -LayerCount: 2 -Fore -Refer: 491 817 N 1 0 0 1 850 0 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E70 -Encoding: 7792 7792 920 -Width: 1198 -VWidth: 0 -Flags: W -HStem: -449 387 0 43<532 716> 1331 102<352 840 1014 1526> -VStem: 291 479 -LayerCount: 2 -Fore -Refer: 487 813 N 1 0 0 1 1208 0 2 -Refer: 46 84 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E71 -Encoding: 7793 7793 921 -Width: 577 -VWidth: 0 -Flags: W -HStem: -449 387 -20 102<346 523> 799 102<291 371 559 696> -VStem: -70 479 229 174<85 272> 524 70<93 131> -LayerCount: 2 -Fore -Refer: 487 813 N 1 0 0 1 848 0 2 -Refer: 10 116 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E92 -Encoding: 7826 7826 922 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -272 150<424 539> 0 102<299 963> 1331 102<414 1026> -VStem: 389 184 -LayerCount: 2 -Fore -Refer: 483 803 S 1 0 0 1 1118 0 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E93 -Encoding: 7827 7827 923 -Width: 845 -VWidth: 0 -Flags: W -HStem: -272 150<346 461> 0 102<324 823> 799 102<283 758> -LayerCount: 2 -Fore -SplineSet -346 -123 m 1,0,-1 - 496 -123 l 1,1,-1 - 461 -272 l 1,2,-1 - 311 -272 l 1,3,-1 - 346 -123 l 1,0,-1 -758 799 m 5,4,-1 - 227 799 l 1,5,-1 - 283 901 l 1,6,-1 - 1026 901 l 1,7,-1 - 324 102 l 1,8,-1 - 848 102 l 1,9,-1 - 823 0 l 1,10,-1 - 53 0 l 1,11,-1 - 758 799 l 5,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C72 -Encoding: 11378 11378 924 -Width: 2052 -VWidth: 0 -Flags: W -HStem: 0 43G<496 703 1096 1303> 860 41G<1007 1171> 1346 113<2035 2213> 1393 41G<367 522> -VStem: 2230 147<1210 1330> -LayerCount: 2 -Fore -SplineSet -1280 0 m 1,0,-1 - 1100 0 l 1,1,-1 - 1040 645 l 1,2,-1 - 680 0 l 1,3,-1 - 500 0 l 1,4,-1 - 367 1434 l 1,5,-1 - 518 1434 l 1,6,-1 - 635 193 l 1,7,-1 - 1030 901 l 1,8,-1 - 1167 901 l 1,9,-1 - 1235 193 l 1,10,-1 - 1767 1155 l 1,11,12 - 1806 1223 1806 1223 1843.5 1273.5 c 128,-1,13 - 1881 1324 1881 1324 1930 1368 c 128,-1,14 - 1979 1412 1979 1412 2039 1435 c 128,-1,15 - 2099 1458 2099 1458 2169 1458 c 0,16,17 - 2267 1458 2267 1458 2322.5 1401.5 c 128,-1,18 - 2378 1345 2378 1345 2378 1264 c 0,19,20 - 2378 1237 2378 1237 2372 1210 c 1,21,-1 - 2226 1198 l 1,22,23 - 2230 1226 2230 1226 2230 1237 c 0,24,25 - 2230 1285 2230 1285 2204 1315.5 c 128,-1,26 - 2178 1346 2178 1346 2136 1346 c 0,27,28 - 2027 1346 2027 1346 1921 1155 c 2,29,-1 - 1280 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni2C73 -Encoding: 11379 11379 925 -Width: 1757 -VWidth: 0 -Flags: W -HStem: 0 43G<351 528 1023 1200> 819 102<1644 1773> 860 41G<238 392 868 1048> -LayerCount: 2 -Fore -SplineSet -1176 0 m 1,0,-1 - 1028 0 l 1,1,-1 - 932 719 l 1,2,-1 - 504 0 l 1,3,-1 - 356 0 l 1,4,-1 - 238 901 l 1,5,-1 - 387 901 l 1,6,-1 - 477 205 l 1,7,-1 - 893 901 l 1,8,-1 - 1042 901 l 1,9,-1 - 1133 205 l 1,10,-1 - 1382 623 l 2,11,12 - 1470 771 1470 771 1563 846.5 c 128,-1,13 - 1656 922 1656 922 1769 922 c 0,14,15 - 1824 922 1824 922 1863.5 888.5 c 128,-1,16 - 1903 855 1903 855 1950 786 c 1,17,-1 - 1802 721 l 1,18,19 - 1781 765 1781 765 1764 787.5 c 128,-1,20 - 1747 810 1747 810 1737.5 814.5 c 128,-1,21 - 1728 819 1728 819 1714 819 c 0,22,23 - 1696 819 1696 819 1680 810 c 128,-1,24 - 1664 801 1664 801 1641.5 771 c 128,-1,25 - 1619 741 1619 741 1608 724 c 128,-1,26 - 1597 707 1597 707 1564 651 c 0,27,28 - 1551 629 1551 629 1544 618 c 2,29,-1 - 1176 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: a.sc -Encoding: 57344 57344 926 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 43G<49 242 1084 1255> 391 102<539 997> -LayerCount: 2 -Fore -SplineSet -1092 0 m 1,0,-1 - 1016 391 l 1,1,-1 - 471 391 l 1,2,-1 - 215 0 l 1,3,-1 - 49 0 l 1,4,-1 - 856 1229 l 1,5,-1 - 1020 1229 l 1,6,-1 - 1255 0 l 1,7,-1 - 1092 0 l 1,0,-1 -539 494 m 1,8,-1 - 997 494 l 1,9,-1 - 893 1034 l 1,10,-1 - 539 494 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: e.sc -Encoding: 57371 57371 927 -Width: 1118 -VWidth: 0 -Flags: W -HStem: 0 102<373 1034> 655 102<522 969> 1126 102<608 1262> -LayerCount: 2 -Fore -SplineSet -1034 0 m 1,0,-1 - 174 0 l 1,1,-1 - 459 1229 l 1,2,-1 - 1286 1229 l 1,3,-1 - 1262 1126 l 1,4,-1 - 608 1126 l 1,5,-1 - 522 758 l 1,6,-1 - 991 758 l 1,7,-1 - 969 655 l 1,8,-1 - 500 655 l 1,9,-1 - 373 102 l 1,10,-1 - 1059 102 l 1,11,-1 - 1034 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: o.sc -Encoding: 57441 57441 928 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<578 910> 1147 102<797 1145> -VStem: 223 176<269 708> 1325 176<535 974> -LayerCount: 2 -Fore -SplineSet -700 -20 m 0,0,1 - 610 -20 610 -20 527 8 c 128,-1,2 - 444 36 444 36 375 90.5 c 128,-1,3 - 306 145 306 145 264.5 236 c 128,-1,4 - 223 327 223 327 223 442 c 0,5,6 - 223 570 223 570 258 685.5 c 128,-1,7 - 293 801 293 801 352 887.5 c 128,-1,8 - 411 974 411 974 487 1044 c 128,-1,9 - 563 1114 563 1114 647.5 1158 c 128,-1,10 - 732 1202 732 1202 815.5 1225.5 c 128,-1,11 - 899 1249 899 1249 975 1249 c 0,12,13 - 1084 1249 1084 1249 1177.5 1221.5 c 128,-1,14 - 1271 1194 1271 1194 1344.5 1139.5 c 128,-1,15 - 1418 1085 1418 1085 1459.5 995.5 c 128,-1,16 - 1501 906 1501 906 1501 791 c 0,17,18 - 1501 635 1501 635 1452.5 500.5 c 128,-1,19 - 1404 366 1404 366 1323.5 272 c 128,-1,20 - 1243 178 1243 178 1138.5 111 c 128,-1,21 - 1034 44 1034 44 922.5 12 c 128,-1,22 - 811 -20 811 -20 700 -20 c 0,0,1 -963 1147 m 0,23,24 - 899 1147 899 1147 824.5 1118 c 128,-1,25 - 750 1089 750 1089 675 1030 c 128,-1,26 - 600 971 600 971 538 891 c 128,-1,27 - 476 811 476 811 437.5 698 c 128,-1,28 - 399 585 399 585 399 459 c 0,29,30 - 399 363 399 363 431.5 287 c 128,-1,31 - 464 211 464 211 515.5 168.5 c 128,-1,32 - 567 126 567 126 623.5 104 c 128,-1,33 - 680 82 680 82 735 82 c 0,34,35 - 805 82 805 82 884 111 c 128,-1,36 - 963 140 963 140 1041.5 200 c 128,-1,37 - 1120 260 1120 260 1183 341 c 128,-1,38 - 1246 422 1246 422 1285.5 537 c 128,-1,39 - 1325 652 1325 652 1325 780 c 0,40,41 - 1325 874 1325 874 1294 947 c 128,-1,42 - 1263 1020 1263 1020 1211 1062.5 c 128,-1,43 - 1159 1105 1159 1105 1096 1126 c 128,-1,44 - 1033 1147 1033 1147 963 1147 c 0,23,24 -EndSplineSet -Validated: 1 -EndChar - -StartChar: stackingacute -Encoding: 58624 58624 929 -Width: 571 -VWidth: 0 -Flags: W -HStem: 1481 279 -VStem: 502 307 -LayerCount: 2 -Fore -SplineSet -719 1759 m 25,0,-1 - 809 1667 l 1,1,-1 - 553 1481 l 1,2,-1 - 502 1534 l 1,3,-1 - 719 1759 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: stackinggrave -Encoding: 58625 58625 930 -Width: 571 -VWidth: 0 -Flags: W -HStem: 1481 279 -VStem: 532 246 -LayerCount: 2 -Fore -SplineSet -664 1759 m 25,0,-1 - 778 1534 l 1,1,-1 - 702 1481 l 1,2,-1 - 532 1667 l 1,3,-1 - 664 1759 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni25CC -Encoding: 9676 9676 931 -Width: 1081 -VWidth: 0 -Flags: W -HStem: 0 94<516 588> 119 94<258 330 827 899> 403 94<205 276 1012 1083> 688 94<389 463 958 1032> 807 94<702 774> -AnchorPoint: "top" 776 1004 basechar 0 -AnchorPoint: "ogonek" 547 0 basechar 0 -AnchorPoint: "bottom" 526 0 basechar 0 -AnchorPoint: "horn" 1038 635 basechar 0 -AnchorPoint: "cedilla" 516 0 basechar 0 -LayerCount: 2 -Fore -SplineSet -1032 688 m 1,0,-1 - 938 688 l 1,1,-1 - 958 782 l 1,2,-1 - 1053 782 l 1,3,-1 - 1032 688 l 1,0,-1 -330 119 m 1,4,-1 - 236 119 l 1,5,-1 - 258 213 l 1,6,-1 - 352 213 l 1,7,-1 - 330 119 l 1,4,-1 -805 119 m 1,8,-1 - 827 213 l 1,9,-1 - 922 213 l 1,10,-1 - 899 119 l 1,11,-1 - 805 119 l 1,8,-1 -369 688 m 1,12,-1 - 389 782 l 1,13,-1 - 483 782 l 1,14,-1 - 463 688 l 1,15,-1 - 369 688 l 1,12,-1 -989 403 m 1,16,-1 - 1012 498 l 1,17,-1 - 1106 498 l 1,18,-1 - 1083 403 l 1,19,-1 - 989 403 l 1,16,-1 -182 403 m 1,20,-1 - 205 498 l 1,21,-1 - 299 498 l 1,22,-1 - 276 403 l 1,23,-1 - 182 403 l 1,20,-1 -516 94 m 1,24,-1 - 610 94 l 1,25,-1 - 588 0 l 1,26,-1 - 494 0 l 1,27,-1 - 516 94 l 1,24,-1 -702 901 m 1,28,-1 - 797 901 l 1,29,-1 - 774 807 l 1,30,-1 - 680 807 l 1,31,-1 - 702 901 l 1,28,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: underscoredbl -Encoding: 8215 8215 932 -Width: 692 -VWidth: 0 -Flags: W -HStem: -369 102<-61 606> -184 102<-18 649> -LayerCount: 2 -Fore -SplineSet --61 -266 m 1,0,-1 - 631 -266 l 1,1,-1 - 606 -369 l 1,2,-1 - -86 -369 l 1,3,-1 - -61 -266 l 1,0,-1 --18 -82 m 1,4,-1 - 674 -82 l 1,5,-1 - 649 -184 l 1,6,-1 - -43 -184 l 1,7,-1 - -18 -82 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57664 -Encoding: 1488 1488 933 -Width: 1226 -VWidth: 0 -Flags: W -HStem: 0 43G<86 290 911 1141> -VStem: 86 164<0 141> 1227 164<946 1085> -LayerCount: 2 -Fore -SplineSet -584 639 m 2,0,-1 - 336 1085 l 1,1,-1 - 543 1085 l 1,2,-1 - 844 541 l 1,3,4 - 903 579 903 579 937.5 603.5 c 128,-1,5 - 972 628 972 628 1022 676 c 128,-1,6 - 1072 724 1072 724 1104 774.5 c 128,-1,7 - 1136 825 1136 825 1170 905 c 128,-1,8 - 1204 985 1204 985 1227 1085 c 1,9,-1 - 1391 1085 l 1,10,11 - 1374 1010 1374 1010 1352 945.5 c 128,-1,12 - 1330 881 1330 881 1301.5 828.5 c 128,-1,13 - 1273 776 1273 776 1247 734.5 c 128,-1,14 - 1221 693 1221 693 1183 655 c 128,-1,15 - 1145 617 1145 617 1117 591.5 c 128,-1,16 - 1089 566 1089 566 1044 536.5 c 128,-1,17 - 999 507 999 507 971.5 490.5 c 128,-1,18 - 944 474 944 474 895 446 c 1,19,-1 - 1141 0 l 1,20,-1 - 934 0 l 1,21,-1 - 635 543 l 1,22,23 - 590 514 590 514 567.5 499 c 128,-1,24 - 545 484 545 484 505 453 c 128,-1,25 - 465 422 465 422 442 396.5 c 128,-1,26 - 419 371 419 371 387 329 c 128,-1,27 - 355 287 355 287 333.5 242 c 128,-1,28 - 312 197 312 197 289.5 135 c 128,-1,29 - 267 73 267 73 250 0 c 1,30,-1 - 86 0 l 1,31,32 - 113 118 113 118 157 214 c 128,-1,33 - 201 310 201 310 240 367.5 c 128,-1,34 - 279 425 279 425 349.5 483 c 128,-1,35 - 420 541 420 541 458 565 c 128,-1,36 - 496 589 496 589 581 637 c 0,37,38 - 583 639 583 639 584 639 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57665 -Encoding: 1489 1489 934 -Width: 1064 -VWidth: 0 -Flags: W -HStem: 0 102<111 752 915 958> 907 43G<305 346> 1004 102<403 817> -VStem: 895 170<567 929> -LayerCount: 2 -Fore -SplineSet -330 1055 m 1,0,1 - 469 1106 469 1106 614 1106 c 0,2,3 - 845 1106 845 1106 955 1033.5 c 128,-1,4 - 1065 961 1065 961 1065 811 c 0,5,6 - 1065 749 1065 749 1047 676 c 1,7,-1 - 915 102 l 1,8,-1 - 983 102 l 1,9,-1 - 958 0 l 1,10,-1 - 86 0 l 1,11,-1 - 111 102 l 1,12,-1 - 752 102 l 1,13,-1 - 877 651 l 2,14,15 - 895 727 895 727 895 786 c 0,16,17 - 895 849 895 849 875.5 892.5 c 128,-1,18 - 856 936 856 936 818.5 960 c 128,-1,19 - 781 984 781 984 735 994 c 128,-1,20 - 689 1004 689 1004 629 1004 c 0,21,22 - 463 1004 463 1004 295 907 c 1,23,-1 - 330 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57666 -Encoding: 1490 1490 935 -Width: 966 -VWidth: 0 -Flags: W -HStem: 0 43G<90 337 682 864> 1004 102<466 755> -VStem: 670 168<3 421> 688 176<0 167 173 195 202 422> 791 174<767 969> -LayerCount: 2 -Fore -SplineSet -864 0 m 1,0,-1 - 688 0 l 1,1,2 - 670 76 670 76 670 170 c 0,3,4 - 670 283 670 283 696 401 c 1,5,-1 - 702 422 l 1,6,7 - 572 384 572 384 470.5 293 c 128,-1,8 - 369 202 369 202 260 0 c 1,9,-1 - 90 0 l 1,10,11 - 148 117 148 117 214 206.5 c 128,-1,12 - 280 296 280 296 339 350.5 c 128,-1,13 - 398 405 398 405 470 445 c 128,-1,14 - 542 485 542 485 598.5 504.5 c 128,-1,15 - 655 524 655 524 729 541 c 1,16,-1 - 778 758 l 2,17,18 - 791 812 791 812 791 844 c 0,19,20 - 791 921 791 921 754 962.5 c 128,-1,21 - 717 1004 717 1004 664 1004 c 0,22,23 - 621 1004 621 1004 564 991.5 c 128,-1,24 - 507 979 507 979 481 952 c 1,25,-1 - 367 1014 l 1,26,27 - 414 1057 414 1057 501.5 1081.5 c 128,-1,28 - 589 1106 589 1106 657 1106 c 0,29,30 - 708 1106 708 1106 760 1093.5 c 128,-1,31 - 812 1081 812 1081 859 1056 c 128,-1,32 - 906 1031 906 1031 935.5 986 c 128,-1,33 - 965 941 965 941 965 883 c 0,34,35 - 965 860 965 860 958 825 c 1,36,-1 - 860 401 l 2,37,38 - 838 302 838 302 838 199 c 0,39,40 - 838 82 838 82 864 0 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57667 -Encoding: 1491 1491 936 -Width: 995 -VWidth: 0 -Flags: W -HStem: 0 43G<657 831> 983 102<266 885 1049 1116> -LayerCount: 2 -Fore -SplineSet -821 0 m 1,0,-1 - 657 0 l 1,1,-1 - 885 983 l 1,2,-1 - 244 983 l 1,3,-1 - 266 1085 l 1,4,-1 - 1139 1085 l 1,5,-1 - 1116 983 l 1,6,-1 - 1049 983 l 1,7,-1 - 821 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57668 -Encoding: 1492 1492 937 -Width: 1091 -VWidth: 0 -Flags: W -HStem: 0 43G<102 276 825 999> 907 43G<321 362> 1004 102<431 893> -VStem: 991 168<549 909> -LayerCount: 2 -Fore -SplineSet -397 571 m 9,0,-1 - 266 0 l 1,1,-1 - 102 0 l 1,2,-1 - 236 573 l 1,3,-1 - 397 571 l 9,0,-1 -346 1055 m 1,4,5 - 411 1079 411 1079 502.5 1092.5 c 128,-1,6 - 594 1106 594 1106 672 1106 c 0,7,8 - 1159 1106 1159 1106 1159 793 c 0,9,10 - 1159 733 1159 733 1145 676 c 2,11,-1 - 989 0 l 1,12,-1 - 825 0 l 1,13,-1 - 975 651 l 2,14,15 - 991 720 991 720 991 766 c 0,16,17 - 991 1004 991 1004 686 1004 c 0,18,19 - 595 1004 595 1004 490.5 977.5 c 128,-1,20 - 386 951 386 951 311 907 c 1,21,-1 - 346 1055 l 1,4,5 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57669 -Encoding: 1493 1493 938 -Width: 696 -VWidth: 0 -Flags: W -HStem: 0 43G<430 603> 952 102<471 602> -VStem: 614 170<641 946> -LayerCount: 2 -Fore -SplineSet -539 952 m 0,0,1 - 475 952 475 952 413 976 c 128,-1,2 - 351 1000 351 1000 324 1044 c 1,3,-1 - 467 1106 l 1,4,5 - 489 1055 489 1055 563 1055 c 0,6,7 - 661 1055 661 1055 722.5 1007 c 128,-1,8 - 784 959 784 959 784 860 c 0,9,10 - 784 820 784 820 772 774 c 1,11,-1 - 594 0 l 1,12,-1 - 430 0 l 1,13,-1 - 594 707 l 2,14,15 - 614 794 614 794 614 854 c 0,16,17 - 614 952 614 952 539 952 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57670 -Encoding: 1494 1494 939 -Width: 796 -VWidth: 0 -Flags: W -HStem: 0 43G<303 476> -VStem: 305 621 -LayerCount: 2 -Fore -SplineSet -647 866 m 1,0,-1 - 305 969 l 1,1,-1 - 332 1085 l 1,2,-1 - 926 909 l 1,3,-1 - 897 793 l 1,4,-1 - 778 827 l 1,5,6 - 709 805 709 805 666.5 743 c 128,-1,7 - 624 681 624 681 588 526 c 2,8,-1 - 467 0 l 1,9,-1 - 303 0 l 1,10,-1 - 438 582 l 2,11,12 - 454 651 454 651 477.5 702 c 128,-1,13 - 501 753 501 753 530.5 784 c 128,-1,14 - 560 815 560 815 586 833 c 128,-1,15 - 612 851 612 851 647 866 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57671 -Encoding: 1495 1495 940 -Width: 1193 -VWidth: 0 -Flags: W -HStem: 0 43G<102 276 928 1101> 1004 102<493 960> -VStem: 1090 170<618 888> -LayerCount: 2 -Fore -SplineSet -346 1055 m 1,0,1 - 408 1078 408 1078 523.5 1092 c 128,-1,2 - 639 1106 639 1106 723 1106 c 0,3,4 - 975 1106 975 1106 1117.5 1022 c 128,-1,5 - 1260 938 1260 938 1260 774 c 0,6,7 - 1260 733 1260 733 1247 676 c 2,8,-1 - 1092 0 l 1,9,-1 - 928 0 l 1,10,-1 - 1077 651 l 2,11,12 - 1090 708 1090 708 1090 748 c 0,13,14 - 1090 821 1090 821 1059 873.5 c 128,-1,15 - 1028 926 1028 926 974 953 c 128,-1,16 - 920 980 920 980 862 992 c 128,-1,17 - 804 1004 804 1004 737 1004 c 0,18,19 - 631 1004 631 1004 489 971 c 1,20,-1 - 266 0 l 1,21,-1 - 102 0 l 1,22,-1 - 346 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57672 -Encoding: 1496 1496 941 -Width: 1226 -VWidth: 0 -Flags: W -HStem: -20 102<488 798> 1001 102<969 1149> -VStem: 201 168<203 616> 352 164<1023 1085> 1157 166<666 996> -LayerCount: 2 -Fore -SplineSet -1081 520 m 2,0,-1 - 1135 756 l 2,1,2 - 1157 852 1157 852 1157 903 c 0,3,4 - 1157 1001 1157 1001 1081 1001 c 0,5,6 - 1010 1001 1010 1001 961 950 c 1,7,-1 - 846 1012 l 1,8,9 - 945 1104 945 1104 1073 1104 c 0,10,11 - 1177 1104 1177 1104 1250 1052 c 128,-1,12 - 1323 1000 1323 1000 1323 897 c 0,13,14 - 1323 859 1323 859 1315 823 c 2,15,-1 - 1239 496 l 2,16,17 - 1204 346 1204 346 1109 227.5 c 128,-1,18 - 1014 109 1014 109 883.5 44.5 c 128,-1,19 - 753 -20 753 -20 610 -20 c 0,20,21 - 425 -20 425 -20 313 85.5 c 128,-1,22 - 201 191 201 191 201 365 c 0,23,24 - 201 421 201 421 217 496 c 1,25,-1 - 352 1085 l 1,26,-1 - 516 1085 l 1,27,-1 - 387 520 l 2,28,29 - 369 440 369 440 369 377 c 0,30,31 - 369 300 369 300 393 241 c 128,-1,32 - 417 182 417 182 456 148.5 c 128,-1,33 - 495 115 495 115 540 98.5 c 128,-1,34 - 585 82 585 82 633 82 c 0,35,36 - 678 82 678 82 727.5 96 c 128,-1,37 - 777 110 777 110 831.5 143.5 c 128,-1,38 - 886 177 886 177 933 225.5 c 128,-1,39 - 980 274 980 274 1020 350.5 c 128,-1,40 - 1060 427 1060 427 1081 520 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57673 -Encoding: 1497 1497 942 -Width: 686 -VWidth: 0 -Flags: W -HStem: 1001 102<439 618> -VStem: 627 166<665 996> -LayerCount: 2 -Fore -SplineSet -551 520 m 9,0,-1 - 604 756 l 2,1,2 - 627 856 627 856 627 903 c 0,3,4 - 627 1001 627 1001 551 1001 c 0,5,6 - 479 1001 479 1001 430 950 c 1,7,-1 - 315 1012 l 1,8,9 - 414 1104 414 1104 543 1104 c 0,10,11 - 647 1104 647 1104 720 1052 c 128,-1,12 - 793 1000 793 1000 793 897 c 0,13,14 - 793 864 793 864 784 823 c 2,15,-1 - 715 520 l 1,16,-1 - 551 520 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57674 -Encoding: 1498 1498 943 -Width: 985 -VWidth: 0 -Flags: W -HStem: 907 43G<235 276> 1004 102<345 807> -VStem: 645 164<-410 -347> 905 168<554 909> -LayerCount: 2 -Fore -SplineSet -260 1055 m 1,0,1 - 325 1079 325 1079 416.5 1092.5 c 128,-1,2 - 508 1106 508 1106 586 1106 c 0,3,4 - 1073 1106 1073 1106 1073 793 c 0,5,6 - 1073 733 1073 733 1059 676 c 2,7,-1 - 809 -410 l 1,8,-1 - 645 -410 l 1,9,-1 - 889 651 l 2,10,11 - 905 720 905 720 905 766 c 0,12,13 - 905 1004 905 1004 600 1004 c 0,14,15 - 509 1004 509 1004 404.5 977.5 c 128,-1,16 - 300 951 300 951 225 907 c 1,17,-1 - 260 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57675 -Encoding: 1499 1499 944 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -20 102<221 678> 907 43G<305 346> 1004 102<415 877> -VStem: 975 168<545 909> -LayerCount: 2 -Fore -SplineSet -1128 676 m 2,0,-1 - 1067 410 l 1,1,2 - 967 -20 967 -20 395 -20 c 0,3,4 - 317 -20 317 -20 231 -6.5 c 128,-1,5 - 145 7 145 7 92 31 c 1,6,-1 - 127 178 l 1,7,8 - 182 135 182 135 274 108.5 c 128,-1,9 - 366 82 366 82 457 82 c 0,10,11 - 828 82 828 82 909 434 c 1,12,-1 - 958 651 l 2,13,14 - 975 724 975 724 975 766 c 0,15,16 - 975 1004 975 1004 670 1004 c 0,17,18 - 579 1004 579 1004 474.5 977.5 c 128,-1,19 - 370 951 370 951 295 907 c 1,20,-1 - 330 1055 l 1,21,22 - 395 1079 395 1079 486 1092.5 c 128,-1,23 - 577 1106 577 1106 655 1106 c 0,24,25 - 1143 1106 1143 1106 1143 793 c 0,26,27 - 1143 738 1143 738 1128 676 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57676 -Encoding: 1500 1500 945 -Width: 948 -VWidth: 0 -Flags: W -HStem: 0 43G<180 386> 983 102<496 775> 1393 41G<404 578> -VStem: 180 160<0 114> 870 170<639 908> -LayerCount: 2 -Fore -SplineSet -309 983 m 1,0,-1 - 414 1434 l 1,1,-1 - 578 1434 l 1,2,-1 - 496 1085 l 1,3,-1 - 524 1085 l 2,4,5 - 811 1085 811 1085 925.5 1035.5 c 128,-1,6 - 1040 986 1040 986 1040 852 c 0,7,8 - 1040 794 1040 794 1022 717 c 0,9,10 - 1002 631 1002 631 958.5 565 c 128,-1,11 - 915 499 915 499 860 457.5 c 128,-1,12 - 805 416 805 416 742 381.5 c 128,-1,13 - 679 347 679 347 616 314 c 128,-1,14 - 553 281 553 281 498.5 242 c 128,-1,15 - 444 203 444 203 401.5 141.5 c 128,-1,16 - 359 80 359 80 340 0 c 1,17,-1 - 180 0 l 1,18,19 - 199 80 199 80 242 145.5 c 128,-1,20 - 285 211 285 211 340.5 255.5 c 128,-1,21 - 396 300 396 300 460 339.5 c 128,-1,22 - 524 379 524 379 587 416.5 c 128,-1,23 - 650 454 650 454 705 495 c 128,-1,24 - 760 536 760 536 801.5 595.5 c 128,-1,25 - 843 655 843 655 860 727 c 0,26,27 - 870 772 870 772 870 801 c 0,28,29 - 870 843 870 843 852.5 874 c 128,-1,30 - 835 905 835 905 792.5 930.5 c 128,-1,31 - 750 956 750 956 670 969.5 c 128,-1,32 - 590 983 590 983 473 983 c 2,33,-1 - 309 983 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57677 -Encoding: 1501 1501 946 -Width: 1193 -VWidth: 0 -Flags: W -HStem: 0 102<291 952> 1004 102<493 960> -VStem: 1090 170<618 888> -LayerCount: 2 -Fore -SplineSet -346 1055 m 1,0,1 - 408 1078 408 1078 523.5 1092 c 128,-1,2 - 639 1106 639 1106 723 1106 c 0,3,4 - 975 1106 975 1106 1117.5 1022 c 128,-1,5 - 1260 938 1260 938 1260 774 c 0,6,7 - 1260 733 1260 733 1247 676 c 2,8,-1 - 1092 0 l 1,9,-1 - 102 0 l 1,10,-1 - 346 1055 l 1,0,1 -489 971 m 1,11,-1 - 291 102 l 1,12,-1 - 952 102 l 1,13,-1 - 1077 651 l 2,14,15 - 1090 708 1090 708 1090 748 c 0,16,17 - 1090 821 1090 821 1059 873.5 c 128,-1,18 - 1028 926 1028 926 974 953 c 128,-1,19 - 920 980 920 980 862 992 c 128,-1,20 - 804 1004 804 1004 737 1004 c 0,21,22 - 631 1004 631 1004 489 971 c 1,11,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57678 -Encoding: 1502 1502 947 -Width: 1284 -VWidth: 0 -Flags: W -HStem: 0 102<668 1042> 1004 102<778 1129> -VStem: 1190 168<572 944> -LayerCount: 2 -Fore -SplineSet -121 0 m 1,0,-1 - 395 674 l 1,1,2 - 412 712 412 712 426 741 c 1,3,-1 - 342 1085 l 1,4,-1 - 522 1085 l 1,5,-1 - 559 938 l 1,6,7 - 718 1106 718 1106 936 1106 c 0,8,9 - 1159 1106 1159 1106 1258.5 1038 c 128,-1,10 - 1358 970 1358 970 1358 827 c 0,11,12 - 1358 772 1358 772 1337 676 c 2,13,-1 - 1182 0 l 1,14,-1 - 643 0 l 1,15,-1 - 668 102 l 1,16,-1 - 1042 102 l 1,17,-1 - 1167 651 l 2,18,19 - 1190 751 1190 751 1190 805 c 0,20,21 - 1190 917 1190 917 1129.5 960.5 c 128,-1,22 - 1069 1004 1069 1004 950 1004 c 0,23,24 - 821 1004 821 1004 727 923.5 c 128,-1,25 - 633 843 633 843 551 645 c 2,26,-1 - 287 0 l 1,27,-1 - 121 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57679 -Encoding: 1503 1503 948 -Width: 686 -VWidth: 0 -Flags: W -HStem: 1001 102<428 608> -VStem: 616 166<667 996> -LayerCount: 2 -Fore -SplineSet -326 -410 m 9,0,-1 - 594 756 l 2,1,2 - 616 852 616 852 616 903 c 0,3,4 - 616 1001 616 1001 541 1001 c 0,5,6 - 469 1001 469 1001 420 950 c 1,7,-1 - 305 1012 l 1,8,9 - 404 1104 404 1104 532 1104 c 0,10,11 - 636 1104 636 1104 709 1052 c 128,-1,12 - 782 1000 782 1000 782 897 c 0,13,14 - 782 859 782 859 774 823 c 2,15,-1 - 489 -410 l 1,16,-1 - 326 -410 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57680 -Encoding: 1504 1504 949 -Width: 700 -VWidth: 0 -Flags: W -HStem: 0 102<111 459> 1001 102<443 622> -VStem: 631 166<671 996> -LayerCount: 2 -Fore -SplineSet -598 0 m 1,0,-1 - 86 0 l 1,1,-1 - 111 102 l 1,2,-1 - 459 102 l 1,3,-1 - 608 756 l 2,4,5 - 631 856 631 856 631 903 c 0,6,7 - 631 1001 631 1001 555 1001 c 0,8,9 - 483 1001 483 1001 434 950 c 1,10,-1 - 319 1012 l 1,11,12 - 418 1104 418 1104 547 1104 c 0,13,14 - 651 1104 651 1104 724 1052 c 128,-1,15 - 797 1000 797 1000 797 897 c 0,16,17 - 797 864 797 864 788 823 c 2,18,-1 - 598 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57681 -Encoding: 1505 1505 950 -Width: 1284 -VWidth: 0 -Flags: W -HStem: -20 102<530 854> 983 102<342 535 653 1059> -VStem: 258 164<187 604> 1165 164<448 870> -LayerCount: 2 -Fore -SplineSet -342 1085 m 1,0,-1 - 905 1085 l 2,1,2 - 1103 1085 1103 1085 1216 987 c 128,-1,3 - 1329 889 1329 889 1329 702 c 0,4,5 - 1329 568 1329 568 1287.5 449.5 c 128,-1,6 - 1246 331 1246 331 1177 247 c 128,-1,7 - 1108 163 1108 163 1020 101.5 c 128,-1,8 - 932 40 932 40 837 10 c 128,-1,9 - 742 -20 742 -20 651 -20 c 0,10,11 - 474 -20 474 -20 366 69.5 c 128,-1,12 - 258 159 258 159 258 340 c 0,13,14 - 258 684 258 684 535 983 c 1,15,-1 - 319 983 l 1,16,-1 - 342 1085 l 1,0,-1 -694 983 m 1,17,18 - 644 935 644 935 599 875 c 128,-1,19 - 554 815 554 815 512.5 736 c 128,-1,20 - 471 657 471 657 446.5 558 c 128,-1,21 - 422 459 422 459 422 354 c 0,22,23 - 422 214 422 214 499 148 c 128,-1,24 - 576 82 576 82 705 82 c 0,25,26 - 760 82 760 82 822.5 108 c 128,-1,27 - 885 134 885 134 945.5 187.5 c 128,-1,28 - 1006 241 1006 241 1055 312 c 128,-1,29 - 1104 383 1104 383 1134.5 482.5 c 128,-1,30 - 1165 582 1165 582 1165 692 c 0,31,32 - 1165 838 1165 838 1092 910.5 c 128,-1,33 - 1019 983 1019 983 913 983 c 2,34,-1 - 694 983 l 1,17,18 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57682 -Encoding: 1506 1506 951 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -328 102<43 262> -VStem: 365 145<720 1085> 412 135<-14 251> 1124 164<939 1085> -LayerCount: 2 -Fore -SplineSet -18 -328 m 1,0,-1 - 43 -225 l 1,1,2 - 234 -225 234 -225 412 -115 c 1,3,-1 - 365 1085 l 1,4,-1 - 510 1085 l 1,5,-1 - 547 -14 l 1,6,7 - 749 166 749 166 899 462.5 c 128,-1,8 - 1049 759 1049 759 1124 1085 c 1,9,-1 - 1288 1085 l 1,10,11 - 1257 951 1257 951 1209 814 c 128,-1,12 - 1161 677 1161 677 1093 537.5 c 128,-1,13 - 1025 398 1025 398 943.5 272 c 128,-1,14 - 862 146 862 146 759 35.5 c 128,-1,15 - 656 -75 656 -75 543 -155 c 128,-1,16 - 430 -235 430 -235 295 -281.5 c 128,-1,17 - 160 -328 160 -328 18 -328 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57683 -Encoding: 1507 1507 952 -Width: 1079 -VWidth: 0 -Flags: W -HStem: 471 102<432 608> 1004 102<480 881> -VStem: 254 168<579 901> 979 168<554 909> -LayerCount: 2 -Fore -SplineSet -719 -410 m 1,0,-1 - 963 651 l 2,1,2 - 979 720 979 720 979 766 c 0,3,4 - 979 1004 979 1004 674 1004 c 0,5,6 - 590 1004 590 1004 479 977 c 1,7,-1 - 442 819 l 2,8,9 - 422 732 422 732 422 672 c 0,10,11 - 422 573 422 573 498 573 c 0,12,13 - 567 573 567 573 616 625 c 1,14,-1 - 731 563 l 1,15,16 - 632 471 632 471 504 471 c 0,17,18 - 400 471 400 471 327 523 c 128,-1,19 - 254 575 254 575 254 678 c 0,20,21 - 254 707 254 707 264 752 c 2,22,-1 - 334 1055 l 1,23,24 - 399 1079 399 1079 490 1092.5 c 128,-1,25 - 581 1106 581 1106 659 1106 c 0,26,27 - 1147 1106 1147 1106 1147 793 c 0,28,29 - 1147 733 1147 733 1133 676 c 2,30,-1 - 883 -410 l 1,31,-1 - 719 -410 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57684 -Encoding: 1508 1508 953 -Width: 1085 -VWidth: 0 -Flags: W -HStem: -20 102<233 691> 471 102<440 616> 1004 102<488 889> -VStem: 262 168<579 901> 987 168<545 909> -LayerCount: 2 -Fore -SplineSet -1141 676 m 2,0,-1 - 1079 410 l 2,1,2 - 979 -20 979 -20 408 -20 c 0,3,4 - 330 -20 330 -20 243.5 -6.5 c 128,-1,5 - 157 7 157 7 104 31 c 1,6,-1 - 139 178 l 1,7,8 - 194 135 194 135 286 108.5 c 128,-1,9 - 378 82 378 82 469 82 c 0,10,11 - 841 82 841 82 922 434 c 1,12,-1 - 971 651 l 2,13,14 - 987 720 987 720 987 766 c 0,15,16 - 987 1004 987 1004 682 1004 c 0,17,18 - 598 1004 598 1004 487 977 c 1,19,-1 - 451 819 l 2,20,21 - 430 727 430 727 430 672 c 0,22,23 - 430 573 430 573 506 573 c 0,24,25 - 576 573 576 573 625 625 c 1,26,-1 - 739 563 l 1,27,28 - 640 471 640 471 512 471 c 0,29,30 - 408 471 408 471 335 523 c 128,-1,31 - 262 575 262 575 262 678 c 0,32,33 - 262 707 262 707 272 752 c 2,34,-1 - 342 1055 l 1,35,36 - 407 1079 407 1079 498.5 1092.5 c 128,-1,37 - 590 1106 590 1106 668 1106 c 0,38,39 - 1155 1106 1155 1106 1155 793 c 0,40,41 - 1155 733 1155 733 1141 676 c 2,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57685 -Encoding: 1509 1509 954 -Width: 1103 -VWidth: 0 -Flags: W -VStem: 305 166<722 1082> 680 178<50 331> 1085 170<951 1085> -LayerCount: 2 -Fore -SplineSet -545 -410 m 1,0,-1 - 672 143 l 1,1,2 - 680 183 680 183 680 201 c 0,3,4 - 680 249 680 249 659.5 293 c 128,-1,5 - 639 337 639 337 605.5 374 c 128,-1,6 - 572 411 572 411 532 449.5 c 128,-1,7 - 492 488 492 488 452.5 532.5 c 128,-1,8 - 413 577 413 577 379.5 627.5 c 128,-1,9 - 346 678 346 678 325.5 749 c 128,-1,10 - 305 820 305 820 305 901 c 0,11,12 - 305 984 305 984 328 1085 c 1,13,-1 - 492 1085 l 1,14,15 - 471 993 471 993 471 920 c 0,16,17 - 471 882 471 882 475.5 848 c 128,-1,18 - 480 814 480 814 491 783.5 c 128,-1,19 - 502 753 502 753 511.5 729 c 128,-1,20 - 521 705 521 705 541 678 c 128,-1,21 - 561 651 561 651 572.5 635.5 c 128,-1,22 - 584 620 584 620 610.5 595 c 128,-1,23 - 637 570 637 570 647.5 560.5 c 128,-1,24 - 658 551 658 551 687.5 526 c 128,-1,25 - 717 501 717 501 725 494 c 1,26,27 - 856 586 856 586 948.5 738 c 128,-1,28 - 1041 890 1041 890 1085 1085 c 1,29,-1 - 1255 1085 l 1,30,31 - 1207 875 1207 875 1082.5 703.5 c 128,-1,32 - 958 532 958 532 799 420 c 1,33,34 - 858 351 858 351 858 268 c 0,35,36 - 858 236 858 236 850 205 c 2,37,-1 - 709 -410 l 1,38,-1 - 545 -410 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57686 -Encoding: 1510 1510 955 -Width: 1122 -VWidth: 0 -Flags: W -HStem: 0 102<117 832> -VStem: 315 166<671 1082> 911 166<164 298> 1100 170<946 1085> -LayerCount: 2 -Fore -SplineSet -92 0 m 1,0,-1 - 117 102 l 1,1,-1 - 473 102 l 2,2,3 - 702 102 702 102 806.5 134.5 c 128,-1,4 - 911 167 911 167 911 246 c 0,5,6 - 911 269 911 269 885.5 288.5 c 128,-1,7 - 860 308 860 308 818 322.5 c 128,-1,8 - 776 337 776 337 722.5 358 c 128,-1,9 - 669 379 669 379 613 403 c 128,-1,10 - 557 427 557 427 503.5 468 c 128,-1,11 - 450 509 450 509 408 560 c 128,-1,12 - 366 611 366 611 340.5 690 c 128,-1,13 - 315 769 315 769 315 866 c 0,14,15 - 315 962 315 962 342 1085 c 1,16,-1 - 506 1085 l 1,17,18 - 481 977 481 977 481 879 c 0,19,20 - 481 797 481 797 501 731.5 c 128,-1,21 - 521 666 521 666 557.5 620 c 128,-1,22 - 594 574 594 574 635.5 543 c 128,-1,23 - 677 512 677 512 731 487 c 1,24,25 - 865 579 865 579 959.5 732.5 c 128,-1,26 - 1054 886 1054 886 1100 1085 c 1,27,-1 - 1270 1085 l 1,28,29 - 1223 885 1223 885 1108.5 719.5 c 128,-1,30 - 994 554 994 554 844 442 c 1,31,32 - 968 397 968 397 1001 378 c 0,33,34 - 1077 335 1077 335 1077 268 c 0,35,36 - 1077 202 1077 202 1056.5 157 c 128,-1,37 - 1036 112 1036 112 994 81 c 128,-1,38 - 952 50 952 50 875.5 32.5 c 128,-1,39 - 799 15 799 15 698 7.5 c 128,-1,40 - 597 0 597 0 449 0 c 2,41,-1 - 92 0 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57687 -Encoding: 1511 1511 956 -Width: 1130 -VWidth: 0 -Flags: W -HStem: 0 43G<442 648> 983 102<352 959> -VStem: 442 160<0 114> 1055 170<639 908> -LayerCount: 2 -Fore -SplineSet -397 571 m 9,0,-1 - 172 -410 l 1,1,-1 - 8 -410 l 1,2,-1 - 236 573 l 1,3,-1 - 397 571 l 9,0,-1 -352 1085 m 1,4,-1 - 709 1085 l 2,5,6 - 996 1085 996 1085 1110.5 1035.5 c 128,-1,7 - 1225 986 1225 986 1225 852 c 0,8,9 - 1225 798 1225 798 1206 717 c 0,10,11 - 1186 631 1186 631 1146.5 565 c 128,-1,12 - 1107 499 1107 499 1059 457.5 c 128,-1,13 - 1011 416 1011 416 956.5 381.5 c 128,-1,14 - 902 347 902 347 847.5 314 c 128,-1,15 - 793 281 793 281 745 242 c 128,-1,16 - 697 203 697 203 659 141.5 c 128,-1,17 - 621 80 621 80 602 0 c 1,18,-1 - 442 0 l 1,19,20 - 461 80 461 80 500 145.5 c 128,-1,21 - 539 211 539 211 587.5 255.5 c 128,-1,22 - 636 300 636 300 691.5 339.5 c 128,-1,23 - 747 379 747 379 802 416.5 c 128,-1,24 - 857 454 857 454 904.5 495 c 128,-1,25 - 952 536 952 536 989.5 595.5 c 128,-1,26 - 1027 655 1027 655 1044 727 c 0,27,28 - 1055 776 1055 776 1055 801 c 0,29,30 - 1055 843 1055 843 1037.5 874 c 128,-1,31 - 1020 905 1020 905 977.5 930.5 c 128,-1,32 - 935 956 935 956 854.5 969.5 c 128,-1,33 - 774 983 774 983 657 983 c 2,34,-1 - 330 983 l 1,35,-1 - 352 1085 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57688 -Encoding: 1512 1512 957 -Width: 989 -VWidth: 0 -Flags: W -HStem: 0 43G<739 913> 907 43G<235 276> 1004 102<345 807> -VStem: 905 168<549 909> -LayerCount: 2 -Fore -SplineSet -260 1055 m 1,0,1 - 325 1079 325 1079 416.5 1092.5 c 128,-1,2 - 508 1106 508 1106 586 1106 c 0,3,4 - 1073 1106 1073 1106 1073 793 c 0,5,6 - 1073 733 1073 733 1059 676 c 2,7,-1 - 903 0 l 1,8,-1 - 739 0 l 1,9,-1 - 889 651 l 2,10,11 - 905 720 905 720 905 766 c 0,12,13 - 905 1004 905 1004 600 1004 c 0,14,15 - 509 1004 509 1004 404.5 977.5 c 128,-1,16 - 300 951 300 951 225 907 c 1,17,-1 - 260 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57689 -Encoding: 1513 1513 958 -Width: 1509 -VWidth: 0 -Flags: W -HStem: 0 104<455 746> -VStem: 1004 162<976 1085> 1511 166<980 1085> -LayerCount: 2 -Fore -SplineSet -340 1085 m 1,0,-1 - 508 1085 l 1,1,-1 - 479 539 l 1,2,3 - 662 549 662 549 794.5 694 c 128,-1,4 - 927 839 927 839 1004 1085 c 1,5,-1 - 1165 1085 l 1,6,7 - 1056 778 1056 778 881.5 614.5 c 128,-1,8 - 707 451 707 451 471 438 c 1,9,-1 - 455 104 l 1,10,11 - 593 111 593 111 708.5 138 c 128,-1,12 - 824 165 824 165 916 207.5 c 128,-1,13 - 1008 250 1008 250 1085.5 316 c 128,-1,14 - 1163 382 1163 382 1222.5 457.5 c 128,-1,15 - 1282 533 1282 533 1335 635.5 c 128,-1,16 - 1388 738 1388 738 1428.5 843.5 c 128,-1,17 - 1469 949 1469 949 1511 1085 c 1,18,-1 - 1677 1085 l 1,19,20 - 1632 935 1632 935 1587.5 817.5 c 128,-1,21 - 1543 700 1543 700 1488 592 c 128,-1,22 - 1433 484 1433 484 1371.5 404 c 128,-1,23 - 1310 324 1310 324 1233 255 c 128,-1,24 - 1156 186 1156 186 1065.5 140.5 c 128,-1,25 - 975 95 975 95 863 62 c 128,-1,26 - 751 29 751 29 619 14.5 c 128,-1,27 - 487 0 487 0 328 0 c 2,28,-1 - 281 0 l 1,29,-1 - 340 1085 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii57690 -Encoding: 1514 1514 959 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 102<111 212> 907 43G<305 314> 1004 102<619 957> -VStem: 1094 170<618 885> -LayerCount: 2 -Fore -SplineSet -330 1055 m 1,0,1 - 392 1078 392 1078 512 1092 c 128,-1,2 - 632 1106 632 1106 717 1106 c 0,3,4 - 972 1106 972 1106 1118 1021.5 c 128,-1,5 - 1264 937 1264 937 1264 772 c 0,6,7 - 1264 733 1264 733 1251 676 c 2,8,-1 - 1096 0 l 1,9,-1 - 932 0 l 1,10,-1 - 1081 651 l 2,11,12 - 1094 708 1094 708 1094 745 c 0,13,14 - 1094 819 1094 819 1061.5 872 c 128,-1,15 - 1029 925 1029 925 973 952.5 c 128,-1,16 - 917 980 917 980 857.5 992 c 128,-1,17 - 798 1004 798 1004 731 1004 c 0,18,19 - 709 1004 709 1004 621 995 c 1,20,-1 - 457 281 l 2,21,22 - 435 185 435 185 371.5 119 c 128,-1,23 - 308 53 308 53 235.5 26.5 c 128,-1,24 - 163 0 163 0 86 0 c 1,25,-1 - 111 102 l 1,26,27 - 183 102 183 102 230.5 162 c 128,-1,28 - 278 222 278 222 307 348 c 2,29,-1 - 451 965 l 1,30,31 - 357 943 357 943 295 907 c 1,32,-1 - 330 1055 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii299 -Encoding: 8206 8206 960 -Width: 731 -VWidth: 0 -Flags: W -HStem: 1337 61<534 821> -LayerCount: 2 -Fore -SplineSet -945 1368 m 1,0,-1 - 675 1149 l 1,1,-1 - 695 1235 l 1,2,-1 - 821 1337 l 1,3,-1 - 534 1337 l 1,4,-1 - 131 -410 l 1,5,-1 - 69 -410 l 1,6,-1 - 487 1399 l 1,7,-1 - 835 1399 l 1,8,-1 - 756 1501 l 1,9,-1 - 777 1589 l 1,10,-1 - 945 1368 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: afii300 -Encoding: 8207 8207 961 -Width: 731 -VWidth: 0 -Flags: W -HStem: 1337 61<542 815> -VStem: 418 472 -LayerCount: 2 -Fore -SplineSet -418 1368 m 1,0,-1 - 688 1589 l 1,1,-1 - 668 1501 l 1,2,-1 - 542 1399 l 1,3,-1 - 890 1399 l 1,4,-1 - 473 -410 l 1,5,-1 - 411 -410 l 1,6,-1 - 815 1337 l 1,7,-1 - 528 1337 l 1,8,-1 - 607 1235 l 1,9,-1 - 587 1149 l 1,10,-1 - 418 1368 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni037A -Encoding: 890 890 962 -Width: 442 -VWidth: 0 -Flags: W -HStem: -430 53<106 195> -VStem: 33 106<-377 -136> 213 57<-363 -301> -LayerCount: 2 -Fore -SplineSet -90 -55 m 1,0,-1 - 203 -55 l 1,1,-1 - 156 -254 l 2,2,3 - 139 -327 139 -327 139 -350 c 0,4,5 - 139 -377 139 -377 156 -377 c 0,6,7 - 196 -377 196 -377 213 -301 c 1,8,-1 - 270 -301 l 1,9,10 - 255 -364 255 -364 219.5 -397 c 128,-1,11 - 184 -430 184 -430 133 -430 c 0,12,13 - 33 -430 33 -430 33 -328 c 0,14,15 - 33 -295 33 -295 41 -262 c 2,16,-1 - 90 -55 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni037E -Encoding: 894 894 963 -Width: 356 -VWidth: 0 -Flags: W -LayerCount: 2 -Fore -Refer: 64 59 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: tonos -Encoding: 900 900 964 -Width: 493 -VWidth: 0 -Flags: W -HStem: 1255 387 -VStem: 375 406 -LayerCount: 2 -Fore -Refer: 345 180 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: dieresistonos -Encoding: 901 901 965 -Width: 849 -VWidth: 0 -Flags: W -HStem: 1264 387 1270 150<389 504 963 1077> -VStem: 354 184 592 406 928 184 -LayerCount: 2 -Fore -Refer: 374 729 N 1 0 0 1 573 0 2 -Refer: 374 729 N 1 0 0 1 0 0 2 -Refer: 964 900 N 1 0 0 1 217 8 2 -Validated: 1 -EndChar - -StartChar: Alphatonos -Encoding: 902 902 966 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1255 387 1393 41<860 1070> -VStem: 375 406 -LayerCount: 2 -Fore -Refer: 967 913 N 1 0 0 1 0 0 2 -Refer: 964 900 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Alpha -Encoding: 913 913 967 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 410 102<500 1024> 1393 41<860 1070> -LayerCount: 2 -Fore -Refer: 27 65 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Beta -Encoding: 914 914 968 -Width: 1052 -VWidth: 0 -Flags: W -HStem: 0 102<281 700> 727 102<449 775> 1331 102<563 901> -VStem: 872 176<300 657> 944 178<999 1290> -LayerCount: 2 -Fore -Refer: 28 66 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Gamma -Encoding: 915 915 969 -Width: 899 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1331 102<573 1227> -LayerCount: 2 -Fore -Refer: 401 1043 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Delta -Encoding: 916 916 970 -Width: 1298 -VWidth: 0 -Flags: W -HStem: 0 102<264 1087> 1393 41G<869 1079> -LayerCount: 2 -Fore -SplineSet -1264 0 m 1,0,-1 - 39 0 l 1,1,-1 - 893 1434 l 1,2,-1 - 1073 1434 l 1,3,-1 - 1264 0 l 1,0,-1 -264 102 m 1,4,-1 - 1087 102 l 1,5,-1 - 936 1231 l 1,6,-1 - 264 102 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Epsilon -Encoding: 917 917 971 -Width: 962 -VWidth: 0 -Flags: W -HStem: 0 102<281 942> 799 102<465 909> 1331 102<563 1217> -LayerCount: 2 -Fore -Refer: 32 69 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Zeta -Encoding: 918 918 972 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 102<299 963> 1331 102<414 1026> -LayerCount: 2 -Fore -Refer: 52 90 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Eta -Encoding: 919 919 973 -Width: 1259 -VWidth: 0 -Flags: W -HStem: 0 43<82 265 915 1099> 717 102<444 1081> 1393 41<404 588 1238 1421> -LayerCount: 2 -Fore -Refer: 35 72 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Theta -Encoding: 920 920 974 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<594 907> 647 143<618 1133> 1352 102<847 1174> -VStem: 240 176<286 770> 1356 176<664 1163> -LayerCount: 2 -Fore -SplineSet -700 -20 m 0,0,1 - 612 -20 612 -20 532 11 c 128,-1,2 - 452 42 452 42 385.5 102 c 128,-1,3 - 319 162 319 162 279.5 262 c 128,-1,4 - 240 362 240 362 240 489 c 0,5,6 - 240 586 240 586 268 717 c 1,7,8 - 302 865 302 865 365.5 989.5 c 128,-1,9 - 429 1114 429 1114 506 1198.5 c 128,-1,10 - 583 1283 583 1283 672.5 1341.5 c 128,-1,11 - 762 1400 762 1400 850 1427 c 128,-1,12 - 938 1454 938 1454 1022 1454 c 0,13,14 - 1129 1454 1129 1454 1220 1423.5 c 128,-1,15 - 1311 1393 1311 1393 1381.5 1333 c 128,-1,16 - 1452 1273 1452 1273 1492 1174 c 128,-1,17 - 1532 1075 1532 1075 1532 948 c 0,18,19 - 1532 839 1532 839 1503 717 c 0,20,21 - 1460 531 1460 531 1375.5 387 c 128,-1,22 - 1291 243 1291 243 1182 155.5 c 128,-1,23 - 1073 68 1073 68 951 24 c 128,-1,24 - 829 -20 829 -20 700 -20 c 0,0,1 -1010 1352 m 0,25,26 - 938 1352 938 1352 856.5 1312 c 128,-1,27 - 775 1272 775 1272 694.5 1197 c 128,-1,28 - 614 1122 614 1122 545.5 996.5 c 128,-1,29 - 477 871 477 871 442 717 c 0,30,31 - 416 604 416 604 416 508 c 0,32,33 - 416 401 416 401 446.5 316 c 128,-1,34 - 477 231 477 231 525.5 182 c 128,-1,35 - 574 133 574 133 628 107.5 c 128,-1,36 - 682 82 682 82 735 82 c 0,37,38 - 797 82 797 82 864.5 106 c 128,-1,39 - 932 130 932 130 1002.5 182 c 128,-1,40 - 1073 234 1073 234 1135 307 c 128,-1,41 - 1197 380 1197 380 1249 486.5 c 128,-1,42 - 1301 593 1301 593 1329 717 c 0,43,44 - 1356 840 1356 840 1356 938 c 0,45,46 - 1356 1043 1356 1043 1327 1124.5 c 128,-1,47 - 1298 1206 1298 1206 1248.5 1254.5 c 128,-1,48 - 1199 1303 1199 1303 1138.5 1327.5 c 128,-1,49 - 1078 1352 1078 1352 1010 1352 c 0,25,26 -618 791 m 1,50,-1 - 1165 791 l 1,51,-1 - 1133 647 l 1,52,-1 - 586 647 l 1,53,-1 - 618 791 l 1,50,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Iota -Encoding: 921 921 975 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> -VStem: 92 506 -LayerCount: 2 -Fore -Refer: 36 73 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Kappa -Encoding: 922 922 976 -Width: 1239 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 936 1151> 1393 41<414 598 1208 1458> -LayerCount: 2 -Fore -Refer: 38 75 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Lambda -Encoding: 923 923 977 -Width: 1275 -VWidth: 0 -Flags: W -HStem: 0 43<31 219 1086 1255> 1393 41<860 1070> -LayerCount: 2 -Fore -Refer: 716 581 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Mu -Encoding: 924 924 978 -Width: 1544 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 1200 1384> 1393 41<414 608 1503 1706> -LayerCount: 2 -Fore -Refer: 40 77 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Nu -Encoding: 925 925 979 -Width: 1325 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 961 1165> 1393 41<414 616 1303 1487> -LayerCount: 2 -Fore -Refer: 41 78 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Xi -Encoding: 926 926 980 -Width: 1384 -VWidth: 0 -Flags: W -HStem: 0 143<115 1143> 645 143<397 1159> 1290 143<414 1440> -CounterMasks: 1 e0 -LayerCount: 2 -Fore -SplineSet -397 788 m 1,0,-1 - 1192 788 l 1,1,-1 - 1159 645 l 1,2,-1 - 365 645 l 1,3,-1 - 397 788 l 1,0,-1 -414 1434 m 1,4,-1 - 1475 1434 l 1,5,-1 - 1440 1290 l 1,6,-1 - 379 1290 l 1,7,-1 - 414 1434 l 1,4,-1 -115 143 m 1,8,-1 - 1176 143 l 1,9,-1 - 1143 0 l 1,10,-1 - 82 0 l 1,11,-1 - 115 143 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Omicron -Encoding: 927 927 981 -Width: 1370 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 1352 102<811 1133> -VStem: 199 176<286 770> 1315 176<653 1162> -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Pi -Encoding: 928 928 982 -Width: 1173 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 893 1076> 1331 102<573 1200> -LayerCount: 2 -Fore -Refer: 413 1055 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Rho -Encoding: 929 929 983 -Width: 970 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 655 102<440 858> 1331 102<573 969> -VStem: 1032 174<951 1271> -LayerCount: 2 -Fore -Refer: 29 80 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Sigma -Encoding: 931 931 984 -Width: 1040 -VWidth: 0 -Flags: W -HStem: 0 102<332 983> 1331 102<625 1274> -LayerCount: 2 -Fore -Refer: 635 425 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Tau -Encoding: 932 932 985 -Width: 1198 -VWidth: 0 -Flags: W -HStem: 0 43<532 716> 1331 102<352 840 1014 1526> -LayerCount: 2 -Fore -Refer: 46 84 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Upsilon -Encoding: 933 933 986 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<451 634> 1393 41<414 609 1112 1327> -LayerCount: 2 -Fore -Refer: 51 89 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Phi -Encoding: 934 934 987 -Width: 1370 -VWidth: 0 -Flags: W -HStem: 0 43<592 776> 188 106<545 635> 1143 104<715 856 1053 1129> 1393 41<914 1098> -VStem: 215 174<446 810> 1300 174<628 983> -LayerCount: 2 -Fore -Refer: 418 1060 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Chi -Encoding: 935 935 988 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<41 254 802 997> 1393 41<414 609 1072 1286> -LayerCount: 2 -Fore -Refer: 49 88 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Psi -Encoding: 936 936 989 -Width: 1556 -VWidth: 0 -Flags: W -HStem: 0 43G<696 880> 440 104<710 799> 1393 41G<478 662 1019 1202 1549 1733> -VStem: 379 174<700 1157> -LayerCount: 2 -Fore -SplineSet -821 545 m 1,0,-1 - 1028 1434 l 1,1,-1 - 1202 1434 l 1,2,-1 - 997 547 l 1,3,4 - 1050 558 1050 558 1100.5 578 c 128,-1,5 - 1151 598 1151 598 1209.5 638.5 c 128,-1,6 - 1268 679 1268 679 1316 733.5 c 128,-1,7 - 1364 788 1364 788 1406.5 873.5 c 128,-1,8 - 1449 959 1449 959 1473 1065 c 2,9,-1 - 1559 1434 l 1,10,-1 - 1733 1434 l 1,11,-1 - 1647 1065 l 2,12,13 - 1618 937 1618 937 1559.5 832.5 c 128,-1,14 - 1501 728 1501 728 1432 661 c 128,-1,15 - 1363 594 1363 594 1279 545.5 c 128,-1,16 - 1195 497 1195 497 1121.5 473.5 c 128,-1,17 - 1048 450 1048 450 973 440 c 1,18,-1 - 870 0 l 1,19,-1 - 696 0 l 1,20,-1 - 799 440 l 1,21,22 - 740 447 740 447 684.5 464.5 c 128,-1,23 - 629 482 629 482 572 517 c 128,-1,24 - 515 552 515 552 473.5 600 c 128,-1,25 - 432 648 432 648 405.5 721.5 c 128,-1,26 - 379 795 379 795 379 885 c 0,27,28 - 379 972 379 972 401 1065 c 2,29,-1 - 487 1434 l 1,30,-1 - 662 1434 l 1,31,-1 - 575 1065 l 1,32,33 - 553 961 553 961 553 891 c 0,34,35 - 553 822 553 822 570 765.5 c 128,-1,36 - 587 709 587 709 613 672.5 c 128,-1,37 - 639 636 639 636 675.5 608.5 c 128,-1,38 - 712 581 712 581 747 567 c 128,-1,39 - 782 553 782 553 821 545 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Omega -Encoding: 937 937 990 -Width: 1464 -VWidth: 0 -Flags: W -HStem: 0 102<274 428 1077 1206> 1352 102<853 1199> -VStem: 305 170<380 849> 1346 172<725 1195> -LayerCount: 2 -Fore -SplineSet -1063 1454 m 0,0,1 - 1131 1454 1131 1454 1195.5 1437 c 128,-1,2 - 1260 1420 1260 1420 1319 1382.5 c 128,-1,3 - 1378 1345 1378 1345 1422 1291 c 128,-1,4 - 1466 1237 1466 1237 1492 1157 c 128,-1,5 - 1518 1077 1518 1077 1518 981 c 0,6,7 - 1518 853 1518 853 1478.5 728 c 128,-1,8 - 1439 603 1439 603 1373.5 503.5 c 128,-1,9 - 1308 404 1308 404 1240 328.5 c 128,-1,10 - 1172 253 1172 253 1098 195 c 1,11,-1 - 1077 102 l 1,12,-1 - 1231 102 l 1,13,-1 - 1206 0 l 1,14,-1 - 879 0 l 1,15,-1 - 936 246 l 1,16,17 - 1035 271 1035 271 1130 384.5 c 128,-1,18 - 1225 498 1225 498 1285.5 663 c 128,-1,19 - 1346 828 1346 828 1346 989 c 0,20,21 - 1346 1165 1346 1165 1261.5 1258.5 c 128,-1,22 - 1177 1352 1177 1352 1038 1352 c 0,23,24 - 925 1352 925 1352 820 1290.5 c 128,-1,25 - 715 1229 715 1229 627.5 1097.5 c 128,-1,26 - 540 966 540 966 498 782 c 0,27,28 - 475 684 475 684 475 584 c 0,29,30 - 475 453 475 453 517 361 c 128,-1,31 - 559 269 559 269 635 246 c 1,32,-1 - 578 0 l 1,33,-1 - 250 0 l 1,34,-1 - 274 102 l 1,35,-1 - 428 102 l 1,36,-1 - 449 195 l 1,37,38 - 390 268 390 268 347.5 382.5 c 128,-1,39 - 305 497 305 497 305 625 c 0,40,41 - 305 698 305 698 324 782 c 0,42,43 - 356 919 356 919 418.5 1033.5 c 128,-1,44 - 481 1148 481 1148 557 1224.5 c 128,-1,45 - 633 1301 633 1301 722 1354 c 128,-1,46 - 811 1407 811 1407 896.5 1430.5 c 128,-1,47 - 982 1454 982 1454 1063 1454 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Iotadieresis -Encoding: 938 938 991 -Width: 436 -VWidth: 0 -Flags: W -HStem: 0 43<92 276> 1393 41<414 598> 1516 150<326 440 653 768> -VStem: 92 506 291 184 618 184 -LayerCount: 2 -Fore -Refer: 151 207 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Upsilondieresis -Encoding: 939 939 992 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<451 634> 1393 41<414 609 1112 1327> 1516 150<680 795 1008 1122> -VStem: 645 184 973 184 -LayerCount: 2 -Fore -Refer: 272 376 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: anoteleia -Encoding: 903 903 993 -Width: 288 -VWidth: 0 -Flags: W -HStem: 383 150<193 307> -VStem: 158 184 -LayerCount: 2 -Fore -Refer: 346 183 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Epsilontonos -Encoding: 904 904 994 -Width: 1331 -VWidth: 0 -Flags: W -HStem: 0 102<649 1311> 799 102<834 1278> 1255 387 1331 102<932 1585> -VStem: 375 406 -LayerCount: 2 -Fore -Refer: 971 917 S 1 0 0 1 369 0 2 -Refer: 964 900 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Etatonos -Encoding: 905 905 995 -Width: 1527 -VWidth: 0 -Flags: W -HStem: 0 43<420 603 1253 1437> 717 102<782 1419> 1255 387 1393 41<742 926 1576 1759> -VStem: 375 406 -LayerCount: 2 -Fore -Refer: 973 919 S 1 0 0 1 338 0 2 -Refer: 964 900 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Iotatonos -Encoding: 906 906 996 -Width: 704 -VWidth: 0 -Flags: W -HStem: 0 43<430 614> 1255 387 1393 41<752 936> -VStem: 375 406 430 506 -LayerCount: 2 -Fore -Refer: 975 921 S 1 0 0 1 338 0 2 -Refer: 964 900 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Omicrontonos -Encoding: 908 908 997 -Width: 1513 -VWidth: 0 -Flags: W -HStem: -20 102<696 1004> 1255 387 1352 102<954 1276> -VStem: 342 176<286 770> 375 406 1458 176<653 1162> -LayerCount: 2 -Fore -Refer: 981 927 N 1 0 0 1 143 0 2 -Refer: 964 900 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: Upsilontonos -Encoding: 910 910 998 -Width: 1443 -VWidth: 0 -Flags: W -HStem: 0 43<819 1003> 1255 387 1393 41<782 978 1481 1696> -VStem: 375 406 -LayerCount: 2 -Fore -Refer: 964 900 N 1 0 0 1 0 0 2 -Refer: 986 933 N 1 0 0 1 369 0 2 -Validated: 1 -EndChar - -StartChar: Omegatonos -Encoding: 911 911 999 -Width: 1464 -VWidth: 0 -Flags: W -HStem: 0 102<274 428 1077 1206> 1255 387 1352 102<853 1199> -VStem: 305 170<380 849> 375 406 1346 172<725 1195> -LayerCount: 2 -Fore -Refer: 964 900 N 1 0 0 1 0 0 2 -Refer: 990 937 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: alpha -Encoding: 945 945 1000 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> -VStem: 154 158<136 521> 711 172<113 272> 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 1 97 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: beta -Encoding: 946 946 1001 -Width: 1118 -VWidth: 0 -Flags: W -HStem: -20 102<468 768> 645 102<502 827> 1229 102<690 945> -VStem: 922 162<249 571> 983 160<914 1193> -LayerCount: 2 -Fore -SplineSet -612 82 m 0,0,1 - 691 82 691 82 752.5 114.5 c 128,-1,2 - 814 147 814 147 850 200 c 128,-1,3 - 886 253 886 253 904 314.5 c 128,-1,4 - 922 376 922 376 922 440 c 0,5,6 - 922 536 922 536 860 590.5 c 128,-1,7 - 798 645 798 645 684 645 c 2,8,-1 - 479 645 l 1,9,-1 - 393 279 l 2,10,11 - 391 273 391 273 391 258 c 0,12,13 - 391 196 391 196 451 139 c 128,-1,14 - 511 82 511 82 612 82 c 0,0,1 -557 985 m 2,15,-1 - 502 748 l 1,16,-1 - 682 748 l 2,17,18 - 753 748 753 748 812.5 781 c 128,-1,19 - 872 814 872 814 908 864 c 128,-1,20 - 944 914 944 914 963.5 969 c 128,-1,21 - 983 1024 983 1024 983 1073 c 0,22,23 - 983 1140 983 1140 948 1184.5 c 128,-1,24 - 913 1229 913 1229 829 1229 c 0,25,26 - 772 1229 772 1229 723 1206 c 128,-1,27 - 674 1183 674 1183 641.5 1146 c 128,-1,28 - 609 1109 609 1109 588 1068.5 c 128,-1,29 - 567 1028 567 1028 557 985 c 2,15,-1 -72 -410 m 1,30,-1 - 381 930 l 2,31,32 - 422 1109 422 1109 533 1220 c 128,-1,33 - 644 1331 644 1331 813 1331 c 0,34,35 - 985 1331 985 1331 1064 1261.5 c 128,-1,36 - 1143 1192 1143 1192 1143 1073 c 0,37,38 - 1143 996 1143 996 1105.5 913 c 128,-1,39 - 1068 830 1068 830 1018 776 c 128,-1,40 - 968 722 968 722 928 713 c 1,41,42 - 1007 677 1007 677 1045 603 c 128,-1,43 - 1083 529 1083 529 1083 444 c 0,44,45 - 1083 230 1083 230 937.5 105 c 128,-1,46 - 792 -20 792 -20 549 -20 c 0,47,48 - 417 -20 417 -20 338 35 c 1,49,-1 - 236 -410 l 1,50,-1 - 72 -410 l 1,30,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: gamma -Encoding: 947 947 1002 -Width: 823 -VWidth: 0 -Flags: W -HStem: -418 102<311 393> 860 41<227 386 844 1020> -VStem: 172 139<-314 -170> 399 139<-310 -97> -LayerCount: 2 -Fore -Refer: 617 611 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: delta -Encoding: 948 948 1003 -Width: 1116 -VWidth: 0 -Flags: W -HStem: -29 102<470 744> 827 98<599 779> 1276 102<700 1030> -VStem: 195 168<193 558> 514 164<1106 1251> 997 164<351 734> -LayerCount: 2 -Fore -SplineSet -739 827 m 0,0,1 - 680 827 680 827 614.5 794 c 128,-1,2 - 549 761 549 761 492.5 703.5 c 128,-1,3 - 436 646 436 646 399 558 c 128,-1,4 - 362 470 362 470 362 371 c 0,5,6 - 362 239 362 239 429.5 156.5 c 128,-1,7 - 497 74 497 74 578 74 c 0,8,9 - 660 74 660 74 735.5 110.5 c 128,-1,10 - 811 147 811 147 869 212 c 128,-1,11 - 927 277 927 277 962 373.5 c 128,-1,12 - 997 470 997 470 997 582 c 0,13,14 - 997 702 997 702 925 764.5 c 128,-1,15 - 853 827 853 827 739 827 c 0,0,1 -784 926 m 1,16,17 - 767 937 767 937 728 956.5 c 128,-1,18 - 689 976 689 976 656 994 c 128,-1,19 - 623 1012 623 1012 588.5 1036.5 c 128,-1,20 - 554 1061 554 1061 534 1093 c 128,-1,21 - 514 1125 514 1125 514 1161 c 0,22,23 - 514 1218 514 1218 548 1261.5 c 128,-1,24 - 582 1305 582 1305 638 1329.5 c 128,-1,25 - 694 1354 694 1354 757.5 1366 c 128,-1,26 - 821 1378 821 1378 889 1378 c 0,27,28 - 964 1378 964 1378 1021.5 1365.5 c 128,-1,29 - 1079 1353 1079 1353 1116.5 1329 c 128,-1,30 - 1154 1305 1154 1305 1177 1279 c 128,-1,31 - 1200 1253 1200 1253 1219 1217 c 1,32,-1 - 1073 1151 l 1,33,34 - 1067 1163 1067 1163 1058 1184 c 128,-1,35 - 1049 1205 1049 1205 1043.5 1215 c 128,-1,36 - 1038 1225 1038 1225 1024.5 1239 c 128,-1,37 - 1011 1253 1011 1253 993 1259.5 c 128,-1,38 - 975 1266 975 1266 943 1271 c 128,-1,39 - 911 1276 911 1276 866 1276 c 0,40,41 - 804 1276 804 1276 764 1267 c 128,-1,42 - 724 1258 724 1258 706.5 1240.5 c 128,-1,43 - 689 1223 689 1223 683.5 1207 c 128,-1,44 - 678 1191 678 1191 678 1167 c 0,45,46 - 678 1139 678 1139 704.5 1118 c 128,-1,47 - 731 1097 731 1097 815 1053 c 0,48,49 - 871 1024 871 1024 916.5 994 c 128,-1,50 - 962 964 962 964 1009 921.5 c 128,-1,51 - 1056 879 1056 879 1088 832.5 c 128,-1,52 - 1120 786 1120 786 1140.5 724 c 128,-1,53 - 1161 662 1161 662 1161 594 c 0,54,55 - 1161 476 1161 476 1121.5 365.5 c 128,-1,56 - 1082 255 1082 255 1008.5 166.5 c 128,-1,57 - 935 78 935 78 817.5 24.5 c 128,-1,58 - 700 -29 700 -29 555 -29 c 0,59,60 - 384 -29 384 -29 289.5 68.5 c 128,-1,61 - 195 166 195 166 195 334 c 0,62,63 - 195 453 195 453 235 554 c 128,-1,64 - 275 655 275 655 338 722 c 128,-1,65 - 401 789 401 789 480.5 836.5 c 128,-1,66 - 560 884 560 884 637.5 905 c 128,-1,67 - 715 926 715 926 784 926 c 1,16,17 -EndSplineSet -Validated: 1 -EndChar - -StartChar: epsilon -Encoding: 949 949 1004 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<319 643> 451 102<466 682> 819 102<490 789> -VStem: 113 168<123 346> 268 164<590 764> 815 127<732 787> -LayerCount: 2 -Fore -Refer: 611 603 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: zeta -Encoding: 950 950 1005 -Width: 942 -VWidth: 0 -Flags: W -HStem: -10 104<403 608> 1249 102<463 938> -VStem: 201 172<123 509> 618 176<-239 -18> -LayerCount: 2 -Fore -SplineSet -530 -10 m 0,0,1 - 518 -10 518 -10 467 -13 c 128,-1,2 - 416 -16 416 -16 403 -16 c 0,3,4 - 359 -16 359 -16 326.5 -7.5 c 128,-1,5 - 294 1 294 1 263.5 23.5 c 128,-1,6 - 233 46 233 46 217 93 c 128,-1,7 - 201 140 201 140 201 211 c 0,8,9 - 201 356 201 356 238 485.5 c 128,-1,10 - 275 615 275 615 337.5 717.5 c 128,-1,11 - 400 820 400 820 496.5 917 c 128,-1,12 - 593 1014 593 1014 697.5 1090.5 c 128,-1,13 - 802 1167 802 1167 938 1249 c 1,14,-1 - 440 1249 l 1,15,-1 - 463 1352 l 1,16,-1 - 1174 1352 l 1,17,-1 - 1153 1264 l 1,18,19 - 1037 1205 1037 1205 929.5 1131.5 c 128,-1,20 - 822 1058 822 1058 719.5 960.5 c 128,-1,21 - 617 863 617 863 541 757.5 c 128,-1,22 - 465 652 465 652 419 524.5 c 128,-1,23 - 373 397 373 397 373 268 c 0,24,25 - 373 94 373 94 487 94 c 0,26,27 - 494 94 494 94 536.5 96 c 128,-1,28 - 579 98 579 98 600 98 c 0,29,30 - 675 98 675 98 735 42.5 c 128,-1,31 - 795 -13 795 -13 795 -117 c 0,32,33 - 795 -350 795 -350 479 -399 c 1,34,-1 - 496 -291 l 1,35,36 - 551 -269 551 -269 584.5 -228 c 128,-1,37 - 618 -187 618 -187 618 -102 c 0,38,39 - 618 -45 618 -45 594.5 -27.5 c 128,-1,40 - 571 -10 571 -10 530 -10 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: eta -Encoding: 951 951 1006 -Width: 1034 -VWidth: 0 -Flags: W -HStem: 0 43<143 317> 819 102<180 339 561 873> -VStem: 109 70<770 808> 686 164<-410 -348> 913 164<389 778> -LayerCount: 2 -Fore -Refer: 648 414 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: theta -Encoding: 952 952 1007 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<448 682> 627 102<453 922> 1270 102<702 938> -VStem: 236 156<140 623> 985 158<733 1222> -LayerCount: 2 -Fore -SplineSet -1096 676 m 1,0,1 - 1051 485 1051 485 990.5 348.5 c 128,-1,2 - 930 212 930 212 854.5 132 c 128,-1,3 - 779 52 779 52 694.5 16 c 128,-1,4 - 610 -20 610 -20 508 -20 c 0,5,6 - 390 -20 390 -20 313 72 c 128,-1,7 - 236 164 236 164 236 360 c 0,8,9 - 236 504 236 504 276 676 c 0,10,11 - 319 863 319 863 386 1003 c 128,-1,12 - 453 1143 453 1143 528.5 1220.5 c 128,-1,13 - 604 1298 604 1298 679 1335 c 128,-1,14 - 754 1372 754 1372 829 1372 c 0,15,16 - 982 1372 982 1372 1062.5 1287.5 c 128,-1,17 - 1143 1203 1143 1203 1143 1014 c 0,18,19 - 1143 881 1143 881 1096 676 c 1,0,1 -922 627 m 1,20,-1 - 430 627 l 1,21,22 - 391 446 391 446 391 328 c 0,23,24 - 391 197 391 197 435 139.5 c 128,-1,25 - 479 82 479 82 561 82 c 0,26,27 - 612 82 612 82 658 108.5 c 128,-1,28 - 704 135 704 135 750.5 195 c 128,-1,29 - 797 255 797 255 840.5 364 c 128,-1,30 - 884 473 884 473 922 627 c 1,20,-1 -453 729 m 1,31,-1 - 944 729 l 1,32,33 - 985 925 985 925 985 1038 c 0,34,35 - 985 1270 985 1270 836 1270 c 0,36,37 - 780 1270 780 1270 730 1244 c 128,-1,38 - 680 1218 680 1218 630.5 1158 c 128,-1,39 - 581 1098 581 1098 536 990 c 128,-1,40 - 491 882 491 882 453 729 c 1,31,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: iota -Encoding: 953 953 1008 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> -VStem: 135 174<85 272> 430 70<93 131> -LayerCount: 2 -Fore -Refer: 112 305 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: kappa -Encoding: 954 954 1009 -Width: 917 -VWidth: 0 -Flags: W -HStem: 0 43<82 255 649 848> 860 41<281 455 785 1020> -LayerCount: 2 -Fore -Refer: 305 312 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: lambda -Encoding: 955 955 1010 -Width: 880 -VWidth: 0 -Flags: W -HStem: 0 43G<45 219 695 864> -LayerCount: 2 -Fore -SplineSet -680 1352 m 9,0,-1 - 864 0 l 1,1,-1 - 700 0 l 1,2,-1 - 606 696 l 1,3,-1 - 195 0 l 1,4,-1 - 45 0 l 1,5,-1 - 582 901 l 1,6,-1 - 518 1350 l 1,7,-1 - 680 1352 l 9,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: mu -Encoding: 956 956 1011 -Width: 1110 -VWidth: 0 -Flags: W -HStem: -20 102<395 676 892 1055> 860 41<281 455 918 1092> -VStem: 1057 70<93 131> -LayerCount: 2 -Fore -Refer: 349 181 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: nu -Encoding: 957 957 1012 -Width: 931 -VWidth: 0 -Flags: W -HStem: 0 43<384 577> 860 41<270 425 901 1090> -LayerCount: 2 -Fore -Refer: 21 118 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: xi -Encoding: 958 958 1013 -Width: 987 -VWidth: 0 -Flags: W -HStem: -20 102<437 672> -12 111<525 687> 696 102<659 811> 1249 102<348 557 702 1122> -VStem: 213 166<140 476> 422 168<866 1138> 694 174<-233 -19> -LayerCount: 2 -Fore -SplineSet -348 1352 m 1,0,-1 - 1145 1352 l 1,1,-1 - 1122 1249 l 1,2,-1 - 823 1249 l 2,3,4 - 735 1249 735 1249 662.5 1174 c 128,-1,5 - 590 1099 590 1099 590 1016 c 0,6,7 - 590 980 590 980 599 945 c 128,-1,8 - 608 910 608 910 627.5 875.5 c 128,-1,9 - 647 841 647 841 686 820 c 128,-1,10 - 725 799 725 799 778 799 c 2,11,-1 - 836 799 l 1,12,-1 - 811 696 l 1,13,-1 - 739 696 l 2,14,15 - 644 696 644 696 559.5 636 c 128,-1,16 - 475 576 475 576 427 486 c 128,-1,17 - 379 396 379 396 379 307 c 0,18,19 - 379 268 379 268 386 231.5 c 128,-1,20 - 393 195 393 195 409 160 c 128,-1,21 - 425 125 425 125 456.5 103.5 c 128,-1,22 - 488 82 488 82 532 82 c 0,23,24 - 562 82 562 82 607.5 90 c 128,-1,25 - 653 98 653 98 674 98 c 0,26,27 - 749 98 749 98 808.5 42.5 c 128,-1,28 - 868 -13 868 -13 868 -117 c 0,29,30 - 868 -350 868 -350 553 -399 c 1,31,-1 - 569 -291 l 1,32,33 - 694 -239 694 -239 694 -100 c 0,34,35 - 694 -46 694 -46 671 -29 c 128,-1,36 - 648 -12 648 -12 608 -12 c 0,37,38 - 602 -12 602 -12 570 -16 c 128,-1,39 - 538 -20 538 -20 512 -20 c 0,40,41 - 435 -20 435 -20 375.5 7.5 c 128,-1,42 - 316 35 316 35 281.5 81 c 128,-1,43 - 247 127 247 127 230 180.5 c 128,-1,44 - 213 234 213 234 213 293 c 0,45,46 - 213 374 213 374 248 469 c 128,-1,47 - 283 564 283 564 350 646.5 c 128,-1,48 - 417 729 417 729 496 758 c 1,49,50 - 457 782 457 782 439.5 844 c 128,-1,51 - 422 906 422 906 422 977 c 0,52,53 - 422 1072 422 1072 452.5 1131 c 128,-1,54 - 483 1190 483 1190 557 1249 c 1,55,-1 - 326 1249 l 1,56,-1 - 348 1352 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: omicron -Encoding: 959 959 1014 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> -VStem: 147 164<157 530> 897 168<366 739> -LayerCount: 2 -Fore -Refer: 9 111 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: pi -Encoding: 960 960 1015 -Width: 1032 -VWidth: 0 -Flags: W -HStem: -20 102<860 1037> 0 43G<176 347> 799 102<307 360 524 887 1051 1122> -VStem: 743 174<83 367> 1038 70<93 131> -LayerCount: 2 -Fore -SplineSet -887 799 m 1,0,-1 - 524 799 l 1,1,-1 - 338 0 l 1,2,-1 - 176 0 l 1,3,-1 - 360 799 l 1,4,-1 - 283 799 l 1,5,-1 - 307 901 l 1,6,-1 - 1147 901 l 1,7,-1 - 1122 799 l 1,8,-1 - 1051 799 l 1,9,-1 - 930 276 l 2,10,11 - 918 223 918 223 918 182 c 0,12,13 - 918 137 918 137 930 109.5 c 128,-1,14 - 942 82 942 82 963 82 c 0,15,16 - 990 82 990 82 1011.5 96.5 c 128,-1,17 - 1033 111 1033 111 1038 131 c 1,18,-1 - 1108 131 l 1,19,20 - 1095 68 1095 68 1036.5 24 c 128,-1,21 - 978 -20 978 -20 909 -20 c 0,22,23 - 836 -20 836 -20 789.5 29.5 c 128,-1,24 - 743 79 743 79 743 156 c 0,25,26 - 743 168 743 168 752 213 c 1,27,-1 - 887 799 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: rho -Encoding: 961 961 1016 -Width: 1089 -VWidth: 0 -Flags: W -HStem: -20 102<465 742> 819 102<568 889> -VStem: 954 168<355 752> -LayerCount: 2 -Fore -SplineSet -322 49 m 1,0,-1 - 215 -410 l 1,1,-1 - 51 -410 l 1,2,-1 - 268 532 l 2,3,4 - 291 629 291 629 331 701 c 128,-1,5 - 371 773 371 773 418 814.5 c 128,-1,6 - 465 856 465 856 526.5 881 c 128,-1,7 - 588 906 588 906 644 914 c 128,-1,8 - 700 922 700 922 768 922 c 0,9,10 - 951 922 951 922 1036.5 835.5 c 128,-1,11 - 1122 749 1122 749 1122 602 c 0,12,13 - 1122 472 1122 472 1083 359 c 128,-1,14 - 1044 246 1044 246 972.5 161.5 c 128,-1,15 - 901 77 901 77 792.5 28.5 c 128,-1,16 - 684 -20 684 -20 551 -20 c 0,17,18 - 409 -20 409 -20 322 49 c 1,0,-1 -408 430 m 2,19,20 - 393 368 393 368 393 311 c 0,21,22 - 393 207 393 207 445.5 144.5 c 128,-1,23 - 498 82 498 82 604 82 c 0,24,25 - 678 82 678 82 744.5 127 c 128,-1,26 - 811 172 811 172 856 243.5 c 128,-1,27 - 901 315 901 315 927.5 404.5 c 128,-1,28 - 954 494 954 494 954 582 c 0,29,30 - 954 686 954 686 910 752.5 c 128,-1,31 - 866 819 866 819 774 819 c 0,32,33 - 716 819 716 819 669 810.5 c 128,-1,34 - 622 802 622 802 575 779.5 c 128,-1,35 - 528 757 528 757 494.5 711 c 128,-1,36 - 461 665 461 665 446 598 c 2,37,-1 - 408 430 l 2,19,20 -EndSplineSet -Validated: 1 -EndChar - -StartChar: sigma1 -Encoding: 962 962 1017 -Width: 942 -VWidth: 0 -Flags: W -HStem: 799 102<652 999> -VStem: 217 168<197 565> 612 182<-274 -41> -LayerCount: 2 -Fore -SplineSet -1024 901 m 1,0,-1 - 999 799 l 1,1,2 - 886 799 886 799 800.5 789 c 128,-1,3 - 715 779 715 779 633.5 750 c 128,-1,4 - 552 721 552 721 500 671.5 c 128,-1,5 - 448 622 448 622 416.5 539.5 c 128,-1,6 - 385 457 385 457 385 344 c 0,7,8 - 385 280 385 280 407.5 233 c 128,-1,9 - 430 186 430 186 466.5 159 c 128,-1,10 - 503 132 503 132 546.5 111 c 128,-1,11 - 590 90 590 90 633.5 71 c 128,-1,12 - 677 52 677 52 713.5 29 c 128,-1,13 - 750 6 750 6 772.5 -33 c 128,-1,14 - 795 -72 795 -72 795 -125 c 128,-1,15 - 795 -178 795 -178 778 -222.5 c 128,-1,16 - 761 -267 761 -267 736.5 -296 c 128,-1,17 - 712 -325 712 -325 674 -349.5 c 128,-1,18 - 636 -374 636 -374 605.5 -387.5 c 128,-1,19 - 575 -401 575 -401 535 -414 c 1,20,-1 - 532 -307 l 1,21,22 - 561 -291 561 -291 586.5 -248 c 128,-1,23 - 612 -205 612 -205 612 -141 c 0,24,25 - 612 -98 612 -98 590 -65.5 c 128,-1,26 - 568 -33 568 -33 533.5 -12.5 c 128,-1,27 - 499 8 499 8 456.5 27 c 128,-1,28 - 414 46 414 46 372 70 c 128,-1,29 - 330 94 330 94 295.5 124.5 c 128,-1,30 - 261 155 261 155 239 206.5 c 128,-1,31 - 217 258 217 258 217 326 c 0,32,33 - 217 460 217 460 256 561 c 128,-1,34 - 295 662 295 662 363 726 c 128,-1,35 - 431 790 431 790 535 830 c 128,-1,36 - 639 870 639 870 756.5 885.5 c 128,-1,37 - 874 901 874 901 1024 901 c 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: sigma -Encoding: 963 963 1018 -Width: 1083 -VWidth: 0 -Flags: W -HStem: -20 102<412 698> 799 102<581 851 1014 1208> -VStem: 174 164<152 519> 924 166<345 724> -LayerCount: 2 -Fore -SplineSet -174 293 m 0,0,1 - 174 424 174 424 225.5 541 c 128,-1,2 - 277 658 277 658 357 735 c 128,-1,3 - 437 812 437 812 533 856.5 c 128,-1,4 - 629 901 629 901 721 901 c 2,5,-1 - 1233 901 l 1,6,-1 - 1208 799 l 1,7,-1 - 1014 799 l 1,8,9 - 1090 720 1090 720 1090 580 c 0,10,11 - 1090 438 1090 438 1040.5 321.5 c 128,-1,12 - 991 205 991 205 908 132 c 128,-1,13 - 825 59 825 59 722 19.5 c 128,-1,14 - 619 -20 619 -20 508 -20 c 0,15,16 - 346 -20 346 -20 260 61.5 c 128,-1,17 - 174 143 174 143 174 293 c 0,0,1 -561 82 m 0,18,19 - 627 82 627 82 692.5 119.5 c 128,-1,20 - 758 157 758 157 809 220.5 c 128,-1,21 - 860 284 860 284 892 374.5 c 128,-1,22 - 924 465 924 465 924 563 c 0,23,24 - 924 672 924 672 871.5 735.5 c 128,-1,25 - 819 799 819 799 727 799 c 0,26,27 - 657 799 657 799 587.5 761.5 c 128,-1,28 - 518 724 518 724 462.5 659.5 c 128,-1,29 - 407 595 407 595 372.5 501.5 c 128,-1,30 - 338 408 338 408 338 305 c 0,31,32 - 338 197 338 197 393.5 139.5 c 128,-1,33 - 449 82 449 82 561 82 c 0,18,19 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tau -Encoding: 964 964 1019 -Width: 937 -VWidth: 0 -Flags: W -HStem: -20 102<549 725> 799 102<262 575 739 1077> -VStem: 432 174<83 367> 727 70<93 131> -LayerCount: 2 -Fore -SplineSet -618 276 m 2,0,1 - 606 223 606 223 606 182 c 0,2,3 - 606 137 606 137 618 109.5 c 128,-1,4 - 630 82 630 82 651 82 c 0,5,6 - 679 82 679 82 700.5 96.5 c 128,-1,7 - 722 111 722 111 727 131 c 1,8,-1 - 797 131 l 1,9,10 - 784 68 784 68 725.5 24 c 128,-1,11 - 667 -20 667 -20 598 -20 c 0,12,13 - 525 -20 525 -20 478.5 29.5 c 128,-1,14 - 432 79 432 79 432 156 c 0,15,16 - 432 173 432 173 440 213 c 1,17,-1 - 575 799 l 1,18,-1 - 238 799 l 1,19,-1 - 262 901 l 1,20,-1 - 1102 901 l 1,21,-1 - 1077 799 l 1,22,-1 - 739 799 l 1,23,-1 - 618 276 l 2,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: upsilon -Encoding: 965 965 1020 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<423 690> 860 41G<328 502 963 1137> -VStem: 211 162<129 535> -LayerCount: 2 -Fore -SplineSet -502 901 m 1,0,-1 - 397 451 l 2,1,2 - 373 349 373 349 373 272 c 0,3,4 - 373 178 373 178 416.5 130 c 128,-1,5 - 460 82 460 82 559 82 c 0,6,7 - 671 82 671 82 750.5 182 c 128,-1,8 - 830 282 830 282 868 451 c 1,9,-1 - 973 901 l 1,10,-1 - 1137 901 l 1,11,-1 - 1032 451 l 2,12,13 - 977 217 977 217 842.5 98.5 c 128,-1,14 - 708 -20 708 -20 506 -20 c 0,15,16 - 211 -20 211 -20 211 270 c 0,17,18 - 211 347 211 347 233 451 c 1,19,-1 - 338 901 l 1,20,-1 - 502 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: phi -Encoding: 966 966 1021 -Width: 1271 -VWidth: 0 -Flags: W -HStem: -16 102<476 551 739 884> 819 102<952 1111> -VStem: 180 166<204 552> 1149 162<385 784> -LayerCount: 2 -Fore -SplineSet -739 86 m 1,0,1 - 922 108 922 108 1035.5 256.5 c 128,-1,2 - 1149 405 1149 405 1149 625 c 0,3,4 - 1149 716 1149 716 1118.5 767.5 c 128,-1,5 - 1088 819 1088 819 1032 819 c 0,6,7 - 977 819 977 819 924.5 742 c 128,-1,8 - 872 665 872 665 834 494 c 1,9,-1 - 739 86 l 1,0,1 -715 -16 m 1,10,-1 - 625 -410 l 1,11,-1 - 461 -410 l 1,12,-1 - 551 -16 l 1,13,14 - 372 1 372 1 276 91.5 c 128,-1,15 - 180 182 180 182 180 330 c 0,16,17 - 180 424 180 424 208.5 511 c 128,-1,18 - 237 598 237 598 286 665 c 128,-1,19 - 335 732 335 732 393 782 c 128,-1,20 - 451 832 451 832 516 866 c 1,21,-1 - 553 758 l 1,22,23 - 468 697 468 697 407 590 c 128,-1,24 - 346 483 346 483 346 356 c 0,25,26 - 346 252 346 252 405.5 183.5 c 128,-1,27 - 465 115 465 115 575 92 c 1,28,-1 - 670 494 l 1,29,30 - 720 710 720 710 819 816 c 128,-1,31 - 918 922 918 922 1057 922 c 0,32,33 - 1170 922 1170 922 1240.5 841 c 128,-1,34 - 1311 760 1311 760 1311 614 c 0,35,36 - 1311 471 1311 471 1266.5 355.5 c 128,-1,37 - 1222 240 1222 240 1142.5 162 c 128,-1,38 - 1063 84 1063 84 954.5 38.5 c 128,-1,39 - 846 -7 846 -7 715 -16 c 1,10,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: chi -Encoding: 967 967 1022 -Width: 954 -VWidth: 0 -Flags: W -HStem: 0 43<61 276 687 883> 860 41<328 521 822 1034> -LayerCount: 2 -Fore -Refer: 23 120 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: psi -Encoding: 968 968 1023 -Width: 1261 -VWidth: 0 -Flags: W -HStem: -18 111<491 551> 860 41G<328 502 754 928 1168 1341> -VStem: 225 168<190 605> -LayerCount: 2 -Fore -SplineSet -502 901 m 1,0,-1 - 414 522 l 1,1,2 - 393 436 393 436 393 367 c 0,3,4 - 393 253 393 253 441 183.5 c 128,-1,5 - 489 114 489 114 575 92 c 1,6,-1 - 764 901 l 1,7,-1 - 928 901 l 1,8,-1 - 739 92 l 1,9,10 - 853 124 853 124 951.5 234.5 c 128,-1,11 - 1050 345 1050 345 1090 522 c 1,12,-1 - 1178 901 l 1,13,-1 - 1341 901 l 1,14,-1 - 1253 522 l 2,15,16 - 1225 399 1225 399 1169.5 301.5 c 128,-1,17 - 1114 204 1114 204 1041.5 141 c 128,-1,18 - 969 78 969 78 888 40 c 128,-1,19 - 807 2 807 2 717 -12 c 1,20,-1 - 625 -410 l 1,21,-1 - 461 -410 l 1,22,-1 - 551 -18 l 1,23,24 - 400 -5 400 -5 312.5 80 c 128,-1,25 - 225 165 225 165 225 332 c 0,26,27 - 225 410 225 410 250 522 c 2,28,-1 - 338 901 l 1,29,-1 - 502 901 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: omega -Encoding: 969 969 1024 -Width: 1445 -VWidth: 0 -Flags: W -HStem: -20 102<385 591 916 1118> 860 41G<410 608 1260 1440> -VStem: 172 166<127 517> 1319 174<377 860> -LayerCount: 2 -Fore -SplineSet -944 596 m 1,0,1 - 891 363 891 363 891 248 c 0,2,3 - 891 162 891 162 917.5 122 c 128,-1,4 - 944 82 944 82 997 82 c 0,5,6 - 1082 82 1082 82 1157 158 c 128,-1,7 - 1232 234 1232 234 1275.5 358 c 128,-1,8 - 1319 482 1319 482 1319 618 c 0,9,10 - 1319 644 1319 644 1317 670 c 128,-1,11 - 1315 696 1315 696 1312 716.5 c 128,-1,12 - 1309 737 1309 737 1304 759.5 c 128,-1,13 - 1299 782 1299 782 1295.5 796.5 c 128,-1,14 - 1292 811 1292 811 1285.5 830.5 c 128,-1,15 - 1279 850 1279 850 1276 858.5 c 128,-1,16 - 1273 867 1273 867 1267 882.5 c 128,-1,17 - 1261 898 1261 898 1260 901 c 1,18,-1 - 1427 901 l 1,19,20 - 1428 898 1428 898 1442.5 871 c 128,-1,21 - 1457 844 1457 844 1462 831 c 128,-1,22 - 1467 818 1467 818 1476.5 790 c 128,-1,23 - 1486 762 1486 762 1489.5 731.5 c 128,-1,24 - 1493 701 1493 701 1493 664 c 0,25,26 - 1493 476 1493 476 1430.5 321 c 128,-1,27 - 1368 166 1368 166 1248.5 73 c 128,-1,28 - 1129 -20 1129 -20 975 -20 c 0,29,30 - 797 -20 797 -20 750 111 c 1,31,32 - 640 -20 640 -20 467 -20 c 0,33,34 - 172 -20 172 -20 172 270 c 0,35,36 - 172 379 172 379 203.5 487.5 c 128,-1,37 - 235 596 235 596 285 681 c 128,-1,38 - 335 766 335 766 370 814 c 128,-1,39 - 405 862 405 862 440 901 c 1,40,-1 - 608 901 l 1,41,42 - 338 572 338 572 338 287 c 0,43,44 - 338 188 338 188 376 135 c 128,-1,45 - 414 82 414 82 489 82 c 0,46,47 - 580 82 580 82 648 200.5 c 128,-1,48 - 716 319 716 319 780 596 c 1,49,-1 - 819 762 l 1,50,-1 - 983 762 l 1,51,-1 - 944 596 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: iotadieresistonos -Encoding: 912 912 1025 -Width: 565 -VWidth: 0 -Flags: W -HStem: -20 102<334 510> 860 41<373 547> 1079 387 1085 150<207 322 780 895> -VStem: 172 184 217 174<85 272> 410 406 512 70<93 131> 745 184 -LayerCount: 2 -Fore -Refer: 965 901 N 1 0 0 1 -182 -184 2 -Refer: 1008 953 N 1 0 0 1 82 0 2 -Validated: 1 -EndChar - -StartChar: alphatonos -Encoding: 940 940 1026 -Width: 1058 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 1085 387 -VStem: 154 158<136 521> 678 406 711 172<113 272> 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 964 900 S 1 0 0 1 303 -170 2 -Refer: 1000 945 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: epsilontonos -Encoding: 941 941 1027 -Width: 897 -VWidth: 0 -Flags: W -HStem: -20 102<319 643> 451 102<466 682> 819 102<490 789> 1085 387 -VStem: 113 168<123 346> 268 164<590 764> 612 406 815 127<732 787> -LayerCount: 2 -Fore -Refer: 964 900 S 1 0 0 1 238 -170 2 -Refer: 1004 949 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: etatonos -Encoding: 942 942 1028 -Width: 1034 -VWidth: 0 -Flags: W -HStem: 0 43<143 317> 819 102<180 339 561 873> 1085 387 -VStem: 109 70<770 808> 616 406 686 164<-410 -348> 913 164<389 778> -LayerCount: 2 -Fore -Refer: 964 900 N 1 0 0 1 242 -170 2 -Refer: 1006 951 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: iotatonos -Encoding: 943 943 1029 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1085 387 -VStem: 135 174<85 272> 348 406 430 70<93 131> -LayerCount: 2 -Fore -Refer: 964 900 N 1 0 0 1 -27 -170 2 -Refer: 1008 953 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: upsilondieresistonos -Encoding: 944 944 1030 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<423 690> 860 41<328 502 963 1137> 1079 387 1085 150<444 559 1018 1133> -VStem: 211 162<129 535> 410 184 647 406 983 184 -LayerCount: 2 -Fore -Refer: 965 901 N 1 0 0 1 55 -184 2 -Refer: 1020 965 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: iotadieresis -Encoding: 970 970 1031 -Width: 483 -VWidth: 0 -Flags: W -HStem: -20 102<252 428> 860 41<292 465> 1087 150<219 334 547 662> -VStem: 135 174<85 272> 184 184 430 70<93 131> 512 184 -LayerCount: 2 -Fore -Refer: 378 168 S 1 0 0 1 -147 -182 2 -Refer: 1008 953 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: upsilondieresis -Encoding: 971 971 1032 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<423 690> 860 41<328 502 963 1137> 1087 150<567 682 895 1010> -VStem: 211 162<129 535> 532 184 860 184 -LayerCount: 2 -Fore -Refer: 378 168 N 1 0 0 1 201 -182 2 -Refer: 1020 965 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: omicrontonos -Encoding: 972 972 1033 -Width: 1013 -VWidth: 0 -Flags: W -HStem: -20 102<385 668> 819 102<554 823> 1085 387 -VStem: 147 164<157 530> 678 406 897 168<366 739> -LayerCount: 2 -Fore -Refer: 964 900 S 1 0 0 1 303 -170 2 -Refer: 1014 959 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: upsilontonos -Encoding: 973 973 1034 -Width: 1056 -VWidth: 0 -Flags: W -HStem: -20 102<423 690> 860 41<328 502 963 1137> 1085 387 -VStem: 211 162<129 535> 678 406 -LayerCount: 2 -Fore -Refer: 964 900 S 1 0 0 1 303 -170 2 -Refer: 1020 965 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: omegatonos -Encoding: 974 974 1035 -Width: 1445 -VWidth: 0 -Flags: W -HStem: -20 102<385 591 916 1118> 860 41<410 608 1260 1440> 1085 387 -VStem: 172 166<127 517> 868 406 1319 174<377 860> -LayerCount: 2 -Fore -Refer: 964 900 N 1 0 0 1 494 -170 2 -Refer: 1024 969 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: dagger -Encoding: 8224 8224 1036 -Width: 886 -VWidth: 0 -Flags: W -HStem: 0 43G<443 461> 932 133<384 485 862 964> -VStem: 442 139<309 360> 674 133<1247 1286> -LayerCount: 2 -Fore -SplineSet -700 967 m 17,0,-1 - 582 309 l 1,1,-1 - 442 0 l 1,2,-1 - 449 311 l 1,3,-1 - 633 965 l 1,4,-1 - 371 932 l 1,5,-1 - 319 997 l 1,6,-1 - 401 1065 l 1,7,-1 - 647 1032 l 1,8,-1 - 674 1286 l 1,9,-1 - 754 1352 l 1,10,-1 - 807 1286 l 1,11,-1 - 715 1032 l 1,12,-1 - 977 1065 l 1,13,-1 - 1028 999 l 1,14,-1 - 946 934 l 1,15,-1 - 700 967 l 17,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: daggerdbl -Encoding: 8225 8225 1037 -Width: 886 -VWidth: 0 -Flags: W -HStem: 2 43G<412 496> 289 131<237 337 725 816> 932 133<384 485 862 964> -VStem: 393 133<68 108> 674 133<1247 1286> -LayerCount: 2 -Fore -SplineSet -666 676 m 25,0,-1 - 567 389 l 1,1,-1 - 829 422 l 1,2,-1 - 879 356 l 1,3,-1 - 799 289 l 1,4,-1 - 551 322 l 1,5,-1 - 526 68 l 1,6,-1 - 444 2 l 1,7,-1 - 393 68 l 1,8,-1 - 483 322 l 1,9,-1 - 223 289 l 1,10,-1 - 172 354 l 1,11,-1 - 252 420 l 1,12,-1 - 500 387 l 1,13,-1 - 532 678 l 1,14,-1 - 633 965 l 1,15,-1 - 371 932 l 1,16,-1 - 319 997 l 1,17,-1 - 401 1065 l 1,18,-1 - 647 1032 l 1,19,-1 - 674 1286 l 1,20,-1 - 754 1352 l 1,21,-1 - 807 1286 l 1,22,-1 - 715 1032 l 1,23,-1 - 977 1065 l 1,24,-1 - 1028 999 l 1,25,-1 - 946 934 l 1,26,-1 - 700 967 l 1,27,-1 - 666 676 l 25,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: perthousand -Encoding: 8240 8240 1038 -Width: 1601 -VWidth: 0 -Flags: W -HStem: 156 109<773 942 1285 1454> 473 109<801 970 1313 1482> 729 109<414 583> 1047 109<442 611> -VStem: 293 113<846 1010> 621 111<875 1038> 653 111<273 437> 1165 111<273 437> -LayerCount: 2 -Fore -SplineSet -1407 473 m 0,0,1 - 1359 473 1359 473 1317.5 435.5 c 128,-1,2 - 1276 398 1276 398 1276 346 c 0,3,4 - 1276 311 1276 311 1299.5 287.5 c 128,-1,5 - 1323 264 1323 264 1360 264 c 0,6,7 - 1408 264 1408 264 1449.5 301.5 c 128,-1,8 - 1491 339 1491 339 1491 391 c 0,9,10 - 1491 426 1491 426 1467.5 449.5 c 128,-1,11 - 1444 473 1444 473 1407 473 c 0,0,1 -1165 319 m 0,12,13 - 1165 427 1165 427 1249.5 504.5 c 128,-1,14 - 1334 582 1334 582 1434 582 c 0,15,16 - 1523 582 1523 582 1570 520 c 0,17,18 - 1603 477 1603 477 1603 420 c 0,19,20 - 1603 396 1603 396 1597 369 c 0,21,22 - 1577 280 1577 280 1500.5 218 c 128,-1,23 - 1424 156 1424 156 1335 156 c 0,24,25 - 1259 156 1259 156 1212 202 c 128,-1,26 - 1165 248 1165 248 1165 319 c 0,12,13 -895 473 m 0,27,28 - 847 473 847 473 805.5 435.5 c 128,-1,29 - 764 398 764 398 764 346 c 0,30,31 - 764 311 764 311 787.5 287.5 c 128,-1,32 - 811 264 811 264 848 264 c 0,33,34 - 896 264 896 264 937.5 301.5 c 128,-1,35 - 979 339 979 339 979 391 c 0,36,37 - 979 426 979 426 955.5 449.5 c 128,-1,38 - 932 473 932 473 895 473 c 0,27,28 -653 319 m 0,39,40 - 653 427 653 427 737.5 504.5 c 128,-1,41 - 822 582 822 582 922 582 c 0,42,43 - 1011 582 1011 582 1058 520 c 0,44,45 - 1091 477 1091 477 1091 420 c 0,46,47 - 1091 396 1091 396 1085 369 c 0,48,49 - 1065 280 1065 280 988.5 218 c 128,-1,50 - 912 156 912 156 823 156 c 0,51,52 - 747 156 747 156 700 202 c 128,-1,53 - 653 248 653 248 653 319 c 0,39,40 -537 1047 m 0,54,55 - 489 1047 489 1047 447.5 1009.5 c 128,-1,56 - 406 972 406 972 406 920 c 0,57,58 - 406 884 406 884 428.5 861 c 128,-1,59 - 451 838 451 838 487 838 c 0,60,61 - 535 838 535 838 578 875.5 c 128,-1,62 - 621 913 621 913 621 965 c 0,63,64 - 621 1000 621 1000 597.5 1023.5 c 128,-1,65 - 574 1047 574 1047 537 1047 c 0,54,55 -561 1155 m 0,66,67 - 637 1155 637 1155 684 1108.5 c 128,-1,68 - 731 1062 731 1062 731 991 c 0,69,70 - 731 883 731 883 647 806 c 128,-1,71 - 563 729 563 729 463 729 c 0,72,73 - 387 729 387 729 340 775.5 c 128,-1,74 - 293 822 293 822 293 893 c 0,75,76 - 293 1001 293 1001 377 1078 c 128,-1,77 - 461 1155 461 1155 561 1155 c 0,66,67 -143 264 m 1,78,-1 - 1083 1047 l 1,79,-1 - 1241 1047 l 1,80,-1 - 301 264 l 1,81,-1 - 143 264 l 1,78,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: tilde -Encoding: 732 732 1039 -Width: 729 -VWidth: 0 -Flags: W -HStem: 1270 117<688 881> 1335 117<477 670> -VStem: 375 608 -LayerCount: 2 -Fore -Refer: 95 771 N 1 0 0 1 942 0 2 -Validated: 1 -EndChar - -StartChar: trademark -Encoding: 8482 8482 1040 -Width: 1476 -VWidth: 0 -Flags: W -HStem: 1305 47<385 629 717 975> -LayerCount: 2 -Fore -SplineSet -1096 1200 m 1,0,-1 - 981 705 l 1,1,-1 - 895 705 l 1,2,-1 - 1044 1352 l 1,3,-1 - 1130 1352 l 1,4,-1 - 1260 899 l 1,5,-1 - 1597 1352 l 1,6,-1 - 1683 1352 l 1,7,-1 - 1534 705 l 1,8,-1 - 1448 705 l 1,9,-1 - 1563 1200 l 1,10,-1 - 1227 752 l 1,11,-1 - 1096 1200 l 1,0,-1 -385 1352 m 1,12,-1 - 985 1352 l 1,13,-1 - 975 1305 l 1,14,-1 - 717 1305 l 1,15,-1 - 578 705 l 1,16,-1 - 489 705 l 1,17,-1 - 629 1305 l 1,18,-1 - 375 1305 l 1,19,-1 - 385 1352 l 1,12,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: notequal -Encoding: 8800 8800 1041 -Width: 708 -VWidth: 0 -Flags: W -HStem: 0 43G<86 235> 348 102<186 307 496 707> 573 102<238 451 637 760> -LayerCount: 2 -Fore -SplineSet -307 348 m 1,0,-1 - 162 348 l 1,1,-1 - 186 451 l 1,2,-1 - 373 451 l 1,3,-1 - 451 573 l 1,4,-1 - 215 573 l 1,5,-1 - 238 676 l 1,6,-1 - 514 676 l 1,7,-1 - 735 1024 l 1,8,-1 - 858 1024 l 1,9,-1 - 637 676 l 1,10,-1 - 782 676 l 1,11,-1 - 760 573 l 1,12,-1 - 573 573 l 1,13,-1 - 496 451 l 1,14,-1 - 731 451 l 1,15,-1 - 707 348 l 1,16,-1 - 430 348 l 1,17,-1 - 209 0 l 1,18,-1 - 86 0 l 1,19,-1 - 307 348 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: infinity -Encoding: 8734 8734 1042 -Width: 1699 -VWidth: 0 -Flags: W -HStem: 127 102<385 620 1204 1439> 795 102<498 732 1316 1551> -VStem: 166 176<275 610> 1595 176<414 749> -LayerCount: 2 -Fore -SplineSet -1307 229 m 0,0,1 - 1391 229 1391 229 1458 285.5 c 128,-1,2 - 1525 342 1525 342 1560 429 c 128,-1,3 - 1595 516 1595 516 1595 612 c 0,4,5 - 1595 694 1595 694 1557 744.5 c 128,-1,6 - 1519 795 1519 795 1438 795 c 0,7,8 - 1386 795 1386 795 1320 751.5 c 128,-1,9 - 1254 708 1254 708 1214.5 668.5 c 128,-1,10 - 1175 629 1175 629 1086 532 c 0,11,12 - 1073 519 1073 519 1067 512 c 1,13,14 - 1132 366 1132 366 1166 318 c 0,15,16 - 1228 229 1228 229 1307 229 c 0,0,1 -1460 897 m 0,17,18 - 1604 897 1604 897 1688 829.5 c 128,-1,19 - 1772 762 1772 762 1772 629 c 0,20,21 - 1772 510 1772 510 1730 412.5 c 128,-1,22 - 1688 315 1688 315 1618 254 c 128,-1,23 - 1548 193 1548 193 1461.5 160 c 128,-1,24 - 1375 127 1375 127 1282 127 c 0,25,26 - 1159 127 1159 127 1078.5 191.5 c 128,-1,27 - 998 256 998 256 936 371 c 1,28,29 - 822 257 822 257 710 192 c 128,-1,30 - 598 127 598 127 475 127 c 0,31,32 - 331 127 331 127 248.5 194.5 c 128,-1,33 - 166 262 166 262 166 395 c 0,34,35 - 166 514 166 514 208 611.5 c 128,-1,36 - 250 709 250 709 319 770 c 128,-1,37 - 388 831 388 831 474.5 864 c 128,-1,38 - 561 897 561 897 653 897 c 0,39,40 - 738 897 738 897 806.5 862 c 128,-1,41 - 875 827 875 827 918 777 c 128,-1,42 - 961 727 961 727 1001 653 c 1,43,44 - 1115 767 1115 767 1226 832 c 128,-1,45 - 1337 897 1337 897 1460 897 c 0,17,18 -870 512 m 1,46,47 - 805 657 805 657 773 704 c 0,48,49 - 711 795 711 795 631 795 c 0,50,51 - 547 795 547 795 479.5 738.5 c 128,-1,52 - 412 682 412 682 377 595 c 128,-1,53 - 342 508 342 508 342 412 c 0,54,55 - 342 330 342 330 380.5 279.5 c 128,-1,56 - 419 229 419 229 500 229 c 0,57,58 - 540 229 540 229 581 248 c 128,-1,59 - 622 267 622 267 671 310 c 128,-1,60 - 720 353 720 353 754 387.5 c 128,-1,61 - 788 422 788 422 849 489 c 0,62,63 - 863 504 863 504 870 512 c 1,46,47 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni026A -Encoding: 618 618 1043 -Width: 524 -VWidth: 0 -Flags: W -HStem: 0 102<115 195 360 418> 799 102<299 356 520 602> -VStem: 90 537 -LayerCount: 2 -Fore -SplineSet -360 102 m 1,0,-1 - 442 102 l 1,1,-1 - 418 0 l 1,2,-1 - 90 0 l 1,3,-1 - 115 102 l 1,4,-1 - 195 102 l 1,5,-1 - 356 799 l 1,6,-1 - 274 799 l 1,7,-1 - 299 901 l 1,8,-1 - 627 901 l 1,9,-1 - 602 799 l 1,10,-1 - 520 799 l 1,11,-1 - 360 102 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0298 -Encoding: 664 664 1044 -Width: 1435 -VWidth: 0 -Flags: W -HStem: -20 102<553 861> 643 150<784 899> 1352 102<811 1133> -VStem: 199 176<286 770> 750 184 1315 176<653 1162> -LayerCount: 2 -Fore -Refer: 42 79 N 1 0 0 1 0 0 2 -Refer: 346 183 N 1 0 0 1 592 260 2 -Validated: 1 -EndChar - -StartChar: uni1E06 -Encoding: 7686 7686 1045 -Width: 1052 -VWidth: 0 -Flags: W -HStem: -205 82<197 649> 0 102<281 700> 727 102<449 775> 1331 102<563 901> -VStem: 178 489 872 176<300 657> 944 178<999 1290> -LayerCount: 2 -Fore -Refer: 491 817 N 1 0 0 1 1059 0 2 -Refer: 28 66 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E07 -Encoding: 7687 7687 1046 -Width: 1069 -VWidth: 0 -Flags: W -HStem: -205 82<256 709> -20 102<417 739> 819 102<614 888> 1270 102<284 461> -VStem: 211 158<129 459> 213 70<1221 1259> 238 489 403 174<984 1268> 952 168<362 753> -LayerCount: 2 -Fore -Refer: 491 817 N 1 0 0 1 1118 0 2 -Refer: 6 98 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E14 -Encoding: 7700 7700 1047 -Width: 1091 -VWidth: 0 -Flags: W -HStem: 0 102<373 1034> 655 102<522 969> 1126 102<608 1262> 1352 82<657 1110> 1501 279 -VStem: 639 489 754 246 -LayerCount: 2 -Fore -Refer: 930 58625 N 1 0 0 1 221 20 2 -Refer: 96 772 N 1 0 0 1 1180 82 2 -Refer: 927 57371 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uni1E16 -Encoding: 7702 7702 1048 -Width: 1091 -VWidth: 0 -Flags: W -HStem: 0 102<373 1034> 655 102<522 969> 1126 102<608 1262> 1352 82<657 1110> 1501 279 -VStem: 639 489 866 307 -LayerCount: 2 -Fore -Refer: 929 58624 N 1 0 0 1 364 20 2 -Refer: 927 57371 N 1 0 0 1 0 0 2 -Refer: 96 772 N 1 0 0 1 1180 82 2 -Validated: 1 -EndChar - -StartChar: uni1E1A -Encoding: 7706 7706 1049 -Width: 962 -VWidth: 0 -Flags: W -HStem: -285 117<489 684> -219 117<279 473> 0 102<281 942> 799 102<465 909> 1331 102<563 1217> -VStem: 178 606 -LayerCount: 2 -Fore -Refer: 490 816 N 1 0 0 1 1124 0 2 -Refer: 32 69 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E1B -Encoding: 7707 7707 1050 -Width: 964 -VWidth: 0 -Flags: W -HStem: -285 117<463 657> -219 117<252 447> -20 102<419 734> 451 102<362 869> 819 102<551 814> -VStem: 150 166<182 446> 152 606 872 160<556 758> -LayerCount: 2 -Fore -Refer: 490 816 N 1 0 0 1 1098 0 2 -Refer: 3 101 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E15 -Encoding: 7701 7701 1051 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1085 82<524 977> 1290 387 -VStem: 150 166<182 446> 506 489 570 295 872 160<556 758> -LayerCount: 2 -Fore -Refer: 879 715 N 1 0 0 1 138 35 2 -Refer: 259 275 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E17 -Encoding: 7703 7703 1052 -Width: 964 -VWidth: 0 -Flags: W -HStem: -20 102<419 734> 451 102<362 869> 819 102<551 814> 1085 82<524 977> 1290 387 -VStem: 150 166<182 446> 506 489 738 406 872 160<556 758> -LayerCount: 2 -Fore -Refer: 878 714 N 1 0 0 1 363 35 2 -Refer: 259 275 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2C -Encoding: 7724 7724 1053 -Width: 436 -VWidth: 0 -Flags: W -HStem: -305 117<138 333> -240 117<-72 122> 0 43<92 276> 1393 41<414 598> -VStem: -173 606 92 506 -LayerCount: 2 -Fore -Refer: 490 816 N 1 0 0 1 773 -20 2 -Refer: 36 73 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E2D -Encoding: 7725 7725 1054 -Width: 483 -VWidth: 0 -Flags: W -HStem: -285 117<211 405> -219 117<0 195> -20 102<252 428> 860 41<292 465> 1065 164<377 502> -VStem: -100 606 135 174<85 272> 430 70<93 131> -LayerCount: 2 -Fore -Refer: 490 816 N 1 0 0 1 846 0 2 -Refer: 8 105 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E34 -Encoding: 7732 7732 1055 -Width: 1239 -VWidth: 0 -Flags: W -HStem: -205 82<279 731> 0 43<92 276 936 1151> 1393 41<414 598 1208 1458> -VStem: 260 489 -LayerCount: 2 -Fore -Refer: 491 817 N 1 0 0 1 1141 0 2 -Refer: 38 75 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E35 -Encoding: 7733 7733 1056 -Width: 917 -VWidth: 0 -Flags: W -HStem: -205 82<229 682> 0 43<143 317 710 909> 860 41<847 1081> 1270 102<284 461> -VStem: 211 489 213 70<1221 1259> 403 174<987 1268> -LayerCount: 2 -Fore -Refer: 491 817 N 1 0 0 1 1092 0 2 -Refer: 25 107 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E5A -Encoding: 7770 7770 1057 -Width: 1101 -VWidth: 0 -Flags: W -HStem: -272 150<408 522> 0 43<92 276 819 991> 655 102<440 679> 1331 102<573 969> -VStem: 373 184 829 170<0 381> 1032 174<954 1271> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1102 0 2 -Refer: 44 82 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E5B -Encoding: 7771 7771 1058 -Width: 770 -VWidth: 0 -Flags: W -HStem: -272 150<166 281> 0 43<184 358> 819 102<221 380 570 863> -VStem: 131 184 150 70<770 808> 340 174<629 766> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 860 0 2 -Refer: 18 114 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E94 -Encoding: 7828 7828 1059 -Width: 1075 -VWidth: 0 -Flags: W -HStem: -205 82<254 707> 0 102<299 963> 1331 102<414 1026> -VStem: 236 489 -LayerCount: 2 -Fore -Refer: 491 817 S 1 0 0 1 1116 0 2 -Refer: 52 90 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E95 -Encoding: 7829 7829 1060 -Width: 845 -VWidth: 0 -Flags: W -HStem: -205 82<188 641> 0 102<324 823> 799 102<283 758> -LayerCount: 2 -Fore -SplineSet -188 -123 m 1,0,-1 - 659 -123 l 1,1,-1 - 641 -205 l 1,2,-1 - 170 -205 l 1,3,-1 - 188 -123 l 1,0,-1 -758 799 m 1,4,-1 - 227 799 l 1,5,-1 - 283 901 l 1,6,-1 - 1026 901 l 1,7,-1 - 324 102 l 1,8,-1 - 848 102 l 1,9,-1 - 823 0 l 1,10,-1 - 53 0 l 1,11,-1 - 758 799 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E96 -Encoding: 7830 7830 1061 -Width: 1034 -VWidth: 0 -Flags: W -HStem: -205 82<274 727> 0 43<143 317 780 954> 819 102<560 873> 1270 102<284 461> -VStem: 213 70<1221 1259> 256 489 403 174<985 1268> 913 164<389 778> -LayerCount: 2 -Fore -Refer: 491 817 N 1 0 0 1 1137 0 2 -Refer: 2 104 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uniA7AA -Encoding: 42922 42922 1062 -Width: 1634 -VWidth: 0 -Flags: W -HStem: 0 43G<457 640 1290 1474> 717 102<819 1456> 918 43G<419 472> 1331 102<588 764> -VStem: 295 180<1002 1220> -LayerCount: 2 -Fore -SplineSet -963 1434 m 1,0,-1 - 819 819 l 1,1,-1 - 1479 819 l 1,2,-1 - 1622 1434 l 1,3,-1 - 1796 1434 l 1,4,-1 - 1464 0 l 1,5,-1 - 1290 0 l 1,6,-1 - 1456 717 l 1,7,-1 - 797 717 l 1,8,-1 - 631 0 l 1,9,-1 - 457 0 l 1,10,-1 - 764 1331 l 1,11,-1 - 721 1331 l 2,12,13 - 619 1331 619 1331 547 1253.5 c 128,-1,14 - 475 1176 475 1176 475 1077 c 0,15,16 - 475 1062 475 1062 479.5 1051 c 128,-1,17 - 484 1040 484 1040 488.5 1036 c 128,-1,18 - 493 1032 493 1032 504 1024 c 1,19,-1 - 453 918 l 1,20,21 - 421 930 421 930 398.5 941 c 128,-1,22 - 376 952 376 952 349.5 971.5 c 128,-1,23 - 323 991 323 991 309 1019.5 c 128,-1,24 - 295 1048 295 1048 295 1083 c 0,25,26 - 295 1160 295 1160 335 1227.5 c 128,-1,27 - 375 1295 375 1295 438 1339 c 128,-1,28 - 501 1383 501 1383 578 1408.5 c 128,-1,29 - 655 1434 655 1434 731 1434 c 2,30,-1 - 963 1434 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni031D -Encoding: 797 797 1063 -Width: 0 -VWidth: 0 -Flags: W -HStem: -326 82<-809 -686 -604 -502> -VStem: -829 348 -AnchorPoint: "bottom" -590 0 mark 0 -LayerCount: 2 -Fore -SplineSet --502 -326 m 1,0,-1 - -829 -326 l 1,1,-1 - -809 -244 l 1,2,-1 - -686 -244 l 1,3,-1 - -649 -82 l 1,4,-1 - -567 -82 l 1,5,-1 - -604 -244 l 1,6,-1 - -481 -244 l 1,7,-1 - -502 -326 l 1,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni1E42 -Encoding: 7746 7746 1064 -Width: 1544 -VWidth: 0 -Flags: W -HStem: -272 150<629 743> 0 43<92 276 1200 1384> 1393 41<414 608 1503 1706> -VStem: 594 184 -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1323 0 2 -Refer: 40 77 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uni1E43 -Encoding: 7747 7747 1065 -Width: 1574 -VWidth: 0 -Flags: W -HStem: -272 150<739 854> 0 43<184 358 760 933 1317 1490> 819 102<221 380 584 880 1151 1437> -VStem: 150 70<770 808> 340 174<527 759> 705 184 1460 158<430 798> -LayerCount: 2 -Fore -Refer: 483 803 N 1 0 0 1 1434 0 2 -Refer: 11 109 N 1 0 0 1 0 0 3 -Validated: 1 -EndChar - -StartChar: uniA789 -Encoding: 42889 42889 1066 -Width: 356 -VWidth: 0 -Flags: W -LayerCount: 2 -Fore -Refer: 63 58 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uniA78A -Encoding: 42890 42890 1067 -Width: 589 -VWidth: 0 -Flags: W -HStem: 348 102<186 563> 573 102<238 616> -VStem: 162 477 -LayerCount: 2 -Fore -SplineSet -238 676 m 1,0,-1 - 639 676 l 1,1,-1 - 616 573 l 1,2,-1 - 215 573 l 1,3,-1 - 238 676 l 1,0,-1 -186 451 m 1,4,-1 - 588 451 l 1,5,-1 - 563 348 l 1,6,-1 - 162 348 l 1,7,-1 - 186 451 l 1,4,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA78B -Encoding: 42891 42891 1068 -Width: 356 -VWidth: 0 -Flags: W -HStem: 1393 41G<416 588> -VStem: 209 379 -LayerCount: 2 -Fore -SplineSet -588 1434 m 29,0,-1 - 311 369 l 1,1,-1 - 209 369 l 1,2,-1 - 424 1434 l 1,3,-1 - 588 1434 l 29,0,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniA78C -Encoding: 42892 42892 1069 -Width: 335 -VWidth: 0 -Flags: W -HStem: 1024 410<424 440> -VStem: 358 209 -LayerCount: 2 -Fore -Refer: 56 39 N 1 0 0 1 0 0 2 -Validated: 1 -EndChar - -StartChar: uniA78D -Encoding: 42893 42893 1070 -Width: 1266 -VWidth: 0 -Flags: W -HStem: 0 21G<921 1096> 512 103<419.417 779.972> 1414 20G<123 297 921 1096> -VStem: 123 174<746.458 1434> 921 175<0 603 715.521 1434> -LayerCount: 2 -Fore -SplineSet -1060 603 m 1,0,1 - 878 512 878 512 732 512 c 0,2,3 - 508 512 508 512 400 622 c 0,4,5 - 325 698 325 698 325 821 c 0,6,7 - 325 877 325 877 340 942 c 2,8,-1 - 454 1434 l 1,9,-1 - 628 1434 l 1,10,-1 - 520 967 l 2,11,12 - 502 889 502 889 502 829 c 0,13,14 - 502 615 502 615 726 615 c 0,15,16 - 908 615 908 615 1094 750 c 1,17,-1 - 1252 1434 l 1,18,-1 - 1427 1434 l 9,19,-1 - 1096 0 l 1,20,-1 - 921 0 l 1,21,-1 - 1060 603 l 1,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0265 -Encoding: 613 613 1071 -Width: 1036 -VWidth: 0 -Flags: W -HStem: -416 102<757 963> -20 102<380 693> 860 41G<281 455 918 1092> -VStem: 154 172<137 501> 965 70<-302 -264> -AnchorPoint: "bottom" 471 0 basechar 0 -AnchorPoint: "top" 719 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -836 -416 m 0,0,1 - 791 -416 791 -416 757 -400 c 128,-1,2 - 723 -384 723 -384 706 -358.5 c 128,-1,3 - 689 -333 689 -333 678.5 -301.5 c 128,-1,4 - 668 -270 668 -270 670 -239.5 c 128,-1,5 - 672 -209 672 -209 676 -182 c 1,6,-1 - 727 33 l 1,7,8 - 603 -20 603 -20 475 -20 c 0,9,10 - 309 -20 309 -20 231.5 43.5 c 128,-1,11 - 154 107 154 107 154 240 c 0,12,13 - 154 311 154 311 176 410 c 1,14,-1 - 291 901 l 1,15,-1 - 455 901 l 1,16,-1 - 346 434 l 2,17,18 - 326 350 326 350 326 281 c 0,19,20 - 326 171 326 171 379.5 126.5 c 128,-1,21 - 433 82 433 82 528 82 c 0,22,23 - 646 82 646 82 758 170 c 1,24,-1 - 928 901 l 1,25,-1 - 1092 901 l 1,26,-1 - 854 -119 l 2,27,28 - 844 -163 844 -163 844 -213 c 0,29,30 - 844 -313 844 -313 887 -313 c 0,31,32 - 915 -313 915 -313 937.5 -298.5 c 128,-1,33 - 960 -284 960 -284 965 -264 c 1,34,-1 - 1034 -264 l 1,35,36 - 1020 -327 1020 -327 962.5 -371.5 c 128,-1,37 - 905 -416 905 -416 836 -416 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uniE04C -Encoding: 57420 57420 1072 -Width: 0 -VWidth: 0 -Flags: W -HStem: 1270 117<-418 -112> -VStem: -502 78<1390 1468> -98 76<1397 1481> -AnchorPoint: "top" -313 1188 mark 0 -LayerCount: 2 -Fore -SplineSet --502 1389 m 0,0,1 - -502 1427 -502 1427 -479 1454 c 128,-1,2 - -456 1481 -456 1481 -430 1481 c 0,3,4 - -414 1481 -414 1481 -408 1476.5 c 128,-1,5 - -402 1472 -402 1472 -404 1464 c 128,-1,6 - -406 1456 -406 1456 -410.5 1447.5 c 128,-1,7 - -415 1439 -415 1439 -419.5 1428.5 c 128,-1,8 - -424 1418 -424 1418 -424 1411 c 0,9,10 - -424 1386 -424 1386 -319 1386 c 2,11,-1 - -217 1386 l 2,12,13 - -106 1386 -106 1386 -98 1415 c 0,14,15 - -96 1425 -96 1425 -96 1439.5 c 128,-1,16 - -96 1454 -96 1454 -95 1461.5 c 128,-1,17 - -94 1469 -94 1469 -86 1475 c 128,-1,18 - -78 1481 -78 1481 -61 1481 c 0,19,20 - -23 1481 -23 1481 -23 1434 c 0,21,22 - -23 1361 -23 1361 -108 1315.5 c 128,-1,23 - -193 1270 -193 1270 -295 1270 c 0,24,25 - -380 1270 -380 1270 -441 1304 c 128,-1,26 - -502 1338 -502 1338 -502 1389 c 0,0,1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: Aringacute -Encoding: 506 506 1073 -Width: 1298 -VWidth: 0 -Flags: HW -HStem: 0 21<31 206.854 1089.27 1255> 410 102<500 1024> 1663 62<950.717 1084.54> 1776 279 -VStem: 846 63<1492.72 1622.99> 991 307 1102 63<1514.24 1640.82> -LayerCount: 2 -Fore -Refer: 143 197 N 1 0 0 1 0 0 2 -Refer: 929 58624 N 1 0 0 1 489 295 2 -EndChar - -StartChar: aringacute -Encoding: 507 507 1074 -Width: 974 -VWidth: 0 -Flags: W -HStem: -20 102<366 693 846 1001> 819 102<532 850> 983 61<679 816> 1233 61<709 844> 1353 387 -VStem: 154 158<136 521> 602 63<1058 1191> 684 406 711 172<113 272> 858 63<1085 1220> 1004 72<93 131> -LayerCount: 2 -Fore -Refer: 133 229 N 1 0 0 1 0 0 2 -Refer: 93 769 N 1 0 0 1 1077 98 2 -Validated: 1 -EndChar - -StartChar: AEacute -Encoding: 508 508 1075 -Width: 1730 -VWidth: 0 -Flags: W -HStem: 0 102<984 1647> 410 102<507 881> 799 102<1168 1613> 1331 103<994 1093 1267 1921> 1501 387 -VStem: 1098 406 -LayerCount: 2 -Fore -Refer: 168 198 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1491 246 2 -Validated: 1 -EndChar - -StartChar: aeacute -Encoding: 509 509 1076 -Width: 1570 -VWidth: 0 -Flags: W -HStem: -20 102<359 691 1023 1340> 451 102<971 1479> 520 102<433 779> 819 102<455 786 1158 1420> 1071 387 -VStem: 127 170<145 398> 758 166<182 449> 1057 406 1479 160<553 758> -LayerCount: 2 -Fore -Refer: 169 230 N 1 0 0 1 0 0 3 -Refer: 93 769 N 1 0 0 1 1450 -184 2 -Validated: 1 -EndChar - -StartChar: uni01F8 -Encoding: 504 504 1077 -Width: 1325 -VWidth: 0 -Flags: W -HStem: 0 43<92 276 961 1165> 1393 41<414 616 1303 1487> 1577 387 -VStem: 777 295 -LayerCount: 2 -Fore -Refer: 41 78 N 1 0 0 1 0 0 3 -Refer: 879 715 N 1 0 0 1 345 322 2 -Validated: 1 -EndChar - -StartChar: uni01F9 -Encoding: 505 505 1078 -Width: 1075 -VWidth: 0 -Flags: W -HStem: 0 43<184 358 821 994> 819 102<221 380 602 914> 1044 387 -VStem: 150 70<770 808> 567 295 954 164<389 778> -LayerCount: 2 -Fore -Refer: 4 110 N 1 0 0 1 0 0 3 -Refer: 879 715 N 1 0 0 1 135 -211 2 -Validated: 1 -EndChar - -StartChar: uniA7AD -Encoding: 42925 42925 1079 -Width: 1272 -VWidth: 0 -Flags: W -HStem: 0 102<501 1162> 563 70<362.391 433> 844 57<351.69 486.028> 1414 20G<629.371 808> -VStem: 246 81<670.063 829.462> -LayerCount: 2 -Fore -SplineSet -425 844 m 0,0,1 - 327 844 327 844 327 731 c 0,2,3 - 327 707 327 707 352.5 676 c 128,-1,4 - 378 645 378 645 449 633 c 1,5,-1 - 490 811 l 1,6,7 - 465 844 465 844 425 844 c 0,0,1 -501 102 m 1,8,-1 - 1187 102 l 1,9,-1 - 1162 0 l 1,10,-1 - 302 0 l 1,11,-1 - 433 563 l 1,12,13 - 331 578 331 578 288.5 628.5 c 128,-1,14 - 246 679 246 679 246 729 c 0,15,16 - 246 746 246 746 250 762 c 0,17,18 - 266 832 266 832 319 866.5 c 128,-1,19 - 372 901 372 901 422.5 901 c 128,-1,20 - 473 901 473 901 506 881 c 1,21,-1 - 634 1434 l 1,22,-1 - 808 1434 l 1,23,-1 - 625 640 l 1,24,25 - 743 668 743 668 867 774 c 1,26,-1 - 887 735 l 1,27,28 - 758 628 758 628 703.5 605 c 128,-1,29 - 649 582 649 582 609 572 c 1,30,-1 - 501 102 l 1,8,-1 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni026C -Encoding: 620 620 1080 -Width: 790 -VWidth: 0 -Flags: W -HStem: 0 43G<303 467> 569 68<208 303 467 554> 844 57<164 298> 1311 41G<303 467> -VStem: 74 78<682 837> 303 164<0 572 637 839 881 1352> -LayerCount: 2 -Fore -SplineSet -530 276 m 2,0,1 - 520 232 520 232 520 182 c 0,2,3 - 520 82 520 82 563 82 c 0,4,5 - 591 82 591 82 613.5 96.5 c 128,-1,6 - 636 111 636 111 641 131 c 1,7,-1 - 711 131 l 1,8,9 - 698 68 698 68 639.5 24 c 128,-1,10 - 581 -20 581 -20 510 -20 c 128,-1,11 - 439 -20 439 -20 392.5 29.5 c 128,-1,12 - 346 79 346 79 346 156 c 0,13,14 - 346 183 346 183 352 213 c 2,15,-1 - 433 563 l 1,16,17 - 331 578 331 578 288.5 628.5 c 128,-1,18 - 246 679 246 679 246 729 c 0,19,20 - 246 746 246 746 250 762 c 0,21,22 - 266 832 266 832 319 866.5 c 128,-1,23 - 372 901 372 901 422.5 901 c 128,-1,24 - 473 901 473 901 506 881 c 1,25,-1 - 615 1352 l 1,26,-1 - 779 1352 l 1,27,-1 - 614 637 l 1,28,29 - 737 663 737 663 867 774 c 1,30,-1 - 887 735 l 1,31,32 - 758 628 758 628 700 603.5 c 128,-1,33 - 642 579 642 579 598 569 c 1,34,-1 - 530 276 l 2,0,1 -425 844 m 0,35,36 - 327 844 327 844 327 731 c 0,37,38 - 327 707 327 707 352.5 676 c 128,-1,39 - 378 645 378 645 449 633 c 1,40,-1 - 490 811 l 1,41,42 - 465 844 465 844 425 844 c 0,35,36 -EndSplineSet -Validated: 1 -EndChar - -StartChar: uni0528 -Encoding: 1320 1320 1081 -Width: 1259 -VWidth: 0 -Flags: W -HStem: -348 102<-231.16 2.19727> 0 21G<915 1094.62> 717 102<444 1081> 1414 20G<409.37 588 1242.35 1421> -AnchorPoint: "top" 926 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -414 1434 m 1,0,-1 - 588 1434 l 1,1,-1 - 444 819 l 1,2,-1 - 1104 819 l 1,3,-1 - 1247 1434 l 1,4,-1 - 1421 1434 l 1,5,-1 - 1090 0 l 1,6,-1 - 915 0 l 1,7,-1 - 1081 717 l 1,8,-1 - 422 717 l 1,9,-1 - 240 -68 l 2,10,11 - 193 -271 193 -271 -25 -332 c 0,12,13 - -82 -348 -82 -348 -139 -348 c 0,14,15 - -269 -348 -269 -348 -326 -256 c 1,16,-1 - -182 -195 l 1,17,18 - -160 -246 -160 -246 -93 -246 c 128,-1,19 - -26 -246 -26 -246 13 -188 c 128,-1,20 - 52 -130 52 -130 82 0 c 2,21,-1 - 414 1434 l 1,0,-1 -EndSplineSet -Validated: 1048577 -EndChar - -StartChar: uni0529 -Encoding: 1321 1321 1082 -Width: 1130 -VWidth: 0 -Flags: W -HStem: -348 102<-220.978 12.1445> -20 102<910.5 1075.09> 440 103<381 842> 881 20G<296.361 465 943.307 1112> -VStem: 782 174<82.171 267.238> -AnchorPoint: "top" 735 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -301 901 m 1,0,-1 - 465 901 l 1,1,-1 - 381 543 l 1,2,-1 - 864 543 l 1,3,-1 - 948 901 l 1,4,-1 - 1112 901 l 1,5,-1 - 967 276 l 1,6,7 - 956 223 956 223 956 184 c 0,8,9 - 956 82 956 82 999 82 c 0,10,11 - 1026 82 1026 82 1049.5 96.5 c 128,-1,12 - 1073 111 1073 111 1077 131 c 1,13,-1 - 1147 131 l 1,14,15 - 1132 68 1132 68 1074.5 24 c 128,-1,16 - 1017 -20 1017 -20 946 -20 c 128,-1,17 - 875 -20 875 -20 828.5 28.5 c 128,-1,18 - 782 77 782 77 782 154 c 0,19,20 - 782 183 782 183 788 213 c 1,21,-1 - 842 440 l 1,22,-1 - 358 440 l 1,23,-1 - 240 -68 l 2,24,25 - 206 -214 206 -214 91 -285 c 0,26,27 - -11 -348 -11 -348 -134.5 -348 c 128,-1,28 - -258 -348 -258 -348 -315 -256 c 1,29,-1 - -172 -195 l 1,30,31 - -150 -246 -150 -246 -83 -246 c 128,-1,32 - -16 -246 -16 -246 23 -187.5 c 128,-1,33 - 62 -129 62 -129 92 0 c 2,34,-1 - 301 901 l 1,0,-1 -EndSplineSet -Validated: 1048577 -EndChar - -StartChar: uni052E -Encoding: 1326 1326 1083 -Width: 1214 -VWidth: 0 -Flags: W -HStem: -20 102<141.292 374.693> 1331 103<860 1241> -VStem: 1038 117<-320.818 -185.609> -AnchorPoint: "top" 1071 1434 basechar 0 -LayerCount: 2 -Fore -SplineSet -1065 -125 m 1,0,1 - 1155 -157 1155 -157 1155 -247 c 0,2,3 - 1155 -287 1155 -287 1100.5 -329 c 128,-1,4 - 1046 -371 1046 -371 974 -397 c 1,5,-1 - 960 -373 l 1,6,7 - 990 -353 990 -353 1014 -320.5 c 128,-1,8 - 1038 -288 1038 -288 1038 -254 c 0,9,10 - 1038 -194 1038 -194 946 -164 c 1,11,-1 - 1011 0 l 1,12,-1 - 934 0 l 1,13,-1 - 1241 1331 l 1,14,-1 - 860 1331 l 1,15,-1 - 612 260 l 2,16,17 - 565 57 565 57 347 -4 c 0,18,19 - 290 -20 290 -20 233 -20 c 0,20,21 - 104 -20 104 -20 47 72 c 1,22,-1 - 190 133 l 1,23,24 - 212 82 212 82 279.5 82 c 128,-1,25 - 347 82 347 82 386 140.5 c 128,-1,26 - 425 199 425 199 455 328 c 2,27,-1 - 711 1434 l 1,28,-1 - 1440 1434 l 1,29,-1 - 1108 0 l 1,30,-1 - 1065 -125 l 1,0,1 -EndSplineSet -Validated: 1048577 -EndChar - -StartChar: uni052F -Encoding: 1327 1327 1084 -Width: 1259 -VWidth: 0 -Flags: W -HStem: -20 102<141.023 374.641> 799 102<822.342 1005.11> -VStem: 909 176<82.3608 367.359> 1022 170<501.406 785.727> 1063 117<-321.328 -185.615> -AnchorPoint: "top" 1012 1004 basechar 0 -LayerCount: 2 -Fore -SplineSet -1096 276 m 1,0,1 - 1085 219 1085 219 1085 184 c 0,2,3 - 1085 82 1085 82 1128 82 c 0,4,5 - 1153 82 1153 82 1177.5 96.5 c 128,-1,6 - 1202 111 1202 111 1206 131 c 1,7,-1 - 1276 131 l 1,8,9 - 1262 69 1262 69 1215 33 c 128,-1,10 - 1168 -3 1168 -3 1127 -14 c 1,11,-1 - 1090 -125 l 1,12,13 - 1135 -141 1135 -141 1157.5 -174 c 128,-1,14 - 1180 -207 1180 -207 1180 -247 c 128,-1,15 - 1180 -287 1180 -287 1126 -329 c 128,-1,16 - 1072 -371 1072 -371 1000 -397 c 1,17,-1 - 985 -373 l 1,18,19 - 1015 -353 1015 -353 1039 -320.5 c 128,-1,20 - 1063 -288 1063 -288 1063 -254 c 0,21,22 - 1063 -194 1063 -194 971 -164 c 1,23,-1 - 1030 -14 l 1,24,25 - 988 -3 988 -3 948.5 36 c 128,-1,26 - 909 75 909 75 909 152 c 0,27,28 - 909 168 909 168 918 213 c 1,29,-1 - 1006 592 l 1,30,31 - 1022 674 1022 674 1022 719 c 128,-1,32 - 1022 764 1022 764 999 781.5 c 128,-1,33 - 976 799 976 799 926 799 c 0,34,35 - 834 799 834 799 750.5 668 c 128,-1,36 - 667 537 667 537 602 260 c 0,37,38 - 568 114 568 114 453 43 c 0,39,40 - 351 -20 351 -20 227.5 -20 c 128,-1,41 - 104 -20 104 -20 47 72 c 1,42,-1 - 190 133 l 1,43,44 - 212 82 212 82 279.5 82 c 128,-1,45 - 347 82 347 82 386 140.5 c 128,-1,46 - 425 199 425 199 451.5 313.5 c 128,-1,47 - 478 428 478 428 514 512.5 c 128,-1,48 - 550 597 550 597 589.5 654.5 c 128,-1,49 - 629 712 629 712 675 757 c 128,-1,50 - 721 802 721 802 762 828.5 c 128,-1,51 - 803 855 803 855 844 872 c 0,52,53 - 914 901 914 901 965 901 c 0,54,55 - 1192 901 1192 901 1192 727 c 0,56,57 - 1192 689 1192 689 1180 643 c 1,58,-1 - 1096 276 l 1,0,1 -EndSplineSet -Validated: 1048577 -EndChar -EndChars -EndSplineFont diff --git a/examples/pfennigFont/PfennigItalic.ttf b/examples/pfennigFont/PfennigItalic.ttf deleted file mode 100644 index 970d0c22f..000000000 Binary files a/examples/pfennigFont/PfennigItalic.ttf and /dev/null differ diff --git "a/examples/pfennigFont/pfennigMultiByte\360\237\232\200.ttf" "b/examples/pfennigFont/pfennigMultiByte\360\237\232\200.ttf" deleted file mode 100644 index bbbe4636d..000000000 Binary files "a/examples/pfennigFont/pfennigMultiByte\360\237\232\200.ttf" and /dev/null differ diff --git a/examples/ray.js b/examples/ray.js deleted file mode 100644 index c8a8e5326..000000000 --- a/examples/ray.js +++ /dev/null @@ -1,85 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const canvas = Canvas.createCanvas(243 * 4, 243) -const ctx = canvas.getContext('2d') - -function render (level) { - ctx.fillStyle = getPointColour(122, 122) - ctx.fillRect(0, 0, 240, 240) - renderLevel(level, 81, 0) -} - -function renderLevel (minimumLevel, level, y) { - let x - - for (x = 0; x < 243 / level; ++x) { - drawBlock(x, y, level) - } - for (x = 0; x < 243 / level; x += 3) { - drawBlock(x, y + 1, level) - drawBlock(x + 2, y + 1, level) - } - for (x = 0; x < 243 / level; ++x) { - drawBlock(x, y + 2, level) - } - if ((y += 3) >= 243 / level) { - y = 0 - level /= 3 - } - if (level >= minimumLevel) { - renderLevel(minimumLevel, level, y) - } -} - -function drawBlock (x, y, level) { - ctx.fillStyle = getPointColour( - x * level + (level - 1) / 2, - y * level + (level - 1) / 2 - ) - - ctx.fillRect( - x * level, - y * level, - level, - level - ) -} - -function getPointColour (x, y) { - x = x / 121.5 - 1 - y = -y / 121.5 + 1 - - const x2y2 = x * x + y * y - if (x2y2 > 1) { - return '#000' - } - - const root = Math.sqrt(1 - x2y2) - const x3d = x * 0.7071067812 + root / 2 - y / 2 - const y3d = x * 0.7071067812 - root / 2 + y / 2 - const z3d = 0.7071067812 * root + 0.7071067812 * y - let brightness = -x / 2 + root * 0.7071067812 + y / 2 - if (brightness < 0) brightness = 0 - - const r = Math.round(brightness * 127.5 * (1 - y3d)) - const g = Math.round(brightness * 127.5 * (x3d + 1)) - const b = Math.round(brightness * 127.5 * (z3d + 1)) - - return 'rgb(' + r + ', ' + g + ', ' + b + ')' -} - -const start = new Date() - -render(10) -ctx.translate(243, 0) -render(6) -ctx.translate(243, 0) -render(3) -ctx.translate(243, 0) -render(1) - -console.log('Rendered in %s seconds', (new Date() - start) / 1000) - -canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'ray.png'))) diff --git a/examples/resize.js b/examples/resize.js deleted file mode 100644 index f13a04451..000000000 --- a/examples/resize.js +++ /dev/null @@ -1,31 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const Image = Canvas.Image - -const img = new Image() -const start = new Date() - -img.onerror = function (err) { - throw err -} - -img.onload = function () { - const width = 100 - const height = 100 - const canvas = Canvas.createCanvas(width, height) - const ctx = canvas.getContext('2d') - const out = fs.createWriteStream(path.join(__dirname, 'resize.png')) - - ctx.imageSmoothingEnabled = true - ctx.drawImage(img, 0, 0, width, height) - - canvas.createPNGStream().pipe(out) - - out.on('finish', function () { - console.log('Resized and saved in %dms', new Date() - start) - }) -} - -img.src = (process.argv[2] || path.join(__dirname, 'images', 'squid.png')) diff --git a/examples/rhill-voronoi-core-min.js b/examples/rhill-voronoi-core-min.js deleted file mode 100644 index dda97c84c..000000000 --- a/examples/rhill-voronoi-core-min.js +++ /dev/null @@ -1,117 +0,0 @@ -/* eslint-disable */ -/*! -A custom Javascript implementation of Steven J. Fortune's algorithm to -compute Voronoi diagrams. -Copyright (C) 2010 Raymond Hill - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program 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 General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -***** - -Author: Raymond Hill (rhill@raymondhill.net) -File: rhill-voronoi-core-min.js -Version: 0.9 -Date: Sep. 21, 2010 -Description: This is my personal Javascript implementation of -Steven Fortune's algorithm to generate Voronoi diagrams. - -Portions of this software use, or depend on the work of: - - "Fortune's algorithm" by Steven J. Fortune: For his clever - algorithm to compute Voronoi diagrams. - http://ect.bell-labs.com/who/sjf/ - - "The Liang-Barsky line clipping algorithm in a nutshell!" by Daniel White, - to efficiently clip a line within a rectangle. - http://www.skytopia.com/project/articles/compsci/clipping.html - -***** - -Usage: - - var vertices = [{x:300,y:300}, {x:100,y:100}, {x:200,y:500}, {x:250,y:450}, {x:600,y:150}]; - // xl, xr means x left, x right - // yt, yb means y top, y bottom - var bbox = {xl:0, xr:800, yt:0, yb:600}; - var voronoi = new Voronoi(); - // pass an array of objects, each of which exhibits x and y properties - voronoi.setSites(vertices); - // pass an object which exhibits xl, xr, yt, yb properties. The bounding - // box will be used to connect unbound edges, and to close open cells - result = voronoi.compute(bbox); - // render, further analyze, etc. - -Return value: - An object with the following properties: - - result.sites = an array of unordered, unique Voronoi.Site objects underlying the Voronoi diagram. - result.edges = an array of unordered, unique Voronoi.Edge objects making up the Voronoi diagram. - result.cells = a dictionary of Voronoi.Cell object making up the Voronoi diagram. The Voronoi.Cell - in the dictionary are keyed on their associated Voronoi.Site's unique id. - result.execTime = the time it took to compute the Voronoi diagram, in milliseconds. - -Voronoi.Site object: - id: a unique id identifying this Voronoi site. - x: the x position of this Voronoi site. - y: the y position of this Voronoi site. - destroy(): mark this Voronoi site object as destroyed, it will be removed from the - internal collection and won't be part of the next Voronoi diagram computation. - - When adding vertices to the Voronoi object, through Voronoi.setSites() or - Voronoi.addSites(), an internal collection of matching Voronoi.Site object is maintained, - which is read accessible at all time through Voronoi.getSites(). You are allowed to - change the x and/or y properties of any Voronoi.Site object in the array, before - launching the computation of the Voronoi diagram. However, do *not* change the id - of any Voronoi.Site object, this could break the computation of the Voronoi diagram. - -Voronoi.Edge object: - id: a unique id identifying this Voronoi edge. - lSite: the Voronoi.Site object at the left of this Voronoi.Edge object. - rSite: the Voronoi.Site object at the right of this Voronoi.Edge object (can be null). - va: the Voronoi.Vertex object defining the start point (relative to the Voronoi.Site - on the left) of this Voronoi.Edge object. - vb: the Voronoi.Vertex object defining the end point (relative to Voronoi.Site on - the left) of this Voronoi.Edge object. - - For edges which are used to close open cells (using the supplied bounding box), the - rSite property will be null. - -Voronoi.Cells object: - A collection of Voronoi.Cell objects, keyed on the id of the associated Voronoi.Site - object. - numCells: the number of Voronoi.Cell objects in the collection. - -Voronoi.Cell object: - site: the Voronoi.Site object associated with the Voronoi cell. - halfedges: an array of Voronoi.Halfedge objects, ordered counterclockwise, defining the - polygon for this Voronoi cell. - -Voronoi.Halfedge object: - site: the Voronoi.Site object owning this Voronoi.Halfedge object. - edge: a reference to the unique Voronoi.Edge object underlying this Voronoi.Halfedge object. - getStartpoint(): a method returning a Voronoi.Vertex for the start point of this - halfedge. Keep in mind halfedges are always countercockwise. - getEndpoint(): a method returning a Voronoi.Vertex for the end point of this - halfedge. Keep in mind halfedges are always countercockwise. - -Voronoi.Vertex object: - x: the x coordinate. - y: the y coordinate. - -*/ -function Voronoi(){this.sites=[];this.siteEvents=[];this.circEvents=[];this.arcs=[];this.edges=[];this.cells=new this.Cells()}Voronoi.prototype.SITE_EVENT=0;Voronoi.prototype.CIRCLE_EVENT=1;Voronoi.prototype.VOID_EVENT=-1;Voronoi.prototype.sqrt=Math.sqrt;Voronoi.prototype.abs=Math.abs;Voronoi.prototype.floor=Math.floor;Voronoi.prototype.random=Math.random;Voronoi.prototype.round=Math.round;Voronoi.prototype.min=Math.min;Voronoi.prototype.max=Math.max;Voronoi.prototype.pow=Math.pow;Voronoi.prototype.isNaN=isNaN;Voronoi.prototype.PI=Math.PI;Voronoi.prototype.EPSILON=1e-5;Voronoi.prototype.equalWithEpsilon=function(a,b){return this.abs(a-b)<1e-5};Voronoi.prototype.greaterThanWithEpsilon=function(a,b){return(a-b)>1e-5};Voronoi.prototype.greaterThanOrEqualWithEpsilon=function(a,b){return(b-a)<1e-5};Voronoi.prototype.lessThanWithEpsilon=function(a,b){return(b-a)>1e-5};Voronoi.prototype.lessThanOrEqualWithEpsilon=function(a,b){return(a-b)<1e-5};Voronoi.prototype.Beachsection=function(a){this.site=a;this.edge=null;this.sweep=-Infinity;this.lid=0;this.circleEvent=undefined};Voronoi.prototype.Beachsection.prototype.sqrt=Math.sqrt;Voronoi.prototype.Beachsection.prototype._leftParabolicCut=function(a,c,d){var e=a.x;var f=a.y;if(f==d){return e}var g=c.x;var h=c.y;if(h==d){return g}if(f==h){return(e+g)/2}var i=f-d;var j=h-d;var k=g-e;var l=1/i-1/j;var b=k/j;return(-b+this.sqrt(b*b-2*l*(k*k/(-2*j)-h+j/2+f-i/2)))/l+e};Voronoi.prototype.Beachsection.prototype.leftParabolicCut=function(a,b){if(this.sweep!==b||this.lid!==a.id){this.sweep=b;this.lid=a.id;this.lBreak=this._leftParabolicCut(this.site,a,b)}return this.lBreak};Voronoi.prototype.Beachsection.prototype.isCollapsing=function(){return this.circleEvent!==undefined&&this.circleEvent.type===Voronoi.prototype.CIRCLE_EVENT};Voronoi.prototype.Site=function(x,y){this.id=this.constructor.prototype.idgenerator++;this.x=x;this.y=y};Voronoi.prototype.Site.prototype.destroy=function(){this.id=0};Voronoi.prototype.Vertex=function(x,y){this.x=x;this.y=y};Voronoi.prototype.Edge=function(a,b){this.id=this.constructor.prototype.idgenerator++;this.lSite=a;this.rSite=b;this.va=this.vb=undefined};Voronoi.prototype.Halfedge=function(a,b){this.site=a;this.edge=b};Voronoi.prototype.Cell=function(a){this.site=a;this.halfedges=[]};Voronoi.prototype.Cells=function(){this.numCells=0};Voronoi.prototype.Cells.prototype.addCell=function(a){this[a.site.id]=a;this.numCells++};Voronoi.prototype.Cells.prototype.removeCell=function(a){delete this[a.site.id];this.numCells--};Voronoi.prototype.Site.prototype.idgenerator=1;Voronoi.prototype.Edge.prototype.isLineSegment=function(){return this.id!==0&&Boolean(this.va)&&Boolean(this.vb)};Voronoi.prototype.Edge.prototype.idgenerator=1;Voronoi.prototype.Halfedge.prototype.isLineSegment=function(){return this.edge.id!==0&&Boolean(this.edge.va)&&Boolean(this.edge.vb)};Voronoi.prototype.Halfedge.prototype.getStartpoint=function(){return this.edge.lSite.id==this.site.id?this.edge.va:this.edge.vb};Voronoi.prototype.Halfedge.prototype.getEndpoint=function(){return this.edge.lSite.id==this.site.id?this.edge.vb:this.edge.va};Voronoi.prototype.leftBreakPoint=function(a,b){var c=this.arcs[a];var d=c.site;if(d.y==b){return d.x}if(a===0){return-Infinity}return c.leftParabolicCut(this.arcs[a-1].site,b)};Voronoi.prototype.rightBreakPoint=function(a,b){if(a>1;if(this.lessThanWithEpsilon(x,this.leftBreakPoint(i,a))){r=i;continue}if(this.greaterThanOrEqualWithEpsilon(x,this.rightBreakPoint(i,a))){l=i+1;continue}return i}return l};Voronoi.prototype.findDeletionPoint=function(x,a){var n=this.arcs.length;if(!n){return 0}var l=0;var r=n;var i;var b;while(l>1;b=this.leftBreakPoint(i,a);if(this.lessThanWithEpsilon(x,b)){r=i;continue}if(this.greaterThanWithEpsilon(x,b)){l=i+1;continue}b=this.rightBreakPoint(i,a);if(this.greaterThanWithEpsilon(x,b)){l=i+1;continue}if(this.lessThanWithEpsilon(x,b)){r=i;continue}return i}};Voronoi.prototype.createEdge=function(a,b,c,d){var e=new this.Edge(a,b);this.edges.push(e);if(c!==undefined){this.setEdgeStartpoint(e,a,b,c)}if(d!==undefined){this.setEdgeEndpoint(e,a,b,d)}this.cells[a.id].halfedges.push(new this.Halfedge(a,e));this.cells[b.id].halfedges.push(new this.Halfedge(b,e));return e};Voronoi.prototype.createBorderEdge=function(a,b,c){var d=new this.Edge(a,null);d.va=b;d.vb=c;this.edges.push(d);return d};Voronoi.prototype.destroyEdge=function(a){a.id=0};Voronoi.prototype.setEdgeStartpoint=function(a,b,c,d){if(a.va===undefined&&a.vb===undefined){a.va=d;a.lSite=b;a.rSite=c}else if(a.lSite.id==c.id){a.vb=d}else{a.va=d}};Voronoi.prototype.setEdgeEndpoint=function(a,b,c,d){this.setEdgeStartpoint(a,c,b,d)};Voronoi.prototype.removeArc=function(a){var x=a.center.x;var y=a.center.y;var b=a.y;var c=this.findDeletionPoint(x,b);var d=c;while(d-1>0&&this.equalWithEpsilon(x,this.leftBreakPoint(d-1,b))){d--}var e=c;while(e+10&&this.equalWithEpsilon(a.x,this.rightBreakPoint(c-1,a.y))&&this.equalWithEpsilon(a.x,this.leftBreakPoint(c,a.y))){d=this.arcs[c-1];rArc=this.arcs[c];this.voidCircleEvents(c-1,c);var e=this.circumcircle(d.site,a,rArc.site);this.setEdgeStartpoint(rArc.edge,d.site,rArc.site,new this.Vertex(e.x,e.y));b.edge=this.createEdge(d.site,b.site,undefined,new this.Vertex(e.x,e.y));rArc.edge=this.createEdge(b.site,rArc.site,undefined,new this.Vertex(e.x,e.y));this.arcs.splice(c,0,b);this.addCircleEvents(c-1,a.y);this.addCircleEvents(c+1,a.y);return}this.voidCircleEvents(c);d=this.arcs[c];rArc=new this.Beachsection(d.site);this.arcs.splice(c+1,0,b,rArc);b.edge=rArc.edge=this.createEdge(d.site,b.site);this.addCircleEvents(c,a.y);this.addCircleEvents(c+2,a.y)};Voronoi.prototype.circumcircle=function(a,b,c){var e=a.x;var f=a.y;var g=b.x-e;var h=b.y-f;var i=c.x-e;var j=c.y-f;var d=2*(g*j-h*i);var k=g*g+h*h;var l=i*i+j*j;var x=(j*k-h*l)/d;var y=(g*l-i*k)/d;return{x:x+e,y:y+f,radius:this.sqrt(x*x+y*y)}};Voronoi.prototype.addCircleEvents=function(a,b){if(a<=0||a>=this.arcs.length-1){return}var c=this.arcs[a];var d=this.arcs[a-1].site;var e=this.arcs[a].site;var f=this.arcs[a+1].site;if(d.id==f.id||d.id==e.id||e.id==f.id){return}if((d.y-e.y)*(f.x-e.x)<=(d.x-e.x)*(f.y-e.y)){return}var g=this.circumcircle(d,e,f);var h=g.y+g.radius;if(!this.greaterThanOrEqualWithEpsilon(h,b)){return}var i={type:this.CIRCLE_EVENT,site:e,x:g.x,y:h,center:{x:g.x,y:g.y}};c.circleEvent=i;this.queuePushCircle(i)};Voronoi.prototype.voidCircleEvents=function(a,b){if(b===undefined){b=a}a=this.max(a,0);b=this.min(b,this.arcs.length-1);while(a<=b){var c=this.arcs[a];if(c.circleEvent!==undefined){c.circleEvent.type=this.VOID_EVENT;c.circleEvent=undefined}a++}};Voronoi.prototype.queueSanitize=function(){var q=this.circEvents;var a=q.length;if(!a){return}var b=a;while(b&&q[b-1].type===this.VOID_EVENT){b--}var c=a-b;if(c){q.splice(b,c)}var d=this.arcs.length;if(q.length0&&q[a-1].type!==this.VOID_EVENT){a--}if(a<=0){break}b=a-1;while(b>0&&q[b-1].type===this.VOID_EVENT){b--}c=a-b;q.splice(b,c);if(q.length0?this.siteEvents[this.siteEvents.length-1]:null;var b=this.circEvents.length>0?this.circEvents[this.circEvents.length-1]:null;if(Boolean(a)!==Boolean(b)){return a?this.siteEvents.pop():this.circEvents.pop()}if(!a){return null}if(a.y>1;c=o.y-q[i].y;if(!c){c=o.x-q[i].x}if(c>0){r=i}else if(c<0){l=i+1}else{return}}q.splice(l,0,o)}else{q.push(o)}};Voronoi.prototype.queuePushCircle=function(o){var q=this.circEvents;var r=q.length;if(r){var l=0;var i,c;while(l>1;c=o.y-q[i].y;if(!c){c=o.x-q[i].x}if(c>0){r=i}else{l=i+1}}q.splice(l,0,o)}else{q.push(o)}};Voronoi.prototype.getBisector=function(a,b){var r={x:(a.x+b.x)/2,y:(a.y+b.y)/2};if(b.y==a.y){return r}r.m=(a.x-b.x)/(b.y-a.y);r.b=r.y-r.m*r.x;return r};Voronoi.prototype.connectEdge=function(a,b){var c=a.vb;if(!!c){return true}var d=a.va;var e=b.xl;var g=b.xr;var h=b.yt;var i=b.yb;var j=a.lSite;var k=a.rSite;var f=this.getBisector(j,k);if(f.m===undefined){if(f.x=g){return false}if(j.x>k.x){if(d===undefined){d=new this.Vertex(f.x,h)}else if(d.y>=i){return false}c=new this.Vertex(f.x,i)}else{if(d===undefined){d=new this.Vertex(f.x,i)}else if(d.y=g){return false}c=new this.Vertex(g,f.m*g+f.b)}else{if(d===undefined){d=new this.Vertex(g,f.m*g+f.b)}else if(d.xk.x){if(d===undefined){d=new this.Vertex((h-f.b)/f.m,h)}else if(d.y>=i){return false}c=new this.Vertex((i-f.b)/f.m,i)}else{if(d===undefined){d=new this.Vertex((i-f.b)/f.m,i)}else if(d.y0){if(r>h){return false}else if(r>g){g=r}}q=b.xr-c;if(i===0&&q<0){return false}r=q/i;if(i<0){if(r>h){return false}else if(r>g){g=r}}else if(i>0){if(r0){if(r>h){return false}else if(r>g){g=r}}q=b.yb-d;if(j===0&&q<0){return false}r=q/j;if(j<0){if(r>h){return false}else if(r>g){g=r}}else if(j>0){if(r=0;e-=1){d=b[e];if(!this.connectEdge(d,a)||!this.clipEdge(d,a)||this.verticesAreEqual(d.va,d.vb)){this.destroyEdge(d);b.splice(e,1)}}};Voronoi.prototype.verticesAreEqual=function(a,b){return this.equalWithEpsilon(a.x,b.x)&&this.equalWithEpsilon(a.y,b.y)};Voronoi.prototype.sortHalfedgesCallback=function(a,b){var c=a.getStartpoint();var d=a.getEndpoint();var e=b.getStartpoint();var f=b.getEndpoint();return Math.atan2(f.y-e.y,f.x-e.x)-Math.atan2(d.y-c.y,d.x-c.x)};Voronoi.prototype.closeCells=function(a){var b=a.xl;var c=a.xr;var d=a.yt;var e=a.yb;this.clipEdges(a);var f=this.cells;var g;var h,iRight;var i,nHalfedges;var j;var k,endpoint;var l,vb;for(var m in f){g=f[m];if(!(g instanceof this.Cell)){continue}i=g.halfedges;h=i.length;while(h){iRight=h;while(iRight>0&&i[iRight-1].isLineSegment()){iRight--}h=iRight;while(h>0&&!i[h-1].isLineSegment()){h--}if(h===iRight){break}i.splice(h,iRight-h)}if(i.length===0){f.removeCell(g);continue}i.sort(this.sortHalfedgesCallback);nHalfedges=i.length;h=0;while(h=0;e--){d=this.sites[e];if(!d.id){this.sites.splice(e,1)}else{this.queuePushSite({type:this.SITE_EVENT,x:d.x,y:d.y,site:d})}}this.arcs=[];this.edges=[];this.cells=new this.Cells();var f=this.queuePop();while(f){if(f.type===this.SITE_EVENT){this.cells.addCell(new this.Cell(f.site));this.addArc(f.site)}else if(f.type===this.CIRCLE_EVENT){this.removeArc(f)}else{this.queueSanitize()}f=this.queuePop()}this.closeCells(a);var g=new Date();var h={sites:this.sites,cells:this.cells,edges:this.edges,execTime:g.getTime()-b.getTime()};this.arcs=[];this.edges=[];this.cells=new this.Cells();return h}; - -module.exports = function () { - return new Voronoi() -} diff --git a/examples/small-pdf.js b/examples/small-pdf.js deleted file mode 100644 index e01134976..000000000 --- a/examples/small-pdf.js +++ /dev/null @@ -1,25 +0,0 @@ -const fs = require('fs') -const Canvas = require('..') - -const canvas = Canvas.createCanvas(400, 200, 'pdf') -const ctx = canvas.getContext('2d') - -let y = 80 -let x = 50 - -ctx.font = '22px Helvetica' -ctx.fillText('node-canvas pdf', x, y) - -ctx.font = '10px Arial' -ctx.fillText('Just a quick example of PDFs with node-canvas', x, (y += 20)) - -ctx.globalAlpha = 0.5 -ctx.fillRect(x, (y += 20), 10, 10) -ctx.fillRect((x += 20), y, 10, 10) -ctx.fillRect((x += 20), y, 10, 10) - -fs.writeFile('out.pdf', canvas.toBuffer(), function (err) { - if (err) throw err - - console.log('created out.pdf') -}) diff --git a/examples/small-svg.js b/examples/small-svg.js deleted file mode 100644 index 97799687e..000000000 --- a/examples/small-svg.js +++ /dev/null @@ -1,25 +0,0 @@ -const fs = require('fs') -const Canvas = require('..') - -const canvas = Canvas.createCanvas(400, 200, 'svg') -const ctx = canvas.getContext('2d') - -let y = 80 -let x = 50 - -ctx.font = '22px Helvetica' -ctx.fillText('node-canvas SVG', x, y) - -ctx.font = '10px Arial' -ctx.fillText('Just a quick example of SVGs with node-canvas', x, (y += 20)) - -ctx.globalAlpha = 0.5 -ctx.fillRect(x, (y += 20), 10, 10) -ctx.fillRect((x += 20), y, 10, 10) -ctx.fillRect((x += 20), y, 10, 10) - -fs.writeFile('out.svg', canvas.toBuffer(), function (err) { - if (err) throw err - - console.log('created out.svg') -}) diff --git a/examples/spark.js b/examples/spark.js deleted file mode 100644 index a369473f4..000000000 --- a/examples/spark.js +++ /dev/null @@ -1,33 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const canvas = Canvas.createCanvas(40, 15) -const ctx = canvas.getContext('2d') - -function spark (ctx, data) { - const len = data.length - const pad = 1 - const width = ctx.canvas.width - const height = ctx.canvas.height - const barWidth = width / len - const max = Math.max.apply(null, data) - - ctx.fillStyle = 'rgba(0,0,255,0.5)' - ctx.strokeStyle = 'red' - ctx.lineWidth = 1 - - data.forEach(function (n, i) { - const x = i * barWidth + pad - const y = height * (n / max) - - ctx.lineTo(x, height - y) - ctx.fillRect(x, height, barWidth - pad, -y) - }) - - ctx.stroke() -} - -spark(ctx, [1, 2, 4, 5, 10, 4, 2, 5, 4, 3, 3, 2]) - -canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'spark.png'))) diff --git a/examples/state.js b/examples/state.js deleted file mode 100644 index ce8eeb6d8..000000000 --- a/examples/state.js +++ /dev/null @@ -1,25 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const canvas = Canvas.createCanvas(150, 150) -const ctx = canvas.getContext('2d') - -ctx.fillRect(0, 0, 150, 150) // Draw a rectangle with default settings -ctx.save() // Save the default state - -ctx.fillStyle = '#09F' // Make changes to the settings -ctx.fillRect(15, 15, 120, 120) // Draw a rectangle with new settings - -ctx.save() // Save the current state -ctx.fillStyle = '#FFF' // Make changes to the settings -ctx.globalAlpha = 0.5 -ctx.fillRect(30, 30, 90, 90) // Draw a rectangle with new settings - -ctx.restore() // Restore previous state -ctx.fillRect(45, 45, 60, 60) // Draw a rectangle with restored settings - -ctx.restore() // Restore original state -ctx.fillRect(60, 60, 30, 30) // Draw a rectangle with restored settings - -canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'state.png'))) diff --git a/examples/text.js b/examples/text.js deleted file mode 100644 index 04fbcdb8b..000000000 --- a/examples/text.js +++ /dev/null @@ -1,44 +0,0 @@ -const fs = require('fs') -const path = require('path') -const Canvas = require('..') - -const canvas = Canvas.createCanvas(200, 200) -const ctx = canvas.getContext('2d') - -ctx.globalAlpha = 0.2 - -ctx.strokeRect(0, 0, 200, 200) -ctx.lineTo(0, 100) -ctx.lineTo(200, 100) -ctx.stroke() - -ctx.beginPath() -ctx.lineTo(100, 0) -ctx.lineTo(100, 200) -ctx.stroke() - -ctx.globalAlpha = 1 -ctx.font = 'normal 40px Impact, serif' - -ctx.rotate(0.5) -ctx.translate(20, -40) - -ctx.lineWidth = 1 -ctx.strokeStyle = '#ddd' -ctx.strokeText('Wahoo', 50, 100) - -ctx.fillStyle = '#000' -ctx.fillText('Wahoo', 49, 99) - -const m = ctx.measureText('Wahoo') - -ctx.strokeStyle = '#f00' - -ctx.strokeRect( - 49 + m.actualBoundingBoxLeft, - 99 - m.actualBoundingBoxAscent, - m.actualBoundingBoxRight - m.actualBoundingBoxLeft, - m.actualBoundingBoxAscent + m.actualBoundingBoxDescent -) - -canvas.createPNGStream().pipe(fs.createWriteStream(path.join(__dirname, 'text.png'))) diff --git a/examples/voronoi.js b/examples/voronoi.js deleted file mode 100644 index 07eecdfbc..000000000 --- a/examples/voronoi.js +++ /dev/null @@ -1,134 +0,0 @@ -const http = require('http') -const Canvas = require('..') - -const canvas = Canvas.createCanvas(1920, 1200) -const ctx = canvas.getContext('2d') - -const voronoiFactory = require('./rhill-voronoi-core-min') - -http.createServer(function (req, res) { - let x, y, v, iHalfedge - - const voronoi = voronoiFactory() - const start = new Date() - const bbox = { xl: 0, xr: canvas.width, yt: 0, yb: canvas.height } - - for (let i = 0; i < 340; i++) { - x = Math.random() * canvas.width - y = Math.random() * canvas.height - voronoi.addSites([{ x: x, y: y }]) - } - - const diagram = voronoi.compute(bbox) - - ctx.beginPath() - ctx.rect(0, 0, canvas.width, canvas.height) - ctx.fillStyle = '#fff' - ctx.fill() - ctx.strokeStyle = 'black' - ctx.stroke() - // voronoi - ctx.strokeStyle = 'rgba(255,255,255,0.5)' - ctx.lineWidth = 4 - // edges - const edges = diagram.edges - const nEdges = edges.length - - const sites = diagram.sites - const nSites = sites.length - for (let iSite = nSites - 1; iSite >= 0; iSite -= 1) { - const site = sites[iSite] - ctx.rect(site.x - 0.5, site.y - 0.5, 1, 1) - - const cell = diagram.cells[diagram.sites[iSite].id] - if (cell !== undefined) { - const halfedges = cell.halfedges - const nHalfedges = halfedges.length - if (nHalfedges < 3) return - let minx = canvas.width - let miny = canvas.height - let maxx = 0 - let maxy = 0 - - v = halfedges[0].getStartpoint() - ctx.beginPath() - ctx.moveTo(v.x, v.y) - - for (iHalfedge = 0; iHalfedge < nHalfedges; iHalfedge++) { - v = halfedges[iHalfedge].getEndpoint() - ctx.lineTo(v.x, v.y) - if (v.x < minx) minx = v.x - if (v.y < miny) miny = v.y - if (v.x > maxx) maxx = v.x - if (v.y > maxy) maxy = v.y - } - - let midx = (maxx + minx) / 2 - let midy = (maxy + miny) / 2 - let R = 0 - - for (iHalfedge = 0; iHalfedge < nHalfedges; iHalfedge++) { - v = halfedges[iHalfedge].getEndpoint() - const dx = v.x - site.x - const dy = v.y - site.y - const newR = Math.sqrt(dx * dx + dy * dy) - if (newR > R) R = newR - } - - midx = site.x - midy = site.y - - const radgrad = ctx.createRadialGradient(midx + R * 0.3, midy - R * 0.3, 0, midx, midy, R) - radgrad.addColorStop(0, '#09760b') - radgrad.addColorStop(1.0, 'black') - ctx.fillStyle = radgrad - ctx.fill() - - const radgrad2 = ctx.createRadialGradient(midx - R * 0.5, midy + R * 0.5, R * 0.1, midx, midy, R) - radgrad2.addColorStop(0, 'rgba(255,255,255,0.5)') - radgrad2.addColorStop(0.04, 'rgba(255,255,255,0.3)') - radgrad2.addColorStop(0.05, 'rgba(255,255,255,0)') - ctx.fillStyle = radgrad2 - ctx.fill() - - const lingrad = ctx.createLinearGradient(minx, site.y, minx + 100, site.y - 20) - lingrad.addColorStop(0.0, 'rgba(255,255,255,0.5)') - lingrad.addColorStop(0.2, 'rgba(255,255,255,0.2)') - lingrad.addColorStop(1.0, 'rgba(255,255,255,0)') - ctx.fillStyle = lingrad - ctx.fill() - } - } - - if (nEdges) { - let edge - - ctx.beginPath() - - for (let iEdge = nEdges - 1; iEdge >= 0; iEdge -= 1) { - edge = edges[iEdge] - v = edge.va - ctx.moveTo(v.x, v.y) - v = edge.vb - ctx.lineTo(v.x, v.y) - } - - ctx.stroke() - } - - canvas.toBuffer(function (err, buf) { - if (err) throw err - - const duration = new Date() - start - console.log('Rendered in %dms', duration) - - res.writeHead(200, { - 'Content-Type': 'image/png', - 'Content-Length': buf.length - }) - - res.end(buf) - }) -}).listen(3000, function () { - console.log('Server running on port 3000') -}) diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 000000000..f18749ad9 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,279 @@ +/* tslint:disable */ +/* eslint-disable */ + +/* auto-generated by NAPI-RS */ + +export const enum LineCap { + Butt = 0, + Round = 1, + Square = 2 +} +export const enum FillRule { + EvenOdd = 0, + NonZero = 1 +} +export const enum PixelFormat { + Rgba32 = 0, + Rgb24 = 1, + A8 = 2, + Rgb16_565 = 3, + A1 = 4, + Rgb30 = 5 +} +export const enum LineJoin { + Bevel = 0, + Miter = 1, + Round = 2 +} +export const enum AliasingMode { + Default = 0, + None = 1, + Gray = 2, + Subpixel = 3 +} +export const enum GlobalCompositeOperation { + Clear = 0, + Copy = 1, + Destination = 2, + SourceOver = 3, + DestinationOver = 4, + SourceIn = 5, + DestinationIn = 6, + SourceOut = 7, + DestinationOut = 8, + SourceAtop = 9, + DestinationAtop = 10, + Xor = 11, + Lighter = 12, + Normal = 13, + Multiply = 14, + Screen = 15, + Overlay = 16, + Darken = 17, + Lighten = 18, + ColorDodge = 19, + ColorBurn = 20, + HardLight = 21, + SoftLight = 22, + Difference = 23, + Exclusion = 24, + Hue = 25, + Saturation = 26, + Color = 27, + Luminosity = 28, + Saturate = 29 +} +export interface JpegConfig { + quality: number + progressive: boolean + chromaSubsampling: boolean +} +export interface PdfConfig { + title?: string + author?: string + subject?: string + keywords?: string + creator?: string + creationDate: number + modDate?: number +} +export interface PngConfig { + compressionLevel: number + filters: PngFilters + palette?: Array + backgroundIndex: number + resolution?: number +} +export function createCanvas(width: number, height: number, kind?: ImageKind | undefined | null): Canvas +export function createImageData(width: number, height?: number | undefined | null, data?: Array | Uint8ClampedArray | Uint16Array | undefined | null): ImageData +export interface DomPoint { + w?: number + x?: number + y?: number + z?: number +} +export const enum ImageKind { + Image = 'Image', + Pdf = 'Pdf', + Svg = 'Svg' +} +export const enum Quality { + Fast = 0, + Good = 1, + Best = 2, + Nearest = 3, + Bilinear = 4 +} +export const enum Repetition { + Repeat = 0, + RepeatX = 1, + RepeatY = 2, + NoRepeat = 3, + None = 4 +} +export const enum TextAlign { + Center = 0, + End = 1, + Left = 2, + Right = 3, + Start = 4 +} +export const enum TextBaseline { + Alphabetic = 0, + Bottom = 1, + Hanging = 2, + Ideographic = 3, + Middle = 4, + Top = 5 +} +export interface TextMetrics { + /** actualBoundingBoxAscent */ + actualBoundingBoxAscent: number + /** actualBoundingBoxDescent */ + actualBoundingBoxDescent: number + /** actualBoundingBoxLeft */ + actualBoundingBoxLeft: number + /** actualBoundingBoxRight */ + actualBoundingBoxRight: number + /** fontBoundingBoxAscent */ + fontBoundingBoxAscent: number + /** fontBoundingBoxDescent */ + fontBoundingBoxDescent: number + width: number +} +export const enum TextDrawingMode { + Path = 0, + Glyph = 1 +} +export class Canvas { + width: number + height: number + stride: number + type: ImageKind + constructor(width: number, height: number, kind?: ImageKind | undefined | null) + toBuffer(mime?: string | undefined | null, config?: PngConfig | JpegConfig | PdfConfig | undefined | null): Buffer + getContext(id: "2d" | "webgl" | "webgl2"): CanvasRenderingContext2d +} +export class CanvasGradient { + constructor() + addColorStop(offset: number, color: string): void +} +export type CanvasRenderingContext2d = CanvasRenderingContext2D +export class CanvasRenderingContext2D { + patternQuality: Quality + quality: Quality + textDrawingMode: TextDrawingMode + antialias: AliasingMode + lineWidth: number + lineCap: LineCap + lineJoin: LineJoin + miterLimit: number + lineDashOffset: number + font: string + textAlign: TextAlign + textBaseline: TextBaseline + shadowBlur: number + shadowColor: string + shadowOffsetX: number + shadowOffsetY: number + globalAlpha: number + globalCompositeOperation: GlobalCompositeOperation + imageSmoothingEnabled: boolean + fillStyle?: string + strokeStyle?: string + constructor(canvas: Canvas) + get currentTransform(): DomMatrix + set currentTransform(newVal: DomMatrix) + get canvas(): Canvas + set canvas(newVal: Canvas) + clearRect(x: number, y: number, width: number, height: number): void + fillRect(x: number, y: number, width: number, height: number): void + strokeRect(x: number, y: number, width: number, height: number): void +} +export class DomMatrix { + translate(tx?: number | undefined | null, ty?: number | undefined | null, tz?: number | undefined | null): void + scale3D(scale?: number | undefined | null, ox?: number | undefined | null, oy?: number | undefined | null, oz?: number | undefined | null): void + scale(sx?: number | undefined | null, sy?: number | undefined | null, sz?: number | undefined | null, ox?: number | undefined | null, oy?: number | undefined | null, oz?: number | undefined | null): void + rotateFromVector(x?: number | undefined | null, y?: number | undefined | null): void + rotate(rx: number, ry?: number | undefined | null, rz?: number | undefined | null): void + rotateAxisAngle(x: number | undefined | null, y: number | undefined | null, z: number | undefined | null, angle: number): void + skewX(sx?: number | undefined | null): void + skewY(sy?: number | undefined | null): void + flipX(): void + flipY(): void + inverse(): void + setMatrixValue(transformList: Array): void + + + + + + + + + constructor(init?: Array | undefined | null) + static fromArray(init: Array): DomMatrix + static fromString(init: string): DomMatrix + get values(): number[] + setValues(values: Array): void + transformPoint(orig: DomPoint): DomPoint + toFloat32Array(): Float32Array + toFloat64Array(): Float64Array + get isIdentity(): boolean + get is2D(): boolean + get m11(): number + set m11(newVal: number) + get m12(): number + set m12(newVal: number) + get m13(): number + set m13(newVal: number) + get m14(): number + set m14(newVal: number) + get m21(): number + set m21(newVal: number) + get m22(): number + set m22(newVal: number) + get m23(): number + set m23(newVal: number) + get m24(): number + set m24(newVal: number) + get m31(): number + set m31(newVal: number) + get m32(): number + set m32(newVal: number) + get m33(): number + set m33(newVal: number) + get m34(): number + set m34(newVal: number) + get m41(): number + set m41(newVal: number) + get m42(): number + set m42(newVal: number) + get m43(): number + set m43(newVal: number) + get m44(): number + set m44(newVal: number) +} +export class ImageData { + width: number + height: number + constructor(width: number, height: number) + static withData(data: Uint8ClampedArray, width: number, height?: number | undefined | null): ImageData + get data(): Uint8ClampedArray + set data(data: Uint8ClampedArray) +} +export class PngFilters { } +export class Image { + dataMode: ImageMode + width: number + height: number + complete: boolean + naturalWidth: number + naturalHeight: number + get src(): string | Buffer + set src(val: string | Buffer) +} +export class ImageMode { } + +export type DOMMatrix = DomMatrix; +export type DOMPoint = DomPoint; \ No newline at end of file diff --git a/index.js b/index.js index f605077f3..c34a9585d 100644 --- a/index.js +++ b/index.js @@ -1,94 +1,280 @@ -const Canvas = require('./lib/canvas') -const Image = require('./lib/image') -const CanvasRenderingContext2D = require('./lib/context2d') -const CanvasPattern = require('./lib/pattern') -const parseFont = require('./lib/parse-font') -const packageJson = require('./package.json') -const bindings = require('./lib/bindings') -const fs = require('fs') -const PNGStream = require('./lib/pngstream') -const PDFStream = require('./lib/pdfstream') -const JPEGStream = require('./lib/jpegstream') -const { DOMPoint, DOMMatrix } = require('./lib/DOMMatrix') +/* tslint:disable */ +/* eslint-disable */ +/* prettier-ignore */ -function createCanvas (width, height, type) { - return new Canvas(width, height, type) -} - -function createImageData (array, width, height) { - return new bindings.ImageData(array, width, height) -} +/* auto-generated by NAPI-RS */ -function loadImage (src) { - return new Promise((resolve, reject) => { - const image = new Image() +const { existsSync, readFileSync } = require('fs') +const { join } = require('path') - function cleanup () { - image.onload = null - image.onerror = null - } +const { platform, arch } = process - image.onload = () => { cleanup(); resolve(image) } - image.onerror = (err) => { cleanup(); reject(err) } +let nativeBinding = null +let localFileExisted = false +let loadError = null - image.src = src - }) +function isMusl() { + // For Node 10 + if (!process.report || typeof process.report.getReport !== 'function') { + try { + const lddPath = require('child_process').execSync('which ldd').toString().trim() + return readFileSync(lddPath, 'utf8').includes('musl') + } catch (e) { + return true + } + } else { + const { glibcVersionRuntime } = process.report.getReport().header + return !glibcVersionRuntime + } } -/** - * Resolve paths for registerFont. Must be called *before* creating a Canvas - * instance. - * @param src {string} Path to font file. - * @param fontFace {{family: string, weight?: string, style?: string}} Object - * specifying font information. `weight` and `style` default to `"normal"`. - */ -function registerFont (src, fontFace) { - // TODO this doesn't need to be on Canvas; it should just be a static method - // of `bindings`. - return Canvas._registerFont(fs.realpathSync(src), fontFace) +switch (platform) { + case 'android': + switch (arch) { + case 'arm64': + localFileExisted = existsSync(join(__dirname, 'canvas.android-arm64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.android-arm64.node') + } else { + nativeBinding = require('canvas-android-arm64') + } + } catch (e) { + loadError = e + } + break + case 'arm': + localFileExisted = existsSync(join(__dirname, 'canvas.android-arm-eabi.node')) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.android-arm-eabi.node') + } else { + nativeBinding = require('canvas-android-arm-eabi') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Android ${arch}`) + } + break + case 'win32': + switch (arch) { + case 'x64': + localFileExisted = existsSync( + join(__dirname, 'canvas.win32-x64-msvc.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.win32-x64-msvc.node') + } else { + nativeBinding = require('canvas-win32-x64-msvc') + } + } catch (e) { + loadError = e + } + break + case 'ia32': + localFileExisted = existsSync( + join(__dirname, 'canvas.win32-ia32-msvc.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.win32-ia32-msvc.node') + } else { + nativeBinding = require('canvas-win32-ia32-msvc') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync( + join(__dirname, 'canvas.win32-arm64-msvc.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.win32-arm64-msvc.node') + } else { + nativeBinding = require('canvas-win32-arm64-msvc') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Windows: ${arch}`) + } + break + case 'darwin': + localFileExisted = existsSync(join(__dirname, 'canvas.darwin-universal.node')) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.darwin-universal.node') + } else { + nativeBinding = require('canvas-darwin-universal') + } + break + } catch {} + switch (arch) { + case 'x64': + localFileExisted = existsSync(join(__dirname, 'canvas.darwin-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.darwin-x64.node') + } else { + nativeBinding = require('canvas-darwin-x64') + } + } catch (e) { + loadError = e + } + break + case 'arm64': + localFileExisted = existsSync( + join(__dirname, 'canvas.darwin-arm64.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.darwin-arm64.node') + } else { + nativeBinding = require('canvas-darwin-arm64') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on macOS: ${arch}`) + } + break + case 'freebsd': + if (arch !== 'x64') { + throw new Error(`Unsupported architecture on FreeBSD: ${arch}`) + } + localFileExisted = existsSync(join(__dirname, 'canvas.freebsd-x64.node')) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.freebsd-x64.node') + } else { + nativeBinding = require('canvas-freebsd-x64') + } + } catch (e) { + loadError = e + } + break + case 'linux': + switch (arch) { + case 'x64': + if (isMusl()) { + localFileExisted = existsSync( + join(__dirname, 'canvas.linux-x64-musl.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.linux-x64-musl.node') + } else { + nativeBinding = require('canvas-linux-x64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync( + join(__dirname, 'canvas.linux-x64-gnu.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.linux-x64-gnu.node') + } else { + nativeBinding = require('canvas-linux-x64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm64': + if (isMusl()) { + localFileExisted = existsSync( + join(__dirname, 'canvas.linux-arm64-musl.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.linux-arm64-musl.node') + } else { + nativeBinding = require('canvas-linux-arm64-musl') + } + } catch (e) { + loadError = e + } + } else { + localFileExisted = existsSync( + join(__dirname, 'canvas.linux-arm64-gnu.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.linux-arm64-gnu.node') + } else { + nativeBinding = require('canvas-linux-arm64-gnu') + } + } catch (e) { + loadError = e + } + } + break + case 'arm': + localFileExisted = existsSync( + join(__dirname, 'canvas.linux-arm-gnueabihf.node') + ) + try { + if (localFileExisted) { + nativeBinding = require('./canvas.linux-arm-gnueabihf.node') + } else { + nativeBinding = require('canvas-linux-arm-gnueabihf') + } + } catch (e) { + loadError = e + } + break + default: + throw new Error(`Unsupported architecture on Linux: ${arch}`) + } + break + default: + throw new Error(`Unsupported OS: ${platform}, architecture: ${arch}`) } -/** - * Unload all fonts from pango to free up memory - */ -function deregisterAllFonts () { - return Canvas._deregisterAllFonts() +if (!nativeBinding) { + if (loadError) { + throw loadError + } + throw new Error(`Failed to load native binding`) } -exports.Canvas = Canvas -exports.Context2d = CanvasRenderingContext2D // Legacy/compat export -exports.CanvasRenderingContext2D = CanvasRenderingContext2D -exports.CanvasGradient = bindings.CanvasGradient -exports.CanvasPattern = CanvasPattern -exports.Image = Image -exports.ImageData = bindings.ImageData -exports.PNGStream = PNGStream -exports.PDFStream = PDFStream -exports.JPEGStream = JPEGStream -exports.DOMMatrix = DOMMatrix -exports.DOMPoint = DOMPoint - -exports.registerFont = registerFont -exports.deregisterAllFonts = deregisterAllFonts -exports.parseFont = parseFont - -exports.createCanvas = createCanvas -exports.createImageData = createImageData -exports.loadImage = loadImage +const { Canvas, LineCap, FillRule, PixelFormat, CanvasGradient, LineJoin, AliasingMode, GlobalCompositeOperation, CanvasRenderingContext2D, createCanvas, createImageData, DomMatrix, ImageData, PngFilters, Image, ImageKind, ImageMode, Quality, Repetition, TextAlign, TextBaseline, TextDrawingMode } = nativeBinding -exports.backends = bindings.Backends +module.exports.Canvas = Canvas +module.exports.LineCap = LineCap +module.exports.FillRule = FillRule +module.exports.PixelFormat = PixelFormat +module.exports.CanvasGradient = CanvasGradient +module.exports.LineJoin = LineJoin +module.exports.AliasingMode = AliasingMode +module.exports.GlobalCompositeOperation = GlobalCompositeOperation +module.exports.CanvasRenderingContext2D = CanvasRenderingContext2D +module.exports.createCanvas = createCanvas +module.exports.createImageData = createImageData +module.exports.DomMatrix = DomMatrix +module.exports.ImageData = ImageData +module.exports.PngFilters = PngFilters +module.exports.Image = Image +module.exports.ImageKind = ImageKind +module.exports.ImageMode = ImageMode +module.exports.Quality = Quality +module.exports.Repetition = Repetition +module.exports.TextAlign = TextAlign +module.exports.TextBaseline = TextBaseline +module.exports.TextDrawingMode = TextDrawingMode -/** Library version. */ -exports.version = packageJson.version -/** Cairo version. */ -exports.cairoVersion = bindings.cairoVersion -/** jpeglib version. */ -exports.jpegVersion = bindings.jpegVersion -/** gif_lib version. */ -exports.gifVersion = bindings.gifVersion ? bindings.gifVersion.replace(/[^.\d]/g, '') : undefined -/** freetype version. */ -exports.freetypeVersion = bindings.freetypeVersion -/** rsvg version. */ -exports.rsvgVersion = bindings.rsvgVersion -/** pango version. */ -exports.pangoVersion = bindings.pangoVersion +module.exports.DOMMatrix = DomMatrix; \ No newline at end of file diff --git a/lib/DOMMatrix.js b/lib/DOMMatrix.js deleted file mode 100644 index 479e7e6e5..000000000 --- a/lib/DOMMatrix.js +++ /dev/null @@ -1,620 +0,0 @@ -'use strict' - -const util = require('util') - -// DOMMatrix per https://drafts.fxtf.org/geometry/#DOMMatrix - -class DOMPoint { - constructor (x, y, z, w) { - if (typeof x === 'object' && x !== null) { - w = x.w - z = x.z - y = x.y - x = x.x - } - this.x = typeof x === 'number' ? x : 0 - this.y = typeof y === 'number' ? y : 0 - this.z = typeof z === 'number' ? z : 0 - this.w = typeof w === 'number' ? w : 1 - } -} - -// Constants to index into _values (col-major) -const M11 = 0; const M12 = 1; const M13 = 2; const M14 = 3 -const M21 = 4; const M22 = 5; const M23 = 6; const M24 = 7 -const M31 = 8; const M32 = 9; const M33 = 10; const M34 = 11 -const M41 = 12; const M42 = 13; const M43 = 14; const M44 = 15 - -const DEGREE_PER_RAD = 180 / Math.PI -const RAD_PER_DEGREE = Math.PI / 180 - -function parseMatrix (init) { - let parsed = init.replace('matrix(', '') - parsed = parsed.split(',', 7) // 6 + 1 to handle too many params - if (parsed.length !== 6) throw new Error(`Failed to parse ${init}`) - parsed = parsed.map(parseFloat) - return [ - parsed[0], parsed[1], 0, 0, - parsed[2], parsed[3], 0, 0, - 0, 0, 1, 0, - parsed[4], parsed[5], 0, 1 - ] -} - -function parseMatrix3d (init) { - let parsed = init.replace('matrix3d(', '') - parsed = parsed.split(',', 17) // 16 + 1 to handle too many params - if (parsed.length !== 16) throw new Error(`Failed to parse ${init}`) - return parsed.map(parseFloat) -} - -function parseTransform (tform) { - const type = tform.split('(', 1)[0] - switch (type) { - case 'matrix': - return parseMatrix(tform) - case 'matrix3d': - return parseMatrix3d(tform) - // TODO This is supposed to support any CSS transform value. - default: - throw new Error(`${type} parsing not implemented`) - } -} - -class DOMMatrix { - constructor (init) { - this._is2D = true - this._values = new Float64Array([ - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ]) - - let i - - if (typeof init === 'string') { // parse CSS transformList - if (init === '') return // default identity matrix - const tforms = init.split(/\)\s+/, 20).map(parseTransform) - if (tforms.length === 0) return - init = tforms[0] - for (i = 1; i < tforms.length; i++) init = multiply(tforms[i], init) - } - - i = 0 - if (init && init.length === 6) { - setNumber2D(this, M11, init[i++]) - setNumber2D(this, M12, init[i++]) - setNumber2D(this, M21, init[i++]) - setNumber2D(this, M22, init[i++]) - setNumber2D(this, M41, init[i++]) - setNumber2D(this, M42, init[i++]) - } else if (init && init.length === 16) { - setNumber2D(this, M11, init[i++]) - setNumber2D(this, M12, init[i++]) - setNumber3D(this, M13, init[i++]) - setNumber3D(this, M14, init[i++]) - setNumber2D(this, M21, init[i++]) - setNumber2D(this, M22, init[i++]) - setNumber3D(this, M23, init[i++]) - setNumber3D(this, M24, init[i++]) - setNumber3D(this, M31, init[i++]) - setNumber3D(this, M32, init[i++]) - setNumber3D(this, M33, init[i++]) - setNumber3D(this, M34, init[i++]) - setNumber2D(this, M41, init[i++]) - setNumber2D(this, M42, init[i++]) - setNumber3D(this, M43, init[i++]) - setNumber3D(this, M44, init[i]) - } else if (init !== undefined) { - throw new TypeError('Expected string or array.') - } - } - - toString () { - return this.is2D - ? `matrix(${this.a}, ${this.b}, ${this.c}, ${this.d}, ${this.e}, ${this.f})` - : `matrix3d(${this._values.join(', ')})` - } - - multiply (other) { - return newInstance(this._values).multiplySelf(other) - } - - multiplySelf (other) { - this._values = multiply(other._values, this._values) - if (!other.is2D) this._is2D = false - return this - } - - preMultiplySelf (other) { - this._values = multiply(this._values, other._values) - if (!other.is2D) this._is2D = false - return this - } - - translate (tx, ty, tz) { - return newInstance(this._values).translateSelf(tx, ty, tz) - } - - translateSelf (tx, ty, tz) { - if (typeof tx !== 'number') tx = 0 - if (typeof ty !== 'number') ty = 0 - if (typeof tz !== 'number') tz = 0 - this._values = multiply([ - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - tx, ty, tz, 1 - ], this._values) - if (tz !== 0) this._is2D = false - return this - } - - scale (scaleX, scaleY, scaleZ, originX, originY, originZ) { - return newInstance(this._values).scaleSelf(scaleX, scaleY, scaleZ, originX, originY, originZ) - } - - scale3d (scale, originX, originY, originZ) { - return newInstance(this._values).scale3dSelf(scale, originX, originY, originZ) - } - - scale3dSelf (scale, originX, originY, originZ) { - return this.scaleSelf(scale, scale, scale, originX, originY, originZ) - } - - scaleSelf (scaleX, scaleY, scaleZ, originX, originY, originZ) { - // Not redundant with translate's checks because we need to negate the values later. - if (typeof originX !== 'number') originX = 0 - if (typeof originY !== 'number') originY = 0 - if (typeof originZ !== 'number') originZ = 0 - this.translateSelf(originX, originY, originZ) - if (typeof scaleX !== 'number') scaleX = 1 - if (typeof scaleY !== 'number') scaleY = scaleX - if (typeof scaleZ !== 'number') scaleZ = 1 - this._values = multiply([ - scaleX, 0, 0, 0, - 0, scaleY, 0, 0, - 0, 0, scaleZ, 0, - 0, 0, 0, 1 - ], this._values) - this.translateSelf(-originX, -originY, -originZ) - if (scaleZ !== 1 || originZ !== 0) this._is2D = false - return this - } - - rotateFromVector (x, y) { - return newInstance(this._values).rotateFromVectorSelf(x, y) - } - - rotateFromVectorSelf (x, y) { - if (typeof x !== 'number') x = 0 - if (typeof y !== 'number') y = 0 - const theta = (x === 0 && y === 0) ? 0 : Math.atan2(y, x) * DEGREE_PER_RAD - return this.rotateSelf(theta) - } - - rotate (rotX, rotY, rotZ) { - return newInstance(this._values).rotateSelf(rotX, rotY, rotZ) - } - - rotateSelf (rotX, rotY, rotZ) { - if (rotY === undefined && rotZ === undefined) { - rotZ = rotX - rotX = rotY = 0 - } - if (typeof rotY !== 'number') rotY = 0 - if (typeof rotZ !== 'number') rotZ = 0 - if (rotX !== 0 || rotY !== 0) this._is2D = false - rotX *= RAD_PER_DEGREE - rotY *= RAD_PER_DEGREE - rotZ *= RAD_PER_DEGREE - let c, s - c = Math.cos(rotZ) - s = Math.sin(rotZ) - this._values = multiply([ - c, s, 0, 0, - -s, c, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ], this._values) - c = Math.cos(rotY) - s = Math.sin(rotY) - this._values = multiply([ - c, 0, -s, 0, - 0, 1, 0, 0, - s, 0, c, 0, - 0, 0, 0, 1 - ], this._values) - c = Math.cos(rotX) - s = Math.sin(rotX) - this._values = multiply([ - 1, 0, 0, 0, - 0, c, s, 0, - 0, -s, c, 0, - 0, 0, 0, 1 - ], this._values) - return this - } - - rotateAxisAngle (x, y, z, angle) { - return newInstance(this._values).rotateAxisAngleSelf(x, y, z, angle) - } - - rotateAxisAngleSelf (x, y, z, angle) { - if (typeof x !== 'number') x = 0 - if (typeof y !== 'number') y = 0 - if (typeof z !== 'number') z = 0 - // Normalize axis - const length = Math.sqrt(x * x + y * y + z * z) - if (length === 0) return this - if (length !== 1) { - x /= length - y /= length - z /= length - } - angle *= RAD_PER_DEGREE - const c = Math.cos(angle) - const s = Math.sin(angle) - const t = 1 - c - const tx = t * x - const ty = t * y - // NB: This is the generic transform. If the axis is a major axis, there are - // faster transforms. - this._values = multiply([ - tx * x + c, tx * y + s * z, tx * z - s * y, 0, - tx * y - s * z, ty * y + c, ty * z + s * x, 0, - tx * z + s * y, ty * z - s * x, t * z * z + c, 0, - 0, 0, 0, 1 - ], this._values) - if (x !== 0 || y !== 0) this._is2D = false - return this - } - - skewX (sx) { - return newInstance(this._values).skewXSelf(sx) - } - - skewXSelf (sx) { - if (typeof sx !== 'number') return this - const t = Math.tan(sx * RAD_PER_DEGREE) - this._values = multiply([ - 1, 0, 0, 0, - t, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ], this._values) - return this - } - - skewY (sy) { - return newInstance(this._values).skewYSelf(sy) - } - - skewYSelf (sy) { - if (typeof sy !== 'number') return this - const t = Math.tan(sy * RAD_PER_DEGREE) - this._values = multiply([ - 1, t, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ], this._values) - return this - } - - flipX () { - return newInstance(multiply([ - -1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ], this._values)) - } - - flipY () { - return newInstance(multiply([ - 1, 0, 0, 0, - 0, -1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ], this._values)) - } - - inverse () { - return newInstance(this._values).invertSelf() - } - - invertSelf () { - const m = this._values - const inv = m.map(v => 0) - - inv[0] = m[5] * m[10] * m[15] - - m[5] * m[11] * m[14] - - m[9] * m[6] * m[15] + - m[9] * m[7] * m[14] + - m[13] * m[6] * m[11] - - m[13] * m[7] * m[10] - - inv[4] = -m[4] * m[10] * m[15] + - m[4] * m[11] * m[14] + - m[8] * m[6] * m[15] - - m[8] * m[7] * m[14] - - m[12] * m[6] * m[11] + - m[12] * m[7] * m[10] - - inv[8] = m[4] * m[9] * m[15] - - m[4] * m[11] * m[13] - - m[8] * m[5] * m[15] + - m[8] * m[7] * m[13] + - m[12] * m[5] * m[11] - - m[12] * m[7] * m[9] - - inv[12] = -m[4] * m[9] * m[14] + - m[4] * m[10] * m[13] + - m[8] * m[5] * m[14] - - m[8] * m[6] * m[13] - - m[12] * m[5] * m[10] + - m[12] * m[6] * m[9] - - // If the determinant is zero, this matrix cannot be inverted, and all - // values should be set to NaN, with the is2D flag set to false. - - const det = m[0] * inv[0] + m[1] * inv[4] + m[2] * inv[8] + m[3] * inv[12] - - if (det === 0) { - this._values = m.map(v => NaN) - this._is2D = false - return this - } - - inv[1] = -m[1] * m[10] * m[15] + - m[1] * m[11] * m[14] + - m[9] * m[2] * m[15] - - m[9] * m[3] * m[14] - - m[13] * m[2] * m[11] + - m[13] * m[3] * m[10] - - inv[5] = m[0] * m[10] * m[15] - - m[0] * m[11] * m[14] - - m[8] * m[2] * m[15] + - m[8] * m[3] * m[14] + - m[12] * m[2] * m[11] - - m[12] * m[3] * m[10] - - inv[9] = -m[0] * m[9] * m[15] + - m[0] * m[11] * m[13] + - m[8] * m[1] * m[15] - - m[8] * m[3] * m[13] - - m[12] * m[1] * m[11] + - m[12] * m[3] * m[9] - - inv[13] = m[0] * m[9] * m[14] - - m[0] * m[10] * m[13] - - m[8] * m[1] * m[14] + - m[8] * m[2] * m[13] + - m[12] * m[1] * m[10] - - m[12] * m[2] * m[9] - - inv[2] = m[1] * m[6] * m[15] - - m[1] * m[7] * m[14] - - m[5] * m[2] * m[15] + - m[5] * m[3] * m[14] + - m[13] * m[2] * m[7] - - m[13] * m[3] * m[6] - - inv[6] = -m[0] * m[6] * m[15] + - m[0] * m[7] * m[14] + - m[4] * m[2] * m[15] - - m[4] * m[3] * m[14] - - m[12] * m[2] * m[7] + - m[12] * m[3] * m[6] - - inv[10] = m[0] * m[5] * m[15] - - m[0] * m[7] * m[13] - - m[4] * m[1] * m[15] + - m[4] * m[3] * m[13] + - m[12] * m[1] * m[7] - - m[12] * m[3] * m[5] - - inv[14] = -m[0] * m[5] * m[14] + - m[0] * m[6] * m[13] + - m[4] * m[1] * m[14] - - m[4] * m[2] * m[13] - - m[12] * m[1] * m[6] + - m[12] * m[2] * m[5] - - inv[3] = -m[1] * m[6] * m[11] + - m[1] * m[7] * m[10] + - m[5] * m[2] * m[11] - - m[5] * m[3] * m[10] - - m[9] * m[2] * m[7] + - m[9] * m[3] * m[6] - - inv[7] = m[0] * m[6] * m[11] - - m[0] * m[7] * m[10] - - m[4] * m[2] * m[11] + - m[4] * m[3] * m[10] + - m[8] * m[2] * m[7] - - m[8] * m[3] * m[6] - - inv[11] = -m[0] * m[5] * m[11] + - m[0] * m[7] * m[9] + - m[4] * m[1] * m[11] - - m[4] * m[3] * m[9] - - m[8] * m[1] * m[7] + - m[8] * m[3] * m[5] - - inv[15] = m[0] * m[5] * m[10] - - m[0] * m[6] * m[9] - - m[4] * m[1] * m[10] + - m[4] * m[2] * m[9] + - m[8] * m[1] * m[6] - - m[8] * m[2] * m[5] - - inv.forEach((v, i) => { inv[i] = v / det }) - this._values = inv - return this - } - - setMatrixValue (transformList) { - const temp = new DOMMatrix(transformList) - this._values = temp._values - this._is2D = temp._is2D - return this - } - - transformPoint (point) { - point = new DOMPoint(point) - const x = point.x - const y = point.y - const z = point.z - const w = point.w - const values = this._values - const nx = values[M11] * x + values[M21] * y + values[M31] * z + values[M41] * w - const ny = values[M12] * x + values[M22] * y + values[M32] * z + values[M42] * w - const nz = values[M13] * x + values[M23] * y + values[M33] * z + values[M43] * w - const nw = values[M14] * x + values[M24] * y + values[M34] * z + values[M44] * w - return new DOMPoint(nx, ny, nz, nw) - } - - toFloat32Array () { - return Float32Array.from(this._values) - } - - toFloat64Array () { - return this._values.slice(0) - } - - static fromMatrix (init) { - if (!(init instanceof DOMMatrix)) throw new TypeError('Expected DOMMatrix') - return new DOMMatrix(init._values) - } - - static fromFloat32Array (init) { - if (!(init instanceof Float32Array)) throw new TypeError('Expected Float32Array') - return new DOMMatrix(init) - } - - static fromFloat64Array (init) { - if (!(init instanceof Float64Array)) throw new TypeError('Expected Float64Array') - return new DOMMatrix(init) - } - - [util.inspect.custom || 'inspect'] (depth, options) { - if (depth < 0) return '[DOMMatrix]' - - return `DOMMatrix [ - a: ${this.a} - b: ${this.b} - c: ${this.c} - d: ${this.d} - e: ${this.e} - f: ${this.f} - m11: ${this.m11} - m12: ${this.m12} - m13: ${this.m13} - m14: ${this.m14} - m21: ${this.m21} - m22: ${this.m22} - m23: ${this.m23} - m23: ${this.m23} - m31: ${this.m31} - m32: ${this.m32} - m33: ${this.m33} - m34: ${this.m34} - m41: ${this.m41} - m42: ${this.m42} - m43: ${this.m43} - m44: ${this.m44} - is2D: ${this.is2D} - isIdentity: ${this.isIdentity} ]` - } -} - -/** - * Checks that `value` is a number and sets the value. - */ -function setNumber2D (receiver, index, value) { - if (typeof value !== 'number') throw new TypeError('Expected number') - return (receiver._values[index] = value) -} - -/** - * Checks that `value` is a number, sets `_is2D = false` if necessary and sets - * the value. - */ -function setNumber3D (receiver, index, value) { - if (typeof value !== 'number') throw new TypeError('Expected number') - if (index === M33 || index === M44) { - if (value !== 1) receiver._is2D = false - } else if (value !== 0) receiver._is2D = false - return (receiver._values[index] = value) -} - -Object.defineProperties(DOMMatrix.prototype, { - m11: { get () { return this._values[M11] }, set (v) { return setNumber2D(this, M11, v) } }, - m12: { get () { return this._values[M12] }, set (v) { return setNumber2D(this, M12, v) } }, - m13: { get () { return this._values[M13] }, set (v) { return setNumber3D(this, M13, v) } }, - m14: { get () { return this._values[M14] }, set (v) { return setNumber3D(this, M14, v) } }, - m21: { get () { return this._values[M21] }, set (v) { return setNumber2D(this, M21, v) } }, - m22: { get () { return this._values[M22] }, set (v) { return setNumber2D(this, M22, v) } }, - m23: { get () { return this._values[M23] }, set (v) { return setNumber3D(this, M23, v) } }, - m24: { get () { return this._values[M24] }, set (v) { return setNumber3D(this, M24, v) } }, - m31: { get () { return this._values[M31] }, set (v) { return setNumber3D(this, M31, v) } }, - m32: { get () { return this._values[M32] }, set (v) { return setNumber3D(this, M32, v) } }, - m33: { get () { return this._values[M33] }, set (v) { return setNumber3D(this, M33, v) } }, - m34: { get () { return this._values[M34] }, set (v) { return setNumber3D(this, M34, v) } }, - m41: { get () { return this._values[M41] }, set (v) { return setNumber2D(this, M41, v) } }, - m42: { get () { return this._values[M42] }, set (v) { return setNumber2D(this, M42, v) } }, - m43: { get () { return this._values[M43] }, set (v) { return setNumber3D(this, M43, v) } }, - m44: { get () { return this._values[M44] }, set (v) { return setNumber3D(this, M44, v) } }, - - a: { get () { return this.m11 }, set (v) { return (this.m11 = v) } }, - b: { get () { return this.m12 }, set (v) { return (this.m12 = v) } }, - c: { get () { return this.m21 }, set (v) { return (this.m21 = v) } }, - d: { get () { return this.m22 }, set (v) { return (this.m22 = v) } }, - e: { get () { return this.m41 }, set (v) { return (this.m41 = v) } }, - f: { get () { return this.m42 }, set (v) { return (this.m42 = v) } }, - - is2D: { get () { return this._is2D } }, // read-only - - isIdentity: { - get () { - const values = this._values - return (values[M11] === 1 && values[M12] === 0 && values[M13] === 0 && values[M14] === 0 && - values[M21] === 0 && values[M22] === 1 && values[M23] === 0 && values[M24] === 0 && - values[M31] === 0 && values[M32] === 0 && values[M33] === 1 && values[M34] === 0 && - values[M41] === 0 && values[M42] === 0 && values[M43] === 0 && values[M44] === 1) - } - } -}) - -/** - * Instantiates a DOMMatrix, bypassing the constructor. - * @param {Float64Array} values Value to assign to `_values`. This is assigned - * without copying (okay because all usages are followed by a multiply). - */ -function newInstance (values) { - const instance = Object.create(DOMMatrix.prototype) - instance.constructor = DOMMatrix - instance._is2D = true - instance._values = values - return instance -} - -function multiply (A, B) { - const dest = new Float64Array(16) - for (let i = 0; i < 4; i++) { - for (let j = 0; j < 4; j++) { - let sum = 0 - for (let k = 0; k < 4; k++) { - sum += A[i * 4 + k] * B[k * 4 + j] - } - dest[i * 4 + j] = sum - } - } - return dest -} - -module.exports = { DOMMatrix, DOMPoint } diff --git a/lib/bindings.js b/lib/bindings.js deleted file mode 100644 index 40cef3c69..000000000 --- a/lib/bindings.js +++ /dev/null @@ -1,43 +0,0 @@ -'use strict' - -const bindings = require('../build/Release/canvas.node') - -module.exports = bindings - -Object.defineProperty(bindings.Canvas.prototype, Symbol.toStringTag, { - value: 'HTMLCanvasElement', - configurable: true -}) - -Object.defineProperty(bindings.Image.prototype, Symbol.toStringTag, { - value: 'HTMLImageElement', - configurable: true -}) - -bindings.ImageData.prototype.toString = function () { - return '[object ImageData]' -} - -Object.defineProperty(bindings.ImageData.prototype, Symbol.toStringTag, { - value: 'ImageData', - configurable: true -}) - -bindings.CanvasGradient.prototype.toString = function () { - return '[object CanvasGradient]' -} - -Object.defineProperty(bindings.CanvasGradient.prototype, Symbol.toStringTag, { - value: 'CanvasGradient', - configurable: true -}) - -Object.defineProperty(bindings.CanvasPattern.prototype, Symbol.toStringTag, { - value: 'CanvasPattern', - configurable: true -}) - -Object.defineProperty(bindings.CanvasRenderingContext2d.prototype, Symbol.toStringTag, { - value: 'CanvasRenderingContext2d', - configurable: true -}) diff --git a/lib/canvas.js b/lib/canvas.js deleted file mode 100644 index 03fa1a959..000000000 --- a/lib/canvas.js +++ /dev/null @@ -1,113 +0,0 @@ -'use strict' - -/*! - * Canvas - * Copyright (c) 2010 LearnBoost - * MIT Licensed - */ - -const bindings = require('./bindings') -const Canvas = module.exports = bindings.Canvas -const Context2d = require('./context2d') -const PNGStream = require('./pngstream') -const PDFStream = require('./pdfstream') -const JPEGStream = require('./jpegstream') -const FORMATS = ['image/png', 'image/jpeg'] -const util = require('util') - -// TODO || is for Node.js pre-v6.6.0 -Canvas.prototype[util.inspect.custom || 'inspect'] = function () { - return `[Canvas ${this.width}x${this.height}]` -} - -Canvas.prototype.getContext = function (contextType, contextAttributes) { - if (contextType == '2d') { - const ctx = this._context2d || (this._context2d = new Context2d(this, contextAttributes)) - this.context = ctx - ctx.canvas = this - return ctx - } -} - -Canvas.prototype.pngStream = -Canvas.prototype.createPNGStream = function (options) { - return new PNGStream(this, options) -} - -Canvas.prototype.pdfStream = -Canvas.prototype.createPDFStream = function (options) { - return new PDFStream(this, options) -} - -Canvas.prototype.jpegStream = -Canvas.prototype.createJPEGStream = function (options) { - return new JPEGStream(this, options) -} - -Canvas.prototype.toDataURL = function (a1, a2, a3) { - // valid arg patterns (args -> [type, opts, fn]): - // [] -> ['image/png', null, null] - // [qual] -> ['image/png', null, null] - // [undefined] -> ['image/png', null, null] - // ['image/png'] -> ['image/png', null, null] - // ['image/png', qual] -> ['image/png', null, null] - // [fn] -> ['image/png', null, fn] - // [type, fn] -> [type, null, fn] - // [undefined, fn] -> ['image/png', null, fn] - // ['image/png', qual, fn] -> ['image/png', null, fn] - // ['image/jpeg', fn] -> ['image/jpeg', null, fn] - // ['image/jpeg', opts, fn] -> ['image/jpeg', opts, fn] - // ['image/jpeg', qual, fn] -> ['image/jpeg', {quality: qual}, fn] - // ['image/jpeg', undefined, fn] -> ['image/jpeg', null, fn] - // ['image/jpeg'] -> ['image/jpeg', null, fn] - // ['image/jpeg', opts] -> ['image/jpeg', opts, fn] - // ['image/jpeg', qual] -> ['image/jpeg', {quality: qual}, fn] - - let type = 'image/png' - let opts = {} - let fn - - if (typeof a1 === 'function') { - fn = a1 - } else { - if (typeof a1 === 'string' && FORMATS.includes(a1.toLowerCase())) { - type = a1.toLowerCase() - } - - if (typeof a2 === 'function') { - fn = a2 - } else { - if (typeof a2 === 'object') { - opts = a2 - } else if (typeof a2 === 'number') { - opts = { quality: Math.max(0, Math.min(1, a2)) } - } - - if (typeof a3 === 'function') { - fn = a3 - } else if (undefined !== a3) { - throw new TypeError(`${typeof a3} is not a function`) - } - } - } - - if (this.width === 0 || this.height === 0) { - // Per spec, if the bitmap has no pixels, return this string: - const str = 'data:,' - if (fn) { - setTimeout(() => fn(null, str)) - return - } else { - return str - } - } - - if (fn) { - this.toBuffer((err, buf) => { - if (err) return fn(err) - fn(null, `data:${type};base64,${buf.toString('base64')}`) - }, type, opts) - } else { - return `data:${type};base64,${this.toBuffer(type, opts).toString('base64')}` - } -} diff --git a/lib/context2d.js b/lib/context2d.js deleted file mode 100644 index 75f50635b..000000000 --- a/lib/context2d.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict' - -/*! - * Canvas - Context2d - * Copyright (c) 2010 LearnBoost - * MIT Licensed - */ - -const bindings = require('./bindings') -const parseFont = require('./parse-font') -const { DOMMatrix } = require('./DOMMatrix') - -bindings.CanvasRenderingContext2dInit(DOMMatrix, parseFont) -module.exports = bindings.CanvasRenderingContext2d diff --git a/lib/image.js b/lib/image.js deleted file mode 100644 index 4a37849ee..000000000 --- a/lib/image.js +++ /dev/null @@ -1,96 +0,0 @@ -'use strict' - -/*! - * Canvas - Image - * Copyright (c) 2010 LearnBoost - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -const bindings = require('./bindings') -const Image = module.exports = bindings.Image -const util = require('util') - -// Lazily loaded simple-get -let get - -const { GetSource, SetSource } = bindings - -Object.defineProperty(Image.prototype, 'src', { - /** - * src setter. Valid values: - * * `data:` URI - * * Local file path - * * HTTP or HTTPS URL - * * Buffer containing image data (i.e. not a `data:` URI stored in a Buffer) - * - * @param {String|Buffer} val filename, buffer, data URI, URL - * @api public - */ - set (val) { - if (typeof val === 'string') { - if (/^\s*data:/.test(val)) { // data: URI - const commaI = val.indexOf(',') - // 'base64' must come before the comma - const isBase64 = val.lastIndexOf('base64', commaI) !== -1 - const content = val.slice(commaI + 1) - setSource(this, Buffer.from(content, isBase64 ? 'base64' : 'utf8'), val) - } else if (/^\s*https?:\/\//.test(val)) { // remote URL - const onerror = err => { - if (typeof this.onerror === 'function') { - this.onerror(err) - } else { - throw err - } - } - - if (!get) get = require('simple-get') - - get.concat({ - url: val, - headers: { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36' } - }, (err, res, data) => { - if (err) return onerror(err) - - if (res.statusCode < 200 || res.statusCode >= 300) { - return onerror(new Error(`Server responded with ${res.statusCode}`)) - } - - setSource(this, data) - }) - } else { // local file path assumed - setSource(this, val) - } - } else if (Buffer.isBuffer(val)) { - setSource(this, val) - } - }, - - get () { - // TODO https://github.com/Automattic/node-canvas/issues/118 - return getSource(this) - }, - - configurable: true -}) - -// TODO || is for Node.js pre-v6.6.0 -Image.prototype[util.inspect.custom || 'inspect'] = function () { - return '[Image' + - (this.complete ? ':' + this.width + 'x' + this.height : '') + - (this.src ? ' ' + this.src : '') + - (this.complete ? ' complete' : '') + - ']' -} - -function getSource (img) { - return img._originalSource || GetSource.call(img) -} - -function setSource (img, src, origSrc) { - SetSource.call(img, src) - img._originalSource = origSrc -} diff --git a/lib/jpegstream.js b/lib/jpegstream.js deleted file mode 100644 index 701d2f870..000000000 --- a/lib/jpegstream.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict' - -/*! - * Canvas - JPEGStream - * Copyright (c) 2010 LearnBoost - * MIT Licensed - */ - -const { Readable } = require('stream') -function noop () {} - -class JPEGStream extends Readable { - constructor (canvas, options) { - super() - - if (canvas.streamJPEGSync === undefined) { - throw new Error('node-canvas was built without JPEG support.') - } - - this.options = options - this.canvas = canvas - } - - _read () { - // For now we're not controlling the c++ code's data emission, so we only - // call canvas.streamJPEGSync once and let it emit data at will. - this._read = noop - - this.canvas.streamJPEGSync(this.options, (err, chunk) => { - if (err) { - this.emit('error', err) - } else if (chunk) { - this.push(chunk) - } else { - this.push(null) - } - }) - } -}; - -module.exports = JPEGStream diff --git a/lib/parse-font.js b/lib/parse-font.js deleted file mode 100644 index 713db5082..000000000 --- a/lib/parse-font.js +++ /dev/null @@ -1,101 +0,0 @@ -'use strict' - -/** - * Font RegExp helpers. - */ - -const weights = 'bold|bolder|lighter|[1-9]00' -const styles = 'italic|oblique' -const variants = 'small-caps' -const stretches = 'ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded' -const units = 'px|pt|pc|in|cm|mm|%|em|ex|ch|rem|q' -const string = '\'([^\']+)\'|"([^"]+)"|[\\w\\s-]+' - -// [ [ <‘font-style’> || || <‘font-weight’> || <‘font-stretch’> ]? -// <‘font-size’> [ / <‘line-height’> ]? <‘font-family’> ] -// https://drafts.csswg.org/css-fonts-3/#font-prop -const weightRe = new RegExp(`(${weights}) +`, 'i') -const styleRe = new RegExp(`(${styles}) +`, 'i') -const variantRe = new RegExp(`(${variants}) +`, 'i') -const stretchRe = new RegExp(`(${stretches}) +`, 'i') -const sizeFamilyRe = new RegExp( - `([\\d\\.]+)(${units}) *((?:${string})( *, *(?:${string}))*)`) - -/** - * Cache font parsing. - */ - -const cache = {} - -const defaultHeight = 16 // pt, common browser default - -/** - * Parse font `str`. - * - * @param {String} str - * @return {Object} Parsed font. `size` is in device units. `unit` is the unit - * appearing in the input string. - * @api private - */ - -module.exports = str => { - // Cached - if (cache[str]) return cache[str] - - // Try for required properties first. - const sizeFamily = sizeFamilyRe.exec(str) - if (!sizeFamily) return // invalid - - // Default values and required properties - const font = { - weight: 'normal', - style: 'normal', - stretch: 'normal', - variant: 'normal', - size: parseFloat(sizeFamily[1]), - unit: sizeFamily[2], - family: sizeFamily[3].replace(/["']/g, '').replace(/ *, */g, ',') - } - - // Optional, unordered properties. - let weight, style, variant, stretch - // Stop search at `sizeFamily.index` - const substr = str.substring(0, sizeFamily.index) - if ((weight = weightRe.exec(substr))) font.weight = weight[1] - if ((style = styleRe.exec(substr))) font.style = style[1] - if ((variant = variantRe.exec(substr))) font.variant = variant[1] - if ((stretch = stretchRe.exec(substr))) font.stretch = stretch[1] - - // Convert to device units. (`font.unit` is the original unit) - // TODO: ch, ex - switch (font.unit) { - case 'pt': - font.size /= 0.75 - break - case 'pc': - font.size *= 16 - break - case 'in': - font.size *= 96 - break - case 'cm': - font.size *= 96.0 / 2.54 - break - case 'mm': - font.size *= 96.0 / 25.4 - break - case '%': - // TODO disabled because existing unit tests assume 100 - // font.size *= defaultHeight / 100 / 0.75 - break - case 'em': - case 'rem': - font.size *= defaultHeight / 0.75 - break - case 'q': - font.size *= 96 / 25.4 / 4 - break - } - - return (cache[str] = font) -} diff --git a/lib/pattern.js b/lib/pattern.js deleted file mode 100644 index 1de497681..000000000 --- a/lib/pattern.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict' - -/*! - * Canvas - CanvasPattern - * Copyright (c) 2010 LearnBoost - * MIT Licensed - */ - -const bindings = require('./bindings') -const { DOMMatrix } = require('./DOMMatrix') - -bindings.CanvasPatternInit(DOMMatrix) -module.exports = bindings.CanvasPattern - -bindings.CanvasPattern.prototype.toString = function () { - return '[object CanvasPattern]' -} diff --git a/lib/pdfstream.js b/lib/pdfstream.js deleted file mode 100644 index 8643af75b..000000000 --- a/lib/pdfstream.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict' - -/*! - * Canvas - PDFStream - */ - -const { Readable } = require('stream') -function noop () {} - -class PDFStream extends Readable { - constructor (canvas, options) { - super() - - this.canvas = canvas - this.options = options - } - - _read () { - // For now we're not controlling the c++ code's data emission, so we only - // call canvas.streamPDFSync once and let it emit data at will. - this._read = noop - - this.canvas.streamPDFSync((err, chunk, len) => { - if (err) { - this.emit('error', err) - } else if (len) { - this.push(chunk) - } else { - this.push(null) - } - }, this.options) - } -} - -module.exports = PDFStream diff --git a/lib/pngstream.js b/lib/pngstream.js deleted file mode 100644 index db8fdb465..000000000 --- a/lib/pngstream.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict' - -/*! - * Canvas - PNGStream - * Copyright (c) 2010 LearnBoost - * MIT Licensed - */ - -const { Readable } = require('stream') -function noop () {} - -class PNGStream extends Readable { - constructor (canvas, options) { - super() - - if (options && - options.palette instanceof Uint8ClampedArray && - options.palette.length % 4 !== 0) { - throw new Error('Palette length must be a multiple of 4.') - } - this.canvas = canvas - this.options = options || {} - } - - _read () { - // For now we're not controlling the c++ code's data emission, so we only - // call canvas.streamPNGSync once and let it emit data at will. - this._read = noop - - this.canvas.streamPNGSync((err, chunk, len) => { - if (err) { - this.emit('error', err) - } else if (len) { - this.push(chunk) - } else { - this.push(null) - } - }, this.options) - } -} - -module.exports = PNGStream diff --git a/package.json b/package.json index 77e72328c..2448bfcde 100644 --- a/package.json +++ b/package.json @@ -1,72 +1,55 @@ { - "name": "canvas", - "description": "Canvas graphics API backed by Cairo", - "version": "2.11.2", - "author": "TJ Holowaychuk ", - "main": "index.js", - "browser": "browser.js", - "contributors": [ - "Nathan Rajlich ", - "Rod Vagg ", - "Juriy Zaytsev " - ], - "keywords": [ - "canvas", - "graphic", - "graphics", - "pixman", - "cairo", - "image", - "images", - "pdf" - ], - "homepage": "https://github.com/Automattic/node-canvas", - "repository": "git://github.com/Automattic/node-canvas.git", - "scripts": { - "prebenchmark": "node-gyp build", - "benchmark": "node benchmarks/run.js", - "lint": "standard examples/*.js test/server.js test/public/*.js benchmarks/run.js lib/context2d.js util/has_lib.js browser.js index.js", - "test": "mocha test/*.test.js", - "pretest-server": "node-gyp build", - "test-server": "node test/server.js", - "generate-wpt": "node ./test/wpt/generate.js", - "test-wpt": "mocha test/wpt/generated/*.js", - "install": "node-pre-gyp install --fallback-to-build --update-binary", - "dtslint": "dtslint types" - }, - "binary": { - "module_name": "canvas", - "module_path": "build/Release", - "host": "https://github.com/Automattic/node-canvas/releases/download/", - "remote_path": "v{version}", - "package_name": "{module_name}-v{version}-{node_abi}-{platform}-{libc}-{arch}.tar.gz" - }, - "files": [ - "binding.gyp", - "lib/", - "src/", - "util/", - "types/index.d.ts" - ], - "types": "types/index.d.ts", - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.17.0", - "simple-get": "^3.0.3" - }, - "devDependencies": { - "@types/node": "^10.12.18", - "assert-rejects": "^1.0.0", - "dtslint": "^4.0.7", - "express": "^4.16.3", - "js-yaml": "^4.1.0", - "mocha": "^5.2.0", - "pixelmatch": "^4.0.2", - "standard": "^12.0.1", - "typescript": "^4.2.2" - }, - "engines": { - "node": ">=6" - }, - "license": "MIT" + "name": "canvas", + "version": "0.0.0", + "main": "index.js", + "types": "index.d.ts", + "napi": { + "name": "canvas", + "triples": { + "additional": [ + "aarch64-apple-darwin", + "x86_64-apple-darwin", + "aarch64-linux-android", + "aarch64-unknown-linux-gnu", + "aarch64-unknown-linux-musl", + "aarch64-pc-windows-msvc", + "x86_64-pc-windows-msvc", + "armv7-unknown-linux-gnueabihf", + "x86_64-unknown-linux-gnu", + "x86_64-unknown-linux-musl", + "i686-pc-windows-msvc", + "armv7-linux-androideabi" + ] + } + }, + "license": "MIT", + "devDependencies": { + "@napi-rs/cli": "2.16.5", + "assert-rejects": "^1.0.0", + "express": "^4.18.2", + "glob": "^10.3.10", + "jest": "^29.7.0", + "js-yaml": "^4.1.0", + "mocha": "^10.2.0", + "pixelmatch": "^5.3.0", + "prettier": "^3.1.1" + }, + "engines": { + "node": ">= 10" + }, + "scripts": { + "artifacts": "napi crates/canvas artifacts", + "build": "napi --cargo-cwd crates/canvas build --platform --release", + "build:debug": "napi --cargo-cwd crates/canvas build --platform", + "postbuild": "node scripts/postbuild.js", + "benchmark": "node benchmarks/run.js", + "prepublishOnly": "napi --cargo-cwd crates/canvas prepublish -t npm", + "test": "pnpm build && pnpm postbuild && jest", + "version": "napi version", + "fmt": "cargo fmt && prettier --write .", + "test-server": "node test/server.js", + "generate-wpt": "node ./test/wpt/generate.js", + "test-wpt": "mocha test/wpt/generated/*.js", + "gen-packages": "node scripts/packages.js" + } } diff --git a/packages/.gitkeep b/packages/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 000000000..4ac1db159 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3125 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@napi-rs/cli': + specifier: 2.16.5 + version: 2.16.5 + assert-rejects: + specifier: ^1.0.0 + version: 1.0.0 + express: + specifier: ^4.18.2 + version: 4.18.2 + glob: + specifier: ^10.3.10 + version: 10.3.10 + jest: + specifier: ^29.7.0 + version: 29.7.0 + js-yaml: + specifier: ^4.1.0 + version: 4.1.0 + mocha: + specifier: ^10.2.0 + version: 10.2.0 + pixelmatch: + specifier: ^5.3.0 + version: 5.3.0 + prettier: + specifier: ^3.1.1 + version: 3.1.1 + + a: + dependencies: + '@thednp/dommatrix': + specifier: ^2.0.6 + version: 2.0.6 + + packages/aarch64-apple-darwin: {} + + packages/aarch64-linux-android: {} + + packages/aarch64-pc-windows-msvc: {} + + packages/aarch64-unknown-linux-gnu: {} + + packages/aarch64-unknown-linux-musl: {} + + packages/armv7-linux-androideabi: {} + + packages/armv7-unknown-linux-gnueabihf: {} + + packages/i686-pc-windows-msvc: {} + + packages/x86_64-apple-darwin: {} + + packages/x86_64-pc-windows-msvc: {} + + packages/x86_64-unknown-linux-gnu: {} + + packages/x86_64-unknown-linux-musl: {} + +packages: + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + dev: true + + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.23.6: + resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.6) + '@babel/helpers': 7.23.6 + '@babel/parser': 7.23.6 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: true + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.23.6: + resolution: {integrity: sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.6 + '@babel/types': 7.23.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.6): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.6): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.6): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.6): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.6): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.6): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + dev: true + + /@babel/traverse@7.23.6: + resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.23.6: + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.10.4 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.7.0: + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.4 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.10.4) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.4 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.10.4 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 + '@types/node': 20.10.4 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.0 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.6 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.20 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.10.4 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@napi-rs/cli@2.16.5: + resolution: {integrity: sha512-mFEzwrg4IOLngGd2/P6yeqIWgwQNn59Z08n1rndu6kLDq1gg954NH9cM1O9Da0RJuybt46p43lqgSsnAY2mxqA==} + engines: {node: '>= 10'} + hasBin: true + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sinonjs/commons@3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.0 + dev: true + + /@thednp/dommatrix@2.0.6: + resolution: {integrity: sha512-DXQq4Rs/akYzeXYGkNy3KiJ4JoD8+SYr1QRWTXtAGoZ0+vJcyBt0aeqA1K4CxPaBaIfKdOTE+Te1HV9sAQ4I4A==} + dev: false + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + '@types/babel__generator': 7.6.7 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.4 + dev: true + + /@types/babel__generator@7.6.7: + resolution: {integrity: sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + dev: true + + /@types/babel__traverse@7.20.4: + resolution: {integrity: sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + dependencies: + '@types/node': 20.10.4 + dev: true + + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: true + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + dev: true + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 + dev: true + + /@types/node@20.10.4: + resolution: {integrity: sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: true + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: true + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: true + + /ansi-colors@4.1.1: + resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: true + + /assert-rejects@1.0.0: + resolution: {integrity: sha512-xSmDqs5YxfrHUQBhVfrP/5+UoEvMBTY2+oRDoLfY9zsTA1hnW0KiKYcXKyeVWSgb0UpsQ4gyeBuKlXKzKUobZA==} + engines: {node: '>=6'} + dependencies: + is-regexp: 1.0.0 + dev: true + + /babel-jest@29.7.0(@babel/core@7.23.6): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.23.6 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.23.6) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.4 + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.6): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.6) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.6) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.6) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.6) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.6) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.23.6): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.6 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.6) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /body-parser@1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: true + + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001570 + electron-to-chromium: 1.4.613 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001570: + resolution: {integrity: sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==} + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + + /cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + dev: true + + /cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: true + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: true + + /create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.10.4) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug@4.3.4(supports-color@8.1.1): + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 8.1.1 + dev: true + + /decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + dev: true + + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: true + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: true + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /diff@5.0.0: + resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + engines: {node: '>=0.3.1'} + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /electron-to-chromium@1.4.613: + resolution: {integrity: sha512-r4x5+FowKG6q+/Wj0W9nidx7QO31BJwmR2uEo+Qh3YLGQ8SbBAFuDFpTxzly/I2gsbrFwBuIjrMp423L3O5U3w==} + dev: true + + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + + /express@4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: true + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: true + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: true + + /glob@7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: true + + /is-regexp@1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.23.6 + '@babel/parser': 7.23.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.23.6 + '@babel/parser': 7.23.6 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.4 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.1 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.0.4 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0 + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.10.4) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest-config@29.7.0(@types/node@20.10.4): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.6 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.4 + babel-jest: 29.7.0(@babel/core@7.23.6) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.0 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.4 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 20.10.4 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.23.5 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.10.4 + jest-util: 29.7.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.7.0 + dev: true + + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.4 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.4 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.6 + '@babel/generator': 7.23.6 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.6) + '@babel/types': 7.23.6 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.6) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.10.4 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + dev: true + + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.10.4 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + dev: true + + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 20.10.4 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0 + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.5.4 + dev: true + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: true + + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@5.0.1: + resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /mocha@10.2.0: + resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} + engines: {node: '>= 14.0.0'} + hasBin: true + dependencies: + ansi-colors: 4.1.1 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.0.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 7.2.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.0.1 + ms: 2.1.3 + nanoid: 3.3.3 + serialize-javascript: 6.0.0 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.2.1 + yargs: 16.2.0 + yargs-parser: 20.2.4 + yargs-unparser: 2.0.0 + dev: true + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /nanoid@3.3.3: + resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: true + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.1.0 + minipass: 7.0.4 + dev: true + + /path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /pixelmatch@5.3.0: + resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} + hasBin: true + dependencies: + pngjs: 6.0.0 + dev: true + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /pngjs@6.0.0: + resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==} + engines: {node: '>=12.13.0'} + dev: true + + /prettier@3.1.1: + resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: true + + /pure-rand@6.0.4: + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} + dev: true + + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: true + + /raw-body@2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /serialize-javascript@6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + dependencies: + randombytes: 2.1.0 + dev: true + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + dev: true + + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.0 + minimatch: 3.1.2 + dev: true + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: true + + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + dev: true + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /workerpool@6.2.1: + resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yargs-parser@20.2.4: + resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + engines: {node: '>=10'} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + dev: true + + /yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.4 + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 000000000..9bec5ba55 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - packages/* diff --git a/prebuild/Linux/Dockerfile b/prebuild/Linux/Dockerfile deleted file mode 100644 index be68e5b5e..000000000 --- a/prebuild/Linux/Dockerfile +++ /dev/null @@ -1,43 +0,0 @@ -FROM debian:stretch -RUN apt-get update && apt-get -y install curl git cmake make gcc g++ nasm wget gperf bzip2 meson uuid-dev perl libxml-parser-perl - -RUN bash -c 'cd; curl -LO https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz; tar -xvf pkg-config-0.29.2.tar.gz; cd pkg-config-0.29.2; ./configure --with-internal-glib; make; make install' -RUN bash -c 'cd; curl -O https://zlib.net/fossils/zlib-1.2.11.tar.gz; tar -xvf zlib-1.2.11.tar.gz; cd zlib-1.2.11; ./configure; make; make install' -RUN bash -c 'cd; curl -LO https://github.com/libffi/libffi/releases/download/v3.3/libffi-3.3.tar.gz; tar -xvf libffi-3.3.tar.gz; cd libffi-3.3; ./configure; make; make install' -RUN bash -c 'cd; curl -O https://www.openssl.org/source/openssl-1.1.1i.tar.gz; tar -xvf openssl-1.1.1i.tar.gz; cd openssl-1.1.1i; ./config; make; make install' -RUN ldconfig -RUN bash -c 'cd; curl -O https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz; tar -xvf Python-3.9.1.tgz; cd Python-3.9.1; ./configure --enable-shared --with-ensurepip=yes; make; make install' -RUN ldconfig -RUN pip3 install meson -RUN bash -c 'cd; curl -LO https://download.sourceforge.net/giflib/giflib-5.2.1.tar.gz; tar -xvf giflib-5.2.1.tar.gz; cd giflib-5.2.1; ./configure; make; make install' -RUN bash -c 'cd; curl -LO https://download.sourceforge.net/libpng/libpng-1.6.37.tar.gz; tar -xvf libpng-1.6.37.tar.gz; cd libpng-1.6.37; ./configure; make; make install' -RUN bash -c 'cd; curl -LO https://github.com/libjpeg-turbo/libjpeg-turbo/archive/2.0.6.tar.gz; tar -xvf 2.0.6.tar.gz; cd libjpeg-turbo-2.0.6; mkdir b; cd b; cmake -G"Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local ..; make; make install' -RUN bash -c 'cd; curl -O https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.bz2; tar -xvf pcre-8.44.tar.bz2; cd pcre-8.44; ./configure --enable-pcre16 --enable-pcre32 --enable-utf --enable-unicode-properties; make; make install ' -RUN ldconfig -RUN bash -c 'cd; curl -LO https://download.gnome.org/sources/glib/2.67/glib-2.67.1.tar.xz; tar -xvf glib-2.67.1.tar.xz; cd glib-2.67.1; meson _build; cd _build; ninja; ninja install' -RUN ldconfig -RUN bash -c 'cd; curl -LO https://download.sourceforge.net/freetype/freetype-2.10.4.tar.gz; tar -xvf freetype-2.10.4.tar.gz; cd freetype-2.10.4; ./configure; make; make install' -RUN bash -c 'cd; curl -LO https://github.com/harfbuzz/harfbuzz/releases/download/2.7.4/harfbuzz-2.7.4.tar.xz; tar -xvf harfbuzz-2.7.4.tar.xz; cd harfbuzz-2.7.4; ./configure; make; make install;' -RUN bash -c 'cd; curl -LO https://github.com/libexpat/libexpat/releases/download/R_2_2_10/expat-2.2.10.tar.gz; tar -xvf expat-2.2.10.tar.gz; cd expat-2.2.10; ./configure; make; make install' -RUN ldconfig -RUN ls -l /usr/include -RUN bash -c 'cd; curl -O https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.13.1.tar.bz2; tar -xvf fontconfig-2.13.1.tar.bz2; cd fontconfig-2.13.1; UUID_LIBS="-L/lib/x86_64-linux-gnu -luuid" UUID_CFLAGS="-I/include" ./configure --enable-static --sysconfdir=/etc --localstatedir=/var; make; make install' -RUN bash -c 'cd; curl -O https://www.cairographics.org/releases/pixman-0.40.0.tar.gz; tar -xvf pixman-0.40.0.tar.gz; cd pixman-0.40.0; ./configure; make; make install' -RUN bash -c 'cd; curl -O https://cairographics.org/releases/cairo-1.16.0.tar.xz; tar -xvf cairo-1.16.0.tar.xz; cd cairo-1.16.0; ./configure; make; make install' -RUN bash -c 'cd; curl -LO https://github.com/fribidi/fribidi/releases/download/v1.0.10/fribidi-1.0.10.tar.xz; tar -xvf fribidi-1.0.10.tar.xz; cd fribidi-1.0.10; ./configure; make; make install' -RUN bash -c 'cd; curl -LO https://download.gnome.org/sources/pango/1.48/pango-1.48.0.tar.xz; tar -xvf pango-1.48.0.tar.xz; cd pango-1.48.0; meson -Dharfbuzz:docs=disabled -Dgtk_doc=false _build; cd _build; ninja; ninja install' -RUN ldconfig - -# librsvg -RUN bash -c 'curl https://sh.rustup.rs -sSf | sh -s -- -y'; -RUN bash -c 'curl -O http://xmlsoft.org/sources/libxml2-2.9.10.tar.gz; tar -xvf libxml2-2.9.10.tar.gz; cd libxml2-2.9.10; ./configure --without-python; make; make install' -RUN bash -c 'curl -O https://ftp.gnu.org/pub/gnu/gettext/gettext-0.21.tar.gz; tar -xvf gettext-0.21.tar.gz; cd gettext-0.21; ./configure; make; make install' -RUN ldconfig -RUN bash -c 'curl -LO https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz; tar -xvf intltool-0.51.0.tar.gz; cd intltool-0.51.0; ./configure; make; make install' -# using an old version of shared-mime-info because 2.1 has a ridiculous number of dependencies for what is essentially just a database -RUN bash -c 'curl -O https://people.freedesktop.org/~hadess/shared-mime-info-1.8.tar.xz; tar -xvf shared-mime-info-1.8.tar.xz; cd shared-mime-info-1.8; ./configure; make; make install' -RUN bash -c 'curl -LO https://download.gnome.org/sources/gdk-pixbuf/2.42/gdk-pixbuf-2.42.2.tar.xz; tar -xvf gdk-pixbuf-2.42.2.tar.xz; cd gdk-pixbuf-2.42.2; meson _build; cd _build; ninja install'; -RUN ldconfig -RUN bash -c 'curl -LO https://download.gnome.org/sources/libcroco/0.6/libcroco-0.6.13.tar.xz; tar -xvf libcroco-0.6.13.tar.xz; cd libcroco-0.6.13; ./configure; make; make install' -RUN bash -c 'cd; . .cargo/env; curl -LO https://download.gnome.org/sources/librsvg/2.50/librsvg-2.50.2.tar.xz; tar -xvf librsvg-2.50.2.tar.xz; cd librsvg-2.50.2; ./configure --enable-introspection=no; make; make install' -RUN ldconfig diff --git a/prebuild/Linux/binding.gyp b/prebuild/Linux/binding.gyp deleted file mode 100644 index 1a967667d..000000000 --- a/prebuild/Linux/binding.gyp +++ /dev/null @@ -1,53 +0,0 @@ -{ - 'targets': [ - { - 'target_name': 'canvas', - 'sources': [ - 'src/backend/Backend.cc', - 'src/backend/ImageBackend.cc', - 'src/backend/PdfBackend.cc', - 'src/backend/SvgBackend.cc', - 'src/bmp/BMPParser.cc', - 'src/Backends.cc', - 'src/Canvas.cc', - 'src/CanvasGradient.cc', - 'src/CanvasPattern.cc', - 'src/CanvasRenderingContext2d.cc', - 'src/closure.cc', - 'src/color.cc', - 'src/Image.cc', - 'src/ImageData.cc', - 'src/init.cc', - 'src/register_font.cc' - ], - 'defines': [ - 'HAVE_GIF', - 'HAVE_JPEG', - 'HAVE_RSVG' - ], - 'libraries': [ - ' /dev/null 2>&1 || { - echo "could not find lib$lib.dll, have to skip "; - continue; - } - - dlltool -d lib$lib.def -l /mingw64/lib/lib$lib.lib > /dev/null 2>&1 || { - echo "could not create dll for lib$lib.dll"; - continue; - } - - echo "created lib$lib.lib from lib$lib.dll"; - - rm lib$lib.def -done diff --git a/prebuild/macOS/binding.gyp b/prebuild/macOS/binding.gyp deleted file mode 100644 index 00ae2ccbc..000000000 --- a/prebuild/macOS/binding.gyp +++ /dev/null @@ -1,51 +0,0 @@ -{ - 'targets': [ - { - 'target_name': 'canvas', - 'sources': [ - 'src/backend/Backend.cc', - 'src/backend/ImageBackend.cc', - 'src/backend/PdfBackend.cc', - 'src/backend/SvgBackend.cc', - 'src/bmp/BMPParser.cc', - 'src/Backends.cc', - 'src/Canvas.cc', - 'src/CanvasGradient.cc', - 'src/CanvasPattern.cc', - 'src/CanvasRenderingContext2d.cc', - 'src/closure.cc', - 'src/color.cc', - 'src/Image.cc', - 'src/ImageData.cc', - 'src/init.cc', - 'src/register_font.cc' - ], - 'defines': [ - 'HAVE_GIF', - 'HAVE_JPEG', - 'HAVE_RSVG' - ], - 'libraries': [ - '= 10", + }, + ...info, + }; + + fs.writeFileSync( + path.join(dir, "package.json"), + JSON.stringify(data, null, 4) + ); +} diff --git a/scripts/postbuild.js b/scripts/postbuild.js new file mode 100644 index 000000000..6e603099f --- /dev/null +++ b/scripts/postbuild.js @@ -0,0 +1,25 @@ +const fs = require("fs"); +const path = require("path"); +const canvas = require(".."); + +const root = path.join(__dirname, ".."); +const file = path.join(root, "index.js"); +const file2 = path.join(root, "index.d.ts"); + +let data = fs.readFileSync(file, "utf-8"); +let data2 = fs.readFileSync(file2, "utf-8"); + +if (!canvas.hasOwnProperty("DOMMatrix")) { + data += "\nmodule.exports.DOMMatrix = DomMatrix;"; + data2 += "\nexport type DOMMatrix = DomMatrix;"; + + fs.writeFileSync(file, data); + fs.writeFileSync(file2, data2); +} + +if (!data2.includes("export type DOMPoint")) { + data2 += "\nexport type DOMPoint = DomPoint;"; + + fs.writeFileSync(file, data); + fs.writeFileSync(file2, data2); +} diff --git a/src/Backends.cc b/src/Backends.cc deleted file mode 100644 index 2256c32b6..000000000 --- a/src/Backends.cc +++ /dev/null @@ -1,18 +0,0 @@ -#include "Backends.h" - -#include "backend/ImageBackend.h" -#include "backend/PdfBackend.h" -#include "backend/SvgBackend.h" - -using namespace v8; - -void Backends::Initialize(Local target) { - Nan::HandleScope scope; - - Local obj = Nan::New(); - ImageBackend::Initialize(obj); - PdfBackend::Initialize(obj); - SvgBackend::Initialize(obj); - - Nan::Set(target, Nan::New("Backends").ToLocalChecked(), obj).Check(); -} diff --git a/src/Backends.h b/src/Backends.h deleted file mode 100644 index dbea053ce..000000000 --- a/src/Backends.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include "backend/Backend.h" -#include -#include - -class Backends : public Nan::ObjectWrap { - public: - static void Initialize(v8::Local target); -}; diff --git a/src/Canvas.cc b/src/Canvas.cc deleted file mode 100644 index 0cfe750d6..000000000 --- a/src/Canvas.cc +++ /dev/null @@ -1,966 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#include "Canvas.h" - -#include // std::min -#include -#include -#include -#include "CanvasRenderingContext2d.h" -#include "closure.h" -#include -#include -#include -#include -#include "PNG.h" -#include "register_font.h" -#include -#include -#include -#include -#include "Util.h" -#include -#include "node_buffer.h" - -#ifdef HAVE_JPEG -#include "JPEGStream.h" -#endif - -#include "backend/ImageBackend.h" -#include "backend/PdfBackend.h" -#include "backend/SvgBackend.h" - -#define GENERIC_FACE_ERROR \ - "The second argument to registerFont is required, and should be an object " \ - "with at least a family (string) and optionally weight (string/number) " \ - "and style (string)." - -#define CHECK_RECEIVER(prop) \ - if (!Canvas::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { \ - Nan::ThrowTypeError("Method " #prop " called on incompatible receiver"); \ - return; \ - } - -using namespace v8; -using namespace std; - -Nan::Persistent Canvas::constructor; - -std::vector font_face_list; - -/* - * Initialize Canvas. - */ - -void -Canvas::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) { - Nan::HandleScope scope; - - // Constructor - Local ctor = Nan::New(Canvas::New); - constructor.Reset(ctor); - ctor->InstanceTemplate()->SetInternalFieldCount(1); - ctor->SetClassName(Nan::New("Canvas").ToLocalChecked()); - - // Prototype - Local proto = ctor->PrototypeTemplate(); - Nan::SetPrototypeMethod(ctor, "toBuffer", ToBuffer); - Nan::SetPrototypeMethod(ctor, "streamPNGSync", StreamPNGSync); - Nan::SetPrototypeMethod(ctor, "streamPDFSync", StreamPDFSync); -#ifdef HAVE_JPEG - Nan::SetPrototypeMethod(ctor, "streamJPEGSync", StreamJPEGSync); -#endif - Nan::SetAccessor(proto, Nan::New("type").ToLocalChecked(), GetType); - Nan::SetAccessor(proto, Nan::New("stride").ToLocalChecked(), GetStride); - Nan::SetAccessor(proto, Nan::New("width").ToLocalChecked(), GetWidth, SetWidth); - Nan::SetAccessor(proto, Nan::New("height").ToLocalChecked(), GetHeight, SetHeight); - - Nan::SetTemplate(proto, "PNG_NO_FILTERS", Nan::New(PNG_NO_FILTERS)); - Nan::SetTemplate(proto, "PNG_FILTER_NONE", Nan::New(PNG_FILTER_NONE)); - Nan::SetTemplate(proto, "PNG_FILTER_SUB", Nan::New(PNG_FILTER_SUB)); - Nan::SetTemplate(proto, "PNG_FILTER_UP", Nan::New(PNG_FILTER_UP)); - Nan::SetTemplate(proto, "PNG_FILTER_AVG", Nan::New(PNG_FILTER_AVG)); - Nan::SetTemplate(proto, "PNG_FILTER_PAETH", Nan::New(PNG_FILTER_PAETH)); - Nan::SetTemplate(proto, "PNG_ALL_FILTERS", Nan::New(PNG_ALL_FILTERS)); - - // Class methods - Nan::SetMethod(ctor, "_registerFont", RegisterFont); - Nan::SetMethod(ctor, "_deregisterAllFonts", DeregisterAllFonts); - - Local ctx = Nan::GetCurrentContext(); - Nan::Set(target, - Nan::New("Canvas").ToLocalChecked(), - ctor->GetFunction(ctx).ToLocalChecked()); -} - -/* - * Initialize a Canvas with the given width and height. - */ - -NAN_METHOD(Canvas::New) { - if (!info.IsConstructCall()) { - return Nan::ThrowTypeError("Class constructors cannot be invoked without 'new'"); - } - - Backend* backend = NULL; - if (info[0]->IsNumber()) { - int width = Nan::To(info[0]).FromMaybe(0), height = 0; - - if (info[1]->IsNumber()) height = Nan::To(info[1]).FromMaybe(0); - - if (info[2]->IsString()) { - if (0 == strcmp("pdf", *Nan::Utf8String(info[2]))) - backend = new PdfBackend(width, height); - else if (0 == strcmp("svg", *Nan::Utf8String(info[2]))) - backend = new SvgBackend(width, height); - else - backend = new ImageBackend(width, height); - } - else - backend = new ImageBackend(width, height); - } - else if (info[0]->IsObject()) { - if (Nan::New(ImageBackend::constructor)->HasInstance(info[0]) || - Nan::New(PdfBackend::constructor)->HasInstance(info[0]) || - Nan::New(SvgBackend::constructor)->HasInstance(info[0])) { - backend = Nan::ObjectWrap::Unwrap(Nan::To(info[0]).ToLocalChecked()); - }else{ - return Nan::ThrowTypeError("Invalid arguments"); - } - } - else { - backend = new ImageBackend(0, 0); - } - - if (!backend->isSurfaceValid()) { - const char *error = backend->getError(); - delete backend; - return Nan::ThrowError(error); - } - - Canvas* canvas = new Canvas(backend); - canvas->Wrap(info.This()); - - backend->setCanvas(canvas); - - info.GetReturnValue().Set(info.This()); -} - -/* - * Get type string. - */ - -NAN_GETTER(Canvas::GetType) { - CHECK_RECEIVER(Canvas.GetType); - Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(canvas->backend()->getName()).ToLocalChecked()); -} - -/* - * Get stride. - */ -NAN_GETTER(Canvas::GetStride) { - CHECK_RECEIVER(Canvas.GetStride); - Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(canvas->stride())); -} - -/* - * Get width. - */ - -NAN_GETTER(Canvas::GetWidth) { - CHECK_RECEIVER(Canvas.GetWidth); - Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(canvas->getWidth())); -} - -/* - * Set width. - */ - -NAN_SETTER(Canvas::SetWidth) { - CHECK_RECEIVER(Canvas.SetWidth); - if (value->IsNumber()) { - Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); - canvas->backend()->setWidth(Nan::To(value).FromMaybe(0)); - canvas->resurface(info.This()); - } -} - -/* - * Get height. - */ - -NAN_GETTER(Canvas::GetHeight) { - CHECK_RECEIVER(Canvas.GetHeight); - Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(canvas->getHeight())); -} - -/* - * Set height. - */ - -NAN_SETTER(Canvas::SetHeight) { - CHECK_RECEIVER(Canvas.SetHeight); - if (value->IsNumber()) { - Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); - canvas->backend()->setHeight(Nan::To(value).FromMaybe(0)); - canvas->resurface(info.This()); - } -} - -/* - * EIO toBuffer callback. - */ - -void -Canvas::ToPngBufferAsync(uv_work_t *req) { - PngClosure* closure = static_cast(req->data); - - closure->status = canvas_write_to_png_stream( - closure->canvas->surface(), - PngClosure::writeVec, - closure); -} - -#ifdef HAVE_JPEG -void -Canvas::ToJpegBufferAsync(uv_work_t *req) { - JpegClosure* closure = static_cast(req->data); - write_to_jpeg_buffer(closure->canvas->surface(), closure); -} -#endif - -/* - * EIO after toBuffer callback. - */ - -void -Canvas::ToBufferAsyncAfter(uv_work_t *req) { - Nan::HandleScope scope; - Nan::AsyncResource async("canvas:ToBufferAsyncAfter"); - Closure* closure = static_cast(req->data); - delete req; - - if (closure->status) { - Local argv[1] = { Canvas::Error(closure->status) }; - closure->cb.Call(1, argv, &async); - } else { - Local buf = Nan::CopyBuffer((char*)&closure->vec[0], closure->vec.size()).ToLocalChecked(); - Local argv[2] = { Nan::Null(), buf }; - closure->cb.Call(sizeof argv / sizeof *argv, argv, &async); - } - - closure->canvas->Unref(); - delete closure; -} - -static void parsePNGArgs(Local arg, PngClosure& pngargs) { - if (arg->IsObject()) { - Local obj = Nan::To(arg).ToLocalChecked(); - - Local cLevel = Nan::Get(obj, Nan::New("compressionLevel").ToLocalChecked()).ToLocalChecked(); - if (cLevel->IsUint32()) { - uint32_t val = Nan::To(cLevel).FromMaybe(0); - // See quote below from spec section 4.12.5.5. - if (val <= 9) pngargs.compressionLevel = val; - } - - Local rez = Nan::Get(obj, Nan::New("resolution").ToLocalChecked()).ToLocalChecked(); - if (rez->IsUint32()) { - uint32_t val = Nan::To(rez).FromMaybe(0); - if (val > 0) pngargs.resolution = val; - } - - Local filters = Nan::Get(obj, Nan::New("filters").ToLocalChecked()).ToLocalChecked(); - if (filters->IsUint32()) pngargs.filters = Nan::To(filters).FromMaybe(0); - - Local palette = Nan::Get(obj, Nan::New("palette").ToLocalChecked()).ToLocalChecked(); - if (palette->IsUint8ClampedArray()) { - Local palette_ta = palette.As(); - pngargs.nPaletteColors = palette_ta->Length(); - if (pngargs.nPaletteColors % 4 != 0) { - throw "Palette length must be a multiple of 4."; - } - pngargs.nPaletteColors /= 4; - Nan::TypedArrayContents _paletteColors(palette_ta); - pngargs.palette = *_paletteColors; - // Optional background color index: - Local backgroundIndexVal = Nan::Get(obj, Nan::New("backgroundIndex").ToLocalChecked()).ToLocalChecked(); - if (backgroundIndexVal->IsUint32()) { - pngargs.backgroundIndex = static_cast(Nan::To(backgroundIndexVal).FromMaybe(0)); - } - } - } -} - -#ifdef HAVE_JPEG -static void parseJPEGArgs(Local arg, JpegClosure& jpegargs) { - // "If Type(quality) is not Number, or if quality is outside that range, the - // user agent must use its default quality value, as if the quality argument - // had not been given." - 4.12.5.5 - if (arg->IsObject()) { - Local obj = Nan::To(arg).ToLocalChecked(); - - Local qual = Nan::Get(obj, Nan::New("quality").ToLocalChecked()).ToLocalChecked(); - if (qual->IsNumber()) { - double quality = Nan::To(qual).FromMaybe(0); - if (quality >= 0.0 && quality <= 1.0) { - jpegargs.quality = static_cast(100.0 * quality); - } - } - - Local chroma = Nan::Get(obj, Nan::New("chromaSubsampling").ToLocalChecked()).ToLocalChecked(); - if (chroma->IsBoolean()) { - bool subsample = Nan::To(chroma).FromMaybe(0); - jpegargs.chromaSubsampling = subsample ? 2 : 1; - } else if (chroma->IsNumber()) { - jpegargs.chromaSubsampling = Nan::To(chroma).FromMaybe(0); - } - - Local progressive = Nan::Get(obj, Nan::New("progressive").ToLocalChecked()).ToLocalChecked(); - if (!progressive->IsUndefined()) { - jpegargs.progressive = Nan::To(progressive).FromMaybe(0); - } - } -} -#endif - -#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 16, 0) - -static inline void setPdfMetaStr(cairo_surface_t* surf, Local opts, - cairo_pdf_metadata_t t, const char* pName) { - auto propName = Nan::New(pName).ToLocalChecked(); - auto propValue = Nan::Get(opts, propName).ToLocalChecked(); - if (propValue->IsString()) { - // (copies char data) - cairo_pdf_surface_set_metadata(surf, t, *Nan::Utf8String(propValue)); - } -} - -static inline void setPdfMetaDate(cairo_surface_t* surf, Local opts, - cairo_pdf_metadata_t t, const char* pName) { - auto propName = Nan::New(pName).ToLocalChecked(); - auto propValue = Nan::Get(opts, propName).ToLocalChecked(); - if (propValue->IsDate()) { - auto date = static_cast(propValue.As()->ValueOf() / 1000); // ms -> s - char buf[sizeof "2011-10-08T07:07:09Z"]; - strftime(buf, sizeof buf, "%FT%TZ", gmtime(&date)); - cairo_pdf_surface_set_metadata(surf, t, buf); - } -} - -static void setPdfMetadata(Canvas* canvas, Local opts) { - cairo_surface_t* surf = canvas->surface(); - - setPdfMetaStr(surf, opts, CAIRO_PDF_METADATA_TITLE, "title"); - setPdfMetaStr(surf, opts, CAIRO_PDF_METADATA_AUTHOR, "author"); - setPdfMetaStr(surf, opts, CAIRO_PDF_METADATA_SUBJECT, "subject"); - setPdfMetaStr(surf, opts, CAIRO_PDF_METADATA_KEYWORDS, "keywords"); - setPdfMetaStr(surf, opts, CAIRO_PDF_METADATA_CREATOR, "creator"); - setPdfMetaDate(surf, opts, CAIRO_PDF_METADATA_CREATE_DATE, "creationDate"); - setPdfMetaDate(surf, opts, CAIRO_PDF_METADATA_MOD_DATE, "modDate"); -} - -#endif // CAIRO 16+ - -/* - * Converts/encodes data to a Buffer. Async when a callback function is passed. - - * PDF canvases: - (any) => Buffer - ("application/pdf", config) => Buffer - - * SVG canvases: - (any) => Buffer - - * ARGB data: - ("raw") => Buffer - - * PNG-encoded - () => Buffer - (undefined|"image/png", {compressionLevel?: number, filter?: number}) => Buffer - ((err: null|Error, buffer) => any) - ((err: null|Error, buffer) => any, undefined|"image/png", {compressionLevel?: number, filter?: number}) - - * JPEG-encoded - ("image/jpeg") => Buffer - ("image/jpeg", {quality?: number, progressive?: Boolean, chromaSubsampling?: Boolean|number}) => Buffer - ((err: null|Error, buffer) => any, "image/jpeg") - ((err: null|Error, buffer) => any, "image/jpeg", {quality?: number, progressive?: Boolean, chromaSubsampling?: Boolean|number}) - */ - -NAN_METHOD(Canvas::ToBuffer) { - cairo_status_t status; - Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); - - // Vector canvases, sync only - const std::string name = canvas->backend()->getName(); - if (name == "pdf" || name == "svg") { - // mime type may be present, but it's not checked - PdfSvgClosure* closure; - if (name == "pdf") { - closure = static_cast(canvas->backend())->closure(); -#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 16, 0) - if (info[1]->IsObject()) { // toBuffer("application/pdf", config) - setPdfMetadata(canvas, Nan::To(info[1]).ToLocalChecked()); - } -#endif // CAIRO 16+ - } else { - closure = static_cast(canvas->backend())->closure(); - } - - cairo_surface_finish(canvas->surface()); - Local buf = Nan::CopyBuffer((char*)&closure->vec[0], closure->vec.size()).ToLocalChecked(); - info.GetReturnValue().Set(buf); - return; - } - - // Raw ARGB data -- just a memcpy() - if (info[0]->StrictEquals(Nan::New("raw").ToLocalChecked())) { - cairo_surface_t *surface = canvas->surface(); - cairo_surface_flush(surface); - if (canvas->nBytes() > node::Buffer::kMaxLength) { - Nan::ThrowError("Data exceeds maximum buffer length."); - return; - } - const unsigned char *data = cairo_image_surface_get_data(surface); - Isolate* iso = Nan::GetCurrentContext()->GetIsolate(); - Local buf = node::Buffer::Copy(iso, reinterpret_cast(data), canvas->nBytes()).ToLocalChecked(); - info.GetReturnValue().Set(buf); - return; - } - - // Sync PNG, default - if (info[0]->IsUndefined() || info[0]->StrictEquals(Nan::New("image/png").ToLocalChecked())) { - try { - PngClosure closure(canvas); - parsePNGArgs(info[1], closure); - if (closure.nPaletteColors == 0xFFFFFFFF) { - Nan::ThrowError("Palette length must be a multiple of 4."); - return; - } - - Nan::TryCatch try_catch; - status = canvas_write_to_png_stream(canvas->surface(), PngClosure::writeVec, &closure); - - if (try_catch.HasCaught()) { - try_catch.ReThrow(); - } else if (status) { - throw status; - } else { - // TODO it's possible to avoid this copy - Local buf = Nan::CopyBuffer((char *)&closure.vec[0], closure.vec.size()).ToLocalChecked(); - info.GetReturnValue().Set(buf); - } - } catch (cairo_status_t ex) { - Nan::ThrowError(Canvas::Error(ex)); - } catch (const char* ex) { - Nan::ThrowError(ex); - } - return; - } - - // Async PNG - if (info[0]->IsFunction() && - (info[1]->IsUndefined() || info[1]->StrictEquals(Nan::New("image/png").ToLocalChecked()))) { - - PngClosure* closure; - try { - closure = new PngClosure(canvas); - parsePNGArgs(info[2], *closure); - } catch (cairo_status_t ex) { - Nan::ThrowError(Canvas::Error(ex)); - return; - } catch (const char* ex) { - Nan::ThrowError(ex); - return; - } - - canvas->Ref(); - closure->cb.Reset(info[0].As()); - - uv_work_t* req = new uv_work_t; - req->data = closure; - // Make sure the surface exists since we won't have an isolate context in the async block: - canvas->surface(); - uv_queue_work(uv_default_loop(), req, ToPngBufferAsync, (uv_after_work_cb)ToBufferAsyncAfter); - - return; - } - -#ifdef HAVE_JPEG - // Sync JPEG - Local jpegStr = Nan::New("image/jpeg").ToLocalChecked(); - if (info[0]->StrictEquals(jpegStr)) { - try { - JpegClosure closure(canvas); - parseJPEGArgs(info[1], closure); - - Nan::TryCatch try_catch; - write_to_jpeg_buffer(canvas->surface(), &closure); - - if (try_catch.HasCaught()) { - try_catch.ReThrow(); - } else { - // TODO it's possible to avoid this copy. - Local buf = Nan::CopyBuffer((char *)&closure.vec[0], closure.vec.size()).ToLocalChecked(); - info.GetReturnValue().Set(buf); - } - } catch (cairo_status_t ex) { - Nan::ThrowError(Canvas::Error(ex)); - } - return; - } - - // Async JPEG - if (info[0]->IsFunction() && info[1]->StrictEquals(jpegStr)) { - JpegClosure* closure = new JpegClosure(canvas); - parseJPEGArgs(info[2], *closure); - - canvas->Ref(); - closure->cb.Reset(info[0].As()); - - uv_work_t* req = new uv_work_t; - req->data = closure; - // Make sure the surface exists since we won't have an isolate context in the async block: - canvas->surface(); - uv_queue_work(uv_default_loop(), req, ToJpegBufferAsync, (uv_after_work_cb)ToBufferAsyncAfter); - - return; - } -#endif -} - -/* - * Canvas::StreamPNG callback. - */ - -static cairo_status_t -streamPNG(void *c, const uint8_t *data, unsigned len) { - Nan::HandleScope scope; - Nan::AsyncResource async("canvas:StreamPNG"); - PngClosure* closure = (PngClosure*) c; - Local buf = Nan::CopyBuffer((char *)data, len).ToLocalChecked(); - Local argv[3] = { - Nan::Null() - , buf - , Nan::New(len) }; - closure->cb.Call(sizeof argv / sizeof *argv, argv, &async); - return CAIRO_STATUS_SUCCESS; -} - -/* - * Stream PNG data synchronously. TODO async - * StreamPngSync(this, options: {palette?: Uint8ClampedArray, backgroundIndex?: uint32, compressionLevel: uint32, filters: uint32}) - */ - -NAN_METHOD(Canvas::StreamPNGSync) { - if (!info[0]->IsFunction()) - return Nan::ThrowTypeError("callback function required"); - - Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); - - PngClosure closure(canvas); - parsePNGArgs(info[1], closure); - - closure.cb.Reset(Local::Cast(info[0])); - - Nan::TryCatch try_catch; - - cairo_status_t status = canvas_write_to_png_stream(canvas->surface(), streamPNG, &closure); - - if (try_catch.HasCaught()) { - try_catch.ReThrow(); - return; - } else if (status) { - Local argv[1] = { Canvas::Error(status) }; - Nan::Call(closure.cb, Nan::GetCurrentContext()->Global(), sizeof argv / sizeof *argv, argv); - } else { - Local argv[3] = { - Nan::Null() - , Nan::Null() - , Nan::New(0) }; - Nan::Call(closure.cb, Nan::GetCurrentContext()->Global(), sizeof argv / sizeof *argv, argv); - } - return; -} - - -struct PdfStreamInfo { - Local fn; - uint32_t len; - uint8_t* data; -}; - - -/* - * Canvas::StreamPDF FreeCallback - */ - -void stream_pdf_free(char *, void *) {} - -/* - * Canvas::StreamPDF callback. - */ - -static cairo_status_t -streamPDF(void *c, const uint8_t *data, unsigned len) { - Nan::HandleScope scope; - Nan::AsyncResource async("canvas:StreamPDF"); - PdfStreamInfo* streaminfo = static_cast(c); - // TODO this is technically wrong, we're returning a pointer to the data in a - // vector in a class with automatic storage duration. If the canvas goes out - // of scope while we're in the handler, a use-after-free could happen. - Local buf = Nan::NewBuffer(const_cast(reinterpret_cast(data)), len, stream_pdf_free, 0).ToLocalChecked(); - Local argv[3] = { - Nan::Null() - , buf - , Nan::New(len) }; - async.runInAsyncScope(Nan::GetCurrentContext()->Global(), streaminfo->fn, sizeof argv / sizeof *argv, argv); - return CAIRO_STATUS_SUCCESS; -} - - -cairo_status_t canvas_write_to_pdf_stream(cairo_surface_t *surface, cairo_write_func_t write_func, PdfStreamInfo* streaminfo) { - size_t whole_chunks = streaminfo->len / PAGE_SIZE; - size_t remainder = streaminfo->len - whole_chunks * PAGE_SIZE; - - for (size_t i = 0; i < whole_chunks; ++i) { - write_func(streaminfo, &streaminfo->data[i * PAGE_SIZE], PAGE_SIZE); - } - - if (remainder) { - write_func(streaminfo, &streaminfo->data[whole_chunks * PAGE_SIZE], remainder); - } - - return CAIRO_STATUS_SUCCESS; -} - -/* - * Stream PDF data synchronously. - */ - -NAN_METHOD(Canvas::StreamPDFSync) { - if (!info[0]->IsFunction()) - return Nan::ThrowTypeError("callback function required"); - - Canvas *canvas = Nan::ObjectWrap::Unwrap(info.Holder()); - - if (canvas->backend()->getName() != "pdf") - return Nan::ThrowTypeError("wrong canvas type"); - -#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 16, 0) - if (info[1]->IsObject()) { - setPdfMetadata(canvas, Nan::To(info[1]).ToLocalChecked()); - } -#endif - - cairo_surface_finish(canvas->surface()); - - PdfSvgClosure* closure = static_cast(canvas->backend())->closure(); - Local fn = info[0].As(); - PdfStreamInfo streaminfo; - streaminfo.fn = fn; - streaminfo.data = &closure->vec[0]; - streaminfo.len = closure->vec.size(); - - Nan::TryCatch try_catch; - - cairo_status_t status = canvas_write_to_pdf_stream(canvas->surface(), streamPDF, &streaminfo); - - if (try_catch.HasCaught()) { - try_catch.ReThrow(); - } else if (status) { - Local error = Canvas::Error(status); - Nan::Call(fn, Nan::GetCurrentContext()->Global(), 1, &error); - } else { - Local argv[3] = { - Nan::Null() - , Nan::Null() - , Nan::New(0) }; - Nan::Call(fn, Nan::GetCurrentContext()->Global(), sizeof argv / sizeof *argv, argv); - } -} - -/* - * Stream JPEG data synchronously. - */ - -#ifdef HAVE_JPEG -static uint32_t getSafeBufSize(Canvas* canvas) { - // Don't allow the buffer size to exceed the size of the canvas (#674) - // TODO not sure if this is really correct, but it fixed #674 - return (std::min)(canvas->getWidth() * canvas->getHeight() * 4, static_cast(PAGE_SIZE)); -} - -NAN_METHOD(Canvas::StreamJPEGSync) { - if (!info[1]->IsFunction()) - return Nan::ThrowTypeError("callback function required"); - - Canvas *canvas = Nan::ObjectWrap::Unwrap(info.This()); - JpegClosure closure(canvas); - parseJPEGArgs(info[0], closure); - closure.cb.Reset(Local::Cast(info[1])); - - Nan::TryCatch try_catch; - uint32_t bufsize = getSafeBufSize(canvas); - write_to_jpeg_stream(canvas->surface(), bufsize, &closure); - - if (try_catch.HasCaught()) { - try_catch.ReThrow(); - } - return; -} -#endif - -char * -str_value(Local val, const char *fallback, bool can_be_number) { - if (val->IsString() || (can_be_number && val->IsNumber())) { - return strdup(*Nan::Utf8String(val)); - } else if (fallback) { - return strdup(fallback); - } else { - return NULL; - } -} - -NAN_METHOD(Canvas::RegisterFont) { - if (!info[0]->IsString()) { - return Nan::ThrowError("Wrong argument type"); - } else if (!info[1]->IsObject()) { - return Nan::ThrowError(GENERIC_FACE_ERROR); - } - - Nan::Utf8String filePath(info[0]); - PangoFontDescription *sys_desc = get_pango_font_description((unsigned char *) *filePath); - - if (!sys_desc) return Nan::ThrowError("Could not parse font file"); - - PangoFontDescription *user_desc = pango_font_description_new(); - - // now check the attrs, there are many ways to be wrong - Local js_user_desc = Nan::To(info[1]).ToLocalChecked(); - Local family_prop = Nan::New("family").ToLocalChecked(); - Local weight_prop = Nan::New("weight").ToLocalChecked(); - Local style_prop = Nan::New("style").ToLocalChecked(); - - char *family = str_value(Nan::Get(js_user_desc, family_prop).ToLocalChecked(), NULL, false); - char *weight = str_value(Nan::Get(js_user_desc, weight_prop).ToLocalChecked(), "normal", true); - char *style = str_value(Nan::Get(js_user_desc, style_prop).ToLocalChecked(), "normal", false); - - if (family && weight && style) { - pango_font_description_set_weight(user_desc, Canvas::GetWeightFromCSSString(weight)); - pango_font_description_set_style(user_desc, Canvas::GetStyleFromCSSString(style)); - pango_font_description_set_family(user_desc, family); - - auto found = std::find_if(font_face_list.begin(), font_face_list.end(), [&](FontFace& f) { - return pango_font_description_equal(f.sys_desc, sys_desc); - }); - - if (found != font_face_list.end()) { - pango_font_description_free(found->user_desc); - found->user_desc = user_desc; - } else if (register_font((unsigned char *) *filePath)) { - FontFace face; - face.user_desc = user_desc; - face.sys_desc = sys_desc; - strncpy((char *)face.file_path, (char *) *filePath, 1023); - font_face_list.push_back(face); - } else { - pango_font_description_free(user_desc); - Nan::ThrowError("Could not load font to the system's font host"); - } - } else { - pango_font_description_free(user_desc); - Nan::ThrowError(GENERIC_FACE_ERROR); - } - - free(family); - free(weight); - free(style); -} - -NAN_METHOD(Canvas::DeregisterAllFonts) { - // Unload all fonts from pango to free up memory - bool success = true; - - std::for_each(font_face_list.begin(), font_face_list.end(), [&](FontFace& f) { - if (!deregister_font( (unsigned char *)f.file_path )) success = false; - pango_font_description_free(f.user_desc); - pango_font_description_free(f.sys_desc); - }); - - font_face_list.clear(); - if (!success) Nan::ThrowError("Could not deregister one or more fonts"); -} - -/* - * Initialize cairo surface. - */ - -Canvas::Canvas(Backend* backend) : ObjectWrap() { - _backend = backend; -} - -/* - * Destroy cairo surface. - */ - -Canvas::~Canvas() { - if (_backend != NULL) { - delete _backend; - } -} - -/* - * Get a PangoStyle from a CSS string (like "italic") - */ - -PangoStyle -Canvas::GetStyleFromCSSString(const char *style) { - PangoStyle s = PANGO_STYLE_NORMAL; - - if (strlen(style) > 0) { - if (0 == strcmp("italic", style)) { - s = PANGO_STYLE_ITALIC; - } else if (0 == strcmp("oblique", style)) { - s = PANGO_STYLE_OBLIQUE; - } - } - - return s; -} - -/* - * Get a PangoWeight from a CSS string ("bold", "100", etc) - */ - -PangoWeight -Canvas::GetWeightFromCSSString(const char *weight) { - PangoWeight w = PANGO_WEIGHT_NORMAL; - - if (strlen(weight) > 0) { - if (0 == strcmp("bold", weight)) { - w = PANGO_WEIGHT_BOLD; - } else if (0 == strcmp("100", weight)) { - w = PANGO_WEIGHT_THIN; - } else if (0 == strcmp("200", weight)) { - w = PANGO_WEIGHT_ULTRALIGHT; - } else if (0 == strcmp("300", weight)) { - w = PANGO_WEIGHT_LIGHT; - } else if (0 == strcmp("400", weight)) { - w = PANGO_WEIGHT_NORMAL; - } else if (0 == strcmp("500", weight)) { - w = PANGO_WEIGHT_MEDIUM; - } else if (0 == strcmp("600", weight)) { - w = PANGO_WEIGHT_SEMIBOLD; - } else if (0 == strcmp("700", weight)) { - w = PANGO_WEIGHT_BOLD; - } else if (0 == strcmp("800", weight)) { - w = PANGO_WEIGHT_ULTRABOLD; - } else if (0 == strcmp("900", weight)) { - w = PANGO_WEIGHT_HEAVY; - } - } - - return w; -} - -/* - * Given a user description, return a description that will select the - * font either from the system or @font-face - */ - -PangoFontDescription * -Canvas::ResolveFontDescription(const PangoFontDescription *desc) { - // One of the user-specified families could map to multiple SFNT family names - // if someone registered two different fonts under the same family name. - // https://drafts.csswg.org/css-fonts-3/#font-style-matching - FontFace best; - istringstream families(pango_font_description_get_family(desc)); - unordered_set seen_families; - string resolved_families; - bool first = true; - - for (string family; getline(families, family, ','); ) { - string renamed_families; - for (auto& ff : font_face_list) { - string pangofamily = string(pango_font_description_get_family(ff.user_desc)); - if (streq_casein(family, pangofamily)) { - const char* sys_desc_family_name = pango_font_description_get_family(ff.sys_desc); - bool unseen = seen_families.find(sys_desc_family_name) == seen_families.end(); - bool better = best.user_desc == nullptr || pango_font_description_better_match(desc, best.user_desc, ff.user_desc); - - // Avoid sending duplicate SFNT font names due to a bug in Pango for macOS: - // https://bugzilla.gnome.org/show_bug.cgi?id=762873 - if (unseen) { - seen_families.insert(sys_desc_family_name); - - if (better) { - renamed_families = string(sys_desc_family_name) + (renamed_families.size() ? "," : "") + renamed_families; - } else { - renamed_families = renamed_families + (renamed_families.size() ? "," : "") + sys_desc_family_name; - } - } - - if (first && better) best = ff; - } - } - - if (resolved_families.size()) resolved_families += ','; - resolved_families += renamed_families.size() ? renamed_families : family; - first = false; - } - - PangoFontDescription* ret = pango_font_description_copy(best.sys_desc ? best.sys_desc : desc); - pango_font_description_set_family(ret, resolved_families.c_str()); - - return ret; -} - -/* - * Re-alloc the surface, destroying the previous. - */ - -void -Canvas::resurface(Local canvas) { - Nan::HandleScope scope; - Local context; - - backend()->recreateSurface(); - - // Reset context - context = Nan::Get(canvas, Nan::New("context").ToLocalChecked()).ToLocalChecked(); - if (!context->IsUndefined()) { - Context2d *context2d = ObjectWrap::Unwrap(Nan::To(context).ToLocalChecked()); - cairo_t *prev = context2d->context(); - context2d->setContext(createCairoContext()); - context2d->resetState(); - cairo_destroy(prev); - } -} - -/** - * Wrapper around cairo_create() - * (do not call cairo_create directly, call this instead) - */ -cairo_t* -Canvas::createCairoContext() { - cairo_t* ret = cairo_create(surface()); - cairo_set_line_width(ret, 1); // Cairo defaults to 2 - return ret; -} - -/* - * Construct an Error from the given cairo status. - */ - -Local -Canvas::Error(cairo_status_t status) { - return Exception::Error(Nan::New(cairo_status_to_string(status)).ToLocalChecked()); -} - -#undef CHECK_RECEIVER diff --git a/src/Canvas.h b/src/Canvas.h deleted file mode 100644 index 60d3b4216..000000000 --- a/src/Canvas.h +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#pragma once - -#include "backend/Backend.h" -#include -#include "dll_visibility.h" -#include -#include -#include -#include -#include - -/* - * FontFace describes a font file in terms of one PangoFontDescription that - * will resolve to it and one that the user describes it as (like @font-face) - */ -class FontFace { - public: - PangoFontDescription *sys_desc = nullptr; - PangoFontDescription *user_desc = nullptr; - unsigned char file_path[1024]; -}; - -enum text_baseline_t : uint8_t { - TEXT_BASELINE_ALPHABETIC = 0, - TEXT_BASELINE_TOP = 1, - TEXT_BASELINE_BOTTOM = 2, - TEXT_BASELINE_MIDDLE = 3, - TEXT_BASELINE_IDEOGRAPHIC = 4, - TEXT_BASELINE_HANGING = 5 -}; - -enum text_align_t : int8_t { - TEXT_ALIGNMENT_LEFT = -1, - TEXT_ALIGNMENT_CENTER = 0, - TEXT_ALIGNMENT_RIGHT = 1, - // Currently same as LEFT and RIGHT without RTL support: - TEXT_ALIGNMENT_START = -2, - TEXT_ALIGNMENT_END = 2 -}; - -enum canvas_draw_mode_t : uint8_t { - TEXT_DRAW_PATHS, - TEXT_DRAW_GLYPHS -}; - -/* - * Canvas. - */ - -class Canvas: public Nan::ObjectWrap { - public: - static Nan::Persistent constructor; - static void Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target); - static NAN_METHOD(New); - static NAN_METHOD(ToBuffer); - static NAN_GETTER(GetType); - static NAN_GETTER(GetStride); - static NAN_GETTER(GetWidth); - static NAN_GETTER(GetHeight); - static NAN_SETTER(SetWidth); - static NAN_SETTER(SetHeight); - static NAN_METHOD(StreamPNGSync); - static NAN_METHOD(StreamPDFSync); - static NAN_METHOD(StreamJPEGSync); - static NAN_METHOD(RegisterFont); - static NAN_METHOD(DeregisterAllFonts); - static v8::Local Error(cairo_status_t status); - static void ToPngBufferAsync(uv_work_t *req); - static void ToJpegBufferAsync(uv_work_t *req); - static void ToBufferAsyncAfter(uv_work_t *req); - static PangoWeight GetWeightFromCSSString(const char *weight); - static PangoStyle GetStyleFromCSSString(const char *style); - static PangoFontDescription *ResolveFontDescription(const PangoFontDescription *desc); - - DLL_PUBLIC inline Backend* backend() { return _backend; } - DLL_PUBLIC inline cairo_surface_t* surface(){ return backend()->getSurface(); } - cairo_t* createCairoContext(); - - DLL_PUBLIC inline uint8_t *data(){ return cairo_image_surface_get_data(surface()); } - DLL_PUBLIC inline int stride(){ return cairo_image_surface_get_stride(surface()); } - DLL_PUBLIC inline std::size_t nBytes(){ - return static_cast(getHeight()) * stride(); - } - - DLL_PUBLIC inline int getWidth() { return backend()->getWidth(); } - DLL_PUBLIC inline int getHeight() { return backend()->getHeight(); } - - Canvas(Backend* backend); - void resurface(v8::Local canvas); - - private: - ~Canvas(); - Backend* _backend; -}; diff --git a/src/CanvasError.h b/src/CanvasError.h deleted file mode 100644 index cb751e312..000000000 --- a/src/CanvasError.h +++ /dev/null @@ -1,23 +0,0 @@ -#pragma once - -#include - -class CanvasError { - public: - std::string message; - std::string syscall; - std::string path; - int cerrno = 0; - void set(const char* iMessage = NULL, const char* iSyscall = NULL, int iErrno = 0, const char* iPath = NULL) { - if (iMessage) message.assign(iMessage); - if (iSyscall) syscall.assign(iSyscall); - cerrno = iErrno; - if (iPath) path.assign(iPath); - } - void reset() { - message.clear(); - syscall.clear(); - path.clear(); - cerrno = 0; - } -}; diff --git a/src/CanvasGradient.cc b/src/CanvasGradient.cc deleted file mode 100644 index 280fc2e8c..000000000 --- a/src/CanvasGradient.cc +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#include "CanvasGradient.h" - -#include "Canvas.h" -#include "color.h" - -using namespace v8; - -Nan::Persistent Gradient::constructor; - -/* - * Initialize CanvasGradient. - */ - -void -Gradient::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) { - Nan::HandleScope scope; - - // Constructor - Local ctor = Nan::New(Gradient::New); - constructor.Reset(ctor); - ctor->InstanceTemplate()->SetInternalFieldCount(1); - ctor->SetClassName(Nan::New("CanvasGradient").ToLocalChecked()); - - // Prototype - Nan::SetPrototypeMethod(ctor, "addColorStop", AddColorStop); - Local ctx = Nan::GetCurrentContext(); - Nan::Set(target, - Nan::New("CanvasGradient").ToLocalChecked(), - ctor->GetFunction(ctx).ToLocalChecked()); -} - -/* - * Initialize a new CanvasGradient. - */ - -NAN_METHOD(Gradient::New) { - if (!info.IsConstructCall()) { - return Nan::ThrowTypeError("Class constructors cannot be invoked without 'new'"); - } - - // Linear - if (4 == info.Length()) { - Gradient *grad = new Gradient( - Nan::To(info[0]).FromMaybe(0) - , Nan::To(info[1]).FromMaybe(0) - , Nan::To(info[2]).FromMaybe(0) - , Nan::To(info[3]).FromMaybe(0)); - grad->Wrap(info.This()); - info.GetReturnValue().Set(info.This()); - return; - } - - // Radial - if (6 == info.Length()) { - Gradient *grad = new Gradient( - Nan::To(info[0]).FromMaybe(0) - , Nan::To(info[1]).FromMaybe(0) - , Nan::To(info[2]).FromMaybe(0) - , Nan::To(info[3]).FromMaybe(0) - , Nan::To(info[4]).FromMaybe(0) - , Nan::To(info[5]).FromMaybe(0)); - grad->Wrap(info.This()); - info.GetReturnValue().Set(info.This()); - return; - } - - return Nan::ThrowTypeError("invalid arguments"); -} - -/* - * Add color stop. - */ - -NAN_METHOD(Gradient::AddColorStop) { - if (!info[0]->IsNumber()) - return Nan::ThrowTypeError("offset required"); - if (!info[1]->IsString()) - return Nan::ThrowTypeError("color string required"); - - Gradient *grad = Nan::ObjectWrap::Unwrap(info.This()); - short ok; - Nan::Utf8String str(info[1]); - uint32_t rgba = rgba_from_string(*str, &ok); - - if (ok) { - rgba_t color = rgba_create(rgba); - cairo_pattern_add_color_stop_rgba( - grad->pattern() - , Nan::To(info[0]).FromMaybe(0) - , color.r - , color.g - , color.b - , color.a); - } else { - return Nan::ThrowTypeError("parse color failed"); - } -} - -/* - * Initialize linear gradient. - */ - -Gradient::Gradient(double x0, double y0, double x1, double y1) { - _pattern = cairo_pattern_create_linear(x0, y0, x1, y1); -} - -/* - * Initialize radial gradient. - */ - -Gradient::Gradient(double x0, double y0, double r0, double x1, double y1, double r1) { - _pattern = cairo_pattern_create_radial(x0, y0, r0, x1, y1, r1); -} - -/* - * Destroy the pattern. - */ - -Gradient::~Gradient() { - cairo_pattern_destroy(_pattern); -} diff --git a/src/CanvasGradient.h b/src/CanvasGradient.h deleted file mode 100644 index b6902c428..000000000 --- a/src/CanvasGradient.h +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#pragma once - -#include -#include -#include - -class Gradient: public Nan::ObjectWrap { - public: - static Nan::Persistent constructor; - static void Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target); - static NAN_METHOD(New); - static NAN_METHOD(AddColorStop); - Gradient(double x0, double y0, double x1, double y1); - Gradient(double x0, double y0, double r0, double x1, double y1, double r1); - inline cairo_pattern_t *pattern(){ return _pattern; } - - private: - ~Gradient(); - cairo_pattern_t *_pattern; -}; diff --git a/src/CanvasPattern.cc b/src/CanvasPattern.cc deleted file mode 100644 index fa3848b37..000000000 --- a/src/CanvasPattern.cc +++ /dev/null @@ -1,136 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#include "CanvasPattern.h" - -#include "Canvas.h" -#include "Image.h" - -using namespace v8; - -const cairo_user_data_key_t *pattern_repeat_key; - -Nan::Persistent Pattern::constructor; -Nan::Persistent Pattern::_DOMMatrix; - -/* - * Initialize CanvasPattern. - */ - -void -Pattern::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) { - Nan::HandleScope scope; - - // Constructor - Local ctor = Nan::New(Pattern::New); - constructor.Reset(ctor); - ctor->InstanceTemplate()->SetInternalFieldCount(1); - ctor->SetClassName(Nan::New("CanvasPattern").ToLocalChecked()); - Nan::SetPrototypeMethod(ctor, "setTransform", SetTransform); - - // Prototype - Local ctx = Nan::GetCurrentContext(); - Nan::Set(target, Nan::New("CanvasPattern").ToLocalChecked(), ctor->GetFunction(ctx).ToLocalChecked()); - Nan::Set(target, Nan::New("CanvasPatternInit").ToLocalChecked(), Nan::New(SaveExternalModules)); -} - -/* - * Save some external modules as private references. - */ - -NAN_METHOD(Pattern::SaveExternalModules) { - _DOMMatrix.Reset(Nan::To(info[0]).ToLocalChecked()); -} - -/* - * Initialize a new CanvasPattern. - */ - -NAN_METHOD(Pattern::New) { - if (!info.IsConstructCall()) { - return Nan::ThrowTypeError("Class constructors cannot be invoked without 'new'"); - } - - cairo_surface_t *surface; - - Local obj = Nan::To(info[0]).ToLocalChecked(); - - // Image - if (Nan::New(Image::constructor)->HasInstance(obj)) { - Image *img = Nan::ObjectWrap::Unwrap(obj); - if (!img->isComplete()) { - return Nan::ThrowError("Image given has not completed loading"); - } - surface = img->surface(); - - // Canvas - } else if (Nan::New(Canvas::constructor)->HasInstance(obj)) { - Canvas *canvas = Nan::ObjectWrap::Unwrap(obj); - surface = canvas->surface(); - // Invalid - } else { - return Nan::ThrowTypeError("Image or Canvas expected"); - } - repeat_type_t repeat = REPEAT; - if (0 == strcmp("no-repeat", *Nan::Utf8String(info[1]))) { - repeat = NO_REPEAT; - } else if (0 == strcmp("repeat-x", *Nan::Utf8String(info[1]))) { - repeat = REPEAT_X; - } else if (0 == strcmp("repeat-y", *Nan::Utf8String(info[1]))) { - repeat = REPEAT_Y; - } - Pattern *pattern = new Pattern(surface, repeat); - pattern->Wrap(info.This()); - info.GetReturnValue().Set(info.This()); -} - -/* - * Set the pattern-space to user-space transform. - */ -NAN_METHOD(Pattern::SetTransform) { - Pattern *pattern = Nan::ObjectWrap::Unwrap(info.This()); - Local ctx = Nan::GetCurrentContext(); - Local mat = Nan::To(info[0]).ToLocalChecked(); - -#if NODE_MAJOR_VERSION >= 8 - if (!mat->InstanceOf(ctx, _DOMMatrix.Get(Isolate::GetCurrent())).ToChecked()) { - return Nan::ThrowTypeError("Expected DOMMatrix"); - } -#endif - - cairo_matrix_t matrix; - cairo_matrix_init(&matrix, - Nan::To(Nan::Get(mat, Nan::New("a").ToLocalChecked()).ToLocalChecked()).FromMaybe(1), - Nan::To(Nan::Get(mat, Nan::New("b").ToLocalChecked()).ToLocalChecked()).FromMaybe(0), - Nan::To(Nan::Get(mat, Nan::New("c").ToLocalChecked()).ToLocalChecked()).FromMaybe(0), - Nan::To(Nan::Get(mat, Nan::New("d").ToLocalChecked()).ToLocalChecked()).FromMaybe(1), - Nan::To(Nan::Get(mat, Nan::New("e").ToLocalChecked()).ToLocalChecked()).FromMaybe(0), - Nan::To(Nan::Get(mat, Nan::New("f").ToLocalChecked()).ToLocalChecked()).FromMaybe(0) - ); - - cairo_matrix_invert(&matrix); - cairo_pattern_set_matrix(pattern->_pattern, &matrix); -} - - -/* - * Initialize pattern. - */ - -Pattern::Pattern(cairo_surface_t *surface, repeat_type_t repeat) { - _pattern = cairo_pattern_create_for_surface(surface); - _repeat = repeat; - cairo_pattern_set_user_data(_pattern, pattern_repeat_key, &_repeat, NULL); -} - -repeat_type_t Pattern::get_repeat_type_for_cairo_pattern(cairo_pattern_t *pattern) { - void *ud = cairo_pattern_get_user_data(pattern, pattern_repeat_key); - return *reinterpret_cast(ud); -} - -/* - * Destroy the pattern. - */ - -Pattern::~Pattern() { - cairo_pattern_destroy(_pattern); -} diff --git a/src/CanvasPattern.h b/src/CanvasPattern.h deleted file mode 100644 index 29e2171b6..000000000 --- a/src/CanvasPattern.h +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) 2011 LearnBoost - -#pragma once - -#include -#include -#include - -/* - * Canvas types. - */ - -typedef enum { - NO_REPEAT, // match CAIRO_EXTEND_NONE - REPEAT, // match CAIRO_EXTEND_REPEAT - REPEAT_X, // needs custom processing - REPEAT_Y // needs custom processing -} repeat_type_t; - -extern const cairo_user_data_key_t *pattern_repeat_key; - -class Pattern: public Nan::ObjectWrap { - public: - static Nan::Persistent constructor; - static Nan::Persistent _DOMMatrix; - static void Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target); - static NAN_METHOD(New); - static NAN_METHOD(SaveExternalModules); - static NAN_METHOD(SetTransform); - static repeat_type_t get_repeat_type_for_cairo_pattern(cairo_pattern_t *pattern); - Pattern(cairo_surface_t *surface, repeat_type_t repeat); - inline cairo_pattern_t *pattern(){ return _pattern; } - private: - ~Pattern(); - cairo_pattern_t *_pattern; - repeat_type_t _repeat; -}; diff --git a/src/CanvasRenderingContext2d.cc b/src/CanvasRenderingContext2d.cc deleted file mode 100644 index 5bfe08d6a..000000000 --- a/src/CanvasRenderingContext2d.cc +++ /dev/null @@ -1,3369 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#include "CanvasRenderingContext2d.h" - -#include -#include "backend/ImageBackend.h" -#include -#include "Canvas.h" -#include "CanvasGradient.h" -#include "CanvasPattern.h" -#include -#include -#include "Image.h" -#include "ImageData.h" -#include -#include -#include "Point.h" -#include -#include "Util.h" -#include - -using namespace v8; - -Nan::Persistent Context2d::constructor; - -/* - * Rectangle arg assertions. - */ - -#define RECT_ARGS \ - double args[4]; \ - if(!checkArgs(info, args, 4)) \ - return; \ - double x = args[0]; \ - double y = args[1]; \ - double width = args[2]; \ - double height = args[3]; - -#define CHECK_RECEIVER(prop) \ - if (!Context2d::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { \ - Nan::ThrowTypeError("Method " #prop " called on incompatible receiver"); \ - return; \ - } - -constexpr double twoPi = M_PI * 2.; - -/* - * Simple helper macro for a rather verbose function call. - */ - -#define PANGO_LAYOUT_GET_METRICS(LAYOUT) pango_context_get_metrics( \ - pango_layout_get_context(LAYOUT), \ - pango_layout_get_font_description(LAYOUT), \ - pango_context_get_language(pango_layout_get_context(LAYOUT))) - -inline static bool checkArgs(const Nan::FunctionCallbackInfo &info, double *args, int argsNum, int offset = 0){ - int argsEnd = offset + argsNum; - bool areArgsValid = true; - - for (int i = offset; i < argsEnd; i++) { - double val = Nan::To(info[i]).FromMaybe(0); - - if (areArgsValid) { - if (!std::isfinite(val)) { - // We should continue the loop instead of returning immediately - // See https://html.spec.whatwg.org/multipage/canvas.html - - areArgsValid = false; - continue; - } - - args[i - offset] = val; - } - } - - return areArgsValid; -} - -Nan::Persistent Context2d::_DOMMatrix; -Nan::Persistent Context2d::_parseFont; - -/* - * Initialize Context2d. - */ - -void -Context2d::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) { - Nan::HandleScope scope; - - // Constructor - Local ctor = Nan::New(Context2d::New); - constructor.Reset(ctor); - ctor->InstanceTemplate()->SetInternalFieldCount(1); - ctor->SetClassName(Nan::New("CanvasRenderingContext2D").ToLocalChecked()); - - // Prototype - Local proto = ctor->PrototypeTemplate(); - Nan::SetPrototypeMethod(ctor, "drawImage", DrawImage); - Nan::SetPrototypeMethod(ctor, "putImageData", PutImageData); - Nan::SetPrototypeMethod(ctor, "getImageData", GetImageData); - Nan::SetPrototypeMethod(ctor, "createImageData", CreateImageData); - Nan::SetPrototypeMethod(ctor, "addPage", AddPage); - Nan::SetPrototypeMethod(ctor, "save", Save); - Nan::SetPrototypeMethod(ctor, "restore", Restore); - Nan::SetPrototypeMethod(ctor, "rotate", Rotate); - Nan::SetPrototypeMethod(ctor, "translate", Translate); - Nan::SetPrototypeMethod(ctor, "transform", Transform); - Nan::SetPrototypeMethod(ctor, "getTransform", GetTransform); - Nan::SetPrototypeMethod(ctor, "resetTransform", ResetTransform); - Nan::SetPrototypeMethod(ctor, "setTransform", SetTransform); - Nan::SetPrototypeMethod(ctor, "isPointInPath", IsPointInPath); - Nan::SetPrototypeMethod(ctor, "scale", Scale); - Nan::SetPrototypeMethod(ctor, "clip", Clip); - Nan::SetPrototypeMethod(ctor, "fill", Fill); - Nan::SetPrototypeMethod(ctor, "stroke", Stroke); - Nan::SetPrototypeMethod(ctor, "fillText", FillText); - Nan::SetPrototypeMethod(ctor, "strokeText", StrokeText); - Nan::SetPrototypeMethod(ctor, "fillRect", FillRect); - Nan::SetPrototypeMethod(ctor, "strokeRect", StrokeRect); - Nan::SetPrototypeMethod(ctor, "clearRect", ClearRect); - Nan::SetPrototypeMethod(ctor, "rect", Rect); - Nan::SetPrototypeMethod(ctor, "roundRect", RoundRect); - Nan::SetPrototypeMethod(ctor, "measureText", MeasureText); - Nan::SetPrototypeMethod(ctor, "moveTo", MoveTo); - Nan::SetPrototypeMethod(ctor, "lineTo", LineTo); - Nan::SetPrototypeMethod(ctor, "bezierCurveTo", BezierCurveTo); - Nan::SetPrototypeMethod(ctor, "quadraticCurveTo", QuadraticCurveTo); - Nan::SetPrototypeMethod(ctor, "beginPath", BeginPath); - Nan::SetPrototypeMethod(ctor, "closePath", ClosePath); - Nan::SetPrototypeMethod(ctor, "arc", Arc); - Nan::SetPrototypeMethod(ctor, "arcTo", ArcTo); - Nan::SetPrototypeMethod(ctor, "ellipse", Ellipse); - Nan::SetPrototypeMethod(ctor, "setLineDash", SetLineDash); - Nan::SetPrototypeMethod(ctor, "getLineDash", GetLineDash); - Nan::SetPrototypeMethod(ctor, "createPattern", CreatePattern); - Nan::SetPrototypeMethod(ctor, "createLinearGradient", CreateLinearGradient); - Nan::SetPrototypeMethod(ctor, "createRadialGradient", CreateRadialGradient); - Nan::SetAccessor(proto, Nan::New("pixelFormat").ToLocalChecked(), GetFormat); - Nan::SetAccessor(proto, Nan::New("patternQuality").ToLocalChecked(), GetPatternQuality, SetPatternQuality); - Nan::SetAccessor(proto, Nan::New("imageSmoothingEnabled").ToLocalChecked(), GetImageSmoothingEnabled, SetImageSmoothingEnabled); - Nan::SetAccessor(proto, Nan::New("globalCompositeOperation").ToLocalChecked(), GetGlobalCompositeOperation, SetGlobalCompositeOperation); - Nan::SetAccessor(proto, Nan::New("globalAlpha").ToLocalChecked(), GetGlobalAlpha, SetGlobalAlpha); - Nan::SetAccessor(proto, Nan::New("shadowColor").ToLocalChecked(), GetShadowColor, SetShadowColor); - Nan::SetAccessor(proto, Nan::New("miterLimit").ToLocalChecked(), GetMiterLimit, SetMiterLimit); - Nan::SetAccessor(proto, Nan::New("lineWidth").ToLocalChecked(), GetLineWidth, SetLineWidth); - Nan::SetAccessor(proto, Nan::New("lineCap").ToLocalChecked(), GetLineCap, SetLineCap); - Nan::SetAccessor(proto, Nan::New("lineJoin").ToLocalChecked(), GetLineJoin, SetLineJoin); - Nan::SetAccessor(proto, Nan::New("lineDashOffset").ToLocalChecked(), GetLineDashOffset, SetLineDashOffset); - Nan::SetAccessor(proto, Nan::New("shadowOffsetX").ToLocalChecked(), GetShadowOffsetX, SetShadowOffsetX); - Nan::SetAccessor(proto, Nan::New("shadowOffsetY").ToLocalChecked(), GetShadowOffsetY, SetShadowOffsetY); - Nan::SetAccessor(proto, Nan::New("shadowBlur").ToLocalChecked(), GetShadowBlur, SetShadowBlur); - Nan::SetAccessor(proto, Nan::New("antialias").ToLocalChecked(), GetAntiAlias, SetAntiAlias); - Nan::SetAccessor(proto, Nan::New("textDrawingMode").ToLocalChecked(), GetTextDrawingMode, SetTextDrawingMode); - Nan::SetAccessor(proto, Nan::New("quality").ToLocalChecked(), GetQuality, SetQuality); - Nan::SetAccessor(proto, Nan::New("currentTransform").ToLocalChecked(), GetCurrentTransform, SetCurrentTransform); - Nan::SetAccessor(proto, Nan::New("fillStyle").ToLocalChecked(), GetFillStyle, SetFillStyle); - Nan::SetAccessor(proto, Nan::New("strokeStyle").ToLocalChecked(), GetStrokeStyle, SetStrokeStyle); - Nan::SetAccessor(proto, Nan::New("font").ToLocalChecked(), GetFont, SetFont); - Nan::SetAccessor(proto, Nan::New("textBaseline").ToLocalChecked(), GetTextBaseline, SetTextBaseline); - Nan::SetAccessor(proto, Nan::New("textAlign").ToLocalChecked(), GetTextAlign, SetTextAlign); - Local ctx = Nan::GetCurrentContext(); - Nan::Set(target, Nan::New("CanvasRenderingContext2d").ToLocalChecked(), ctor->GetFunction(ctx).ToLocalChecked()); - Nan::Set(target, Nan::New("CanvasRenderingContext2dInit").ToLocalChecked(), Nan::New(SaveExternalModules)); -} - -/* - * Create a cairo context. - */ - -Context2d::Context2d(Canvas *canvas) { - _canvas = canvas; - _context = canvas->createCairoContext(); - _layout = pango_cairo_create_layout(_context); - - // As of January 2023, Pango rounds glyph positions which renders text wider - // or narrower than the browser. See #2184 for more information -#if PANGO_VERSION_CHECK(1, 44, 0) - pango_context_set_round_glyph_positions(pango_layout_get_context(_layout), FALSE); -#endif - - states.emplace(); - state = &states.top(); - pango_layout_set_font_description(_layout, state->fontDescription); -} - -/* - * Destroy cairo context. - */ - -Context2d::~Context2d() { - g_object_unref(_layout); - cairo_destroy(_context); - _resetPersistentHandles(); -} - -/* - * Reset canvas state. - */ - -void Context2d::resetState() { - states.pop(); - states.emplace(); - pango_layout_set_font_description(_layout, state->fontDescription); - _resetPersistentHandles(); -} - -void Context2d::_resetPersistentHandles() { - _fillStyle.Reset(); - _strokeStyle.Reset(); -} - -/* - * Save cairo / canvas state. - */ - -void -Context2d::save() { - cairo_save(_context); - states.emplace(states.top()); - state = &states.top(); -} - -/* - * Restore cairo / canvas state. - */ - -void -Context2d::restore() { - if (states.size() > 1) { - cairo_restore(_context); - states.pop(); - state = &states.top(); - pango_layout_set_font_description(_layout, state->fontDescription); - } -} - -/* - * Save flat path. - */ - -void -Context2d::savePath() { - _path = cairo_copy_path_flat(_context); - cairo_new_path(_context); -} - -/* - * Restore flat path. - */ - -void -Context2d::restorePath() { - cairo_new_path(_context); - cairo_append_path(_context, _path); - cairo_path_destroy(_path); -} - -/* - * Create temporary surface for gradient or pattern transparency - */ -cairo_pattern_t* -create_transparent_gradient(cairo_pattern_t *source, float alpha) { - double x0; - double y0; - double x1; - double y1; - double r0; - double r1; - int count; - int i; - double offset; - double r; - double g; - double b; - double a; - cairo_pattern_t *newGradient; - cairo_pattern_type_t type = cairo_pattern_get_type(source); - cairo_pattern_get_color_stop_count(source, &count); - if (type == CAIRO_PATTERN_TYPE_LINEAR) { - cairo_pattern_get_linear_points (source, &x0, &y0, &x1, &y1); - newGradient = cairo_pattern_create_linear(x0, y0, x1, y1); - } else if (type == CAIRO_PATTERN_TYPE_RADIAL) { - cairo_pattern_get_radial_circles(source, &x0, &y0, &r0, &x1, &y1, &r1); - newGradient = cairo_pattern_create_radial(x0, y0, r0, x1, y1, r1); - } else { - Nan::ThrowError("Unexpected gradient type"); - return NULL; - } - for ( i = 0; i < count; i++ ) { - cairo_pattern_get_color_stop_rgba(source, i, &offset, &r, &g, &b, &a); - cairo_pattern_add_color_stop_rgba(newGradient, offset, r, g, b, a * alpha); - } - return newGradient; -} - -cairo_pattern_t* -create_transparent_pattern(cairo_pattern_t *source, float alpha) { - cairo_surface_t *surface; - cairo_pattern_get_surface(source, &surface); - int width = cairo_image_surface_get_width(surface); - int height = cairo_image_surface_get_height(surface); - cairo_surface_t *mask_surface = cairo_image_surface_create( - CAIRO_FORMAT_ARGB32, - width, - height); - cairo_t *mask_context = cairo_create(mask_surface); - if (cairo_status(mask_context) != CAIRO_STATUS_SUCCESS) { - Nan::ThrowError("Failed to initialize context"); - return NULL; - } - cairo_set_source(mask_context, source); - cairo_paint_with_alpha(mask_context, alpha); - cairo_destroy(mask_context); - cairo_pattern_t* newPattern = cairo_pattern_create_for_surface(mask_surface); - cairo_surface_destroy(mask_surface); - return newPattern; -} - -/* - * Fill and apply shadow. - */ - -void -Context2d::setFillRule(v8::Local value) { - cairo_fill_rule_t rule = CAIRO_FILL_RULE_WINDING; - if (value->IsString()) { - Nan::Utf8String str(value); - if (std::strcmp(*str, "evenodd") == 0) { - rule = CAIRO_FILL_RULE_EVEN_ODD; - } - } - cairo_set_fill_rule(_context, rule); -} - -void -Context2d::fill(bool preserve) { - cairo_pattern_t *new_pattern; - bool needsRestore = false; - if (state->fillPattern) { - if (state->globalAlpha < 1) { - new_pattern = create_transparent_pattern(state->fillPattern, state->globalAlpha); - if (new_pattern == NULL) { - // failed to allocate; Nan::ThrowError has already been called, so return from this fn. - return; - } - cairo_set_source(_context, new_pattern); - cairo_pattern_destroy(new_pattern); - } else { - cairo_pattern_set_filter(state->fillPattern, state->patternQuality); - cairo_set_source(_context, state->fillPattern); - } - repeat_type_t repeat = Pattern::get_repeat_type_for_cairo_pattern(state->fillPattern); - if (repeat == NO_REPEAT) { - cairo_pattern_set_extend(cairo_get_source(_context), CAIRO_EXTEND_NONE); - } else if (repeat == REPEAT) { - cairo_pattern_set_extend(cairo_get_source(_context), CAIRO_EXTEND_REPEAT); - } else { - cairo_save(_context); - cairo_path_t *savedPath = cairo_copy_path(_context); - cairo_surface_t *patternSurface = nullptr; - cairo_pattern_get_surface(cairo_get_source(_context), &patternSurface); - - double width, height; - if (repeat == REPEAT_X) { - double x1, x2; - cairo_path_extents(_context, &x1, nullptr, &x2, nullptr); - width = x2 - x1; - height = cairo_image_surface_get_height(patternSurface); - } else { - double y1, y2; - cairo_path_extents(_context, nullptr, &y1, nullptr, &y2); - width = cairo_image_surface_get_width(patternSurface); - height = y2 - y1; - } - - cairo_new_path(_context); - cairo_rectangle(_context, 0, 0, width, height); - cairo_clip(_context); - cairo_append_path(_context, savedPath); - cairo_path_destroy(savedPath); - cairo_pattern_set_extend(cairo_get_source(_context), CAIRO_EXTEND_REPEAT); - needsRestore = true; - } - } else if (state->fillGradient) { - if (state->globalAlpha < 1) { - new_pattern = create_transparent_gradient(state->fillGradient, state->globalAlpha); - if (new_pattern == NULL) { - // failed to recognize gradient; Nan::ThrowError has already been called, so return from this fn. - return; - } - cairo_pattern_set_filter(new_pattern, state->patternQuality); - cairo_set_source(_context, new_pattern); - cairo_pattern_destroy(new_pattern); - } else { - cairo_pattern_set_filter(state->fillGradient, state->patternQuality); - cairo_set_source(_context, state->fillGradient); - } - } else { - setSourceRGBA(state->fill); - } - if (preserve) { - hasShadow() - ? shadow(cairo_fill_preserve) - : cairo_fill_preserve(_context); - } else { - hasShadow() - ? shadow(cairo_fill) - : cairo_fill(_context); - } - if (needsRestore) { - cairo_restore(_context); - } -} - -/* - * Stroke and apply shadow. - */ - -void -Context2d::stroke(bool preserve) { - cairo_pattern_t *new_pattern; - if (state->strokePattern) { - if (state->globalAlpha < 1) { - new_pattern = create_transparent_pattern(state->strokePattern, state->globalAlpha); - if (new_pattern == NULL) { - // failed to allocate; Nan::ThrowError has already been called, so return from this fn. - return; - } - cairo_set_source(_context, new_pattern); - cairo_pattern_destroy(new_pattern); - } else { - cairo_pattern_set_filter(state->strokePattern, state->patternQuality); - cairo_set_source(_context, state->strokePattern); - } - repeat_type_t repeat = Pattern::get_repeat_type_for_cairo_pattern(state->strokePattern); - if (NO_REPEAT == repeat) { - cairo_pattern_set_extend(cairo_get_source(_context), CAIRO_EXTEND_NONE); - } else { - cairo_pattern_set_extend(cairo_get_source(_context), CAIRO_EXTEND_REPEAT); - } - } else if (state->strokeGradient) { - if (state->globalAlpha < 1) { - new_pattern = create_transparent_gradient(state->strokeGradient, state->globalAlpha); - if (new_pattern == NULL) { - // failed to recognize gradient; Nan::ThrowError has already been called, so return from this fn. - return; - } - cairo_pattern_set_filter(new_pattern, state->patternQuality); - cairo_set_source(_context, new_pattern); - cairo_pattern_destroy(new_pattern); - } else { - cairo_pattern_set_filter(state->strokeGradient, state->patternQuality); - cairo_set_source(_context, state->strokeGradient); - } - } else { - setSourceRGBA(state->stroke); - } - - if (preserve) { - hasShadow() - ? shadow(cairo_stroke_preserve) - : cairo_stroke_preserve(_context); - } else { - hasShadow() - ? shadow(cairo_stroke) - : cairo_stroke(_context); - } -} - -/* - * Apply shadow with the given draw fn. - */ - -void -Context2d::shadow(void (fn)(cairo_t *cr)) { - cairo_path_t *path = cairo_copy_path_flat(_context); - cairo_save(_context); - - // shadowOffset is unaffected by current transform - cairo_matrix_t path_matrix; - cairo_get_matrix(_context, &path_matrix); - cairo_identity_matrix(_context); - - // Apply shadow - cairo_push_group(_context); - - // No need to invoke blur if shadowBlur is 0 - if (state->shadowBlur) { - // find out extent of path - double x1, y1, x2, y2; - if (fn == cairo_fill || fn == cairo_fill_preserve) { - cairo_fill_extents(_context, &x1, &y1, &x2, &y2); - } else { - cairo_stroke_extents(_context, &x1, &y1, &x2, &y2); - } - - // create new image surface that size + padding for blurring - double dx = x2-x1, dy = y2-y1; - cairo_user_to_device_distance(_context, &dx, &dy); - int pad = state->shadowBlur * 2; - cairo_surface_t *shadow_surface = cairo_image_surface_create( - CAIRO_FORMAT_ARGB32, - dx + 2 * pad, - dy + 2 * pad); - cairo_t *shadow_context = cairo_create(shadow_surface); - - // transform path to the right place - cairo_translate(shadow_context, pad-x1, pad-y1); - cairo_transform(shadow_context, &path_matrix); - - // set lineCap lineJoin lineDash - cairo_set_line_cap(shadow_context, cairo_get_line_cap(_context)); - cairo_set_line_join(shadow_context, cairo_get_line_join(_context)); - - double offset; - int dashes = cairo_get_dash_count(_context); - std::vector a(dashes); - cairo_get_dash(_context, a.data(), &offset); - cairo_set_dash(shadow_context, a.data(), dashes, offset); - - // draw the path and blur - cairo_set_line_width(shadow_context, cairo_get_line_width(_context)); - cairo_new_path(shadow_context); - cairo_append_path(shadow_context, path); - setSourceRGBA(shadow_context, state->shadow); - fn(shadow_context); - blur(shadow_surface, state->shadowBlur); - - // paint to original context - cairo_set_source_surface(_context, shadow_surface, - x1 - pad + state->shadowOffsetX + 1, - y1 - pad + state->shadowOffsetY + 1); - cairo_paint(_context); - cairo_destroy(shadow_context); - cairo_surface_destroy(shadow_surface); - } else { - // Offset first, then apply path's transform - cairo_translate( - _context - , state->shadowOffsetX - , state->shadowOffsetY); - cairo_transform(_context, &path_matrix); - - // Apply shadow - cairo_new_path(_context); - cairo_append_path(_context, path); - setSourceRGBA(state->shadow); - - fn(_context); - } - - // Paint the shadow - cairo_pop_group_to_source(_context); - cairo_paint(_context); - - // Restore state - cairo_restore(_context); - cairo_new_path(_context); - cairo_append_path(_context, path); - fn(_context); - - cairo_path_destroy(path); -} - -/* - * Set source RGBA for the current context - */ - -void -Context2d::setSourceRGBA(rgba_t color) { - setSourceRGBA(_context, color); -} - -/* - * Set source RGBA - */ - -void -Context2d::setSourceRGBA(cairo_t *ctx, rgba_t color) { - cairo_set_source_rgba( - ctx - , color.r - , color.g - , color.b - , color.a * state->globalAlpha); -} - -/* - * Check if the context has a drawable shadow. - */ - -bool -Context2d::hasShadow() { - return state->shadow.a - && (state->shadowBlur || state->shadowOffsetX || state->shadowOffsetY); -} - -/* - * Blur the given surface with the given radius. - */ - -void -Context2d::blur(cairo_surface_t *surface, int radius) { - // Steve Hanov, 2009 - // Released into the public domain. - radius = radius * 0.57735f + 0.5f; - // get width, height - int width = cairo_image_surface_get_width( surface ); - int height = cairo_image_surface_get_height( surface ); - const unsigned int size = width * height * sizeof(unsigned); - unsigned* precalc = (unsigned*)malloc(size); - cairo_surface_flush( surface ); - unsigned char* src = cairo_image_surface_get_data( surface ); - double mul=1.f/((radius*2)*(radius*2)); - int channel; - - // The number of times to perform the averaging. According to wikipedia, - // three iterations is good enough to pass for a gaussian. - const int MAX_ITERATIONS = 3; - int iteration; - - for ( iteration = 0; iteration < MAX_ITERATIONS; iteration++ ) { - for( channel = 0; channel < 4; channel++ ) { - int x,y; - - // precomputation step. - unsigned char* pix = src; - unsigned* pre = precalc; - - bool modified = false; - - pix += channel; - for (y=0;y0) tot+=pre[-1]; - if (y>0) tot+=pre[-width]; - if (x>0 && y>0) tot-=pre[-width-1]; - *pre++=tot; - if (!modified) modified = true; - pix += 4; - } - } - - if (!modified) { - memset(precalc, 0, size); - } - - // blur step. - pix = src + (int)radius * width * 4 + (int)radius * 4 + channel; - for (y=radius;y= width ? width - 1 : x + radius; - int b = y + radius >= height ? height - 1 : y + radius; - int tot = precalc[r+b*width] + precalc[l+t*width] - - precalc[l+b*width] - precalc[r+t*width]; - *pix=(unsigned char)(tot*mul); - pix += 4; - } - pix += (int)radius * 2 * 4; - } - } - } - - cairo_surface_mark_dirty(surface); - free(precalc); -} - -/* - * Initialize a new Context2d with the given canvas. - */ - -NAN_METHOD(Context2d::New) { - if (!info.IsConstructCall()) { - return Nan::ThrowTypeError("Class constructors cannot be invoked without 'new'"); - } - - if (!info[0]->IsObject()) - return Nan::ThrowTypeError("Canvas expected"); - Local obj = Nan::To(info[0]).ToLocalChecked(); - if (!Nan::New(Canvas::constructor)->HasInstance(obj)) - return Nan::ThrowTypeError("Canvas expected"); - Canvas *canvas = Nan::ObjectWrap::Unwrap(obj); - - bool isImageBackend = canvas->backend()->getName() == "image"; - if (isImageBackend) { - cairo_format_t format = ImageBackend::DEFAULT_FORMAT; - if (info[1]->IsObject()) { - Local ctxAttributes = Nan::To(info[1]).ToLocalChecked(); - - Local pixelFormat = Nan::Get(ctxAttributes, Nan::New("pixelFormat").ToLocalChecked()).ToLocalChecked(); - if (pixelFormat->IsString()) { - Nan::Utf8String utf8PixelFormat(pixelFormat); - if (!strcmp(*utf8PixelFormat, "RGBA32")) format = CAIRO_FORMAT_ARGB32; - else if (!strcmp(*utf8PixelFormat, "RGB24")) format = CAIRO_FORMAT_RGB24; - else if (!strcmp(*utf8PixelFormat, "A8")) format = CAIRO_FORMAT_A8; - else if (!strcmp(*utf8PixelFormat, "RGB16_565")) format = CAIRO_FORMAT_RGB16_565; - else if (!strcmp(*utf8PixelFormat, "A1")) format = CAIRO_FORMAT_A1; -#ifdef CAIRO_FORMAT_RGB30 - else if (!strcmp(utf8PixelFormat, "RGB30")) format = CAIRO_FORMAT_RGB30; -#endif - } - - // alpha: false forces use of RGB24 - Local alpha = Nan::Get(ctxAttributes, Nan::New("alpha").ToLocalChecked()).ToLocalChecked(); - if (alpha->IsBoolean() && !Nan::To(alpha).FromMaybe(false)) { - format = CAIRO_FORMAT_RGB24; - } - } - static_cast(canvas->backend())->setFormat(format); - } - - Context2d *context = new Context2d(canvas); - - context->Wrap(info.This()); - info.GetReturnValue().Set(info.This()); -} - -/* - * Save some external modules as private references. - */ - -NAN_METHOD(Context2d::SaveExternalModules) { - _DOMMatrix.Reset(Nan::To(info[0]).ToLocalChecked()); - _parseFont.Reset(Nan::To(info[1]).ToLocalChecked()); -} - -/* -* Get format (string). -*/ - -NAN_GETTER(Context2d::GetFormat) { - CHECK_RECEIVER(Context2d.GetFormat); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - std::string pixelFormatString; - switch (context->canvas()->backend()->getFormat()) { - case CAIRO_FORMAT_ARGB32: pixelFormatString = "RGBA32"; break; - case CAIRO_FORMAT_RGB24: pixelFormatString = "RGB24"; break; - case CAIRO_FORMAT_A8: pixelFormatString = "A8"; break; - case CAIRO_FORMAT_A1: pixelFormatString = "A1"; break; - case CAIRO_FORMAT_RGB16_565: pixelFormatString = "RGB16_565"; break; -#ifdef CAIRO_FORMAT_RGB30 - case CAIRO_FORMAT_RGB30: pixelFormatString = "RGB30"; break; -#endif - default: return info.GetReturnValue().SetNull(); - } - info.GetReturnValue().Set(Nan::New(pixelFormatString).ToLocalChecked()); -} - -/* - * Create a new page. - */ - -NAN_METHOD(Context2d::AddPage) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - if (context->canvas()->backend()->getName() != "pdf") { - return Nan::ThrowError("only PDF canvases support .addPage()"); - } - cairo_show_page(context->context()); - int width = Nan::To(info[0]).FromMaybe(0); - int height = Nan::To(info[1]).FromMaybe(0); - if (width < 1) width = context->canvas()->getWidth(); - if (height < 1) height = context->canvas()->getHeight(); - cairo_pdf_surface_set_size(context->canvas()->surface(), width, height); - return; -} - -/* - * Put image data. - * - * - imageData, dx, dy - * - imageData, dx, dy, sx, sy, sw, sh - * - */ - -NAN_METHOD(Context2d::PutImageData) { - if (!info[0]->IsObject()) - return Nan::ThrowTypeError("ImageData expected"); - Local obj = Nan::To(info[0]).ToLocalChecked(); - if (!Nan::New(ImageData::constructor)->HasInstance(obj)) - return Nan::ThrowTypeError("ImageData expected"); - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - ImageData *imageData = Nan::ObjectWrap::Unwrap(obj); - - uint8_t *src = imageData->data(); - uint8_t *dst = context->canvas()->data(); - - int dstStride = context->canvas()->stride(); - int Bpp = dstStride / context->canvas()->getWidth(); - int srcStride = Bpp * imageData->width(); - - int sx = 0 - , sy = 0 - , sw = 0 - , sh = 0 - , dx = Nan::To(info[1]).FromMaybe(0) - , dy = Nan::To(info[2]).FromMaybe(0) - , rows - , cols; - - switch (info.Length()) { - // imageData, dx, dy - case 3: - sw = imageData->width(); - sh = imageData->height(); - break; - // imageData, dx, dy, sx, sy, sw, sh - case 7: - sx = Nan::To(info[3]).FromMaybe(0); - sy = Nan::To(info[4]).FromMaybe(0); - sw = Nan::To(info[5]).FromMaybe(0); - sh = Nan::To(info[6]).FromMaybe(0); - // fix up negative height, width - if (sw < 0) sx += sw, sw = -sw; - if (sh < 0) sy += sh, sh = -sh; - // clamp the left edge - if (sx < 0) sw += sx, sx = 0; - if (sy < 0) sh += sy, sy = 0; - // clamp the right edge - if (sx + sw > imageData->width()) sw = imageData->width() - sx; - if (sy + sh > imageData->height()) sh = imageData->height() - sy; - // start destination at source offset - dx += sx; - dy += sy; - break; - default: - return Nan::ThrowError("invalid arguments"); - } - - // chop off outlying source data - if (dx < 0) sw += dx, sx -= dx, dx = 0; - if (dy < 0) sh += dy, sy -= dy, dy = 0; - // clamp width at canvas size - // Need to wrap std::min calls using parens to prevent macro expansion on - // windows. See http://stackoverflow.com/questions/5004858/stdmin-gives-error - cols = (std::min)(sw, context->canvas()->getWidth() - dx); - rows = (std::min)(sh, context->canvas()->getHeight() - dy); - - if (cols <= 0 || rows <= 0) return; - - switch (context->canvas()->backend()->getFormat()) { - case CAIRO_FORMAT_ARGB32: { - src += sy * srcStride + sx * 4; - dst += dstStride * dy + 4 * dx; - for (int y = 0; y < rows; ++y) { - uint8_t *dstRow = dst; - uint8_t *srcRow = src; - for (int x = 0; x < cols; ++x) { - // rgba - uint8_t r = *srcRow++; - uint8_t g = *srcRow++; - uint8_t b = *srcRow++; - uint8_t a = *srcRow++; - - // argb - // performance optimization: fully transparent/opaque pixels can be - // processed more efficiently. - if (a == 0) { - *dstRow++ = 0; - *dstRow++ = 0; - *dstRow++ = 0; - *dstRow++ = 0; - } else if (a == 255) { - *dstRow++ = b; - *dstRow++ = g; - *dstRow++ = r; - *dstRow++ = a; - } else { - float alpha = (float)a / 255; - *dstRow++ = b * alpha; - *dstRow++ = g * alpha; - *dstRow++ = r * alpha; - *dstRow++ = a; - } - } - dst += dstStride; - src += srcStride; - } - break; - } - case CAIRO_FORMAT_RGB24: { - src += sy * srcStride + sx * 4; - dst += dstStride * dy + 4 * dx; - for (int y = 0; y < rows; ++y) { - uint8_t *dstRow = dst; - uint8_t *srcRow = src; - for (int x = 0; x < cols; ++x) { - // rgba - uint8_t r = *srcRow++; - uint8_t g = *srcRow++; - uint8_t b = *srcRow++; - srcRow++; - - // argb - *dstRow++ = b; - *dstRow++ = g; - *dstRow++ = r; - *dstRow++ = 255; - } - dst += dstStride; - src += srcStride; - } - break; - } - case CAIRO_FORMAT_A8: { - src += sy * srcStride + sx; - dst += dstStride * dy + dx; - if (srcStride == dstStride && cols == dstStride) { - // fast path: strides are the same and doing a full-width put - memcpy(dst, src, cols * rows); - } else { - for (int y = 0; y < rows; ++y) { - memcpy(dst, src, cols); - dst += dstStride; - src += srcStride; - } - } - break; - } - case CAIRO_FORMAT_A1: { - // TODO Should this be totally packed, or maintain a stride divisible by 4? - Nan::ThrowError("putImageData for CANVAS_FORMAT_A1 is not yet implemented"); - break; - } - case CAIRO_FORMAT_RGB16_565: { - src += sy * srcStride + sx * 2; - dst += dstStride * dy + 2 * dx; - for (int y = 0; y < rows; ++y) { - memcpy(dst, src, cols * 2); - dst += dstStride; - src += srcStride; - } - break; - } -#ifdef CAIRO_FORMAT_RGB30 - case CAIRO_FORMAT_RGB30: { - // TODO - Nan::ThrowError("putImageData for CANVAS_FORMAT_RGB30 is not yet implemented"); - break; - } -#endif - default: { - Nan::ThrowError("Invalid pixel format or not an image canvas"); - return; - } - } - - cairo_surface_mark_dirty_rectangle( - context->canvas()->surface() - , dx - , dy - , cols - , rows); -} - -/* - * Get image data. - * - * - sx, sy, sw, sh - * - */ - -NAN_METHOD(Context2d::GetImageData) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - Canvas *canvas = context->canvas(); - - int sx = Nan::To(info[0]).FromMaybe(0); - int sy = Nan::To(info[1]).FromMaybe(0); - int sw = Nan::To(info[2]).FromMaybe(0); - int sh = Nan::To(info[3]).FromMaybe(0); - - if (!sw) - return Nan::ThrowError("IndexSizeError: The source width is 0."); - if (!sh) - return Nan::ThrowError("IndexSizeError: The source height is 0."); - - int width = canvas->getWidth(); - int height = canvas->getHeight(); - - if (!width) - return Nan::ThrowTypeError("Canvas width is 0"); - if (!height) - return Nan::ThrowTypeError("Canvas height is 0"); - - // WebKit and Firefox have this behavior: - // Flip the coordinates so the origin is top/left-most: - if (sw < 0) { - sx += sw; - sw = -sw; - } - if (sh < 0) { - sy += sh; - sh = -sh; - } - - if (sx + sw > width) sw = width - sx; - if (sy + sh > height) sh = height - sy; - - // WebKit/moz functionality. node-canvas used to return in either case. - if (sw <= 0) sw = 1; - if (sh <= 0) sh = 1; - - // Non-compliant. "Pixels outside the canvas must be returned as transparent - // black." This instead clips the returned array to the canvas area. - if (sx < 0) { - sw += sx; - sx = 0; - } - if (sy < 0) { - sh += sy; - sy = 0; - } - - int srcStride = canvas->stride(); - int bpp = srcStride / width; - int size = sw * sh * bpp; - int dstStride = sw * bpp; - - uint8_t *src = canvas->data(); - - Local buffer = ArrayBuffer::New(Isolate::GetCurrent(), size); - Local dataArray; - - if (canvas->backend()->getFormat() == CAIRO_FORMAT_RGB16_565) { - dataArray = Uint16Array::New(buffer, 0, size >> 1); - } else { - dataArray = Uint8ClampedArray::New(buffer, 0, size); - } - - Nan::TypedArrayContents typedArrayContents(dataArray); - uint8_t* dst = *typedArrayContents; - - switch (canvas->backend()->getFormat()) { - case CAIRO_FORMAT_ARGB32: { - // Rearrange alpha (argb -> rgba), undo alpha pre-multiplication, - // and store in big-endian format - for (int y = 0; y < sh; ++y) { - uint32_t *row = (uint32_t *)(src + srcStride * (y + sy)); - for (int x = 0; x < sw; ++x) { - int bx = x * 4; - uint32_t *pixel = row + x + sx; - uint8_t a = *pixel >> 24; - uint8_t r = *pixel >> 16; - uint8_t g = *pixel >> 8; - uint8_t b = *pixel; - dst[bx + 3] = a; - - // Performance optimization: fully transparent/opaque pixels can be - // processed more efficiently. - if (a == 0 || a == 255) { - dst[bx + 0] = r; - dst[bx + 1] = g; - dst[bx + 2] = b; - } else { - // Undo alpha pre-multiplication - float alphaR = (float)255 / a; - dst[bx + 0] = (int)((float)r * alphaR); - dst[bx + 1] = (int)((float)g * alphaR); - dst[bx + 2] = (int)((float)b * alphaR); - } - - } - dst += dstStride; - } - break; - } - case CAIRO_FORMAT_RGB24: { - // Rearrange alpha (argb -> rgba) and store in big-endian format - for (int y = 0; y < sh; ++y) { - uint32_t *row = (uint32_t *)(src + srcStride * (y + sy)); - for (int x = 0; x < sw; ++x) { - int bx = x * 4; - uint32_t *pixel = row + x + sx; - uint8_t r = *pixel >> 16; - uint8_t g = *pixel >> 8; - uint8_t b = *pixel; - - dst[bx + 0] = r; - dst[bx + 1] = g; - dst[bx + 2] = b; - dst[bx + 3] = 255; - } - dst += dstStride; - } - break; - } - case CAIRO_FORMAT_A8: { - for (int y = 0; y < sh; ++y) { - uint8_t *row = (uint8_t *)(src + srcStride * (y + sy)); - memcpy(dst, row + sx, dstStride); - dst += dstStride; - } - break; - } - case CAIRO_FORMAT_A1: { - // TODO Should this be totally packed, or maintain a stride divisible by 4? - Nan::ThrowError("getImageData for CANVAS_FORMAT_A1 is not yet implemented"); - break; - } - case CAIRO_FORMAT_RGB16_565: { - for (int y = 0; y < sh; ++y) { - uint16_t *row = (uint16_t *)(src + srcStride * (y + sy)); - memcpy(dst, row + sx, dstStride); - dst += dstStride; - } - break; - } -#ifdef CAIRO_FORMAT_RGB30 - case CAIRO_FORMAT_RGB30: { - // TODO - Nan::ThrowError("getImageData for CANVAS_FORMAT_RGB30 is not yet implemented"); - break; - } -#endif - default: { - // Unlikely - Nan::ThrowError("Invalid pixel format or not an image canvas"); - return; - } - } - - const int argc = 3; - Local swHandle = Nan::New(sw); - Local shHandle = Nan::New(sh); - Local argv[argc] = { dataArray, swHandle, shHandle }; - - Local ctor = Nan::GetFunction(Nan::New(ImageData::constructor)).ToLocalChecked(); - Local instance = Nan::NewInstance(ctor, argc, argv).ToLocalChecked(); - - info.GetReturnValue().Set(instance); -} - -/** - * Create `ImageData` with the given dimensions or - * `ImageData` instance for dimensions. - */ - -NAN_METHOD(Context2d::CreateImageData){ - Isolate *iso = Isolate::GetCurrent(); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - Canvas *canvas = context->canvas(); - int32_t width, height; - - if (info[0]->IsObject()) { - Local obj = Nan::To(info[0]).ToLocalChecked(); - width = Nan::To(Nan::Get(obj, Nan::New("width").ToLocalChecked()).ToLocalChecked()).FromMaybe(0); - height = Nan::To(Nan::Get(obj, Nan::New("height").ToLocalChecked()).ToLocalChecked()).FromMaybe(0); - } else { - width = Nan::To(info[0]).FromMaybe(0); - height = Nan::To(info[1]).FromMaybe(0); - } - - int stride = canvas->stride(); - double Bpp = static_cast(stride) / canvas->getWidth(); - int nBytes = static_cast(Bpp * width * height + .5); - - Local ab = ArrayBuffer::New(iso, nBytes); - Local arr; - - if (canvas->backend()->getFormat() == CAIRO_FORMAT_RGB16_565) - arr = Uint16Array::New(ab, 0, nBytes / 2); - else - arr = Uint8ClampedArray::New(ab, 0, nBytes); - - const int argc = 3; - Local argv[argc] = { arr, Nan::New(width), Nan::New(height) }; - - Local ctor = Nan::GetFunction(Nan::New(ImageData::constructor)).ToLocalChecked(); - Local instance = Nan::NewInstance(ctor, argc, argv).ToLocalChecked(); - - info.GetReturnValue().Set(instance); -} - -/* - * Take a transform matrix and return its components - * 0: angle, 1: scaleX, 2: scaleY, 3: skewX, 4: translateX, 5: translateY - */ -void decompose_matrix(cairo_matrix_t matrix, double *destination) { - double denom = pow(matrix.xx, 2) + pow(matrix.yx, 2); - destination[0] = atan2(matrix.yx, matrix.xx); - destination[1] = sqrt(denom); - destination[2] = (matrix.xx * matrix.yy - matrix.xy * matrix.yx) / destination[1]; - destination[3] = atan2(matrix.xx * matrix.xy + matrix.yx * matrix.yy, denom); - destination[4] = matrix.x0; - destination[5] = matrix.y0; -} - -/* - * Draw image src image to the destination (context). - * - * - dx, dy - * - dx, dy, dw, dh - * - sx, sy, sw, sh, dx, dy, dw, dh - * - */ - -NAN_METHOD(Context2d::DrawImage) { - int infoLen = info.Length(); - if (infoLen != 3 && infoLen != 5 && infoLen != 9) - return Nan::ThrowTypeError("Invalid arguments"); - - if (!info[0]->IsObject()) - return Nan::ThrowTypeError("The first argument must be an object"); - - double args[8]; - if(!checkArgs(info, args, infoLen - 1, 1)) - return; - - double sx = 0 - , sy = 0 - , sw = 0 - , sh = 0 - , dx = 0 - , dy = 0 - , dw = 0 - , dh = 0 - , source_w = 0 - , source_h = 0; - - cairo_surface_t *surface; - - Local obj = Nan::To(info[0]).ToLocalChecked(); - - // Image - if (Nan::New(Image::constructor)->HasInstance(obj)) { - Image *img = Nan::ObjectWrap::Unwrap(obj); - if (!img->isComplete()) { - return Nan::ThrowError("Image given has not completed loading"); - } - source_w = sw = img->width; - source_h = sh = img->height; - surface = img->surface(); - - // Canvas - } else if (Nan::New(Canvas::constructor)->HasInstance(obj)) { - Canvas *canvas = Nan::ObjectWrap::Unwrap(obj); - source_w = sw = canvas->getWidth(); - source_h = sh = canvas->getHeight(); - surface = canvas->surface(); - - // Invalid - } else { - return Nan::ThrowTypeError("Image or Canvas expected"); - } - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - - // Arguments - switch (infoLen) { - // img, sx, sy, sw, sh, dx, dy, dw, dh - case 9: - sx = args[0]; - sy = args[1]; - sw = args[2]; - sh = args[3]; - dx = args[4]; - dy = args[5]; - dw = args[6]; - dh = args[7]; - break; - // img, dx, dy, dw, dh - case 5: - dx = args[0]; - dy = args[1]; - dw = args[2]; - dh = args[3]; - break; - // img, dx, dy - case 3: - dx = args[0]; - dy = args[1]; - dw = sw; - dh = sh; - break; - } - - if (!(sw && sh && dw && dh)) - return; - - // Start draw - cairo_save(ctx); - - cairo_matrix_t matrix; - double transforms[6]; - cairo_get_matrix(context->context(), &matrix); - decompose_matrix(matrix, transforms); - // extract the scale value from the current transform so that we know how many pixels we - // need for our extra canvas in the drawImage operation. - double current_scale_x = std::abs(transforms[1]); - double current_scale_y = std::abs(transforms[2]); - double extra_dx = 0; - double extra_dy = 0; - double fx = dw / sw * current_scale_x; // transforms[1] is scale on X - double fy = dh / sh * current_scale_y; // transforms[2] is scale on X - bool needScale = dw != sw || dh != sh; - bool needCut = sw != source_w || sh != source_h || sx < 0 || sy < 0; - bool sameCanvas = surface == context->canvas()->surface(); - bool needsExtraSurface = sameCanvas || needCut || needScale; - cairo_surface_t *surfTemp = NULL; - cairo_t *ctxTemp = NULL; - - if (needsExtraSurface) { - // we want to create the extra surface as small as possible. - // fx and fy are the total scaling we need to apply to sw, sh. - // from sw and sh we want to remove the part that is outside the source_w and soruce_h - double real_w = sw; - double real_h = sh; - double translate_x = 0; - double translate_y = 0; - // if sx or sy are negative, a part of the area represented by sw and sh is empty - // because there are empty pixels, so we cut it out. - // On the other hand if sx or sy are positive, but sw and sh extend outside the real - // source pixels, we cut the area in that case too. - if (sx < 0) { - extra_dx = -sx * fx; - real_w = sw + sx; - } else if (sx + sw > source_w) { - real_w = sw - (sx + sw - source_w); - } - if (sy < 0) { - extra_dy = -sy * fy; - real_h = sh + sy; - } else if (sy + sh > source_h) { - real_h = sh - (sy + sh - source_h); - } - // if after cutting we are still bigger than source pixels, we restrict again - if (real_w > source_w) { - real_w = source_w; - } - if (real_h > source_h) { - real_h = source_h; - } - // TODO: find a way to limit the surfTemp to real_w and real_h if fx and fy are bigger than 1. - // there are no more pixel than the one available in the source, no need to create a bigger surface. - surfTemp = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, round(real_w * fx), round(real_h * fy)); - ctxTemp = cairo_create(surfTemp); - cairo_scale(ctxTemp, fx, fy); - if (sx > 0) { - translate_x = sx; - } - if (sy > 0) { - translate_y = sy; - } - cairo_set_source_surface(ctxTemp, surface, -translate_x, -translate_y); - cairo_pattern_set_filter(cairo_get_source(ctxTemp), context->state->imageSmoothingEnabled ? context->state->patternQuality : CAIRO_FILTER_NEAREST); - cairo_pattern_set_extend(cairo_get_source(ctxTemp), CAIRO_EXTEND_REFLECT); - cairo_paint_with_alpha(ctxTemp, 1); - surface = surfTemp; - } - // apply shadow if there is one - if (context->hasShadow()) { - if(context->state->shadowBlur) { - // we need to create a new surface in order to blur - int pad = context->state->shadowBlur * 2; - cairo_surface_t *shadow_surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, dw + 2 * pad, dh + 2 * pad); - cairo_t *shadow_context = cairo_create(shadow_surface); - - // mask and blur - context->setSourceRGBA(shadow_context, context->state->shadow); - cairo_mask_surface(shadow_context, surface, pad, pad); - context->blur(shadow_surface, context->state->shadowBlur); - - // paint - // @note: ShadowBlur looks different in each browser. This implementation matches chrome as close as possible. - // The 1.4 offset comes from visual tests with Chrome. I have read the spec and part of the shadowBlur - // implementation, and its not immediately clear why an offset is necessary, but without it, the result - // in chrome is different. - cairo_set_source_surface(ctx, shadow_surface, - dx + context->state->shadowOffsetX - pad + 1.4, - dy + context->state->shadowOffsetY - pad + 1.4); - cairo_paint(ctx); - // cleanup - cairo_destroy(shadow_context); - cairo_surface_destroy(shadow_surface); - } else { - context->setSourceRGBA(context->state->shadow); - cairo_mask_surface(ctx, surface, - dx + (context->state->shadowOffsetX), - dy + (context->state->shadowOffsetY)); - } - } - - double scaled_dx = dx; - double scaled_dy = dy; - - if (needsExtraSurface && (current_scale_x != 1 || current_scale_y != 1)) { - // in this case our surface contains already current_scale_x, we need to scale back - cairo_scale(ctx, 1 / current_scale_x, 1 / current_scale_y); - scaled_dx *= current_scale_x; - scaled_dy *= current_scale_y; - } - // Paint - cairo_set_source_surface(ctx, surface, scaled_dx + extra_dx, scaled_dy + extra_dy); - cairo_pattern_set_filter(cairo_get_source(ctx), context->state->imageSmoothingEnabled ? context->state->patternQuality : CAIRO_FILTER_NEAREST); - cairo_pattern_set_extend(cairo_get_source(ctx), CAIRO_EXTEND_NONE); - cairo_paint_with_alpha(ctx, context->state->globalAlpha); - - cairo_restore(ctx); - - if (needsExtraSurface) { - cairo_destroy(ctxTemp); - cairo_surface_destroy(surfTemp); - } -} - -/* - * Get global alpha. - */ - -NAN_GETTER(Context2d::GetGlobalAlpha) { - CHECK_RECEIVER(Context2d.GetGlobalAlpha); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(context->state->globalAlpha)); -} - -/* - * Set global alpha. - */ - -NAN_SETTER(Context2d::SetGlobalAlpha) { - CHECK_RECEIVER(Context2d.SetGlobalAlpha); - double n = Nan::To(value).FromMaybe(0); - if (n >= 0 && n <= 1) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - context->state->globalAlpha = n; - } -} - -/* - * Get global composite operation. - */ - -NAN_GETTER(Context2d::GetGlobalCompositeOperation) { - CHECK_RECEIVER(Context2d.GetGlobalCompositeOperation); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - - const char *op{}; - switch (cairo_get_operator(ctx)) { - // composite modes: - case CAIRO_OPERATOR_CLEAR: op = "clear"; break; - case CAIRO_OPERATOR_SOURCE: op = "copy"; break; - case CAIRO_OPERATOR_DEST: op = "destination"; break; - case CAIRO_OPERATOR_OVER: op = "source-over"; break; - case CAIRO_OPERATOR_DEST_OVER: op = "destination-over"; break; - case CAIRO_OPERATOR_IN: op = "source-in"; break; - case CAIRO_OPERATOR_DEST_IN: op = "destination-in"; break; - case CAIRO_OPERATOR_OUT: op = "source-out"; break; - case CAIRO_OPERATOR_DEST_OUT: op = "destination-out"; break; - case CAIRO_OPERATOR_ATOP: op = "source-atop"; break; - case CAIRO_OPERATOR_DEST_ATOP: op = "destination-atop"; break; - case CAIRO_OPERATOR_XOR: op = "xor"; break; - case CAIRO_OPERATOR_ADD: op = "lighter"; break; - // blend modes: - // Note: "source-over" and "normal" are synonyms. Chrome and FF both report - // "source-over" after setting gCO to "normal". - // case CAIRO_OPERATOR_OVER: op = "normal"; - case CAIRO_OPERATOR_MULTIPLY: op = "multiply"; break; - case CAIRO_OPERATOR_SCREEN: op = "screen"; break; - case CAIRO_OPERATOR_OVERLAY: op = "overlay"; break; - case CAIRO_OPERATOR_DARKEN: op = "darken"; break; - case CAIRO_OPERATOR_LIGHTEN: op = "lighten"; break; - case CAIRO_OPERATOR_COLOR_DODGE: op = "color-dodge"; break; - case CAIRO_OPERATOR_COLOR_BURN: op = "color-burn"; break; - case CAIRO_OPERATOR_HARD_LIGHT: op = "hard-light"; break; - case CAIRO_OPERATOR_SOFT_LIGHT: op = "soft-light"; break; - case CAIRO_OPERATOR_DIFFERENCE: op = "difference"; break; - case CAIRO_OPERATOR_EXCLUSION: op = "exclusion"; break; - case CAIRO_OPERATOR_HSL_HUE: op = "hue"; break; - case CAIRO_OPERATOR_HSL_SATURATION: op = "saturation"; break; - case CAIRO_OPERATOR_HSL_COLOR: op = "color"; break; - case CAIRO_OPERATOR_HSL_LUMINOSITY: op = "luminosity"; break; - // non-standard: - case CAIRO_OPERATOR_SATURATE: op = "saturate"; break; - default: op = "source-over"; - } - - info.GetReturnValue().Set(Nan::New(op).ToLocalChecked()); -} - -/* - * Set pattern quality. - */ - -NAN_SETTER(Context2d::SetPatternQuality) { - CHECK_RECEIVER(Context2d.SetPatternQuality); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - Nan::Utf8String quality(Nan::To(value).ToLocalChecked()); - if (0 == strcmp("fast", *quality)) { - context->state->patternQuality = CAIRO_FILTER_FAST; - } else if (0 == strcmp("good", *quality)) { - context->state->patternQuality = CAIRO_FILTER_GOOD; - } else if (0 == strcmp("best", *quality)) { - context->state->patternQuality = CAIRO_FILTER_BEST; - } else if (0 == strcmp("nearest", *quality)) { - context->state->patternQuality = CAIRO_FILTER_NEAREST; - } else if (0 == strcmp("bilinear", *quality)) { - context->state->patternQuality = CAIRO_FILTER_BILINEAR; - } -} - -/* - * Get pattern quality. - */ - -NAN_GETTER(Context2d::GetPatternQuality) { - CHECK_RECEIVER(Context2d.GetPatternQuality); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - const char *quality; - switch (context->state->patternQuality) { - case CAIRO_FILTER_FAST: quality = "fast"; break; - case CAIRO_FILTER_BEST: quality = "best"; break; - case CAIRO_FILTER_NEAREST: quality = "nearest"; break; - case CAIRO_FILTER_BILINEAR: quality = "bilinear"; break; - default: quality = "good"; - } - info.GetReturnValue().Set(Nan::New(quality).ToLocalChecked()); -} - -/* - * Set ImageSmoothingEnabled value. - */ - -NAN_SETTER(Context2d::SetImageSmoothingEnabled) { - CHECK_RECEIVER(Context2d.SetImageSmoothingEnabled); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - context->state->imageSmoothingEnabled = Nan::To(value).FromMaybe(false); -} - -/* - * Get pattern quality. - */ - -NAN_GETTER(Context2d::GetImageSmoothingEnabled) { - CHECK_RECEIVER(Context2d.GetImageSmoothingEnabled); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(context->state->imageSmoothingEnabled)); -} - -/* - * Set global composite operation. - */ - -NAN_SETTER(Context2d::SetGlobalCompositeOperation) { - CHECK_RECEIVER(Context2d.SetGlobalCompositeOperation); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - Nan::Utf8String opStr(Nan::To(value).ToLocalChecked()); // Unlike CSS colors, this *is* case-sensitive - const std::map blendmodes = { - // composite modes: - {"clear", CAIRO_OPERATOR_CLEAR}, - {"copy", CAIRO_OPERATOR_SOURCE}, - {"destination", CAIRO_OPERATOR_DEST}, // this seems to have been omitted from the spec - {"source-over", CAIRO_OPERATOR_OVER}, - {"destination-over", CAIRO_OPERATOR_DEST_OVER}, - {"source-in", CAIRO_OPERATOR_IN}, - {"destination-in", CAIRO_OPERATOR_DEST_IN}, - {"source-out", CAIRO_OPERATOR_OUT}, - {"destination-out", CAIRO_OPERATOR_DEST_OUT}, - {"source-atop", CAIRO_OPERATOR_ATOP}, - {"destination-atop", CAIRO_OPERATOR_DEST_ATOP}, - {"xor", CAIRO_OPERATOR_XOR}, - {"lighter", CAIRO_OPERATOR_ADD}, - // blend modes: - {"normal", CAIRO_OPERATOR_OVER}, - {"multiply", CAIRO_OPERATOR_MULTIPLY}, - {"screen", CAIRO_OPERATOR_SCREEN}, - {"overlay", CAIRO_OPERATOR_OVERLAY}, - {"darken", CAIRO_OPERATOR_DARKEN}, - {"lighten", CAIRO_OPERATOR_LIGHTEN}, - {"color-dodge", CAIRO_OPERATOR_COLOR_DODGE}, - {"color-burn", CAIRO_OPERATOR_COLOR_BURN}, - {"hard-light", CAIRO_OPERATOR_HARD_LIGHT}, - {"soft-light", CAIRO_OPERATOR_SOFT_LIGHT}, - {"difference", CAIRO_OPERATOR_DIFFERENCE}, - {"exclusion", CAIRO_OPERATOR_EXCLUSION}, - {"hue", CAIRO_OPERATOR_HSL_HUE}, - {"saturation", CAIRO_OPERATOR_HSL_SATURATION}, - {"color", CAIRO_OPERATOR_HSL_COLOR}, - {"luminosity", CAIRO_OPERATOR_HSL_LUMINOSITY}, - // non-standard: - {"saturate", CAIRO_OPERATOR_SATURATE} - }; - auto op = blendmodes.find(*opStr); - if (op != blendmodes.end()) cairo_set_operator(ctx, op->second); -} - -/* - * Get shadow offset x. - */ - -NAN_GETTER(Context2d::GetShadowOffsetX) { - CHECK_RECEIVER(Context2d.GetShadowOffsetX); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(context->state->shadowOffsetX)); -} - -/* - * Set shadow offset x. - */ - -NAN_SETTER(Context2d::SetShadowOffsetX) { - CHECK_RECEIVER(Context2d.SetShadowOffsetX); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - context->state->shadowOffsetX = Nan::To(value).FromMaybe(0); -} - -/* - * Get shadow offset y. - */ - -NAN_GETTER(Context2d::GetShadowOffsetY) { - CHECK_RECEIVER(Context2d.GetShadowOffsetY); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(context->state->shadowOffsetY)); -} - -/* - * Set shadow offset y. - */ - -NAN_SETTER(Context2d::SetShadowOffsetY) { - CHECK_RECEIVER(Context2d.SetShadowOffsetY); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - context->state->shadowOffsetY = Nan::To(value).FromMaybe(0); -} - -/* - * Get shadow blur. - */ - -NAN_GETTER(Context2d::GetShadowBlur) { - CHECK_RECEIVER(Context2d.GetShadowBlur); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(context->state->shadowBlur)); -} - -/* - * Set shadow blur. - */ - -NAN_SETTER(Context2d::SetShadowBlur) { - CHECK_RECEIVER(Context2d.SetShadowBlur); - int n = Nan::To(value).FromMaybe(0); - if (n >= 0) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - context->state->shadowBlur = n; - } -} - -/* - * Get current antialiasing setting. - */ - -NAN_GETTER(Context2d::GetAntiAlias) { - CHECK_RECEIVER(Context2d.GetAntiAlias); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - const char *aa; - switch (cairo_get_antialias(context->context())) { - case CAIRO_ANTIALIAS_NONE: aa = "none"; break; - case CAIRO_ANTIALIAS_GRAY: aa = "gray"; break; - case CAIRO_ANTIALIAS_SUBPIXEL: aa = "subpixel"; break; - default: aa = "default"; - } - info.GetReturnValue().Set(Nan::New(aa).ToLocalChecked()); -} - -/* - * Set antialiasing. - */ - -NAN_SETTER(Context2d::SetAntiAlias) { - CHECK_RECEIVER(Context2d.SetAntiAlias); - Nan::Utf8String str(Nan::To(value).ToLocalChecked()); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - cairo_antialias_t a; - if (0 == strcmp("none", *str)) { - a = CAIRO_ANTIALIAS_NONE; - } else if (0 == strcmp("default", *str)) { - a = CAIRO_ANTIALIAS_DEFAULT; - } else if (0 == strcmp("gray", *str)) { - a = CAIRO_ANTIALIAS_GRAY; - } else if (0 == strcmp("subpixel", *str)) { - a = CAIRO_ANTIALIAS_SUBPIXEL; - } else { - a = cairo_get_antialias(ctx); - } - cairo_set_antialias(ctx, a); -} - -/* - * Get text drawing mode. - */ - -NAN_GETTER(Context2d::GetTextDrawingMode) { - CHECK_RECEIVER(Context2d.GetTextDrawingMode); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - const char *mode; - if (context->state->textDrawingMode == TEXT_DRAW_PATHS) { - mode = "path"; - } else if (context->state->textDrawingMode == TEXT_DRAW_GLYPHS) { - mode = "glyph"; - } else { - mode = "unknown"; - } - info.GetReturnValue().Set(Nan::New(mode).ToLocalChecked()); -} - -/* - * Set text drawing mode. - */ - -NAN_SETTER(Context2d::SetTextDrawingMode) { - CHECK_RECEIVER(Context2d.SetTextDrawingMode); - Nan::Utf8String str(Nan::To(value).ToLocalChecked()); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - if (0 == strcmp("path", *str)) { - context->state->textDrawingMode = TEXT_DRAW_PATHS; - } else if (0 == strcmp("glyph", *str)) { - context->state->textDrawingMode = TEXT_DRAW_GLYPHS; - } -} - -/* - * Get filter. - */ - -NAN_GETTER(Context2d::GetQuality) { - CHECK_RECEIVER(Context2d.GetQuality); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - const char *filter; - switch (cairo_pattern_get_filter(cairo_get_source(context->context()))) { - case CAIRO_FILTER_FAST: filter = "fast"; break; - case CAIRO_FILTER_BEST: filter = "best"; break; - case CAIRO_FILTER_NEAREST: filter = "nearest"; break; - case CAIRO_FILTER_BILINEAR: filter = "bilinear"; break; - default: filter = "good"; - } - info.GetReturnValue().Set(Nan::New(filter).ToLocalChecked()); -} - -/* - * Set filter. - */ - -NAN_SETTER(Context2d::SetQuality) { - CHECK_RECEIVER(Context2d.SetQuality); - Nan::Utf8String str(Nan::To(value).ToLocalChecked()); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_filter_t filter; - if (0 == strcmp("fast", *str)) { - filter = CAIRO_FILTER_FAST; - } else if (0 == strcmp("best", *str)) { - filter = CAIRO_FILTER_BEST; - } else if (0 == strcmp("nearest", *str)) { - filter = CAIRO_FILTER_NEAREST; - } else if (0 == strcmp("bilinear", *str)) { - filter = CAIRO_FILTER_BILINEAR; - } else { - filter = CAIRO_FILTER_GOOD; - } - cairo_pattern_set_filter(cairo_get_source(context->context()), filter); -} - -/* - * Helper for get current transform matrix - */ - -Local -get_current_transform(Context2d *context) { - Isolate *iso = Isolate::GetCurrent(); - - Local arr = Float64Array::New(ArrayBuffer::New(iso, 48), 0, 6); - Nan::TypedArrayContents dest(arr); - cairo_matrix_t matrix; - cairo_get_matrix(context->context(), &matrix); - (*dest)[0] = matrix.xx; - (*dest)[1] = matrix.yx; - (*dest)[2] = matrix.xy; - (*dest)[3] = matrix.yy; - (*dest)[4] = matrix.x0; - (*dest)[5] = matrix.y0; - - const int argc = 1; - Local argv[argc] = { arr }; - return Nan::NewInstance(context->_DOMMatrix.Get(iso), argc, argv).ToLocalChecked(); -} - -/* - * Helper for get/set transform. - */ - -void parse_matrix_from_object(cairo_matrix_t &matrix, Local mat) { - cairo_matrix_init(&matrix, - Nan::To(Nan::Get(mat, Nan::New("a").ToLocalChecked()).ToLocalChecked()).FromMaybe(0), - Nan::To(Nan::Get(mat, Nan::New("b").ToLocalChecked()).ToLocalChecked()).FromMaybe(0), - Nan::To(Nan::Get(mat, Nan::New("c").ToLocalChecked()).ToLocalChecked()).FromMaybe(0), - Nan::To(Nan::Get(mat, Nan::New("d").ToLocalChecked()).ToLocalChecked()).FromMaybe(0), - Nan::To(Nan::Get(mat, Nan::New("e").ToLocalChecked()).ToLocalChecked()).FromMaybe(0), - Nan::To(Nan::Get(mat, Nan::New("f").ToLocalChecked()).ToLocalChecked()).FromMaybe(0) - ); -} - - -/* - * Get current transform. - */ - -NAN_GETTER(Context2d::GetCurrentTransform) { - CHECK_RECEIVER(Context2d.GetCurrentTransform); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - Local instance = get_current_transform(context); - - info.GetReturnValue().Set(instance); -} - -/* - * Set current transform. - */ - -NAN_SETTER(Context2d::SetCurrentTransform) { - CHECK_RECEIVER(Context2d.SetCurrentTransform); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - Local ctx = Nan::GetCurrentContext(); - Local mat = Nan::To(value).ToLocalChecked(); - -#if NODE_MAJOR_VERSION >= 8 - if (!mat->InstanceOf(ctx, _DOMMatrix.Get(Isolate::GetCurrent())).ToChecked()) { - return Nan::ThrowTypeError("Expected DOMMatrix"); - } -#endif - - cairo_matrix_t matrix; - parse_matrix_from_object(matrix, mat); - - cairo_transform(context->context(), &matrix); -} - -/* - * Get current fill style. - */ - -NAN_GETTER(Context2d::GetFillStyle) { - CHECK_RECEIVER(Context2d.GetFillStyle); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - Isolate *iso = Isolate::GetCurrent(); - Local style; - - if (context->_fillStyle.IsEmpty()) - style = context->_getFillColor(); - else - style = context->_fillStyle.Get(iso); - - info.GetReturnValue().Set(style); -} - -/* - * Set current fill style. - */ - -NAN_SETTER(Context2d::SetFillStyle) { - CHECK_RECEIVER(Context2d.SetFillStyle); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - - if (value->IsString()) { - MaybeLocal mstr = Nan::To(value); - if (mstr.IsEmpty()) return; - Local str = mstr.ToLocalChecked(); - context->_fillStyle.Reset(); - context->_setFillColor(str); - } else if (value->IsObject()) { - Local obj = Nan::To(value).ToLocalChecked(); - if (Nan::New(Gradient::constructor)->HasInstance(obj)) { - context->_fillStyle.Reset(value); - Gradient *grad = Nan::ObjectWrap::Unwrap(obj); - context->state->fillGradient = grad->pattern(); - } else if (Nan::New(Pattern::constructor)->HasInstance(obj)) { - context->_fillStyle.Reset(value); - Pattern *pattern = Nan::ObjectWrap::Unwrap(obj); - context->state->fillPattern = pattern->pattern(); - } - } -} - -/* - * Get current stroke style. - */ - -NAN_GETTER(Context2d::GetStrokeStyle) { - CHECK_RECEIVER(Context2d.GetStrokeStyle); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - Local style; - - if (context->_strokeStyle.IsEmpty()) - style = context->_getStrokeColor(); - else - style = context->_strokeStyle.Get(Isolate::GetCurrent()); - - info.GetReturnValue().Set(style); -} - -/* - * Set current stroke style. - */ - -NAN_SETTER(Context2d::SetStrokeStyle) { - CHECK_RECEIVER(Context2d.SetStrokeStyle); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - - if (value->IsString()) { - MaybeLocal mstr = Nan::To(value); - if (mstr.IsEmpty()) return; - Local str = mstr.ToLocalChecked(); - context->_strokeStyle.Reset(); - context->_setStrokeColor(str); - } else if (value->IsObject()) { - Local obj = Nan::To(value).ToLocalChecked(); - if (Nan::New(Gradient::constructor)->HasInstance(obj)) { - context->_strokeStyle.Reset(value); - Gradient *grad = Nan::ObjectWrap::Unwrap(obj); - context->state->strokeGradient = grad->pattern(); - } else if (Nan::New(Pattern::constructor)->HasInstance(obj)) { - context->_strokeStyle.Reset(value); - Pattern *pattern = Nan::ObjectWrap::Unwrap(obj); - context->state->strokePattern = pattern->pattern(); - } - } -} - -/* - * Get miter limit. - */ - -NAN_GETTER(Context2d::GetMiterLimit) { - CHECK_RECEIVER(Context2d.GetMiterLimit); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(cairo_get_miter_limit(context->context()))); -} - -/* - * Set miter limit. - */ - -NAN_SETTER(Context2d::SetMiterLimit) { - CHECK_RECEIVER(Context2d.SetMiterLimit); - double n = Nan::To(value).FromMaybe(0); - if (n > 0) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_set_miter_limit(context->context(), n); - } -} - -/* - * Get line width. - */ - -NAN_GETTER(Context2d::GetLineWidth) { - CHECK_RECEIVER(Context2d.GetLineWidth); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(cairo_get_line_width(context->context()))); -} - -/* - * Set line width. - */ - -NAN_SETTER(Context2d::SetLineWidth) { - CHECK_RECEIVER(Context2d.SetLineWidth); - double n = Nan::To(value).FromMaybe(0); - if (n > 0 && n != std::numeric_limits::infinity()) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_set_line_width(context->context(), n); - } -} - -/* - * Get line join. - */ - -NAN_GETTER(Context2d::GetLineJoin) { - CHECK_RECEIVER(Context2d.GetLineJoin); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - const char *join; - switch (cairo_get_line_join(context->context())) { - case CAIRO_LINE_JOIN_BEVEL: join = "bevel"; break; - case CAIRO_LINE_JOIN_ROUND: join = "round"; break; - default: join = "miter"; - } - info.GetReturnValue().Set(Nan::New(join).ToLocalChecked()); -} - -/* - * Set line join. - */ - -NAN_SETTER(Context2d::SetLineJoin) { - CHECK_RECEIVER(Context2d.SetLineJoin); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - Nan::Utf8String type(Nan::To(value).ToLocalChecked()); - if (0 == strcmp("round", *type)) { - cairo_set_line_join(ctx, CAIRO_LINE_JOIN_ROUND); - } else if (0 == strcmp("bevel", *type)) { - cairo_set_line_join(ctx, CAIRO_LINE_JOIN_BEVEL); - } else { - cairo_set_line_join(ctx, CAIRO_LINE_JOIN_MITER); - } -} - -/* - * Get line cap. - */ - -NAN_GETTER(Context2d::GetLineCap) { - CHECK_RECEIVER(Context2d.GetLineCap); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - const char *cap; - switch (cairo_get_line_cap(context->context())) { - case CAIRO_LINE_CAP_ROUND: cap = "round"; break; - case CAIRO_LINE_CAP_SQUARE: cap = "square"; break; - default: cap = "butt"; - } - info.GetReturnValue().Set(Nan::New(cap).ToLocalChecked()); -} - -/* - * Set line cap. - */ - -NAN_SETTER(Context2d::SetLineCap) { - CHECK_RECEIVER(Context2d.SetLineCap); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - Nan::Utf8String type(Nan::To(value).ToLocalChecked()); - if (0 == strcmp("round", *type)) { - cairo_set_line_cap(ctx, CAIRO_LINE_CAP_ROUND); - } else if (0 == strcmp("square", *type)) { - cairo_set_line_cap(ctx, CAIRO_LINE_CAP_SQUARE); - } else { - cairo_set_line_cap(ctx, CAIRO_LINE_CAP_BUTT); - } -} - -/* - * Check if the given point is within the current path. - */ - -NAN_METHOD(Context2d::IsPointInPath) { - if (info[0]->IsNumber() && info[1]->IsNumber()) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - double x = Nan::To(info[0]).FromMaybe(0) - , y = Nan::To(info[1]).FromMaybe(0); - context->setFillRule(info[2]); - info.GetReturnValue().Set(Nan::New(cairo_in_fill(ctx, x, y) || cairo_in_stroke(ctx, x, y))); - return; - } - info.GetReturnValue().Set(Nan::False()); -} - -/* - * Set shadow color. - */ - -NAN_SETTER(Context2d::SetShadowColor) { - CHECK_RECEIVER(Context2d.SetShadowColor); - short ok; - Nan::Utf8String str(Nan::To(value).ToLocalChecked()); - uint32_t rgba = rgba_from_string(*str, &ok); - if (ok) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - context->state->shadow = rgba_create(rgba); - } -} - -/* - * Get shadow color. - */ - -NAN_GETTER(Context2d::GetShadowColor) { - CHECK_RECEIVER(Context2d.GetShadowColor); - char buf[64]; - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - rgba_to_string(context->state->shadow, buf, sizeof(buf)); - info.GetReturnValue().Set(Nan::New(buf).ToLocalChecked()); -} - -/* - * Set fill color, used internally for fillStyle= - */ - -void Context2d::_setFillColor(Local arg) { - short ok; - Nan::Utf8String str(arg); - uint32_t rgba = rgba_from_string(*str, &ok); - if (!ok) return; - state->fillPattern = state->fillGradient = NULL; - state->fill = rgba_create(rgba); -} - -/* - * Get fill color. - */ - -Local Context2d::_getFillColor() { - char buf[64]; - rgba_to_string(state->fill, buf, sizeof(buf)); - return Nan::New(buf).ToLocalChecked(); -} - -/* - * Set stroke color, used internally for strokeStyle= - */ - -void Context2d::_setStrokeColor(Local arg) { - short ok; - Nan::Utf8String str(arg); - uint32_t rgba = rgba_from_string(*str, &ok); - if (!ok) return; - state->strokePattern = state->strokeGradient = NULL; - state->stroke = rgba_create(rgba); -} - -/* - * Get stroke color. - */ - -Local Context2d::_getStrokeColor() { - char buf[64]; - rgba_to_string(state->stroke, buf, sizeof(buf)); - return Nan::New(buf).ToLocalChecked(); -} - -NAN_METHOD(Context2d::CreatePattern) { - Local image = info[0]; - Local repetition = info[1]; - - if (!Nan::To(repetition).FromMaybe(false)) - repetition = Nan::New("repeat").ToLocalChecked(); - - const int argc = 2; - Local argv[argc] = { image, repetition }; - - Local ctor = Nan::GetFunction(Nan::New(Pattern::constructor)).ToLocalChecked(); - Local instance = Nan::NewInstance(ctor, argc, argv).ToLocalChecked(); - - info.GetReturnValue().Set(instance); -} - -NAN_METHOD(Context2d::CreateLinearGradient) { - const int argc = 4; - Local argv[argc] = { info[0], info[1], info[2], info[3] }; - - Local ctor = Nan::GetFunction(Nan::New(Gradient::constructor)).ToLocalChecked(); - Local instance = Nan::NewInstance(ctor, argc, argv).ToLocalChecked(); - - info.GetReturnValue().Set(instance); -} - -NAN_METHOD(Context2d::CreateRadialGradient) { - const int argc = 6; - Local argv[argc] = { info[0], info[1], info[2], info[3], info[4], info[5] }; - - Local ctor = Nan::GetFunction(Nan::New(Gradient::constructor)).ToLocalChecked(); - Local instance = Nan::NewInstance(ctor, argc, argv).ToLocalChecked(); - - info.GetReturnValue().Set(instance); -} - -/* - * Bezier curve. - */ - -NAN_METHOD(Context2d::BezierCurveTo) { - double args[6]; - if(!checkArgs(info, args, 6)) - return; - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_curve_to(context->context() - , args[0] - , args[1] - , args[2] - , args[3] - , args[4] - , args[5]); -} - -/* - * Quadratic curve approximation from libsvg-cairo. - */ - -NAN_METHOD(Context2d::QuadraticCurveTo) { - double args[4]; - if(!checkArgs(info, args, 4)) - return; - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - - double x, y - , x1 = args[0] - , y1 = args[1] - , x2 = args[2] - , y2 = args[3]; - - cairo_get_current_point(ctx, &x, &y); - - if (0 == x && 0 == y) { - x = x1; - y = y1; - } - - cairo_curve_to(ctx - , x + 2.0 / 3.0 * (x1 - x), y + 2.0 / 3.0 * (y1 - y) - , x2 + 2.0 / 3.0 * (x1 - x2), y2 + 2.0 / 3.0 * (y1 - y2) - , x2 - , y2); -} - -/* - * Save state. - */ - -NAN_METHOD(Context2d::Save) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - context->save(); -} - -/* - * Restore state. - */ - -NAN_METHOD(Context2d::Restore) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - context->restore(); -} - -/* - * Creates a new subpath. - */ - -NAN_METHOD(Context2d::BeginPath) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_new_path(context->context()); -} - -/* - * Marks the subpath as closed. - */ - -NAN_METHOD(Context2d::ClosePath) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_close_path(context->context()); -} - -/* - * Rotate transformation. - */ - -NAN_METHOD(Context2d::Rotate) { - double args[1]; - if(!checkArgs(info, args, 1)) - return; - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_rotate(context->context(), args[0]); -} - -/* - * Modify the CTM. - */ - -NAN_METHOD(Context2d::Transform) { - double args[6]; - if(!checkArgs(info, args, 6)) - return; - - cairo_matrix_t matrix; - cairo_matrix_init(&matrix - , args[0] - , args[1] - , args[2] - , args[3] - , args[4] - , args[5]); - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_transform(context->context(), &matrix); -} - -/* - * Get the CTM - */ - -NAN_METHOD(Context2d::GetTransform) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - Local instance = get_current_transform(context); - - info.GetReturnValue().Set(instance); -} - -/* - * Reset the CTM, used internally by setTransform(). - */ - -NAN_METHOD(Context2d::ResetTransform) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_identity_matrix(context->context()); -} - -/* - * Reset transform matrix to identity, then apply the given args. - */ - -NAN_METHOD(Context2d::SetTransform) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - if (info.Length() == 1) { - Local mat = Nan::To(info[0]).ToLocalChecked(); - - #if NODE_MAJOR_VERSION >= 8 - Local ctx = Nan::GetCurrentContext(); - if (!mat->InstanceOf(ctx, _DOMMatrix.Get(Isolate::GetCurrent())).ToChecked()) { - return Nan::ThrowTypeError("Expected DOMMatrix"); - } - #endif - - cairo_matrix_t matrix; - parse_matrix_from_object(matrix, mat); - - cairo_set_matrix(context->context(), &matrix); - } else { - cairo_identity_matrix(context->context()); - Context2d::Transform(info); - } -} - -/* - * Translate transformation. - */ - -NAN_METHOD(Context2d::Translate) { - double args[2]; - if(!checkArgs(info, args, 2)) - return; - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_translate(context->context(), args[0], args[1]); -} - -/* - * Scale transformation. - */ - -NAN_METHOD(Context2d::Scale) { - double args[2]; - if(!checkArgs(info, args, 2)) - return; - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_scale(context->context(), args[0], args[1]); -} - -/* - * Use path as clipping region. - */ - -NAN_METHOD(Context2d::Clip) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - context->setFillRule(info[0]); - cairo_t *ctx = context->context(); - cairo_clip_preserve(ctx); -} - -/* - * Fill the path. - */ - -NAN_METHOD(Context2d::Fill) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - context->setFillRule(info[0]); - context->fill(true); -} - -/* - * Stroke the path. - */ - -NAN_METHOD(Context2d::Stroke) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - context->stroke(true); -} - -/* - * Helper for fillText/strokeText - */ - -double -get_text_scale(PangoLayout *layout, double maxWidth) { - - PangoRectangle logical_rect; - pango_layout_get_pixel_extents(layout, NULL, &logical_rect); - - if (logical_rect.width > maxWidth) { - return maxWidth / logical_rect.width; - } else { - return 1.0; - } -} - -void -paintText(const Nan::FunctionCallbackInfo &info, bool stroke) { - int argsNum = info.Length() >= 4 ? 3 : 2; - - if (argsNum == 3 && info[3]->IsUndefined()) - argsNum = 2; - - double args[3]; - if(!checkArgs(info, args, argsNum, 1)) - return; - - Nan::Utf8String str(Nan::To(info[0]).ToLocalChecked()); - double x = args[0]; - double y = args[1]; - double scaled_by = 1; - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - PangoLayout *layout = context->layout(); - - pango_layout_set_text(layout, *str, -1); - pango_cairo_update_layout(context->context(), layout); - - if (argsNum == 3) { - scaled_by = get_text_scale(layout, args[2]); - cairo_save(context->context()); - cairo_scale(context->context(), scaled_by, 1); - } - - context->savePath(); - if (context->state->textDrawingMode == TEXT_DRAW_GLYPHS) { - if (stroke == true) { context->stroke(); } else { context->fill(); } - context->setTextPath(x / scaled_by, y); - } else if (context->state->textDrawingMode == TEXT_DRAW_PATHS) { - context->setTextPath(x / scaled_by, y); - if (stroke == true) { context->stroke(); } else { context->fill(); } - } - context->restorePath(); - if (argsNum == 3) { - cairo_restore(context->context()); - } -} - -/* - * Fill text at (x, y). - */ - -NAN_METHOD(Context2d::FillText) { - paintText(info, false); -} - -/* - * Stroke text at (x ,y). - */ - -NAN_METHOD(Context2d::StrokeText) { - paintText(info, true); -} - -/* - * Gets the baseline adjustment in device pixels - */ -inline double getBaselineAdjustment(PangoLayout* layout, short baseline) { - PangoRectangle logical_rect; - pango_layout_line_get_extents(pango_layout_get_line(layout, 0), NULL, &logical_rect); - - double scale = 1.0 / PANGO_SCALE; - double ascent = scale * pango_layout_get_baseline(layout); - double descent = scale * logical_rect.height - ascent; - - switch (baseline) { - case TEXT_BASELINE_ALPHABETIC: - return ascent; - case TEXT_BASELINE_MIDDLE: - return (ascent + descent) / 2.0; - case TEXT_BASELINE_BOTTOM: - return ascent + descent; - default: - return 0; - } -} - -/* - * Set text path for the string in the layout at (x, y). - * This function is called by paintText and won't behave correctly - * if is not called from there. - * it needs pango_layout_set_text and pango_cairo_update_layout to be called before - */ - -void -Context2d::setTextPath(double x, double y) { - PangoRectangle logical_rect; - - switch (state->textAlignment) { - case TEXT_ALIGNMENT_CENTER: - pango_layout_get_pixel_extents(_layout, NULL, &logical_rect); - x -= logical_rect.width / 2; - break; - case TEXT_ALIGNMENT_END: - case TEXT_ALIGNMENT_RIGHT: - pango_layout_get_pixel_extents(_layout, NULL, &logical_rect); - x -= logical_rect.width; - break; - default: ; - } - - y -= getBaselineAdjustment(_layout, state->textBaseline); - - cairo_move_to(_context, x, y); - if (state->textDrawingMode == TEXT_DRAW_PATHS) { - pango_cairo_layout_path(_context, _layout); - } else if (state->textDrawingMode == TEXT_DRAW_GLYPHS) { - pango_cairo_show_layout(_context, _layout); - } -} - -/* - * Adds a point to the current subpath. - */ - -NAN_METHOD(Context2d::LineTo) { - double args[2]; - if(!checkArgs(info, args, 2)) - return; - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_line_to(context->context(), args[0], args[1]); -} - -/* - * Creates a new subpath at the given point. - */ - -NAN_METHOD(Context2d::MoveTo) { - double args[2]; - if(!checkArgs(info, args, 2)) - return; - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_move_to(context->context(), args[0], args[1]); -} - -/* - * Get font. - */ - -NAN_GETTER(Context2d::GetFont) { - CHECK_RECEIVER(Context2d.GetFont); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - - info.GetReturnValue().Set(Nan::New(context->state->font).ToLocalChecked()); -} - -/* - * Set font: - * - weight - * - style - * - size - * - unit - * - family - */ - -NAN_SETTER(Context2d::SetFont) { - CHECK_RECEIVER(Context2d.SetFont); - if (!value->IsString()) return; - - Isolate *iso = Isolate::GetCurrent(); - Local ctx = Nan::GetCurrentContext(); - - Local str = Nan::To(value).ToLocalChecked(); - if (!str->Length()) return; - - const int argc = 1; - Local argv[argc] = { value }; - - Local mparsed = Nan::Call(_parseFont.Get(iso), ctx->Global(), argc, argv).ToLocalChecked(); - // parseFont returns undefined for invalid CSS font strings - if (mparsed->IsUndefined()) return; - Local font = Nan::To(mparsed).ToLocalChecked(); - - Nan::Utf8String weight(Nan::Get(font, Nan::New("weight").ToLocalChecked()).ToLocalChecked()); - Nan::Utf8String style(Nan::Get(font, Nan::New("style").ToLocalChecked()).ToLocalChecked()); - double size = Nan::To(Nan::Get(font, Nan::New("size").ToLocalChecked()).ToLocalChecked()).FromMaybe(0); - Nan::Utf8String unit(Nan::Get(font, Nan::New("unit").ToLocalChecked()).ToLocalChecked()); - Nan::Utf8String family(Nan::Get(font, Nan::New("family").ToLocalChecked()).ToLocalChecked()); - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - - PangoFontDescription *desc = pango_font_description_copy(context->state->fontDescription); - pango_font_description_free(context->state->fontDescription); - - pango_font_description_set_style(desc, Canvas::GetStyleFromCSSString(*style)); - pango_font_description_set_weight(desc, Canvas::GetWeightFromCSSString(*weight)); - - if (strlen(*family) > 0) { - // See #1643 - Pango understands "sans" whereas CSS uses "sans-serif" - std::string s1(*family); - std::string s2("sans-serif"); - if (streq_casein(s1, s2)) { - pango_font_description_set_family(desc, "sans"); - } else { - pango_font_description_set_family(desc, *family); - } - } - - PangoFontDescription *sys_desc = Canvas::ResolveFontDescription(desc); - pango_font_description_free(desc); - - if (size > 0) pango_font_description_set_absolute_size(sys_desc, size * PANGO_SCALE); - - context->state->fontDescription = sys_desc; - pango_layout_set_font_description(context->_layout, sys_desc); - - context->state->font = *Nan::Utf8String(value); -} - -/* - * Get text baseline. - */ - -NAN_GETTER(Context2d::GetTextBaseline) { - CHECK_RECEIVER(Context2d.GetTextBaseline); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - const char* baseline; - switch (context->state->textBaseline) { - default: - case TEXT_BASELINE_ALPHABETIC: baseline = "alphabetic"; break; - case TEXT_BASELINE_TOP: baseline = "top"; break; - case TEXT_BASELINE_BOTTOM: baseline = "bottom"; break; - case TEXT_BASELINE_MIDDLE: baseline = "middle"; break; - case TEXT_BASELINE_IDEOGRAPHIC: baseline = "ideographic"; break; - case TEXT_BASELINE_HANGING: baseline = "hanging"; break; - } - info.GetReturnValue().Set(Nan::New(baseline).ToLocalChecked()); -} - -/* - * Set text baseline. - */ - -NAN_SETTER(Context2d::SetTextBaseline) { - CHECK_RECEIVER(Context2d.SetTextBaseline); - if (!value->IsString()) return; - - Nan::Utf8String opStr(Nan::To(value).ToLocalChecked()); - const std::map modes = { - {"alphabetic", TEXT_BASELINE_ALPHABETIC}, - {"top", TEXT_BASELINE_TOP}, - {"bottom", TEXT_BASELINE_BOTTOM}, - {"middle", TEXT_BASELINE_MIDDLE}, - {"ideographic", TEXT_BASELINE_IDEOGRAPHIC}, - {"hanging", TEXT_BASELINE_HANGING} - }; - auto op = modes.find(*opStr); - if (op == modes.end()) return; - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - context->state->textBaseline = op->second; -} - -/* - * Get text align. - */ - -NAN_GETTER(Context2d::GetTextAlign) { - CHECK_RECEIVER(Context2d.GetTextAlign); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - const char* align; - switch (context->state->textAlignment) { - default: - // TODO the default is supposed to be "start" - case TEXT_ALIGNMENT_LEFT: align = "left"; break; - case TEXT_ALIGNMENT_START: align = "start"; break; - case TEXT_ALIGNMENT_CENTER: align = "center"; break; - case TEXT_ALIGNMENT_RIGHT: align = "right"; break; - case TEXT_ALIGNMENT_END: align = "end"; break; - } - info.GetReturnValue().Set(Nan::New(align).ToLocalChecked()); -} - -/* - * Set text align. - */ - -NAN_SETTER(Context2d::SetTextAlign) { - CHECK_RECEIVER(Context2d.SetTextAlign); - if (!value->IsString()) return; - - Nan::Utf8String opStr(Nan::To(value).ToLocalChecked()); - const std::map modes = { - {"center", TEXT_ALIGNMENT_CENTER}, - {"left", TEXT_ALIGNMENT_LEFT}, - {"start", TEXT_ALIGNMENT_START}, - {"right", TEXT_ALIGNMENT_RIGHT}, - {"end", TEXT_ALIGNMENT_END} - }; - auto op = modes.find(*opStr); - if (op == modes.end()) return; - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - context->state->textAlignment = op->second; -} - -/* - * Return the given text extents. - * TODO: Support for: - * hangingBaseline, ideographicBaseline, - * fontBoundingBoxAscent, fontBoundingBoxDescent - */ - -NAN_METHOD(Context2d::MeasureText) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - - Nan::Utf8String str(Nan::To(info[0]).ToLocalChecked()); - Local obj = Nan::New(); - - PangoRectangle _ink_rect, _logical_rect; - float_rectangle ink_rect, logical_rect; - PangoFontMetrics *metrics; - PangoLayout *layout = context->layout(); - - pango_layout_set_text(layout, *str, -1); - pango_cairo_update_layout(ctx, layout); - - // Normally you could use pango_layout_get_pixel_extents and be done, or use - // pango_extents_to_pixels, but both of those round the pixels, so we have to - // divide by PANGO_SCALE manually - pango_layout_get_extents(layout, &_ink_rect, &_logical_rect); - - float inverse_pango_scale = 1. / PANGO_SCALE; - - logical_rect.x = _logical_rect.x * inverse_pango_scale; - logical_rect.y = _logical_rect.y * inverse_pango_scale; - logical_rect.width = _logical_rect.width * inverse_pango_scale; - logical_rect.height = _logical_rect.height * inverse_pango_scale; - - ink_rect.x = _ink_rect.x * inverse_pango_scale; - ink_rect.y = _ink_rect.y * inverse_pango_scale; - ink_rect.width = _ink_rect.width * inverse_pango_scale; - ink_rect.height = _ink_rect.height * inverse_pango_scale; - - metrics = PANGO_LAYOUT_GET_METRICS(layout); - - double x_offset; - switch (context->state->textAlignment) { - case TEXT_ALIGNMENT_CENTER: - x_offset = logical_rect.width / 2.; - break; - case TEXT_ALIGNMENT_END: - case TEXT_ALIGNMENT_RIGHT: - x_offset = logical_rect.width; - break; - case TEXT_ALIGNMENT_START: - case TEXT_ALIGNMENT_LEFT: - default: - x_offset = 0.0; - } - - cairo_matrix_t matrix; - cairo_get_matrix(ctx, &matrix); - double y_offset = getBaselineAdjustment(layout, context->state->textBaseline); - - Nan::Set(obj, - Nan::New("width").ToLocalChecked(), - Nan::New(logical_rect.width)).Check(); - Nan::Set(obj, - Nan::New("actualBoundingBoxLeft").ToLocalChecked(), - Nan::New(PANGO_LBEARING(ink_rect) + x_offset)).Check(); - Nan::Set(obj, - Nan::New("actualBoundingBoxRight").ToLocalChecked(), - Nan::New(PANGO_RBEARING(ink_rect) - x_offset)).Check(); - Nan::Set(obj, - Nan::New("actualBoundingBoxAscent").ToLocalChecked(), - Nan::New(y_offset + PANGO_ASCENT(ink_rect))).Check(); - Nan::Set(obj, - Nan::New("actualBoundingBoxDescent").ToLocalChecked(), - Nan::New(PANGO_DESCENT(ink_rect) - y_offset)).Check(); - Nan::Set(obj, - Nan::New("emHeightAscent").ToLocalChecked(), - Nan::New(-(PANGO_ASCENT(logical_rect) - y_offset))).Check(); - Nan::Set(obj, - Nan::New("emHeightDescent").ToLocalChecked(), - Nan::New(PANGO_DESCENT(logical_rect) - y_offset)).Check(); - Nan::Set(obj, - Nan::New("alphabeticBaseline").ToLocalChecked(), - Nan::New(-(pango_font_metrics_get_ascent(metrics) * inverse_pango_scale - y_offset))).Check(); - - pango_font_metrics_unref(metrics); - - info.GetReturnValue().Set(obj); -} - -/* - * Set line dash - * ref: http://www.w3.org/TR/2dcontext/#dom-context-2d-setlinedash - */ - -NAN_METHOD(Context2d::SetLineDash) { - if (!info[0]->IsArray()) return; - Local dash = Local::Cast(info[0]); - uint32_t dashes = dash->Length() & 1 ? dash->Length() * 2 : dash->Length(); - uint32_t zero_dashes = 0; - std::vector a(dashes); - for (uint32_t i=0; i d = Nan::Get(dash, i % dash->Length()).ToLocalChecked(); - if (!d->IsNumber()) return; - a[i] = Nan::To(d).FromMaybe(0); - if (a[i] == 0) zero_dashes++; - if (a[i] < 0 || !std::isfinite(a[i])) return; - } - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - double offset; - cairo_get_dash(ctx, NULL, &offset); - if (zero_dashes == dashes) { - std::vector b(0); - cairo_set_dash(ctx, b.data(), 0, offset); - } else { - cairo_set_dash(ctx, a.data(), dashes, offset); - } -} - -/* - * Get line dash - * ref: http://www.w3.org/TR/2dcontext/#dom-context-2d-setlinedash - */ -NAN_METHOD(Context2d::GetLineDash) { - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - int dashes = cairo_get_dash_count(ctx); - std::vector a(dashes); - cairo_get_dash(ctx, a.data(), NULL); - - Local dash = Nan::New(dashes); - for (int i=0; i(i), Nan::New(a[i])).Check(); - } - - info.GetReturnValue().Set(dash); -} - -/* - * Set line dash offset - * ref: http://www.w3.org/TR/2dcontext/#dom-context-2d-setlinedash - */ -NAN_SETTER(Context2d::SetLineDashOffset) { - CHECK_RECEIVER(Context2d.SetLineDashOffset); - double offset = Nan::To(value).FromMaybe(0); - if (!std::isfinite(offset)) return; - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - - int dashes = cairo_get_dash_count(ctx); - std::vector a(dashes); - cairo_get_dash(ctx, a.data(), NULL); - cairo_set_dash(ctx, a.data(), dashes, offset); -} - -/* - * Get line dash offset - * ref: http://www.w3.org/TR/2dcontext/#dom-context-2d-setlinedash - */ -NAN_GETTER(Context2d::GetLineDashOffset) { - CHECK_RECEIVER(Context2d.GetLineDashOffset); - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - double offset; - cairo_get_dash(ctx, NULL, &offset); - - info.GetReturnValue().Set(Nan::New(offset)); -} - -/* - * Fill the rectangle defined by x, y, width and height. - */ - -NAN_METHOD(Context2d::FillRect) { - RECT_ARGS; - if (0 == width || 0 == height) return; - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - context->savePath(); - cairo_rectangle(ctx, x, y, width, height); - context->fill(); - context->restorePath(); -} - -/* - * Stroke the rectangle defined by x, y, width and height. - */ - -NAN_METHOD(Context2d::StrokeRect) { - RECT_ARGS; - if (0 == width && 0 == height) return; - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - context->savePath(); - cairo_rectangle(ctx, x, y, width, height); - context->stroke(); - context->restorePath(); -} - -/* - * Clears all pixels defined by x, y, width and height. - */ - -NAN_METHOD(Context2d::ClearRect) { - RECT_ARGS; - if (0 == width || 0 == height) return; - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - cairo_save(ctx); - context->savePath(); - cairo_rectangle(ctx, x, y, width, height); - cairo_set_operator(ctx, CAIRO_OPERATOR_CLEAR); - cairo_fill(ctx); - context->restorePath(); - cairo_restore(ctx); -} - -/* - * Adds a rectangle subpath. - */ - -NAN_METHOD(Context2d::Rect) { - RECT_ARGS; - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - if (width == 0) { - cairo_move_to(ctx, x, y); - cairo_line_to(ctx, x, y + height); - } else if (height == 0) { - cairo_move_to(ctx, x, y); - cairo_line_to(ctx, x + width, y); - } else { - cairo_rectangle(ctx, x, y, width, height); - } -} - -// Draws an arc with two potentially different radii. -inline static -void elli_arc(cairo_t* ctx, double xc, double yc, double rx, double ry, double a1, double a2, bool clockwise=true) { - if (rx == 0. || ry == 0.) { - cairo_line_to(ctx, xc + rx, yc + ry); - } else { - cairo_save(ctx); - cairo_translate(ctx, xc, yc); - cairo_scale(ctx, rx, ry); - if (clockwise) - cairo_arc(ctx, 0., 0., 1., a1, a2); - else - cairo_arc_negative(ctx, 0., 0., 1., a2, a1); - cairo_restore(ctx); - } -} - -inline static -bool getRadius(Point& p, const Local& v) { - if (v->IsObject()) { // 5.1 DOMPointInit - auto rx = Nan::Get(v.As(), Nan::New("x").ToLocalChecked()).ToLocalChecked(); - auto ry = Nan::Get(v.As(), Nan::New("y").ToLocalChecked()).ToLocalChecked(); - if (rx->IsNumber() && ry->IsNumber()) { - auto rxv = Nan::To(rx).FromJust(); - auto ryv = Nan::To(ry).FromJust(); - if (!std::isfinite(rxv) || !std::isfinite(ryv)) - return true; - if (rxv < 0 || ryv < 0) { - Nan::ThrowRangeError("radii must be positive."); - return true; - } - p.x = rxv; - p.y = ryv; - return false; - } - } else if (v->IsNumber()) { // 5.2 unrestricted double - auto rv = Nan::To(v).FromJust(); - if (!std::isfinite(rv)) - return true; - if (rv < 0) { - Nan::ThrowRangeError("radii must be positive."); - return true; - } - p.x = p.y = rv; - return false; - } - return true; -} - -/** - * https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-roundrect - * x, y, w, h, [radius|[radii]] - */ -NAN_METHOD(Context2d::RoundRect) { - RECT_ARGS; - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - - // 4. Let normalizedRadii be an empty list - Point normalizedRadii[4]; - size_t nRadii = 4; - - if (info[4]->IsUndefined()) { - for (size_t i = 0; i < 4; i++) - normalizedRadii[i].x = normalizedRadii[i].y = 0.; - - } else if (info[4]->IsArray()) { - auto radiiList = info[4].As(); - nRadii = radiiList->Length(); - if (!(nRadii >= 1 && nRadii <= 4)) { - Nan::ThrowRangeError("radii must be a list of one, two, three or four radii."); - return; - } - // 5. For each radius of radii - for (size_t i = 0; i < nRadii; i++) { - auto r = Nan::Get(radiiList, i).ToLocalChecked(); - if (getRadius(normalizedRadii[i], r)) - return; - } - - } else { - // 2. If radii is a double, then set radii to <> - if (getRadius(normalizedRadii[0], info[4])) - return; - for (size_t i = 1; i < 4; i++) { - normalizedRadii[i].x = normalizedRadii[0].x; - normalizedRadii[i].y = normalizedRadii[0].y; - } - } - - Point upperLeft, upperRight, lowerRight, lowerLeft; - if (nRadii == 4) { - upperLeft = normalizedRadii[0]; - upperRight = normalizedRadii[1]; - lowerRight = normalizedRadii[2]; - lowerLeft = normalizedRadii[3]; - } else if (nRadii == 3) { - upperLeft = normalizedRadii[0]; - upperRight = normalizedRadii[1]; - lowerLeft = normalizedRadii[1]; - lowerRight = normalizedRadii[2]; - } else if (nRadii == 2) { - upperLeft = normalizedRadii[0]; - lowerRight = normalizedRadii[0]; - upperRight = normalizedRadii[1]; - lowerLeft = normalizedRadii[1]; - } else { - upperLeft = normalizedRadii[0]; - upperRight = normalizedRadii[0]; - lowerRight = normalizedRadii[0]; - lowerLeft = normalizedRadii[0]; - } - - bool clockwise = true; - if (width < 0) { - clockwise = false; - x += width; - width = -width; - std::swap(upperLeft, upperRight); - std::swap(lowerLeft, lowerRight); - } - - if (height < 0) { - clockwise = !clockwise; - y += height; - height = -height; - std::swap(upperLeft, lowerLeft); - std::swap(upperRight, lowerRight); - } - - // 11. Corner curves must not overlap. Scale radii to prevent this. - { - auto top = upperLeft.x + upperRight.x; - auto right = upperRight.y + lowerRight.y; - auto bottom = lowerRight.x + lowerLeft.x; - auto left = upperLeft.y + lowerLeft.y; - auto scale = std::min({ width / top, height / right, width / bottom, height / left }); - if (scale < 1.) { - upperLeft.x *= scale; - upperLeft.y *= scale; - upperRight.x *= scale; - upperRight.x *= scale; - lowerLeft.y *= scale; - lowerLeft.y *= scale; - lowerRight.y *= scale; - lowerRight.y *= scale; - } - } - - // 12. Draw - cairo_move_to(ctx, x + upperLeft.x, y); - if (clockwise) { - cairo_line_to(ctx, x + width - upperRight.x, y); - elli_arc(ctx, x + width - upperRight.x, y + upperRight.y, upperRight.x, upperRight.y, 3. * M_PI / 2., 0.); - cairo_line_to(ctx, x + width, y + height - lowerRight.y); - elli_arc(ctx, x + width - lowerRight.x, y + height - lowerRight.y, lowerRight.x, lowerRight.y, 0, M_PI / 2.); - cairo_line_to(ctx, x + lowerLeft.x, y + height); - elli_arc(ctx, x + lowerLeft.x, y + height - lowerLeft.y, lowerLeft.x, lowerLeft.y, M_PI / 2., M_PI); - cairo_line_to(ctx, x, y + upperLeft.y); - elli_arc(ctx, x + upperLeft.x, y + upperLeft.y, upperLeft.x, upperLeft.y, M_PI, 3. * M_PI / 2.); - } else { - elli_arc(ctx, x + upperLeft.x, y + upperLeft.y, upperLeft.x, upperLeft.y, M_PI, 3. * M_PI / 2., false); - cairo_line_to(ctx, x, y + upperLeft.y); - elli_arc(ctx, x + lowerLeft.x, y + height - lowerLeft.y, lowerLeft.x, lowerLeft.y, M_PI / 2., M_PI, false); - cairo_line_to(ctx, x + lowerLeft.x, y + height); - elli_arc(ctx, x + width - lowerRight.x, y + height - lowerRight.y, lowerRight.x, lowerRight.y, 0, M_PI / 2., false); - cairo_line_to(ctx, x + width, y + height - lowerRight.y); - elli_arc(ctx, x + width - upperRight.x, y + upperRight.y, upperRight.x, upperRight.y, 3. * M_PI / 2., 0., false); - cairo_line_to(ctx, x + width - upperRight.x, y); - } - cairo_close_path(ctx); -} - -// Adapted from https://chromium.googlesource.com/chromium/blink/+/refs/heads/main/Source/modules/canvas2d/CanvasPathMethods.cpp -static void canonicalizeAngle(double& startAngle, double& endAngle) { - // Make 0 <= startAngle < 2*PI - double newStartAngle = std::fmod(startAngle, twoPi); - if (newStartAngle < 0) { - newStartAngle += twoPi; - // Check for possible catastrophic cancellation in cases where - // newStartAngle was a tiny negative number (c.f. crbug.com/503422) - if (newStartAngle >= twoPi) - newStartAngle -= twoPi; - } - double delta = newStartAngle - startAngle; - startAngle = newStartAngle; - endAngle = endAngle + delta; -} - -// Adapted from https://chromium.googlesource.com/chromium/blink/+/refs/heads/main/Source/modules/canvas2d/CanvasPathMethods.cpp -static double adjustEndAngle(double startAngle, double endAngle, bool counterclockwise) { - double newEndAngle = endAngle; - /* http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-arc - * If the counterclockwise argument is false and endAngle-startAngle is equal to or greater than 2pi, or, - * if the counterclockwise argument is true and startAngle-endAngle is equal to or greater than 2pi, - * then the arc is the whole circumference of this ellipse, and the point at startAngle along this circle's circumference, - * measured in radians clockwise from the ellipse's semi-major axis, acts as both the start point and the end point. - */ - if (!counterclockwise && endAngle - startAngle >= twoPi) - newEndAngle = startAngle + twoPi; - else if (counterclockwise && startAngle - endAngle >= twoPi) - newEndAngle = startAngle - twoPi; - /* - * Otherwise, the arc is the path along the circumference of this ellipse from the start point to the end point, - * going anti-clockwise if the counterclockwise argument is true, and clockwise otherwise. - * Since the points are on the ellipse, as opposed to being simply angles from zero, - * the arc can never cover an angle greater than 2pi radians. - */ - /* NOTE: When startAngle = 0, endAngle = 2Pi and counterclockwise = true, the spec does not indicate clearly. - * We draw the entire circle, because some web sites use arc(x, y, r, 0, 2*Math.PI, true) to draw circle. - * We preserve backward-compatibility. - */ - else if (!counterclockwise && startAngle > endAngle) - newEndAngle = startAngle + (twoPi - std::fmod(startAngle - endAngle, twoPi)); - else if (counterclockwise && startAngle < endAngle) - newEndAngle = startAngle - (twoPi - std::fmod(endAngle - startAngle, twoPi)); - return newEndAngle; -} - -/* - * Adds an arc at x, y with the given radii and start/end angles. - */ - -NAN_METHOD(Context2d::Arc) { - double args[5]; - if(!checkArgs(info, args, 5)) - return; - - auto x = args[0]; - auto y = args[1]; - auto radius = args[2]; - auto startAngle = args[3]; - auto endAngle = args[4]; - - if (radius < 0) { - Nan::ThrowRangeError("The radius provided is negative."); - return; - } - - bool counterclockwise = Nan::To(info[5]).FromMaybe(false); - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - - canonicalizeAngle(startAngle, endAngle); - endAngle = adjustEndAngle(startAngle, endAngle, counterclockwise); - - if (counterclockwise) { - cairo_arc_negative(ctx, x, y, radius, startAngle, endAngle); - } else { - cairo_arc(ctx, x, y, radius, startAngle, endAngle); - } -} - -/* - * Adds an arcTo point (x0,y0) to (x1,y1) with the given radius. - * - * Implementation influenced by WebKit. - */ - -NAN_METHOD(Context2d::ArcTo) { - double args[5]; - if(!checkArgs(info, args, 5)) - return; - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - - // Current path point - double x, y; - cairo_get_current_point(ctx, &x, &y); - Point p0(x, y); - - // Point (x0,y0) - Point p1(args[0], args[1]); - - // Point (x1,y1) - Point p2(args[2], args[3]); - - float radius = args[4]; - - if ((p1.x == p0.x && p1.y == p0.y) - || (p1.x == p2.x && p1.y == p2.y) - || radius == 0.f) { - cairo_line_to(ctx, p1.x, p1.y); - return; - } - - Point p1p0((p0.x - p1.x),(p0.y - p1.y)); - Point p1p2((p2.x - p1.x),(p2.y - p1.y)); - float p1p0_length = sqrtf(p1p0.x * p1p0.x + p1p0.y * p1p0.y); - float p1p2_length = sqrtf(p1p2.x * p1p2.x + p1p2.y * p1p2.y); - - double cos_phi = (p1p0.x * p1p2.x + p1p0.y * p1p2.y) / (p1p0_length * p1p2_length); - // all points on a line logic - if (-1 == cos_phi) { - cairo_line_to(ctx, p1.x, p1.y); - return; - } - - if (1 == cos_phi) { - // add infinite far away point - unsigned int max_length = 65535; - double factor_max = max_length / p1p0_length; - Point ep((p0.x + factor_max * p1p0.x), (p0.y + factor_max * p1p0.y)); - cairo_line_to(ctx, ep.x, ep.y); - return; - } - - float tangent = radius / tan(acos(cos_phi) / 2); - float factor_p1p0 = tangent / p1p0_length; - Point t_p1p0((p1.x + factor_p1p0 * p1p0.x), (p1.y + factor_p1p0 * p1p0.y)); - - Point orth_p1p0(p1p0.y, -p1p0.x); - float orth_p1p0_length = sqrt(orth_p1p0.x * orth_p1p0.x + orth_p1p0.y * orth_p1p0.y); - float factor_ra = radius / orth_p1p0_length; - - double cos_alpha = (orth_p1p0.x * p1p2.x + orth_p1p0.y * p1p2.y) / (orth_p1p0_length * p1p2_length); - if (cos_alpha < 0.f) - orth_p1p0 = Point(-orth_p1p0.x, -orth_p1p0.y); - - Point p((t_p1p0.x + factor_ra * orth_p1p0.x), (t_p1p0.y + factor_ra * orth_p1p0.y)); - - orth_p1p0 = Point(-orth_p1p0.x, -orth_p1p0.y); - float sa = acos(orth_p1p0.x / orth_p1p0_length); - if (orth_p1p0.y < 0.f) - sa = 2 * M_PI - sa; - - bool anticlockwise = false; - - float factor_p1p2 = tangent / p1p2_length; - Point t_p1p2((p1.x + factor_p1p2 * p1p2.x), (p1.y + factor_p1p2 * p1p2.y)); - Point orth_p1p2((t_p1p2.x - p.x),(t_p1p2.y - p.y)); - float orth_p1p2_length = sqrtf(orth_p1p2.x * orth_p1p2.x + orth_p1p2.y * orth_p1p2.y); - float ea = acos(orth_p1p2.x / orth_p1p2_length); - - if (orth_p1p2.y < 0) ea = 2 * M_PI - ea; - if ((sa > ea) && ((sa - ea) < M_PI)) anticlockwise = true; - if ((sa < ea) && ((ea - sa) > M_PI)) anticlockwise = true; - - cairo_line_to(ctx, t_p1p0.x, t_p1p0.y); - - if (anticlockwise && M_PI * 2 != radius) { - cairo_arc_negative(ctx - , p.x - , p.y - , radius - , sa - , ea); - } else { - cairo_arc(ctx - , p.x - , p.y - , radius - , sa - , ea); - } -} - -/* - * Adds an ellipse to the path which is centered at (x, y) position with the - * radii radiusX and radiusY starting at startAngle and ending at endAngle - * going in the given direction by anticlockwise (defaulting to clockwise). - */ - -NAN_METHOD(Context2d::Ellipse) { - double args[7]; - if(!checkArgs(info, args, 7)) - return; - - double radiusX = args[2]; - double radiusY = args[3]; - - if (radiusX == 0 || radiusY == 0) return; - - double x = args[0]; - double y = args[1]; - double rotation = args[4]; - double startAngle = args[5]; - double endAngle = args[6]; - bool anticlockwise = Nan::To(info[7]).FromMaybe(false); - - Context2d *context = Nan::ObjectWrap::Unwrap(info.This()); - cairo_t *ctx = context->context(); - - // See https://www.cairographics.org/cookbook/ellipses/ - double xRatio = radiusX / radiusY; - - cairo_matrix_t save_matrix; - cairo_get_matrix(ctx, &save_matrix); - cairo_translate(ctx, x, y); - cairo_rotate(ctx, rotation); - cairo_scale(ctx, xRatio, 1.0); - cairo_translate(ctx, -x, -y); - if (anticlockwise && M_PI * 2 != args[4]) { - cairo_arc_negative(ctx, - x, - y, - radiusY, - startAngle, - endAngle); - } else { - cairo_arc(ctx, - x, - y, - radiusY, - startAngle, - endAngle); - } - cairo_set_matrix(ctx, &save_matrix); -} - -#undef CHECK_RECEIVER diff --git a/src/CanvasRenderingContext2d.h b/src/CanvasRenderingContext2d.h deleted file mode 100644 index 8ea4d60b8..000000000 --- a/src/CanvasRenderingContext2d.h +++ /dev/null @@ -1,225 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#pragma once - -#include "cairo.h" -#include "Canvas.h" -#include "color.h" -#include "nan.h" -#include -#include - -/* - * State struct. - * - * Used in conjunction with Save() / Restore() since - * cairo's gstate maintains only a single source pattern at a time. - */ - -struct canvas_state_t { - rgba_t fill = { 0, 0, 0, 1 }; - rgba_t stroke = { 0, 0, 0, 1 }; - rgba_t shadow = { 0, 0, 0, 0 }; - double shadowOffsetX = 0.; - double shadowOffsetY = 0.; - cairo_pattern_t* fillPattern = nullptr; - cairo_pattern_t* strokePattern = nullptr; - cairo_pattern_t* fillGradient = nullptr; - cairo_pattern_t* strokeGradient = nullptr; - PangoFontDescription* fontDescription = nullptr; - std::string font = "10px sans-serif"; - cairo_filter_t patternQuality = CAIRO_FILTER_GOOD; - float globalAlpha = 1.f; - int shadowBlur = 0; - text_align_t textAlignment = TEXT_ALIGNMENT_LEFT; // TODO default is supposed to be START - text_baseline_t textBaseline = TEXT_BASELINE_ALPHABETIC; - canvas_draw_mode_t textDrawingMode = TEXT_DRAW_PATHS; - bool imageSmoothingEnabled = true; - - canvas_state_t() { - fontDescription = pango_font_description_from_string("sans"); - pango_font_description_set_absolute_size(fontDescription, 10 * PANGO_SCALE); - } - - canvas_state_t(const canvas_state_t& other) { - fill = other.fill; - stroke = other.stroke; - patternQuality = other.patternQuality; - fillPattern = other.fillPattern; - strokePattern = other.strokePattern; - fillGradient = other.fillGradient; - strokeGradient = other.strokeGradient; - globalAlpha = other.globalAlpha; - textAlignment = other.textAlignment; - textBaseline = other.textBaseline; - shadow = other.shadow; - shadowBlur = other.shadowBlur; - shadowOffsetX = other.shadowOffsetX; - shadowOffsetY = other.shadowOffsetY; - textDrawingMode = other.textDrawingMode; - fontDescription = pango_font_description_copy(other.fontDescription); - font = other.font; - imageSmoothingEnabled = other.imageSmoothingEnabled; - } - - ~canvas_state_t() { - pango_font_description_free(fontDescription); - } -}; - -/* - * Equivalent to a PangoRectangle but holds floats instead of ints - * (software pixels are stored here instead of pango units) - * - * Should be compatible with PANGO_ASCENT, PANGO_LBEARING, etc. - */ - -typedef struct { - float x; - float y; - float width; - float height; -} float_rectangle; - -class Context2d : public Nan::ObjectWrap { - public: - std::stack states; - canvas_state_t *state; - Context2d(Canvas *canvas); - static Nan::Persistent _DOMMatrix; - static Nan::Persistent _parseFont; - static Nan::Persistent constructor; - static void Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target); - static NAN_METHOD(New); - static NAN_METHOD(SaveExternalModules); - static NAN_METHOD(DrawImage); - static NAN_METHOD(PutImageData); - static NAN_METHOD(Save); - static NAN_METHOD(Restore); - static NAN_METHOD(Rotate); - static NAN_METHOD(Translate); - static NAN_METHOD(Scale); - static NAN_METHOD(Transform); - static NAN_METHOD(GetTransform); - static NAN_METHOD(ResetTransform); - static NAN_METHOD(SetTransform); - static NAN_METHOD(IsPointInPath); - static NAN_METHOD(BeginPath); - static NAN_METHOD(ClosePath); - static NAN_METHOD(AddPage); - static NAN_METHOD(Clip); - static NAN_METHOD(Fill); - static NAN_METHOD(Stroke); - static NAN_METHOD(FillText); - static NAN_METHOD(StrokeText); - static NAN_METHOD(SetFont); - static NAN_METHOD(SetFillColor); - static NAN_METHOD(SetStrokeColor); - static NAN_METHOD(SetStrokePattern); - static NAN_METHOD(SetTextAlignment); - static NAN_METHOD(SetLineDash); - static NAN_METHOD(GetLineDash); - static NAN_METHOD(MeasureText); - static NAN_METHOD(BezierCurveTo); - static NAN_METHOD(QuadraticCurveTo); - static NAN_METHOD(LineTo); - static NAN_METHOD(MoveTo); - static NAN_METHOD(FillRect); - static NAN_METHOD(StrokeRect); - static NAN_METHOD(ClearRect); - static NAN_METHOD(Rect); - static NAN_METHOD(RoundRect); - static NAN_METHOD(Arc); - static NAN_METHOD(ArcTo); - static NAN_METHOD(Ellipse); - static NAN_METHOD(GetImageData); - static NAN_METHOD(CreateImageData); - static NAN_METHOD(GetStrokeColor); - static NAN_METHOD(CreatePattern); - static NAN_METHOD(CreateLinearGradient); - static NAN_METHOD(CreateRadialGradient); - static NAN_GETTER(GetFormat); - static NAN_GETTER(GetPatternQuality); - static NAN_GETTER(GetImageSmoothingEnabled); - static NAN_GETTER(GetGlobalCompositeOperation); - static NAN_GETTER(GetGlobalAlpha); - static NAN_GETTER(GetShadowColor); - static NAN_GETTER(GetMiterLimit); - static NAN_GETTER(GetLineCap); - static NAN_GETTER(GetLineJoin); - static NAN_GETTER(GetLineWidth); - static NAN_GETTER(GetLineDashOffset); - static NAN_GETTER(GetShadowOffsetX); - static NAN_GETTER(GetShadowOffsetY); - static NAN_GETTER(GetShadowBlur); - static NAN_GETTER(GetAntiAlias); - static NAN_GETTER(GetTextDrawingMode); - static NAN_GETTER(GetQuality); - static NAN_GETTER(GetCurrentTransform); - static NAN_GETTER(GetFillStyle); - static NAN_GETTER(GetStrokeStyle); - static NAN_GETTER(GetFont); - static NAN_GETTER(GetTextBaseline); - static NAN_GETTER(GetTextAlign); - static NAN_SETTER(SetPatternQuality); - static NAN_SETTER(SetImageSmoothingEnabled); - static NAN_SETTER(SetGlobalCompositeOperation); - static NAN_SETTER(SetGlobalAlpha); - static NAN_SETTER(SetShadowColor); - static NAN_SETTER(SetMiterLimit); - static NAN_SETTER(SetLineCap); - static NAN_SETTER(SetLineJoin); - static NAN_SETTER(SetLineWidth); - static NAN_SETTER(SetLineDashOffset); - static NAN_SETTER(SetShadowOffsetX); - static NAN_SETTER(SetShadowOffsetY); - static NAN_SETTER(SetShadowBlur); - static NAN_SETTER(SetAntiAlias); - static NAN_SETTER(SetTextDrawingMode); - static NAN_SETTER(SetQuality); - static NAN_SETTER(SetCurrentTransform); - static NAN_SETTER(SetFillStyle); - static NAN_SETTER(SetStrokeStyle); - static NAN_SETTER(SetFont); - static NAN_SETTER(SetTextBaseline); - static NAN_SETTER(SetTextAlign); - inline void setContext(cairo_t *ctx) { _context = ctx; } - inline cairo_t *context(){ return _context; } - inline Canvas *canvas(){ return _canvas; } - inline bool hasShadow(); - void inline setSourceRGBA(rgba_t color); - void inline setSourceRGBA(cairo_t *ctx, rgba_t color); - void setTextPath(double x, double y); - void blur(cairo_surface_t *surface, int radius); - void shadow(void (fn)(cairo_t *cr)); - void shadowStart(); - void shadowApply(); - void savePath(); - void restorePath(); - void saveState(); - void restoreState(); - void inline setFillRule(v8::Local value); - void fill(bool preserve = false); - void stroke(bool preserve = false); - void save(); - void restore(); - void setFontFromState(); - void resetState(); - inline PangoLayout *layout(){ return _layout; } - - private: - ~Context2d(); - void _resetPersistentHandles(); - v8::Local _getFillColor(); - v8::Local _getStrokeColor(); - void _setFillColor(v8::Local arg); - void _setFillPattern(v8::Local arg); - void _setStrokeColor(v8::Local arg); - void _setStrokePattern(v8::Local arg); - Nan::Persistent _fillStyle; - Nan::Persistent _strokeStyle; - Canvas *_canvas; - cairo_t *_context; - cairo_path_t *_path; - PangoLayout *_layout; -}; diff --git a/src/Image.cc b/src/Image.cc deleted file mode 100644 index 301257769..000000000 --- a/src/Image.cc +++ /dev/null @@ -1,1442 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#include "Image.h" - -#include "bmp/BMPParser.h" -#include "Canvas.h" -#include -#include -#include -#include - -/* Cairo limit: - * https://lists.cairographics.org/archives/cairo/2010-December/021422.html - */ -static constexpr int canvas_max_side = (1 << 15) - 1; - -#ifdef HAVE_GIF -typedef struct { - uint8_t *buf; - unsigned len; - unsigned pos; -} gif_data_t; -#endif - -#ifdef HAVE_JPEG -#include - -struct canvas_jpeg_error_mgr: jpeg_error_mgr { - Image* image; - jmp_buf setjmp_buffer; -}; -#endif - -/* - * Read closure used by loadFromBuffer. - */ - -typedef struct { - unsigned len; - uint8_t *buf; -} read_closure_t; - -using namespace v8; - -Nan::Persistent Image::constructor; - -/* - * Initialize Image. - */ - -void -Image::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) { - Nan::HandleScope scope; - - Local ctor = Nan::New(Image::New); - constructor.Reset(ctor); - ctor->InstanceTemplate()->SetInternalFieldCount(1); - ctor->SetClassName(Nan::New("Image").ToLocalChecked()); - - // Prototype - Local proto = ctor->PrototypeTemplate(); - Nan::SetAccessor(proto, Nan::New("complete").ToLocalChecked(), GetComplete); - Nan::SetAccessor(proto, Nan::New("width").ToLocalChecked(), GetWidth, SetWidth); - Nan::SetAccessor(proto, Nan::New("height").ToLocalChecked(), GetHeight, SetHeight); - Nan::SetAccessor(proto, Nan::New("naturalWidth").ToLocalChecked(), GetNaturalWidth); - Nan::SetAccessor(proto, Nan::New("naturalHeight").ToLocalChecked(), GetNaturalHeight); - Nan::SetAccessor(proto, Nan::New("dataMode").ToLocalChecked(), GetDataMode, SetDataMode); - - ctor->Set(Nan::New("MODE_IMAGE").ToLocalChecked(), Nan::New(DATA_IMAGE)); - ctor->Set(Nan::New("MODE_MIME").ToLocalChecked(), Nan::New(DATA_MIME)); - - Local ctx = Nan::GetCurrentContext(); - Nan::Set(target, Nan::New("Image").ToLocalChecked(), ctor->GetFunction(ctx).ToLocalChecked()); - - // Used internally in lib/image.js - NAN_EXPORT(target, GetSource); - NAN_EXPORT(target, SetSource); -} - -/* - * Initialize a new Image. - */ - -NAN_METHOD(Image::New) { - if (!info.IsConstructCall()) { - return Nan::ThrowTypeError("Class constructors cannot be invoked without 'new'"); - } - - Image *img = new Image; - img->data_mode = DATA_IMAGE; - img->Wrap(info.This()); - Nan::Set(info.This(), Nan::New("onload").ToLocalChecked(), Nan::Null()).Check(); - Nan::Set(info.This(), Nan::New("onerror").ToLocalChecked(), Nan::Null()).Check(); - info.GetReturnValue().Set(info.This()); -} - -/* - * Get complete boolean. - */ - -NAN_GETTER(Image::GetComplete) { - info.GetReturnValue().Set(Nan::New(true)); -} - -/* - * Get dataMode. - */ - -NAN_GETTER(Image::GetDataMode) { - if (!Image::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { - Nan::ThrowTypeError("Method Image.GetDataMode called on incompatible receiver"); - return; - } - Image *img = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(img->data_mode)); -} - -/* - * Set dataMode. - */ - -NAN_SETTER(Image::SetDataMode) { - if (!Image::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { - Nan::ThrowTypeError("Method Image.SetDataMode called on incompatible receiver"); - return; - } - if (value->IsNumber()) { - Image *img = Nan::ObjectWrap::Unwrap(info.This()); - int mode = Nan::To(value).FromMaybe(0); - img->data_mode = (data_mode_t) mode; - } -} - -/* - * Get natural width - */ - -NAN_GETTER(Image::GetNaturalWidth) { - if (!Image::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { - Nan::ThrowTypeError("Method Image.GetNaturalWidth called on incompatible receiver"); - return; - } - Image *img = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(img->naturalWidth)); -} - -/* - * Get width. - */ - -NAN_GETTER(Image::GetWidth) { - if (!Image::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { - Nan::ThrowTypeError("Method Image.GetWidth called on incompatible receiver"); - return; - } - Image *img = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(img->width)); -} - -/* - * Set width. - */ - -NAN_SETTER(Image::SetWidth) { - if (!Image::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { - Nan::ThrowTypeError("Method Image.SetWidth called on incompatible receiver"); - return; - } - if (value->IsNumber()) { - Image *img = Nan::ObjectWrap::Unwrap(info.This()); - img->width = Nan::To(value).FromMaybe(0); - } -} - -/* - * Get natural height - */ - -NAN_GETTER(Image::GetNaturalHeight) { - if (!Image::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { - Nan::ThrowTypeError("Method Image.GetNaturalHeight called on incompatible receiver"); - return; - } - Image *img = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(img->naturalHeight)); -} - -/* - * Get height. - */ - -NAN_GETTER(Image::GetHeight) { - if (!Image::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { - Nan::ThrowTypeError("Method Image.GetHeight called on incompatible receiver"); - return; - } - Image *img = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(img->height)); -} -/* - * Set height. - */ - -NAN_SETTER(Image::SetHeight) { - if (!Image::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { - // #1534 - Nan::ThrowTypeError("Method Image.SetHeight called on incompatible receiver"); - return; - } - if (value->IsNumber()) { - Image *img = Nan::ObjectWrap::Unwrap(info.This()); - img->height = Nan::To(value).FromMaybe(0); - } -} - -/* - * Get src path. - */ - -NAN_METHOD(Image::GetSource){ - if (!Image::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { - // #1534 - Nan::ThrowTypeError("Method Image.GetSource called on incompatible receiver"); - return; - } - Image *img = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(img->filename ? img->filename : "").ToLocalChecked()); -} - -/* - * Clean up assets and variables. - */ - -void -Image::clearData() { - if (_surface) { - cairo_surface_destroy(_surface); - Nan::AdjustExternalMemory(-_data_len); - _data_len = 0; - _surface = NULL; - } - - delete[] _data; - _data = nullptr; - - free(filename); - filename = NULL; - -#ifdef HAVE_RSVG - if (_rsvg != NULL) { - g_object_unref(_rsvg); - _rsvg = NULL; - } -#endif - - width = height = 0; - naturalWidth = naturalHeight = 0; - state = DEFAULT; -} - -/* - * Set src path. - */ - -NAN_METHOD(Image::SetSource){ - if (!Image::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { - // #1534 - Nan::ThrowTypeError("Method Image.SetSource called on incompatible receiver"); - return; - } - Image *img = Nan::ObjectWrap::Unwrap(info.This()); - cairo_status_t status = CAIRO_STATUS_READ_ERROR; - - Local value = info[0]; - - img->clearData(); - // Clear errno in case some unrelated previous syscall failed - errno = 0; - - // url string - if (value->IsString()) { - Nan::Utf8String src(value); - if (img->filename) free(img->filename); - img->filename = strdup(*src); - status = img->load(); - // Buffer - } else if (node::Buffer::HasInstance(value)) { - uint8_t *buf = (uint8_t *) node::Buffer::Data(Nan::To(value).ToLocalChecked()); - unsigned len = node::Buffer::Length(Nan::To(value).ToLocalChecked()); - status = img->loadFromBuffer(buf, len); - } - - if (status) { - Local onerrorFn = Nan::Get(info.This(), Nan::New("onerror").ToLocalChecked()).ToLocalChecked(); - if (onerrorFn->IsFunction()) { - Local argv[1]; - CanvasError errorInfo = img->errorInfo; - if (errorInfo.cerrno) { - argv[0] = Nan::ErrnoException(errorInfo.cerrno, errorInfo.syscall.c_str(), errorInfo.message.c_str(), errorInfo.path.c_str()); - } else if (!errorInfo.message.empty()) { - argv[0] = Nan::Error(Nan::New(errorInfo.message).ToLocalChecked()); - } else { - argv[0] = Nan::Error(Nan::New(cairo_status_to_string(status)).ToLocalChecked()); - } - Local ctx = Nan::GetCurrentContext(); - Nan::Call(onerrorFn.As(), ctx->Global(), 1, argv); - } - } else { - img->loaded(); - Local onloadFn = Nan::Get(info.This(), Nan::New("onload").ToLocalChecked()).ToLocalChecked(); - if (onloadFn->IsFunction()) { - Local ctx = Nan::GetCurrentContext(); - Nan::Call(onloadFn.As(), ctx->Global(), 0, NULL); - } - } -} - -/* - * Load image data from `buf` by sniffing - * the bytes to determine format. - */ - -cairo_status_t -Image::loadFromBuffer(uint8_t *buf, unsigned len) { - uint8_t data[4] = {0}; - memcpy(data, buf, (len < 4 ? len : 4) * sizeof(uint8_t)); - - if (isPNG(data)) return loadPNGFromBuffer(buf); - - if (isGIF(data)) { -#ifdef HAVE_GIF - return loadGIFFromBuffer(buf, len); -#else - this->errorInfo.set("node-canvas was built without GIF support"); - return CAIRO_STATUS_READ_ERROR; -#endif - } - - if (isJPEG(data)) { -#ifdef HAVE_JPEG - if (DATA_IMAGE == data_mode) return loadJPEGFromBuffer(buf, len); - if (DATA_MIME == data_mode) return decodeJPEGBufferIntoMimeSurface(buf, len); - if ((DATA_IMAGE | DATA_MIME) == data_mode) { - cairo_status_t status; - status = loadJPEGFromBuffer(buf, len); - if (status) return status; - return assignDataAsMime(buf, len, CAIRO_MIME_TYPE_JPEG); - } -#else // HAVE_JPEG - this->errorInfo.set("node-canvas was built without JPEG support"); - return CAIRO_STATUS_READ_ERROR; -#endif - } - - // confirm svg using first 1000 chars - // if a very long comment precedes the root tag, isSVG returns false - unsigned head_len = (len < 1000 ? len : 1000); - if (isSVG(buf, head_len)) { -#ifdef HAVE_RSVG - return loadSVGFromBuffer(buf, len); -#else - this->errorInfo.set("node-canvas was built without SVG support"); - return CAIRO_STATUS_READ_ERROR; -#endif - } - - if (isBMP(buf, len)) - return loadBMPFromBuffer(buf, len); - - this->errorInfo.set("Unsupported image type"); - return CAIRO_STATUS_READ_ERROR; -} - -/* - * Load PNG data from `buf`. - */ - -cairo_status_t -Image::loadPNGFromBuffer(uint8_t *buf) { - read_closure_t closure; - closure.len = 0; - closure.buf = buf; - _surface = cairo_image_surface_create_from_png_stream(readPNG, &closure); - cairo_status_t status = cairo_surface_status(_surface); - if (status) return status; - return CAIRO_STATUS_SUCCESS; -} - -/* - * Read PNG data. - */ - -cairo_status_t -Image::readPNG(void *c, uint8_t *data, unsigned int len) { - read_closure_t *closure = (read_closure_t *) c; - memcpy(data, closure->buf + closure->len, len); - closure->len += len; - return CAIRO_STATUS_SUCCESS; -} - -/* - * Initialize a new Image. - */ - -Image::Image() { - filename = NULL; - _data = nullptr; - _data_len = 0; - _surface = NULL; - width = height = 0; - naturalWidth = naturalHeight = 0; - state = DEFAULT; -#ifdef HAVE_RSVG - _rsvg = NULL; - _is_svg = false; - _svg_last_width = _svg_last_height = 0; -#endif -} - -/* - * Destroy image and associated surface. - */ - -Image::~Image() { - clearData(); -} - -/* - * Initiate image loading. - */ - -cairo_status_t -Image::load() { - if (LOADING != state) { - state = LOADING; - return loadSurface(); - } - return CAIRO_STATUS_READ_ERROR; -} - -/* - * Set state, assign dimensions. - */ - -void -Image::loaded() { - Nan::HandleScope scope; - state = COMPLETE; - - width = naturalWidth = cairo_image_surface_get_width(_surface); - height = naturalHeight = cairo_image_surface_get_height(_surface); - _data_len = naturalHeight * cairo_image_surface_get_stride(_surface); - Nan::AdjustExternalMemory(_data_len); -} - -/* - * Returns this image's surface. - */ -cairo_surface_t *Image::surface() { -#ifdef HAVE_RSVG - if (_is_svg && (_svg_last_width != width || _svg_last_height != height)) { - if (_surface != NULL) { - cairo_surface_destroy(_surface); - _surface = NULL; - } - - cairo_status_t status = renderSVGToSurface(); - if (status != CAIRO_STATUS_SUCCESS) { - g_object_unref(_rsvg); - Nan::ThrowError(Canvas::Error(status)); - return NULL; - } - } -#endif - return _surface; -} - -/* - * Load cairo surface from the image src. - * - * TODO: support more formats - * TODO: use node IO or at least thread pool - */ - -cairo_status_t -Image::loadSurface() { - FILE *stream = fopen(filename, "rb"); - if (!stream) { - this->errorInfo.set(NULL, "fopen", errno, filename); - return CAIRO_STATUS_READ_ERROR; - } - uint8_t buf[5]; - if (1 != fread(&buf, 5, 1, stream)) { - fclose(stream); - return CAIRO_STATUS_READ_ERROR; - } - rewind(stream); - - // png - if (isPNG(buf)) { - fclose(stream); - return loadPNG(); - } - - - if (isGIF(buf)) { -#ifdef HAVE_GIF - return loadGIF(stream); -#else - this->errorInfo.set("node-canvas was built without GIF support"); - return CAIRO_STATUS_READ_ERROR; -#endif - } - - if (isJPEG(buf)) { -#ifdef HAVE_JPEG - return loadJPEG(stream); -#else - this->errorInfo.set("node-canvas was built without JPEG support"); - return CAIRO_STATUS_READ_ERROR; -#endif - } - - // confirm svg using first 1000 chars - // if a very long comment precedes the root tag, isSVG returns false - uint8_t head[1000] = {0}; - fseek(stream, 0 , SEEK_END); - long len = ftell(stream); - unsigned head_len = (len < 1000 ? len : 1000); - unsigned head_size = head_len * sizeof(uint8_t); - rewind(stream); - if (head_size != fread(&head, 1, head_size, stream)) { - fclose(stream); - return CAIRO_STATUS_READ_ERROR; - } - rewind(stream); - if (isSVG(head, head_len)) { -#ifdef HAVE_RSVG - return loadSVG(stream); -#else - this->errorInfo.set("node-canvas was built without SVG support"); - return CAIRO_STATUS_READ_ERROR; -#endif - } - - if (isBMP(buf, 2)) - return loadBMP(stream); - - fclose(stream); - - this->errorInfo.set("Unsupported image type"); - return CAIRO_STATUS_READ_ERROR; -} - -/* - * Load PNG. - */ - -cairo_status_t -Image::loadPNG() { - _surface = cairo_image_surface_create_from_png(filename); - return cairo_surface_status(_surface); -} - -// GIF support - -#ifdef HAVE_GIF - -/* - * Return the alpha color for `gif` at `frame`, or -1. - */ - -int -get_gif_transparent_color(GifFileType *gif, int frame) { - ExtensionBlock *ext = gif->SavedImages[frame].ExtensionBlocks; - int len = gif->SavedImages[frame].ExtensionBlockCount; - for (int x = 0; x < len; ++x, ++ext) { - if ((ext->Function == GRAPHICS_EXT_FUNC_CODE) && (ext->Bytes[0] & 1)) { - return ext->Bytes[3] == 0 ? 0 : (uint8_t) ext->Bytes[3]; - } - } - return -1; -} - -/* - * Memory GIF reader callback. - */ - -int -read_gif_from_memory(GifFileType *gif, GifByteType *buf, int len) { - gif_data_t *data = (gif_data_t *) gif->UserData; - if ((data->pos + len) > data->len) len = data->len - data->pos; - memcpy(buf, data->pos + data->buf, len); - data->pos += len; - return len; -} - -/* - * Load GIF. - */ - -cairo_status_t -Image::loadGIF(FILE *stream) { - struct stat s; - int fd = fileno(stream); - - // stat - if (fstat(fd, &s) < 0) { - fclose(stream); - return CAIRO_STATUS_READ_ERROR; - } - - uint8_t *buf = (uint8_t *) malloc(s.st_size); - - if (!buf) { - fclose(stream); - this->errorInfo.set(NULL, "malloc", errno); - return CAIRO_STATUS_NO_MEMORY; - } - - size_t read = fread(buf, s.st_size, 1, stream); - fclose(stream); - - cairo_status_t result = CAIRO_STATUS_READ_ERROR; - if (1 == read) result = loadGIFFromBuffer(buf, s.st_size); - free(buf); - - return result; -} - -/* - * Load give from `buf` and the given `len`. - */ - -cairo_status_t -Image::loadGIFFromBuffer(uint8_t *buf, unsigned len) { - int i = 0; - GifFileType* gif; - - gif_data_t gifd = { buf, len, 0 }; - -#if GIFLIB_MAJOR >= 5 - int errorcode; - if ((gif = DGifOpen((void*) &gifd, read_gif_from_memory, &errorcode)) == NULL) - return CAIRO_STATUS_READ_ERROR; -#else - if ((gif = DGifOpen((void*) &gifd, read_gif_from_memory)) == NULL) - return CAIRO_STATUS_READ_ERROR; -#endif - - if (GIF_OK != DGifSlurp(gif)) { - GIF_CLOSE_FILE(gif); - return CAIRO_STATUS_READ_ERROR; - } - - if (gif->SWidth > canvas_max_side || gif->SHeight > canvas_max_side) { - GIF_CLOSE_FILE(gif); - return CAIRO_STATUS_INVALID_SIZE; - } - - width = naturalWidth = gif->SWidth; - height = naturalHeight = gif->SHeight; - - uint8_t *data = new uint8_t[naturalWidth * naturalHeight * 4]; - if (!data) { - GIF_CLOSE_FILE(gif); - this->errorInfo.set(NULL, "malloc", errno); - return CAIRO_STATUS_NO_MEMORY; - } - - GifImageDesc *img = &gif->SavedImages[i].ImageDesc; - - // local colormap takes precedence over global - ColorMapObject *colormap = img->ColorMap - ? img->ColorMap - : gif->SColorMap; - - if (colormap == nullptr) { - GIF_CLOSE_FILE(gif); - return CAIRO_STATUS_READ_ERROR; - } - - int bgColor = 0; - int alphaColor = get_gif_transparent_color(gif, i); - if (gif->SColorMap) bgColor = (uint8_t) gif->SBackGroundColor; - else if(alphaColor >= 0) bgColor = alphaColor; - - uint8_t *src_data = (uint8_t*) gif->SavedImages[i].RasterBits; - uint32_t *dst_data = (uint32_t*) data; - - if (!gif->Image.Interlace) { - if (naturalWidth == img->Width && naturalHeight == img->Height) { - for (int y = 0; y < naturalHeight; ++y) { - for (int x = 0; x < naturalWidth; ++x) { - *dst_data = ((*src_data == alphaColor) ? 0 : 255) << 24 - | colormap->Colors[*src_data].Red << 16 - | colormap->Colors[*src_data].Green << 8 - | colormap->Colors[*src_data].Blue; - - dst_data++; - src_data++; - } - } - } else { - // Image does not take up whole "screen" so we need to fill-in the background - int bottom = img->Top + img->Height; - int right = img->Left + img->Width; - - uint32_t bgPixel = - ((bgColor == alphaColor) ? 0 : 255) << 24 - | colormap->Colors[bgColor].Red << 16 - | colormap->Colors[bgColor].Green << 8 - | colormap->Colors[bgColor].Blue; - - for (int y = 0; y < naturalHeight; ++y) { - for (int x = 0; x < naturalWidth; ++x) { - if (y < img->Top || y >= bottom || x < img->Left || x >= right) { - *dst_data = bgPixel; - dst_data++; - } else { - *dst_data = ((*src_data == alphaColor) ? 0 : 255) << 24 - | colormap->Colors[*src_data].Red << 16 - | colormap->Colors[*src_data].Green << 8 - | colormap->Colors[*src_data].Blue; - dst_data++; - src_data++; - } - } - } - } - } else { - // Image is interlaced so that it streams nice over 14.4k and 28.8k modems :) - // We first load in 1/8 of the image, followed by another 1/8, followed by - // 1/4 and finally the remaining 1/2. - int ioffs[] = { 0, 4, 2, 1 }; - int ijumps[] = { 8, 8, 4, 2 }; - - uint8_t *src_ptr = src_data; - uint32_t *dst_ptr; - - for(int z = 0; z < 4; z++) { - for(int y = ioffs[z]; y < naturalHeight; y += ijumps[z]) { - dst_ptr = dst_data + naturalWidth * y; - for(int x = 0; x < naturalWidth; ++x) { - *dst_ptr = ((*src_ptr == alphaColor) ? 0 : 255) << 24 - | (colormap->Colors[*src_ptr].Red) << 16 - | (colormap->Colors[*src_ptr].Green) << 8 - | (colormap->Colors[*src_ptr].Blue); - - dst_ptr++; - src_ptr++; - } - } - } - } - - GIF_CLOSE_FILE(gif); - - // New image surface - _surface = cairo_image_surface_create_for_data( - data - , CAIRO_FORMAT_ARGB32 - , naturalWidth - , naturalHeight - , cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, naturalWidth)); - - cairo_status_t status = cairo_surface_status(_surface); - - if (status) { - delete[] data; - return status; - } - - _data = data; - - return CAIRO_STATUS_SUCCESS; -} -#endif /* HAVE_GIF */ - -// JPEG support - -#ifdef HAVE_JPEG - -// libjpeg 6.2 does not have jpeg_mem_src; define it ourselves here unless -// libjpeg 8 is installed. -#if JPEG_LIB_VERSION < 80 && !defined(MEM_SRCDST_SUPPORTED) - -/* Read JPEG image from a memory segment */ -static void -init_source(j_decompress_ptr cinfo) {} - -static boolean -fill_input_buffer(j_decompress_ptr cinfo) { - ERREXIT(cinfo, JERR_INPUT_EMPTY); - return TRUE; -} -static void -skip_input_data(j_decompress_ptr cinfo, long num_bytes) { - struct jpeg_source_mgr* src = (struct jpeg_source_mgr*) cinfo->src; - if (num_bytes > 0) { - src->next_input_byte += (size_t) num_bytes; - src->bytes_in_buffer -= (size_t) num_bytes; - } -} - -static void term_source (j_decompress_ptr cinfo) {} -static void jpeg_mem_src (j_decompress_ptr cinfo, void* buffer, long nbytes) { - struct jpeg_source_mgr* src; - - if (cinfo->src == NULL) { - cinfo->src = (struct jpeg_source_mgr *) - (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, - sizeof(struct jpeg_source_mgr)); - } - - src = (struct jpeg_source_mgr*) cinfo->src; - src->init_source = init_source; - src->fill_input_buffer = fill_input_buffer; - src->skip_input_data = skip_input_data; - src->resync_to_restart = jpeg_resync_to_restart; /* use default method */ - src->term_source = term_source; - src->bytes_in_buffer = nbytes; - src->next_input_byte = (JOCTET*)buffer; -} - -#endif - -void Image::jpegToARGB(jpeg_decompress_struct* args, uint8_t* data, uint8_t* src, JPEGDecodeL decode) { - int stride = naturalWidth * 4; - for (int y = 0; y < naturalHeight; ++y) { - jpeg_read_scanlines(args, &src, 1); - uint32_t *row = (uint32_t*)(data + stride * y); - for (int x = 0; x < naturalWidth; ++x) { - int bx = args->output_components * x; - row[x] = decode(src + bx); - } - } -} - -/* - * Takes an initialised jpeg_decompress_struct and decodes the - * data into _surface. - */ - -cairo_status_t -Image::decodeJPEGIntoSurface(jpeg_decompress_struct *args) { - cairo_status_t status = CAIRO_STATUS_SUCCESS; - - uint8_t *data = new uint8_t[naturalWidth * naturalHeight * 4]; - if (!data) { - jpeg_abort_decompress(args); - jpeg_destroy_decompress(args); - this->errorInfo.set(NULL, "malloc", errno); - return CAIRO_STATUS_NO_MEMORY; - } - - uint8_t *src = new uint8_t[naturalWidth * args->output_components]; - if (!src) { - free(data); - jpeg_abort_decompress(args); - jpeg_destroy_decompress(args); - this->errorInfo.set(NULL, "malloc", errno); - return CAIRO_STATUS_NO_MEMORY; - } - - // These are the three main cases to handle. libjpeg converts YCCK to CMYK - // and YCbCr to RGB by default. - switch (args->out_color_space) { - case JCS_CMYK: - jpegToARGB(args, data, src, [](uint8_t const* src) { - uint16_t k = static_cast(src[3]); - uint8_t r = k * src[0] / 255; - uint8_t g = k * src[1] / 255; - uint8_t b = k * src[2] / 255; - return 255 << 24 | r << 16 | g << 8 | b; - }); - break; - case JCS_RGB: - jpegToARGB(args, data, src, [](uint8_t const* src) { - uint8_t r = src[0], g = src[1], b = src[2]; - return 255 << 24 | r << 16 | g << 8 | b; - }); - break; - case JCS_GRAYSCALE: - jpegToARGB(args, data, src, [](uint8_t const* src) { - uint8_t v = src[0]; - return 255 << 24 | v << 16 | v << 8 | v; - }); - break; - default: - this->errorInfo.set("Unsupported JPEG encoding"); - status = CAIRO_STATUS_READ_ERROR; - break; - } - - if (!status) { - _surface = cairo_image_surface_create_for_data( - data - , CAIRO_FORMAT_ARGB32 - , naturalWidth - , naturalHeight - , cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, naturalWidth)); - } - - jpeg_finish_decompress(args); - jpeg_destroy_decompress(args); - status = cairo_surface_status(_surface); - - delete[] src; - - if (status) { - delete[] data; - return status; - } - - _data = data; - - return CAIRO_STATUS_SUCCESS; -} - -/* - * Callback to recover from jpeg errors - */ - -static void canvas_jpeg_error_exit(j_common_ptr cinfo) { - canvas_jpeg_error_mgr *cjerr = static_cast(cinfo->err); - cjerr->output_message(cinfo); - // Return control to the setjmp point - longjmp(cjerr->setjmp_buffer, 1); -} - -// Capture libjpeg errors instead of writing stdout -static void canvas_jpeg_output_message(j_common_ptr cinfo) { - canvas_jpeg_error_mgr *cjerr = static_cast(cinfo->err); - char buff[JMSG_LENGTH_MAX]; - cjerr->format_message(cinfo, buff); - // (Only the last message will be returned to JS land.) - cjerr->image->errorInfo.set(buff); -} - -/* - * Takes a jpeg data buffer and assigns it as mime data to a - * dummy surface - */ - -cairo_status_t -Image::decodeJPEGBufferIntoMimeSurface(uint8_t *buf, unsigned len) { - // TODO: remove this duplicate logic - // JPEG setup - struct jpeg_decompress_struct args; - struct canvas_jpeg_error_mgr err; - - err.image = this; - args.err = jpeg_std_error(&err); - args.err->error_exit = canvas_jpeg_error_exit; - args.err->output_message = canvas_jpeg_output_message; - - // Establish the setjmp return context for canvas_jpeg_error_exit to use - if (setjmp(err.setjmp_buffer)) { - // If we get here, the JPEG code has signaled an error. - // We need to clean up the JPEG object, close the input file, and return. - jpeg_destroy_decompress(&args); - return CAIRO_STATUS_READ_ERROR; - } - - jpeg_create_decompress(&args); - - jpeg_mem_src(&args, buf, len); - - jpeg_read_header(&args, 1); - jpeg_start_decompress(&args); - width = naturalWidth = args.output_width; - height = naturalHeight = args.output_height; - - // Data alloc - // 8 pixels per byte using Alpha Channel format to reduce memory requirement. - int buf_size = naturalHeight * cairo_format_stride_for_width(CAIRO_FORMAT_A1, naturalWidth); - uint8_t *data = new uint8_t[buf_size]; - if (!data) { - this->errorInfo.set(NULL, "malloc", errno); - return CAIRO_STATUS_NO_MEMORY; - } - - // New image surface - _surface = cairo_image_surface_create_for_data( - data - , CAIRO_FORMAT_A1 - , naturalWidth - , naturalHeight - , cairo_format_stride_for_width(CAIRO_FORMAT_A1, naturalWidth)); - - // Cleanup - jpeg_abort_decompress(&args); - jpeg_destroy_decompress(&args); - cairo_status_t status = cairo_surface_status(_surface); - - if (status) { - delete[] data; - return status; - } - - _data = data; - - return assignDataAsMime(buf, len, CAIRO_MIME_TYPE_JPEG); -} - -/* - * Helper function for disposing of a mime data closure. - */ - -void -clearMimeData(void *closure) { - Nan::AdjustExternalMemory( - -static_cast((static_cast(closure)->len))); - free(static_cast(closure)->buf); - free(closure); -} - -/* - * Assign a given buffer as mime data against the surface. - * The provided buffer will be copied, and the copy will - * be automatically freed when the surface is destroyed. - */ - -cairo_status_t -Image::assignDataAsMime(uint8_t *data, int len, const char *mime_type) { - uint8_t *mime_data = (uint8_t *) malloc(len); - if (!mime_data) { - this->errorInfo.set(NULL, "malloc", errno); - return CAIRO_STATUS_NO_MEMORY; - } - - read_closure_t *mime_closure = (read_closure_t *) malloc(sizeof(read_closure_t)); - if (!mime_closure) { - free(mime_data); - this->errorInfo.set(NULL, "malloc", errno); - return CAIRO_STATUS_NO_MEMORY; - } - - memcpy(mime_data, data, len); - - mime_closure->buf = mime_data; - mime_closure->len = len; - - Nan::AdjustExternalMemory(len); - - return cairo_surface_set_mime_data(_surface - , mime_type - , mime_data - , len - , clearMimeData - , mime_closure); -} - -/* - * Load jpeg from buffer. - */ - -cairo_status_t -Image::loadJPEGFromBuffer(uint8_t *buf, unsigned len) { - // TODO: remove this duplicate logic - // JPEG setup - struct jpeg_decompress_struct args; - struct canvas_jpeg_error_mgr err; - - err.image = this; - args.err = jpeg_std_error(&err); - args.err->error_exit = canvas_jpeg_error_exit; - args.err->output_message = canvas_jpeg_output_message; - - // Establish the setjmp return context for canvas_jpeg_error_exit to use - if (setjmp(err.setjmp_buffer)) { - // If we get here, the JPEG code has signaled an error. - // We need to clean up the JPEG object, close the input file, and return. - jpeg_destroy_decompress(&args); - return CAIRO_STATUS_READ_ERROR; - } - - jpeg_create_decompress(&args); - - jpeg_mem_src(&args, buf, len); - - jpeg_read_header(&args, 1); - jpeg_start_decompress(&args); - width = naturalWidth = args.output_width; - height = naturalHeight = args.output_height; - - return decodeJPEGIntoSurface(&args); -} - -/* - * Load JPEG, convert RGB to ARGB. - */ - -cairo_status_t -Image::loadJPEG(FILE *stream) { - cairo_status_t status; - -#if defined(_MSC_VER) - if (false) { // Force using loadJPEGFromBuffer -#else - if (data_mode == DATA_IMAGE) { // Can lazily read in the JPEG. -#endif - // JPEG setup - struct jpeg_decompress_struct args; - struct canvas_jpeg_error_mgr err; - - err.image = this; - args.err = jpeg_std_error(&err); - args.err->error_exit = canvas_jpeg_error_exit; - args.err->output_message = canvas_jpeg_output_message; - - // Establish the setjmp return context for canvas_jpeg_error_exit to use - if (setjmp(err.setjmp_buffer)) { - // If we get here, the JPEG code has signaled an error. - // We need to clean up the JPEG object, close the input file, and return. - jpeg_destroy_decompress(&args); - return CAIRO_STATUS_READ_ERROR; - } - - jpeg_create_decompress(&args); - - jpeg_stdio_src(&args, stream); - - jpeg_read_header(&args, 1); - jpeg_start_decompress(&args); - - if (args.output_width > canvas_max_side || args.output_height > canvas_max_side) { - jpeg_destroy_decompress(&args); - return CAIRO_STATUS_INVALID_SIZE; - } - - width = naturalWidth = args.output_width; - height = naturalHeight = args.output_height; - - status = decodeJPEGIntoSurface(&args); - fclose(stream); - } else { // We'll need the actual source jpeg data, so read fully. - uint8_t *buf; - unsigned len; - - fseek(stream, 0, SEEK_END); - len = ftell(stream); - fseek(stream, 0, SEEK_SET); - - buf = (uint8_t *) malloc(len); - if (!buf) { - this->errorInfo.set(NULL, "malloc", errno); - return CAIRO_STATUS_NO_MEMORY; - } - - if (fread(buf, len, 1, stream) != 1) { - status = CAIRO_STATUS_READ_ERROR; - } else if ((DATA_IMAGE | DATA_MIME) == data_mode) { - status = loadJPEGFromBuffer(buf, len); - if (!status) status = assignDataAsMime(buf, len, CAIRO_MIME_TYPE_JPEG); - } else if (DATA_MIME == data_mode) { - status = decodeJPEGBufferIntoMimeSurface(buf, len); - } -#if defined(_MSC_VER) - else if (DATA_IMAGE == data_mode) { - status = loadJPEGFromBuffer(buf, len); - } -#endif - else { - status = CAIRO_STATUS_READ_ERROR; - } - - fclose(stream); - free(buf); - } - - return status; -} - -#endif /* HAVE_JPEG */ - -#ifdef HAVE_RSVG - -/* - * Load SVG from buffer - */ - -cairo_status_t -Image::loadSVGFromBuffer(uint8_t *buf, unsigned len) { - _is_svg = true; - - cairo_status_t status; - GError *gerr = NULL; - - if (NULL == (_rsvg = rsvg_handle_new_from_data(buf, len, &gerr))) { - return CAIRO_STATUS_READ_ERROR; - } - - double d_width; - double d_height; - - rsvg_handle_get_intrinsic_size_in_pixels(_rsvg, &d_width, &d_height); - - width = naturalWidth = d_width; - height = naturalHeight = d_height; - - status = renderSVGToSurface(); - if (status != CAIRO_STATUS_SUCCESS) { - g_object_unref(_rsvg); - return status; - } - - return CAIRO_STATUS_SUCCESS; -} - -/* - * Renders the Rsvg handle to this image's surface - */ -cairo_status_t -Image::renderSVGToSurface() { - cairo_status_t status; - - _surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height); - - status = cairo_surface_status(_surface); - if (status != CAIRO_STATUS_SUCCESS) { - g_object_unref(_rsvg); - return status; - } - - cairo_t *cr = cairo_create(_surface); - cairo_scale(cr, - (double)width / (double)naturalWidth, - (double)height / (double)naturalHeight); - status = cairo_status(cr); - if (status != CAIRO_STATUS_SUCCESS) { - g_object_unref(_rsvg); - return status; - } - - RsvgRectangle viewport = { - .x = 0, - .y = 0, - .width = static_cast(width), - .height = static_cast(height), - }; - gboolean render_ok = rsvg_handle_render_document(_rsvg, cr, &viewport, nullptr); - if (!render_ok) { - g_object_unref(_rsvg); - cairo_destroy(cr); - return CAIRO_STATUS_READ_ERROR; // or WRITE? - } - - cairo_destroy(cr); - - _svg_last_width = width; - _svg_last_height = height; - - return status; -} - -/* - * Load SVG - */ - -cairo_status_t -Image::loadSVG(FILE *stream) { - _is_svg = true; - - struct stat s; - int fd = fileno(stream); - - // stat - if (fstat(fd, &s) < 0) { - fclose(stream); - return CAIRO_STATUS_READ_ERROR; - } - - uint8_t *buf = (uint8_t *) malloc(s.st_size); - - if (!buf) { - fclose(stream); - return CAIRO_STATUS_NO_MEMORY; - } - - size_t read = fread(buf, s.st_size, 1, stream); - fclose(stream); - - cairo_status_t result = CAIRO_STATUS_READ_ERROR; - if (1 == read) result = loadSVGFromBuffer(buf, s.st_size); - free(buf); - - return result; -} - -#endif /* HAVE_RSVG */ - -/* - * Load BMP from buffer. - */ - -cairo_status_t Image::loadBMPFromBuffer(uint8_t *buf, unsigned len){ - BMPParser::Parser parser; - - // Reversed ARGB32 with pre-multiplied alpha - uint8_t pixFmt[5] = {2, 1, 0, 3, 1}; - parser.parse(buf, len, pixFmt); - - if (parser.getStatus() != BMPParser::Status::OK) { - errorInfo.reset(); - errorInfo.message = parser.getErrMsg(); - return CAIRO_STATUS_READ_ERROR; - } - - width = naturalWidth = parser.getWidth(); - height = naturalHeight = parser.getHeight(); - uint8_t *data = parser.getImgd(); - - _surface = cairo_image_surface_create_for_data( - data, - CAIRO_FORMAT_ARGB32, - width, - height, - cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, width) - ); - - // No need to delete the data - cairo_status_t status = cairo_surface_status(_surface); - if (status) return status; - - _data = data; - parser.clearImgd(); - - return CAIRO_STATUS_SUCCESS; -} - -/* - * Load BMP. - */ - -cairo_status_t Image::loadBMP(FILE *stream){ - struct stat s; - int fd = fileno(stream); - - // Stat - if (fstat(fd, &s) < 0) { - fclose(stream); - return CAIRO_STATUS_READ_ERROR; - } - - uint8_t *buf = new uint8_t[s.st_size]; - - if (!buf) { - fclose(stream); - errorInfo.set(NULL, "malloc", errno); - return CAIRO_STATUS_NO_MEMORY; - } - - size_t read = fread(buf, s.st_size, 1, stream); - fclose(stream); - - cairo_status_t result = CAIRO_STATUS_READ_ERROR; - if (read == 1) result = loadBMPFromBuffer(buf, s.st_size); - delete[] buf; - - return result; -} - -/* - * Return UNKNOWN, SVG, GIF, JPEG, or PNG based on the filename. - */ - -Image::type -Image::extension(const char *filename) { - size_t len = strlen(filename); - filename += len; - if (len >= 5 && 0 == strcmp(".jpeg", filename - 5)) return Image::JPEG; - if (len >= 4 && 0 == strcmp(".gif", filename - 4)) return Image::GIF; - if (len >= 4 && 0 == strcmp(".jpg", filename - 4)) return Image::JPEG; - if (len >= 4 && 0 == strcmp(".png", filename - 4)) return Image::PNG; - if (len >= 4 && 0 == strcmp(".svg", filename - 4)) return Image::SVG; - return Image::UNKNOWN; -} - -/* - * Sniff bytes 0..1 for JPEG's magic number ff d8. - */ - -int -Image::isJPEG(uint8_t *data) { - return 0xff == data[0] && 0xd8 == data[1]; -} - -/* - * Sniff bytes 0..2 for "GIF". - */ - -int -Image::isGIF(uint8_t *data) { - return 'G' == data[0] && 'I' == data[1] && 'F' == data[2]; -} - -/* - * Sniff bytes 1..3 for "PNG". - */ - -int -Image::isPNG(uint8_t *data) { - return 'P' == data[1] && 'N' == data[2] && 'G' == data[3]; -} - -/* - * Skip " - -#pragma once - -#include -#include "CanvasError.h" -#include -#include -#include // node < 7 uses libstdc++ on macOS which lacks complete c++11 -#include - -#ifdef HAVE_JPEG -#include -#include -#endif - -#ifdef HAVE_GIF -#include - - #if GIFLIB_MAJOR > 5 || GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1 - #define GIF_CLOSE_FILE(gif) DGifCloseFile(gif, NULL) - #else - #define GIF_CLOSE_FILE(gif) DGifCloseFile(gif) - #endif -#endif - -#ifdef HAVE_RSVG -#include - // librsvg <= 2.36.1, identified by undefined macro, needs an extra include - #ifndef LIBRSVG_CHECK_VERSION - #include - #endif -#endif - -using JPEGDecodeL = std::function; - -class Image: public Nan::ObjectWrap { - public: - char *filename; - int width, height; - int naturalWidth, naturalHeight; - static Nan::Persistent constructor; - static void Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target); - static NAN_METHOD(New); - static NAN_GETTER(GetComplete); - static NAN_GETTER(GetWidth); - static NAN_GETTER(GetHeight); - static NAN_GETTER(GetNaturalWidth); - static NAN_GETTER(GetNaturalHeight); - static NAN_GETTER(GetDataMode); - static NAN_SETTER(SetDataMode); - static NAN_SETTER(SetWidth); - static NAN_SETTER(SetHeight); - static NAN_METHOD(GetSource); - static NAN_METHOD(SetSource); - inline uint8_t *data(){ return cairo_image_surface_get_data(_surface); } - inline int stride(){ return cairo_image_surface_get_stride(_surface); } - static int isPNG(uint8_t *data); - static int isJPEG(uint8_t *data); - static int isGIF(uint8_t *data); - static int isSVG(uint8_t *data, unsigned len); - static int isBMP(uint8_t *data, unsigned len); - static cairo_status_t readPNG(void *closure, unsigned char *data, unsigned len); - inline int isComplete(){ return COMPLETE == state; } - cairo_surface_t *surface(); - cairo_status_t loadSurface(); - cairo_status_t loadFromBuffer(uint8_t *buf, unsigned len); - cairo_status_t loadPNGFromBuffer(uint8_t *buf); - cairo_status_t loadPNG(); - void clearData(); -#ifdef HAVE_RSVG - cairo_status_t loadSVGFromBuffer(uint8_t *buf, unsigned len); - cairo_status_t loadSVG(FILE *stream); - cairo_status_t renderSVGToSurface(); -#endif -#ifdef HAVE_GIF - cairo_status_t loadGIFFromBuffer(uint8_t *buf, unsigned len); - cairo_status_t loadGIF(FILE *stream); -#endif -#ifdef HAVE_JPEG - cairo_status_t loadJPEGFromBuffer(uint8_t *buf, unsigned len); - cairo_status_t loadJPEG(FILE *stream); - void jpegToARGB(jpeg_decompress_struct* args, uint8_t* data, uint8_t* src, JPEGDecodeL decode); - cairo_status_t decodeJPEGIntoSurface(jpeg_decompress_struct *info); - cairo_status_t decodeJPEGBufferIntoMimeSurface(uint8_t *buf, unsigned len); - cairo_status_t assignDataAsMime(uint8_t *data, int len, const char *mime_type); -#endif - cairo_status_t loadBMPFromBuffer(uint8_t *buf, unsigned len); - cairo_status_t loadBMP(FILE *stream); - CanvasError errorInfo; - void loaded(); - cairo_status_t load(); - Image(); - - enum { - DEFAULT - , LOADING - , COMPLETE - } state; - - enum data_mode_t { - DATA_IMAGE = 1 - , DATA_MIME = 2 - } data_mode; - - typedef enum { - UNKNOWN - , GIF - , JPEG - , PNG - , SVG - } type; - - static type extension(const char *filename); - - private: - cairo_surface_t *_surface; - uint8_t *_data = nullptr; - int _data_len; -#ifdef HAVE_RSVG - RsvgHandle *_rsvg; - bool _is_svg; - int _svg_last_width; - int _svg_last_height; -#endif - ~Image(); -}; diff --git a/src/ImageData.cc b/src/ImageData.cc deleted file mode 100644 index 03da2e270..000000000 --- a/src/ImageData.cc +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#include "ImageData.h" - -using namespace v8; - -Nan::Persistent ImageData::constructor; - -/* - * Initialize ImageData. - */ - -void -ImageData::Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target) { - Nan::HandleScope scope; - - // Constructor - Local ctor = Nan::New(ImageData::New); - constructor.Reset(ctor); - ctor->InstanceTemplate()->SetInternalFieldCount(1); - ctor->SetClassName(Nan::New("ImageData").ToLocalChecked()); - - // Prototype - Local proto = ctor->PrototypeTemplate(); - Nan::SetAccessor(proto, Nan::New("width").ToLocalChecked(), GetWidth); - Nan::SetAccessor(proto, Nan::New("height").ToLocalChecked(), GetHeight); - Local ctx = Nan::GetCurrentContext(); - Nan::Set(target, Nan::New("ImageData").ToLocalChecked(), ctor->GetFunction(ctx).ToLocalChecked()); -} - -/* - * Initialize a new ImageData object. - */ - -NAN_METHOD(ImageData::New) { - if (!info.IsConstructCall()) { - return Nan::ThrowTypeError("Class constructors cannot be invoked without 'new'"); - } - - Local dataArray; - uint32_t width; - uint32_t height; - int length; - - if (info[0]->IsUint32() && info[1]->IsUint32()) { - width = Nan::To(info[0]).FromMaybe(0); - if (width == 0) { - Nan::ThrowRangeError("The source width is zero."); - return; - } - height = Nan::To(info[1]).FromMaybe(0); - if (height == 0) { - Nan::ThrowRangeError("The source height is zero."); - return; - } - length = width * height * 4; // ImageData(w, h) constructor assumes 4 BPP; documented. - - dataArray = Uint8ClampedArray::New(ArrayBuffer::New(Isolate::GetCurrent(), length), 0, length); - - } else if (info[0]->IsUint8ClampedArray() && info[1]->IsUint32()) { - dataArray = info[0].As(); - - length = dataArray->Length(); - if (length == 0) { - Nan::ThrowRangeError("The input data has a zero byte length."); - return; - } - - // Don't assert that the ImageData length is a multiple of four because some - // data formats are not 4 BPP. - - width = Nan::To(info[1]).FromMaybe(0); - if (width == 0) { - Nan::ThrowRangeError("The source width is zero."); - return; - } - - // Don't assert that the byte length is a multiple of 4 * width, ditto. - - if (info[2]->IsUint32()) { // Explicit height given - height = Nan::To(info[2]).FromMaybe(0); - } else { // Calculate height assuming 4 BPP - int size = length / 4; - height = size / width; - } - - } else if (info[0]->IsUint16Array() && info[1]->IsUint32()) { // Intended for RGB16_565 format - dataArray = info[0].As(); - - length = dataArray->Length(); - if (length == 0) { - Nan::ThrowRangeError("The input data has a zero byte length."); - return; - } - - width = Nan::To(info[1]).FromMaybe(0); - if (width == 0) { - Nan::ThrowRangeError("The source width is zero."); - return; - } - - if (info[2]->IsUint32()) { // Explicit height given - height = Nan::To(info[2]).FromMaybe(0); - } else { // Calculate height assuming 2 BPP - int size = length / 2; - height = size / width; - } - - } else { - Nan::ThrowTypeError("Expected (Uint8ClampedArray, width[, height]), (Uint16Array, width[, height]) or (width, height)"); - return; - } - - Nan::TypedArrayContents dataPtr(dataArray); - - ImageData *imageData = new ImageData(reinterpret_cast(*dataPtr), width, height); - imageData->Wrap(info.This()); - Nan::Set(info.This(), Nan::New("data").ToLocalChecked(), dataArray).Check(); - info.GetReturnValue().Set(info.This()); -} - -/* - * Get width. - */ - -NAN_GETTER(ImageData::GetWidth) { - if (!ImageData::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { - Nan::ThrowTypeError("Method ImageData.GetWidth called on incompatible receiver"); - return; - } - ImageData *imageData = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(imageData->width())); -} - -/* - * Get height. - */ - -NAN_GETTER(ImageData::GetHeight) { - if (!ImageData::constructor.Get(info.GetIsolate())->HasInstance(info.This())) { - Nan::ThrowTypeError("Method ImageData.GetHeight called on incompatible receiver"); - return; - } - ImageData *imageData = Nan::ObjectWrap::Unwrap(info.This()); - info.GetReturnValue().Set(Nan::New(imageData->height())); -} diff --git a/src/ImageData.h b/src/ImageData.h deleted file mode 100644 index 4832b37b2..000000000 --- a/src/ImageData.h +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#pragma once - -#include -#include // node < 7 uses libstdc++ on macOS which lacks complete c++11 -#include - -class ImageData: public Nan::ObjectWrap { - public: - static Nan::Persistent constructor; - static void Initialize(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE target); - static NAN_METHOD(New); - static NAN_GETTER(GetWidth); - static NAN_GETTER(GetHeight); - - inline int width() { return _width; } - inline int height() { return _height; } - inline uint8_t *data() { return _data; } - ImageData(uint8_t *data, int width, int height) : _width(width), _height(height), _data(data) {} - - private: - int _width; - int _height; - uint8_t *_data; - -}; diff --git a/src/JPEGStream.h b/src/JPEGStream.h deleted file mode 100644 index b8efeed21..000000000 --- a/src/JPEGStream.h +++ /dev/null @@ -1,167 +0,0 @@ -#pragma once - -#include "closure.h" -#include -#include - -/* - * Expanded data destination object for closure output, - * inspired by IJG's jdatadst.c - */ - -struct closure_destination_mgr { - jpeg_destination_mgr pub; - JpegClosure* closure; - JOCTET *buffer; - int bufsize; -}; - -void -init_closure_destination(j_compress_ptr cinfo){ - // we really don't have to do anything here -} - -boolean -empty_closure_output_buffer(j_compress_ptr cinfo){ - Nan::HandleScope scope; - Nan::AsyncResource async("canvas:empty_closure_output_buffer"); - closure_destination_mgr *dest = (closure_destination_mgr *) cinfo->dest; - - v8::Local buf = Nan::NewBuffer((char *)dest->buffer, dest->bufsize).ToLocalChecked(); - - // emit "data" - v8::Local argv[2] = { - Nan::Null() - , buf - }; - dest->closure->cb.Call(sizeof argv / sizeof *argv, argv, &async); - - dest->buffer = (JOCTET *)malloc(dest->bufsize); - cinfo->dest->next_output_byte = dest->buffer; - cinfo->dest->free_in_buffer = dest->bufsize; - return true; -} - -void -term_closure_destination(j_compress_ptr cinfo){ - Nan::HandleScope scope; - Nan::AsyncResource async("canvas:term_closure_destination"); - closure_destination_mgr *dest = (closure_destination_mgr *) cinfo->dest; - - /* emit remaining data */ - v8::Local buf = Nan::NewBuffer((char *)dest->buffer, dest->bufsize - dest->pub.free_in_buffer).ToLocalChecked(); - - v8::Local data_argv[2] = { - Nan::Null() - , buf - }; - dest->closure->cb.Call(sizeof data_argv / sizeof *data_argv, data_argv, &async); - - // emit "end" - v8::Local end_argv[2] = { - Nan::Null() - , Nan::Null() - }; - dest->closure->cb.Call(sizeof end_argv / sizeof *end_argv, end_argv, &async); -} - -void -jpeg_closure_dest(j_compress_ptr cinfo, JpegClosure* closure, int bufsize){ - closure_destination_mgr * dest; - - /* The destination object is made permanent so that multiple JPEG images - * can be written to the same buffer without re-executing jpeg_mem_dest. - */ - if (cinfo->dest == NULL) { /* first time for this JPEG object? */ - cinfo->dest = (struct jpeg_destination_mgr *) - (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, - sizeof(closure_destination_mgr)); - } - - dest = (closure_destination_mgr *) cinfo->dest; - - cinfo->dest->init_destination = &init_closure_destination; - cinfo->dest->empty_output_buffer = &empty_closure_output_buffer; - cinfo->dest->term_destination = &term_closure_destination; - - dest->closure = closure; - dest->bufsize = bufsize; - dest->buffer = (JOCTET *)malloc(bufsize); - - cinfo->dest->next_output_byte = dest->buffer; - cinfo->dest->free_in_buffer = dest->bufsize; -} - -void encode_jpeg(jpeg_compress_struct cinfo, cairo_surface_t *surface, int quality, bool progressive, int chromaHSampFactor, int chromaVSampFactor) { - int w = cairo_image_surface_get_width(surface); - int h = cairo_image_surface_get_height(surface); - - cinfo.in_color_space = JCS_RGB; - cinfo.input_components = 3; - cinfo.image_width = w; - cinfo.image_height = h; - jpeg_set_defaults(&cinfo); - if (progressive) - jpeg_simple_progression(&cinfo); - jpeg_set_quality(&cinfo, quality, (quality < 25) ? 0 : 1); - cinfo.comp_info[0].h_samp_factor = chromaHSampFactor; - cinfo.comp_info[0].v_samp_factor = chromaVSampFactor; - - JSAMPROW slr; - jpeg_start_compress(&cinfo, TRUE); - unsigned char *dst; - unsigned int *src = (unsigned int *)cairo_image_surface_get_data(surface); - int sl = 0; - dst = (unsigned char *)malloc(w * 3); - while (sl < h) { - unsigned char *dp = dst; - int x = 0; - while (x < w) { - dp[0] = (*src >> 16) & 255; - dp[1] = (*src >> 8) & 255; - dp[2] = *src & 255; - src++; - dp += 3; - x++; - } - slr = dst; - jpeg_write_scanlines(&cinfo, &slr, 1); - sl++; - } - free(dst); - jpeg_finish_compress(&cinfo); - jpeg_destroy_compress(&cinfo); -} - -void -write_to_jpeg_stream(cairo_surface_t *surface, int bufsize, JpegClosure* closure) { - jpeg_compress_struct cinfo; - jpeg_error_mgr jerr; - cinfo.err = jpeg_std_error(&jerr); - jpeg_create_compress(&cinfo); - jpeg_closure_dest(&cinfo, closure, bufsize); - encode_jpeg( - cinfo, - surface, - closure->quality, - closure->progressive, - closure->chromaSubsampling, - closure->chromaSubsampling); -} - -void -write_to_jpeg_buffer(cairo_surface_t* surface, JpegClosure* closure) { - jpeg_compress_struct cinfo; - jpeg_error_mgr jerr; - cinfo.err = jpeg_std_error(&jerr); - jpeg_create_compress(&cinfo); - cinfo.client_data = closure; - cinfo.dest = closure->jpeg_dest_mgr; - encode_jpeg( - cinfo, - surface, - closure->quality, - closure->progressive, - closure->chromaSubsampling, - closure->chromaSubsampling); -} diff --git a/src/PNG.h b/src/PNG.h deleted file mode 100644 index 30b88f85f..000000000 --- a/src/PNG.h +++ /dev/null @@ -1,292 +0,0 @@ -#pragma once - -#include -#include "closure.h" -#include // round -#include -#include -#include -#include - -#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__) -#define likely(expr) (__builtin_expect (!!(expr), 1)) -#define unlikely(expr) (__builtin_expect (!!(expr), 0)) -#else -#define likely(expr) (expr) -#define unlikely(expr) (expr) -#endif - -static void canvas_png_flush(png_structp png_ptr) { - /* Do nothing; fflush() is said to be just a waste of energy. */ - (void) png_ptr; /* Stifle compiler warning */ -} - -/* Converts native endian xRGB => RGBx bytes */ -static void canvas_convert_data_to_bytes(png_structp png, png_row_infop row_info, png_bytep data) { - unsigned int i; - - for (i = 0; i < row_info->rowbytes; i += 4) { - uint8_t *b = &data[i]; - uint32_t pixel; - - memcpy(&pixel, b, sizeof (uint32_t)); - - b[0] = (pixel & 0xff0000) >> 16; - b[1] = (pixel & 0x00ff00) >> 8; - b[2] = (pixel & 0x0000ff) >> 0; - b[3] = 0; - } -} - -/* Unpremultiplies data and converts native endian ARGB => RGBA bytes */ -static void canvas_unpremultiply_data(png_structp png, png_row_infop row_info, png_bytep data) { - unsigned int i; - - for (i = 0; i < row_info->rowbytes; i += 4) { - uint8_t *b = &data[i]; - uint32_t pixel; - uint8_t alpha; - - memcpy(&pixel, b, sizeof (uint32_t)); - alpha = (pixel & 0xff000000) >> 24; - if (alpha == 0) { - b[0] = b[1] = b[2] = b[3] = 0; - } else { - b[0] = (((pixel & 0xff0000) >> 16) * 255 + alpha / 2) / alpha; - b[1] = (((pixel & 0x00ff00) >> 8) * 255 + alpha / 2) / alpha; - b[2] = (((pixel & 0x0000ff) >> 0) * 255 + alpha / 2) / alpha; - b[3] = alpha; - } - } -} - -/* Converts RGB16_565 format data to RGBA32 */ -static void canvas_convert_565_to_888(png_structp png, png_row_infop row_info, png_bytep data) { - // Loop in reverse to unpack in-place. - for (ptrdiff_t col = row_info->width - 1; col >= 0; col--) { - uint8_t* src = &data[col * sizeof(uint16_t)]; - uint8_t* dst = &data[col * 3]; - uint16_t pixel; - - memcpy(&pixel, src, sizeof(uint16_t)); - - // Convert and rescale to the full 0-255 range - // See http://stackoverflow.com/a/29326693 - const uint8_t red5 = (pixel & 0xF800) >> 11; - const uint8_t green6 = (pixel & 0x7E0) >> 5; - const uint8_t blue5 = (pixel & 0x001F); - - dst[0] = ((red5 * 255 + 15) / 31); - dst[1] = ((green6 * 255 + 31) / 63); - dst[2] = ((blue5 * 255 + 15) / 31); - } -} - -struct canvas_png_write_closure_t { - cairo_write_func_t write_func; - PngClosure* closure; -}; - -#ifdef PNG_SETJMP_SUPPORTED -bool setjmp_wrapper(png_structp png) { - return setjmp(png_jmpbuf(png)); -} -#endif - -static cairo_status_t canvas_write_png(cairo_surface_t *surface, png_rw_ptr write_func, canvas_png_write_closure_t *closure) { - unsigned int i; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - uint8_t *data; - png_structp png; - png_infop info; - png_bytep *volatile rows = NULL; - png_color_16 white; - int png_color_type; - int bpc; - unsigned int width = cairo_image_surface_get_width(surface); - unsigned int height = cairo_image_surface_get_height(surface); - - data = cairo_image_surface_get_data(surface); - if (data == NULL) { - status = CAIRO_STATUS_SURFACE_TYPE_MISMATCH; - return status; - } - cairo_surface_flush(surface); - - if (width == 0 || height == 0) { - status = CAIRO_STATUS_WRITE_ERROR; - return status; - } - - rows = (png_bytep *) malloc(height * sizeof (png_byte*)); - if (unlikely(rows == NULL)) { - status = CAIRO_STATUS_NO_MEMORY; - return status; - } - - int stride = cairo_image_surface_get_stride(surface); - for (i = 0; i < height; i++) { - rows[i] = (png_byte *) data + i * stride; - } - -#ifdef PNG_USER_MEM_SUPPORTED - png = png_create_write_struct_2(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL, NULL, NULL, NULL); -#else - png = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); -#endif - - if (unlikely(png == NULL)) { - status = CAIRO_STATUS_NO_MEMORY; - free(rows); - return status; - } - - info = png_create_info_struct (png); - if (unlikely(info == NULL)) { - status = CAIRO_STATUS_NO_MEMORY; - png_destroy_write_struct(&png, &info); - free(rows); - return status; - - } - -#ifdef PNG_SETJMP_SUPPORTED - if (setjmp_wrapper(png)) { - png_destroy_write_struct(&png, &info); - free(rows); - return status; - } -#endif - - png_set_write_fn(png, closure, write_func, canvas_png_flush); - png_set_compression_level(png, closure->closure->compressionLevel); - png_set_filter(png, 0, closure->closure->filters); - if (closure->closure->resolution != 0) { - uint32_t res = static_cast(round(static_cast(closure->closure->resolution) * 39.3701)); - png_set_pHYs(png, info, res, res, PNG_RESOLUTION_METER); - } - - cairo_format_t format = cairo_image_surface_get_format(surface); - - switch (format) { - case CAIRO_FORMAT_ARGB32: - bpc = 8; - png_color_type = PNG_COLOR_TYPE_RGB_ALPHA; - break; -#ifdef CAIRO_FORMAT_RGB30 - case CAIRO_FORMAT_RGB30: - bpc = 10; - png_color_type = PNG_COLOR_TYPE_RGB; - break; -#endif - case CAIRO_FORMAT_RGB24: - bpc = 8; - png_color_type = PNG_COLOR_TYPE_RGB; - break; - case CAIRO_FORMAT_A8: - bpc = 8; - png_color_type = PNG_COLOR_TYPE_GRAY; - break; - case CAIRO_FORMAT_A1: - bpc = 1; - png_color_type = PNG_COLOR_TYPE_GRAY; -#ifndef WORDS_BIGENDIAN - png_set_packswap(png); -#endif - break; - case CAIRO_FORMAT_RGB16_565: - bpc = 8; // 565 gets upconverted to 888 - png_color_type = PNG_COLOR_TYPE_RGB; - break; - case CAIRO_FORMAT_INVALID: - default: - status = CAIRO_STATUS_INVALID_FORMAT; - png_destroy_write_struct(&png, &info); - free(rows); - return status; - } - - if ((format == CAIRO_FORMAT_A8 || format == CAIRO_FORMAT_A1) && - closure->closure->palette != NULL) { - png_color_type = PNG_COLOR_TYPE_PALETTE; - } - - png_set_IHDR(png, info, width, height, bpc, png_color_type, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); - - if (png_color_type == PNG_COLOR_TYPE_PALETTE) { - size_t nColors = closure->closure->nPaletteColors; - uint8_t* colors = closure->closure->palette; - uint8_t backgroundIndex = closure->closure->backgroundIndex; - png_colorp pngPalette = (png_colorp)png_malloc(png, nColors * sizeof(png_colorp)); - png_bytep transparency = (png_bytep)png_malloc(png, nColors * sizeof(png_bytep)); - for (i = 0; i < nColors; i++) { - pngPalette[i].red = colors[4 * i]; - pngPalette[i].green = colors[4 * i + 1]; - pngPalette[i].blue = colors[4 * i + 2]; - transparency[i] = colors[4 * i + 3]; - } - png_set_PLTE(png, info, pngPalette, nColors); - png_set_tRNS(png, info, transparency, nColors, NULL); - png_set_packing(png); // pack pixels - // have libpng free palette and trans: - png_data_freer(png, info, PNG_DESTROY_WILL_FREE_DATA, PNG_FREE_PLTE | PNG_FREE_TRNS); - png_color_16 bkg; - bkg.index = backgroundIndex; - png_set_bKGD(png, info, &bkg); - } - - if (png_color_type != PNG_COLOR_TYPE_PALETTE) { - white.gray = (1 << bpc) - 1; - white.red = white.blue = white.green = white.gray; - png_set_bKGD(png, info, &white); - } - - /* We have to call png_write_info() before setting up the write - * transformation, since it stores data internally in 'png' - * that is needed for the write transformation functions to work. - */ - png_write_info(png, info); - if (png_color_type == PNG_COLOR_TYPE_RGB_ALPHA) { - png_set_write_user_transform_fn(png, canvas_unpremultiply_data); - } else if (format == CAIRO_FORMAT_RGB16_565) { - png_set_write_user_transform_fn(png, canvas_convert_565_to_888); - } else if (png_color_type == PNG_COLOR_TYPE_RGB) { - png_set_write_user_transform_fn(png, canvas_convert_data_to_bytes); - png_set_filler(png, 0, PNG_FILLER_AFTER); - } - - png_write_image(png, rows); - png_write_end(png, info); - - png_destroy_write_struct(&png, &info); - free(rows); - return status; -} - -static void canvas_stream_write_func(png_structp png, png_bytep data, png_size_t size) { - cairo_status_t status; - struct canvas_png_write_closure_t *png_closure; - - png_closure = (struct canvas_png_write_closure_t *) png_get_io_ptr(png); - status = png_closure->write_func(png_closure->closure, data, size); - if (unlikely(status)) { - cairo_status_t *error = (cairo_status_t *) png_get_error_ptr(png); - if (*error == CAIRO_STATUS_SUCCESS) { - *error = status; - } - png_error(png, NULL); - } -} - -static cairo_status_t canvas_write_to_png_stream(cairo_surface_t *surface, cairo_write_func_t write_func, PngClosure* closure) { - struct canvas_png_write_closure_t png_closure; - - if (cairo_surface_status(surface)) { - return cairo_surface_status(surface); - } - - png_closure.write_func = write_func; - png_closure.closure = closure; - - return canvas_write_png(surface, canvas_stream_write_func, &png_closure); -} diff --git a/src/Point.h b/src/Point.h deleted file mode 100644 index a61f8b1ba..000000000 --- a/src/Point.h +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (c) 2010 LearnBoost -#pragma once - -template -class Point { - public: - T x, y; - Point(T x=0, T y=0): x(x), y(y) {} - Point(const Point&) = default; - Point& operator=(const Point&) = default; -}; diff --git a/src/Util.h b/src/Util.h deleted file mode 100644 index 0e6d1d89c..000000000 --- a/src/Util.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#include - -inline bool streq_casein(std::string& str1, std::string& str2) { - return str1.size() == str2.size() && std::equal(str1.begin(), str1.end(), str2.begin(), [](char& c1, char& c2) { - return c1 == c2 || std::toupper(c1) == std::toupper(c2); - }); -} diff --git a/src/backend/Backend.cc b/src/backend/Backend.cc deleted file mode 100644 index 9f2b39dd3..000000000 --- a/src/backend/Backend.cc +++ /dev/null @@ -1,111 +0,0 @@ -#include "Backend.h" -#include - -Backend::Backend(std::string name, int width, int height) - : name(name) - , width(width) - , height(height) -{} - -Backend::~Backend() -{ - Backend::destroySurface(); -} - -void Backend::init(const Nan::FunctionCallbackInfo &info) { - int width = 0; - int height = 0; - if (info[0]->IsNumber()) width = Nan::To(info[0]).FromMaybe(0); - if (info[1]->IsNumber()) height = Nan::To(info[1]).FromMaybe(0); - - Backend *backend = construct(width, height); - - backend->Wrap(info.This()); - info.GetReturnValue().Set(info.This()); -} - -void Backend::setCanvas(Canvas* _canvas) -{ - this->canvas = _canvas; -} - - -cairo_surface_t* Backend::recreateSurface() -{ - this->destroySurface(); - - return this->createSurface(); -} - -DLL_PUBLIC cairo_surface_t* Backend::getSurface() { - if (!surface) createSurface(); - return surface; -} - -void Backend::destroySurface() -{ - if(this->surface) - { - cairo_surface_destroy(this->surface); - this->surface = NULL; - } -} - - -std::string Backend::getName() -{ - return name; -} - -int Backend::getWidth() -{ - return this->width; -} -void Backend::setWidth(int width_) -{ - this->width = width_; - this->recreateSurface(); -} - -int Backend::getHeight() -{ - return this->height; -} -void Backend::setHeight(int height_) -{ - this->height = height_; - this->recreateSurface(); -} - -bool Backend::isSurfaceValid(){ - bool hadSurface = surface != NULL; - bool isValid = true; - - cairo_status_t status = cairo_surface_status(getSurface()); - - if (status != CAIRO_STATUS_SUCCESS) { - error = cairo_status_to_string(status); - isValid = false; - } - - if (!hadSurface) - destroySurface(); - - return isValid; -} - - -BackendOperationNotAvailable::BackendOperationNotAvailable(Backend* backend, - std::string operation_name) - : operation_name(operation_name) -{ - msg = "operation " + operation_name + - " not supported by backend " + backend->getName(); -}; - -BackendOperationNotAvailable::~BackendOperationNotAvailable() throw() {}; - -const char* BackendOperationNotAvailable::what() const throw() -{ - return msg.c_str(); -}; diff --git a/src/backend/Backend.h b/src/backend/Backend.h deleted file mode 100644 index f8448c41a..000000000 --- a/src/backend/Backend.h +++ /dev/null @@ -1,68 +0,0 @@ -#pragma once - -#include -#include "../dll_visibility.h" -#include -#include -#include -#include - -class Canvas; - -class Backend : public Nan::ObjectWrap -{ - private: - const std::string name; - const char* error = NULL; - - protected: - int width; - int height; - cairo_surface_t* surface = nullptr; - Canvas* canvas = nullptr; - - Backend(std::string name, int width, int height); - static void init(const Nan::FunctionCallbackInfo &info); - static Backend *construct(int width, int height){ return nullptr; } - - public: - virtual ~Backend(); - - void setCanvas(Canvas* canvas); - - virtual cairo_surface_t* createSurface() = 0; - virtual cairo_surface_t* recreateSurface(); - - DLL_PUBLIC cairo_surface_t* getSurface(); - virtual void destroySurface(); - - DLL_PUBLIC std::string getName(); - - DLL_PUBLIC int getWidth(); - virtual void setWidth(int width); - - DLL_PUBLIC int getHeight(); - virtual void setHeight(int height); - - // Overridden by ImageBackend. SVG and PDF thus always return INVALID. - virtual cairo_format_t getFormat() { - return CAIRO_FORMAT_INVALID; - } - - bool isSurfaceValid(); - inline const char* getError(){ return error; } -}; - - -class BackendOperationNotAvailable: public std::exception -{ - private: - std::string operation_name; - std::string msg; - - public: - BackendOperationNotAvailable(Backend* backend, std::string operation_name); - ~BackendOperationNotAvailable() throw(); - - const char* what() const throw(); -}; diff --git a/src/backend/ImageBackend.cc b/src/backend/ImageBackend.cc deleted file mode 100644 index d354d92cc..000000000 --- a/src/backend/ImageBackend.cc +++ /dev/null @@ -1,74 +0,0 @@ -#include "ImageBackend.h" - -using namespace v8; - -ImageBackend::ImageBackend(int width, int height) - : Backend("image", width, height) - {} - -Backend *ImageBackend::construct(int width, int height){ - return new ImageBackend(width, height); -} - -// This returns an approximate value only, suitable for Nan::AdjustExternalMemory. -// The formats that don't map to intrinsic types (RGB30, A1) round up. -int32_t ImageBackend::approxBytesPerPixel() { - switch (format) { - case CAIRO_FORMAT_ARGB32: - case CAIRO_FORMAT_RGB24: - return 4; -#ifdef CAIRO_FORMAT_RGB30 - case CAIRO_FORMAT_RGB30: - return 3; -#endif - case CAIRO_FORMAT_RGB16_565: - return 2; - case CAIRO_FORMAT_A8: - case CAIRO_FORMAT_A1: - return 1; - default: - return 0; - } -} - -cairo_surface_t* ImageBackend::createSurface() { - assert(!surface); - surface = cairo_image_surface_create(format, width, height); - assert(surface); - Nan::AdjustExternalMemory(approxBytesPerPixel() * width * height); - return surface; -} - -void ImageBackend::destroySurface() { - if (surface) { - cairo_surface_destroy(surface); - surface = nullptr; - Nan::AdjustExternalMemory(-approxBytesPerPixel() * width * height); - } -} - -cairo_format_t ImageBackend::getFormat() { - return format; -} - -void ImageBackend::setFormat(cairo_format_t _format) { - this->format = _format; -} - -Nan::Persistent ImageBackend::constructor; - -void ImageBackend::Initialize(Local target) { - Nan::HandleScope scope; - - Local ctor = Nan::New(ImageBackend::New); - ImageBackend::constructor.Reset(ctor); - ctor->InstanceTemplate()->SetInternalFieldCount(1); - ctor->SetClassName(Nan::New("ImageBackend").ToLocalChecked()); - Nan::Set(target, - Nan::New("ImageBackend").ToLocalChecked(), - Nan::GetFunction(ctor).ToLocalChecked()).Check(); -} - -NAN_METHOD(ImageBackend::New) { - init(info); -} diff --git a/src/backend/ImageBackend.h b/src/backend/ImageBackend.h deleted file mode 100644 index f68dacfdb..000000000 --- a/src/backend/ImageBackend.h +++ /dev/null @@ -1,26 +0,0 @@ -#pragma once - -#include "Backend.h" -#include - -class ImageBackend : public Backend -{ - private: - cairo_surface_t* createSurface(); - void destroySurface(); - cairo_format_t format = DEFAULT_FORMAT; - - public: - ImageBackend(int width, int height); - static Backend *construct(int width, int height); - - cairo_format_t getFormat(); - void setFormat(cairo_format_t format); - - int32_t approxBytesPerPixel(); - - static Nan::Persistent constructor; - static void Initialize(v8::Local target); - static NAN_METHOD(New); - const static cairo_format_t DEFAULT_FORMAT = CAIRO_FORMAT_ARGB32; -}; diff --git a/src/backend/PdfBackend.cc b/src/backend/PdfBackend.cc deleted file mode 100644 index fe831a68d..000000000 --- a/src/backend/PdfBackend.cc +++ /dev/null @@ -1,53 +0,0 @@ -#include "PdfBackend.h" - -#include -#include "../Canvas.h" -#include "../closure.h" - -using namespace v8; - -PdfBackend::PdfBackend(int width, int height) - : Backend("pdf", width, height) { - PdfBackend::createSurface(); -} - -PdfBackend::~PdfBackend() { - cairo_surface_finish(surface); - if (_closure) delete _closure; - destroySurface(); -} - -Backend *PdfBackend::construct(int width, int height){ - return new PdfBackend(width, height); -} - -cairo_surface_t* PdfBackend::createSurface() { - if (!_closure) _closure = new PdfSvgClosure(canvas); - surface = cairo_pdf_surface_create_for_stream(PdfSvgClosure::writeVec, _closure, width, height); - return surface; -} - -cairo_surface_t* PdfBackend::recreateSurface() { - cairo_pdf_surface_set_size(surface, width, height); - - return surface; -} - - -Nan::Persistent PdfBackend::constructor; - -void PdfBackend::Initialize(Local target) { - Nan::HandleScope scope; - - Local ctor = Nan::New(PdfBackend::New); - PdfBackend::constructor.Reset(ctor); - ctor->InstanceTemplate()->SetInternalFieldCount(1); - ctor->SetClassName(Nan::New("PdfBackend").ToLocalChecked()); - Nan::Set(target, - Nan::New("PdfBackend").ToLocalChecked(), - Nan::GetFunction(ctor).ToLocalChecked()).Check(); -} - -NAN_METHOD(PdfBackend::New) { - init(info); -} diff --git a/src/backend/PdfBackend.h b/src/backend/PdfBackend.h deleted file mode 100644 index 03656f500..000000000 --- a/src/backend/PdfBackend.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include "Backend.h" -#include "../closure.h" -#include - -class PdfBackend : public Backend -{ - private: - cairo_surface_t* createSurface(); - cairo_surface_t* recreateSurface(); - - public: - PdfSvgClosure* _closure = NULL; - inline PdfSvgClosure* closure() { return _closure; } - - PdfBackend(int width, int height); - ~PdfBackend(); - static Backend *construct(int width, int height); - - static Nan::Persistent constructor; - static void Initialize(v8::Local target); - static NAN_METHOD(New); -}; diff --git a/src/backend/SvgBackend.cc b/src/backend/SvgBackend.cc deleted file mode 100644 index 7d4181fc2..000000000 --- a/src/backend/SvgBackend.cc +++ /dev/null @@ -1,61 +0,0 @@ -#include "SvgBackend.h" - -#include -#include "../Canvas.h" -#include "../closure.h" -#include - -using namespace v8; - -SvgBackend::SvgBackend(int width, int height) - : Backend("svg", width, height) { - SvgBackend::createSurface(); -} - -SvgBackend::~SvgBackend() { - cairo_surface_finish(surface); - if (_closure) { - delete _closure; - _closure = nullptr; - } - destroySurface(); -} - -Backend *SvgBackend::construct(int width, int height){ - return new SvgBackend(width, height); -} - -cairo_surface_t* SvgBackend::createSurface() { - assert(!_closure); - _closure = new PdfSvgClosure(canvas); - surface = cairo_svg_surface_create_for_stream(PdfSvgClosure::writeVec, _closure, width, height); - return surface; -} - -cairo_surface_t* SvgBackend::recreateSurface() { - cairo_surface_finish(surface); - delete _closure; - _closure = nullptr; - cairo_surface_destroy(surface); - - return createSurface(); - } - - -Nan::Persistent SvgBackend::constructor; - -void SvgBackend::Initialize(Local target) { - Nan::HandleScope scope; - - Local ctor = Nan::New(SvgBackend::New); - SvgBackend::constructor.Reset(ctor); - ctor->InstanceTemplate()->SetInternalFieldCount(1); - ctor->SetClassName(Nan::New("SvgBackend").ToLocalChecked()); - Nan::Set(target, - Nan::New("SvgBackend").ToLocalChecked(), - Nan::GetFunction(ctor).ToLocalChecked()).Check(); -} - -NAN_METHOD(SvgBackend::New) { - init(info); -} diff --git a/src/backend/SvgBackend.h b/src/backend/SvgBackend.h deleted file mode 100644 index 6377b438b..000000000 --- a/src/backend/SvgBackend.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -#include "Backend.h" -#include "../closure.h" -#include - -class SvgBackend : public Backend -{ - private: - cairo_surface_t* createSurface(); - cairo_surface_t* recreateSurface(); - - public: - PdfSvgClosure* _closure = NULL; - inline PdfSvgClosure* closure() { return _closure; } - - SvgBackend(int width, int height); - ~SvgBackend(); - static Backend *construct(int width, int height); - - static Nan::Persistent constructor; - static void Initialize(v8::Local target); - static NAN_METHOD(New); -}; diff --git a/src/bmp/BMPParser.cc b/src/bmp/BMPParser.cc deleted file mode 100644 index d2c2ddbb3..000000000 --- a/src/bmp/BMPParser.cc +++ /dev/null @@ -1,457 +0,0 @@ -#include "BMPParser.h" - -#include - -using namespace std; -using namespace BMPParser; - -#define MAX_IMG_SIZE 10000 - -#define E(cond, msg) if(cond) return setErr(msg) -#define EU(cond, msg) if(cond) return setErrUnsupported(msg) -#define EX(cond, msg) if(cond) return setErrUnknown(msg) - -#define I1() get() -#define U1() get() -#define I2() get() -#define U2() get() -#define I4() get() -#define U4() get() - -#define I1UC() get() -#define U1UC() get() -#define I2UC() get() -#define U2UC() get() -#define I4UC() get() -#define U4UC() get() - -#define CHECK_OVERRUN(ptr, size, type) \ - if((ptr) + (size) - data > len){ \ - setErr("unexpected end of file"); \ - return type(); \ - } - -Parser::~Parser(){ - data = nullptr; - ptr = nullptr; - - if(imgd){ - delete[] imgd; - imgd = nullptr; - } -} - -void Parser::parse(uint8_t *buf, int bufSize, uint8_t *format){ - assert(status == Status::EMPTY); - - data = ptr = buf; - len = bufSize; - - // Start parsing file header - setOp("file header"); - - // File header signature - string fhSig = getStr(2); - string temp = "file header signature"; - EU(fhSig == "BA", temp + " \"BA\""); - EU(fhSig == "CI", temp + " \"CI\""); - EU(fhSig == "CP", temp + " \"CP\""); - EU(fhSig == "IC", temp + " \"IC\""); - EU(fhSig == "PT", temp + " \"PT\""); - EX(fhSig != "BM", temp); // BM - - // Length of the file should not be larger than `len` - E(U4() > static_cast(len), "inconsistent file size"); - - // Skip unused values - skip(4); - - // Offset where the pixel array (bitmap data) can be found - auto imgdOffset = U4(); - - // Start parsing DIB header - setOp("DIB header"); - - // Prepare some variables in case they are needed - uint32_t compr = 0; - uint32_t redShift = 0, greenShift = 0, blueShift = 0, alphaShift = 0; - uint32_t redMask = 0, greenMask = 0, blueMask = 0, alphaMask = 0; - double redMultp = 0, greenMultp = 0, blueMultp = 0, alphaMultp = 0; - - /** - * Type of the DIB (device-independent bitmap) header - * is determined by its size. Most BMP files use BITMAPINFOHEADER. - */ - auto dibSize = U4(); - temp = "DIB header"; - EU(dibSize == 64, temp + " \"OS22XBITMAPHEADER\""); - EU(dibSize == 16, temp + " \"OS22XBITMAPHEADER\""); - - uint32_t infoHeader = dibSize == 40 ? 1 : - dibSize == 52 ? 2 : - dibSize == 56 ? 3 : - dibSize == 108 ? 4 : - dibSize == 124 ? 5 : 0; - - // BITMAPCOREHEADER, BITMAP*INFOHEADER, BITMAP*HEADER - auto isDibValid = dibSize == 12 || infoHeader; - EX(!isDibValid, temp); - - // Image width - w = dibSize == 12 ? U2() : I4(); - E(!w, "image width is 0"); - E(w < 0, "negative image width"); - E(w > MAX_IMG_SIZE, "too large image width"); - - // Image height (specification allows negative values) - h = dibSize == 12 ? U2() : I4(); - E(!h, "image height is 0"); - E(h > MAX_IMG_SIZE, "too large image height"); - - bool isHeightNegative = h < 0; - if(isHeightNegative) h = -h; - - // Number of color planes (must be 1) - E(U2() != 1, "number of color planes must be 1"); - - // Bits per pixel (color depth) - auto bpp = U2(); - auto isBppValid = bpp == 1 || bpp == 4 || bpp == 8 || bpp == 16 || bpp == 24 || bpp == 32; - EU(!isBppValid, "color depth"); - - // Calculate image data size and padding - uint32_t expectedImgdSize = (((w * bpp + 31) >> 5) << 2) * h; - uint32_t rowPadding = (-w * bpp & 31) >> 3; - uint32_t imgdSize = 0; - - // Color palette data - uint8_t* paletteStart = nullptr; - uint32_t palColNum = 0; - - if(infoHeader){ - // Compression type - compr = U4(); - temp = "compression type"; - EU(compr == 1, temp + " \"BI_RLE8\""); - EU(compr == 2, temp + " \"BI_RLE4\""); - EU(compr == 4, temp + " \"BI_JPEG\""); - EU(compr == 5, temp + " \"BI_PNG\""); - EU(compr == 6, temp + " \"BI_ALPHABITFIELDS\""); - EU(compr == 11, temp + " \"BI_CMYK\""); - EU(compr == 12, temp + " \"BI_CMYKRLE8\""); - EU(compr == 13, temp + " \"BI_CMYKRLE4\""); - - // BI_RGB and BI_BITFIELDS - auto isComprValid = compr == 0 || compr == 3; - EX(!isComprValid, temp); - - // Ensure that BI_BITFIELDS appears only with 16-bit or 32-bit color - E(compr == 3 && !(bpp == 16 || bpp == 32), "compression BI_BITFIELDS can be used only with 16-bit and 32-bit color depth"); - - // Size of the image data - imgdSize = U4(); - - // Horizontal and vertical resolution (ignored) - skip(8); - - // Number of colors in the palette or 0 if no palette is present - palColNum = U4(); - EU(palColNum && bpp > 8, "color palette and bit depth combination"); - if(palColNum) paletteStart = data + dibSize + 14; - - // Number of important colors used or 0 if all colors are important (generally ignored) - skip(4); - - if(infoHeader >= 2){ - // If BI_BITFIELDS are used, calculate masks, otherwise ignore them - if(compr == 3){ - calcMaskShift(redShift, redMask, redMultp); - calcMaskShift(greenShift, greenMask, greenMultp); - calcMaskShift(blueShift, blueMask, blueMultp); - if(infoHeader >= 3) calcMaskShift(alphaShift, alphaMask, alphaMultp); - if(status == Status::ERROR) return; - }else{ - skip(16); - } - - // Ensure that the color space is LCS_WINDOWS_COLOR_SPACE or sRGB - if(infoHeader >= 4 && !palColNum){ - string colSpace = getStr(4, 1); - EU(colSpace != "Win " && colSpace != "sRGB", "color space \"" + colSpace + "\""); - } - } - } - - // Skip to the image data (there may be other chunks between, but they are optional) - E(ptr - data > imgdOffset, "image data overlaps with another structure"); - ptr = data + imgdOffset; - - // Start parsing image data - setOp("image data"); - - if(!imgdSize){ - // Value 0 is allowed only for BI_RGB compression type - E(compr != 0, "missing image data size"); - imgdSize = expectedImgdSize; - }else{ - E(imgdSize < expectedImgdSize, "invalid image data size"); - } - - // Ensure that all image data is present - E(ptr - data + imgdSize > len, "not enough image data"); - - // Direction of reading rows - int yStart = h - 1; - int yEnd = -1; - int dy = isHeightNegative ? 1 : -1; - - // In case of negative height, read rows backward - if(isHeightNegative){ - yStart = 0; - yEnd = h; - } - - // Allocate output image data array - int buffLen = w * h << 2; - imgd = new (nothrow) uint8_t[buffLen]; - E(!imgd, "unable to allocate memory"); - - // Prepare color values - uint8_t color[4] = {0}; - uint8_t &red = color[0]; - uint8_t &green = color[1]; - uint8_t &blue = color[2]; - uint8_t &alpha = color[3]; - - // Check if pre-multiplied alpha is used - bool premul = format ? format[4] : 0; - - // Main loop - for(int y = yStart; y != yEnd; y += dy){ - // Use in-byte offset for bpp < 8 - uint8_t colOffset = 0; - uint8_t cval = 0; - uint32_t val = 0; - - for(int x = 0; x != w; x++){ - // Index in the output image data - int i = (x + y * w) << 2; - - switch(compr){ - case 0: // BI_RGB - switch(bpp){ - case 1: - if(colOffset) ptr--; - cval = (U1UC() >> (7 - colOffset)) & 1; - - if(palColNum){ - uint8_t* entry = paletteStart + (cval << 2); - blue = get(entry); - green = get(entry + 1); - red = get(entry + 2); - if(status == Status::ERROR) return; - }else{ - red = green = blue = cval ? 255 : 0; - } - - alpha = 255; - colOffset = (colOffset + 1) & 7; - break; - - case 4: - if(colOffset) ptr--; - cval = (U1UC() >> (4 - colOffset)) & 15; - - if(palColNum){ - uint8_t* entry = paletteStart + (cval << 2); - blue = get(entry); - green = get(entry + 1); - red = get(entry + 2); - if(status == Status::ERROR) return; - }else{ - red = green = blue = cval << 4; - } - - alpha = 255; - colOffset = (colOffset + 4) & 7; - break; - - case 8: - cval = U1UC(); - - if(palColNum){ - uint8_t* entry = paletteStart + (cval << 2); - blue = get(entry); - green = get(entry + 1); - red = get(entry + 2); - if(status == Status::ERROR) return; - }else{ - red = green = blue = cval; - } - - alpha = 255; - break; - - case 16: - // RGB555 - val = U1UC(); - val |= U1UC() << 8; - red = (val >> 10) << 3; - green = (val >> 5) << 3; - blue = val << 3; - alpha = 255; - break; - - case 24: - blue = U1UC(); - green = U1UC(); - red = U1UC(); - alpha = 255; - break; - - case 32: - blue = U1UC(); - green = U1UC(); - red = U1UC(); - - if(infoHeader >= 3){ - alpha = U1UC(); - }else{ - alpha = 255; - skip(1); - } - break; - } - break; - - case 3: // BI_BITFIELDS - uint32_t col = bpp == 16 ? U2UC() : U4UC(); - red = ((col >> redShift) & redMask) * redMultp + .5; - green = ((col >> greenShift) & greenMask) * greenMultp + .5; - blue = ((col >> blueShift) & blueMask) * blueMultp + .5; - alpha = alphaMask ? ((col >> alphaShift) & alphaMask) * alphaMultp + .5 : 255; - break; - } - - /** - * Pixel format: - * red, - * green, - * blue, - * alpha, - * is alpha pre-multiplied - * Default is [0, 1, 2, 3, 0] - */ - - if(premul && alpha != 255){ - double a = alpha / 255.; - red = static_cast(red * a + .5); - green = static_cast(green * a + .5); - blue = static_cast(blue * a + .5); - } - - if(format){ - imgd[i] = color[format[0]]; - imgd[i + 1] = color[format[1]]; - imgd[i + 2] = color[format[2]]; - imgd[i + 3] = color[format[3]]; - }else{ - imgd[i] = red; - imgd[i + 1] = green; - imgd[i + 2] = blue; - imgd[i + 3] = alpha; - } - } - - // Skip unused bytes in the current row - skip(rowPadding); - } - - if(status == Status::ERROR) return; - status = Status::OK; -}; - -void Parser::clearImgd(){ imgd = nullptr; } -int32_t Parser::getWidth() const{ return w; } -int32_t Parser::getHeight() const{ return h; } -uint8_t *Parser::getImgd() const{ return imgd; } -Status Parser::getStatus() const{ return status; } - -string Parser::getErrMsg() const{ - return "Error while processing " + getOp() + " - " + err; -} - -template inline T Parser::get(){ - if(check) - CHECK_OVERRUN(ptr, sizeof(T), T); - T val = *(T*)ptr; - ptr += sizeof(T); - return val; -} - -template inline T Parser::get(uint8_t* pointer){ - if(check) - CHECK_OVERRUN(pointer, sizeof(T), T); - T val = *(T*)pointer; - return val; -} - -string Parser::getStr(int size, bool reverse){ - CHECK_OVERRUN(ptr, size, string); - string val = ""; - - while(size--){ - if(reverse) val = string(1, static_cast(*ptr++)) + val; - else val += static_cast(*ptr++); - } - - return val; -} - -inline void Parser::skip(int size){ - CHECK_OVERRUN(ptr, size, void); - ptr += size; -} - -void Parser::calcMaskShift(uint32_t& shift, uint32_t& mask, double& multp){ - mask = U4(); - shift = 0; - - if(mask == 0) return; - - while(~mask & 1){ - mask >>= 1; - shift++; - } - - E(mask & (mask + 1), "invalid color mask"); - - multp = 255. / mask; -} - -void Parser::setOp(string val){ - if(status != Status::EMPTY) return; - op = val; -} - -string Parser::getOp() const{ - return op; -} - -void Parser::setErrUnsupported(string msg){ - setErr("unsupported " + msg); -} - -void Parser::setErrUnknown(string msg){ - setErr("unknown " + msg); -} - -void Parser::setErr(string msg){ - if(status != Status::EMPTY) return; - err = msg; - status = Status::ERROR; -} - -string Parser::getErr() const{ - return err; -} diff --git a/src/bmp/BMPParser.h b/src/bmp/BMPParser.h deleted file mode 100644 index d3a42542e..000000000 --- a/src/bmp/BMPParser.h +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once - -#ifdef ERROR -#define ERROR_ ERROR -#undef ERROR -#endif - -#include // node < 7 uses libstdc++ on macOS which lacks complete c++11 -#include - -namespace BMPParser{ - enum Status{ - EMPTY, - OK, - ERROR, - }; - - class Parser{ - public: - Parser()=default; - ~Parser(); - void parse(uint8_t *buf, int bufSize, uint8_t *format=nullptr); - void clearImgd(); - int32_t getWidth() const; - int32_t getHeight() const; - uint8_t *getImgd() const; - Status getStatus() const; - std::string getErrMsg() const; - - private: - Status status = Status::EMPTY; - uint8_t *data = nullptr; - uint8_t *ptr = nullptr; - int len = 0; - int32_t w = 0; - int32_t h = 0; - uint8_t *imgd = nullptr; - std::string err = ""; - std::string op = ""; - - template inline T get(); - template inline T get(uint8_t* pointer); - std::string getStr(int len, bool reverse=false); - inline void skip(int len); - void calcMaskShift(uint32_t& shift, uint32_t& mask, double& multp); - - void setOp(std::string val); - std::string getOp() const; - - void setErrUnsupported(std::string msg); - void setErrUnknown(std::string msg); - void setErr(std::string msg); - std::string getErr() const; - }; -} - -#ifdef ERROR_ -#define ERROR ERROR_ -#undef ERROR_ -#endif diff --git a/src/bmp/LICENSE.md b/src/bmp/LICENSE.md deleted file mode 100644 index ea89a5dfe..000000000 --- a/src/bmp/LICENSE.md +++ /dev/null @@ -1,24 +0,0 @@ -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or -distribute this software, either in source code form or as a compiled -binary, for any purpose, commercial or non-commercial, and by any -means. - -In jurisdictions that recognize copyright laws, the author or authors -of this software dedicate any and all copyright interest in the -software to the public domain. We make this dedication for the benefit -of the public at large and to the detriment of our heirs and -successors. We intend this dedication to be an overt act of -relinquishment in perpetuity of all present and future rights to this -software under copyright law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to \ No newline at end of file diff --git a/src/closure.cc b/src/closure.cc deleted file mode 100644 index e821e7f22..000000000 --- a/src/closure.cc +++ /dev/null @@ -1,26 +0,0 @@ -#include "closure.h" - -#ifdef HAVE_JPEG -void JpegClosure::init_destination(j_compress_ptr cinfo) { - JpegClosure* closure = (JpegClosure*)cinfo->client_data; - closure->vec.resize(PAGE_SIZE); - closure->jpeg_dest_mgr->next_output_byte = &closure->vec[0]; - closure->jpeg_dest_mgr->free_in_buffer = closure->vec.size(); -} - -boolean JpegClosure::empty_output_buffer(j_compress_ptr cinfo) { - JpegClosure* closure = (JpegClosure*)cinfo->client_data; - size_t currentSize = closure->vec.size(); - closure->vec.resize(currentSize * 1.5); - closure->jpeg_dest_mgr->next_output_byte = &closure->vec[currentSize]; - closure->jpeg_dest_mgr->free_in_buffer = closure->vec.size() - currentSize; - return true; -} - -void JpegClosure::term_destination(j_compress_ptr cinfo) { - JpegClosure* closure = (JpegClosure*)cinfo->client_data; - size_t finalSize = closure->vec.size() - closure->jpeg_dest_mgr->free_in_buffer; - closure->vec.resize(finalSize); -} -#endif - diff --git a/src/closure.h b/src/closure.h deleted file mode 100644 index 3126114eb..000000000 --- a/src/closure.h +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#pragma once - -#include "Canvas.h" - -#ifdef HAVE_JPEG -#include -#endif - -#include -#include -#include // node < 7 uses libstdc++ on macOS which lacks complete c++11 -#include - -#ifndef PAGE_SIZE - #define PAGE_SIZE 4096 -#endif - -/* - * Image encoding closures. - */ - -struct Closure { - std::vector vec; - Nan::Callback cb; - Canvas* canvas = nullptr; - cairo_status_t status = CAIRO_STATUS_SUCCESS; - - static cairo_status_t writeVec(void *c, const uint8_t *odata, unsigned len) { - Closure* closure = static_cast(c); - try { - closure->vec.insert(closure->vec.end(), odata, odata + len); - } catch (const std::bad_alloc &) { - return CAIRO_STATUS_NO_MEMORY; - } - return CAIRO_STATUS_SUCCESS; - } - - Closure(Canvas* canvas) : canvas(canvas) {}; -}; - -struct PdfSvgClosure : Closure { - PdfSvgClosure(Canvas* canvas) : Closure(canvas) {}; -}; - -struct PngClosure : Closure { - uint32_t compressionLevel = 6; - uint32_t filters = PNG_ALL_FILTERS; - uint32_t resolution = 0; // 0 = unspecified - // Indexed PNGs: - uint32_t nPaletteColors = 0; - uint8_t* palette = nullptr; - uint8_t backgroundIndex = 0; - - PngClosure(Canvas* canvas) : Closure(canvas) {}; -}; - -#ifdef HAVE_JPEG -struct JpegClosure : Closure { - uint32_t quality = 75; - uint32_t chromaSubsampling = 2; - bool progressive = false; - jpeg_destination_mgr* jpeg_dest_mgr = nullptr; - - static void init_destination(j_compress_ptr cinfo); - static boolean empty_output_buffer(j_compress_ptr cinfo); - static void term_destination(j_compress_ptr cinfo); - - JpegClosure(Canvas* canvas) : Closure(canvas) { - jpeg_dest_mgr = new jpeg_destination_mgr; - jpeg_dest_mgr->init_destination = init_destination; - jpeg_dest_mgr->empty_output_buffer = empty_output_buffer; - jpeg_dest_mgr->term_destination = term_destination; - }; - - ~JpegClosure() { - delete jpeg_dest_mgr; - } -}; -#endif diff --git a/src/color.cc b/src/color.cc deleted file mode 100644 index 230fb8dbe..000000000 --- a/src/color.cc +++ /dev/null @@ -1,779 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#include "color.h" - -#include -#include -#include -#include -#include -#include -#include - -// Compatibility with Visual Studio versions prior to VS2015 -#if defined(_MSC_VER) && _MSC_VER < 1900 -#define snprintf _snprintf -#endif - -/* - * Parse integer value - */ - -template -static bool -parse_integer(const char** pStr, parsed_t *pParsed) { - parsed_t& c = *pParsed; - const char*& str = *pStr; - int8_t sign=1; - - c = 0; - if (*str == '-') { - sign=-1; - ++str; - } - else if (*str == '+') - ++str; - - if (*str >= '0' && *str <= '9') { - do { - c *= 10; - c += *str++ - '0'; - } while (*str >= '0' && *str <= '9'); - } else { - return false; - } - if (sign<0) - c=-c; - return true; -} - - -/* - * Parse CSS value - * Adapted from http://crackprogramming.blogspot.co.il/2012/10/implement-atof.html - */ - -template -static bool -parse_css_number(const char** pStr, parsed_t *pParsed) { - parsed_t &parsed = *pParsed; - const char*& str = *pStr; - const char* startStr = str; - if (!str || !*str) - return false; - parsed_t integerPart = 0; - parsed_t fractionPart = 0; - int divisorForFraction = 1; - int sign = 1; - int exponent = 0; - int digits = 0; - bool inFraction = false; - - if (*str == '-') { - ++str; - sign = -1; - } - else if (*str == '+') - ++str; - while (*str != '\0') { - if (*str >= '0' && *str <= '9') { - if (digits>=std::numeric_limits::digits10) { - if (!inFraction) - return false; - } - else { - ++digits; - - if (inFraction) { - fractionPart = fractionPart*10 + (*str - '0'); - divisorForFraction *= 10; - } - else { - integerPart = integerPart*10 + (*str - '0'); - } - } - } - else if (*str == '.') { - if (inFraction) - break; - else - inFraction = true; - } - else if (*str == 'e') { - ++str; - if (!parse_integer(&str, &exponent)) - return false; - break; - } - else - break; - ++str; - } - if (str != startStr) { - parsed = sign * (integerPart + fractionPart/divisorForFraction); - for (;exponent>0;--exponent) - parsed *= 10; - for (;exponent<0;++exponent) - parsed /= 10; - return true; - } - return false; -} - -/* - * Clip value to the range [minValue, maxValue] - */ - -template -static T -clip(T value, T minValue, T maxValue) { - if (value > maxValue) - value = maxValue; - if (value < minValue) - value = minValue; - return value; -} - -/* - * Wrap value to the range [0, limit] - */ - -template -static T -wrap_float(T value, T limit) { - return fmod(fmod(value, limit) + limit, limit); -} - -/* - * Wrap value to the range [0, limit] - currently-unused integer version of wrap_float - */ - -// template -// static T wrap_int(T value, T limit) { -// return (value % limit + limit) % limit; -// } - -/* - * Parse color channel value - */ - -static bool -parse_rgb_channel(const char** pStr, uint8_t *pChannel) { - int channel; - if (parse_integer(pStr, &channel)) { - *pChannel = clip(channel, 0, 255); - return true; - } - return false; -} - -/* - * Parse a value in degrees - */ - -static bool -parse_degrees(const char** pStr, float *pDegrees) { - float degrees; - if (parse_css_number(pStr, °rees)) { - *pDegrees = wrap_float(degrees, 360.0f); - return true; - } - return false; -} - -/* - * Parse and clip a percentage value. Returns a float in the range [0, 1]. - */ - -static bool -parse_clipped_percentage(const char** pStr, float *pFraction) { - float percentage; - bool result = parse_css_number(pStr,&percentage); - const char*& str = *pStr; - if (result) { - if (*str == '%') { - ++str; - *pFraction = clip(percentage, 0.0f, 100.0f) / 100.0f; - return result; - } - } - return false; -} - -/* - * Macros to help with parsing inside rgba_from_*_string - */ - -#define WHITESPACE \ - while (' ' == *str) ++str; - -#define WHITESPACE_OR_COMMA \ - while (' ' == *str || ',' == *str) ++str; - -#define CHANNEL(NAME) \ - if (!parse_rgb_channel(&str, &NAME)) \ - return 0; \ - -#define HUE(NAME) \ - if (!parse_degrees(&str, &NAME)) \ - return 0; - -#define SATURATION(NAME) \ - if (!parse_clipped_percentage(&str, &NAME)) \ - return 0; - -#define LIGHTNESS(NAME) SATURATION(NAME) - -#define ALPHA(NAME) \ - if (*str >= '1' && *str <= '9') { \ - NAME = 1; \ - } else { \ - if ('0' == *str) { \ - NAME = 0; \ - ++str; \ - } \ - if ('.' == *str) { \ - ++str; \ - NAME = 0; \ - float n = .1f; \ - while (*str >= '0' && *str <= '9') { \ - NAME += (*str++ - '0') * n; \ - n *= .1f; \ - } \ - } \ - } \ - do {} while (0) // require trailing semicolon - -/* - * Named colors. - */ -static const std::map named_colors = { - { "transparent", 0xFFFFFF00} - , { "aliceblue", 0xF0F8FFFF } - , { "antiquewhite", 0xFAEBD7FF } - , { "aqua", 0x00FFFFFF } - , { "aquamarine", 0x7FFFD4FF } - , { "azure", 0xF0FFFFFF } - , { "beige", 0xF5F5DCFF } - , { "bisque", 0xFFE4C4FF } - , { "black", 0x000000FF } - , { "blanchedalmond", 0xFFEBCDFF } - , { "blue", 0x0000FFFF } - , { "blueviolet", 0x8A2BE2FF } - , { "brown", 0xA52A2AFF } - , { "burlywood", 0xDEB887FF } - , { "cadetblue", 0x5F9EA0FF } - , { "chartreuse", 0x7FFF00FF } - , { "chocolate", 0xD2691EFF } - , { "coral", 0xFF7F50FF } - , { "cornflowerblue", 0x6495EDFF } - , { "cornsilk", 0xFFF8DCFF } - , { "crimson", 0xDC143CFF } - , { "cyan", 0x00FFFFFF } - , { "darkblue", 0x00008BFF } - , { "darkcyan", 0x008B8BFF } - , { "darkgoldenrod", 0xB8860BFF } - , { "darkgray", 0xA9A9A9FF } - , { "darkgreen", 0x006400FF } - , { "darkgrey", 0xA9A9A9FF } - , { "darkkhaki", 0xBDB76BFF } - , { "darkmagenta", 0x8B008BFF } - , { "darkolivegreen", 0x556B2FFF } - , { "darkorange", 0xFF8C00FF } - , { "darkorchid", 0x9932CCFF } - , { "darkred", 0x8B0000FF } - , { "darksalmon", 0xE9967AFF } - , { "darkseagreen", 0x8FBC8FFF } - , { "darkslateblue", 0x483D8BFF } - , { "darkslategray", 0x2F4F4FFF } - , { "darkslategrey", 0x2F4F4FFF } - , { "darkturquoise", 0x00CED1FF } - , { "darkviolet", 0x9400D3FF } - , { "deeppink", 0xFF1493FF } - , { "deepskyblue", 0x00BFFFFF } - , { "dimgray", 0x696969FF } - , { "dimgrey", 0x696969FF } - , { "dodgerblue", 0x1E90FFFF } - , { "firebrick", 0xB22222FF } - , { "floralwhite", 0xFFFAF0FF } - , { "forestgreen", 0x228B22FF } - , { "fuchsia", 0xFF00FFFF } - , { "gainsboro", 0xDCDCDCFF } - , { "ghostwhite", 0xF8F8FFFF } - , { "gold", 0xFFD700FF } - , { "goldenrod", 0xDAA520FF } - , { "gray", 0x808080FF } - , { "green", 0x008000FF } - , { "greenyellow", 0xADFF2FFF } - , { "grey", 0x808080FF } - , { "honeydew", 0xF0FFF0FF } - , { "hotpink", 0xFF69B4FF } - , { "indianred", 0xCD5C5CFF } - , { "indigo", 0x4B0082FF } - , { "ivory", 0xFFFFF0FF } - , { "khaki", 0xF0E68CFF } - , { "lavender", 0xE6E6FAFF } - , { "lavenderblush", 0xFFF0F5FF } - , { "lawngreen", 0x7CFC00FF } - , { "lemonchiffon", 0xFFFACDFF } - , { "lightblue", 0xADD8E6FF } - , { "lightcoral", 0xF08080FF } - , { "lightcyan", 0xE0FFFFFF } - , { "lightgoldenrodyellow", 0xFAFAD2FF } - , { "lightgray", 0xD3D3D3FF } - , { "lightgreen", 0x90EE90FF } - , { "lightgrey", 0xD3D3D3FF } - , { "lightpink", 0xFFB6C1FF } - , { "lightsalmon", 0xFFA07AFF } - , { "lightseagreen", 0x20B2AAFF } - , { "lightskyblue", 0x87CEFAFF } - , { "lightslategray", 0x778899FF } - , { "lightslategrey", 0x778899FF } - , { "lightsteelblue", 0xB0C4DEFF } - , { "lightyellow", 0xFFFFE0FF } - , { "lime", 0x00FF00FF } - , { "limegreen", 0x32CD32FF } - , { "linen", 0xFAF0E6FF } - , { "magenta", 0xFF00FFFF } - , { "maroon", 0x800000FF } - , { "mediumaquamarine", 0x66CDAAFF } - , { "mediumblue", 0x0000CDFF } - , { "mediumorchid", 0xBA55D3FF } - , { "mediumpurple", 0x9370DBFF } - , { "mediumseagreen", 0x3CB371FF } - , { "mediumslateblue", 0x7B68EEFF } - , { "mediumspringgreen", 0x00FA9AFF } - , { "mediumturquoise", 0x48D1CCFF } - , { "mediumvioletred", 0xC71585FF } - , { "midnightblue", 0x191970FF } - , { "mintcream", 0xF5FFFAFF } - , { "mistyrose", 0xFFE4E1FF } - , { "moccasin", 0xFFE4B5FF } - , { "navajowhite", 0xFFDEADFF } - , { "navy", 0x000080FF } - , { "oldlace", 0xFDF5E6FF } - , { "olive", 0x808000FF } - , { "olivedrab", 0x6B8E23FF } - , { "orange", 0xFFA500FF } - , { "orangered", 0xFF4500FF } - , { "orchid", 0xDA70D6FF } - , { "palegoldenrod", 0xEEE8AAFF } - , { "palegreen", 0x98FB98FF } - , { "paleturquoise", 0xAFEEEEFF } - , { "palevioletred", 0xDB7093FF } - , { "papayawhip", 0xFFEFD5FF } - , { "peachpuff", 0xFFDAB9FF } - , { "peru", 0xCD853FFF } - , { "pink", 0xFFC0CBFF } - , { "plum", 0xDDA0DDFF } - , { "powderblue", 0xB0E0E6FF } - , { "purple", 0x800080FF } - , { "rebeccapurple", 0x663399FF } // Source: CSS Color Level 4 draft - , { "red", 0xFF0000FF } - , { "rosybrown", 0xBC8F8FFF } - , { "royalblue", 0x4169E1FF } - , { "saddlebrown", 0x8B4513FF } - , { "salmon", 0xFA8072FF } - , { "sandybrown", 0xF4A460FF } - , { "seagreen", 0x2E8B57FF } - , { "seashell", 0xFFF5EEFF } - , { "sienna", 0xA0522DFF } - , { "silver", 0xC0C0C0FF } - , { "skyblue", 0x87CEEBFF } - , { "slateblue", 0x6A5ACDFF } - , { "slategray", 0x708090FF } - , { "slategrey", 0x708090FF } - , { "snow", 0xFFFAFAFF } - , { "springgreen", 0x00FF7FFF } - , { "steelblue", 0x4682B4FF } - , { "tan", 0xD2B48CFF } - , { "teal", 0x008080FF } - , { "thistle", 0xD8BFD8FF } - , { "tomato", 0xFF6347FF } - , { "turquoise", 0x40E0D0FF } - , { "violet", 0xEE82EEFF } - , { "wheat", 0xF5DEB3FF } - , { "white", 0xFFFFFFFF } - , { "whitesmoke", 0xF5F5F5FF } - , { "yellow", 0xFFFF00FF } - , { "yellowgreen", 0x9ACD32FF } -}; - -/* - * Hex digit int val. - */ - -static int -h(char c) { - switch (c) { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - return c - '0'; - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - return (c - 'a') + 10; - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - return (c - 'A') + 10; - } - return 0; -} - -/* - * Return rgba_t from rgba. - */ - -rgba_t -rgba_create(uint32_t rgba) { - rgba_t color; - color.r = (double) (rgba >> 24) / 255; - color.g = (double) (rgba >> 16 & 0xff) / 255; - color.b = (double) (rgba >> 8 & 0xff) / 255; - color.a = (double) (rgba & 0xff) / 255; - return color; -} - -/* - * Return a string representation of the color. - */ - -void -rgba_to_string(rgba_t rgba, char *buf, size_t len) { - if (1 == rgba.a) { - snprintf(buf, len, "#%.2x%.2x%.2x", - static_cast(round(rgba.r * 255)), - static_cast(round(rgba.g * 255)), - static_cast(round(rgba.b * 255))); - } else { - snprintf(buf, len, "rgba(%d, %d, %d, %.2f)", - static_cast(round(rgba.r * 255)), - static_cast(round(rgba.g * 255)), - static_cast(round(rgba.b * 255)), - rgba.a); - } -} - -/* - * Return rgba from (r,g,b,a). - */ - -static inline int32_t -rgba_from_rgba(uint8_t r, uint8_t g, uint8_t b, uint8_t a) { - return - r << 24 - | g << 16 - | b << 8 - | a; -} - -/* - * Helper function used in rgba_from_hsla(). - * Based on http://dev.w3.org/csswg/css-color-4/#hsl-to-rgb - */ - -static float -hue_to_rgb(float t1, float t2, float hue) { - if (hue < 0) - hue += 6; - if (hue >= 6) - hue -= 6; - - if (hue < 1) - return (t2 - t1) * hue + t1; - else if (hue < 3) - return t2; - else if (hue < 4) - return (t2 - t1) * (4 - hue) + t1; - else - return t1; -} - -/* - * Return rgba from (h,s,l,a). - * Expects h values in the range [0, 360), and s, l, a in the range [0, 1]. - * Adapted from http://dev.w3.org/csswg/css-color-4/#hsl-to-rgb - */ - -static inline int32_t -rgba_from_hsla(float h_deg, float s, float l, float a) { - uint8_t r, g, b; - float h = (6 * h_deg) / 360.0f, m1, m2; - - if (l<=0.5) - m2=l*(s+1); - else - m2=l+s-l*s; - m1 = l*2 - m2; - - // Scale and round the RGB components - r = (uint8_t)floor(hue_to_rgb(m1, m2, h + 2) * 255 + 0.5); - g = (uint8_t)floor(hue_to_rgb(m1, m2, h ) * 255 + 0.5); - b = (uint8_t)floor(hue_to_rgb(m1, m2, h - 2) * 255 + 0.5); - - return rgba_from_rgba(r, g, b, (uint8_t) (a * 255)); -} - -/* - * Return rgba from (h,s,l). - * Expects h values in the range [0, 360), and s, l in the range [0, 1]. - */ - -static inline int32_t -rgba_from_hsl(float h_deg, float s, float l) { - return rgba_from_hsla(h_deg, s, l, 1.0); -} - - -/* - * Return rgba from (r,g,b). - */ - -static int32_t -rgba_from_rgb(uint8_t r, uint8_t g, uint8_t b) { - return rgba_from_rgba(r, g, b, 255); -} - -/* - * Return rgba from #RRGGBBAA - */ - -static int32_t -rgba_from_hex8_string(const char *str) { - return rgba_from_rgba( - (h(str[0]) << 4) + h(str[1]), - (h(str[2]) << 4) + h(str[3]), - (h(str[4]) << 4) + h(str[5]), - (h(str[6]) << 4) + h(str[7]) - ); -} - -/* - * Return rgb from "#RRGGBB". - */ - -static int32_t -rgba_from_hex6_string(const char *str) { - return rgba_from_rgb( - (h(str[0]) << 4) + h(str[1]) - , (h(str[2]) << 4) + h(str[3]) - , (h(str[4]) << 4) + h(str[5]) - ); -} - -/* -* Return rgba from #RGBA -*/ - -static int32_t -rgba_from_hex4_string(const char *str) { - return rgba_from_rgba( - (h(str[0]) << 4) + h(str[0]), - (h(str[1]) << 4) + h(str[1]), - (h(str[2]) << 4) + h(str[2]), - (h(str[3]) << 4) + h(str[3]) - ); -} - -/* - * Return rgb from "#RGB" - */ - -static int32_t -rgba_from_hex3_string(const char *str) { - return rgba_from_rgb( - (h(str[0]) << 4) + h(str[0]) - , (h(str[1]) << 4) + h(str[1]) - , (h(str[2]) << 4) + h(str[2]) - ); -} - -/* - * Return rgb from "rgb()" - */ - -static int32_t -rgba_from_rgb_string(const char *str, short *ok) { - if (str == strstr(str, "rgb(")) { - str += 4; - WHITESPACE; - uint8_t r = 0, g = 0, b = 0; - CHANNEL(r); - WHITESPACE_OR_COMMA; - CHANNEL(g); - WHITESPACE_OR_COMMA; - CHANNEL(b); - WHITESPACE; - return *ok = 1, rgba_from_rgb(r, g, b); - } - return *ok = 0; -} - -/* - * Return rgb from "rgba()" - */ - -static int32_t -rgba_from_rgba_string(const char *str, short *ok) { - if (str == strstr(str, "rgba(")) { - str += 5; - WHITESPACE; - uint8_t r = 0, g = 0, b = 0; - float a = 1.f; - CHANNEL(r); - WHITESPACE_OR_COMMA; - CHANNEL(g); - WHITESPACE_OR_COMMA; - CHANNEL(b); - WHITESPACE_OR_COMMA; - ALPHA(a); - WHITESPACE; - return *ok = 1, rgba_from_rgba(r, g, b, (int) (a * 255)); - } - return *ok = 0; -} - -/* - * Return rgb from "hsla()" - */ - -static int32_t -rgba_from_hsla_string(const char *str, short *ok) { - if (str == strstr(str, "hsla(")) { - str += 5; - WHITESPACE; - float h_deg = 0; - float s = 0, l = 0; - float a = 0; - HUE(h_deg); - WHITESPACE_OR_COMMA; - SATURATION(s); - WHITESPACE_OR_COMMA; - LIGHTNESS(l); - WHITESPACE_OR_COMMA; - ALPHA(a); - WHITESPACE; - return *ok = 1, rgba_from_hsla(h_deg, s, l, a); - } - return *ok = 0; -} - -/* - * Return rgb from "hsl()" - */ - -static int32_t -rgba_from_hsl_string(const char *str, short *ok) { - if (str == strstr(str, "hsl(")) { - str += 4; - WHITESPACE; - float h_deg = 0; - float s = 0, l = 0; - HUE(h_deg); - WHITESPACE_OR_COMMA; - SATURATION(s); - WHITESPACE_OR_COMMA; - LIGHTNESS(l); - WHITESPACE; - return *ok = 1, rgba_from_hsl(h_deg, s, l); - } - return *ok = 0; -} - - -/* - * Return rgb from: - * - * - "#RGB" - * - "#RGBA" - * - "#RRGGBB" - * - "#RRGGBBAA" - * - */ - -static int32_t -rgba_from_hex_string(const char *str, short *ok) { - size_t len = strlen(str); - *ok = 1; - switch (len) { - case 8: return rgba_from_hex8_string(str); - case 6: return rgba_from_hex6_string(str); - case 4: return rgba_from_hex4_string(str); - case 3: return rgba_from_hex3_string(str); - } - return *ok = 0; -} - -/* - * Return named color value. - */ - -static int32_t -rgba_from_name_string(const char *str, short *ok) { - std::string lowered(str); - std::transform(lowered.begin(), lowered.end(), lowered.begin(), tolower); - auto color = named_colors.find(lowered); - if (color != named_colors.end()) { - return *ok = 1, color->second; - } - return *ok = 0; -} - -/* - * Return rgb from: - * - * - #RGB - * - #RGBA - * - #RRGGBB - * - #RRGGBBAA - * - rgb(r,g,b) - * - rgba(r,g,b,a) - * - hsl(h,s,l) - * - hsla(h,s,l,a) - * - name - * - */ - -int32_t -rgba_from_string(const char *str, short *ok) { - if ('#' == str[0]) - return rgba_from_hex_string(++str, ok); - if (str == strstr(str, "rgba")) - return rgba_from_rgba_string(str, ok); - if (str == strstr(str, "rgb")) - return rgba_from_rgb_string(str, ok); - if (str == strstr(str, "hsla")) - return rgba_from_hsla_string(str, ok); - if (str == strstr(str, "hsl")) - return rgba_from_hsl_string(str, ok); - return rgba_from_name_string(str, ok); -} - -/* - * Inspect the given rgba color. - */ - -void -rgba_inspect(int32_t rgba) { - printf("rgba(%d,%d,%d,%d)\n" - , rgba >> 24 & 0xff - , rgba >> 16 & 0xff - , rgba >> 8 & 0xff - , rgba & 0xff - ); -} diff --git a/src/color.h b/src/color.h deleted file mode 100644 index 137c1d6b3..000000000 --- a/src/color.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#pragma once - -#include // node < 7 uses libstdc++ on macOS which lacks complete c++11 -#include - -/* - * RGBA struct. - */ - -typedef struct { - double r, g, b, a; -} rgba_t; - -/* - * Prototypes. - */ - -rgba_t -rgba_create(uint32_t rgba); - -int32_t -rgba_from_string(const char *str, short *ok); - -void -rgba_to_string(rgba_t rgba, char *buf, size_t len); - -void -rgba_inspect(int32_t rgba); diff --git a/src/dll_visibility.h b/src/dll_visibility.h deleted file mode 100644 index 7a1f98450..000000000 --- a/src/dll_visibility.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef DLL_PUBLIC - -#if defined _WIN32 - #ifdef __GNUC__ - #define DLL_PUBLIC __attribute__ ((dllexport)) - #else - #define DLL_PUBLIC __declspec(dllexport) - #endif - #define DLL_LOCAL -#else - #if __GNUC__ >= 4 - #define DLL_PUBLIC __attribute__ ((visibility ("default"))) - #define DLL_LOCAL __attribute__ ((visibility ("hidden"))) - #else - #define DLL_PUBLIC - #define DLL_LOCAL - #endif -#endif - -#endif diff --git a/src/init.cc b/src/init.cc deleted file mode 100644 index fd143973e..000000000 --- a/src/init.cc +++ /dev/null @@ -1,94 +0,0 @@ -// Copyright (c) 2010 LearnBoost - -#include -#include - -#include -#if CAIRO_VERSION < CAIRO_VERSION_ENCODE(1, 10, 0) -// CAIRO_FORMAT_RGB16_565: undeprecated in v1.10.0 -// CAIRO_STATUS_INVALID_SIZE: v1.10.0 -// CAIRO_FORMAT_INVALID: v1.10.0 -// Lots of the compositing operators: v1.10.0 -// JPEG MIME tracking: v1.10.0 -// Note: CAIRO_FORMAT_RGB30 is v1.12.0 and still optional -#error("cairo v1.10.0 or later is required") -#endif - -#include "Backends.h" -#include "Canvas.h" -#include "CanvasGradient.h" -#include "CanvasPattern.h" -#include "CanvasRenderingContext2d.h" -#include "Image.h" -#include "ImageData.h" - -#include -#include FT_FREETYPE_H - -using namespace v8; - -// Compatibility with Visual Studio versions prior to VS2015 -#if defined(_MSC_VER) && _MSC_VER < 1900 -#define snprintf _snprintf -#endif - -NAN_MODULE_INIT(init) { - Backends::Initialize(target); - Canvas::Initialize(target); - Image::Initialize(target); - ImageData::Initialize(target); - Context2d::Initialize(target); - Gradient::Initialize(target); - Pattern::Initialize(target); - - Nan::Set(target, Nan::New("cairoVersion").ToLocalChecked(), Nan::New(cairo_version_string()).ToLocalChecked()).Check(); -#ifdef HAVE_JPEG - -#ifndef JPEG_LIB_VERSION_MAJOR -#ifdef JPEG_LIB_VERSION -#define JPEG_LIB_VERSION_MAJOR (JPEG_LIB_VERSION / 10) -#else -#define JPEG_LIB_VERSION_MAJOR 0 -#endif -#endif - -#ifndef JPEG_LIB_VERSION_MINOR -#ifdef JPEG_LIB_VERSION -#define JPEG_LIB_VERSION_MINOR (JPEG_LIB_VERSION % 10) -#else -#define JPEG_LIB_VERSION_MINOR 0 -#endif -#endif - - char jpeg_version[10]; - static bool minor_gt_0 = JPEG_LIB_VERSION_MINOR > 0; - if (minor_gt_0) { - snprintf(jpeg_version, 10, "%d%c", JPEG_LIB_VERSION_MAJOR, JPEG_LIB_VERSION_MINOR + 'a' - 1); - } else { - snprintf(jpeg_version, 10, "%d", JPEG_LIB_VERSION_MAJOR); - } - Nan::Set(target, Nan::New("jpegVersion").ToLocalChecked(), Nan::New(jpeg_version).ToLocalChecked()).Check(); -#endif - -#ifdef HAVE_GIF -#ifndef GIF_LIB_VERSION - char gif_version[10]; - snprintf(gif_version, 10, "%d.%d.%d", GIFLIB_MAJOR, GIFLIB_MINOR, GIFLIB_RELEASE); - Nan::Set(target, Nan::New("gifVersion").ToLocalChecked(), Nan::New(gif_version).ToLocalChecked()).Check(); -#else - Nan::Set(target, Nan::New("gifVersion").ToLocalChecked(), Nan::New(GIF_LIB_VERSION).ToLocalChecked()).Check(); -#endif -#endif - -#ifdef HAVE_RSVG - Nan::Set(target, Nan::New("rsvgVersion").ToLocalChecked(), Nan::New(LIBRSVG_VERSION).ToLocalChecked()).Check(); -#endif - - Nan::Set(target, Nan::New("pangoVersion").ToLocalChecked(), Nan::New(PANGO_VERSION_STRING).ToLocalChecked()).Check(); - - char freetype_version[10]; - snprintf(freetype_version, 10, "%d.%d.%d", FREETYPE_MAJOR, FREETYPE_MINOR, FREETYPE_PATCH); - Nan::Set(target, Nan::New("freetypeVersion").ToLocalChecked(), Nan::New(freetype_version).ToLocalChecked()).Check(); -} - -NODE_MODULE(canvas, init); diff --git a/src/register_font.cc b/src/register_font.cc deleted file mode 100644 index 37182c0ac..000000000 --- a/src/register_font.cc +++ /dev/null @@ -1,409 +0,0 @@ -#include "register_font.h" - -#include -#include -#include -#include - -#ifdef __APPLE__ -#include -#elif defined(_WIN32) -#include -#include -#else -#include -#include -#endif - -#include -#include FT_FREETYPE_H -#include FT_TRUETYPE_TABLES_H -#include FT_SFNT_NAMES_H -#include FT_TRUETYPE_IDS_H -#ifndef FT_SFNT_OS2 -#define FT_SFNT_OS2 ft_sfnt_os2 -#endif - -// OSX seems to read the strings in MacRoman encoding and ignore Unicode entries. -// You can verify this by opening a TTF with both Unicode and Macroman on OSX. -// It uses the MacRoman name, while Fontconfig and Windows use Unicode -#ifdef __APPLE__ -#define PREFERRED_PLATFORM_ID TT_PLATFORM_MACINTOSH -#define PREFERRED_ENCODING_ID TT_MAC_ID_ROMAN -#else -#define PREFERRED_PLATFORM_ID TT_PLATFORM_MICROSOFT -#define PREFERRED_ENCODING_ID TT_MS_ID_UNICODE_CS -#endif - -// With PangoFcFontMaps (the pango font module on Linux) we're able to add a -// hook that lets us get perfect matching. Tie the conditions for enabling that -// feature to one variable -#if !defined(__APPLE__) && !defined(_WIN32) && PANGO_VERSION_CHECK(1, 47, 0) -#define PERFECT_MATCHES_ENABLED -#endif - -#define IS_PREFERRED_ENC(X) \ - X.platform_id == PREFERRED_PLATFORM_ID && X.encoding_id == PREFERRED_ENCODING_ID - -#ifdef PERFECT_MATCHES_ENABLED -// On Linux-like OSes using FontConfig, the PostScript name ranks higher than -// preferred family and family name since we'll use it to get perfect font -// matching (see fc_font_map_substitute_hook) -#define GET_NAME_RANK(X) \ - ((IS_PREFERRED_ENC(X) ? 1 : 0) << 2) | \ - ((X.name_id == TT_NAME_ID_PS_NAME ? 1 : 0) << 1) | \ - (X.name_id == TT_NAME_ID_PREFERRED_FAMILY ? 1 : 0) -#else -#define GET_NAME_RANK(X) \ - ((IS_PREFERRED_ENC(X) ? 1 : 0) << 1) | \ - (X.name_id == TT_NAME_ID_PREFERRED_FAMILY ? 1 : 0) -#endif - -/* - * Return a UTF-8 encoded string given a TrueType name buf+len - * and its platform and encoding - */ - -char * -to_utf8(FT_Byte* buf, FT_UInt len, FT_UShort pid, FT_UShort eid) { - size_t ret_len = len * 4; // max chars in a utf8 string - char *ret = (char*)malloc(ret_len + 1); // utf8 string + null - - if (!ret) return NULL; - - // In my testing of hundreds of fonts from the Google Font repo, the two types - // of fonts are TT_PLATFORM_MICROSOFT with TT_MS_ID_UNICODE_CS encoding, or - // TT_PLATFORM_MACINTOSH with TT_MAC_ID_ROMAN encoding. Usually both, never neither - - char const *fromcode; - - if (pid == TT_PLATFORM_MACINTOSH && eid == TT_MAC_ID_ROMAN) { - fromcode = "MAC"; - } else if (pid == TT_PLATFORM_MICROSOFT && eid == TT_MS_ID_UNICODE_CS) { - fromcode = "UTF-16BE"; - } else { - free(ret); - return NULL; - } - - GIConv cd = g_iconv_open("UTF-8", fromcode); - - if (cd == (GIConv)-1) { - free(ret); - return NULL; - } - - size_t inbytesleft = len; - size_t outbytesleft = ret_len; - - size_t n_converted = g_iconv(cd, (char**)&buf, &inbytesleft, &ret, &outbytesleft); - - ret -= ret_len - outbytesleft; // rewind the pointers to their - buf -= len - inbytesleft; // original starting positions - - if (n_converted == (size_t)-1) { - free(ret); - return NULL; - } else { - ret[ret_len - outbytesleft] = '\0'; - return ret; - } -} - -/* - * Find a family name in the face's name table, preferring the one the - * system, fall back to the other - */ - -char * -get_family_name(FT_Face face) { - FT_SfntName name; - - int best_rank = -1; - char* best_buf = NULL; - - for (unsigned i = 0; i < FT_Get_Sfnt_Name_Count(face); ++i) { - FT_Get_Sfnt_Name(face, i, &name); - - if ( - name.name_id == TT_NAME_ID_FONT_FAMILY || -#ifdef PERFECT_MATCHES_ENABLED - name.name_id == TT_NAME_ID_PS_NAME || -#endif - name.name_id == TT_NAME_ID_PREFERRED_FAMILY - ) { - int rank = GET_NAME_RANK(name); - - if (rank > best_rank) { - char *buf = to_utf8(name.string, name.string_len, name.platform_id, name.encoding_id); - if (buf) { - best_rank = rank; - if (best_buf) free(best_buf); - best_buf = buf; - -#ifdef PERFECT_MATCHES_ENABLED - // Prepend an '@' to the postscript name - if (name.name_id == TT_NAME_ID_PS_NAME) { - std::string best_buf_modified = "@"; - best_buf_modified += best_buf; - free(best_buf); - best_buf = strdup(best_buf_modified.c_str()); - } -#endif - } else { - free(buf); - } - } - } - } - - return best_buf; -} - -PangoWeight -get_pango_weight(FT_UShort weight) { - switch (weight) { - case 100: return PANGO_WEIGHT_THIN; - case 200: return PANGO_WEIGHT_ULTRALIGHT; - case 300: return PANGO_WEIGHT_LIGHT; - #if PANGO_VERSION >= PANGO_VERSION_ENCODE(1, 36, 7) - case 350: return PANGO_WEIGHT_SEMILIGHT; - #endif - case 380: return PANGO_WEIGHT_BOOK; - case 400: return PANGO_WEIGHT_NORMAL; - case 500: return PANGO_WEIGHT_MEDIUM; - case 600: return PANGO_WEIGHT_SEMIBOLD; - case 700: return PANGO_WEIGHT_BOLD; - case 800: return PANGO_WEIGHT_ULTRABOLD; - case 900: return PANGO_WEIGHT_HEAVY; - case 1000: return PANGO_WEIGHT_ULTRAHEAVY; - default: return PANGO_WEIGHT_NORMAL; - } -} - -PangoStretch -get_pango_stretch(FT_UShort width) { - switch (width) { - case 1: return PANGO_STRETCH_ULTRA_CONDENSED; - case 2: return PANGO_STRETCH_EXTRA_CONDENSED; - case 3: return PANGO_STRETCH_CONDENSED; - case 4: return PANGO_STRETCH_SEMI_CONDENSED; - case 5: return PANGO_STRETCH_NORMAL; - case 6: return PANGO_STRETCH_SEMI_EXPANDED; - case 7: return PANGO_STRETCH_EXPANDED; - case 8: return PANGO_STRETCH_EXTRA_EXPANDED; - case 9: return PANGO_STRETCH_ULTRA_EXPANDED; - default: return PANGO_STRETCH_NORMAL; - } -} - -PangoStyle -get_pango_style(FT_Long flags) { - if (flags & FT_STYLE_FLAG_ITALIC) { - return PANGO_STYLE_ITALIC; - } else { - return PANGO_STYLE_NORMAL; - } -} - -#ifdef _WIN32 -std::unique_ptr -u8ToWide(const char* str) { - int iBufferSize = MultiByteToWideChar(CP_UTF8, 0, str, -1, (wchar_t*)NULL, 0); - if(!iBufferSize){ - return nullptr; - } - std::unique_ptr wpBufWString = std::unique_ptr{ new wchar_t[static_cast(iBufferSize)] }; - if(!MultiByteToWideChar(CP_UTF8, 0, str, -1, wpBufWString.get(), iBufferSize)){ - return nullptr; - } - return wpBufWString; -} - -static unsigned long -stream_read_func(FT_Stream stream, unsigned long offset, unsigned char* buffer, unsigned long count){ - HANDLE hFile = reinterpret_cast(stream->descriptor.pointer); - DWORD numberOfBytesRead; - OVERLAPPED overlapped; - overlapped.Offset = offset; - overlapped.OffsetHigh = 0; - overlapped.hEvent = NULL; - if(!ReadFile(hFile, buffer, count, &numberOfBytesRead, &overlapped)){ - return 0; - } - return numberOfBytesRead; -}; - -static void -stream_close_func(FT_Stream stream){ - HANDLE hFile = reinterpret_cast(stream->descriptor.pointer); - CloseHandle(hFile); -} -#endif - -/* - * Return a PangoFontDescription that will resolve to the font file - */ - -PangoFontDescription * -get_pango_font_description(unsigned char* filepath) { - FT_Library library; - FT_Face face; - PangoFontDescription *desc = pango_font_description_new(); -#ifdef _WIN32 - // FT_New_Face use fopen. - // Unable to find the file when supplied the multibyte string path on the Windows platform and throw error "Could not parse font file". - // This workaround fixes this by reading the font file uses win32 wide character API. - std::unique_ptr wFilepath = u8ToWide((char*)filepath); - if(!wFilepath){ - return NULL; - } - HANDLE hFile = CreateFileW( - wFilepath.get(), - GENERIC_READ, - FILE_SHARE_READ, - NULL, - OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL, - NULL - ); - if(!hFile){ - return NULL; - } - LARGE_INTEGER liSize; - if(!GetFileSizeEx(hFile, &liSize)) { - CloseHandle(hFile); - return NULL; - } - FT_Open_Args args; - args.flags = FT_OPEN_STREAM; - FT_StreamRec stream; - stream.base = NULL; - stream.size = liSize.QuadPart; - stream.pos = 0; - stream.descriptor.pointer = hFile; - stream.read = stream_read_func; - stream.close = stream_close_func; - args.stream = &stream; - if ( - !FT_Init_FreeType(&library) && - !FT_Open_Face(library, &args, 0, &face)) { -#else - if (!FT_Init_FreeType(&library) && !FT_New_Face(library, (const char*)filepath, 0, &face)) { -#endif - TT_OS2 *table = (TT_OS2*)FT_Get_Sfnt_Table(face, FT_SFNT_OS2); - if (table) { - char *family = get_family_name(face); - - if (!family) { - pango_font_description_free(desc); - FT_Done_Face(face); - FT_Done_FreeType(library); - - return NULL; - } - - pango_font_description_set_family_static(desc, family); - free(family); - pango_font_description_set_weight(desc, get_pango_weight(table->usWeightClass)); - pango_font_description_set_stretch(desc, get_pango_stretch(table->usWidthClass)); - pango_font_description_set_style(desc, get_pango_style(face->style_flags)); - - FT_Done_Face(face); - FT_Done_FreeType(library); - - return desc; - } - } - pango_font_description_free(desc); - - return NULL; -} - -#ifdef PERFECT_MATCHES_ENABLED -static void -fc_font_map_substitute_hook(FcPattern *pat, gpointer data) { - FcChar8 *family; - - for (int i = 0; FcPatternGetString(pat, FC_FAMILY, i, &family) == FcResultMatch; i++) { - if (family[0] == '@') { - FcPatternAddString(pat, FC_POSTSCRIPT_NAME, (FcChar8 *)family + 1); - FcPatternRemove(pat, FC_FAMILY, i); - i -= 1; - } - } -} -#endif - -/* - * Register font with the OS - */ - -bool -register_font(unsigned char *filepath) { - bool success; - - #ifdef __APPLE__ - CFURLRef filepathUrl = CFURLCreateFromFileSystemRepresentation(NULL, filepath, strlen((char*)filepath), false); - success = CTFontManagerRegisterFontsForURL(filepathUrl, kCTFontManagerScopeProcess, NULL); - #elif defined(_WIN32) - std::unique_ptr wFilepath = u8ToWide((char*)filepath); - if(wFilepath){ - success = AddFontResourceExW(wFilepath.get(), FR_PRIVATE, 0) != 0; - }else{ - success = false; - } - - #else - success = FcConfigAppFontAddFile(FcConfigGetCurrent(), (FcChar8 *)(filepath)); - #endif - - if (!success) return false; - - // Tell Pango to throw away the current FontMap and create a new one. This - // has the effect of registering the new font in Pango by re-looking up all - // font families. - pango_cairo_font_map_set_default(NULL); - -#ifdef PERFECT_MATCHES_ENABLED - PangoFontMap* map = pango_cairo_font_map_get_default(); - PangoFcFontMap* fc_map = PANGO_FC_FONT_MAP(map); - pango_fc_font_map_set_default_substitute(fc_map, fc_font_map_substitute_hook, NULL, NULL); -#endif - - return true; -} - -/* - * Deregister font from the OS - * Note that Linux (FontConfig) can only dereregister ALL fonts at once. - */ - -bool -deregister_font(unsigned char *filepath) { - bool success; - - #ifdef __APPLE__ - CFURLRef filepathUrl = CFURLCreateFromFileSystemRepresentation(NULL, filepath, strlen((char*)filepath), false); - success = CTFontManagerUnregisterFontsForURL(filepathUrl, kCTFontManagerScopeProcess, NULL); - #elif defined(_WIN32) - std::unique_ptr wFilepath = u8ToWide((char*)filepath); - if(wFilepath){ - success = RemoveFontResourceExW(wFilepath.get(), FR_PRIVATE, 0) != 0; - }else{ - success = false; - } - #else - FcConfigAppFontClear(FcConfigGetCurrent()); - success = true; - #endif - - if (!success) return false; - - // Tell Pango to throw away the current FontMap and create a new one. This - // has the effect of deregistering the font in Pango by re-looking up all - // font families. - pango_cairo_font_map_set_default(NULL); - - return true; -} diff --git a/src/register_font.h b/src/register_font.h deleted file mode 100644 index a4fcd598e..000000000 --- a/src/register_font.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#include - -PangoFontDescription *get_pango_font_description(unsigned char *filepath); -bool register_font(unsigned char *filepath); -bool deregister_font(unsigned char *filepath); diff --git a/test/canvas.test.js b/test/canvas.test.js index 9573688f5..c28ff2083 100644 --- a/test/canvas.test.js +++ b/test/canvas.test.js @@ -1,1976 +1,2169 @@ /* eslint-env mocha */ -'use strict' +"use strict"; /** * Module dependencies. */ -const assert = require('assert') -const os = require('os') -const path = require('path') -const { Readable } = require('stream') +const assert = require("assert"); +const os = require("os"); +const path = require("path"); +const { Readable } = require("stream"); const { - createCanvas, - createImageData, - loadImage, - parseFont, - registerFont, - Canvas, - deregisterAllFonts -} = require('../') + createCanvas, + createImageData, + loadImage, + parseFont, + registerFont, + Canvas, + deregisterAllFonts, +} = require("../"); function assertApprox(actual, expected, tol) { - assert(Math.abs(expected - actual) <= tol, - "Expected " + actual + " to be " + expected + " +/- " + tol); + assert( + Math.abs(expected - actual) <= tol, + "Expected " + actual + " to be " + expected + " +/- " + tol + ); } -describe('Canvas', function () { - // Run with --expose-gc and uncomment this line to help find memory problems: - // afterEach(gc); - - it('Prototype and ctor are well-shaped, don\'t hit asserts on accessors (GH-803)', function () { - const c = new Canvas(10, 10) - assert.throws(function () { Canvas.prototype.width }, /incompatible receiver/) - assert(!c.hasOwnProperty('width')) - assert('width' in c) - assert('width' in Canvas.prototype) - }) - - it('.parseFont()', function () { - const tests = [ - '20px Arial', - { size: 20, unit: 'px', family: 'Arial' }, - '20pt Arial', - { size: 26.666666666666668, unit: 'pt', family: 'Arial' }, - '20.5pt Arial', - { size: 27.333333333333332, unit: 'pt', family: 'Arial' }, - '20% Arial', - { size: 20, unit: '%', family: 'Arial' }, // TODO I think this is a bad assertion - ZB 23-Jul-2017 - '20mm Arial', - { size: 75.59055118110237, unit: 'mm', family: 'Arial' }, - '20px serif', - { size: 20, unit: 'px', family: 'serif' }, - '20px sans-serif', - { size: 20, unit: 'px', family: 'sans-serif' }, - '20px monospace', - { size: 20, unit: 'px', family: 'monospace' }, - '50px Arial, sans-serif', - { size: 50, unit: 'px', family: 'Arial,sans-serif' }, - 'bold italic 50px Arial, sans-serif', - { style: 'italic', weight: 'bold', size: 50, unit: 'px', family: 'Arial,sans-serif' }, - '50px Helvetica , Arial, sans-serif', - { size: 50, unit: 'px', family: 'Helvetica,Arial,sans-serif' }, - '50px "Helvetica Neue", sans-serif', - { size: 50, unit: 'px', family: 'Helvetica Neue,sans-serif' }, - '50px "Helvetica Neue", "foo bar baz" , sans-serif', - { size: 50, unit: 'px', family: 'Helvetica Neue,foo bar baz,sans-serif' }, - "50px 'Helvetica Neue'", - { size: 50, unit: 'px', family: 'Helvetica Neue' }, - 'italic 20px Arial', - { size: 20, unit: 'px', style: 'italic', family: 'Arial' }, - 'oblique 20px Arial', - { size: 20, unit: 'px', style: 'oblique', family: 'Arial' }, - 'normal 20px Arial', - { size: 20, unit: 'px', style: 'normal', family: 'Arial' }, - '300 20px Arial', - { size: 20, unit: 'px', weight: '300', family: 'Arial' }, - '800 20px Arial', - { size: 20, unit: 'px', weight: '800', family: 'Arial' }, - 'bolder 20px Arial', - { size: 20, unit: 'px', weight: 'bolder', family: 'Arial' }, - 'lighter 20px Arial', - { size: 20, unit: 'px', weight: 'lighter', family: 'Arial' }, - 'normal normal normal 16px Impact', - { size: 16, unit: 'px', weight: 'normal', family: 'Impact', style: 'normal', variant: 'normal' }, - 'italic small-caps bolder 16px cursive', - { size: 16, unit: 'px', style: 'italic', variant: 'small-caps', weight: 'bolder', family: 'cursive' }, - '20px "new century schoolbook", serif', - { size: 20, unit: 'px', family: 'new century schoolbook,serif' }, - '20px "Arial bold 300"', // synthetic case with weight keyword inside family - { size: 20, unit: 'px', family: 'Arial bold 300', variant: 'normal' } - ] - - for (let i = 0, len = tests.length; i < len; ++i) { - const str = tests[i++] - const expected = tests[i] - const actual = parseFont(str) - - if (!expected.style) expected.style = 'normal' - if (!expected.weight) expected.weight = 'normal' - if (!expected.stretch) expected.stretch = 'normal' - if (!expected.variant) expected.variant = 'normal' - - assert.deepEqual(actual, expected, 'Failed to parse: ' + str) - } - - assert.strictEqual(parseFont('Helvetica, sans'), undefined) - }) - - it('registerFont', function () { - // Minimal test to make sure nothing is thrown - registerFont('./examples/pfennigFont/Pfennig.ttf', { family: 'Pfennig' }) - registerFont('./examples/pfennigFont/PfennigBold.ttf', { family: 'Pfennig', weight: 'bold' }) - - // Test to multi byte file path support - registerFont('./examples/pfennigFont/pfennigMultiByte🚀.ttf', { family: 'Pfennig' }) - - deregisterAllFonts() - }); - - it('color serialization', function () { - const canvas = createCanvas(200, 200) - const ctx = canvas.getContext('2d'); - - ['fillStyle', 'strokeStyle', 'shadowColor'].forEach(function (prop) { - ctx[prop] = '#FFFFFF' - assert.equal('#ffffff', ctx[prop], prop + ' #FFFFFF -> #ffffff, got ' + ctx[prop]) - - ctx[prop] = '#FFF' - assert.equal('#ffffff', ctx[prop], prop + ' #FFF -> #ffffff, got ' + ctx[prop]) - - ctx[prop] = 'rgba(128, 200, 128, 1)' - assert.equal('#80c880', ctx[prop], prop + ' rgba(128, 200, 128, 1) -> #80c880, got ' + ctx[prop]) - - ctx[prop] = 'rgba(128,80,0,0.5)' - assert.equal('rgba(128, 80, 0, 0.50)', ctx[prop], prop + ' rgba(128,80,0,0.5) -> rgba(128, 80, 0, 0.5), got ' + ctx[prop]) - - ctx[prop] = 'rgba(128,80,0,0.75)' - assert.equal('rgba(128, 80, 0, 0.75)', ctx[prop], prop + ' rgba(128,80,0,0.75) -> rgba(128, 80, 0, 0.75), got ' + ctx[prop]) - - if (prop === 'shadowColor') return - - const grad = ctx.createLinearGradient(0, 0, 0, 150) - ctx[prop] = grad - assert.strictEqual(grad, ctx[prop], prop + ' pattern getter failed') - }) - }) - - it('color parser', function () { - const canvas = createCanvas(200, 200) - const ctx = canvas.getContext('2d') - - ctx.fillStyle = '#ffccaa' - assert.equal('#ffccaa', ctx.fillStyle) +describe("Canvas", function () { + // Run with --expose-gc and uncomment this line to help find memory problems: + // afterEach(gc); + + it("Prototype and ctor are well-shaped, don't hit asserts on accessors (GH-803)", function () { + const c = new Canvas(10, 10); + assert.throws(function () { + Canvas.prototype.width; + }, /invalid argument/i); + assert(!c.hasOwnProperty("width")); + assert("width" in c); + assert("width" in Canvas.prototype); + }); + + it(".parseFont()", function () { + const tests = [ + "20px Arial", + { size: 20, unit: "px", family: "Arial" }, + "20pt Arial", + { size: 26.666666666666668, unit: "pt", family: "Arial" }, + "20.5pt Arial", + { size: 27.333333333333332, unit: "pt", family: "Arial" }, + "20% Arial", + { size: 20, unit: "%", family: "Arial" }, // TODO I think this is a bad assertion - ZB 23-Jul-2017 + "20mm Arial", + { size: 75.59055118110237, unit: "mm", family: "Arial" }, + "20px serif", + { size: 20, unit: "px", family: "serif" }, + "20px sans-serif", + { size: 20, unit: "px", family: "sans-serif" }, + "20px monospace", + { size: 20, unit: "px", family: "monospace" }, + "50px Arial, sans-serif", + { size: 50, unit: "px", family: "Arial,sans-serif" }, + "bold italic 50px Arial, sans-serif", + { + style: "italic", + weight: "bold", + size: 50, + unit: "px", + family: "Arial,sans-serif", + }, + "50px Helvetica , Arial, sans-serif", + { size: 50, unit: "px", family: "Helvetica,Arial,sans-serif" }, + '50px "Helvetica Neue", sans-serif', + { size: 50, unit: "px", family: "Helvetica Neue,sans-serif" }, + '50px "Helvetica Neue", "foo bar baz" , sans-serif', + { + size: 50, + unit: "px", + family: "Helvetica Neue,foo bar baz,sans-serif", + }, + "50px 'Helvetica Neue'", + { size: 50, unit: "px", family: "Helvetica Neue" }, + "italic 20px Arial", + { size: 20, unit: "px", style: "italic", family: "Arial" }, + "oblique 20px Arial", + { size: 20, unit: "px", style: "oblique", family: "Arial" }, + "normal 20px Arial", + { size: 20, unit: "px", style: "normal", family: "Arial" }, + "300 20px Arial", + { size: 20, unit: "px", weight: "300", family: "Arial" }, + "800 20px Arial", + { size: 20, unit: "px", weight: "800", family: "Arial" }, + "bolder 20px Arial", + { size: 20, unit: "px", weight: "bolder", family: "Arial" }, + "lighter 20px Arial", + { size: 20, unit: "px", weight: "lighter", family: "Arial" }, + "normal normal normal 16px Impact", + { + size: 16, + unit: "px", + weight: "normal", + family: "Impact", + style: "normal", + variant: "normal", + }, + "italic small-caps bolder 16px cursive", + { + size: 16, + unit: "px", + style: "italic", + variant: "small-caps", + weight: "bolder", + family: "cursive", + }, + '20px "new century schoolbook", serif', + { size: 20, unit: "px", family: "new century schoolbook,serif" }, + '20px "Arial bold 300"', // synthetic case with weight keyword inside family + { + size: 20, + unit: "px", + family: "Arial bold 300", + variant: "normal", + }, + ]; + + for (let i = 0, len = tests.length; i < len; ++i) { + const str = tests[i++]; + const expected = tests[i]; + const actual = parseFont(str); + + if (!expected.style) expected.style = "normal"; + if (!expected.weight) expected.weight = "normal"; + if (!expected.stretch) expected.stretch = "normal"; + if (!expected.variant) expected.variant = "normal"; + + assert.deepEqual(actual, expected, "Failed to parse: " + str); + } + + assert.strictEqual(parseFont("Helvetica, sans"), undefined); + }); + + it("registerFont", function () { + // Minimal test to make sure nothing is thrown + registerFont("./examples/pfennigFont/Pfennig.ttf", { + family: "Pfennig", + }); + registerFont("./examples/pfennigFont/PfennigBold.ttf", { + family: "Pfennig", + weight: "bold", + }); + + // Test to multi byte file path support + registerFont("./examples/pfennigFont/pfennigMultiByte🚀.ttf", { + family: "Pfennig", + }); + + deregisterAllFonts(); + }); + + it("color serialization", function () { + const canvas = createCanvas(200, 200); + const ctx = canvas.getContext("2d"); + + ["fillStyle", "strokeStyle", "shadowColor"].forEach(function (prop) { + ctx[prop] = "#FFFFFF"; + assert.equal( + "#ffffff", + ctx[prop], + prop + " #FFFFFF -> #ffffff, got " + ctx[prop] + ); + + ctx[prop] = "#FFF"; + assert.equal( + "#ffffff", + ctx[prop], + prop + " #FFF -> #ffffff, got " + ctx[prop] + ); + + ctx[prop] = "rgba(128, 200, 128, 1)"; + assert.equal( + "#80c880", + ctx[prop], + prop + " rgba(128, 200, 128, 1) -> #80c880, got " + ctx[prop] + ); + + ctx[prop] = "rgba(128,80,0,0.5)"; + assert.equal( + "rgba(128, 80, 0, 0.50)", + ctx[prop], + prop + + " rgba(128,80,0,0.5) -> rgba(128, 80, 0, 0.5), got " + + ctx[prop] + ); + + ctx[prop] = "rgba(128,80,0,0.75)"; + assert.equal( + "rgba(128, 80, 0, 0.75)", + ctx[prop], + prop + + " rgba(128,80,0,0.75) -> rgba(128, 80, 0, 0.75), got " + + ctx[prop] + ); + + if (prop === "shadowColor") return; + + const grad = ctx.createLinearGradient(0, 0, 0, 150); + ctx[prop] = grad; + assert.strictEqual( + grad, + ctx[prop], + prop + " pattern getter failed" + ); + }); + }); + + it("color parser", function () { + const canvas = createCanvas(200, 200); + const ctx = canvas.getContext("2d"); - ctx.fillStyle = '#FFCCAA' - assert.equal('#ffccaa', ctx.fillStyle) + ctx.fillStyle = "#ffccaa"; + assert.equal("#ffccaa", ctx.fillStyle); - ctx.fillStyle = '#FCA' - assert.equal('#ffccaa', ctx.fillStyle) + ctx.fillStyle = "#FFCCAA"; + assert.equal("#ffccaa", ctx.fillStyle); - ctx.fillStyle = '#fff' - ctx.fillStyle = '#FGG' - assert.equal('#ff0000', ctx.fillStyle) + ctx.fillStyle = "#FCA"; + assert.equal("#ffccaa", ctx.fillStyle); - ctx.fillStyle = '#fff' - ctx.fillStyle = 'afasdfasdf' - assert.equal('#ffffff', ctx.fillStyle) + ctx.fillStyle = "#fff"; + ctx.fillStyle = "#FGG"; + assert.equal("#ff0000", ctx.fillStyle); - // #rgba and #rrggbbaa - ctx.fillStyle = '#ffccaa80' - assert.equal('rgba(255, 204, 170, 0.50)', ctx.fillStyle) + ctx.fillStyle = "#fff"; + ctx.fillStyle = "afasdfasdf"; + assert.equal("#ffffff", ctx.fillStyle); - ctx.fillStyle = '#acf8' - assert.equal('rgba(170, 204, 255, 0.53)', ctx.fillStyle) + // #rgba and #rrggbbaa + ctx.fillStyle = "#ffccaa80"; + assert.equal("rgba(255, 204, 170, 0.50)", ctx.fillStyle); - ctx.fillStyle = '#BEAD' - assert.equal('rgba(187, 238, 170, 0.87)', ctx.fillStyle) + ctx.fillStyle = "#acf8"; + assert.equal("rgba(170, 204, 255, 0.53)", ctx.fillStyle); - ctx.fillStyle = 'rgb(255,255,255)' - assert.equal('#ffffff', ctx.fillStyle) + ctx.fillStyle = "#BEAD"; + assert.equal("rgba(187, 238, 170, 0.87)", ctx.fillStyle); - ctx.fillStyle = 'rgb(0,0,0)' - assert.equal('#000000', ctx.fillStyle) + ctx.fillStyle = "rgb(255,255,255)"; + assert.equal("#ffffff", ctx.fillStyle); - ctx.fillStyle = 'rgb( 0 , 0 , 0)' - assert.equal('#000000', ctx.fillStyle) + ctx.fillStyle = "rgb(0,0,0)"; + assert.equal("#000000", ctx.fillStyle); - ctx.fillStyle = 'rgba( 0 , 0 , 0, 1)' - assert.equal('#000000', ctx.fillStyle) + ctx.fillStyle = "rgb( 0 , 0 , 0)"; + assert.equal("#000000", ctx.fillStyle); - ctx.fillStyle = 'rgba( 255, 200, 90, 0.5)' - assert.equal('rgba(255, 200, 90, 0.50)', ctx.fillStyle) + ctx.fillStyle = "rgba( 0 , 0 , 0, 1)"; + assert.equal("#000000", ctx.fillStyle); - ctx.fillStyle = 'rgba( 255, 200, 90, 0.75)' - assert.equal('rgba(255, 200, 90, 0.75)', ctx.fillStyle) + ctx.fillStyle = "rgba( 255, 200, 90, 0.5)"; + assert.equal("rgba(255, 200, 90, 0.50)", ctx.fillStyle); - ctx.fillStyle = 'rgba( 255, 200, 90, 0.7555)' - assert.equal('rgba(255, 200, 90, 0.75)', ctx.fillStyle) + ctx.fillStyle = "rgba( 255, 200, 90, 0.75)"; + assert.equal("rgba(255, 200, 90, 0.75)", ctx.fillStyle); + + ctx.fillStyle = "rgba( 255, 200, 90, 0.7555)"; + assert.equal("rgba(255, 200, 90, 0.75)", ctx.fillStyle); + + ctx.fillStyle = "rgba( 255, 200, 90, .7555)"; + assert.equal("rgba(255, 200, 90, 0.75)", ctx.fillStyle); + + ctx.fillStyle = "rgb(0, 0, 9000)"; + assert.equal("#0000ff", ctx.fillStyle); + + ctx.fillStyle = "rgba(0, 0, 0, 42.42)"; + assert.equal("#000000", ctx.fillStyle); - ctx.fillStyle = 'rgba( 255, 200, 90, .7555)' - assert.equal('rgba(255, 200, 90, 0.75)', ctx.fillStyle) + ctx.fillStyle = "rgba(255, 250, 255)"; + assert.equal("#fffaff", ctx.fillStyle); + + ctx.fillStyle = "rgba(124, 58, 26, 0)"; + assert.equal("rgba(124, 58, 26, 0.00)", ctx.fillStyle); - ctx.fillStyle = 'rgb(0, 0, 9000)' - assert.equal('#0000ff', ctx.fillStyle) + // hsl / hsla tests - ctx.fillStyle = 'rgba(0, 0, 0, 42.42)' - assert.equal('#000000', ctx.fillStyle) + ctx.fillStyle = "hsl(0, 0%, 0%)"; + assert.equal("#000000", ctx.fillStyle); - ctx.fillStyle = 'rgba(255, 250, 255)'; - assert.equal('#fffaff', ctx.fillStyle); + ctx.fillStyle = "hsl(3600, -10%, -10%)"; + assert.equal("#000000", ctx.fillStyle); - ctx.fillStyle = 'rgba(124, 58, 26, 0)'; - assert.equal('rgba(124, 58, 26, 0.00)', ctx.fillStyle); + ctx.fillStyle = "hsl(10, 100%, 42%)"; + assert.equal("#d62400", ctx.fillStyle); - // hsl / hsla tests + ctx.fillStyle = "hsl(370, 120%, 42%)"; + assert.equal("#d62400", ctx.fillStyle); - ctx.fillStyle = 'hsl(0, 0%, 0%)' - assert.equal('#000000', ctx.fillStyle) + ctx.fillStyle = "hsl(0, 100%, 100%)"; + assert.equal("#ffffff", ctx.fillStyle); - ctx.fillStyle = 'hsl(3600, -10%, -10%)' - assert.equal('#000000', ctx.fillStyle) + ctx.fillStyle = "hsl(0, 150%, 150%)"; + assert.equal("#ffffff", ctx.fillStyle); - ctx.fillStyle = 'hsl(10, 100%, 42%)' - assert.equal('#d62400', ctx.fillStyle) + ctx.fillStyle = "hsl(237, 76%, 25%)"; + assert.equal("#0f1470", ctx.fillStyle); - ctx.fillStyle = 'hsl(370, 120%, 42%)' - assert.equal('#d62400', ctx.fillStyle) + ctx.fillStyle = "hsl(240, 73%, 25%)"; + assert.equal("#11116e", ctx.fillStyle); - ctx.fillStyle = 'hsl(0, 100%, 100%)' - assert.equal('#ffffff', ctx.fillStyle) + ctx.fillStyle = "hsl(262, 32%, 42%)"; + assert.equal("#62498d", ctx.fillStyle); - ctx.fillStyle = 'hsl(0, 150%, 150%)' - assert.equal('#ffffff', ctx.fillStyle) + ctx.fillStyle = "hsla(0, 0%, 0%, 1)"; + assert.equal("#000000", ctx.fillStyle); - ctx.fillStyle = 'hsl(237, 76%, 25%)' - assert.equal('#0f1470', ctx.fillStyle) + ctx.fillStyle = "hsla(0, 100%, 100%, 1)"; + assert.equal("#ffffff", ctx.fillStyle); - ctx.fillStyle = 'hsl(240, 73%, 25%)' - assert.equal('#11116e', ctx.fillStyle) + ctx.fillStyle = "hsla(120, 25%, 75%, 0.5)"; + assert.equal("rgba(175, 207, 175, 0.50)", ctx.fillStyle); - ctx.fillStyle = 'hsl(262, 32%, 42%)' - assert.equal('#62498d', ctx.fillStyle) + ctx.fillStyle = "hsla(240, 75%, 25%, 0.75)"; + assert.equal("rgba(16, 16, 112, 0.75)", ctx.fillStyle); - ctx.fillStyle = 'hsla(0, 0%, 0%, 1)' - assert.equal('#000000', ctx.fillStyle) + ctx.fillStyle = "hsla(172.0, 33.00000e0%, 42%, 1)"; + assert.equal("#488e85", ctx.fillStyle); - ctx.fillStyle = 'hsla(0, 100%, 100%, 1)' - assert.equal('#ffffff', ctx.fillStyle) + ctx.fillStyle = "hsl(124.5, 76.1%, 47.6%)"; + assert.equal("#1dd62b", ctx.fillStyle); - ctx.fillStyle = 'hsla(120, 25%, 75%, 0.5)' - assert.equal('rgba(175, 207, 175, 0.50)', ctx.fillStyle) + ctx.fillStyle = "hsl(1.24e2, 760e-1%, 4.7e1%)"; + assert.equal("#1dd329", ctx.fillStyle); - ctx.fillStyle = 'hsla(240, 75%, 25%, 0.75)' - assert.equal('rgba(16, 16, 112, 0.75)', ctx.fillStyle) + // case-insensitive (#235) + ctx.fillStyle = "sILveR"; + assert.equal(ctx.fillStyle, "#c0c0c0"); + }); - ctx.fillStyle = 'hsla(172.0, 33.00000e0%, 42%, 1)' - assert.equal('#488e85', ctx.fillStyle) + it("Canvas#type", function () { + let canvas = createCanvas(10, 10); + assert.equal(canvas.type, "image"); + canvas = createCanvas(10, 10, "pdf"); + assert.equal(canvas.type, "pdf"); + canvas = createCanvas(10, 10, "svg"); + assert.equal(canvas.type, "svg"); + canvas = createCanvas(10, 10, "hey"); + assert.equal(canvas.type, "image"); + }); - ctx.fillStyle = 'hsl(124.5, 76.1%, 47.6%)' - assert.equal('#1dd62b', ctx.fillStyle) + it('Canvas#getContext("2d")', function () { + const canvas = createCanvas(200, 300); + const ctx = canvas.getContext("2d"); + assert.ok(typeof ctx === "object"); + assert.equal(canvas, ctx.canvas, "context.canvas is not canvas"); + assert.equal(ctx, canvas.context, "canvas.context is not context"); - ctx.fillStyle = 'hsl(1.24e2, 760e-1%, 4.7e1%)' - assert.equal('#1dd329', ctx.fillStyle) + const MAX_IMAGE_SIZE = 32767; - // case-insensitive (#235) - ctx.fillStyle = 'sILveR' - assert.equal(ctx.fillStyle, '#c0c0c0') - }) + [ + [0, 0, 1], + [1, 0, 1], + [MAX_IMAGE_SIZE, 0, 1], + [MAX_IMAGE_SIZE + 1, 0, 3], + [MAX_IMAGE_SIZE, MAX_IMAGE_SIZE, null], + [MAX_IMAGE_SIZE + 1, MAX_IMAGE_SIZE, 3], + [MAX_IMAGE_SIZE + 1, MAX_IMAGE_SIZE + 1, 3], + [Math.pow(2, 30), 0, 3], + [Math.pow(2, 30), 1, 3], + [Math.pow(2, 32), 0, 1], + [Math.pow(2, 32), 1, 1], + ].forEach((params) => { + const width = params[0]; + const height = params[1]; + const errorLevel = params[2]; + + let level = 3; + + try { + const canvas = createCanvas(width, height); + level--; + + const ctx = canvas.getContext("2d"); + level--; + + ctx.getImageData(0, 0, 1, 1); + level--; + } catch (err) {} + + if (errorLevel !== null) { + assert.strictEqual(level, errorLevel); + } + }); + }); + + it('Canvas#getContext("2d", {pixelFormat: string})', function () { + let canvas, context; + + // default: + canvas = createCanvas(10, 10); + context = canvas.getContext("2d", { pixelFormat: "RGBA32" }); + assert.equal(context.pixelFormat, "RGBA32"); + + canvas = createCanvas(10, 10); + context = canvas.getContext("2d", { pixelFormat: "RGBA32" }); + assert.equal(context.pixelFormat, "RGBA32"); + + canvas = createCanvas(10, 10); + context = canvas.getContext("2d", { pixelFormat: "RGB24" }); + assert.equal(context.pixelFormat, "RGB24"); + + canvas = createCanvas(10, 10); + context = canvas.getContext("2d", { pixelFormat: "A8" }); + assert.equal(context.pixelFormat, "A8"); + + canvas = createCanvas(10, 10); + context = canvas.getContext("2d", { pixelFormat: "A1" }); + assert.equal(context.pixelFormat, "A1"); + + canvas = createCanvas(10, 10); + context = canvas.getContext("2d", { pixelFormat: "RGB16_565" }); + assert.equal(context.pixelFormat, "RGB16_565"); + + // Not tested: RGB30 + }); + + it('Canvas#getContext("2d", {alpha: boolean})', function () { + let canvas, context; + + canvas = createCanvas(10, 10); + context = canvas.getContext("2d", { alpha: true }); + assert.equal(context.pixelFormat, "RGBA32"); + + canvas = createCanvas(10, 10); + context = canvas.getContext("2d", { alpha: false }); + assert.equal(context.pixelFormat, "RGB24"); + + // alpha takes priority: + canvas = createCanvas(10, 10); + context = canvas.getContext("2d", { + pixelFormat: "RGBA32", + alpha: false, + }); + assert.equal(context.pixelFormat, "RGB24"); + }); + + it("Canvas#{width,height}=", function () { + const canvas = createCanvas(100, 200); + const context = canvas.getContext("2d"); + + assert.equal(canvas.width, 100); + assert.equal(canvas.height, 200); + + context.globalAlpha = 0.5; + context.fillStyle = "#0f0"; + context.strokeStyle = "#0f0"; + context.font = "20px arial"; + context.fillRect(0, 0, 1, 1); + + canvas.width = 50; + canvas.height = 70; + assert.equal(canvas.width, 50); + assert.equal(canvas.height, 70); + + context.font = "20px arial"; + assert.equal(context.font, "20px arial"); + canvas.width |= 0; + + assert.equal(context.lineWidth, 1); // #1095 + assert.equal(context.globalAlpha, 1); // #1292 + assert.equal(context.fillStyle, "#000000"); + assert.equal(context.strokeStyle, "#000000"); + assert.equal(context.font, "10px sans-serif"); + assert.strictEqual( + context.getImageData(0, 0, 1, 1).data.join(","), + "0,0,0,0" + ); + }); + + it("Canvas#width= (resurfacing) doesn't crash when fillStyle is a pattern (#1357)", function (done) { + const canvas = createCanvas(100, 200); + const ctx = canvas.getContext("2d"); + + loadImage(path.join(__dirname, "/fixtures/checkers.png")).then( + (img) => { + const pattern = ctx.createPattern(img, "repeat"); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 300, 300); + canvas.width = 200; // cause canvas to resurface + done(); + } + ); + }); + + it("SVG Canvas#width changes don't crash (#1380)", function () { + const myCanvas = createCanvas(100, 100, "svg"); + myCanvas.width = 120; + }); + + it("Canvas#stride", function () { + const canvas = createCanvas(24, 10); + assert.ok(canvas.stride >= 24, "canvas.stride is too short"); + assert.ok(canvas.stride < 1024, "canvas.stride seems too long"); + + // TODO test stride on other formats + }); + + it('Canvas#getContext("invalid")', function () { + assert.equal(null, createCanvas(200, 300).getContext("invalid")); + }); + + it("Context2d#patternQuality", function () { + const canvas = createCanvas(200, 200); + const ctx = canvas.getContext("2d"); + + assert.equal("good", ctx.patternQuality); + ctx.patternQuality = "best"; + assert.equal("best", ctx.patternQuality); + ctx.patternQuality = "invalid"; + assert.equal("best", ctx.patternQuality); + }); + + it("Context2d#imageSmoothingEnabled", function () { + const canvas = createCanvas(200, 200); + const ctx = canvas.getContext("2d"); + + assert.equal(true, ctx.imageSmoothingEnabled); + ctx.imageSmoothingEnabled = false; + assert.equal("good", ctx.patternQuality); + assert.equal(false, ctx.imageSmoothingEnabled); + assert.equal("good", ctx.patternQuality); + }); + + it("Context2d#font=", function () { + const canvas = createCanvas(200, 200); + const ctx = canvas.getContext("2d"); + + assert.equal(ctx.font, "10px sans-serif"); + ctx.font = "15px Arial, sans-serif"; + assert.equal(ctx.font, "15px Arial, sans-serif"); + + ctx.font = "Helvetica, sans"; // invalid + assert.equal(ctx.font, "15px Arial, sans-serif"); + }); + + it("Context2d#lineWidth=", function () { + const canvas = createCanvas(200, 200); + const ctx = canvas.getContext("2d"); + + ctx.lineWidth = 10.0; + assert.equal(10, ctx.lineWidth); + ctx.lineWidth = Infinity; + assert.equal(10, ctx.lineWidth); + ctx.lineWidth = -Infinity; + assert.equal(10, ctx.lineWidth); + ctx.lineWidth = -5; + assert.equal(10, ctx.lineWidth); + ctx.lineWidth = 0; + assert.equal(10, ctx.lineWidth); + }); + + it("Context2d#antiAlias=", function () { + const canvas = createCanvas(200, 200); + const ctx = canvas.getContext("2d"); + + assert.equal("default", ctx.antialias); + ctx.antialias = "none"; + assert.equal("none", ctx.antialias); + ctx.antialias = "gray"; + assert.equal("gray", ctx.antialias); + ctx.antialias = "subpixel"; + assert.equal("subpixel", ctx.antialias); + ctx.antialias = "invalid"; + assert.equal("subpixel", ctx.antialias); + ctx.antialias = 1; + assert.equal("subpixel", ctx.antialias); + }); + + it("Context2d#lineCap=", function () { + const canvas = createCanvas(200, 200); + const ctx = canvas.getContext("2d"); + + assert.equal("butt", ctx.lineCap); + ctx.lineCap = "round"; + assert.equal("round", ctx.lineCap); + }); + + it("Context2d#lineJoin=", function () { + const canvas = createCanvas(200, 200); + const ctx = canvas.getContext("2d"); + + assert.equal("miter", ctx.lineJoin); + ctx.lineJoin = "round"; + assert.equal("round", ctx.lineJoin); + }); + + it("Context2d#globalAlpha=", function () { + const canvas = createCanvas(200, 200); + const ctx = canvas.getContext("2d"); + + assert.equal(1, ctx.globalAlpha); + ctx.globalAlpha = 0.5; + assert.equal(0.5, ctx.globalAlpha); + }); + + it("Context2d#isPointInPath()", function () { + const canvas = createCanvas(200, 200); + const ctx = canvas.getContext("2d"); + + ctx.rect(5, 5, 100, 100); + ctx.rect(50, 100, 10, 10); + assert.ok(ctx.isPointInPath(10, 10)); + assert.ok(ctx.isPointInPath(10, 50)); + assert.ok(ctx.isPointInPath(100, 100)); + assert.ok(ctx.isPointInPath(105, 105)); + assert.ok(!ctx.isPointInPath(106, 105)); + assert.ok(!ctx.isPointInPath(150, 150)); + + assert.ok(ctx.isPointInPath(50, 110)); + assert.ok(ctx.isPointInPath(60, 110)); + assert.ok(!ctx.isPointInPath(70, 110)); + assert.ok(!ctx.isPointInPath(50, 120)); + }); + + it("Context2d#textAlign", function () { + const canvas = createCanvas(200, 200); + const ctx = canvas.getContext("2d"); + + assert.equal("left", ctx.textAlign); // default TODO wrong default + ctx.textAlign = "start"; + assert.equal("start", ctx.textAlign); + ctx.textAlign = "center"; + assert.equal("center", ctx.textAlign); + ctx.textAlign = "right"; + assert.equal("right", ctx.textAlign); + ctx.textAlign = "end"; + assert.equal("end", ctx.textAlign); + ctx.textAlign = "fail"; + assert.equal("end", ctx.textAlign); + }); + + describe("#toBuffer", function () { + it("Canvas#toBuffer()", function () { + const buf = createCanvas(200, 200).toBuffer(); + assert.equal("PNG", buf.slice(1, 4).toString()); + }); + + it('Canvas#toBuffer("image/png")', function () { + const buf = createCanvas(200, 200).toBuffer("image/png"); + assert.equal("PNG", buf.slice(1, 4).toString()); + }); + + it('Canvas#toBuffer("image/png", {resolution: 96})', function () { + const buf = createCanvas(200, 200).toBuffer("image/png", { + resolution: 96, + }); + // 3780 ppm ~= 96 ppi + let foundpHYs = false; + for (let i = 0; i < buf.length - 12; i++) { + if ( + buf[i] === 0x70 && + buf[i + 1] === 0x48 && + buf[i + 2] === 0x59 && + buf[i + 3] === 0x73 + ) { + // pHYs + foundpHYs = true; + assert.equal(buf[i + 4], 0); + assert.equal(buf[i + 5], 0); + assert.equal(buf[i + 6], 0x0e); + assert.equal(buf[i + 7], 0xc4); // x + assert.equal(buf[i + 8], 0); + assert.equal(buf[i + 9], 0); + assert.equal(buf[i + 10], 0x0e); + assert.equal(buf[i + 11], 0xc4); // y + } + } + assert.ok(foundpHYs, "missing pHYs header"); + }); + + it('Canvas#toBuffer("image/png", {compressionLevel: 5})', function () { + const buf = createCanvas(200, 200).toBuffer("image/png", { + compressionLevel: 5, + }); + assert.equal("PNG", buf.slice(1, 4).toString()); + }); + + it('Canvas#toBuffer("image/jpeg")', function () { + const buf = createCanvas(200, 200).toBuffer("image/jpeg"); + assert.equal(buf[0], 0xff); + assert.equal(buf[1], 0xd8); + assert.equal(buf[buf.byteLength - 2], 0xff); + assert.equal(buf[buf.byteLength - 1], 0xd9); + }); + + it('Canvas#toBuffer("image/jpeg", {quality: 0.95})', function () { + const buf = createCanvas(200, 200).toBuffer("image/jpeg", { + quality: 0.95, + }); + assert.equal(buf[0], 0xff); + assert.equal(buf[1], 0xd8); + assert.equal(buf[buf.byteLength - 2], 0xff); + assert.equal(buf[buf.byteLength - 1], 0xd9); + }); + + it("Canvas#toBuffer(callback)", function (done) { + createCanvas(200, 200).toBuffer(function (err, buf) { + assert.ok(!err); + assert.equal("PNG", buf.slice(1, 4).toString()); + done(); + }); + }); + + it('Canvas#toBuffer(callback, "image/jpeg")', function (done) { + createCanvas(200, 200).toBuffer(function (err, buf) { + assert.ok(!err); + assert.equal(buf[0], 0xff); + assert.equal(buf[1], 0xd8); + assert.equal(buf[buf.byteLength - 2], 0xff); + assert.equal(buf[buf.byteLength - 1], 0xd9); + done(); + }, "image/jpeg"); + }); + + it('Canvas#toBuffer(callback, "image/jpeg", {quality: 0.95})', function (done) { + createCanvas(200, 200).toBuffer( + function (err, buf) { + assert.ok(!err); + assert.equal(buf[0], 0xff); + assert.equal(buf[1], 0xd8); + assert.equal(buf[buf.byteLength - 2], 0xff); + assert.equal(buf[buf.byteLength - 1], 0xd9); + done(); + }, + "image/jpeg", + { quality: 0.95 } + ); + }); + + describe('#toBuffer("raw")', function () { + const canvas = createCanvas(11, 10); + const ctx = canvas.getContext("2d"); + + ctx.clearRect(0, 0, 11, 10); + + ctx.fillStyle = "rgba(200, 200, 200, 0.505)"; + ctx.fillRect(0, 0, 5, 5); + + ctx.fillStyle = "red"; + ctx.fillRect(5, 0, 5, 5); + + ctx.fillStyle = "#00ff00"; + ctx.fillRect(0, 5, 5, 5); + + ctx.fillStyle = "black"; + ctx.fillRect(5, 5, 4, 5); + + /** Output: + * *****RRRRR- + * *****RRRRR- + * *****RRRRR- + * *****RRRRR- + * *****RRRRR- + * GGGGGBBBB-- + * GGGGGBBBB-- + * GGGGGBBBB-- + * GGGGGBBBB-- + * GGGGGBBBB-- + */ + + const buf = canvas.toBuffer("raw"); + const stride = canvas.stride; + + const endianness = os.endianness(); + + function assertPixel(u32, x, y, message) { + const expected = "0x" + u32.toString(16); + + // Buffer doesn't have readUInt32(): it only has readUInt32LE() and + // readUInt32BE(). + const px = buf["readUInt32" + endianness](y * stride + x * 4); + const actual = "0x" + px.toString(16); + + assert.equal(actual, expected, message); + } + + it("should have the correct size", function () { + assert.equal(buf.length, stride * 10); + }); + + it("does not premultiply alpha", function () { + assertPixel(0x80646464, 0, 0, "first semitransparent pixel"); + assertPixel(0x80646464, 4, 4, "last semitransparent pixel"); + }); + + it("draws red", function () { + assertPixel(0xffff0000, 5, 0, "first red pixel"); + assertPixel(0xffff0000, 9, 4, "last red pixel"); + }); + + it("draws green", function () { + assertPixel(0xff00ff00, 0, 5, "first green pixel"); + assertPixel(0xff00ff00, 4, 9, "last green pixel"); + }); + + it("draws black", function () { + assertPixel(0xff000000, 5, 5, "first black pixel"); + assertPixel(0xff000000, 8, 9, "last black pixel"); + }); + + it("leaves undrawn pixels black, transparent", function () { + assertPixel(0x0, 9, 5, "first undrawn pixel"); + assertPixel(0x0, 9, 9, "last undrawn pixel"); + }); + + it("is immutable", function () { + ctx.fillStyle = "white"; + ctx.fillRect(0, 0, 10, 10); + canvas.toBuffer("raw"); // (side-effect: flushes canvas) + assertPixel(0xffff0000, 5, 0, "first red pixel"); + }); + }); + }); + + describe("#toDataURL()", function () { + const canvas = createCanvas(200, 200); + const ctx = canvas.getContext("2d"); + + ctx.fillRect(0, 0, 100, 100); + ctx.fillStyle = "red"; + ctx.fillRect(100, 0, 100, 100); + + it("toDataURL() works and defaults to PNG", function () { + assert.ok(canvas.toDataURL().startsWith("data:image/png;base64,")); + }); + + it("toDataURL(0.5) works and defaults to PNG", function () { + assert.ok( + canvas.toDataURL(0.5).startsWith("data:image/png;base64,") + ); + }); + + it("toDataURL(undefined) works and defaults to PNG", function () { + assert.ok( + canvas.toDataURL(undefined).startsWith("data:image/png;base64,") + ); + }); + + it('toDataURL("image/png") works', function () { + assert.ok( + canvas + .toDataURL("image/png") + .startsWith("data:image/png;base64,") + ); + }); + + it('toDataURL("image/png", 0.5) works', function () { + assert.ok( + canvas + .toDataURL("image/png") + .startsWith("data:image/png;base64,") + ); + }); + + it('toDataURL("iMaGe/PNg") works', function () { + assert.ok( + canvas + .toDataURL("iMaGe/PNg") + .startsWith("data:image/png;base64,") + ); + }); + + it('toDataURL("image/jpeg") works', function () { + assert.ok( + canvas + .toDataURL("image/jpeg") + .startsWith("data:image/jpeg;base64,") + ); + }); + + it("toDataURL(function (err, str) {...}) works and defaults to PNG", function (done) { + createCanvas(200, 200).toDataURL(function (err, str) { + assert.ifError(err); + assert.ok(str.indexOf("data:image/png;base64,") === 0); + done(); + }); + }); + + it("toDataURL(function (err, str) {...}) is async even with no canvas data", function (done) { + createCanvas().toDataURL(function (err, str) { + assert.ifError(err); + assert.ok(str === "data:,"); + done(); + }); + }); + + it("toDataURL(0.5, function (err, str) {...}) works and defaults to PNG", function (done) { + createCanvas(200, 200).toDataURL(0.5, function (err, str) { + assert.ifError(err); + assert.ok(str.indexOf("data:image/png;base64,") === 0); + done(); + }); + }); + + it("toDataURL(undefined, function (err, str) {...}) works and defaults to PNG", function (done) { + createCanvas(200, 200).toDataURL(undefined, function (err, str) { + assert.ifError(err); + assert.ok(str.indexOf("data:image/png;base64,") === 0); + done(); + }); + }); + + it('toDataURL("image/png", function (err, str) {...}) works', function (done) { + createCanvas(200, 200).toDataURL("image/png", function (err, str) { + assert.ifError(err); + assert.ok(str.indexOf("data:image/png;base64,") === 0); + done(); + }); + }); + + it('toDataURL("image/png", 0.5, function (err, str) {...}) works', function (done) { + createCanvas(200, 200).toDataURL( + "image/png", + 0.5, + function (err, str) { + assert.ifError(err); + assert.ok(str.indexOf("data:image/png;base64,") === 0); + done(); + } + ); + }); + + it('toDataURL("image/png", {}) works', function () { + assert.ok( + canvas + .toDataURL("image/png", {}) + .startsWith("data:image/png;base64,") + ); + }); + + it('toDataURL("image/jpeg", {}) works', function () { + assert.ok( + canvas + .toDataURL("image/jpeg", {}) + .startsWith("data:image/jpeg;base64,") + ); + }); + + it('toDataURL("image/jpeg", function (err, str) {...}) works', function (done) { + createCanvas(200, 200).toDataURL("image/jpeg", function (err, str) { + assert.ifError(err); + assert.ok(str.indexOf("data:image/jpeg;base64,") === 0); + done(); + }); + }); + + it('toDataURL("iMAge/JPEG", function (err, str) {...}) works', function (done) { + createCanvas(200, 200).toDataURL("iMAge/JPEG", function (err, str) { + assert.ifError(err); + assert.ok(str.indexOf("data:image/jpeg;base64,") === 0); + done(); + }); + }); + + it('toDataURL("image/jpeg", undefined, function (err, str) {...}) works', function (done) { + createCanvas(200, 200).toDataURL( + "image/jpeg", + undefined, + function (err, str) { + assert.ifError(err); + assert.ok(str.indexOf("data:image/jpeg;base64,") === 0); + done(); + } + ); + }); + + it('toDataURL("image/jpeg", 0.5, function (err, str) {...}) works', function (done) { + createCanvas(200, 200).toDataURL( + "image/jpeg", + 0.5, + function (err, str) { + assert.ifError(err); + assert.ok(str.indexOf("data:image/jpeg;base64,") === 0); + done(); + } + ); + }); + + it('toDataURL("image/jpeg", opts, function (err, str) {...}) works', function (done) { + createCanvas(200, 200).toDataURL( + "image/jpeg", + { quality: 100 }, + function (err, str) { + assert.ifError(err); + assert.ok(str.indexOf("data:image/jpeg;base64,") === 0); + done(); + } + ); + }); + }); + + describe("Context2d#createImageData(width, height)", function () { + it("works", function () { + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d"); + + const imageData = ctx.createImageData(2, 6); + assert.equal(2, imageData.width); + assert.equal(6, imageData.height); + assert.equal(2 * 6 * 4, imageData.data.length); + + assert.equal(0, imageData.data[0]); + assert.equal(0, imageData.data[1]); + assert.equal(0, imageData.data[2]); + assert.equal(0, imageData.data[3]); + }); + + it("works, A8 format", function () { + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d", { pixelFormat: "A8" }); + + const imageData = ctx.createImageData(2, 6); + assert.equal(2, imageData.width); + assert.equal(6, imageData.height); + assert.equal(2 * 6 * 1, imageData.data.length); + + assert.equal(0, imageData.data[0]); + assert.equal(0, imageData.data[1]); + assert.equal(0, imageData.data[2]); + assert.equal(0, imageData.data[3]); + }); + + it("works, A1 format", function () { + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d", { pixelFormat: "A1" }); + + const imageData = ctx.createImageData(2, 6); + assert.equal(2, imageData.width); + assert.equal(6, imageData.height); + assert.equal(Math.ceil((2 * 6) / 8), imageData.data.length); + + assert.equal(0, imageData.data[0]); + assert.equal(0, imageData.data[1]); + }); + + it("works, RGB24 format", function () { + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d", { pixelFormat: "RGB24" }); + + const imageData = ctx.createImageData(2, 6); + assert.equal(2, imageData.width); + assert.equal(6, imageData.height); + assert.equal(2 * 6 * 4, imageData.data.length); + + assert.equal(0, imageData.data[0]); + assert.equal(0, imageData.data[1]); + assert.equal(0, imageData.data[2]); + assert.equal(0, imageData.data[3]); + }); + + it("works, RGB16_565 format", function () { + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d", { pixelFormat: "RGB16_565" }); + + const imageData = ctx.createImageData(2, 6); + assert(imageData.data instanceof Uint16Array); + assert.equal(2, imageData.width); + assert.equal(6, imageData.height); + assert.equal(2 * 6, imageData.data.length); + + assert.equal(0, imageData.data[0]); + assert.equal(0, imageData.data[1]); + }); + }); + + describe("Context2d#measureText()", function () { + it("Context2d#measureText().width", function () { + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d"); + + assert.ok(ctx.measureText("foo").width); + assert.ok( + ctx.measureText("foo").width !== ctx.measureText("foobar").width + ); + assert.ok( + ctx.measureText("foo").width !== ctx.measureText(" foo").width + ); + }); + + it("works", function () { + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d"); + ctx.font = "20px Arial"; + + ctx.textBaseline = "alphabetic"; + let metrics = ctx.measureText("Alphabet"); + // Actual value depends on font library version. Have observed values + // between 0 and 0.769. + assertApprox(metrics.alphabeticBaseline, 0.5, 0.5); + // Positive = going up from the baseline + assert.ok(metrics.actualBoundingBoxAscent > 0); + // Positive = going down from the baseline + assertApprox(metrics.actualBoundingBoxDescent, 5, 2); + + ctx.textBaseline = "bottom"; + metrics = ctx.measureText("Alphabet"); + assert.strictEqual(ctx.textBaseline, "bottom"); + assertApprox(metrics.alphabeticBaseline, 5, 2); + assert.ok(metrics.actualBoundingBoxAscent > 0); + // On the baseline or slightly above + assert.ok(metrics.actualBoundingBoxDescent <= 0); + }); + + it("actualBoundingBox is correct for left, center and right alignment (#1909)", function () { + const canvas = createCanvas(0, 0); + const ctx = canvas.getContext("2d"); + + // positive actualBoundingBoxLeft indicates a distance going left from the + // given alignment point. + + // positive actualBoundingBoxRight indicates a distance going right from + // the given alignment point. + + ctx.textAlign = "left"; + const lm = ctx.measureText("aaaa"); + assertApprox(lm.actualBoundingBoxLeft, -1, 6); + assertApprox(lm.actualBoundingBoxRight, 21, 6); + + ctx.textAlign = "center"; + const cm = ctx.measureText("aaaa"); + assertApprox(cm.actualBoundingBoxLeft, 9, 6); + assertApprox(cm.actualBoundingBoxRight, 11, 6); + + ctx.textAlign = "right"; + const rm = ctx.measureText("aaaa"); + assertApprox(rm.actualBoundingBoxLeft, 19, 6); + assertApprox(rm.actualBoundingBoxRight, 1, 6); + }); + }); + + it("Context2d#fillText()", function () { + [ + [["A", 10, 10], true], + [["A", 10, 10, undefined], true], + [["A", 10, 10, NaN], false], + ].forEach(([args, shouldDraw]) => { + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d"); + + ctx.textBaseline = "middle"; + ctx.textAlign = "center"; + ctx.fillText(...args); + + assert.strictEqual( + ctx.getImageData(0, 0, 20, 20).data.some((a) => a), + shouldDraw + ); + }); + }); + + it("Context2d#currentTransform", function () { + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d"); + + ctx.scale(0.1, 0.3); + const mat1 = ctx.currentTransform; + assert.equal(mat1.a, 0.1); + assert.equal(mat1.b, 0); + assert.equal(mat1.c, 0); + assert.equal(mat1.d, 0.3); + assert.equal(mat1.e, 0); + assert.equal(mat1.f, 0); + + ctx.resetTransform(); + const mat2 = ctx.currentTransform; + assert.equal(mat2.a, 1); + assert.equal(mat2.d, 1); + + ctx.currentTransform = mat1; + const mat3 = ctx.currentTransform; + assert.equal(mat3.a, 0.1); + assert.equal(mat3.d, 0.3); + + assert.deepEqual(ctx.currentTransform, ctx.getTransform()); + + ctx.setTransform(ctx.getTransform()); + assert.deepEqual(mat3, ctx.getTransform()); + + ctx.setTransform(mat3.a, mat3.b, mat3.c, mat3.d, mat3.e, mat3.f); + assert.deepEqual(mat3, ctx.getTransform()); + }); + + it("Context2d#createImageData(ImageData)", function () { + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d"); + + const imageData = ctx.createImageData(ctx.createImageData(2, 6)); + assert.equal(2, imageData.width); + assert.equal(6, imageData.height); + assert.equal(2 * 6 * 4, imageData.data.length); + }); + + describe("Context2d#getImageData()", function () { + function createTestCanvas(useAlpha, attributes) { + const canvas = createCanvas(3, 6); + const ctx = canvas.getContext("2d", attributes); + + ctx.fillStyle = useAlpha ? "rgba(255,0,0,0.25)" : "#f00"; + ctx.fillRect(0, 0, 1, 6); + + ctx.fillStyle = useAlpha ? "rgba(0,255,0,0.5)" : "#0f0"; + ctx.fillRect(1, 0, 1, 6); + + ctx.fillStyle = useAlpha ? "rgba(0,0,255,0.75)" : "#00f"; + ctx.fillRect(2, 0, 1, 6); + + return ctx; + } - it('Canvas#type', function () { - let canvas = createCanvas(10, 10) - assert.equal(canvas.type, 'image') - canvas = createCanvas(10, 10, 'pdf') - assert.equal(canvas.type, 'pdf') - canvas = createCanvas(10, 10, 'svg') - assert.equal(canvas.type, 'svg') - canvas = createCanvas(10, 10, 'hey') - assert.equal(canvas.type, 'image') - }) + it("works, full width, RGBA32", function () { + const ctx = createTestCanvas(); + const imageData = ctx.getImageData(0, 0, 3, 6); + + assert.equal(3, imageData.width); + assert.equal(6, imageData.height); + assert.equal(3 * 6 * 4, imageData.data.length); + + assert.equal(255, imageData.data[0]); + assert.equal(0, imageData.data[1]); + assert.equal(0, imageData.data[2]); + assert.equal(255, imageData.data[3]); + + assert.equal(0, imageData.data[4]); + assert.equal(255, imageData.data[5]); + assert.equal(0, imageData.data[6]); + assert.equal(255, imageData.data[7]); + + assert.equal(0, imageData.data[8]); + assert.equal(0, imageData.data[9]); + assert.equal(255, imageData.data[10]); + assert.equal(255, imageData.data[11]); + }); + + it("works, full width, RGB24", function () { + const ctx = createTestCanvas(false, { pixelFormat: "RGB24" }); + const imageData = ctx.getImageData(0, 0, 3, 6); + assert.equal(3, imageData.width); + assert.equal(6, imageData.height); + assert.equal(3 * 6 * 4, imageData.data.length); + + assert.equal(255, imageData.data[0]); + assert.equal(0, imageData.data[1]); + assert.equal(0, imageData.data[2]); + assert.equal(255, imageData.data[3]); + + assert.equal(0, imageData.data[4]); + assert.equal(255, imageData.data[5]); + assert.equal(0, imageData.data[6]); + assert.equal(255, imageData.data[7]); + + assert.equal(0, imageData.data[8]); + assert.equal(0, imageData.data[9]); + assert.equal(255, imageData.data[10]); + assert.equal(255, imageData.data[11]); + }); + + it("works, full width, RGB16_565", function () { + const ctx = createTestCanvas(false, { pixelFormat: "RGB16_565" }); + const imageData = ctx.getImageData(0, 0, 3, 6); + assert.equal(3, imageData.width); + assert.equal(6, imageData.height); + assert.equal(3 * 6, imageData.data.length); + + assert.equal((255 & 0b11111) << 11, imageData.data[0]); + assert.equal((255 & 0b111111) << 5, imageData.data[1]); + assert.equal(255 & 0b11111, imageData.data[2]); + + assert.equal((255 & 0b11111) << 11, imageData.data[3]); + assert.equal((255 & 0b111111) << 5, imageData.data[4]); + assert.equal(255 & 0b11111, imageData.data[5]); + }); + + it("works, full width, A8", function () { + const ctx = createTestCanvas(true, { pixelFormat: "A8" }); + const imageData = ctx.getImageData(0, 0, 3, 6); + assert.equal(3, imageData.width); + assert.equal(6, imageData.height); + assert.equal(3 * 6, imageData.data.length); + + assert.equal(63, imageData.data[0]); + assert.equal(127, imageData.data[1]); + assert.equal(191, imageData.data[2]); + + assert.equal(63, imageData.data[3]); + assert.equal(127, imageData.data[4]); + assert.equal(191, imageData.data[5]); + }); + + it("works, full width, A1"); + + it("works, full width, RGB30"); + + it("works, slice, RGBA32", function () { + const ctx = createTestCanvas(); + const imageData = ctx.getImageData(0, 0, 2, 1); + assert.equal(2, imageData.width); + assert.equal(1, imageData.height); + assert.equal(8, imageData.data.length); + + assert.equal(255, imageData.data[0]); + assert.equal(0, imageData.data[1]); + assert.equal(0, imageData.data[2]); + assert.equal(255, imageData.data[3]); + + assert.equal(0, imageData.data[4]); + assert.equal(255, imageData.data[5]); + assert.equal(0, imageData.data[6]); + assert.equal(255, imageData.data[7]); + }); + + it("works, slice, RGB24", function () { + const ctx = createTestCanvas(false, { pixelFormat: "RGB24" }); + const imageData = ctx.getImageData(0, 0, 2, 1); + assert.equal(2, imageData.width); + assert.equal(1, imageData.height); + assert.equal(8, imageData.data.length); + + assert.equal(255, imageData.data[0]); + assert.equal(0, imageData.data[1]); + assert.equal(0, imageData.data[2]); + assert.equal(255, imageData.data[3]); + + assert.equal(0, imageData.data[4]); + assert.equal(255, imageData.data[5]); + assert.equal(0, imageData.data[6]); + assert.equal(255, imageData.data[7]); + }); + + it("works, slice, RGB16_565", function () { + const ctx = createTestCanvas(false, { pixelFormat: "RGB16_565" }); + const imageData = ctx.getImageData(0, 0, 2, 1); + assert.equal(2, imageData.width); + assert.equal(1, imageData.height); + assert.equal(2 * 1, imageData.data.length); + + assert.equal((255 & 0b11111) << 11, imageData.data[0]); + assert.equal((255 & 0b111111) << 5, imageData.data[1]); + }); + + it("works, slice, A8", function () { + const ctx = createTestCanvas(true, { pixelFormat: "A8" }); + const imageData = ctx.getImageData(0, 0, 2, 1); + assert.equal(2, imageData.width); + assert.equal(1, imageData.height); + assert.equal(2 * 1, imageData.data.length); + + assert.equal(63, imageData.data[0]); + assert.equal(127, imageData.data[1]); + }); + + it("works, slice, A1"); + + it("works, slice, RGB30"); + + it("works, assignment", function () { + const ctx = createTestCanvas(); + const data = ctx.getImageData(0, 0, 5, 5).data; + data[0] = 50; + assert.equal(50, data[0]); + data[0] = 280; + assert.equal(255, data[0]); + data[0] = -4444; + assert.equal(0, data[0]); + }); + + it("throws if indexes are invalid", function () { + const ctx = createTestCanvas(); + assert.throws(function () { + ctx.getImageData(0, 0, 0, 0); + }, /IndexSizeError/); + }); + + it("throws if canvas is a PDF canvas (#1853)", function () { + const canvas = createCanvas(3, 6, "pdf"); + const ctx = canvas.getContext("2d"); + assert.throws(() => { + ctx.getImageData(0, 0, 3, 6); + }); + }); + }); + + it("Context2d#createPattern(Canvas)", function () { + let pattern = createCanvas(2, 2); + const checkers = pattern.getContext("2d"); + + // white + checkers.fillStyle = "#fff"; + checkers.fillRect(0, 0, 2, 2); + + // black + checkers.fillStyle = "#000"; + checkers.fillRect(0, 0, 1, 1); + checkers.fillRect(1, 1, 1, 1); + + let imageData = checkers.getImageData(0, 0, 2, 2); + assert.equal(2, imageData.width); + assert.equal(2, imageData.height); + assert.equal(16, imageData.data.length); + + // (0,0) black + assert.equal(0, imageData.data[0]); + assert.equal(0, imageData.data[1]); + assert.equal(0, imageData.data[2]); + assert.equal(255, imageData.data[3]); + + // (1,0) white + assert.equal(255, imageData.data[4]); + assert.equal(255, imageData.data[5]); + assert.equal(255, imageData.data[6]); + assert.equal(255, imageData.data[7]); + + // (0,1) white + assert.equal(255, imageData.data[8]); + assert.equal(255, imageData.data[9]); + assert.equal(255, imageData.data[10]); + assert.equal(255, imageData.data[11]); + + // (1,1) black + assert.equal(0, imageData.data[12]); + assert.equal(0, imageData.data[13]); + assert.equal(0, imageData.data[14]); + assert.equal(255, imageData.data[15]); + + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d"); + pattern = ctx.createPattern(pattern); + + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 20, 20); + + imageData = ctx.getImageData(0, 0, 20, 20); + assert.equal(20, imageData.width); + assert.equal(20, imageData.height); + assert.equal(1600, imageData.data.length); + + let i = 0; + let b = true; + while (i < imageData.data.length) { + if (b) { + assert.equal(0, imageData.data[i++]); + assert.equal(0, imageData.data[i++]); + assert.equal(0, imageData.data[i++]); + assert.equal(255, imageData.data[i++]); + } else { + assert.equal(255, imageData.data[i++]); + assert.equal(255, imageData.data[i++]); + assert.equal(255, imageData.data[i++]); + assert.equal(255, imageData.data[i++]); + } + // alternate b, except when moving to a new row + b = i % (imageData.width * 4) === 0 ? b : !b; + } + }); + + it("Context2d#createPattern(Canvas).setTransform()", function () { + const DOMMatrix = require("../").DOMMatrix; + + // call func with an ImageData-offset and pixel color value appropriate for a 4-quadrant pattern within + // the width and height that's white in the upper-left & lower-right and black in the other corners + function eachPixel(bmp, func) { + let { width, height } = bmp; + for (let x = 0; x < width; x++) { + for (let y = 0; y < height; y++) { + let i = y * 4 * width + x * 4, + clr = + (x < width / 2 && y < height / 2) || + (x >= width / 2 && y >= height / 2) + ? 255 + : 0; + func(i, clr); + } + } + } - it('Canvas#getContext("2d")', function () { - const canvas = createCanvas(200, 300) - const ctx = canvas.getContext('2d') - assert.ok(typeof ctx === 'object') - assert.equal(canvas, ctx.canvas, 'context.canvas is not canvas') - assert.equal(ctx, canvas.context, 'canvas.context is not context') + // create a canvas with a single repeat of the pattern within its dims + function makeCheckerboard(w, h) { + let check = createCanvas(w, h), + ctx = check.getContext("2d"), + bmp = ctx.createImageData(w, h); + eachPixel(bmp, (i, clr) => bmp.data.set([clr, clr, clr, 255], i)); + ctx.putImageData(bmp, 0, 0); + return check; + } - const MAX_IMAGE_SIZE = 32767; + // verify that the region looks like a single 4-quadrant checkerboard cell + function isCheckerboard(ctx, w, h) { + let bmp = ctx.getImageData(0, 0, w, h); + eachPixel(bmp, (i, clr) => { + let [r, g, b, a] = bmp.data.slice(i, i + 4); + assert.ok(r == clr && g == clr && b == clr && a == 255); + }); + } - [ - [0, 0, 1], - [1, 0, 1], - [MAX_IMAGE_SIZE, 0, 1], - [MAX_IMAGE_SIZE + 1, 0, 3], - [MAX_IMAGE_SIZE, MAX_IMAGE_SIZE, null], - [MAX_IMAGE_SIZE + 1, MAX_IMAGE_SIZE, 3], - [MAX_IMAGE_SIZE + 1, MAX_IMAGE_SIZE + 1, 3], - [Math.pow(2, 30), 0, 3], - [Math.pow(2, 30), 1, 3], - [Math.pow(2, 32), 0, 1], - [Math.pow(2, 32), 1, 1] - ].forEach(params => { - const width = params[0] - const height = params[1] - const errorLevel = params[2] - - let level = 3 - - try { - const canvas = createCanvas(width, height) - level-- - - const ctx = canvas.getContext('2d') - level-- - - ctx.getImageData(0, 0, 1, 1) - level-- - } catch (err) {} - - if (errorLevel !== null) { assert.strictEqual(level, errorLevel) } - }) - }) - - it('Canvas#getContext("2d", {pixelFormat: string})', function () { - let canvas, context - - // default: - canvas = createCanvas(10, 10) - context = canvas.getContext('2d', { pixelFormat: 'RGBA32' }) - assert.equal(context.pixelFormat, 'RGBA32') - - canvas = createCanvas(10, 10) - context = canvas.getContext('2d', { pixelFormat: 'RGBA32' }) - assert.equal(context.pixelFormat, 'RGBA32') - - canvas = createCanvas(10, 10) - context = canvas.getContext('2d', { pixelFormat: 'RGB24' }) - assert.equal(context.pixelFormat, 'RGB24') - - canvas = createCanvas(10, 10) - context = canvas.getContext('2d', { pixelFormat: 'A8' }) - assert.equal(context.pixelFormat, 'A8') - - canvas = createCanvas(10, 10) - context = canvas.getContext('2d', { pixelFormat: 'A1' }) - assert.equal(context.pixelFormat, 'A1') - - canvas = createCanvas(10, 10) - context = canvas.getContext('2d', { pixelFormat: 'RGB16_565' }) - assert.equal(context.pixelFormat, 'RGB16_565') - - // Not tested: RGB30 - }) - - it('Canvas#getContext("2d", {alpha: boolean})', function () { - let canvas, context - - canvas = createCanvas(10, 10) - context = canvas.getContext('2d', { alpha: true }) - assert.equal(context.pixelFormat, 'RGBA32') - - canvas = createCanvas(10, 10) - context = canvas.getContext('2d', { alpha: false }) - assert.equal(context.pixelFormat, 'RGB24') - - // alpha takes priority: - canvas = createCanvas(10, 10) - context = canvas.getContext('2d', { pixelFormat: 'RGBA32', alpha: false }) - assert.equal(context.pixelFormat, 'RGB24') - }) - - it('Canvas#{width,height}=', function () { - const canvas = createCanvas(100, 200) - const context = canvas.getContext('2d') - - assert.equal(canvas.width, 100) - assert.equal(canvas.height, 200) - - context.globalAlpha = 0.5 - context.fillStyle = '#0f0' - context.strokeStyle = '#0f0' - context.font = '20px arial' - context.fillRect(0, 0, 1, 1) - - canvas.width = 50 - canvas.height = 70 - assert.equal(canvas.width, 50) - assert.equal(canvas.height, 70) - - context.font = '20px arial' - assert.equal(context.font, '20px arial') - canvas.width |= 0 - - assert.equal(context.lineWidth, 1) // #1095 - assert.equal(context.globalAlpha, 1) // #1292 - assert.equal(context.fillStyle, '#000000') - assert.equal(context.strokeStyle, '#000000') - assert.equal(context.font, '10px sans-serif') - assert.strictEqual(context.getImageData(0, 0, 1, 1).data.join(','), '0,0,0,0') - }) - - it('Canvas#width= (resurfacing) doesn\'t crash when fillStyle is a pattern (#1357)', function (done) { - const canvas = createCanvas(100, 200) - const ctx = canvas.getContext('2d') - - loadImage(path.join(__dirname, '/fixtures/checkers.png')).then(img => { - const pattern = ctx.createPattern(img, 'repeat') - ctx.fillStyle = pattern - ctx.fillRect(0, 0, 300, 300) - canvas.width = 200 // cause canvas to resurface - done() - }) - }) - - it('SVG Canvas#width changes don\'t crash (#1380)', function () { - const myCanvas = createCanvas(100, 100, 'svg') - myCanvas.width = 120 - }) - - it('Canvas#stride', function () { - const canvas = createCanvas(24, 10) - assert.ok(canvas.stride >= 24, 'canvas.stride is too short') - assert.ok(canvas.stride < 1024, 'canvas.stride seems too long') - - // TODO test stride on other formats - }) - - it('Canvas#getContext("invalid")', function () { - assert.equal(null, createCanvas(200, 300).getContext('invalid')) - }) - - it('Context2d#patternQuality', function () { - const canvas = createCanvas(200, 200) - const ctx = canvas.getContext('2d') - - assert.equal('good', ctx.patternQuality) - ctx.patternQuality = 'best' - assert.equal('best', ctx.patternQuality) - ctx.patternQuality = 'invalid' - assert.equal('best', ctx.patternQuality) - }) - - it('Context2d#imageSmoothingEnabled', function () { - const canvas = createCanvas(200, 200) - const ctx = canvas.getContext('2d') - - assert.equal(true, ctx.imageSmoothingEnabled) - ctx.imageSmoothingEnabled = false - assert.equal('good', ctx.patternQuality) - assert.equal(false, ctx.imageSmoothingEnabled) - assert.equal('good', ctx.patternQuality) - }) - - it('Context2d#font=', function () { - const canvas = createCanvas(200, 200) - const ctx = canvas.getContext('2d') - - assert.equal(ctx.font, '10px sans-serif') - ctx.font = '15px Arial, sans-serif' - assert.equal(ctx.font, '15px Arial, sans-serif') - - ctx.font = 'Helvetica, sans' // invalid - assert.equal(ctx.font, '15px Arial, sans-serif') - }) - - it('Context2d#lineWidth=', function () { - const canvas = createCanvas(200, 200) - const ctx = canvas.getContext('2d') - - ctx.lineWidth = 10.0 - assert.equal(10, ctx.lineWidth) - ctx.lineWidth = Infinity - assert.equal(10, ctx.lineWidth) - ctx.lineWidth = -Infinity - assert.equal(10, ctx.lineWidth) - ctx.lineWidth = -5 - assert.equal(10, ctx.lineWidth) - ctx.lineWidth = 0 - assert.equal(10, ctx.lineWidth) - }) - - it('Context2d#antiAlias=', function () { - const canvas = createCanvas(200, 200) - const ctx = canvas.getContext('2d') - - assert.equal('default', ctx.antialias) - ctx.antialias = 'none' - assert.equal('none', ctx.antialias) - ctx.antialias = 'gray' - assert.equal('gray', ctx.antialias) - ctx.antialias = 'subpixel' - assert.equal('subpixel', ctx.antialias) - ctx.antialias = 'invalid' - assert.equal('subpixel', ctx.antialias) - ctx.antialias = 1 - assert.equal('subpixel', ctx.antialias) - }) - - it('Context2d#lineCap=', function () { - const canvas = createCanvas(200, 200) - const ctx = canvas.getContext('2d') - - assert.equal('butt', ctx.lineCap) - ctx.lineCap = 'round' - assert.equal('round', ctx.lineCap) - }) - - it('Context2d#lineJoin=', function () { - const canvas = createCanvas(200, 200) - const ctx = canvas.getContext('2d') - - assert.equal('miter', ctx.lineJoin) - ctx.lineJoin = 'round' - assert.equal('round', ctx.lineJoin) - }) - - it('Context2d#globalAlpha=', function () { - const canvas = createCanvas(200, 200) - const ctx = canvas.getContext('2d') - - assert.equal(1, ctx.globalAlpha) - ctx.globalAlpha = 0.5 - assert.equal(0.5, ctx.globalAlpha) - }) - - it('Context2d#isPointInPath()', function () { - const canvas = createCanvas(200, 200) - const ctx = canvas.getContext('2d') - - ctx.rect(5, 5, 100, 100) - ctx.rect(50, 100, 10, 10) - assert.ok(ctx.isPointInPath(10, 10)) - assert.ok(ctx.isPointInPath(10, 50)) - assert.ok(ctx.isPointInPath(100, 100)) - assert.ok(ctx.isPointInPath(105, 105)) - assert.ok(!ctx.isPointInPath(106, 105)) - assert.ok(!ctx.isPointInPath(150, 150)) - - assert.ok(ctx.isPointInPath(50, 110)) - assert.ok(ctx.isPointInPath(60, 110)) - assert.ok(!ctx.isPointInPath(70, 110)) - assert.ok(!ctx.isPointInPath(50, 120)) - }) - - it('Context2d#textAlign', function () { - const canvas = createCanvas(200, 200) - const ctx = canvas.getContext('2d') - - assert.equal('left', ctx.textAlign) // default TODO wrong default - ctx.textAlign = 'start' - assert.equal('start', ctx.textAlign) - ctx.textAlign = 'center' - assert.equal('center', ctx.textAlign) - ctx.textAlign = 'right' - assert.equal('right', ctx.textAlign) - ctx.textAlign = 'end' - assert.equal('end', ctx.textAlign) - ctx.textAlign = 'fail' - assert.equal('end', ctx.textAlign) - }) - - describe('#toBuffer', function () { - it('Canvas#toBuffer()', function () { - const buf = createCanvas(200, 200).toBuffer() - assert.equal('PNG', buf.slice(1, 4).toString()) - }) - - it('Canvas#toBuffer("image/png")', function () { - const buf = createCanvas(200, 200).toBuffer('image/png') - assert.equal('PNG', buf.slice(1, 4).toString()) - }) - - it('Canvas#toBuffer("image/png", {resolution: 96})', function () { - const buf = createCanvas(200, 200).toBuffer('image/png', { resolution: 96 }) - // 3780 ppm ~= 96 ppi - let foundpHYs = false - for (let i = 0; i < buf.length - 12; i++) { - if (buf[i] === 0x70 && - buf[i + 1] === 0x48 && - buf[i + 2] === 0x59 && - buf[i + 3] === 0x73) { // pHYs - foundpHYs = true - assert.equal(buf[i + 4], 0) - assert.equal(buf[i + 5], 0) - assert.equal(buf[i + 6], 0x0e) - assert.equal(buf[i + 7], 0xc4) // x - assert.equal(buf[i + 8], 0) - assert.equal(buf[i + 9], 0) - assert.equal(buf[i + 10], 0x0e) - assert.equal(buf[i + 11], 0xc4) // y + let w = 160, + h = 160, + canvas = createCanvas(w, h), + ctx = canvas.getContext("2d"), + pat = ctx.createPattern(makeCheckerboard(w, h), "repeat"), + mat = new DOMMatrix(); + + ctx.patternQuality = "nearest"; + ctx.fillStyle = pat; + + // draw a single repeat of the pattern at each scale and then confirm that + // the transformation succeeded + [1, 0.5, 0.25, 0.125, 0.0625].forEach((mag) => { + mat = new DOMMatrix().scale(mag); + pat.setTransform(mat); + ctx.fillRect(0, 0, w * mag, h * mag); + isCheckerboard(ctx, w * mag, h * mag); + }); + }); + + it("Context2d#createPattern(Image)", async function () { + const img = await loadImage( + path.join(__dirname, "/fixtures/checkers.png") + ); + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d"); + const pattern = ctx.createPattern(img); + + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 20, 20); + + const imageData = ctx.getImageData(0, 0, 20, 20); + assert.equal(20, imageData.width); + assert.equal(20, imageData.height); + assert.equal(1600, imageData.data.length); + + let i = 0; + let b = true; + while (i < imageData.data.length) { + if (b) { + assert.equal(0, imageData.data[i++]); + assert.equal(0, imageData.data[i++]); + assert.equal(0, imageData.data[i++]); + assert.equal(255, imageData.data[i++]); + } else { + assert.equal(255, imageData.data[i++]); + assert.equal(255, imageData.data[i++]); + assert.equal(255, imageData.data[i++]); + assert.equal(255, imageData.data[i++]); + } + // alternate b, except when moving to a new row + b = i % (imageData.width * 4) === 0 ? b : !b; } - } - assert.ok(foundpHYs, 'missing pHYs header') - }) - - it('Canvas#toBuffer("image/png", {compressionLevel: 5})', function () { - const buf = createCanvas(200, 200).toBuffer('image/png', { compressionLevel: 5 }) - assert.equal('PNG', buf.slice(1, 4).toString()) - }) - - it('Canvas#toBuffer("image/jpeg")', function () { - const buf = createCanvas(200, 200).toBuffer('image/jpeg') - assert.equal(buf[0], 0xff) - assert.equal(buf[1], 0xd8) - assert.equal(buf[buf.byteLength - 2], 0xff) - assert.equal(buf[buf.byteLength - 1], 0xd9) - }) - - it('Canvas#toBuffer("image/jpeg", {quality: 0.95})', function () { - const buf = createCanvas(200, 200).toBuffer('image/jpeg', { quality: 0.95 }) - assert.equal(buf[0], 0xff) - assert.equal(buf[1], 0xd8) - assert.equal(buf[buf.byteLength - 2], 0xff) - assert.equal(buf[buf.byteLength - 1], 0xd9) - }) - - it('Canvas#toBuffer(callback)', function (done) { - createCanvas(200, 200).toBuffer(function (err, buf) { - assert.ok(!err) - assert.equal('PNG', buf.slice(1, 4).toString()) - done() - }) - }) - - it('Canvas#toBuffer(callback, "image/jpeg")', function (done) { - createCanvas(200, 200).toBuffer(function (err, buf) { - assert.ok(!err) - assert.equal(buf[0], 0xff) - assert.equal(buf[1], 0xd8) - assert.equal(buf[buf.byteLength - 2], 0xff) - assert.equal(buf[buf.byteLength - 1], 0xd9) - done() - }, 'image/jpeg') - }) - - it('Canvas#toBuffer(callback, "image/jpeg", {quality: 0.95})', function (done) { - createCanvas(200, 200).toBuffer(function (err, buf) { - assert.ok(!err) - assert.equal(buf[0], 0xff) - assert.equal(buf[1], 0xd8) - assert.equal(buf[buf.byteLength - 2], 0xff) - assert.equal(buf[buf.byteLength - 1], 0xd9) - done() - }, 'image/jpeg', { quality: 0.95 }) - }) - - describe('#toBuffer("raw")', function () { - const canvas = createCanvas(11, 10) - const ctx = canvas.getContext('2d') - - ctx.clearRect(0, 0, 11, 10) - - ctx.fillStyle = 'rgba(200, 200, 200, 0.505)' - ctx.fillRect(0, 0, 5, 5) - - ctx.fillStyle = 'red' - ctx.fillRect(5, 0, 5, 5) - - ctx.fillStyle = '#00ff00' - ctx.fillRect(0, 5, 5, 5) - - ctx.fillStyle = 'black' - ctx.fillRect(5, 5, 4, 5) - - /** Output: - * *****RRRRR- - * *****RRRRR- - * *****RRRRR- - * *****RRRRR- - * *****RRRRR- - * GGGGGBBBB-- - * GGGGGBBBB-- - * GGGGGBBBB-- - * GGGGGBBBB-- - * GGGGGBBBB-- - */ - - const buf = canvas.toBuffer('raw') - const stride = canvas.stride - - const endianness = os.endianness() - - function assertPixel (u32, x, y, message) { - const expected = '0x' + u32.toString(16) - - // Buffer doesn't have readUInt32(): it only has readUInt32LE() and - // readUInt32BE(). - const px = buf['readUInt32' + endianness](y * stride + x * 4) - const actual = '0x' + px.toString(16) - - assert.equal(actual, expected, message) - } - - it('should have the correct size', function () { - assert.equal(buf.length, stride * 10) - }) - - it('does not premultiply alpha', function () { - assertPixel(0x80646464, 0, 0, 'first semitransparent pixel') - assertPixel(0x80646464, 4, 4, 'last semitransparent pixel') - }) - - it('draws red', function () { - assertPixel(0xffff0000, 5, 0, 'first red pixel') - assertPixel(0xffff0000, 9, 4, 'last red pixel') - }) - - it('draws green', function () { - assertPixel(0xff00ff00, 0, 5, 'first green pixel') - assertPixel(0xff00ff00, 4, 9, 'last green pixel') - }) - - it('draws black', function () { - assertPixel(0xff000000, 5, 5, 'first black pixel') - assertPixel(0xff000000, 8, 9, 'last black pixel') - }) - - it('leaves undrawn pixels black, transparent', function () { - assertPixel(0x0, 9, 5, 'first undrawn pixel') - assertPixel(0x0, 9, 9, 'last undrawn pixel') - }) - - it('is immutable', function () { - ctx.fillStyle = 'white' - ctx.fillRect(0, 0, 10, 10) - canvas.toBuffer('raw') // (side-effect: flushes canvas) - assertPixel(0xffff0000, 5, 0, 'first red pixel') - }) - }) - }) - - describe('#toDataURL()', function () { - const canvas = createCanvas(200, 200) - const ctx = canvas.getContext('2d') - - ctx.fillRect(0, 0, 100, 100) - ctx.fillStyle = 'red' - ctx.fillRect(100, 0, 100, 100) - - it('toDataURL() works and defaults to PNG', function () { - assert.ok(canvas.toDataURL().startsWith('data:image/png;base64,')) - }) - - it('toDataURL(0.5) works and defaults to PNG', function () { - assert.ok(canvas.toDataURL(0.5).startsWith('data:image/png;base64,')) - }) - - it('toDataURL(undefined) works and defaults to PNG', function () { - assert.ok(canvas.toDataURL(undefined).startsWith('data:image/png;base64,')) - }) - - it('toDataURL("image/png") works', function () { - assert.ok(canvas.toDataURL('image/png').startsWith('data:image/png;base64,')) - }) - - it('toDataURL("image/png", 0.5) works', function () { - assert.ok(canvas.toDataURL('image/png').startsWith('data:image/png;base64,')) - }) - - it('toDataURL("iMaGe/PNg") works', function () { - assert.ok(canvas.toDataURL('iMaGe/PNg').startsWith('data:image/png;base64,')) - }) - - it('toDataURL("image/jpeg") works', function () { - assert.ok(canvas.toDataURL('image/jpeg').startsWith('data:image/jpeg;base64,')) - }) - - it('toDataURL(function (err, str) {...}) works and defaults to PNG', function (done) { - createCanvas(200, 200).toDataURL(function (err, str) { - assert.ifError(err) - assert.ok(str.indexOf('data:image/png;base64,') === 0) - done() - }) - }) - - it('toDataURL(function (err, str) {...}) is async even with no canvas data', function (done) { - createCanvas().toDataURL(function (err, str) { - assert.ifError(err) - assert.ok(str === 'data:,') - done() - }) - }) - - it('toDataURL(0.5, function (err, str) {...}) works and defaults to PNG', function (done) { - createCanvas(200, 200).toDataURL(0.5, function (err, str) { - assert.ifError(err) - assert.ok(str.indexOf('data:image/png;base64,') === 0) - done() - }) - }) - - it('toDataURL(undefined, function (err, str) {...}) works and defaults to PNG', function (done) { - createCanvas(200, 200).toDataURL(undefined, function (err, str) { - assert.ifError(err) - assert.ok(str.indexOf('data:image/png;base64,') === 0) - done() - }) - }) - - it('toDataURL("image/png", function (err, str) {...}) works', function (done) { - createCanvas(200, 200).toDataURL('image/png', function (err, str) { - assert.ifError(err) - assert.ok(str.indexOf('data:image/png;base64,') === 0) - done() - }) - }) - - it('toDataURL("image/png", 0.5, function (err, str) {...}) works', function (done) { - createCanvas(200, 200).toDataURL('image/png', 0.5, function (err, str) { - assert.ifError(err) - assert.ok(str.indexOf('data:image/png;base64,') === 0) - done() - }) - }) - - it('toDataURL("image/png", {}) works', function () { - assert.ok(canvas.toDataURL('image/png', {}).startsWith('data:image/png;base64,')) - }) - - it('toDataURL("image/jpeg", {}) works', function () { - assert.ok(canvas.toDataURL('image/jpeg', {}).startsWith('data:image/jpeg;base64,')) - }) - - it('toDataURL("image/jpeg", function (err, str) {...}) works', function (done) { - createCanvas(200, 200).toDataURL('image/jpeg', function (err, str) { - assert.ifError(err) - assert.ok(str.indexOf('data:image/jpeg;base64,') === 0) - done() - }) - }) - - it('toDataURL("iMAge/JPEG", function (err, str) {...}) works', function (done) { - createCanvas(200, 200).toDataURL('iMAge/JPEG', function (err, str) { - assert.ifError(err) - assert.ok(str.indexOf('data:image/jpeg;base64,') === 0) - done() - }) - }) - - it('toDataURL("image/jpeg", undefined, function (err, str) {...}) works', function (done) { - createCanvas(200, 200).toDataURL('image/jpeg', undefined, function (err, str) { - assert.ifError(err) - assert.ok(str.indexOf('data:image/jpeg;base64,') === 0) - done() - }) - }) - - it('toDataURL("image/jpeg", 0.5, function (err, str) {...}) works', function (done) { - createCanvas(200, 200).toDataURL('image/jpeg', 0.5, function (err, str) { - assert.ifError(err) - assert.ok(str.indexOf('data:image/jpeg;base64,') === 0) - done() - }) - }) - - it('toDataURL("image/jpeg", opts, function (err, str) {...}) works', function (done) { - createCanvas(200, 200).toDataURL('image/jpeg', { quality: 100 }, function (err, str) { - assert.ifError(err) - assert.ok(str.indexOf('data:image/jpeg;base64,') === 0) - done() - }) - }) - }) - - describe('Context2d#createImageData(width, height)', function () { - it('works', function () { - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d') - - const imageData = ctx.createImageData(2, 6) - assert.equal(2, imageData.width) - assert.equal(6, imageData.height) - assert.equal(2 * 6 * 4, imageData.data.length) - - assert.equal(0, imageData.data[0]) - assert.equal(0, imageData.data[1]) - assert.equal(0, imageData.data[2]) - assert.equal(0, imageData.data[3]) - }) - - it('works, A8 format', function () { - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d', { pixelFormat: 'A8' }) - - const imageData = ctx.createImageData(2, 6) - assert.equal(2, imageData.width) - assert.equal(6, imageData.height) - assert.equal(2 * 6 * 1, imageData.data.length) - - assert.equal(0, imageData.data[0]) - assert.equal(0, imageData.data[1]) - assert.equal(0, imageData.data[2]) - assert.equal(0, imageData.data[3]) - }) - - it('works, A1 format', function () { - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d', { pixelFormat: 'A1' }) - - const imageData = ctx.createImageData(2, 6) - assert.equal(2, imageData.width) - assert.equal(6, imageData.height) - assert.equal(Math.ceil(2 * 6 / 8), imageData.data.length) - - assert.equal(0, imageData.data[0]) - assert.equal(0, imageData.data[1]) - }) - - it('works, RGB24 format', function () { - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d', { pixelFormat: 'RGB24' }) - - const imageData = ctx.createImageData(2, 6) - assert.equal(2, imageData.width) - assert.equal(6, imageData.height) - assert.equal(2 * 6 * 4, imageData.data.length) - - assert.equal(0, imageData.data[0]) - assert.equal(0, imageData.data[1]) - assert.equal(0, imageData.data[2]) - assert.equal(0, imageData.data[3]) - }) - - it('works, RGB16_565 format', function () { - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d', { pixelFormat: 'RGB16_565' }) - - const imageData = ctx.createImageData(2, 6) - assert(imageData.data instanceof Uint16Array) - assert.equal(2, imageData.width) - assert.equal(6, imageData.height) - assert.equal(2 * 6, imageData.data.length) - - assert.equal(0, imageData.data[0]) - assert.equal(0, imageData.data[1]) - }) - }) - - describe('Context2d#measureText()', function () { - it('Context2d#measureText().width', function () { - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d') - - assert.ok(ctx.measureText('foo').width) - assert.ok(ctx.measureText('foo').width !== ctx.measureText('foobar').width) - assert.ok(ctx.measureText('foo').width !== ctx.measureText(' foo').width) - }) - - it('works', function () { - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d') - ctx.font = '20px Arial' - - ctx.textBaseline = 'alphabetic' - let metrics = ctx.measureText('Alphabet') - // Actual value depends on font library version. Have observed values - // between 0 and 0.769. - assertApprox(metrics.alphabeticBaseline, 0.5, 0.5) - // Positive = going up from the baseline - assert.ok(metrics.actualBoundingBoxAscent > 0) - // Positive = going down from the baseline - assertApprox(metrics.actualBoundingBoxDescent, 5, 2) - - ctx.textBaseline = 'bottom' - metrics = ctx.measureText('Alphabet') - assert.strictEqual(ctx.textBaseline, 'bottom') - assertApprox(metrics.alphabeticBaseline, 5, 2) - assert.ok(metrics.actualBoundingBoxAscent > 0) - // On the baseline or slightly above - assert.ok(metrics.actualBoundingBoxDescent <= 0) - }) - - it('actualBoundingBox is correct for left, center and right alignment (#1909)', function () { - const canvas = createCanvas(0, 0) - const ctx = canvas.getContext('2d') - - // positive actualBoundingBoxLeft indicates a distance going left from the - // given alignment point. - - // positive actualBoundingBoxRight indicates a distance going right from - // the given alignment point. - - ctx.textAlign = 'left' - const lm = ctx.measureText('aaaa') - assertApprox(lm.actualBoundingBoxLeft, -1, 6) - assertApprox(lm.actualBoundingBoxRight, 21, 6) - - ctx.textAlign = 'center' - const cm = ctx.measureText('aaaa') - assertApprox(cm.actualBoundingBoxLeft, 9, 6) - assertApprox(cm.actualBoundingBoxRight, 11, 6) - - ctx.textAlign = 'right' - const rm = ctx.measureText('aaaa') - assertApprox(rm.actualBoundingBoxLeft, 19, 6) - assertApprox(rm.actualBoundingBoxRight, 1, 6) - }) - }) - - it('Context2d#fillText()', function () { - [ - [['A', 10, 10], true], - [['A', 10, 10, undefined], true], - [['A', 10, 10, NaN], false] - ].forEach(([args, shouldDraw]) => { - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d') - - ctx.textBaseline = 'middle' - ctx.textAlign = 'center' - ctx.fillText(...args) - - assert.strictEqual(ctx.getImageData(0, 0, 20, 20).data.some(a => a), shouldDraw) - }) - }) - - it('Context2d#currentTransform', function () { - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d') - - ctx.scale(0.1, 0.3) - const mat1 = ctx.currentTransform - assert.equal(mat1.a, 0.1) - assert.equal(mat1.b, 0) - assert.equal(mat1.c, 0) - assert.equal(mat1.d, 0.3) - assert.equal(mat1.e, 0) - assert.equal(mat1.f, 0) - - ctx.resetTransform() - const mat2 = ctx.currentTransform - assert.equal(mat2.a, 1) - assert.equal(mat2.d, 1) - - ctx.currentTransform = mat1 - const mat3 = ctx.currentTransform - assert.equal(mat3.a, 0.1) - assert.equal(mat3.d, 0.3) - - assert.deepEqual(ctx.currentTransform, ctx.getTransform()) - - ctx.setTransform(ctx.getTransform()) - assert.deepEqual(mat3, ctx.getTransform()) - - ctx.setTransform(mat3.a, mat3.b, mat3.c, mat3.d, mat3.e, mat3.f) - assert.deepEqual(mat3, ctx.getTransform()) - }) - - it('Context2d#createImageData(ImageData)', function () { - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d') - - const imageData = ctx.createImageData(ctx.createImageData(2, 6)) - assert.equal(2, imageData.width) - assert.equal(6, imageData.height) - assert.equal(2 * 6 * 4, imageData.data.length) - }) - - describe('Context2d#getImageData()', function () { - function createTestCanvas (useAlpha, attributes) { - const canvas = createCanvas(3, 6) - const ctx = canvas.getContext('2d', attributes) - - ctx.fillStyle = useAlpha ? 'rgba(255,0,0,0.25)' : '#f00' - ctx.fillRect(0, 0, 1, 6) - - ctx.fillStyle = useAlpha ? 'rgba(0,255,0,0.5)' : '#0f0' - ctx.fillRect(1, 0, 1, 6) - - ctx.fillStyle = useAlpha ? 'rgba(0,0,255,0.75)' : '#00f' - ctx.fillRect(2, 0, 1, 6) - - return ctx - } - - it('works, full width, RGBA32', function () { - const ctx = createTestCanvas() - const imageData = ctx.getImageData(0, 0, 3, 6) - - assert.equal(3, imageData.width) - assert.equal(6, imageData.height) - assert.equal(3 * 6 * 4, imageData.data.length) - - assert.equal(255, imageData.data[0]) - assert.equal(0, imageData.data[1]) - assert.equal(0, imageData.data[2]) - assert.equal(255, imageData.data[3]) - - assert.equal(0, imageData.data[4]) - assert.equal(255, imageData.data[5]) - assert.equal(0, imageData.data[6]) - assert.equal(255, imageData.data[7]) - - assert.equal(0, imageData.data[8]) - assert.equal(0, imageData.data[9]) - assert.equal(255, imageData.data[10]) - assert.equal(255, imageData.data[11]) - }) - - it('works, full width, RGB24', function () { - const ctx = createTestCanvas(false, { pixelFormat: 'RGB24' }) - const imageData = ctx.getImageData(0, 0, 3, 6) - assert.equal(3, imageData.width) - assert.equal(6, imageData.height) - assert.equal(3 * 6 * 4, imageData.data.length) - - assert.equal(255, imageData.data[0]) - assert.equal(0, imageData.data[1]) - assert.equal(0, imageData.data[2]) - assert.equal(255, imageData.data[3]) - - assert.equal(0, imageData.data[4]) - assert.equal(255, imageData.data[5]) - assert.equal(0, imageData.data[6]) - assert.equal(255, imageData.data[7]) - - assert.equal(0, imageData.data[8]) - assert.equal(0, imageData.data[9]) - assert.equal(255, imageData.data[10]) - assert.equal(255, imageData.data[11]) - }) - - it('works, full width, RGB16_565', function () { - const ctx = createTestCanvas(false, { pixelFormat: 'RGB16_565' }) - const imageData = ctx.getImageData(0, 0, 3, 6) - assert.equal(3, imageData.width) - assert.equal(6, imageData.height) - assert.equal(3 * 6, imageData.data.length) - - assert.equal((255 & 0b11111) << 11, imageData.data[0]) - assert.equal((255 & 0b111111) << 5, imageData.data[1]) - assert.equal((255 & 0b11111), imageData.data[2]) - - assert.equal((255 & 0b11111) << 11, imageData.data[3]) - assert.equal((255 & 0b111111) << 5, imageData.data[4]) - assert.equal((255 & 0b11111), imageData.data[5]) - }) - - it('works, full width, A8', function () { - const ctx = createTestCanvas(true, { pixelFormat: 'A8' }) - const imageData = ctx.getImageData(0, 0, 3, 6) - assert.equal(3, imageData.width) - assert.equal(6, imageData.height) - assert.equal(3 * 6, imageData.data.length) - - assert.equal(63, imageData.data[0]) - assert.equal(127, imageData.data[1]) - assert.equal(191, imageData.data[2]) - - assert.equal(63, imageData.data[3]) - assert.equal(127, imageData.data[4]) - assert.equal(191, imageData.data[5]) - }) - - it('works, full width, A1') - - it('works, full width, RGB30') - - it('works, slice, RGBA32', function () { - const ctx = createTestCanvas() - const imageData = ctx.getImageData(0, 0, 2, 1) - assert.equal(2, imageData.width) - assert.equal(1, imageData.height) - assert.equal(8, imageData.data.length) - - assert.equal(255, imageData.data[0]) - assert.equal(0, imageData.data[1]) - assert.equal(0, imageData.data[2]) - assert.equal(255, imageData.data[3]) - - assert.equal(0, imageData.data[4]) - assert.equal(255, imageData.data[5]) - assert.equal(0, imageData.data[6]) - assert.equal(255, imageData.data[7]) - }) - - it('works, slice, RGB24', function () { - const ctx = createTestCanvas(false, { pixelFormat: 'RGB24' }) - const imageData = ctx.getImageData(0, 0, 2, 1) - assert.equal(2, imageData.width) - assert.equal(1, imageData.height) - assert.equal(8, imageData.data.length) - - assert.equal(255, imageData.data[0]) - assert.equal(0, imageData.data[1]) - assert.equal(0, imageData.data[2]) - assert.equal(255, imageData.data[3]) - - assert.equal(0, imageData.data[4]) - assert.equal(255, imageData.data[5]) - assert.equal(0, imageData.data[6]) - assert.equal(255, imageData.data[7]) - }) - - it('works, slice, RGB16_565', function () { - const ctx = createTestCanvas(false, { pixelFormat: 'RGB16_565' }) - const imageData = ctx.getImageData(0, 0, 2, 1) - assert.equal(2, imageData.width) - assert.equal(1, imageData.height) - assert.equal(2 * 1, imageData.data.length) - - assert.equal((255 & 0b11111) << 11, imageData.data[0]) - assert.equal((255 & 0b111111) << 5, imageData.data[1]) - }) - - it('works, slice, A8', function () { - const ctx = createTestCanvas(true, { pixelFormat: 'A8' }) - const imageData = ctx.getImageData(0, 0, 2, 1) - assert.equal(2, imageData.width) - assert.equal(1, imageData.height) - assert.equal(2 * 1, imageData.data.length) - - assert.equal(63, imageData.data[0]) - assert.equal(127, imageData.data[1]) - }) - - it('works, slice, A1') - - it('works, slice, RGB30') - - it('works, assignment', function () { - const ctx = createTestCanvas() - const data = ctx.getImageData(0, 0, 5, 5).data - data[0] = 50 - assert.equal(50, data[0]) - data[0] = 280 - assert.equal(255, data[0]) - data[0] = -4444 - assert.equal(0, data[0]) - }) - - it('throws if indexes are invalid', function () { - const ctx = createTestCanvas() - assert.throws(function () { ctx.getImageData(0, 0, 0, 0) }, /IndexSizeError/) - }) - - it('throws if canvas is a PDF canvas (#1853)', function () { - const canvas = createCanvas(3, 6, 'pdf') - const ctx = canvas.getContext('2d') - assert.throws(() => { - ctx.getImageData(0, 0, 3, 6) - }) - }) - }) - - it('Context2d#createPattern(Canvas)', function () { - let pattern = createCanvas(2, 2) - const checkers = pattern.getContext('2d') - - // white - checkers.fillStyle = '#fff' - checkers.fillRect(0, 0, 2, 2) - - // black - checkers.fillStyle = '#000' - checkers.fillRect(0, 0, 1, 1) - checkers.fillRect(1, 1, 1, 1) - - let imageData = checkers.getImageData(0, 0, 2, 2) - assert.equal(2, imageData.width) - assert.equal(2, imageData.height) - assert.equal(16, imageData.data.length) - - // (0,0) black - assert.equal(0, imageData.data[0]) - assert.equal(0, imageData.data[1]) - assert.equal(0, imageData.data[2]) - assert.equal(255, imageData.data[3]) - - // (1,0) white - assert.equal(255, imageData.data[4]) - assert.equal(255, imageData.data[5]) - assert.equal(255, imageData.data[6]) - assert.equal(255, imageData.data[7]) - - // (0,1) white - assert.equal(255, imageData.data[8]) - assert.equal(255, imageData.data[9]) - assert.equal(255, imageData.data[10]) - assert.equal(255, imageData.data[11]) - - // (1,1) black - assert.equal(0, imageData.data[12]) - assert.equal(0, imageData.data[13]) - assert.equal(0, imageData.data[14]) - assert.equal(255, imageData.data[15]) - - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d') - pattern = ctx.createPattern(pattern) - - ctx.fillStyle = pattern - ctx.fillRect(0, 0, 20, 20) - - imageData = ctx.getImageData(0, 0, 20, 20) - assert.equal(20, imageData.width) - assert.equal(20, imageData.height) - assert.equal(1600, imageData.data.length) - - let i = 0; let b = true - while (i < imageData.data.length) { - if (b) { - assert.equal(0, imageData.data[i++]) - assert.equal(0, imageData.data[i++]) - assert.equal(0, imageData.data[i++]) - assert.equal(255, imageData.data[i++]) - } else { - assert.equal(255, imageData.data[i++]) - assert.equal(255, imageData.data[i++]) - assert.equal(255, imageData.data[i++]) - assert.equal(255, imageData.data[i++]) - } - // alternate b, except when moving to a new row - b = i % (imageData.width * 4) === 0 ? b : !b - } - }) - - it('Context2d#createPattern(Canvas).setTransform()', function () { - const DOMMatrix = require('../').DOMMatrix; - - // call func with an ImageData-offset and pixel color value appropriate for a 4-quadrant pattern within - // the width and height that's white in the upper-left & lower-right and black in the other corners - function eachPixel(bmp, func){ - let {width, height} = bmp; - for (let x=0; x=width/2 && y>=height/2) ? 255 : 0; - func(i, clr); + }); + + it("CanvasPattern stringifies as [object CanvasPattern]", async function () { + const img = await loadImage( + path.join(__dirname, "/fixtures/checkers.png") + ); + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d"); + const pattern = ctx.createPattern(img); + assert.strictEqual(pattern.toString(), "[object CanvasPattern]"); + }); + + it("CanvasPattern has class string of `CanvasPattern`", async function () { + const img = await loadImage( + path.join(__dirname, "/fixtures/checkers.png") + ); + const canvas = createCanvas(20, 20); + const ctx = canvas.getContext("2d"); + const pattern = ctx.createPattern(img); + assert.strictEqual( + Object.prototype.toString.call(pattern), + "[object CanvasPattern]" + ); + }); + + it("Context2d#createLinearGradient()", function () { + const canvas = createCanvas(20, 1); + const ctx = canvas.getContext("2d"); + const gradient = ctx.createLinearGradient(1, 1, 19, 1); + + gradient.addColorStop(0, "#fff"); + gradient.addColorStop(1, "#000"); + + ctx.fillStyle = gradient; + ctx.fillRect(0, 0, 20, 1); + + const imageData = ctx.getImageData(0, 0, 20, 1); + assert.equal(20, imageData.width); + assert.equal(1, imageData.height); + assert.equal(80, imageData.data.length); + + // (0,0) white + assert.equal(255, imageData.data[0]); + assert.equal(255, imageData.data[1]); + assert.equal(255, imageData.data[2]); + assert.equal(255, imageData.data[3]); + + // (20,0) black + const i = imageData.data.length - 4; + assert.equal(0, imageData.data[i + 0]); + assert.equal(0, imageData.data[i + 1]); + assert.equal(0, imageData.data[i + 2]); + assert.equal(255, imageData.data[i + 3]); + }); + it("Canvas has class string of `HTMLCanvasElement`", function () { + const canvas = createCanvas(20, 1); + + assert.strictEqual( + Object.prototype.toString.call(canvas), + "[object HTMLCanvasElement]" + ); + }); + + it("CanvasGradient stringifies as [object CanvasGradient]", function () { + const canvas = createCanvas(20, 1); + const ctx = canvas.getContext("2d"); + const gradient = ctx.createLinearGradient(1, 1, 19, 1); + assert.strictEqual(gradient.toString(), "[object CanvasGradient]"); + }); + + it("CanvasGradient has class string of `CanvasGradient`", function () { + const canvas = createCanvas(20, 1); + const ctx = canvas.getContext("2d"); + const gradient = ctx.createLinearGradient(1, 1, 19, 1); + assert.strictEqual( + Object.prototype.toString.call(gradient), + "[object CanvasGradient]" + ); + }); + + describe("Context2d#putImageData()", function () { + it("throws for invalid arguments", function () { + const canvas = createCanvas(2, 1); + const ctx = canvas.getContext("2d"); + assert.throws(function () { + ctx.putImageData({}, 0, 0); + }, TypeError); + assert.throws(function () { + ctx.putImageData(undefined, 0, 0); + }, TypeError); + }); + + it("throws if canvas is a PDF canvas (#1853)", function () { + const canvas = createCanvas(3, 6, "pdf"); + const ctx = canvas.getContext("2d"); + const srcImageData = createImageData( + new Uint8ClampedArray([ + 1, 2, 3, 255, 5, 6, 7, 255, 0, 1, 2, 255, 4, 5, 6, 255, + ]), + 2 + ); + assert.throws(() => { + ctx.putImageData(srcImageData, -1, -1); + }); + }); + + it("works for negative source values", function () { + const canvas = createCanvas(2, 2); + const ctx = canvas.getContext("2d"); + const srcImageData = createImageData( + new Uint8ClampedArray([ + 1, 2, 3, 255, 5, 6, 7, 255, 0, 1, 2, 255, 4, 5, 6, 255, + ]), + 2 + ); + + ctx.putImageData(srcImageData, -1, -1); + + const resImageData = ctx.getImageData(0, 0, 2, 2); + assert.deepEqual( + resImageData.data, + new Uint8ClampedArray([ + 4, 5, 6, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]) + ); + }); + + it("works, RGBA32", function () { + const canvas = createCanvas(2, 1); + const ctx = canvas.getContext("2d"); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 1, 1); + + // Copy left pixel to the right pixel + ctx.putImageData(ctx.getImageData(0, 0, 1, 1), 1, 0); + + const pixel = ctx.getImageData(1, 0, 1, 1); + + assert.equal(pixel.data[0], 255); + assert.equal(pixel.data[1], 0); + assert.equal(pixel.data[2], 0); + assert.equal(pixel.data[3], 255); + }); + + it("works, RGB24/alpha:false", function () { + const canvas = createCanvas(2, 1); + const ctx = canvas.getContext("2d", { pixelFormat: "RGB24" }); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 1, 1); + + // Copy left pixel to the right pixel + ctx.putImageData(ctx.getImageData(0, 0, 1, 1), 1, 0); + + const pixel = ctx.getImageData(1, 0, 1, 1); + + assert.equal(pixel.data[0], 255); + assert.equal(pixel.data[1], 0); + assert.equal(pixel.data[2], 0); + assert.equal(pixel.data[3], 255); + }); + + it("works, A8", function () { + const canvas = createCanvas(2, 1); + const ctx = canvas.getContext("2d", { pixelFormat: "A8" }); + + const imgData = ctx.getImageData(0, 0, 2, 1); + imgData.data[0] = 4; + imgData.data[1] = 21; + ctx.putImageData(imgData, 0, 0); + + const pixel = ctx.getImageData(0, 0, 2, 1); + + assert.equal(pixel.data[0], 4); + assert.equal(pixel.data[1], 21); + }); + + it("works, RGB16_565", function () { + const canvas = createCanvas(2, 1); + const ctx = canvas.getContext("2d", { pixelFormat: "RGB16_565" }); + + const imgData = ctx.getImageData(0, 0, 2, 1); + imgData.data[0] = 65535; // 2**16 - 1 + imgData.data[1] = 65500; + ctx.putImageData(imgData, 0, 0); + + const pixel = ctx.getImageData(0, 0, 2, 1); + + assert.equal(pixel.data[0], 65535); + assert.equal(pixel.data[1], 65500); + }); + }); + + it("Canvas#createPNGStream()", function (done) { + const canvas = createCanvas(20, 20); + const stream = canvas.createPNGStream(); + assert(stream instanceof Readable); + let firstChunk = true; + stream.on("data", function (chunk) { + if (firstChunk) { + firstChunk = false; + assert.equal("PNG", chunk.slice(1, 4).toString()); + } + }); + stream.on("end", function () { + done(); + }); + stream.on("error", function (err) { + done(err); + }); + }); + + it("Canvas#createPDFStream()", function (done) { + const canvas = createCanvas(20, 20, "pdf"); + const stream = canvas.createPDFStream(); + assert(stream instanceof Readable); + let firstChunk = true; + stream.on("data", function (chunk) { + if (firstChunk) { + firstChunk = false; + assert.equal(chunk.slice(1, 4).toString(), "PDF"); + } + }); + stream.on("end", function () { + done(); + }); + stream.on("error", function (err) { + done(err); + }); + }); + + it("Canvas#createJPEGStream()", function (done) { + const canvas = createCanvas(640, 480); + const stream = canvas.createJPEGStream(); + assert(stream instanceof Readable); + let firstChunk = true; + let bytes = 0; + stream.on("data", function (chunk) { + if (firstChunk) { + firstChunk = false; + assert.equal(0xff, chunk[0]); + assert.equal(0xd8, chunk[1]); + assert.equal(0xff, chunk[2]); + } + bytes += chunk.length; + }); + stream.on("end", function () { + assert.equal(bytes, 5427); + done(); + }); + stream.on("error", function (err) { + done(err); + }); + }); + + // based on https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format + // end of image marker (FF D9) must exist to maintain JPEG standards + it("EOI at end of Canvas#createJPEGStream()", function (done) { + const canvas = createCanvas(640, 480); + const stream = canvas.createJPEGStream(); + const chunks = []; + stream.on("data", function (chunk) { + chunks.push(chunk); + }); + stream.on("end", function () { + const lastTwoBytes = chunks.pop().slice(-2); + assert.equal(0xff, lastTwoBytes[0]); + assert.equal(0xd9, lastTwoBytes[1]); + done(); + }); + stream.on("error", function (err) { + done(err); + }); + }); + + it("Context2d#fill()", function () { + const canvas = createCanvas(2, 2); + const ctx = canvas.getContext("2d"); + + // fill whole canvas with white + ctx.fillStyle = "#fff"; + ctx.fillRect(0, 0, 2, 2); + + let imageData, n; + + // black + ctx.fillStyle = "#000"; + ctx.rect(0, 0, 2, 1); + ctx.rect(1, 0, 1, 2); + + ctx.fill("evenodd"); + // b | w + // ----- + // w | b + imageData = ctx.getImageData(0, 0, 2, 2); + // (0, 0) black + n = 0; + assert.equal(imageData.data[n * 4 + 0], 0); + assert.equal(imageData.data[n * 4 + 1], 0); + assert.equal(imageData.data[n * 4 + 2], 0); + assert.equal(imageData.data[n * 4 + 3], 255); + // (0, 1) white + n = 1; + assert.equal(imageData.data[n * 4 + 0], 255); + assert.equal(imageData.data[n * 4 + 1], 255); + assert.equal(imageData.data[n * 4 + 2], 255); + assert.equal(imageData.data[n * 4 + 3], 255); + // (1, 0) white + n = 2; + assert.equal(imageData.data[n * 4 + 0], 255); + assert.equal(imageData.data[n * 4 + 1], 255); + assert.equal(imageData.data[n * 4 + 2], 255); + assert.equal(imageData.data[n * 4 + 3], 255); + // (1, 1) black + n = 3; + assert.equal(imageData.data[n * 4 + 0], 0); + assert.equal(imageData.data[n * 4 + 1], 0); + assert.equal(imageData.data[n * 4 + 2], 0); + assert.equal(imageData.data[n * 4 + 3], 255); + + // should not retain previous value 'evenodd' + ctx.fill(); + // b | b + // ----- + // w | b + imageData = ctx.getImageData(0, 0, 2, 2); + // (0, 0) black + n = 0; + assert.equal(imageData.data[n * 4 + 0], 0); + assert.equal(imageData.data[n * 4 + 1], 0); + assert.equal(imageData.data[n * 4 + 2], 0); + assert.equal(imageData.data[n * 4 + 3], 255); + // (0, 1) black + n = 1; + assert.equal(imageData.data[n * 4 + 0], 0); + assert.equal(imageData.data[n * 4 + 1], 0); + assert.equal(imageData.data[n * 4 + 2], 0); + assert.equal(imageData.data[n * 4 + 3], 255); + // (1, 0) white + n = 2; + assert.equal(imageData.data[n * 4 + 0], 255); + assert.equal(imageData.data[n * 4 + 1], 255); + assert.equal(imageData.data[n * 4 + 2], 255); + assert.equal(imageData.data[n * 4 + 3], 255); + // (1, 1) black + n = 3; + assert.equal(imageData.data[n * 4 + 0], 0); + assert.equal(imageData.data[n * 4 + 1], 0); + assert.equal(imageData.data[n * 4 + 2], 0); + assert.equal(imageData.data[n * 4 + 3], 255); + }); + + it("Context2d#clip()", function () { + const canvas = createCanvas(2, 2); + const ctx = canvas.getContext("2d"); + + // fill whole canvas with white + ctx.fillStyle = "#fff"; + ctx.fillRect(0, 0, 2, 2); + + let imageData, n; + + // black + ctx.fillStyle = "#000"; + ctx.rect(0, 0, 2, 1); + ctx.rect(1, 0, 1, 2); + + ctx.clip("evenodd"); + ctx.fillRect(0, 0, 2, 2); + // b | w + // ----- + // w | b + imageData = ctx.getImageData(0, 0, 2, 2); + // (0, 0) black + n = 0; + assert.equal(imageData.data[n * 4 + 0], 0); + assert.equal(imageData.data[n * 4 + 1], 0); + assert.equal(imageData.data[n * 4 + 2], 0); + assert.equal(imageData.data[n * 4 + 3], 255); + // (0, 1) white + n = 1; + assert.equal(imageData.data[n * 4 + 0], 255); + assert.equal(imageData.data[n * 4 + 1], 255); + assert.equal(imageData.data[n * 4 + 2], 255); + assert.equal(imageData.data[n * 4 + 3], 255); + // (1, 0) white + n = 2; + assert.equal(imageData.data[n * 4 + 0], 255); + assert.equal(imageData.data[n * 4 + 1], 255); + assert.equal(imageData.data[n * 4 + 2], 255); + assert.equal(imageData.data[n * 4 + 3], 255); + // (1, 1) black + n = 3; + assert.equal(imageData.data[n * 4 + 0], 0); + assert.equal(imageData.data[n * 4 + 1], 0); + assert.equal(imageData.data[n * 4 + 2], 0); + assert.equal(imageData.data[n * 4 + 3], 255); + + ctx.clip(); + ctx.fillRect(0, 0, 2, 2); + // b | b + // ----- + // w | b + imageData = ctx.getImageData(0, 0, 2, 2); + // (0, 0) black + n = 0; + assert.equal(imageData.data[n * 4 + 0], 0); + assert.equal(imageData.data[n * 4 + 1], 0); + assert.equal(imageData.data[n * 4 + 2], 0); + assert.equal(imageData.data[n * 4 + 3], 255); + // (0, 1) white + n = 1; + assert.equal(imageData.data[n * 4 + 0], 255); + assert.equal(imageData.data[n * 4 + 1], 255); + assert.equal(imageData.data[n * 4 + 2], 255); + assert.equal(imageData.data[n * 4 + 3], 255); + // (1, 0) white + n = 2; + assert.equal(imageData.data[n * 4 + 0], 255); + assert.equal(imageData.data[n * 4 + 1], 255); + assert.equal(imageData.data[n * 4 + 2], 255); + assert.equal(imageData.data[n * 4 + 3], 255); + // (1, 1) black + n = 3; + assert.equal(imageData.data[n * 4 + 0], 0); + assert.equal(imageData.data[n * 4 + 1], 0); + assert.equal(imageData.data[n * 4 + 2], 0); + assert.equal(imageData.data[n * 4 + 3], 255); + }); + + it("Context2d#IsPointInPath()", function () { + const canvas = createCanvas(4, 4); + const ctx = canvas.getContext("2d"); + + ctx.rect(0, 0, 4, 2); + ctx.rect(2, 0, 2, 4); + ctx.stroke(); + + assert.ok(ctx.isPointInPath(1, 1, "evenodd")); + assert.ok(!ctx.isPointInPath(3, 1, "evenodd")); + assert.ok(ctx.isPointInPath(3, 1)); + assert.ok(!ctx.isPointInPath(1, 3, "evenodd")); + assert.ok(ctx.isPointInPath(3, 3, "evenodd")); + }); + + it("Context2d#rotate(angle)", function () { + const canvas = createCanvas(4, 4); + const ctx = canvas.getContext("2d"); + + // Number + ctx.resetTransform(); + testAngle(1.23, 1.23); + + // String + ctx.resetTransform(); + testAngle("-4.56e-1", -0.456); + + // Boolean + ctx.resetTransform(); + testAngle(true, 1); + + // Array + ctx.resetTransform(); + testAngle([7.8], 7.8); + + // Object + const obj = Object.create(null); + if (+process.version.match(/\d+/) >= 6) { + obj[Symbol.toPrimitive] = function () { + return 0.89; + }; + } else { + obj.valueOf = function () { + return 0.89; + }; + } + ctx.resetTransform(); + testAngle(obj, 0.89); + + // NaN + ctx.resetTransform(); + ctx.rotate(0.91); + testAngle(NaN, 0.91); + + // Infinite value + ctx.resetTransform(); + ctx.rotate(0.94); + testAngle(-Infinity, 0.94); + + function testAngle(angle, expected) { + ctx.rotate(angle); + + const mat = ctx.currentTransform; + const sin = Math.sin(expected); + const cos = Math.cos(expected); + + assert.ok(Math.abs(mat.m11 - cos) < Number.EPSILON); + assert.ok(Math.abs(mat.m12 - sin) < Number.EPSILON); + assert.ok(Math.abs(mat.m21 + sin) < Number.EPSILON); + assert.ok(Math.abs(mat.m22 - cos) < Number.EPSILON); + } + }); + + it("Context2d#drawImage()", function () { + const canvas = createCanvas(500, 500); + const ctx = canvas.getContext("2d"); + + // Drawing canvas to itself + ctx.fillStyle = "white"; + ctx.fillRect(0, 0, 500, 500); + ctx.fillStyle = "black"; + ctx.fillRect(5, 5, 10, 10); + ctx.drawImage(canvas, 20, 20); + + let imgd = ctx.getImageData(0, 0, 500, 500); + let data = imgd.data; + let count = 0; + + for (let i = 0; i < 500 * 500 * 4; i += 4) { + if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0) { + count++; + } + } + + assert.strictEqual(count, 10 * 10 * 2); + + // Drawing zero-width image + ctx.drawImage(canvas, 0, 0, 0, 0, 0, 0, 0, 0); + ctx.drawImage(canvas, 0, 0, 0, 0, 1, 1, 1, 1); + ctx.drawImage(canvas, 1, 1, 1, 1, 0, 0, 0, 0); + ctx.fillStyle = "white"; + ctx.fillRect(0, 0, 500, 500); + + imgd = ctx.getImageData(0, 0, 500, 500); + data = imgd.data; + count = 0; + + for (let i = 0; i < 500 * 500 * 4; i += 4) { + if (data[i] === 255 && data[i + 1] === 255 && data[i + 2] === 255) { + count++; + } + } + + assert.strictEqual(count, 500 * 500); + }); + + it("Context2d#SetFillColor()", function () { + const canvas = createCanvas(2, 2); + const ctx = canvas.getContext("2d"); + + ctx.fillStyle = "#808080"; + ctx.fillRect(0, 0, 2, 2); + const data = ctx.getImageData(0, 0, 2, 2).data; + + data.forEach(function (byte, index) { + if ((index + 1) & 3) { + assert.strictEqual(byte, 128); + } else { + assert.strictEqual(byte, 255); + } + }); + }); + + describe("Context2d#save()/restore()", function () { + // Based on WPT meta:2d.state.saverestore + const state = [ + // non-default values to test with + ["strokeStyle", "#ff0000"], + ["fillStyle", "#ff0000"], + ["globalAlpha", 0.5], + ["lineWidth", 0.5], + ["lineCap", "round"], + ["lineJoin", "round"], + ["miterLimit", 0.5], + ["shadowOffsetX", 5], + ["shadowOffsetY", 5], + ["shadowBlur", 5], + ["shadowColor", "#ff0000"], + ["globalCompositeOperation", "copy"], + ["font", "25px serif"], + ["textAlign", "center"], + ["textBaseline", "bottom"], + // Added vs. WPT + ["imageSmoothingEnabled", false], + // ['imageSmoothingQuality', ], // not supported by node-canvas, #2114 + ["lineDashOffset", 1.0], + // Non-standard properties: + ["patternQuality", "best"], + // ['quality', 'best'], // doesn't do anything, TODO remove + ["textDrawingMode", "glyph"], + ["antialias", "gray"], + ]; + + for (const [k, v] of state) { + it(`2d.state.saverestore.${k}`, function () { + const canvas = createCanvas(0, 0); + const ctx = canvas.getContext("2d"); + + // restore() undoes modification: + let old = ctx[k]; + ctx.save(); + ctx[k] = v; + ctx.restore(); + assert.strictEqual(ctx[k], old); + + // save() doesn't modify the value: + ctx[k] = v; + old = ctx[k]; + ctx.save(); + assert.strictEqual(ctx[k], old); + ctx.restore(); + }); } - } - } - - // create a canvas with a single repeat of the pattern within its dims - function makeCheckerboard(w, h){ - let check = createCanvas(w, h), - ctx = check.getContext('2d'), - bmp = ctx.createImageData(w, h); - eachPixel(bmp, (i, clr) => bmp.data.set([clr,clr,clr, 255], i)); - ctx.putImageData(bmp, 0, 0); - return check; - } - - // verify that the region looks like a single 4-quadrant checkerboard cell - function isCheckerboard(ctx, w, h){ - let bmp = ctx.getImageData(0, 0, w, h); - eachPixel(bmp, (i, clr) => { - let [r, g, b, a] = bmp.data.slice(i, i+4); - assert.ok(r==clr && g==clr && b==clr && a==255); - }) - } - - let w = 160, h = 160, - canvas = createCanvas(w, h), - ctx = canvas.getContext('2d'), - pat = ctx.createPattern(makeCheckerboard(w, h), 'repeat'), - mat = new DOMMatrix(); - - ctx.patternQuality='nearest'; - ctx.fillStyle = pat; - - // draw a single repeat of the pattern at each scale and then confirm that - // the transformation succeeded - [1, .5, .25, .125, 0.0625].forEach(mag => { - mat = new DOMMatrix().scale(mag); - pat.setTransform(mat); - ctx.fillRect(0,0, w*mag, h*mag); - isCheckerboard(ctx, w*mag, h*mag); - }) - }); - - it('Context2d#createPattern(Image)', async function () { - const img = await loadImage(path.join(__dirname, '/fixtures/checkers.png')); - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d') - const pattern = ctx.createPattern(img) - - ctx.fillStyle = pattern - ctx.fillRect(0, 0, 20, 20) - - const imageData = ctx.getImageData(0, 0, 20, 20) - assert.equal(20, imageData.width) - assert.equal(20, imageData.height) - assert.equal(1600, imageData.data.length) - - let i = 0; let b = true - while (i < imageData.data.length) { - if (b) { - assert.equal(0, imageData.data[i++]) - assert.equal(0, imageData.data[i++]) - assert.equal(0, imageData.data[i++]) - assert.equal(255, imageData.data[i++]) - } else { - assert.equal(255, imageData.data[i++]) - assert.equal(255, imageData.data[i++]) - assert.equal(255, imageData.data[i++]) - assert.equal(255, imageData.data[i++]) - } - // alternate b, except when moving to a new row - b = i % (imageData.width * 4) === 0 ? b : !b - } - }) - - it('CanvasPattern stringifies as [object CanvasPattern]', async function () { - const img = await loadImage(path.join(__dirname, '/fixtures/checkers.png')); - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d') - const pattern = ctx.createPattern(img) - assert.strictEqual(pattern.toString(), '[object CanvasPattern]') - }) - - it('CanvasPattern has class string of `CanvasPattern`', async function () { - const img = await loadImage(path.join(__dirname, '/fixtures/checkers.png')); - const canvas = createCanvas(20, 20) - const ctx = canvas.getContext('2d') - const pattern = ctx.createPattern(img) - assert.strictEqual(Object.prototype.toString.call(pattern), '[object CanvasPattern]') - }) - - it('Context2d#createLinearGradient()', function () { - const canvas = createCanvas(20, 1) - const ctx = canvas.getContext('2d') - const gradient = ctx.createLinearGradient(1, 1, 19, 1) - - gradient.addColorStop(0, '#fff') - gradient.addColorStop(1, '#000') - - ctx.fillStyle = gradient - ctx.fillRect(0, 0, 20, 1) - - const imageData = ctx.getImageData(0, 0, 20, 1) - assert.equal(20, imageData.width) - assert.equal(1, imageData.height) - assert.equal(80, imageData.data.length) - - // (0,0) white - assert.equal(255, imageData.data[0]) - assert.equal(255, imageData.data[1]) - assert.equal(255, imageData.data[2]) - assert.equal(255, imageData.data[3]) - - // (20,0) black - const i = imageData.data.length - 4 - assert.equal(0, imageData.data[i + 0]) - assert.equal(0, imageData.data[i + 1]) - assert.equal(0, imageData.data[i + 2]) - assert.equal(255, imageData.data[i + 3]) - }) - it('Canvas has class string of `HTMLCanvasElement`', function () { - const canvas = createCanvas(20, 1) - - assert.strictEqual(Object.prototype.toString.call(canvas), '[object HTMLCanvasElement]') - }) - - it('CanvasGradient stringifies as [object CanvasGradient]', function () { - const canvas = createCanvas(20, 1) - const ctx = canvas.getContext('2d') - const gradient = ctx.createLinearGradient(1, 1, 19, 1) - assert.strictEqual(gradient.toString(), '[object CanvasGradient]') - }) - - it('CanvasGradient has class string of `CanvasGradient`', function () { - const canvas = createCanvas(20, 1) - const ctx = canvas.getContext('2d') - const gradient = ctx.createLinearGradient(1, 1, 19, 1) - assert.strictEqual(Object.prototype.toString.call(gradient), '[object CanvasGradient]') - }) - - describe('Context2d#putImageData()', function () { - it('throws for invalid arguments', function () { - const canvas = createCanvas(2, 1) - const ctx = canvas.getContext('2d') - assert.throws(function () { ctx.putImageData({}, 0, 0) }, TypeError) - assert.throws(function () { ctx.putImageData(undefined, 0, 0) }, TypeError) - }) - - it('throws if canvas is a PDF canvas (#1853)', function () { - const canvas = createCanvas(3, 6, 'pdf') - const ctx = canvas.getContext('2d') - const srcImageData = createImageData(new Uint8ClampedArray([ - 1, 2, 3, 255, 5, 6, 7, 255, - 0, 1, 2, 255, 4, 5, 6, 255 - ]), 2) - assert.throws(() => { - ctx.putImageData(srcImageData, -1, -1) - }) - }) - - it('works for negative source values', function () { - const canvas = createCanvas(2, 2) - const ctx = canvas.getContext('2d') - const srcImageData = createImageData(new Uint8ClampedArray([ - 1, 2, 3, 255, 5, 6, 7, 255, - 0, 1, 2, 255, 4, 5, 6, 255 - ]), 2) - - ctx.putImageData(srcImageData, -1, -1) - - const resImageData = ctx.getImageData(0, 0, 2, 2) - assert.deepEqual(resImageData.data, new Uint8ClampedArray([ - 4, 5, 6, 255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 - ])) - }) - - it('works, RGBA32', function () { - const canvas = createCanvas(2, 1) - const ctx = canvas.getContext('2d') - ctx.fillStyle = '#f00' - ctx.fillRect(0, 0, 1, 1) - - // Copy left pixel to the right pixel - ctx.putImageData(ctx.getImageData(0, 0, 1, 1), 1, 0) - - const pixel = ctx.getImageData(1, 0, 1, 1) - - assert.equal(pixel.data[0], 255) - assert.equal(pixel.data[1], 0) - assert.equal(pixel.data[2], 0) - assert.equal(pixel.data[3], 255) - }) - - it('works, RGB24/alpha:false', function () { - const canvas = createCanvas(2, 1) - const ctx = canvas.getContext('2d', { pixelFormat: 'RGB24' }) - ctx.fillStyle = '#f00' - ctx.fillRect(0, 0, 1, 1) - - // Copy left pixel to the right pixel - ctx.putImageData(ctx.getImageData(0, 0, 1, 1), 1, 0) - - const pixel = ctx.getImageData(1, 0, 1, 1) - - assert.equal(pixel.data[0], 255) - assert.equal(pixel.data[1], 0) - assert.equal(pixel.data[2], 0) - assert.equal(pixel.data[3], 255) - }) - - it('works, A8', function () { - const canvas = createCanvas(2, 1) - const ctx = canvas.getContext('2d', { pixelFormat: 'A8' }) - - const imgData = ctx.getImageData(0, 0, 2, 1) - imgData.data[0] = 4 - imgData.data[1] = 21 - ctx.putImageData(imgData, 0, 0) - - const pixel = ctx.getImageData(0, 0, 2, 1) - - assert.equal(pixel.data[0], 4) - assert.equal(pixel.data[1], 21) - }) - - it('works, RGB16_565', function () { - const canvas = createCanvas(2, 1) - const ctx = canvas.getContext('2d', { pixelFormat: 'RGB16_565' }) - - const imgData = ctx.getImageData(0, 0, 2, 1) - imgData.data[0] = 65535 // 2**16 - 1 - imgData.data[1] = 65500 - ctx.putImageData(imgData, 0, 0) - - const pixel = ctx.getImageData(0, 0, 2, 1) - - assert.equal(pixel.data[0], 65535) - assert.equal(pixel.data[1], 65500) - }) - }) - - it('Canvas#createPNGStream()', function (done) { - const canvas = createCanvas(20, 20) - const stream = canvas.createPNGStream() - assert(stream instanceof Readable) - let firstChunk = true - stream.on('data', function (chunk) { - if (firstChunk) { - firstChunk = false - assert.equal('PNG', chunk.slice(1, 4).toString()) - } - }) - stream.on('end', function () { - done() - }) - stream.on('error', function (err) { - done(err) - }) - }) - - it('Canvas#createPDFStream()', function (done) { - const canvas = createCanvas(20, 20, 'pdf') - const stream = canvas.createPDFStream() - assert(stream instanceof Readable) - let firstChunk = true - stream.on('data', function (chunk) { - if (firstChunk) { - firstChunk = false - assert.equal(chunk.slice(1, 4).toString(), 'PDF') - } - }) - stream.on('end', function () { - done() - }) - stream.on('error', function (err) { - done(err) - }) - }) - - it('Canvas#createJPEGStream()', function (done) { - const canvas = createCanvas(640, 480) - const stream = canvas.createJPEGStream() - assert(stream instanceof Readable) - let firstChunk = true - let bytes = 0 - stream.on('data', function (chunk) { - if (firstChunk) { - firstChunk = false - assert.equal(0xFF, chunk[0]) - assert.equal(0xD8, chunk[1]) - assert.equal(0xFF, chunk[2]) - } - bytes += chunk.length - }) - stream.on('end', function () { - assert.equal(bytes, 5427) - done() - }) - stream.on('error', function (err) { - done(err) - }) - }) - - // based on https://en.wikipedia.org/wiki/JPEG_File_Interchange_Format - // end of image marker (FF D9) must exist to maintain JPEG standards - it('EOI at end of Canvas#createJPEGStream()', function (done) { - const canvas = createCanvas(640, 480) - const stream = canvas.createJPEGStream() - const chunks = [] - stream.on('data', function (chunk) { - chunks.push(chunk) - }) - stream.on('end', function () { - const lastTwoBytes = chunks.pop().slice(-2) - assert.equal(0xFF, lastTwoBytes[0]) - assert.equal(0xD9, lastTwoBytes[1]) - done() - }) - stream.on('error', function (err) { - done(err) - }) - }) - - it('Context2d#fill()', function () { - const canvas = createCanvas(2, 2) - const ctx = canvas.getContext('2d') - - // fill whole canvas with white - ctx.fillStyle = '#fff' - ctx.fillRect(0, 0, 2, 2) - - let imageData, n - - // black - ctx.fillStyle = '#000' - ctx.rect(0, 0, 2, 1) - ctx.rect(1, 0, 1, 2) - - ctx.fill('evenodd') - // b | w - // ----- - // w | b - imageData = ctx.getImageData(0, 0, 2, 2) - // (0, 0) black - n = 0 - assert.equal(imageData.data[n * 4 + 0], 0) - assert.equal(imageData.data[n * 4 + 1], 0) - assert.equal(imageData.data[n * 4 + 2], 0) - assert.equal(imageData.data[n * 4 + 3], 255) - // (0, 1) white - n = 1 - assert.equal(imageData.data[n * 4 + 0], 255) - assert.equal(imageData.data[n * 4 + 1], 255) - assert.equal(imageData.data[n * 4 + 2], 255) - assert.equal(imageData.data[n * 4 + 3], 255) - // (1, 0) white - n = 2 - assert.equal(imageData.data[n * 4 + 0], 255) - assert.equal(imageData.data[n * 4 + 1], 255) - assert.equal(imageData.data[n * 4 + 2], 255) - assert.equal(imageData.data[n * 4 + 3], 255) - // (1, 1) black - n = 3 - assert.equal(imageData.data[n * 4 + 0], 0) - assert.equal(imageData.data[n * 4 + 1], 0) - assert.equal(imageData.data[n * 4 + 2], 0) - assert.equal(imageData.data[n * 4 + 3], 255) - - // should not retain previous value 'evenodd' - ctx.fill() - // b | b - // ----- - // w | b - imageData = ctx.getImageData(0, 0, 2, 2) - // (0, 0) black - n = 0 - assert.equal(imageData.data[n * 4 + 0], 0) - assert.equal(imageData.data[n * 4 + 1], 0) - assert.equal(imageData.data[n * 4 + 2], 0) - assert.equal(imageData.data[n * 4 + 3], 255) - // (0, 1) black - n = 1 - assert.equal(imageData.data[n * 4 + 0], 0) - assert.equal(imageData.data[n * 4 + 1], 0) - assert.equal(imageData.data[n * 4 + 2], 0) - assert.equal(imageData.data[n * 4 + 3], 255) - // (1, 0) white - n = 2 - assert.equal(imageData.data[n * 4 + 0], 255) - assert.equal(imageData.data[n * 4 + 1], 255) - assert.equal(imageData.data[n * 4 + 2], 255) - assert.equal(imageData.data[n * 4 + 3], 255) - // (1, 1) black - n = 3 - assert.equal(imageData.data[n * 4 + 0], 0) - assert.equal(imageData.data[n * 4 + 1], 0) - assert.equal(imageData.data[n * 4 + 2], 0) - assert.equal(imageData.data[n * 4 + 3], 255) - }) - - it('Context2d#clip()', function () { - const canvas = createCanvas(2, 2) - const ctx = canvas.getContext('2d') - - // fill whole canvas with white - ctx.fillStyle = '#fff' - ctx.fillRect(0, 0, 2, 2) - - let imageData, n - - // black - ctx.fillStyle = '#000' - ctx.rect(0, 0, 2, 1) - ctx.rect(1, 0, 1, 2) - - ctx.clip('evenodd') - ctx.fillRect(0, 0, 2, 2) - // b | w - // ----- - // w | b - imageData = ctx.getImageData(0, 0, 2, 2) - // (0, 0) black - n = 0 - assert.equal(imageData.data[n * 4 + 0], 0) - assert.equal(imageData.data[n * 4 + 1], 0) - assert.equal(imageData.data[n * 4 + 2], 0) - assert.equal(imageData.data[n * 4 + 3], 255) - // (0, 1) white - n = 1 - assert.equal(imageData.data[n * 4 + 0], 255) - assert.equal(imageData.data[n * 4 + 1], 255) - assert.equal(imageData.data[n * 4 + 2], 255) - assert.equal(imageData.data[n * 4 + 3], 255) - // (1, 0) white - n = 2 - assert.equal(imageData.data[n * 4 + 0], 255) - assert.equal(imageData.data[n * 4 + 1], 255) - assert.equal(imageData.data[n * 4 + 2], 255) - assert.equal(imageData.data[n * 4 + 3], 255) - // (1, 1) black - n = 3 - assert.equal(imageData.data[n * 4 + 0], 0) - assert.equal(imageData.data[n * 4 + 1], 0) - assert.equal(imageData.data[n * 4 + 2], 0) - assert.equal(imageData.data[n * 4 + 3], 255) - - ctx.clip() - ctx.fillRect(0, 0, 2, 2) - // b | b - // ----- - // w | b - imageData = ctx.getImageData(0, 0, 2, 2) - // (0, 0) black - n = 0 - assert.equal(imageData.data[n * 4 + 0], 0) - assert.equal(imageData.data[n * 4 + 1], 0) - assert.equal(imageData.data[n * 4 + 2], 0) - assert.equal(imageData.data[n * 4 + 3], 255) - // (0, 1) white - n = 1 - assert.equal(imageData.data[n * 4 + 0], 255) - assert.equal(imageData.data[n * 4 + 1], 255) - assert.equal(imageData.data[n * 4 + 2], 255) - assert.equal(imageData.data[n * 4 + 3], 255) - // (1, 0) white - n = 2 - assert.equal(imageData.data[n * 4 + 0], 255) - assert.equal(imageData.data[n * 4 + 1], 255) - assert.equal(imageData.data[n * 4 + 2], 255) - assert.equal(imageData.data[n * 4 + 3], 255) - // (1, 1) black - n = 3 - assert.equal(imageData.data[n * 4 + 0], 0) - assert.equal(imageData.data[n * 4 + 1], 0) - assert.equal(imageData.data[n * 4 + 2], 0) - assert.equal(imageData.data[n * 4 + 3], 255) - }) - - it('Context2d#IsPointInPath()', function () { - const canvas = createCanvas(4, 4) - const ctx = canvas.getContext('2d') - - ctx.rect(0, 0, 4, 2) - ctx.rect(2, 0, 2, 4) - ctx.stroke() - - assert.ok(ctx.isPointInPath(1, 1, 'evenodd')) - assert.ok(!ctx.isPointInPath(3, 1, 'evenodd')) - assert.ok(ctx.isPointInPath(3, 1)) - assert.ok(!ctx.isPointInPath(1, 3, 'evenodd')) - assert.ok(ctx.isPointInPath(3, 3, 'evenodd')) - }) - - it('Context2d#rotate(angle)', function () { - const canvas = createCanvas(4, 4) - const ctx = canvas.getContext('2d') - - // Number - ctx.resetTransform() - testAngle(1.23, 1.23) - - // String - ctx.resetTransform() - testAngle('-4.56e-1', -0.456) - - // Boolean - ctx.resetTransform() - testAngle(true, 1) - - // Array - ctx.resetTransform() - testAngle([7.8], 7.8) - - // Object - const obj = Object.create(null) - if (+process.version.match(/\d+/) >= 6) { obj[Symbol.toPrimitive] = function () { return 0.89 } } else { obj.valueOf = function () { return 0.89 } } - ctx.resetTransform() - testAngle(obj, 0.89) - - // NaN - ctx.resetTransform() - ctx.rotate(0.91) - testAngle(NaN, 0.91) - - // Infinite value - ctx.resetTransform() - ctx.rotate(0.94) - testAngle(-Infinity, 0.94) - - function testAngle (angle, expected) { - ctx.rotate(angle) - - const mat = ctx.currentTransform - const sin = Math.sin(expected) - const cos = Math.cos(expected) - - assert.ok(Math.abs(mat.m11 - cos) < Number.EPSILON) - assert.ok(Math.abs(mat.m12 - sin) < Number.EPSILON) - assert.ok(Math.abs(mat.m21 + sin) < Number.EPSILON) - assert.ok(Math.abs(mat.m22 - cos) < Number.EPSILON) - } - }) - - it('Context2d#drawImage()', function () { - const canvas = createCanvas(500, 500) - const ctx = canvas.getContext('2d') - - // Drawing canvas to itself - ctx.fillStyle = 'white' - ctx.fillRect(0, 0, 500, 500) - ctx.fillStyle = 'black' - ctx.fillRect(5, 5, 10, 10) - ctx.drawImage(canvas, 20, 20) - - let imgd = ctx.getImageData(0, 0, 500, 500) - let data = imgd.data - let count = 0 - - for (let i = 0; i < 500 * 500 * 4; i += 4) { - if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0) { count++ } - } - - assert.strictEqual(count, 10 * 10 * 2) - - // Drawing zero-width image - ctx.drawImage(canvas, 0, 0, 0, 0, 0, 0, 0, 0) - ctx.drawImage(canvas, 0, 0, 0, 0, 1, 1, 1, 1) - ctx.drawImage(canvas, 1, 1, 1, 1, 0, 0, 0, 0) - ctx.fillStyle = 'white' - ctx.fillRect(0, 0, 500, 500) - - imgd = ctx.getImageData(0, 0, 500, 500) - data = imgd.data - count = 0 - - for (let i = 0; i < 500 * 500 * 4; i += 4) { - if (data[i] === 255 && data[i + 1] === 255 && data[i + 2] === 255) { count++ } - } - - assert.strictEqual(count, 500 * 500) - }) - - it('Context2d#SetFillColor()', function () { - const canvas = createCanvas(2, 2) - const ctx = canvas.getContext('2d') - - ctx.fillStyle = '#808080' - ctx.fillRect(0, 0, 2, 2) - const data = ctx.getImageData(0, 0, 2, 2).data - - data.forEach(function (byte, index) { - if (index + 1 & 3) { assert.strictEqual(byte, 128) } else { assert.strictEqual(byte, 255) } - }) - }) - - describe('Context2d#save()/restore()', function () { - // Based on WPT meta:2d.state.saverestore - const state = [ // non-default values to test with - ['strokeStyle', '#ff0000'], - ['fillStyle', '#ff0000'], - ['globalAlpha', 0.5], - ['lineWidth', 0.5], - ['lineCap', 'round'], - ['lineJoin', 'round'], - ['miterLimit', 0.5], - ['shadowOffsetX', 5], - ['shadowOffsetY', 5], - ['shadowBlur', 5], - ['shadowColor', '#ff0000'], - ['globalCompositeOperation', 'copy'], - ['font', '25px serif'], - ['textAlign', 'center'], - ['textBaseline', 'bottom'], - // Added vs. WPT - ['imageSmoothingEnabled', false], - // ['imageSmoothingQuality', ], // not supported by node-canvas, #2114 - ['lineDashOffset', 1.0], - // Non-standard properties: - ['patternQuality', 'best'], - // ['quality', 'best'], // doesn't do anything, TODO remove - ['textDrawingMode', 'glyph'], - ['antialias', 'gray'] - ] - - for (const [k, v] of state) { - it(`2d.state.saverestore.${k}`, function () { - const canvas = createCanvas(0, 0) - const ctx = canvas.getContext('2d') - - // restore() undoes modification: - let old = ctx[k] - ctx.save() - ctx[k] = v - ctx.restore() - assert.strictEqual(ctx[k], old) - - // save() doesn't modify the value: - ctx[k] = v - old = ctx[k] - ctx.save() - assert.strictEqual(ctx[k], old) - ctx.restore() - }) - } - }) -}) + }); +}); diff --git a/test/dommatrix.test.js b/test/dommatrix.test.js index 2c29e73eb..b60c588b3 100644 --- a/test/dommatrix.test.js +++ b/test/dommatrix.test.js @@ -1,589 +1,594 @@ /* eslint-env mocha */ -'use stricit' +"use stricit"; -const {DOMMatrix} = require('../') +const { DOMMatrix } = require("../"); -const assert = require('assert') +const assert = require("assert"); // This doesn't need to be precise; we're not testing the engine's trig // implementations. -const TOLERANCE = 0.001 -function assertApprox (actual, expected, tolerance) { - if (typeof tolerance !== 'number') tolerance = TOLERANCE - assert.ok(expected > actual - tolerance && expected < actual + tolerance, - `Expected ${expected} to equal ${actual} +/- ${tolerance}`) +const TOLERANCE = 0.001; +function assertApprox(actual, expected, tolerance) { + if (typeof tolerance !== "number") tolerance = TOLERANCE; + assert.ok( + expected > actual - tolerance && expected < actual + tolerance, + `Expected ${expected} to equal ${actual} +/- ${tolerance}` + ); } -function assertApproxDeep (actual, expected, tolerance) { - expected.forEach(function (value, index) { - assertApprox(actual[index], value) - }) +function assertApproxDeep(actual, expected, tolerance) { + expected.forEach(function (value, index) { + assertApprox(actual[index], value); + }); } -describe('DOMMatrix', function () { - const Avals = [4, 5, 1, 8, 0, 3, 6, 1, 3, 5, 0, 9, 2, 4, 6, 1] - const Bvals = [1, 5, 1, 0, 0, 3, 6, 1, 3, 5, 7, 2, 2, 0, 6, 1] - const Xvals = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0] - const AxB = new Float64Array([7, 25, 31, 22, 20, 43, 24, 58, 37, 73, 45, 94, 28, 44, 8, 71]) - const BxA = new Float64Array([23, 40, 89, 15, 20, 39, 66, 16, 21, 30, 87, 14, 22, 52, 74, 17]) - - describe('constructor, general', function () { - it('aliases a,b,c,d,e,f properly', function () { - const y = new DOMMatrix(Avals) - assert.strictEqual(y.a, y.m11) - assert.strictEqual(y.b, y.m12) - assert.strictEqual(y.c, y.m21) - assert.strictEqual(y.d, y.m22) - assert.strictEqual(y.e, y.m41) - assert.strictEqual(y.f, y.m42) - }) - - it('parses lists of transforms per spec', function () { - const y = new DOMMatrix('matrix(1, -2, 3.2, 4.5e2, 3.5E-1, +2) matrix(1, 2, 4, 1, 0, 0)') - assert.strictEqual(y.a, 7.4) - assert.strictEqual(y.b, 898) - assert.strictEqual(y.c, 7.2) - assert.strictEqual(y.d, 442) - assert.strictEqual(y.e, 0.35) - assert.strictEqual(y.f, 2) - assert.strictEqual(y.is2D, true) - }) - - it('parses matrix2d(<16 numbers>) per spec', function () { - const y = new DOMMatrix('matrix3d(1, -0, 0, 0, -2.12, 1, 0, 0, 3e2, 0, +1, 1.252, 0, 0, 0, 1)') - assert.deepEqual(y.toFloat64Array(), new Float64Array([ - 1, 0, 0, 0, - -2.12, 1, 0, 0, - 300, 0, 1, 1.252, - 0, 0, 0, 1 - ])) - assert.strictEqual(y.is2D, false) - }) - - it('sets is2D to true if matrix2d(<16 numbers>) is 2D', function () { - const y = new DOMMatrix('matrix3d(1, 2, 0, 0, 3, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)') - assert.deepEqual(y.toFloat64Array(), new Float64Array([ - 1, 2, 0, 0, - 3, 4, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ])) - assert.strictEqual(y.is2D, true) - }) - }) - - describe('fromMatrix', function () {}) - describe('fromFloat32Array', function () {}) - describe('fromFloat64Array', function () {}) - - describe('multiply', function () { - it('performs self.other, returning a new DOMMatrix', function () { - const A = new DOMMatrix(Avals) - const B = new DOMMatrix(Bvals) - const C = B.multiply(A) - assert.deepEqual(C.toFloat64Array(), BxA) - assert.notStrictEqual(A, C) - assert.notStrictEqual(B, C) - }) - }) - - describe('multiplySelf', function () { - it('performs self.other, mutating self', function () { - const A = new DOMMatrix(Avals) - const B = new DOMMatrix(Bvals) - const C = B.multiplySelf(A) - assert.deepEqual(C.toFloat64Array(), BxA) - assert.strictEqual(C, B) - }) - }) - - describe('preMultiplySelf', function () { - it('performs other.self, mutating self', function () { - const A = new DOMMatrix(Avals) - const B = new DOMMatrix(Bvals) - const C = B.preMultiplySelf(A) - assert.deepEqual(C.toFloat64Array(), AxB) - assert.strictEqual(C, B) - }) - }) - - describe('translate', function () {}) - - describe('translateSelf', function () { - it('works, 1 arg', function () { - const A = new DOMMatrix() - A.translateSelf(1) - assert.deepEqual(A.toFloat64Array(), new Float64Array([ - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 1, 0, 0, 1 - ])) - }) - - it('works, 2 args', function () { - const A = new DOMMatrix(Avals) - const C = A.translateSelf(2, 5) - assert.deepEqual(C.toFloat64Array(), new Float64Array([ - 4, 5, 1, 8, - 0, 3, 6, 1, - 3, 5, 0, 9, - 10, 29, 38, 22 - ])) - }) - - it('works, 3 args', function () { - const A = new DOMMatrix() - A.translateSelf(1, 2, 3) - assert.deepEqual(A.toFloat64Array(), new Float64Array([ - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 1, 2, 3, 1 - ])) - }) - }) - - describe('scale', function () { - const x = new DOMMatrix() - it('works, 1 arg', function () { - assert.deepEqual(x.scale(2).toFloat64Array(), new Float64Array([ - 2, 0, 0, 0, - 0, 2, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ])) - }) - - it('works, 2 args', function () { - assert.deepEqual(x.scale(2, 3).toFloat64Array(), new Float64Array([ - 2, 0, 0, 0, - 0, 3, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ])) - }) - - it('works, 3 args', function () { - assert.deepEqual(x.scale(2, 3, 4).toFloat64Array(), new Float64Array([ - 2, 0, 0, 0, - 0, 3, 0, 0, - 0, 0, 4, 0, - 0, 0, 0, 1 - ])) - }) - - it('works, 4 args', function () { - assert.deepEqual(x.scale(2, 3, 4, 5).toFloat64Array(), new Float64Array([ - 2, 0, 0, 0, - 0, 3, 0, 0, - 0, 0, 4, 0, - -5, 0, 0, 1 - ])) - }) - - it('works, 5 args', function () { - assert.deepEqual(x.scale(2, 3, 4, 5, 6).toFloat64Array(), new Float64Array([ - 2, 0, 0, 0, - 0, 3, 0, 0, - 0, 0, 4, 0, - -5, -12, 0, 1 - ])) - }) - - it('works, 6 args', function () { - assert.deepEqual(x.scale(2, 1, 1, 0, 0, 0).toFloat64Array(), new Float64Array([ - 2, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ])) - - assert.deepEqual(x.scale(2, 3, 2, 0, 0, 0).toFloat64Array(), new Float64Array([ - 2, 0, 0, 0, - 0, 3, 0, 0, - 0, 0, 2, 0, - 0, 0, 0, 1 - ])) - - assert.deepEqual(x.scale(5, -1, 2, 1, 3, 2).toFloat64Array(), new Float64Array([ - 5, 0, 0, 0, - 0, -1, 0, 0, - 0, 0, 2, 0, - -4, 6, -2, 1 - ])) - }) - }) - - describe('scaleSelf', function () {}) - - describe('scale3d', function () { - const x = new DOMMatrix(Avals) - - it('works, 0 args', function () { - assert.deepEqual(x.scale3d().toFloat64Array(), new Float64Array(Avals)) - }) - - it('works, 1 arg', function () { - assert.deepEqual(x.scale3d(2).toFloat64Array(), new Float64Array([ - 8, 10, 2, 16, - 0, 6, 12, 2, - 6, 10, 0, 18, - 2, 4, 6, 1 - ])) - }) - - it('works, 2 args', function () { - assert.deepEqual(x.scale3d(2, 3).toFloat64Array(), new Float64Array([ - 8, 10, 2, 16, - 0, 6, 12, 2, - 6, 10, 0, 18, - -10, -11, 3, -23 - ])) - }) - - it('works, 3 args', function () { - assert.deepEqual(x.scale3d(2, 3, 4).toFloat64Array(), new Float64Array([ - 8, 10, 2, 16, - 0, 6, 12, 2, - 6, 10, 0, 18, - -10, -23, -21, -27 - ])) - }) - - it('works, 4 args', function () { - assert.deepEqual(x.scale3d(2, 3, 4, 5).toFloat64Array(), new Float64Array([ - 8, 10, 2, 16, - 0, 6, 12, 2, - 6, 10, 0, 18, - -25, -48, -21, -72 - ])) - }) - }) - - describe('scale3dSelf', function () {}) - - describe('rotate', function () { - it('works, 1 arg', function () { - const x = new DOMMatrix() - const y = x.rotate(70) - assertApproxDeep(y.toFloat64Array(), new Float64Array([ - 0.3420201, 0.9396926, 0, 0, - -0.939692, 0.3420201, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ])) - }) - - it('works, 2 args', function () { - const x = new DOMMatrix() - const y = x.rotate(70, 30) - assertApproxDeep(y.toFloat64Array(), new Float64Array([ - 0.8660254, 0, -0.5, 0, - 0.4698463, 0.3420201, 0.8137976, 0, - 0.1710100, -0.9396926, 0.2961981, 0, - 0, 0, 0, 1 - ])) - assert.strictEqual(y.is2D, false) - }) - - it('works, 3 args', function () { - const x = new DOMMatrix() - const y = x.rotate(70, 30, 50) - assertApproxDeep(y.toFloat64Array(), new Float64Array([ - 0.5566703, 0.6634139, -0.5, 0, - 0.0400087, 0.5797694, 0.8137976, 0, - 0.8297694, -0.4730214, 0.2961981, 0, - 0, 0, 0, 1])) - }) - }) - - describe('rotateSelf', function () {}) - - describe('rotateFromVector', function () { - const x = new DOMMatrix(Avals) - it('works, no args and x/y=0', function () { - assert.deepEqual(x.rotateFromVector().toFloat64Array(), new Float64Array(Avals)) - assert.deepEqual(x.rotateFromVector(5).toFloat64Array(), new Float64Array(Avals)) - assert.deepEqual(x.rotateFromVector(0, 0).toFloat64Array(), new Float64Array(Avals)) - }) - - it('works', function () { - const y = x.rotateFromVector(4, 2).toFloat64Array() - const expect = new Float64Array([ - 3.5777087, 5.8137767, 3.5777087, 7.6026311, - -1.7888543, 0.4472135, 4.9193495, -2.6832815, - 3, 5, 0, 9, - 2, 4, 6, 1 - ]) - assertApproxDeep(expect, y) - }) - }) - - describe('rotateFromVectorSelf', function () {}) - - describe('rotateAxisAngle', function () { - it('works, 0 args', function () { - const x = new DOMMatrix(Avals) - const y = x.rotateAxisAngle().toFloat64Array() - assert.deepEqual(y, new Float64Array(Avals)) - }) - - it('works, 4 args', function () { - const x = new DOMMatrix(Avals) - const y = x.rotateAxisAngle(2, 4, 1, 35).toFloat64Array() - const expect = new Float64Array([ - 1.9640922, 2.4329989, 2.0179538, 2.6719387, - 0.6292488, 4.0133545, 5.6853755, 3.0697681, - 4.5548203, 6.0805840, -0.7774101, 11.3770500, - 2, 4, 6, 1 - ]) - assertApproxDeep(expect, y) - }) - }) - - describe('rotateFromAngleSelf', function () {}) - - describe('skewX', function () { - it('works', function () { - const x = new DOMMatrix(Avals) - const y = x.skewX(30).toFloat64Array() - const expect = new Float64Array([ - 4, 5, 1, 8, - 2.3094010, 5.8867513, 6.5773502, 5.6188021, - 3, 5, 0, 9, - 2, 4, 6, 1 - ]) - assertApproxDeep(expect, y) - }) - }) - - describe('skewXSelf', function () {}) - - describe('skewY', function () { - it('works', function () { - const x = new DOMMatrix(Avals) - const y = x.skewY(30).toFloat64Array() - const expect = new Float64Array([ - 4, 6.7320508, 4.4641016, 8.5773502, - 0, 3, 6, 1, - 3, 5, 0, 9, - 2, 4, 6, 1 - ]) - assertApproxDeep(expect, y) - }) - }) - - describe('skewYSelf', function () {}) - - describe('flipX', function () { - it('works', function () { - const x = new DOMMatrix() - x.rotateSelf(70) - const y = x.flipX() - assertApprox(y.a, -0.34202) - assertApprox(y.b, -0.93969) - assertApprox(y.c, -0.93969) - assertApprox(y.d, 0.34202) - assert.strictEqual(y.e, 0) - assert.strictEqual(y.f, 0) - }) - }) - - describe('flipY', function () { - it('works', function () { - const x = new DOMMatrix() - x.rotateSelf(70) - const y = x.flipY() - assertApprox(y.a, 0.34202) - assertApprox(y.b, 0.93969) - assertApprox(y.c, 0.93969) - assertApprox(y.d, -0.34202) - assert.strictEqual(y.e, 0) - assert.strictEqual(y.f, 0) - }) - }) - - describe('invertSelf', function () { - it('works for invertible matrices', function () { - const d = new DOMMatrix(Avals) - d.invertSelf() - assertApprox(d.m11, 0.9152542372881356) - assertApprox(d.m12, -0.01694915254237288) - assertApprox(d.m13, -0.7966101694915254) - assertApprox(d.m14, -0.13559322033898305) - assertApprox(d.m21, -1.8305084745762712) - assertApprox(d.m22, -0.9661016949152542) - assertApprox(d.m23, 1.5932203389830508) - assertApprox(d.m24, 1.271186440677966) - assertApprox(d.m31, 0.7966101694915254) - assertApprox(d.m32, 0.559322033898305) - assertApprox(d.m33, -0.711864406779661) - assertApprox(d.m34, -0.5254237288135594) - assertApprox(d.m41, 0.711864406779661) - assertApprox(d.m42, 0.5423728813559322) - assertApprox(d.m43, -0.5084745762711864) - assertApprox(d.m44, -0.6610169491525424) - }) - - it('works for non-invertible matrices', function () { - const d = new DOMMatrix(Xvals) - d.invertSelf() - assert.strictEqual(isNaN(d.m11), true) - assert.strictEqual(isNaN(d.m12), true) - assert.strictEqual(isNaN(d.m13), true) - assert.strictEqual(isNaN(d.m14), true) - assert.strictEqual(isNaN(d.m21), true) - assert.strictEqual(isNaN(d.m22), true) - assert.strictEqual(isNaN(d.m23), true) - assert.strictEqual(isNaN(d.m24), true) - assert.strictEqual(isNaN(d.m31), true) - assert.strictEqual(isNaN(d.m32), true) - assert.strictEqual(isNaN(d.m33), true) - assert.strictEqual(isNaN(d.m34), true) - assert.strictEqual(isNaN(d.m41), true) - assert.strictEqual(isNaN(d.m42), true) - assert.strictEqual(isNaN(d.m43), true) - assert.strictEqual(isNaN(d.m44), true) - assert.strictEqual(d.is2D, false) - }) - }) - - describe('inverse', function () { - it('preserves the original DOMMatrix', function () { - const d = new DOMMatrix(Avals) - const d2 = d.inverse() - assert.strictEqual(d.m11, Avals[0]) - assert.strictEqual(d.m12, Avals[1]) - assert.strictEqual(d.m13, Avals[2]) - assert.strictEqual(d.m14, Avals[3]) - assert.strictEqual(d.m21, Avals[4]) - assert.strictEqual(d.m22, Avals[5]) - assert.strictEqual(d.m23, Avals[6]) - assert.strictEqual(d.m24, Avals[7]) - assert.strictEqual(d.m31, Avals[8]) - assert.strictEqual(d.m32, Avals[9]) - assert.strictEqual(d.m33, Avals[10]) - assert.strictEqual(d.m34, Avals[11]) - assert.strictEqual(d.m41, Avals[12]) - assert.strictEqual(d.m42, Avals[13]) - assert.strictEqual(d.m43, Avals[14]) - assert.strictEqual(d.m44, Avals[15]) - assertApprox(d2.m11, 0.9152542372881356) - assertApprox(d2.m12, -0.01694915254237288) - assertApprox(d2.m13, -0.7966101694915254) - assertApprox(d2.m14, -0.13559322033898305) - assertApprox(d2.m21, -1.8305084745762712) - assertApprox(d2.m22, -0.9661016949152542) - assertApprox(d2.m23, 1.5932203389830508) - assertApprox(d2.m24, 1.271186440677966) - assertApprox(d2.m31, 0.7966101694915254) - assertApprox(d2.m32, 0.559322033898305) - assertApprox(d2.m33, -0.711864406779661) - assertApprox(d2.m34, -0.5254237288135594) - assertApprox(d2.m41, 0.711864406779661) - assertApprox(d2.m42, 0.5423728813559322) - assertApprox(d2.m43, -0.5084745762711864) - assertApprox(d2.m44, -0.6610169491525424) - }) - - it('preserves the original DOMMatrix for non-invertible matrices', function () { - const d = new DOMMatrix(Xvals) - const d2 = d.inverse() - assert.strictEqual(d.m11, Xvals[0]) - assert.strictEqual(d.m12, Xvals[1]) - assert.strictEqual(d.m13, Xvals[2]) - assert.strictEqual(d.m14, Xvals[3]) - assert.strictEqual(d.m21, Xvals[4]) - assert.strictEqual(d.m22, Xvals[5]) - assert.strictEqual(d.m23, Xvals[6]) - assert.strictEqual(d.m24, Xvals[7]) - assert.strictEqual(d.m31, Xvals[8]) - assert.strictEqual(d.m32, Xvals[9]) - assert.strictEqual(d.m33, Xvals[10]) - assert.strictEqual(d.m34, Xvals[11]) - assert.strictEqual(d.m41, Xvals[12]) - assert.strictEqual(d.m42, Xvals[13]) - assert.strictEqual(d.m43, Xvals[14]) - assert.strictEqual(d.m44, Xvals[15]) - assert.strictEqual(isNaN(d2.m11), true) - assert.strictEqual(isNaN(d2.m12), true) - assert.strictEqual(isNaN(d2.m13), true) - assert.strictEqual(isNaN(d2.m14), true) - assert.strictEqual(isNaN(d2.m21), true) - assert.strictEqual(isNaN(d2.m22), true) - assert.strictEqual(isNaN(d2.m23), true) - assert.strictEqual(isNaN(d2.m24), true) - assert.strictEqual(isNaN(d2.m31), true) - assert.strictEqual(isNaN(d2.m32), true) - assert.strictEqual(isNaN(d2.m33), true) - assert.strictEqual(isNaN(d2.m34), true) - assert.strictEqual(isNaN(d2.m41), true) - assert.strictEqual(isNaN(d2.m42), true) - assert.strictEqual(isNaN(d2.m43), true) - assert.strictEqual(isNaN(d2.m44), true) - assert.strictEqual(d2.is2D, false) - }) - }) - - describe('transformPoint', function () { - it('works', function () { - const x = new DOMMatrix() - let r = x.transformPoint({ x: 1, y: 2, z: 3 }) - assert.strictEqual(r.x, 1) - assert.strictEqual(r.y, 2) - assert.strictEqual(r.z, 3) - assert.strictEqual(r.w, 1) - - x.rotateSelf(70) - r = x.transformPoint({ x: 2, y: 3, z: 4 }) - assertApprox(r.x, -2.13503) - assertApprox(r.y, 2.905445) - assert.strictEqual(r.z, 4) - assert.strictEqual(r.w, 1) - }) - }) - - describe('toFloat32Array', function () { - it('works', function () { - const x = new DOMMatrix() - const y = x.toFloat32Array() - assert.ok(y instanceof Float32Array) - assert.deepEqual(y, new Float32Array([ - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ])) - }) - }) - - describe('toFloat64Array', function () { - it('works', function () { - const x = new DOMMatrix() - const y = x.toFloat64Array() - assert.ok(y instanceof Float64Array) - assert.deepEqual(y, new Float64Array([ - 1, 0, 0, 0, - 0, 1, 0, 0, - 0, 0, 1, 0, - 0, 0, 0, 1 - ])) - }) - }) - - describe('toString', function () { - it('works, 2d', function () { - const x = new DOMMatrix() - assert.equal(x.toString(), 'matrix(1, 0, 0, 1, 0, 0)') - }) - - it('works, 3d', function () { - const x = new DOMMatrix() - x.m31 = 1 - assert.equal(x.is2D, false) - assert.equal(x.toString(), - 'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1)') - }) - }) -}) +describe("DOMMatrix", function () { + const Avals = [4, 5, 1, 8, 0, 3, 6, 1, 3, 5, 0, 9, 2, 4, 6, 1]; + const Bvals = [1, 5, 1, 0, 0, 3, 6, 1, 3, 5, 7, 2, 2, 0, 6, 1]; + const Xvals = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]; + const AxB = new Float64Array([ + 7, 25, 31, 22, 20, 43, 24, 58, 37, 73, 45, 94, 28, 44, 8, 71, + ]); + const BxA = new Float64Array([ + 23, 40, 89, 15, 20, 39, 66, 16, 21, 30, 87, 14, 22, 52, 74, 17, + ]); + + describe("constructor, general", function () { + it("aliases a,b,c,d,e,f properly", function () { + const y = new DOMMatrix(Avals); + assert.strictEqual(y.a, y.m11); + assert.strictEqual(y.b, y.m12); + assert.strictEqual(y.c, y.m21); + assert.strictEqual(y.d, y.m22); + assert.strictEqual(y.e, y.m41); + assert.strictEqual(y.f, y.m42); + }); + + it("parses lists of transforms per spec", function () { + const y = new DOMMatrix( + "matrix(1, -2, 3.2, 4.5e2, 3.5E-1, +2) matrix(1, 2, 4, 1, 0, 0)" + ); + assert.strictEqual(y.a, 7.4); + assert.strictEqual(y.b, 898); + assert.strictEqual(y.c, 7.2); + assert.strictEqual(y.d, 442); + assert.strictEqual(y.e, 0.35); + assert.strictEqual(y.f, 2); + assert.strictEqual(y.is2D, true); + }); + + it("parses matrix2d(<16 numbers>) per spec", function () { + const y = new DOMMatrix( + "matrix3d(1, -0, 0, 0, -2.12, 1, 0, 0, 3e2, 0, +1, 1.252, 0, 0, 0, 1)" + ); + assert.deepEqual( + y.toFloat64Array(), + new Float64Array([ + 1, 0, 0, 0, -2.12, 1, 0, 0, 300, 0, 1, 1.252, 0, 0, 0, 1, + ]) + ); + assert.strictEqual(y.is2D, false); + }); + + it("sets is2D to true if matrix2d(<16 numbers>) is 2D", function () { + const y = new DOMMatrix( + "matrix3d(1, 2, 0, 0, 3, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)" + ); + assert.deepEqual( + y.toFloat64Array(), + new Float64Array([ + 1, 2, 0, 0, 3, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + ]) + ); + assert.strictEqual(y.is2D, true); + }); + }); + + describe("fromMatrix", function () {}); + describe("fromFloat32Array", function () {}); + describe("fromFloat64Array", function () {}); + + describe("multiply", function () { + it("performs self.other, returning a new DOMMatrix", function () { + const A = new DOMMatrix(Avals); + const B = new DOMMatrix(Bvals); + const C = B.multiply(A); + assert.deepEqual(C.toFloat64Array(), BxA); + assert.notStrictEqual(A, C); + assert.notStrictEqual(B, C); + }); + }); + + describe("multiplySelf", function () { + it("performs self.other, mutating self", function () { + const A = new DOMMatrix(Avals); + const B = new DOMMatrix(Bvals); + const C = B.multiplySelf(A); + assert.deepEqual(C.toFloat64Array(), BxA); + assert.strictEqual(C, B); + }); + }); + + describe("preMultiplySelf", function () { + it("performs other.self, mutating self", function () { + const A = new DOMMatrix(Avals); + const B = new DOMMatrix(Bvals); + const C = B.preMultiplySelf(A); + assert.deepEqual(C.toFloat64Array(), AxB); + assert.strictEqual(C, B); + }); + }); + + describe("translate", function () {}); + + describe("translateSelf", function () { + it("works, 1 arg", function () { + const A = new DOMMatrix(); + A.translateSelf(1); + assert.deepEqual( + A.toFloat64Array(), + new Float64Array([ + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, + ]) + ); + }); + + it("works, 2 args", function () { + const A = new DOMMatrix(Avals); + const C = A.translateSelf(2, 5); + assert.deepEqual( + C.toFloat64Array(), + new Float64Array([ + 4, 5, 1, 8, 0, 3, 6, 1, 3, 5, 0, 9, 10, 29, 38, 22, + ]) + ); + }); + + it("works, 3 args", function () { + const A = new DOMMatrix(); + A.translateSelf(1, 2, 3); + assert.deepEqual( + A.toFloat64Array(), + new Float64Array([ + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 2, 3, 1, + ]) + ); + }); + }); + + describe("scale", function () { + const x = new DOMMatrix(); + it("works, 1 arg", function () { + assert.deepEqual( + x.scale(2).toFloat64Array(), + new Float64Array([ + 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + ]) + ); + }); + + it("works, 2 args", function () { + assert.deepEqual( + x.scale(2, 3).toFloat64Array(), + new Float64Array([ + 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + ]) + ); + }); + + it("works, 3 args", function () { + assert.deepEqual( + x.scale(2, 3, 4).toFloat64Array(), + new Float64Array([ + 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 0, 1, + ]) + ); + }); + + it("works, 4 args", function () { + assert.deepEqual( + x.scale(2, 3, 4, 5).toFloat64Array(), + new Float64Array([ + 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, -5, 0, 0, 1, + ]) + ); + }); + + it("works, 5 args", function () { + assert.deepEqual( + x.scale(2, 3, 4, 5, 6).toFloat64Array(), + new Float64Array([ + 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, -5, -12, 0, 1, + ]) + ); + }); + + it("works, 6 args", function () { + assert.deepEqual( + x.scale(2, 1, 1, 0, 0, 0).toFloat64Array(), + new Float64Array([ + 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + ]) + ); + + assert.deepEqual( + x.scale(2, 3, 2, 0, 0, 0).toFloat64Array(), + new Float64Array([ + 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1, + ]) + ); + + assert.deepEqual( + x.scale(5, -1, 2, 1, 3, 2).toFloat64Array(), + new Float64Array([ + 5, 0, 0, 0, 0, -1, 0, 0, 0, 0, 2, 0, -4, 6, -2, 1, + ]) + ); + }); + }); + + describe("scaleSelf", function () {}); + + describe("scale3d", function () { + const x = new DOMMatrix(Avals); + + it("works, 0 args", function () { + assert.deepEqual( + x.scale3d().toFloat64Array(), + new Float64Array(Avals) + ); + }); + + it("works, 1 arg", function () { + assert.deepEqual( + x.scale3d(2).toFloat64Array(), + new Float64Array([ + 8, 10, 2, 16, 0, 6, 12, 2, 6, 10, 0, 18, 2, 4, 6, 1, + ]) + ); + }); + + it("works, 2 args", function () { + assert.deepEqual( + x.scale3d(2, 3).toFloat64Array(), + new Float64Array([ + 8, 10, 2, 16, 0, 6, 12, 2, 6, 10, 0, 18, -10, -11, 3, -23, + ]) + ); + }); + + it("works, 3 args", function () { + assert.deepEqual( + x.scale3d(2, 3, 4).toFloat64Array(), + new Float64Array([ + 8, 10, 2, 16, 0, 6, 12, 2, 6, 10, 0, 18, -10, -23, -21, -27, + ]) + ); + }); + + it("works, 4 args", function () { + assert.deepEqual( + x.scale3d(2, 3, 4, 5).toFloat64Array(), + new Float64Array([ + 8, 10, 2, 16, 0, 6, 12, 2, 6, 10, 0, 18, -25, -48, -21, -72, + ]) + ); + }); + }); + + describe("scale3dSelf", function () {}); + + describe("rotate", function () { + it("works, 1 arg", function () { + const x = new DOMMatrix(); + const y = x.rotate(70); + assertApproxDeep( + y.toFloat64Array(), + new Float64Array([ + 0.3420201, 0.9396926, 0, 0, -0.939692, 0.3420201, 0, 0, 0, + 0, 1, 0, 0, 0, 0, 1, + ]) + ); + }); + + it("works, 2 args", function () { + const x = new DOMMatrix(); + const y = x.rotate(70, 30); + assertApproxDeep( + y.toFloat64Array(), + new Float64Array([ + 0.8660254, 0, -0.5, 0, 0.4698463, 0.3420201, 0.8137976, 0, + 0.17101, -0.9396926, 0.2961981, 0, 0, 0, 0, 1, + ]) + ); + assert.strictEqual(y.is2D, false); + }); + + it("works, 3 args", function () { + const x = new DOMMatrix(); + const y = x.rotate(70, 30, 50); + assertApproxDeep( + y.toFloat64Array(), + new Float64Array([ + 0.5566703, 0.6634139, -0.5, 0, 0.0400087, 0.5797694, + 0.8137976, 0, 0.8297694, -0.4730214, 0.2961981, 0, 0, 0, 0, + 1, + ]) + ); + }); + }); + + describe("rotateSelf", function () {}); + + describe("rotateFromVector", function () { + const x = new DOMMatrix(Avals); + it("works, no args and x/y=0", function () { + assert.deepEqual( + x.rotateFromVector().toFloat64Array(), + new Float64Array(Avals) + ); + assert.deepEqual( + x.rotateFromVector(5).toFloat64Array(), + new Float64Array(Avals) + ); + assert.deepEqual( + x.rotateFromVector(0, 0).toFloat64Array(), + new Float64Array(Avals) + ); + }); + + it("works", function () { + const y = x.rotateFromVector(4, 2).toFloat64Array(); + const expect = new Float64Array([ + 3.5777087, 5.8137767, 3.5777087, 7.6026311, -1.7888543, + 0.4472135, 4.9193495, -2.6832815, 3, 5, 0, 9, 2, 4, 6, 1, + ]); + assertApproxDeep(expect, y); + }); + }); + + describe("rotateFromVectorSelf", function () {}); + + describe("rotateAxisAngle", function () { + it("works, 0 args", function () { + const x = new DOMMatrix(Avals); + const y = x.rotateAxisAngle().toFloat64Array(); + assert.deepEqual(y, new Float64Array(Avals)); + }); + + it("works, 4 args", function () { + const x = new DOMMatrix(Avals); + const y = x.rotateAxisAngle(2, 4, 1, 35).toFloat64Array(); + const expect = new Float64Array([ + 1.9640922, 2.4329989, 2.0179538, 2.6719387, 0.6292488, + 4.0133545, 5.6853755, 3.0697681, 4.5548203, 6.080584, + -0.7774101, 11.37705, 2, 4, 6, 1, + ]); + assertApproxDeep(expect, y); + }); + }); + + describe("rotateFromAngleSelf", function () {}); + + describe("skewX", function () { + it("works", function () { + const x = new DOMMatrix(Avals); + const y = x.skewX(30).toFloat64Array(); + const expect = new Float64Array([ + 4, 5, 1, 8, 2.309401, 5.8867513, 6.5773502, 5.6188021, 3, 5, 0, + 9, 2, 4, 6, 1, + ]); + assertApproxDeep(expect, y); + }); + }); + + describe("skewXSelf", function () {}); + + describe("skewY", function () { + it("works", function () { + const x = new DOMMatrix(Avals); + const y = x.skewY(30).toFloat64Array(); + const expect = new Float64Array([ + 4, 6.7320508, 4.4641016, 8.5773502, 0, 3, 6, 1, 3, 5, 0, 9, 2, + 4, 6, 1, + ]); + assertApproxDeep(expect, y); + }); + }); + + describe("skewYSelf", function () {}); + + describe("flipX", function () { + it("works", function () { + const x = new DOMMatrix(); + x.rotateSelf(70); + const y = x.flipX(); + assertApprox(y.a, -0.34202); + assertApprox(y.b, -0.93969); + assertApprox(y.c, -0.93969); + assertApprox(y.d, 0.34202); + assert.strictEqual(y.e, 0); + assert.strictEqual(y.f, 0); + }); + }); + + describe("flipY", function () { + it("works", function () { + const x = new DOMMatrix(); + x.rotateSelf(70); + const y = x.flipY(); + assertApprox(y.a, 0.34202); + assertApprox(y.b, 0.93969); + assertApprox(y.c, 0.93969); + assertApprox(y.d, -0.34202); + assert.strictEqual(y.e, 0); + assert.strictEqual(y.f, 0); + }); + }); + + describe("invertSelf", function () { + it("works for invertible matrices", function () { + const d = new DOMMatrix(Avals); + d.invertSelf(); + assertApprox(d.m11, 0.9152542372881356); + assertApprox(d.m12, -0.01694915254237288); + assertApprox(d.m13, -0.7966101694915254); + assertApprox(d.m14, -0.13559322033898305); + assertApprox(d.m21, -1.8305084745762712); + assertApprox(d.m22, -0.9661016949152542); + assertApprox(d.m23, 1.5932203389830508); + assertApprox(d.m24, 1.271186440677966); + assertApprox(d.m31, 0.7966101694915254); + assertApprox(d.m32, 0.559322033898305); + assertApprox(d.m33, -0.711864406779661); + assertApprox(d.m34, -0.5254237288135594); + assertApprox(d.m41, 0.711864406779661); + assertApprox(d.m42, 0.5423728813559322); + assertApprox(d.m43, -0.5084745762711864); + assertApprox(d.m44, -0.6610169491525424); + }); + + it("works for non-invertible matrices", function () { + const d = new DOMMatrix(Xvals); + d.invertSelf(); + assert.strictEqual(isNaN(d.m11), true); + assert.strictEqual(isNaN(d.m12), true); + assert.strictEqual(isNaN(d.m13), true); + assert.strictEqual(isNaN(d.m14), true); + assert.strictEqual(isNaN(d.m21), true); + assert.strictEqual(isNaN(d.m22), true); + assert.strictEqual(isNaN(d.m23), true); + assert.strictEqual(isNaN(d.m24), true); + assert.strictEqual(isNaN(d.m31), true); + assert.strictEqual(isNaN(d.m32), true); + assert.strictEqual(isNaN(d.m33), true); + assert.strictEqual(isNaN(d.m34), true); + assert.strictEqual(isNaN(d.m41), true); + assert.strictEqual(isNaN(d.m42), true); + assert.strictEqual(isNaN(d.m43), true); + assert.strictEqual(isNaN(d.m44), true); + assert.strictEqual(d.is2D, false); + }); + }); + + describe("inverse", function () { + it("preserves the original DOMMatrix", function () { + const d = new DOMMatrix(Avals); + const d2 = d.inverse(); + assert.strictEqual(d.m11, Avals[0]); + assert.strictEqual(d.m12, Avals[1]); + assert.strictEqual(d.m13, Avals[2]); + assert.strictEqual(d.m14, Avals[3]); + assert.strictEqual(d.m21, Avals[4]); + assert.strictEqual(d.m22, Avals[5]); + assert.strictEqual(d.m23, Avals[6]); + assert.strictEqual(d.m24, Avals[7]); + assert.strictEqual(d.m31, Avals[8]); + assert.strictEqual(d.m32, Avals[9]); + assert.strictEqual(d.m33, Avals[10]); + assert.strictEqual(d.m34, Avals[11]); + assert.strictEqual(d.m41, Avals[12]); + assert.strictEqual(d.m42, Avals[13]); + assert.strictEqual(d.m43, Avals[14]); + assert.strictEqual(d.m44, Avals[15]); + assertApprox(d2.m11, 0.9152542372881356); + assertApprox(d2.m12, -0.01694915254237288); + assertApprox(d2.m13, -0.7966101694915254); + assertApprox(d2.m14, -0.13559322033898305); + assertApprox(d2.m21, -1.8305084745762712); + assertApprox(d2.m22, -0.9661016949152542); + assertApprox(d2.m23, 1.5932203389830508); + assertApprox(d2.m24, 1.271186440677966); + assertApprox(d2.m31, 0.7966101694915254); + assertApprox(d2.m32, 0.559322033898305); + assertApprox(d2.m33, -0.711864406779661); + assertApprox(d2.m34, -0.5254237288135594); + assertApprox(d2.m41, 0.711864406779661); + assertApprox(d2.m42, 0.5423728813559322); + assertApprox(d2.m43, -0.5084745762711864); + assertApprox(d2.m44, -0.6610169491525424); + }); + + it("preserves the original DOMMatrix for non-invertible matrices", function () { + const d = new DOMMatrix(Xvals); + const d2 = d.inverse(); + assert.strictEqual(d.m11, Xvals[0]); + assert.strictEqual(d.m12, Xvals[1]); + assert.strictEqual(d.m13, Xvals[2]); + assert.strictEqual(d.m14, Xvals[3]); + assert.strictEqual(d.m21, Xvals[4]); + assert.strictEqual(d.m22, Xvals[5]); + assert.strictEqual(d.m23, Xvals[6]); + assert.strictEqual(d.m24, Xvals[7]); + assert.strictEqual(d.m31, Xvals[8]); + assert.strictEqual(d.m32, Xvals[9]); + assert.strictEqual(d.m33, Xvals[10]); + assert.strictEqual(d.m34, Xvals[11]); + assert.strictEqual(d.m41, Xvals[12]); + assert.strictEqual(d.m42, Xvals[13]); + assert.strictEqual(d.m43, Xvals[14]); + assert.strictEqual(d.m44, Xvals[15]); + assert.strictEqual(isNaN(d2.m11), true); + assert.strictEqual(isNaN(d2.m12), true); + assert.strictEqual(isNaN(d2.m13), true); + assert.strictEqual(isNaN(d2.m14), true); + assert.strictEqual(isNaN(d2.m21), true); + assert.strictEqual(isNaN(d2.m22), true); + assert.strictEqual(isNaN(d2.m23), true); + assert.strictEqual(isNaN(d2.m24), true); + assert.strictEqual(isNaN(d2.m31), true); + assert.strictEqual(isNaN(d2.m32), true); + assert.strictEqual(isNaN(d2.m33), true); + assert.strictEqual(isNaN(d2.m34), true); + assert.strictEqual(isNaN(d2.m41), true); + assert.strictEqual(isNaN(d2.m42), true); + assert.strictEqual(isNaN(d2.m43), true); + assert.strictEqual(isNaN(d2.m44), true); + assert.strictEqual(d2.is2D, false); + }); + }); + + describe("transformPoint", function () { + it("works", function () { + const x = new DOMMatrix(); + let r = x.transformPoint({ x: 1, y: 2, z: 3 }); + assert.strictEqual(r.x, 1); + assert.strictEqual(r.y, 2); + assert.strictEqual(r.z, 3); + assert.strictEqual(r.w, 1); + + x.rotate(70); + r = x.transformPoint({ x: 2, y: 3, z: 4 }); + assertApprox(r.x, -2.13503); + assertApprox(r.y, 2.905445); + assert.strictEqual(r.z, 4); + assert.strictEqual(r.w, 1); + }); + }); + + describe("toFloat32Array", function () { + it("works", function () { + const x = new DOMMatrix(); + const y = x.toFloat32Array(); + assert.deepEqual( + y, + new Float32Array([ + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + ]) + ); + }); + }); + + describe("toFloat64Array", function () { + it("works", function () { + const x = new DOMMatrix(); + const y = x.toFloat64Array(); + assert.deepEqual( + y, + new Float64Array([ + 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, + ]) + ); + }); + }); +}); diff --git a/test/image.test.js b/test/image.test.js index ec1631a10..f07cd6dbf 100644 --- a/test/image.test.js +++ b/test/image.test.js @@ -1,526 +1,566 @@ /* eslint-env mocha */ -'use strict' +"use strict"; /** * Module dependencies. */ -const assert = require('assert') -const assertRejects = require('assert-rejects') -const fs = require('fs') -const path = require('path') - -const { createCanvas, loadImage, rsvgVersion, Image } = require('../') -const HAVE_SVG = rsvgVersion !== undefined - - -const pngCheckers = path.join(__dirname, '/fixtures/checkers.png') -const pngClock = path.join(__dirname, '/fixtures/clock.png') -const jpgChrome = path.join(__dirname, '/fixtures/chrome.jpg') -const jpgFace = path.join(__dirname, '/fixtures/face.jpeg') -const svgTree = path.join(__dirname, '/fixtures/tree.svg') -const bmpDir = path.join(__dirname, '/fixtures/bmp') - -describe('Image', function () { - it('Prototype and ctor are well-shaped, don\'t hit asserts on accessors (GH-803)', function () { - const img = new Image() - assert.throws(function () { Image.prototype.width }, /incompatible receiver/) - assert(!img.hasOwnProperty('width')) - assert('width' in img) - assert(Image.prototype.hasOwnProperty('width')) - }) - - it('Image has class string of `HTMLImageElement`', async function () { - const img = new Image() - assert.strictEqual(Object.prototype.toString.call(img), '[object HTMLImageElement]') - }) - - it('loads JPEG image', function () { - return loadImage(jpgFace).then((img) => { - assert.strictEqual(img.onerror, null) - assert.strictEqual(img.onload, null) - - assert.strictEqual(img.src, jpgFace) - assert.strictEqual(img.width, 485) - assert.strictEqual(img.height, 401) - assert.strictEqual(img.complete, true) - }) - }) - - it('loads JPEG data URL', function () { - const base64Encoded = fs.readFileSync(jpgFace, 'base64') - const dataURL = `data:image/png;base64,${base64Encoded}` - - return loadImage(dataURL).then((img) => { - assert.strictEqual(img.onerror, null) - assert.strictEqual(img.onload, null) - - assert.strictEqual(img.src, dataURL) - assert.strictEqual(img.width, 485) - assert.strictEqual(img.height, 401) - assert.strictEqual(img.complete, true) - }) - }) - - it('loads PNG image', function () { - return loadImage(pngClock).then((img) => { - assert.strictEqual(img.onerror, null) - assert.strictEqual(img.onload, null) - - assert.strictEqual(img.src, pngClock) - assert.strictEqual(img.width, 320) - assert.strictEqual(img.height, 320) - assert.strictEqual(img.complete, true) - }) - }) - - it('loads PNG data URL', function () { - const base64Encoded = fs.readFileSync(pngClock, 'base64') - const dataURL = `data:image/png;base64,${base64Encoded}` - - return loadImage(dataURL).then((img) => { - assert.strictEqual(img.onerror, null) - assert.strictEqual(img.onload, null) - - assert.strictEqual(img.src, dataURL) - assert.strictEqual(img.width, 320) - assert.strictEqual(img.height, 320) - assert.strictEqual(img.complete, true) - }) - }) - - it('detects invalid PNG', function (done) { - if (process.platform === 'win32') this.skip() // TODO - const img = new Image() - img.onerror = () => { - assert.strictEqual(img.complete, true) - done() - } - img.src = Buffer.from('89504E470D', 'hex') - }) - - it('propagates exceptions thrown by onload', function () { - class MyError extends Error {} - const img = new Image() - img.onload = () => { - throw new MyError() - } - assert.throws(() => { - img.src = jpgFace - }, MyError) - }) - - it('propagates exceptions thrown by onerror', function () { - class MyError extends Error {} - const img = new Image() - img.onerror = () => { - throw new MyError() - } - assert.throws(() => { - img.src = Buffer.from('', 'hex') - }, MyError) - }) - - it('loads SVG data URL base64', function () { - if (!HAVE_SVG) this.skip() - const base64Enc = fs.readFileSync(svgTree, 'base64') - const dataURL = `data:image/svg+xml;base64,${base64Enc}` - return loadImage(dataURL).then((img) => { - assert.strictEqual(img.onerror, null) - assert.strictEqual(img.onload, null) - assert.strictEqual(img.width, 200) - assert.strictEqual(img.height, 200) - assert.strictEqual(img.complete, true) - }) - }) - - it('loads SVG data URL utf8', function () { - if (!HAVE_SVG) this.skip() - const utf8Encoded = fs.readFileSync(svgTree, 'utf8') - const dataURL = `data:image/svg+xml;utf8,${utf8Encoded}` - return loadImage(dataURL).then((img) => { - assert.strictEqual(img.onerror, null) - assert.strictEqual(img.onload, null) - assert.strictEqual(img.width, 200) - assert.strictEqual(img.height, 200) - assert.strictEqual(img.complete, true) - }) - }) - - it('calls Image#onload multiple times', function () { - return loadImage(pngClock).then((img) => { - let onloadCalled = 0 - - img.onload = () => { onloadCalled += 1 } - - img.src = pngCheckers - assert.strictEqual(img.src, pngCheckers) - assert.strictEqual(img.complete, true) - assert.strictEqual(img.width, 2) - assert.strictEqual(img.height, 2) - - img.src = pngClock - assert.strictEqual(img.src, pngClock) - assert.strictEqual(true, img.complete) - assert.strictEqual(320, img.width) - assert.strictEqual(320, img.height) - - assert.strictEqual(onloadCalled, 2) - - onloadCalled = 0 - img.onload = () => { onloadCalled += 1 } - - img.src = pngClock - assert.strictEqual(onloadCalled, 1) - }) - }) - - it('handles errors', function () { - return assertRejects(loadImage(`${pngClock}fail`), Error) - }) - - it('returns a nice, coded error for fopen failures', function (done) { - const img = new Image() - img.onerror = err => { - assert.equal(err.code, 'ENOENT') - assert.equal(err.path, 'path/to/nothing') - assert.equal(err.syscall, 'fopen') - assert.strictEqual(img.complete, true) - done() - } - img.src = 'path/to/nothing' - }) - - it('captures errors from libjpeg', function (done) { - const img = new Image() - img.onerror = err => { - assert.equal(err.message, 'JPEG datastream contains no image') - assert.strictEqual(img.complete, true) - done() - } - img.src = path.join(__dirname, '/fixtures/159-crash1.jpg') - }) - - it('calls Image#onerror multiple times', function () { - return loadImage(pngClock).then((img) => { - let onloadCalled = 0 - let onerrorCalled = 0 - - img.onload = () => { onloadCalled += 1 } - img.onerror = () => { onerrorCalled += 1 } - - img.src = `${pngClock}s1` - assert.strictEqual(img.src, `${pngClock}s1`) - - img.src = `${pngClock}s2` - assert.strictEqual(img.src, `${pngClock}s2`) - - assert.strictEqual(onerrorCalled, 2) - - onerrorCalled = 0 - img.onerror = () => { onerrorCalled += 1 } - - img.src = `${pngClock}s3` - assert.strictEqual(img.src, `${pngClock}s3`) - - assert.strictEqual(onerrorCalled, 1) - assert.strictEqual(onloadCalled, 0) - }) - }) - - it('Image#{width,height}', function () { - return loadImage(pngClock).then((img) => { - img.src = '' - assert.strictEqual(img.width, 0) - assert.strictEqual(img.height, 0) - - img.src = pngClock - assert.strictEqual(img.width, 320) - assert.strictEqual(img.height, 320) - }) - }) - - it('Image#src set empty buffer', function () { - return loadImage(pngClock).then((img) => { - let onerrorCalled = 0 - - img.onerror = () => { onerrorCalled += 1 } - - img.src = Buffer.alloc(0) - assert.strictEqual(img.width, 0) - assert.strictEqual(img.height, 0) - assert.strictEqual(img.complete, true) - - assert.strictEqual(onerrorCalled, 1) - }) - }) - - it('should unbind Image#onload', function () { - return loadImage(pngClock).then((img) => { - let onloadCalled = 0 - - img.onload = () => { onloadCalled += 1 } - - img.src = pngCheckers - assert.strictEqual(img.src, pngCheckers) - assert.strictEqual(img.complete, true) - assert.strictEqual(img.width, 2) - assert.strictEqual(img.height, 2) - - assert.strictEqual(onloadCalled, 1) - - onloadCalled = 0 - img.onload = null - - img.src = pngClock - assert.strictEqual(img.src, pngClock) - assert.strictEqual(img.complete, true) - assert.strictEqual(img.width, 320) - assert.strictEqual(img.height, 320) - - assert.strictEqual(onloadCalled, 0) - }) - }) - - it('should unbind Image#onerror', function () { - return loadImage(pngClock).then((img) => { - let onloadCalled = 0 - let onerrorCalled = 0 - - img.onload = () => { onloadCalled += 1 } - img.onerror = () => { onerrorCalled += 1 } - - img.src = `${pngClock}s1` - assert.strictEqual(img.src, `${pngClock}s1`) - - img.src = `${pngClock}s2` - assert.strictEqual(img.src, `${pngClock}s2`) - - assert.strictEqual(onerrorCalled, 2) - - onerrorCalled = 0 - img.onerror = null - - img.src = `${pngClock}s3` - assert.strictEqual(img.src, `${pngClock}s3`) - - assert.strictEqual(onloadCalled, 0) - assert.strictEqual(onerrorCalled, 0) - }) - }) - - it('does not crash on invalid images', function () { - function withIncreasedByte (source, index) { - const copy = source.slice(0) - - copy[index] += 1 - - return copy - } - - const source = fs.readFileSync(jpgChrome) - - const corruptSources = [ - withIncreasedByte(source, 0), - withIncreasedByte(source, 1), - withIncreasedByte(source, 1060), - withIncreasedByte(source, 1061), - withIncreasedByte(source, 1062), - withIncreasedByte(source, 1063), - withIncreasedByte(source, 1064), - withIncreasedByte(source, 1065), - withIncreasedByte(source, 1066), - withIncreasedByte(source, 1067), - withIncreasedByte(source, 1068), - withIncreasedByte(source, 1069) - ] - - return Promise.all(corruptSources.map(src => loadImage(src).catch(() => null))) - }) - - it('does not contain `source` property', function () { - const keys = Reflect.ownKeys(Image.prototype) - assert.ok(!keys.includes('source')) - assert.ok(!keys.includes('getSource')) - assert.ok(!keys.includes('setSource')) - }) - - describe('supports BMP', function () { - it('parses 1-bit image', function (done) { - const img = new Image() - - img.onload = () => { - assert.strictEqual(img.width, 111) - assert.strictEqual(img.height, 72) - done() - } - - img.onerror = err => { throw err } - img.src = path.join(bmpDir, '1-bit.bmp') - }) - - it('parses 4-bit image', function (done) { - const img = new Image() - - img.onload = () => { - assert.strictEqual(img.width, 32) - assert.strictEqual(img.height, 32) - done() - } - - img.onerror = err => { throw err } - img.src = path.join(bmpDir, '4-bit.bmp') - }) - - it('parses 8-bit image') - - it('parses 24-bit image', function (done) { - const img = new Image() - - img.onload = () => { - assert.strictEqual(img.width, 2) - assert.strictEqual(img.height, 2) - - testImgd(img, [ - 0, 0, 255, 255, - 0, 255, 0, 255, - 255, 0, 0, 255, - 255, 255, 255, 255 - ]) - - done() - } - - img.onerror = err => { throw err } - img.src = path.join(bmpDir, '24-bit.bmp') - }) - - it('parses 32-bit image', function (done) { - const img = new Image() - - img.onload = () => { - assert.strictEqual(img.width, 4) - assert.strictEqual(img.height, 2) - - testImgd(img, [ - 0, 0, 255, 255, - 0, 255, 0, 255, - 255, 0, 0, 255, - 255, 255, 255, 255, - 0, 0, 255, 127, - 0, 255, 0, 127, - 255, 0, 0, 127, - 255, 255, 255, 127 - ]) - - done() - } - - img.onerror = err => { throw err } - img.src = fs.readFileSync(path.join(bmpDir, '32-bit.bmp')) // Also tests loading from buffer - }) - - it('parses minimal BMP', function (done) { - const img = new Image() - - img.onload = () => { - assert.strictEqual(img.width, 1) - assert.strictEqual(img.height, 1) - - testImgd(img, [ - 255, 0, 0, 255 - ]) - - done() - } - - img.onerror = err => { throw err } - img.src = path.join(bmpDir, 'min.bmp') - }) - - it('properly handles negative height', function (done) { - const img = new Image() - - img.onload = () => { - assert.strictEqual(img.width, 1) - assert.strictEqual(img.height, 2) - - testImgd(img, [ - 255, 0, 0, 255, - 0, 255, 0, 255 - ]) - - done() - } - - img.onerror = err => { throw err } - img.src = path.join(bmpDir, 'negative-height.bmp') - }) - - it('color palette', function (done) { - const img = new Image() - - img.onload = () => { - assert.strictEqual(img.width, 32) - assert.strictEqual(img.height, 32) - done() - } - - img.onerror = err => { throw err } - img.src = path.join(bmpDir, 'palette.bmp') - }) - - it('V3 header', function (done) { - const img = new Image() - - img.onload = () => { - assert.strictEqual(img.width, 256) - assert.strictEqual(img.height, 192) - done() - } - - img.onerror = err => { throw err } - img.src = path.join(bmpDir, 'v3-header.bmp') - }) - - it('V5 header') - - it('catches BMP errors', function (done) { - const img = new Image() - - img.onload = () => { - throw new Error('Invalid image should not be loaded properly') - } - - img.onerror = err => { - const msg = 'Error while processing file header - unexpected end of file' - assert.strictEqual(err.message, msg) - done() - } - - img.src = Buffer.from('BM') - }) - - it('BMP bomb', function (done) { - const img = new Image() - - img.onload = () => { - throw new Error('Invalid image should not be loaded properly') - } - - img.onerror = err => { - if (!err) throw new Error('Expected a error') - done() - } - - img.src = path.join(bmpDir, 'bomb.bmp') - }) - - function testImgd (img, data) { - const ctx = createCanvas(img.width, img.height).getContext('2d') - ctx.drawImage(img, 0, 0) - const actualData = ctx.getImageData(0, 0, img.width, img.height).data - assert.strictEqual(String(actualData), String(data)) - } - }) -}) +const assert = require("assert"); +const assertRejects = require("assert-rejects"); +const fs = require("fs"); +const path = require("path"); + +const { createCanvas, loadImage, rsvgVersion, Image } = require("../"); +const HAVE_SVG = rsvgVersion !== undefined; + +const pngCheckers = path.join(__dirname, "/fixtures/checkers.png"); +const pngClock = path.join(__dirname, "/fixtures/clock.png"); +const jpgChrome = path.join(__dirname, "/fixtures/chrome.jpg"); +const jpgFace = path.join(__dirname, "/fixtures/face.jpeg"); +const svgTree = path.join(__dirname, "/fixtures/tree.svg"); +const bmpDir = path.join(__dirname, "/fixtures/bmp"); + +describe("Image", function () { + it("Prototype and ctor are well-shaped, don't hit asserts on accessors (GH-803)", function () { + const img = new Image(); + assert.throws(function () { + Image.prototype.width; + }, /invalid argument/i); + assert(!img.hasOwnProperty("width")); + assert("width" in img); + assert(Image.prototype.hasOwnProperty("width")); + }); + + it("Image has class string of `HTMLImageElement`", async function () { + const img = new Image(); + assert.strictEqual( + Object.prototype.toString.call(img), + "[object HTMLImageElement]" + ); + }); + + it("loads JPEG image", function () { + return loadImage(jpgFace).then((img) => { + assert.strictEqual(img.onerror, null); + assert.strictEqual(img.onload, null); + + assert.strictEqual(img.src, jpgFace); + assert.strictEqual(img.width, 485); + assert.strictEqual(img.height, 401); + assert.strictEqual(img.complete, true); + }); + }); + + it("loads JPEG data URL", function () { + const base64Encoded = fs.readFileSync(jpgFace, "base64"); + const dataURL = `data:image/png;base64,${base64Encoded}`; + + return loadImage(dataURL).then((img) => { + assert.strictEqual(img.onerror, null); + assert.strictEqual(img.onload, null); + + assert.strictEqual(img.src, dataURL); + assert.strictEqual(img.width, 485); + assert.strictEqual(img.height, 401); + assert.strictEqual(img.complete, true); + }); + }); + + it("loads PNG image", function () { + return loadImage(pngClock).then((img) => { + assert.strictEqual(img.onerror, null); + assert.strictEqual(img.onload, null); + + assert.strictEqual(img.src, pngClock); + assert.strictEqual(img.width, 320); + assert.strictEqual(img.height, 320); + assert.strictEqual(img.complete, true); + }); + }); + + it("loads PNG data URL", function () { + const base64Encoded = fs.readFileSync(pngClock, "base64"); + const dataURL = `data:image/png;base64,${base64Encoded}`; + + return loadImage(dataURL).then((img) => { + assert.strictEqual(img.onerror, null); + assert.strictEqual(img.onload, null); + + assert.strictEqual(img.src, dataURL); + assert.strictEqual(img.width, 320); + assert.strictEqual(img.height, 320); + assert.strictEqual(img.complete, true); + }); + }); + + it("detects invalid PNG", function (done) { + if (process.platform === "win32") this.skip(); // TODO + const img = new Image(); + img.onerror = () => { + assert.strictEqual(img.complete, true); + done(); + }; + img.src = Buffer.from("89504E470D", "hex"); + }); + + it("propagates exceptions thrown by onload", function () { + class MyError extends Error {} + const img = new Image(); + img.onload = () => { + throw new MyError(); + }; + assert.throws(() => { + img.src = jpgFace; + }, MyError); + }); + + it("propagates exceptions thrown by onerror", function () { + class MyError extends Error {} + const img = new Image(); + img.onerror = () => { + throw new MyError(); + }; + assert.throws(() => { + img.src = Buffer.from("", "hex"); + }, MyError); + }); + + it("loads SVG data URL base64", function () { + if (!HAVE_SVG) this.skip(); + const base64Enc = fs.readFileSync(svgTree, "base64"); + const dataURL = `data:image/svg+xml;base64,${base64Enc}`; + return loadImage(dataURL).then((img) => { + assert.strictEqual(img.onerror, null); + assert.strictEqual(img.onload, null); + assert.strictEqual(img.width, 200); + assert.strictEqual(img.height, 200); + assert.strictEqual(img.complete, true); + }); + }); + + it("loads SVG data URL utf8", function () { + if (!HAVE_SVG) this.skip(); + const utf8Encoded = fs.readFileSync(svgTree, "utf8"); + const dataURL = `data:image/svg+xml;utf8,${utf8Encoded}`; + return loadImage(dataURL).then((img) => { + assert.strictEqual(img.onerror, null); + assert.strictEqual(img.onload, null); + assert.strictEqual(img.width, 200); + assert.strictEqual(img.height, 200); + assert.strictEqual(img.complete, true); + }); + }); + + it("calls Image#onload multiple times", function () { + return loadImage(pngClock).then((img) => { + let onloadCalled = 0; + + img.onload = () => { + onloadCalled += 1; + }; + + img.src = pngCheckers; + assert.strictEqual(img.src, pngCheckers); + assert.strictEqual(img.complete, true); + assert.strictEqual(img.width, 2); + assert.strictEqual(img.height, 2); + + img.src = pngClock; + assert.strictEqual(img.src, pngClock); + assert.strictEqual(true, img.complete); + assert.strictEqual(320, img.width); + assert.strictEqual(320, img.height); + + assert.strictEqual(onloadCalled, 2); + + onloadCalled = 0; + img.onload = () => { + onloadCalled += 1; + }; + + img.src = pngClock; + assert.strictEqual(onloadCalled, 1); + }); + }); + + it("handles errors", function () { + return assertRejects(loadImage(`${pngClock}fail`), Error); + }); + + it("returns a nice, coded error for fopen failures", function (done) { + const img = new Image(); + img.onerror = (err) => { + assert.equal(err.message, "No such file or directory"); + assert.equal(err.path, "path/to/nothing"); + assert.equal(err.syscall, "fopen"); + assert.strictEqual(img.complete, true); + done(); + }; + img.src = "path/to/nothing"; + }); + + it("captures errors from libjpeg", function (done) { + const img = new Image(); + img.onerror = (err) => { + assert.equal(err.message, "JPEG datastream contains no image"); + assert.strictEqual(img.complete, true); + done(); + }; + img.src = path.join(__dirname, "/fixtures/159-crash1.jpg"); + }); + + it("calls Image#onerror multiple times", function () { + return loadImage(pngClock).then((img) => { + let onloadCalled = 0; + let onerrorCalled = 0; + + img.onload = () => { + onloadCalled += 1; + }; + img.onerror = () => { + onerrorCalled += 1; + }; + + img.src = `${pngClock}s1`; + assert.strictEqual(img.src, `${pngClock}s1`); + + img.src = `${pngClock}s2`; + assert.strictEqual(img.src, `${pngClock}s2`); + + assert.strictEqual(onerrorCalled, 2); + + onerrorCalled = 0; + img.onerror = () => { + onerrorCalled += 1; + }; + + img.src = `${pngClock}s3`; + assert.strictEqual(img.src, `${pngClock}s3`); + + assert.strictEqual(onerrorCalled, 1); + assert.strictEqual(onloadCalled, 0); + }); + }); + + it("Image#{width,height}", function () { + return loadImage(pngClock).then((img) => { + img.src = ""; + assert.strictEqual(img.width, 0); + assert.strictEqual(img.height, 0); + + img.src = pngClock; + assert.strictEqual(img.width, 320); + assert.strictEqual(img.height, 320); + }); + }); + + it("Image#src set empty buffer", function () { + return loadImage(pngClock).then((img) => { + let onerrorCalled = 0; + + img.onerror = () => { + onerrorCalled += 1; + }; + + img.src = Buffer.alloc(0); + assert.strictEqual(img.width, 0); + assert.strictEqual(img.height, 0); + assert.strictEqual(img.complete, true); + + assert.strictEqual(onerrorCalled, 1); + }); + }); + + it("should unbind Image#onload", function () { + return loadImage(pngClock).then((img) => { + let onloadCalled = 0; + + img.onload = () => { + onloadCalled += 1; + }; + + img.src = pngCheckers; + assert.strictEqual(img.src, pngCheckers); + assert.strictEqual(img.complete, true); + assert.strictEqual(img.width, 2); + assert.strictEqual(img.height, 2); + + assert.strictEqual(onloadCalled, 1); + + onloadCalled = 0; + img.onload = null; + + img.src = pngClock; + assert.strictEqual(img.src, pngClock); + assert.strictEqual(img.complete, true); + assert.strictEqual(img.width, 320); + assert.strictEqual(img.height, 320); + + assert.strictEqual(onloadCalled, 0); + }); + }); + + it("should unbind Image#onerror", function () { + return loadImage(pngClock).then((img) => { + let onloadCalled = 0; + let onerrorCalled = 0; + + img.onload = () => { + onloadCalled += 1; + }; + img.onerror = () => { + onerrorCalled += 1; + }; + + img.src = `${pngClock}s1`; + assert.strictEqual(img.src, `${pngClock}s1`); + + img.src = `${pngClock}s2`; + assert.strictEqual(img.src, `${pngClock}s2`); + + assert.strictEqual(onerrorCalled, 2); + + onerrorCalled = 0; + img.onerror = null; + + img.src = `${pngClock}s3`; + assert.strictEqual(img.src, `${pngClock}s3`); + + assert.strictEqual(onloadCalled, 0); + assert.strictEqual(onerrorCalled, 0); + }); + }); + + it("does not crash on invalid images", function () { + function withIncreasedByte(source, index) { + const copy = source.slice(0); + + copy[index] += 1; + + return copy; + } + + const source = fs.readFileSync(jpgChrome); + + const corruptSources = [ + withIncreasedByte(source, 0), + withIncreasedByte(source, 1), + withIncreasedByte(source, 1060), + withIncreasedByte(source, 1061), + withIncreasedByte(source, 1062), + withIncreasedByte(source, 1063), + withIncreasedByte(source, 1064), + withIncreasedByte(source, 1065), + withIncreasedByte(source, 1066), + withIncreasedByte(source, 1067), + withIncreasedByte(source, 1068), + withIncreasedByte(source, 1069), + ]; + + return Promise.all( + corruptSources.map((src) => loadImage(src).catch(() => null)) + ); + }); + + it("does not contain `source` property", function () { + const keys = Reflect.ownKeys(Image.prototype); + assert.ok(!keys.includes("source")); + assert.ok(!keys.includes("getSource")); + assert.ok(!keys.includes("setSource")); + }); + + describe("supports BMP", function () { + it("parses 1-bit image", function (done) { + const img = new Image(); + + img.onload = () => { + assert.strictEqual(img.width, 111); + assert.strictEqual(img.height, 72); + done(); + }; + + img.onerror = (err) => { + throw err; + }; + img.src = path.join(bmpDir, "1-bit.bmp"); + }); + + it("parses 4-bit image", function (done) { + const img = new Image(); + + img.onload = () => { + assert.strictEqual(img.width, 32); + assert.strictEqual(img.height, 32); + done(); + }; + + img.onerror = (err) => { + throw err; + }; + img.src = path.join(bmpDir, "4-bit.bmp"); + }); + + it("parses 8-bit image"); + + it("parses 24-bit image", function (done) { + const img = new Image(); + + img.onload = () => { + assert.strictEqual(img.width, 2); + assert.strictEqual(img.height, 2); + + testImgd( + img, + [ + 0, 0, 255, 255, 0, 255, 0, 255, 255, 0, 0, 255, 255, + 255, 255, 255, + ] + ); + + done(); + }; + + img.onerror = (err) => { + throw err; + }; + img.src = path.join(bmpDir, "24-bit.bmp"); + }); + + it("parses 32-bit image", function (done) { + const img = new Image(); + + img.onload = () => { + assert.strictEqual(img.width, 4); + assert.strictEqual(img.height, 2); + + testImgd( + img, + [ + 0, 0, 255, 255, 0, 255, 0, 255, 255, 0, 0, 255, 255, + 255, 255, 255, 0, 0, 255, 127, 0, 255, 0, 127, 255, 0, + 0, 127, 255, 255, 255, 127, + ] + ); + + done(); + }; + + img.onerror = (err) => { + throw err; + }; + img.src = fs.readFileSync(path.join(bmpDir, "32-bit.bmp")); // Also tests loading from buffer + }); + + it("parses minimal BMP", function (done) { + const img = new Image(); + + img.onload = () => { + assert.strictEqual(img.width, 1); + assert.strictEqual(img.height, 1); + + testImgd(img, [255, 0, 0, 255]); + + done(); + }; + + img.onerror = (err) => { + throw err; + }; + img.src = path.join(bmpDir, "min.bmp"); + }); + + it("properly handles negative height", function (done) { + const img = new Image(); + + img.onload = () => { + assert.strictEqual(img.width, 1); + assert.strictEqual(img.height, 2); + + testImgd(img, [255, 0, 0, 255, 0, 255, 0, 255]); + + done(); + }; + + img.onerror = (err) => { + throw err; + }; + img.src = path.join(bmpDir, "negative-height.bmp"); + }); + + it("color palette", function (done) { + const img = new Image(); + + img.onload = () => { + assert.strictEqual(img.width, 32); + assert.strictEqual(img.height, 32); + done(); + }; + + img.onerror = (err) => { + throw err; + }; + img.src = path.join(bmpDir, "palette.bmp"); + }); + + it("V3 header", function (done) { + const img = new Image(); + + img.onload = () => { + assert.strictEqual(img.width, 256); + assert.strictEqual(img.height, 192); + done(); + }; + + img.onerror = (err) => { + throw err; + }; + img.src = path.join(bmpDir, "v3-header.bmp"); + }); + + it("V5 header"); + + it("catches BMP errors", function (done) { + const img = new Image(); + + img.onload = () => { + throw new Error("Invalid image should not be loaded properly"); + }; + + img.onerror = (err) => { + const msg = + "Error while processing file header - unexpected end of file"; + assert.strictEqual(err.message, msg); + done(); + }; + + img.src = Buffer.from("BM"); + }); + + it("BMP bomb", function (done) { + const img = new Image(); + + img.onload = () => { + throw new Error("Invalid image should not be loaded properly"); + }; + + img.onerror = (err) => { + if (!err) throw new Error("Expected a error"); + done(); + }; + + img.src = path.join(bmpDir, "bomb.bmp"); + }); + + function testImgd(img, data) { + const ctx = createCanvas(img.width, img.height).getContext("2d"); + ctx.drawImage(img, 0, 0); + const actualData = ctx.getImageData( + 0, + 0, + img.width, + img.height + ).data; + assert.strictEqual(String(actualData), String(data)); + } + }); +}); diff --git a/test/imageData.test.js b/test/imageData.test.js index 04b117b45..9c4de03ca 100644 --- a/test/imageData.test.js +++ b/test/imageData.test.js @@ -1,81 +1,47 @@ /* eslint-env mocha */ -'use strict' - -const {createImageData} = require('../') -const {ImageData} = require('../') - -const assert = require('assert') - -describe('ImageData', function () { - it('Prototype and ctor are well-shaped, don\'t hit asserts on accessors (GH-803)', function () { - assert.throws(function () { ImageData.prototype.width }, /incompatible receiver/) - }) - - it('stringifies as [object ImageData]', function () { - const imageData = createImageData(2, 3) - assert.strictEqual(imageData.toString(), '[object ImageData]') - }) - - it('gives class string as `ImageData`', function () { - const imageData = createImageData(2, 3) - assert.strictEqual(Object.prototype.toString.call(imageData), '[object ImageData]') - }) - - it('should throw with invalid numeric arguments', function () { - assert.throws(() => { createImageData(0, 0) }, /width is zero/) - assert.throws(() => { createImageData(1, 0) }, /height is zero/) - assert.throws(() => { createImageData(0) }, TypeError) - }) - - it('should construct with width and height', function () { - const imageData = createImageData(2, 3) - - assert.strictEqual(imageData.width, 2) - assert.strictEqual(imageData.height, 3) - - assert.ok(imageData.data instanceof Uint8ClampedArray) - assert.strictEqual(imageData.data.length, 24) - }) - - it('should throw with invalid typed array', function () { - assert.throws(() => { createImageData(new Uint8ClampedArray(0), 0) }, /input data has a zero byte length/) - assert.throws(() => { createImageData(new Uint8ClampedArray(3), 0) }, /source width is zero/) - // Note: Some errors thrown by browsers are not thrown by node-canvas - // because our ImageData can support different BPPs. - }) - - it('should construct with Uint8ClampedArray', function () { - let data, imageData - - data = new Uint8ClampedArray(2 * 3 * 4) - imageData = createImageData(data, 2) - assert.strictEqual(imageData.width, 2) - assert.strictEqual(imageData.height, 3) - assert(imageData.data instanceof Uint8ClampedArray) - assert.strictEqual(imageData.data.length, 24) - - data = new Uint8ClampedArray(3 * 4 * 4) - imageData = createImageData(data, 3, 4) - assert.strictEqual(imageData.width, 3) - assert.strictEqual(imageData.height, 4) - assert(imageData.data instanceof Uint8ClampedArray) - assert.strictEqual(imageData.data.length, 48) - }) - - it('should construct with Uint16Array', function () { - let data = new Uint16Array(2 * 3 * 2) - let imagedata = createImageData(data, 2) - assert.strictEqual(imagedata.width, 2) - assert.strictEqual(imagedata.height, 3) - assert(imagedata.data instanceof Uint16Array) - assert.strictEqual(imagedata.data.length, 12) - - data = new Uint16Array(3 * 4 * 2) - imagedata = createImageData(data, 3, 4) - assert.strictEqual(imagedata.width, 3) - assert.strictEqual(imagedata.height, 4) - assert(imagedata.data instanceof Uint16Array) - assert.strictEqual(imagedata.data.length, 24) - }) -}) +"use strict"; + +const { createImageData } = require("../"); +const { ImageData } = require("../"); + +const assert = require("assert"); + +describe("ImageData", function () { + it("should construct with width and height", function () { + const imageData = createImageData(2, 3); + + assert.strictEqual(imageData.width, 2); + assert.strictEqual(imageData.height, 3); + }); + + it("should construct with Uint8ClampedArray", function () { + let data, imageData; + + data = new Uint8ClampedArray(2 * 3 * 4); + imageData = createImageData(2, null, data); + assert.strictEqual(imageData.width, 2); + assert.strictEqual(imageData.height, 3); + assert.strictEqual(imageData.data.length, 24); + + data = new Uint8ClampedArray(3 * 4 * 4); + imageData = createImageData(3, 4, data); + assert.strictEqual(imageData.width, 3); + assert.strictEqual(imageData.height, 4); + assert.strictEqual(imageData.data.length, 48); + }); + + it("should construct with Uint16Array", function () { + let data = new Uint16Array(2 * 3 * 2); + let imagedata = createImageData(2, null, data); + assert.strictEqual(imagedata.width, 2); + assert.strictEqual(imagedata.height, 3); + assert.strictEqual(imagedata.data.length, 24); + + data = new Uint16Array(3 * 4 * 2); + imagedata = createImageData(3, 4, data); + assert.strictEqual(imagedata.width, 3); + assert.strictEqual(imagedata.height, 4); + assert.strictEqual(imagedata.data.length, 48); + }); +}); diff --git a/test/public/app.html b/test/public/app.html index 6a9dacd45..441afe812 100644 --- a/test/public/app.html +++ b/test/public/app.html @@ -1,20 +1,20 @@ - + - - node-canvas - - - + + node-canvas + + + +

node-canvas

-

node-canvas

+

+ The tests below assert visual and api integrity by running the + exact same code utilizing the client canvas api, as well as + node-canvas. +

-

- The tests below assert visual and api integrity by running the exact same code utilizing the client canvas api, as well as node-canvas. -

- - - - - - + + + + diff --git a/test/public/app.js b/test/public/app.js index b25ea11a2..10e72dbb6 100644 --- a/test/public/app.js +++ b/test/public/app.js @@ -1,89 +1,106 @@ -window.addEventListener('load', runTests) +window.addEventListener("load", runTests); -function create (type, attrs, children) { - const element = Object.assign(document.createElement(type), attrs) +function create(type, attrs, children) { + const element = Object.assign(document.createElement(type), attrs); - if (children) { - children.forEach(function (child) { element.appendChild(child) }) - } + if (children) { + children.forEach(function (child) { + element.appendChild(child); + }); + } - return element + return element; } -function pdfLink (name) { - return create('a', { - href: '/pdf?name=' + encodeURIComponent(name), - target: '_blank', - textContent: 'PDF' - }) +function pdfLink(name) { + return create("a", { + href: "/pdf?name=" + encodeURIComponent(name), + target: "_blank", + textContent: "PDF", + }); } -function localRendering (name, callback) { - const canvas = create('canvas', { width: 200, height: 200, title: name }) - const tests = window.tests - const ctx = canvas.getContext('2d', { alpha: true }) - const initialFillStyle = ctx.fillStyle - ctx.fillStyle = 'white' - ctx.fillRect(0, 0, 200, 200) - ctx.fillStyle = initialFillStyle - if (tests[name].length === 2) { - tests[name](ctx, callback) - } else { - tests[name](ctx) - callback(null) - } - return canvas +function localRendering(name, callback) { + const canvas = create("canvas", { width: 200, height: 200, title: name }); + const tests = window.tests; + const ctx = canvas.getContext("2d", { alpha: true }); + const initialFillStyle = ctx.fillStyle; + ctx.fillStyle = "white"; + ctx.fillRect(0, 0, 200, 200); + ctx.fillStyle = initialFillStyle; + if (tests[name].length === 2) { + tests[name](ctx, callback); + } else { + tests[name](ctx); + callback(null); + } + return canvas; } -function getDifference (canvas, image, outputCanvas) { - const imgCanvas = create('canvas', { width: 200, height: 200 }) - const ctx = imgCanvas.getContext('2d', { alpha: true }) - const output = outputCanvas.getContext('2d', { alpha: true }).getImageData(0, 0, 200, 200) - ctx.drawImage(image, 0, 0, 200, 200) - const imageDataCanvas = ctx.getImageData(0, 0, 200, 200).data - const imageDataGolden = canvas.getContext('2d', { alpha: true }).getImageData(0, 0, 200, 200).data - window.pixelmatch(imageDataCanvas, imageDataGolden, output.data, 200, 200, { - includeAA: false, - threshold: 0.15 - }) - outputCanvas.getContext('2d', { alpha: true }).putImageData(output, 0, 0) - return outputCanvas +function getDifference(canvas, image, outputCanvas) { + const imgCanvas = create("canvas", { width: 200, height: 200 }); + const ctx = imgCanvas.getContext("2d", { alpha: true }); + const output = outputCanvas + .getContext("2d", { alpha: true }) + .getImageData(0, 0, 200, 200); + ctx.drawImage(image, 0, 0, 200, 200); + const imageDataCanvas = ctx.getImageData(0, 0, 200, 200).data; + const imageDataGolden = canvas + .getContext("2d", { alpha: true }) + .getImageData(0, 0, 200, 200).data; + window.pixelmatch(imageDataCanvas, imageDataGolden, output.data, 200, 200, { + includeAA: false, + threshold: 0.15, + }); + outputCanvas.getContext("2d", { alpha: true }).putImageData(output, 0, 0); + return outputCanvas; } -function clearTests () { - const table = document.getElementById('tests') - if (table) document.body.removeChild(table) +function clearTests() { + const table = document.getElementById("tests"); + if (table) document.body.removeChild(table); } -function runTests () { - clearTests() +function runTests() { + clearTests(); - const testNames = Object.keys(window.tests) + const testNames = Object.keys(window.tests); - const table = create('table', { id: 'tests' }, [ - create('thead', {}, [ - create('th', { textContent: 'node-canvas' }), - create('th', { textContent: 'browser canvas' }), - create('th', { textContent: 'visual diffs' }), - create('th', { textContent: '' }) - ]), - create('tbody', {}, testNames.map(function (name) { - const img = create('img') - const canvasOuput = create('canvas', { width: 200, height: 200, title: name }) - const canvas = localRendering(name, function () { - img.onload = function () { - getDifference(canvas, img, canvasOuput) - } - img.src = '/render?name=' + encodeURIComponent(name) - }) - return create('tr', {}, [ - create('td', {}, [img]), - create('td', {}, [canvas]), - create('td', {}, [canvasOuput]), - create('td', {}, [create('h3', { textContent: name }), pdfLink(name)]) - ]) - })) - ]) + const table = create("table", { id: "tests" }, [ + create("thead", {}, [ + create("th", { textContent: "node-canvas" }), + create("th", { textContent: "browser canvas" }), + create("th", { textContent: "visual diffs" }), + create("th", { textContent: "" }), + ]), + create( + "tbody", + {}, + testNames.map(function (name) { + const img = create("img"); + const canvasOuput = create("canvas", { + width: 200, + height: 200, + title: name, + }); + const canvas = localRendering(name, function () { + img.onload = function () { + getDifference(canvas, img, canvasOuput); + }; + img.src = "/render?name=" + encodeURIComponent(name); + }); + return create("tr", {}, [ + create("td", {}, [img]), + create("td", {}, [canvas]), + create("td", {}, [canvasOuput]), + create("td", {}, [ + create("h3", { textContent: name }), + pdfLink(name), + ]), + ]); + }) + ), + ]); - document.body.appendChild(table) + document.body.appendChild(table); } diff --git a/test/public/style.css b/test/public/style.css index 75116758e..f9cffe959 100644 --- a/test/public/style.css +++ b/test/public/style.css @@ -1,47 +1,52 @@ body { - padding: 40px 50px; - font: 13px/1.4 "Helvetica Neue", Helvetica, Arial, sans-serif; + padding: 40px 50px; + font: + 13px/1.4 "Helvetica Neue", + Helvetica, + Arial, + sans-serif; } p { - margin: 15px 5px; + margin: 15px 5px; } a { - color: #00C5F7; + color: #00c5f7; } -canvas, img { - padding: 5px; - border: 1px solid #eee; +canvas, +img { + padding: 5px; + border: 1px solid #eee; } p.msg { - width: 400px; + width: 400px; } #tests { - width: 100%; - margin-top: 35px; + width: 100%; + margin-top: 35px; } table tr td:nth-child(1), table tr td:nth-child(2), table tr td:nth-child(3) { - width: 200px; + width: 200px; } table tr td:nth-child(4) { - padding: 0 45px; + padding: 0 45px; } table tr td p { - margin: 5px 0; + margin: 5px 0; } table th { - background: white; - position: -webkit-sticky; - position: sticky; - top: 0; + background: white; + position: -webkit-sticky; + position: sticky; + top: 0; } diff --git a/test/public/tests.js b/test/public/tests.js index d24202602..6da8bcc99 100644 --- a/test/public/tests.js +++ b/test/public/tests.js @@ -1,2754 +1,2930 @@ -let DOMMatrix -let Image -let imageSrc -const tests = {} - -if (typeof module !== 'undefined' && module.exports) { - module.exports = tests - Image = require('../../').Image - DOMMatrix = require('../../').DOMMatrix - imageSrc = function (filename) { return require('path').join(__dirname, '..', 'fixtures', filename) } +let DOMMatrix; +let Image; +let imageSrc; +const tests = {}; + +if (typeof module !== "undefined" && module.exports) { + module.exports = tests; + Image = require("../../").Image; + DOMMatrix = require("../../").DOMMatrix; + imageSrc = function (filename) { + return require("path").join(__dirname, "..", "fixtures", filename); + }; } else { - window.tests = tests - Image = window.Image - DOMMatrix = window.DOMMatrix - imageSrc = function (filename) { return filename } -} + window.tests = tests; + Image = window.Image; + DOMMatrix = window.DOMMatrix; + imageSrc = function (filename) { + return filename; + }; +} + +tests["clearRect()"] = function (ctx) { + ctx.fillRect(25, 25, 100, 100); + ctx.clearRect(45, 45, 60, 60); + ctx.fillRect(50, 50, 50, 50); +}; + +tests["strokeRect()"] = function (ctx) { + ctx.fillRect(25, 25, 100, 100); + ctx.clearRect(45, 45, 60, 60); + ctx.strokeRect(50, 50, 50, 50); +}; + +tests["fillRect()"] = function (ctx) { + function render(level) { + ctx.fillStyle = getPointColour(122, 122); + ctx.fillRect(0, 0, 240, 240); + renderLevel(level, 81, 0); + } -tests['clearRect()'] = function (ctx) { - ctx.fillRect(25, 25, 100, 100) - ctx.clearRect(45, 45, 60, 60) - ctx.fillRect(50, 50, 50, 50) -} + function renderLevel(minimumLevel, level, y) { + let x; + for (x = 0; x < 243 / level; ++x) { + drawBlock(x, y, level); + } + for (x = 0; x < 243 / level; x += 3) { + drawBlock(x, y + 1, level); + drawBlock(x + 2, y + 1, level); + } + for (x = 0; x < 243 / level; ++x) { + drawBlock(x, y + 2, level); + } + if ((y += 3) >= 243 / level) { + y = 0; + level /= 3; + } + if (level >= minimumLevel) { + renderLevel(minimumLevel, level, y); + } + } -tests['strokeRect()'] = function (ctx) { - ctx.fillRect(25, 25, 100, 100) - ctx.clearRect(45, 45, 60, 60) - ctx.strokeRect(50, 50, 50, 50) -} + function drawBlock(x, y, level) { + ctx.fillStyle = getPointColour( + x * level + (level - 1) / 2, + y * level + (level - 1) / 2 + ); -tests['fillRect()'] = function (ctx) { - function render (level) { - ctx.fillStyle = getPointColour(122, 122) - ctx.fillRect(0, 0, 240, 240) - renderLevel(level, 81, 0) - } - - function renderLevel (minimumLevel, level, y) { - let x - for (x = 0; x < 243 / level; ++x) { - drawBlock(x, y, level) + ctx.fillRect(x * level, y * level, level, level); } - for (x = 0; x < 243 / level; x += 3) { - drawBlock(x, y + 1, level) - drawBlock(x + 2, y + 1, level) + + function getPointColour(x, y) { + x = x / 121.5 - 1; + y = -y / 121.5 + 1; + const x2y2 = x * x + y * y; + + if (x2y2 > 1) { + return "#000"; + } + + const root = Math.sqrt(1 - x2y2); + const x3d = x * 0.7071067812 + root / 2 - y / 2; + const y3d = x * 0.7071067812 - root / 2 + y / 2; + const z3d = 0.7071067812 * root + 0.7071067812 * y; + let brightness = -x / 2 + root * 0.7071067812 + y / 2; + if (brightness < 0) brightness = 0; + return ( + "rgb(" + + Math.round(brightness * 127.5 * (1 - y3d)) + + "," + + Math.round(brightness * 127.5 * (x3d + 1)) + + "," + + Math.round(brightness * 127.5 * (z3d + 1)) + + ")" + ); } - for (x = 0; x < 243 / level; ++x) { - drawBlock(x, y + 2, level) + + render(1); +}; + +tests["roundRect()"] = function (ctx) { + if (!ctx.roundRect) { + ctx.textAlign = "center"; + ctx.fillText("roundRect() not supported", 100, 100, 190); + ctx.fillText("try Chrome instead", 100, 115, 190); + return; } - if ((y += 3) >= 243 / level) { - y = 0 - level /= 3 + ctx.roundRect(5, 5, 60, 60, 20); + ctx.fillStyle = "red"; + ctx.fill(); + + ctx.beginPath(); + ctx.roundRect(5, 70, 60, 60, [10, 15, 20, 25]); + ctx.fillStyle = "blue"; + ctx.fill(); + + ctx.beginPath(); + ctx.roundRect(70, 5, 60, 60, [10]); + ctx.fillStyle = "green"; + ctx.fill(); + + ctx.beginPath(); + ctx.roundRect(70, 70, 60, 60, [10, 15]); + ctx.fillStyle = "orange"; + ctx.fill(); + + ctx.beginPath(); + ctx.roundRect(135, 5, 60, 60, [10, 15, 20]); + ctx.fillStyle = "pink"; + ctx.fill(); + + ctx.beginPath(); + ctx.roundRect(135, 70, 60, 60, [ + { x: 30, y: 10 }, + { x: 5, y: 20 }, + ]); + ctx.fillStyle = "darkseagreen"; + ctx.fill(); +}; + +tests["lineTo()"] = function (ctx) { + // Filled triangle + ctx.beginPath(); + ctx.moveTo(25.5, 25); + ctx.lineTo(105, 25); + ctx.lineTo(25, 105); + ctx.fill(); + + // Stroked triangle + ctx.beginPath(); + ctx.moveTo(125, 125); + ctx.lineTo(125, 45); + ctx.lineTo(45, 125); + ctx.closePath(); + ctx.stroke(); +}; + +tests["arc()"] = function (ctx) { + ctx.beginPath(); + ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // Outer circle + ctx.moveTo(110, 75); + ctx.arc(75, 75, 35, 0, Math.PI, false); // Mouth + ctx.moveTo(65, 65); + ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // Left eye + ctx.moveTo(95, 65); + ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // Right eye + ctx.stroke(); +}; + +tests["arc() 2"] = function (ctx) { + for (let i = 0; i < 4; i++) { + for (let j = 0; j < 3; j++) { + ctx.beginPath(); + const x = 25 + j * 50; // x coordinate + const y = 25 + i * 50; // y coordinate + const radius = 20; // Arc radius + const startAngle = 0; // Starting point on circle + const endAngle = Math.PI + (Math.PI * j) / 2; // End point on circle + const anticlockwise = i % 2 === 1; // clockwise or anticlockwise + + ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise); + + if (i > 1) { + ctx.fill(); + } else { + ctx.stroke(); + } + } } - if (level >= minimumLevel) { - renderLevel(minimumLevel, level, y) +}; + +tests["arc()() #1736"] = function (ctx) { + let centerX = 512; + let centerY = 512; + let startAngle = 6.283185307179586; // exactly 2pi + let endAngle = 7.5398223686155035; + let innerRadius = 359.67999999999995; + let outerRadius = 368.64; + + ctx.scale(0.2, 0.2); + + ctx.beginPath(); + ctx.moveTo( + centerX + Math.cos(startAngle) * innerRadius, + centerY + Math.sin(startAngle) * innerRadius + ); + ctx.lineTo( + centerX + Math.cos(startAngle) * outerRadius, + centerY + Math.sin(startAngle) * outerRadius + ); + ctx.arc(centerX, centerY, outerRadius, startAngle, endAngle, false); + ctx.lineTo( + centerX + Math.cos(endAngle) * innerRadius, + centerY + Math.sin(endAngle) * innerRadius + ); + ctx.arc(centerX, centerY, innerRadius, endAngle, startAngle, true); + ctx.closePath(); + ctx.stroke(); +}; + +tests["arc()() #1808"] = function (ctx) { + ctx.scale(0.5, 0.5); + ctx.beginPath(); + ctx.arc(256, 256, 50, 0, 2 * Math.PI, true); + ctx.arc(256, 256, 25, 0, 2 * Math.PI, false); + ctx.closePath(); + ctx.fill(); +}; + +tests["arcTo()"] = function (ctx) { + ctx.fillStyle = "#08C8EE"; + ctx.translate(-50, -50); + ctx.moveTo(120, 100); + ctx.lineTo(180, 100); + ctx.arcTo(200, 100, 200, 120, 5); + ctx.lineTo(200, 180); + ctx.arcTo(200, 200, 180, 200, 20); + ctx.lineTo(120, 200); + ctx.arcTo(100, 200, 100, 180, 20); + ctx.lineTo(100, 120); + ctx.arcTo(100, 100, 120, 100, 20); + ctx.fill(); + + ctx.font = "bold 25px Arial"; + ctx.fillStyle = "#fff"; + ctx.fillText("node", 120, 155); +}; + +tests["ellipse() 1"] = function (ctx) { + const n = 8; + for (let i = 0; i < n; i++) { + ctx.beginPath(); + const a = (i * 2 * Math.PI) / n; + const x = 100 + 50 * Math.cos(a); + const y = 100 + 50 * Math.sin(a); + ctx.ellipse(x, y, 10, 15, a, 0, 2 * Math.PI); + ctx.stroke(); } - } - - function drawBlock (x, y, level) { - ctx.fillStyle = getPointColour( - x * level + (level - 1) / 2, - y * level + (level - 1) / 2 - ) - - ctx.fillRect( - x * level, - y * level, - level, - level - ) - } - - function getPointColour (x, y) { - x = x / 121.5 - 1 - y = -y / 121.5 + 1 - const x2y2 = x * x + y * y - - if (x2y2 > 1) { - return '#000' +}; + +tests["ellipse() 2"] = function (ctx) { + const n = 8; + for (let i = 0; i < n; i++) { + ctx.beginPath(); + const a = (i * 2 * Math.PI) / n; + const x = 100 + 50 * Math.cos(a); + const y = 100 + 50 * Math.sin(a); + ctx.ellipse(x, y, 10, 15, a, 0, a); + ctx.stroke(); } - - const root = Math.sqrt(1 - x2y2) - const x3d = x * 0.7071067812 + root / 2 - y / 2 - const y3d = x * 0.7071067812 - root / 2 + y / 2 - const z3d = 0.7071067812 * root + 0.7071067812 * y - let brightness = -x / 2 + root * 0.7071067812 + y / 2 - if (brightness < 0) brightness = 0 - return ( - 'rgb(' + Math.round(brightness * 127.5 * (1 - y3d)) + - ',' + Math.round(brightness * 127.5 * (x3d + 1)) + - ',' + Math.round(brightness * 127.5 * (z3d + 1)) + - ')' - ) - } - - render(1) -} - -tests['roundRect()'] = function (ctx) { - if (!ctx.roundRect) { - ctx.textAlign = 'center' - ctx.fillText('roundRect() not supported', 100, 100, 190) - ctx.fillText('try Chrome instead', 100, 115, 190) - return - } - ctx.roundRect(5, 5, 60, 60, 20) - ctx.fillStyle = 'red' - ctx.fill() - - ctx.beginPath() - ctx.roundRect(5, 70, 60, 60, [10, 15, 20, 25]) - ctx.fillStyle = 'blue' - ctx.fill() - - ctx.beginPath() - ctx.roundRect(70, 5, 60, 60, [10]) - ctx.fillStyle = 'green' - ctx.fill() - - ctx.beginPath() - ctx.roundRect(70, 70, 60, 60, [10, 15]) - ctx.fillStyle = 'orange' - ctx.fill() - - ctx.beginPath() - ctx.roundRect(135, 5, 60, 60, [10, 15, 20]) - ctx.fillStyle = 'pink' - ctx.fill() - - ctx.beginPath() - ctx.roundRect(135, 70, 60, 60, [{ x: 30, y: 10 }, { x: 5, y: 20 }]) - ctx.fillStyle = 'darkseagreen' - ctx.fill() -} - -tests['lineTo()'] = function (ctx) { - // Filled triangle - ctx.beginPath() - ctx.moveTo(25.5, 25) - ctx.lineTo(105, 25) - ctx.lineTo(25, 105) - ctx.fill() - - // Stroked triangle - ctx.beginPath() - ctx.moveTo(125, 125) - ctx.lineTo(125, 45) - ctx.lineTo(45, 125) - ctx.closePath() - ctx.stroke() -} - -tests['arc()'] = function (ctx) { - ctx.beginPath() - ctx.arc(75, 75, 50, 0, Math.PI * 2, true) // Outer circle - ctx.moveTo(110, 75) - ctx.arc(75, 75, 35, 0, Math.PI, false) // Mouth - ctx.moveTo(65, 65) - ctx.arc(60, 65, 5, 0, Math.PI * 2, true) // Left eye - ctx.moveTo(95, 65) - ctx.arc(90, 65, 5, 0, Math.PI * 2, true) // Right eye - ctx.stroke() -} - -tests['arc() 2'] = function (ctx) { - for (let i = 0; i < 4; i++) { - for (let j = 0; j < 3; j++) { - ctx.beginPath() - const x = 25 + j * 50 // x coordinate - const y = 25 + i * 50 // y coordinate - const radius = 20 // Arc radius - const startAngle = 0 // Starting point on circle - const endAngle = Math.PI + (Math.PI * j) / 2 // End point on circle - const anticlockwise = (i % 2) === 1 // clockwise or anticlockwise - - ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise) - - if (i > 1) { - ctx.fill() - } else { - ctx.stroke() - } +}; + +tests["ellipse() 3"] = function (ctx) { + const n = 8; + for (let i = 0; i < n; i++) { + ctx.beginPath(); + const a = (i * 2 * Math.PI) / n; + const x = 100 + 50 * Math.cos(a); + const y = 100 + 50 * Math.sin(a); + ctx.ellipse(x, y, 10, 15, a, 0, a, true); + ctx.stroke(); } - } -} - -tests['arc()() #1736'] = function (ctx) { - let centerX = 512 - let centerY = 512 - let startAngle = 6.283185307179586 // exactly 2pi - let endAngle = 7.5398223686155035 - let innerRadius = 359.67999999999995 - let outerRadius = 368.64 - - ctx.scale(0.2, 0.2) - - ctx.beginPath() - ctx.moveTo(centerX + Math.cos(startAngle) * innerRadius, centerY + Math.sin(startAngle) * innerRadius) - ctx.lineTo(centerX + Math.cos(startAngle) * outerRadius, centerY + Math.sin(startAngle) * outerRadius) - ctx.arc(centerX, centerY, outerRadius, startAngle, endAngle, false) - ctx.lineTo(centerX + Math.cos(endAngle) * innerRadius, centerY + Math.sin(endAngle) * innerRadius) - ctx.arc(centerX, centerY, innerRadius, endAngle, startAngle, true) - ctx.closePath() - ctx.stroke() -} - -tests['arc()() #1808'] = function (ctx) { - ctx.scale(0.5, 0.5) - ctx.beginPath() - ctx.arc(256, 256, 50, 0, 2 * Math.PI, true) - ctx.arc(256, 256, 25, 0, 2 * Math.PI, false) - ctx.closePath() - ctx.fill() -} - -tests['arcTo()'] = function (ctx) { - ctx.fillStyle = '#08C8EE' - ctx.translate(-50, -50) - ctx.moveTo(120, 100) - ctx.lineTo(180, 100) - ctx.arcTo(200, 100, 200, 120, 5) - ctx.lineTo(200, 180) - ctx.arcTo(200, 200, 180, 200, 20) - ctx.lineTo(120, 200) - ctx.arcTo(100, 200, 100, 180, 20) - ctx.lineTo(100, 120) - ctx.arcTo(100, 100, 120, 100, 20) - ctx.fill() - - ctx.font = 'bold 25px Arial' - ctx.fillStyle = '#fff' - ctx.fillText('node', 120, 155) -} - -tests['ellipse() 1'] = function (ctx) { - const n = 8 - for (let i = 0; i < n; i++) { - ctx.beginPath() - const a = i * 2 * Math.PI / n - const x = 100 + 50 * Math.cos(a) - const y = 100 + 50 * Math.sin(a) - ctx.ellipse(x, y, 10, 15, a, 0, 2 * Math.PI) - ctx.stroke() - } -} - -tests['ellipse() 2'] = function (ctx) { - const n = 8 - for (let i = 0; i < n; i++) { - ctx.beginPath() - const a = i * 2 * Math.PI / n - const x = 100 + 50 * Math.cos(a) - const y = 100 + 50 * Math.sin(a) - ctx.ellipse(x, y, 10, 15, a, 0, a) - ctx.stroke() - } -} - -tests['ellipse() 3'] = function (ctx) { - const n = 8 - for (let i = 0; i < n; i++) { - ctx.beginPath() - const a = i * 2 * Math.PI / n - const x = 100 + 50 * Math.cos(a) - const y = 100 + 50 * Math.sin(a) - ctx.ellipse(x, y, 10, 15, a, 0, a, true) - ctx.stroke() - } -} - -tests['ellipse() 4'] = function (ctx) { - const n = 8 - for (let i = 0; i < n; i++) { - ctx.beginPath() - const a = i * 2 * Math.PI / n - const x = 100 + 50 * Math.cos(a) - const y = 100 + 50 * Math.sin(a) - ctx.ellipse(x, y, 10, 15, a, a, 0, true) - ctx.stroke() - } -} - -tests['bezierCurveTo()'] = function (ctx) { - ctx.beginPath() - ctx.moveTo(75, 40) - ctx.bezierCurveTo(75, 37, 70, 25, 50, 25) - ctx.bezierCurveTo(20, 25, 20, 62.5, 20, 62.5) - ctx.bezierCurveTo(20, 80, 40, 102, 75, 120) - ctx.bezierCurveTo(110, 102, 130, 80, 130, 62.5) - ctx.bezierCurveTo(130, 62.5, 130, 25, 100, 25) - ctx.bezierCurveTo(85, 25, 75, 37, 75, 40) - ctx.fill() -} - -tests['quadraticCurveTo()'] = function (ctx) { - ctx.beginPath() - ctx.moveTo(75, 25) - ctx.quadraticCurveTo(25, 25, 25, 62.5) - ctx.quadraticCurveTo(25, 100, 50, 100) - ctx.quadraticCurveTo(50, 120, 30, 125) - ctx.quadraticCurveTo(60, 120, 65, 100) - ctx.quadraticCurveTo(125, 100, 125, 62.5) - ctx.quadraticCurveTo(125, 25, 75, 25) - ctx.stroke() -} - -tests['transform()'] = function (ctx) { - const sin = Math.sin(Math.PI / 6) - const cos = Math.cos(Math.PI / 6) - ctx.translate(100, 100) - ctx.scale(0.5, 0.5) - let c = 0 - for (let i = 0; i <= 12; i++) { - c = Math.floor(255 / 12 * i) - ctx.fillStyle = 'rgb(' + c + ',' + c + ',' + c + ')' - ctx.fillRect(0, 0, 100, 10) - ctx.transform(cos, sin, -sin, cos, 0, 0) - } -} - -tests['rotate()'] = function (ctx) { - ctx.rotate(0.4) - ctx.translate(30, 0) - ctx.rect(0, 0, 50, 50) - ctx.stroke() -} - -tests['rotate() 2'] = function (ctx) { - ctx.translate(75, 75) - - for (let i = 1; i < 6; i++) { // Loop through rings (from inside to out) - ctx.save() - ctx.fillStyle = 'rgb(' + (51 * i) + ',' + (255 - 51 * i) + ',255)' - - for (let j = 0; j < i * 6; j++) { // draw individual dots - ctx.rotate(Math.PI * 2 / (i * 6)) - ctx.beginPath() - ctx.arc(0, i * 12.5, 5, 0, Math.PI * 2, true) - ctx.fill() +}; + +tests["ellipse() 4"] = function (ctx) { + const n = 8; + for (let i = 0; i < n; i++) { + ctx.beginPath(); + const a = (i * 2 * Math.PI) / n; + const x = 100 + 50 * Math.cos(a); + const y = 100 + 50 * Math.sin(a); + ctx.ellipse(x, y, 10, 15, a, a, 0, true); + ctx.stroke(); } - - ctx.restore() - } -} - -tests['translate()'] = function (ctx) { - ctx.fillRect(0, 0, 300, 300) - for (let i = 0; i < 3; i++) { - for (let j = 0; j < 3; j++) { - ctx.save() - ctx.strokeStyle = '#9CFF00' - ctx.translate(50 + j * 100, 50 + i * 100) - drawSpirograph(ctx, 20 * (j + 2) / (j + 1), -8 * (i + 3) / (i + 1), 10) - ctx.restore() +}; + +tests["bezierCurveTo()"] = function (ctx) { + ctx.beginPath(); + ctx.moveTo(75, 40); + ctx.bezierCurveTo(75, 37, 70, 25, 50, 25); + ctx.bezierCurveTo(20, 25, 20, 62.5, 20, 62.5); + ctx.bezierCurveTo(20, 80, 40, 102, 75, 120); + ctx.bezierCurveTo(110, 102, 130, 80, 130, 62.5); + ctx.bezierCurveTo(130, 62.5, 130, 25, 100, 25); + ctx.bezierCurveTo(85, 25, 75, 37, 75, 40); + ctx.fill(); +}; + +tests["quadraticCurveTo()"] = function (ctx) { + ctx.beginPath(); + ctx.moveTo(75, 25); + ctx.quadraticCurveTo(25, 25, 25, 62.5); + ctx.quadraticCurveTo(25, 100, 50, 100); + ctx.quadraticCurveTo(50, 120, 30, 125); + ctx.quadraticCurveTo(60, 120, 65, 100); + ctx.quadraticCurveTo(125, 100, 125, 62.5); + ctx.quadraticCurveTo(125, 25, 75, 25); + ctx.stroke(); +}; + +tests["transform()"] = function (ctx) { + const sin = Math.sin(Math.PI / 6); + const cos = Math.cos(Math.PI / 6); + ctx.translate(100, 100); + ctx.scale(0.5, 0.5); + let c = 0; + for (let i = 0; i <= 12; i++) { + c = Math.floor((255 / 12) * i); + ctx.fillStyle = "rgb(" + c + "," + c + "," + c + ")"; + ctx.fillRect(0, 0, 100, 10); + ctx.transform(cos, sin, -sin, cos, 0, 0); } - } - function drawSpirograph (ctx, R, r, O) { - let x1 = R - O - let y1 = 0 - let i = 1 - let x2 - let y2 - - ctx.beginPath() - ctx.moveTo(x1, y1) - do { - if (i > 20000) break - x2 = (R + r) * Math.cos(i * Math.PI / 72) - (r + O) * Math.cos(((R + r) / r) * (i * Math.PI / 72)) - y2 = (R + r) * Math.sin(i * Math.PI / 72) - (r + O) * Math.sin(((R + r) / r) * (i * Math.PI / 72)) - ctx.lineTo(x2, y2) - x1 = x2 - y1 = y2 - i++ - } while (x2 !== R - O && y2 !== 0) - ctx.stroke() - } -} - -tests['scale()'] = function (ctx) { - ctx.strokeStyle = '#fc0' - ctx.lineWidth = 1.5 - ctx.fillRect(0, 0, 300, 300) - - // Uniform scaling - ctx.save() - ctx.translate(50, 50) - drawSpirograph(ctx, 22, 6, 5) // no scaling - - ctx.translate(100, 0) - ctx.scale(0.75, 0.75) - drawSpirograph(ctx, 22, 6, 5) - - ctx.translate(133.333, 0) - ctx.scale(0.75, 0.75) - drawSpirograph(ctx, 22, 6, 5) - ctx.restore() - - // Non-uniform scaling (y direction) - ctx.strokeStyle = '#0cf' - ctx.save() - ctx.translate(50, 150) - ctx.scale(1, 0.75) - drawSpirograph(ctx, 22, 6, 5) - - ctx.translate(100, 0) - ctx.scale(1, 0.75) - drawSpirograph(ctx, 22, 6, 5) - - ctx.translate(100, 0) - ctx.scale(1, 0.75) - drawSpirograph(ctx, 22, 6, 5) - ctx.restore() - - // Non-uniform scaling (x direction) - ctx.strokeStyle = '#cf0' - ctx.save() - ctx.translate(50, 250) - ctx.scale(0.75, 1) - drawSpirograph(ctx, 22, 6, 5) - - ctx.translate(133.333, 0) - ctx.scale(0.75, 1) - drawSpirograph(ctx, 22, 6, 5) - - ctx.translate(177.777, 0) - ctx.scale(0.75, 1) - drawSpirograph(ctx, 22, 6, 5) - ctx.restore() - function drawSpirograph (ctx, R, r, O) { - let x1 = R - O - let y1 = 0 - let i = 1 - let x2 - let y2 - - ctx.beginPath() - ctx.moveTo(x1, y1) - do { - if (i > 20000) break - x2 = (R + r) * Math.cos(i * Math.PI / 72) - (r + O) * Math.cos(((R + r) / r) * (i * Math.PI / 72)) - y2 = (R + r) * Math.sin(i * Math.PI / 72) - (r + O) * Math.sin(((R + r) / r) * (i * Math.PI / 72)) - ctx.lineTo(x2, y2) - x1 = x2 - y1 = y2 - i++ - } while (x2 !== R - O && y2 !== 0) - ctx.stroke() - } -} - -tests['rect()'] = function (ctx) { - ctx.rect(5, 5, 50, 50) - ctx.strokeStyle = 'yellow' - ctx.fill() - ctx.stroke() -} - -tests['clip()'] = function (ctx) { - ctx.arc(50, 50, 50, 0, Math.PI * 2, false) - ctx.stroke() - ctx.clip() - ctx.fillStyle = 'rgba(0,0,0,.5)' - ctx.fillRect(0, 0, 100, 100) -} - -tests['clip() 2'] = function (ctx) { - ctx.fillRect(0, 0, 150, 150) - ctx.translate(75, 75) - - // Create a circular clipping path - ctx.beginPath() - ctx.arc(0, 0, 60, 0, Math.PI * 2, true) - ctx.clip() - - // draw background - const lingrad = ctx.createLinearGradient(0, -75, 0, 75) - lingrad.addColorStop(0, '#232256') - lingrad.addColorStop(1, '#143778') - - ctx.fillStyle = lingrad - ctx.fillRect(-75, -75, 150, 150) - - // draw stars - for (let j = 1; j < 50; j++) { - ctx.save() - ctx.fillStyle = '#fff' - ctx.translate(75 - Math.floor(Math.random() * 150), 75 - Math.floor(Math.random() * 150)) - drawStar(ctx, Math.floor(Math.random() * 4) + 2) - ctx.restore() - } - function drawStar (ctx, r) { - ctx.save() - ctx.beginPath() - ctx.moveTo(r, 0) - for (let i = 0; i < 9; i++) { - ctx.rotate(Math.PI / 5) - if ((i % 2) === 0) { - ctx.lineTo((r / 0.525731) * 0.200811, 0) - } else { - ctx.lineTo(r, 0) - } +}; + +tests["rotate()"] = function (ctx) { + ctx.rotate(0.4); + ctx.translate(30, 0); + ctx.rect(0, 0, 50, 50); + ctx.stroke(); +}; + +tests["rotate() 2"] = function (ctx) { + ctx.translate(75, 75); + + for (let i = 1; i < 6; i++) { + // Loop through rings (from inside to out) + ctx.save(); + ctx.fillStyle = "rgb(" + 51 * i + "," + (255 - 51 * i) + ",255)"; + + for (let j = 0; j < i * 6; j++) { + // draw individual dots + ctx.rotate((Math.PI * 2) / (i * 6)); + ctx.beginPath(); + ctx.arc(0, i * 12.5, 5, 0, Math.PI * 2, true); + ctx.fill(); + } + + ctx.restore(); } - ctx.closePath() - ctx.fill() - ctx.restore() - } -} - -tests['createPattern()'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - const pattern = ctx.createPattern(img, 'repeat') - ctx.scale(0.1, 0.1) - ctx.fillStyle = pattern - ctx.fillRect(100, 100, 800, 800) - ctx.strokeStyle = pattern - ctx.lineWidth = 200 - ctx.strokeRect(1100, 1100, 800, 800) - done() - } - img.src = imageSrc('face.jpeg') -} - -tests['createPattern() with globalAlpha'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - const pattern = ctx.createPattern(img, 'repeat') - ctx.scale(0.1, 0.1) - ctx.globalAlpha = 0.6 - ctx.fillStyle = pattern - ctx.fillRect(100, 100, 800, 800) - ctx.globalAlpha = 0.2 - ctx.strokeStyle = pattern - ctx.lineWidth = 200 - ctx.strokeRect(1100, 1100, 800, 800) - done() - } - img.src = imageSrc('face.jpeg') -} - -tests['createPattern() repeat-x and repeat-y'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.scale(0.1, 0.1) - ctx.lineStyle = 'black' - ctx.lineWidth = 10 - ctx.fillStyle = ctx.createPattern(img, 'repeat-x') - ctx.fillRect(0, 0, 900, 900) - ctx.strokeRect(0, 0, 900, 900) - ctx.translate(1000, 1000) - ctx.fillStyle = ctx.createPattern(img, 'repeat-y') - ctx.fillRect(0, 0, 900, 900) - ctx.strokeRect(0, 0, 900, 900) - done() - } - img.src = imageSrc('face.jpeg') -} - -tests['createPattern() no-repeat'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.scale(0.1, 0.1) - ctx.lineStyle = 'black' - ctx.lineWidth = 10 - ctx.fillStyle = ctx.createPattern(img, 'no-repeat') - ctx.fillRect(0, 0, 900, 900) - ctx.strokeRect(0, 0, 900, 900) - ctx.fillStyle = ctx.createPattern(img, 'repeat') - ctx.fillRect(1000, 1000, 900, 900) - ctx.strokeRect(1000, 1000, 900, 900) - done() - } - img.src = imageSrc('face.jpeg') -} - -tests['createPattern() then setTransform and fill'] = function (ctx, done) { - var img = new Image() - img.onload = function () { - var pattern = ctx.createPattern(img, 'repeat') - ctx.fillStyle = pattern - ctx.scale(0.125, 0.125) - - ctx.fillRect(0, 0, 800, 800) - - pattern.setTransform(new DOMMatrix().translate(100, 100)) - ctx.fillRect(0, 800, 800, 800) - - pattern.setTransform(new DOMMatrix().rotate(45)) - ctx.fillRect(800, 0, 800, 800) - - pattern.setTransform(new DOMMatrix().rotate(45).scale(4)) - ctx.fillRect(800, 800, 800, 800) - done() - } - img.src = imageSrc('quadrants.png') -} - -tests['createPattern() then setTransform and stroke'] = function (ctx, done) { - var img = new Image() - img.onload = function () { - var pattern = ctx.createPattern(img, 'repeat') - ctx.lineWidth = 150 - ctx.strokeStyle = pattern - ctx.scale(0.125, 0.125) - - ctx.strokeRect(100, 100, 500, 500) - - pattern.setTransform(new DOMMatrix().translate(100, 100)) - ctx.strokeRect(100, 900, 500, 500) - - pattern.setTransform(new DOMMatrix().rotate(45)) - ctx.strokeRect(900, 100, 500, 500) - - pattern.setTransform(new DOMMatrix().rotate(45).scale(4)) - ctx.strokeRect(900, 900, 500, 500) - done() - } - img.src = imageSrc('quadrants.png') -} - -tests['createPattern() then setTransform with no-repeat'] = function (ctx, done) { - var img = new Image() - img.onload = function () { - var pattern = ctx.createPattern(img, 'no-repeat') - ctx.fillStyle = pattern - ctx.scale(0.125, 0.125) - - ctx.fillRect(0, 0, 800, 800) - - pattern.setTransform(new DOMMatrix().translate(100, 900)) - ctx.fillRect(0, 800, 800, 800) - - pattern.setTransform(new DOMMatrix().translate(800, 0).rotate(45)) - ctx.fillRect(800, 0, 800, 800) - - pattern.setTransform(new DOMMatrix().translate(800, 800).rotate(45).scale(4)) - ctx.fillRect(800, 800, 800, 800) - done() - } - img.src = imageSrc('quadrants.png') -} - -tests['createLinearGradient()'] = function (ctx) { - const lingrad = ctx.createLinearGradient(0, 0, 0, 150) - lingrad.addColorStop(0, '#00ABEB') - lingrad.addColorStop(0.5, '#fff') - lingrad.addColorStop(0.5, '#26C000') - lingrad.addColorStop(1, '#fff') - - const lingrad2 = ctx.createLinearGradient(0, 50, 0, 95) - lingrad2.addColorStop(0.5, '#000') - lingrad2.addColorStop(1, 'rgba(0,0,0,0)') - - ctx.fillStyle = lingrad - ctx.strokeStyle = lingrad2 - - ctx.fillRect(10, 10, 130, 130) - ctx.strokeRect(50, 50, 50, 50) - - // Specifically test that setting the fillStyle to the current fillStyle works - ctx.fillStyle = '#13b575' - ctx.fillStyle = ctx.fillStyle // eslint-disable-line no-self-assign - ctx.fillRect(65, 65, 20, 20) - - const lingrad3 = ctx.createLinearGradient(0, 0, 200, 0) - lingrad3.addColorStop(0, 'rgba(0,255,0,0.5)') - lingrad3.addColorStop(0.33, 'rgba(255,255,0,0.5)') - lingrad3.addColorStop(0.66, 'rgba(0,255,255,0.5)') - lingrad3.addColorStop(1, 'rgba(255,0,255,0.5)') - ctx.fillStyle = lingrad3 - ctx.fillRect(0, 170, 200, 30) -} - -tests['createLinearGradient() with opacity'] = function (ctx) { - const lingrad = ctx.createLinearGradient(0, 0, 0, 200) - lingrad.addColorStop(0, '#00FF00') - lingrad.addColorStop(0.33, '#FF0000') - lingrad.addColorStop(0.66, '#0000FF') - lingrad.addColorStop(1, '#00FFFF') - ctx.fillStyle = lingrad - ctx.strokeStyle = lingrad - ctx.lineWidth = 10 - ctx.globalAlpha = 0.4 - ctx.strokeRect(5, 5, 190, 190) - ctx.fillRect(0, 0, 50, 50) - ctx.globalAlpha = 0.6 - ctx.strokeRect(35, 35, 130, 130) - ctx.fillRect(50, 50, 50, 50) - ctx.globalAlpha = 0.8 - ctx.strokeRect(65, 65, 70, 70) - ctx.fillRect(100, 100, 50, 50) - ctx.globalAlpha = 0.95 - ctx.fillRect(150, 150, 50, 50) -} - -tests['createLinearGradient() and transforms'] = function (ctx) { - const lingrad = ctx.createLinearGradient(0, -100, 0, 100) - lingrad.addColorStop(0, '#00FF00') - lingrad.addColorStop(0.33, '#FF0000') - lingrad.addColorStop(0.66, '#0000FF') - lingrad.addColorStop(1, '#00FFFF') - ctx.fillStyle = lingrad - ctx.translate(100, 100) - ctx.beginPath() - ctx.moveTo(-100, -100) - ctx.lineTo(100, -100) - ctx.lineTo(100, 100) - ctx.lineTo(-100, 100) - ctx.closePath() - ctx.globalAlpha = 0.5 - ctx.rotate(1.570795) - ctx.scale(0.6, 0.6) - ctx.fill() -} - -tests['createRadialGradient()'] = function (ctx) { - // Create gradients - const radgrad = ctx.createRadialGradient(45, 45, 10, 52, 50, 30) - radgrad.addColorStop(0, '#A7D30C') - radgrad.addColorStop(0.9, '#019F62') - radgrad.addColorStop(1, 'rgba(1,159,98,0)') - - const radgrad2 = ctx.createRadialGradient(105, 105, 20, 112, 120, 50) - radgrad2.addColorStop(0, '#FF5F98') - radgrad2.addColorStop(0.75, '#FF0188') - radgrad2.addColorStop(1, 'rgba(255,1,136,0)') - - const radgrad3 = ctx.createRadialGradient(95, 15, 15, 102, 20, 40) - radgrad3.addColorStop(0, '#00C9FF') - radgrad3.addColorStop(0.8, '#00B5E2') - radgrad3.addColorStop(1, 'rgba(0,201,255,0)') - - const radgrad4 = ctx.createRadialGradient(0, 150, 50, 0, 140, 90) - radgrad4.addColorStop(0, '#F4F201') - radgrad4.addColorStop(0.8, '#E4C700') - radgrad4.addColorStop(1, 'rgba(228,199,0,0)') - - // draw shapes - ctx.fillStyle = radgrad4 - ctx.fillRect(0, 0, 150, 150) - ctx.fillStyle = radgrad3 - ctx.fillRect(0, 0, 150, 150) - ctx.fillStyle = radgrad2 - ctx.fillRect(0, 0, 150, 150) - ctx.fillStyle = radgrad - ctx.fillRect(0, 0, 150, 150) -} +}; + +tests["translate()"] = function (ctx) { + ctx.fillRect(0, 0, 300, 300); + for (let i = 0; i < 3; i++) { + for (let j = 0; j < 3; j++) { + ctx.save(); + ctx.strokeStyle = "#9CFF00"; + ctx.translate(50 + j * 100, 50 + i * 100); + drawSpirograph( + ctx, + (20 * (j + 2)) / (j + 1), + (-8 * (i + 3)) / (i + 1), + 10 + ); + ctx.restore(); + } + } + function drawSpirograph(ctx, R, r, O) { + let x1 = R - O; + let y1 = 0; + let i = 1; + let x2; + let y2; + + ctx.beginPath(); + ctx.moveTo(x1, y1); + do { + if (i > 20000) break; + x2 = + (R + r) * Math.cos((i * Math.PI) / 72) - + (r + O) * Math.cos(((R + r) / r) * ((i * Math.PI) / 72)); + y2 = + (R + r) * Math.sin((i * Math.PI) / 72) - + (r + O) * Math.sin(((R + r) / r) * ((i * Math.PI) / 72)); + ctx.lineTo(x2, y2); + x1 = x2; + y1 = y2; + i++; + } while (x2 !== R - O && y2 !== 0); + ctx.stroke(); + } +}; + +tests["scale()"] = function (ctx) { + ctx.strokeStyle = "#fc0"; + ctx.lineWidth = 1.5; + ctx.fillRect(0, 0, 300, 300); + + // Uniform scaling + ctx.save(); + ctx.translate(50, 50); + drawSpirograph(ctx, 22, 6, 5); // no scaling + + ctx.translate(100, 0); + ctx.scale(0.75, 0.75); + drawSpirograph(ctx, 22, 6, 5); + + ctx.translate(133.333, 0); + ctx.scale(0.75, 0.75); + drawSpirograph(ctx, 22, 6, 5); + ctx.restore(); + + // Non-uniform scaling (y direction) + ctx.strokeStyle = "#0cf"; + ctx.save(); + ctx.translate(50, 150); + ctx.scale(1, 0.75); + drawSpirograph(ctx, 22, 6, 5); + + ctx.translate(100, 0); + ctx.scale(1, 0.75); + drawSpirograph(ctx, 22, 6, 5); + + ctx.translate(100, 0); + ctx.scale(1, 0.75); + drawSpirograph(ctx, 22, 6, 5); + ctx.restore(); + + // Non-uniform scaling (x direction) + ctx.strokeStyle = "#cf0"; + ctx.save(); + ctx.translate(50, 250); + ctx.scale(0.75, 1); + drawSpirograph(ctx, 22, 6, 5); + + ctx.translate(133.333, 0); + ctx.scale(0.75, 1); + drawSpirograph(ctx, 22, 6, 5); + + ctx.translate(177.777, 0); + ctx.scale(0.75, 1); + drawSpirograph(ctx, 22, 6, 5); + ctx.restore(); + function drawSpirograph(ctx, R, r, O) { + let x1 = R - O; + let y1 = 0; + let i = 1; + let x2; + let y2; + + ctx.beginPath(); + ctx.moveTo(x1, y1); + do { + if (i > 20000) break; + x2 = + (R + r) * Math.cos((i * Math.PI) / 72) - + (r + O) * Math.cos(((R + r) / r) * ((i * Math.PI) / 72)); + y2 = + (R + r) * Math.sin((i * Math.PI) / 72) - + (r + O) * Math.sin(((R + r) / r) * ((i * Math.PI) / 72)); + ctx.lineTo(x2, y2); + x1 = x2; + y1 = y2; + i++; + } while (x2 !== R - O && y2 !== 0); + ctx.stroke(); + } +}; + +tests["rect()"] = function (ctx) { + ctx.rect(5, 5, 50, 50); + ctx.strokeStyle = "yellow"; + ctx.fill(); + ctx.stroke(); +}; + +tests["clip()"] = function (ctx) { + ctx.arc(50, 50, 50, 0, Math.PI * 2, false); + ctx.stroke(); + ctx.clip(); + ctx.fillStyle = "rgba(0,0,0,.5)"; + ctx.fillRect(0, 0, 100, 100); +}; + +tests["clip() 2"] = function (ctx) { + ctx.fillRect(0, 0, 150, 150); + ctx.translate(75, 75); + + // Create a circular clipping path + ctx.beginPath(); + ctx.arc(0, 0, 60, 0, Math.PI * 2, true); + ctx.clip(); + + // draw background + const lingrad = ctx.createLinearGradient(0, -75, 0, 75); + lingrad.addColorStop(0, "#232256"); + lingrad.addColorStop(1, "#143778"); + + ctx.fillStyle = lingrad; + ctx.fillRect(-75, -75, 150, 150); + + // draw stars + for (let j = 1; j < 50; j++) { + ctx.save(); + ctx.fillStyle = "#fff"; + ctx.translate( + 75 - Math.floor(Math.random() * 150), + 75 - Math.floor(Math.random() * 150) + ); + drawStar(ctx, Math.floor(Math.random() * 4) + 2); + ctx.restore(); + } + function drawStar(ctx, r) { + ctx.save(); + ctx.beginPath(); + ctx.moveTo(r, 0); + for (let i = 0; i < 9; i++) { + ctx.rotate(Math.PI / 5); + if (i % 2 === 0) { + ctx.lineTo((r / 0.525731) * 0.200811, 0); + } else { + ctx.lineTo(r, 0); + } + } + ctx.closePath(); + ctx.fill(); + ctx.restore(); + } +}; + +tests["createPattern()"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + const pattern = ctx.createPattern(img, "repeat"); + ctx.scale(0.1, 0.1); + ctx.fillStyle = pattern; + ctx.fillRect(100, 100, 800, 800); + ctx.strokeStyle = pattern; + ctx.lineWidth = 200; + ctx.strokeRect(1100, 1100, 800, 800); + done(); + }; + img.src = imageSrc("face.jpeg"); +}; + +tests["createPattern() with globalAlpha"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + const pattern = ctx.createPattern(img, "repeat"); + ctx.scale(0.1, 0.1); + ctx.globalAlpha = 0.6; + ctx.fillStyle = pattern; + ctx.fillRect(100, 100, 800, 800); + ctx.globalAlpha = 0.2; + ctx.strokeStyle = pattern; + ctx.lineWidth = 200; + ctx.strokeRect(1100, 1100, 800, 800); + done(); + }; + img.src = imageSrc("face.jpeg"); +}; + +tests["createPattern() repeat-x and repeat-y"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.scale(0.1, 0.1); + ctx.lineStyle = "black"; + ctx.lineWidth = 10; + ctx.fillStyle = ctx.createPattern(img, "repeat-x"); + ctx.fillRect(0, 0, 900, 900); + ctx.strokeRect(0, 0, 900, 900); + ctx.translate(1000, 1000); + ctx.fillStyle = ctx.createPattern(img, "repeat-y"); + ctx.fillRect(0, 0, 900, 900); + ctx.strokeRect(0, 0, 900, 900); + done(); + }; + img.src = imageSrc("face.jpeg"); +}; + +tests["createPattern() no-repeat"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.scale(0.1, 0.1); + ctx.lineStyle = "black"; + ctx.lineWidth = 10; + ctx.fillStyle = ctx.createPattern(img, "no-repeat"); + ctx.fillRect(0, 0, 900, 900); + ctx.strokeRect(0, 0, 900, 900); + ctx.fillStyle = ctx.createPattern(img, "repeat"); + ctx.fillRect(1000, 1000, 900, 900); + ctx.strokeRect(1000, 1000, 900, 900); + done(); + }; + img.src = imageSrc("face.jpeg"); +}; + +tests["createPattern() then setTransform and fill"] = function (ctx, done) { + var img = new Image(); + img.onload = function () { + var pattern = ctx.createPattern(img, "repeat"); + ctx.fillStyle = pattern; + ctx.scale(0.125, 0.125); + + ctx.fillRect(0, 0, 800, 800); + + pattern.setTransform(new DOMMatrix().translate(100, 100)); + ctx.fillRect(0, 800, 800, 800); + + pattern.setTransform(new DOMMatrix().rotate(45)); + ctx.fillRect(800, 0, 800, 800); + + pattern.setTransform(new DOMMatrix().rotate(45).scale(4)); + ctx.fillRect(800, 800, 800, 800); + done(); + }; + img.src = imageSrc("quadrants.png"); +}; + +tests["createPattern() then setTransform and stroke"] = function (ctx, done) { + var img = new Image(); + img.onload = function () { + var pattern = ctx.createPattern(img, "repeat"); + ctx.lineWidth = 150; + ctx.strokeStyle = pattern; + ctx.scale(0.125, 0.125); + + ctx.strokeRect(100, 100, 500, 500); + + pattern.setTransform(new DOMMatrix().translate(100, 100)); + ctx.strokeRect(100, 900, 500, 500); + + pattern.setTransform(new DOMMatrix().rotate(45)); + ctx.strokeRect(900, 100, 500, 500); + + pattern.setTransform(new DOMMatrix().rotate(45).scale(4)); + ctx.strokeRect(900, 900, 500, 500); + done(); + }; + img.src = imageSrc("quadrants.png"); +}; + +tests["createPattern() then setTransform with no-repeat"] = function ( + ctx, + done +) { + var img = new Image(); + img.onload = function () { + var pattern = ctx.createPattern(img, "no-repeat"); + ctx.fillStyle = pattern; + ctx.scale(0.125, 0.125); + + ctx.fillRect(0, 0, 800, 800); + + pattern.setTransform(new DOMMatrix().translate(100, 900)); + ctx.fillRect(0, 800, 800, 800); + + pattern.setTransform(new DOMMatrix().translate(800, 0).rotate(45)); + ctx.fillRect(800, 0, 800, 800); + + pattern.setTransform( + new DOMMatrix().translate(800, 800).rotate(45).scale(4) + ); + ctx.fillRect(800, 800, 800, 800); + done(); + }; + img.src = imageSrc("quadrants.png"); +}; + +tests["createLinearGradient()"] = function (ctx) { + const lingrad = ctx.createLinearGradient(0, 0, 0, 150); + lingrad.addColorStop(0, "#00ABEB"); + lingrad.addColorStop(0.5, "#fff"); + lingrad.addColorStop(0.5, "#26C000"); + lingrad.addColorStop(1, "#fff"); + + const lingrad2 = ctx.createLinearGradient(0, 50, 0, 95); + lingrad2.addColorStop(0.5, "#000"); + lingrad2.addColorStop(1, "rgba(0,0,0,0)"); + + ctx.fillStyle = lingrad; + ctx.strokeStyle = lingrad2; + + ctx.fillRect(10, 10, 130, 130); + ctx.strokeRect(50, 50, 50, 50); + + // Specifically test that setting the fillStyle to the current fillStyle works + ctx.fillStyle = "#13b575"; + ctx.fillStyle = ctx.fillStyle; // eslint-disable-line no-self-assign + ctx.fillRect(65, 65, 20, 20); + + const lingrad3 = ctx.createLinearGradient(0, 0, 200, 0); + lingrad3.addColorStop(0, "rgba(0,255,0,0.5)"); + lingrad3.addColorStop(0.33, "rgba(255,255,0,0.5)"); + lingrad3.addColorStop(0.66, "rgba(0,255,255,0.5)"); + lingrad3.addColorStop(1, "rgba(255,0,255,0.5)"); + ctx.fillStyle = lingrad3; + ctx.fillRect(0, 170, 200, 30); +}; + +tests["createLinearGradient() with opacity"] = function (ctx) { + const lingrad = ctx.createLinearGradient(0, 0, 0, 200); + lingrad.addColorStop(0, "#00FF00"); + lingrad.addColorStop(0.33, "#FF0000"); + lingrad.addColorStop(0.66, "#0000FF"); + lingrad.addColorStop(1, "#00FFFF"); + ctx.fillStyle = lingrad; + ctx.strokeStyle = lingrad; + ctx.lineWidth = 10; + ctx.globalAlpha = 0.4; + ctx.strokeRect(5, 5, 190, 190); + ctx.fillRect(0, 0, 50, 50); + ctx.globalAlpha = 0.6; + ctx.strokeRect(35, 35, 130, 130); + ctx.fillRect(50, 50, 50, 50); + ctx.globalAlpha = 0.8; + ctx.strokeRect(65, 65, 70, 70); + ctx.fillRect(100, 100, 50, 50); + ctx.globalAlpha = 0.95; + ctx.fillRect(150, 150, 50, 50); +}; + +tests["createLinearGradient() and transforms"] = function (ctx) { + const lingrad = ctx.createLinearGradient(0, -100, 0, 100); + lingrad.addColorStop(0, "#00FF00"); + lingrad.addColorStop(0.33, "#FF0000"); + lingrad.addColorStop(0.66, "#0000FF"); + lingrad.addColorStop(1, "#00FFFF"); + ctx.fillStyle = lingrad; + ctx.translate(100, 100); + ctx.beginPath(); + ctx.moveTo(-100, -100); + ctx.lineTo(100, -100); + ctx.lineTo(100, 100); + ctx.lineTo(-100, 100); + ctx.closePath(); + ctx.globalAlpha = 0.5; + ctx.rotate(1.570795); + ctx.scale(0.6, 0.6); + ctx.fill(); +}; + +tests["createRadialGradient()"] = function (ctx) { + // Create gradients + const radgrad = ctx.createRadialGradient(45, 45, 10, 52, 50, 30); + radgrad.addColorStop(0, "#A7D30C"); + radgrad.addColorStop(0.9, "#019F62"); + radgrad.addColorStop(1, "rgba(1,159,98,0)"); + + const radgrad2 = ctx.createRadialGradient(105, 105, 20, 112, 120, 50); + radgrad2.addColorStop(0, "#FF5F98"); + radgrad2.addColorStop(0.75, "#FF0188"); + radgrad2.addColorStop(1, "rgba(255,1,136,0)"); + + const radgrad3 = ctx.createRadialGradient(95, 15, 15, 102, 20, 40); + radgrad3.addColorStop(0, "#00C9FF"); + radgrad3.addColorStop(0.8, "#00B5E2"); + radgrad3.addColorStop(1, "rgba(0,201,255,0)"); + + const radgrad4 = ctx.createRadialGradient(0, 150, 50, 0, 140, 90); + radgrad4.addColorStop(0, "#F4F201"); + radgrad4.addColorStop(0.8, "#E4C700"); + radgrad4.addColorStop(1, "rgba(228,199,0,0)"); + + // draw shapes + ctx.fillStyle = radgrad4; + ctx.fillRect(0, 0, 150, 150); + ctx.fillStyle = radgrad3; + ctx.fillRect(0, 0, 150, 150); + ctx.fillStyle = radgrad2; + ctx.fillRect(0, 0, 150, 150); + ctx.fillStyle = radgrad; + ctx.fillRect(0, 0, 150, 150); +}; tests.globalAlpha = function (ctx) { - ctx.globalAlpha = 0.5 - ctx.fillStyle = 'rgba(0,0,0,0.5)' - ctx.strokeRect(0, 0, 50, 50) - - ctx.globalAlpha = 0.8 - ctx.fillRect(20, 20, 20, 20) - - ctx.fillStyle = 'black' - ctx.globalAlpha = 1 - ctx.fillRect(25, 25, 10, 10) -} - -tests['globalAlpha 2'] = function (ctx) { - ctx.fillStyle = '#FD0' - ctx.fillRect(0, 0, 75, 75) - ctx.fillStyle = '#6C0' - ctx.fillRect(75, 0, 75, 75) - ctx.fillStyle = '#09F' - ctx.fillRect(0, 75, 75, 75) - ctx.fillStyle = '#F30' - ctx.fillRect(75, 75, 150, 150) - ctx.fillStyle = '#FFF' - - ctx.globalAlpha = 0.2 - - for (let i = 0; i < 7; i++) { - ctx.beginPath() - ctx.arc(75, 75, 10 + 10 * i, 0, Math.PI * 2, true) - ctx.fill() - } -} + ctx.globalAlpha = 0.5; + ctx.fillStyle = "rgba(0,0,0,0.5)"; + ctx.strokeRect(0, 0, 50, 50); + + ctx.globalAlpha = 0.8; + ctx.fillRect(20, 20, 20, 20); + + ctx.fillStyle = "black"; + ctx.globalAlpha = 1; + ctx.fillRect(25, 25, 10, 10); +}; + +tests["globalAlpha 2"] = function (ctx) { + ctx.fillStyle = "#FD0"; + ctx.fillRect(0, 0, 75, 75); + ctx.fillStyle = "#6C0"; + ctx.fillRect(75, 0, 75, 75); + ctx.fillStyle = "#09F"; + ctx.fillRect(0, 75, 75, 75); + ctx.fillStyle = "#F30"; + ctx.fillRect(75, 75, 150, 150); + ctx.fillStyle = "#FFF"; + + ctx.globalAlpha = 0.2; + + for (let i = 0; i < 7; i++) { + ctx.beginPath(); + ctx.arc(75, 75, 10 + 10 * i, 0, Math.PI * 2, true); + ctx.fill(); + } +}; tests.fillStyle = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.fillStyle = 'rgb(' + Math.floor(255 - 42.5 * i) + ',' + Math.floor(255 - 42.5 * j) + ',0)' - ctx.fillRect(j * 25, i * 25, 25, 25) + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.fillStyle = + "rgb(" + + Math.floor(255 - 42.5 * i) + + "," + + Math.floor(255 - 42.5 * j) + + ",0)"; + ctx.fillRect(j * 25, i * 25, 25, 25); + } } - } -} +}; tests.strokeStyle = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.strokeStyle = 'rgb(0,' + Math.floor(255 - 42.5 * i) + ',' + - Math.floor(255 - 42.5 * j) + ')' - ctx.beginPath() - ctx.arc(12.5 + j * 25, 12.5 + i * 25, 10, 0, Math.PI * 2, true) - ctx.stroke() + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.strokeStyle = + "rgb(0," + + Math.floor(255 - 42.5 * i) + + "," + + Math.floor(255 - 42.5 * j) + + ")"; + ctx.beginPath(); + ctx.arc(12.5 + j * 25, 12.5 + i * 25, 10, 0, Math.PI * 2, true); + ctx.stroke(); + } } - } -} - -tests['fill with stroke'] = function (ctx) { - ctx.beginPath() - ctx.arc(75, 75, 50, 0, Math.PI * 2, true) - ctx.fill() - ctx.closePath() - ctx.beginPath() - ctx.fillStyle = 'red' - ctx.strokeStyle = 'yellow' - ctx.arc(75, 75, 30, 0, Math.PI * 2, true) - ctx.fill() - ctx.stroke() -} - -tests['floating point coordinates'] = function (ctx) { - ctx.lineCap = 'square' - for (let i = 0; i < 70; i += 3.05) { - ctx.rect(i + 3, 10.5, 0, 130) - ctx.moveTo(i + 77, 10.5) - ctx.lineTo(i + 77, 140.5) - } - ctx.stroke() -} +}; + +tests["fill with stroke"] = function (ctx) { + ctx.beginPath(); + ctx.arc(75, 75, 50, 0, Math.PI * 2, true); + ctx.fill(); + ctx.closePath(); + ctx.beginPath(); + ctx.fillStyle = "red"; + ctx.strokeStyle = "yellow"; + ctx.arc(75, 75, 30, 0, Math.PI * 2, true); + ctx.fill(); + ctx.stroke(); +}; + +tests["floating point coordinates"] = function (ctx) { + ctx.lineCap = "square"; + for (let i = 0; i < 70; i += 3.05) { + ctx.rect(i + 3, 10.5, 0, 130); + ctx.moveTo(i + 77, 10.5); + ctx.lineTo(i + 77, 140.5); + } + ctx.stroke(); +}; tests.lineWidth = function (ctx) { - for (let i = 0; i < 10; i++) { - ctx.lineWidth = 1 + i - ctx.beginPath() - ctx.moveTo(5 + i * 14, 5) - ctx.lineTo(5 + i * 14, 140) - ctx.stroke() - } -} - -tests['line caps'] = function (ctx) { - const lineCap = ['butt', 'round', 'square'] - - ctx.strokeStyle = '#09f' - ctx.beginPath() - ctx.moveTo(10, 10) - ctx.lineTo(140, 10) - ctx.moveTo(10, 140) - ctx.lineTo(140, 140) - ctx.stroke() - - ctx.strokeStyle = 'black' - for (let i = 0; i < lineCap.length; i++) { - ctx.lineWidth = 15 - ctx.lineCap = lineCap[i] - ctx.beginPath() - ctx.moveTo(25 + i * 50, 10) - ctx.lineTo(25 + i * 50, 140) - ctx.stroke() - } -} - -tests['line join'] = function (ctx) { - const lineJoin = ['round', 'bevel', 'miter'] - ctx.lineWidth = 10 - for (let i = 0; i < lineJoin.length; i++) { - ctx.lineJoin = lineJoin[i] - ctx.beginPath() - ctx.moveTo(-5, 5 + i * 40) - ctx.lineTo(35, 45 + i * 40) - ctx.lineTo(75, 5 + i * 40) - ctx.lineTo(115, 45 + i * 40) - ctx.lineTo(155, 5 + i * 40) - ctx.stroke() - } -} + for (let i = 0; i < 10; i++) { + ctx.lineWidth = 1 + i; + ctx.beginPath(); + ctx.moveTo(5 + i * 14, 5); + ctx.lineTo(5 + i * 14, 140); + ctx.stroke(); + } +}; + +tests["line caps"] = function (ctx) { + const lineCap = ["butt", "round", "square"]; + + ctx.strokeStyle = "#09f"; + ctx.beginPath(); + ctx.moveTo(10, 10); + ctx.lineTo(140, 10); + ctx.moveTo(10, 140); + ctx.lineTo(140, 140); + ctx.stroke(); + + ctx.strokeStyle = "black"; + for (let i = 0; i < lineCap.length; i++) { + ctx.lineWidth = 15; + ctx.lineCap = lineCap[i]; + ctx.beginPath(); + ctx.moveTo(25 + i * 50, 10); + ctx.lineTo(25 + i * 50, 140); + ctx.stroke(); + } +}; + +tests["line join"] = function (ctx) { + const lineJoin = ["round", "bevel", "miter"]; + ctx.lineWidth = 10; + for (let i = 0; i < lineJoin.length; i++) { + ctx.lineJoin = lineJoin[i]; + ctx.beginPath(); + ctx.moveTo(-5, 5 + i * 40); + ctx.lineTo(35, 45 + i * 40); + ctx.lineTo(75, 5 + i * 40); + ctx.lineTo(115, 45 + i * 40); + ctx.lineTo(155, 5 + i * 40); + ctx.stroke(); + } +}; -tests['lineCap default'] = function (ctx) { - ctx.beginPath() - ctx.lineWidth = 10.0 - ctx.moveTo(50, 50) - ctx.lineTo(50, 100) - ctx.lineTo(80, 120) - ctx.stroke() -} +tests["lineCap default"] = function (ctx) { + ctx.beginPath(); + ctx.lineWidth = 10.0; + ctx.moveTo(50, 50); + ctx.lineTo(50, 100); + ctx.lineTo(80, 120); + ctx.stroke(); +}; tests.lineCap = function (ctx) { - ctx.beginPath() - ctx.lineWidth = 10.0 - ctx.lineCap = 'round' - ctx.moveTo(50, 50) - ctx.lineTo(50, 100) - ctx.lineTo(80, 120) - ctx.stroke() -} + ctx.beginPath(); + ctx.lineWidth = 10.0; + ctx.lineCap = "round"; + ctx.moveTo(50, 50); + ctx.lineTo(50, 100); + ctx.lineTo(80, 120); + ctx.stroke(); +}; tests.lineJoin = function (ctx) { - ctx.beginPath() - ctx.lineWidth = 10.0 - ctx.lineJoin = 'round' - ctx.moveTo(50, 50) - ctx.lineTo(50, 100) - ctx.lineTo(80, 120) - ctx.stroke() -} + ctx.beginPath(); + ctx.lineWidth = 10.0; + ctx.lineJoin = "round"; + ctx.moveTo(50, 50); + ctx.lineTo(50, 100); + ctx.lineTo(80, 120); + ctx.stroke(); +}; tests.states = function (ctx) { - ctx.save() - ctx.rect(50, 50, 100, 100) - ctx.stroke() - - ctx.restore() - ctx.save() - ctx.translate(50, 50) - ctx.scale(0.5, 0.5) - ctx.strokeRect(51, 51, 100, 100) - - ctx.restore() - ctx.translate(95, 95) - ctx.fillRect(0, 0, 10, 10) -} - -tests['states with stroke/fill/globalAlpha'] = function (ctx) { - ctx.fillRect(0, 0, 150, 150) - ctx.save() - - ctx.fillStyle = '#09F' - ctx.fillRect(15, 15, 120, 120) - - ctx.save() - ctx.fillStyle = '#FFF' - ctx.globalAlpha = 0.5 - ctx.fillRect(30, 30, 90, 90) - - ctx.restore() - ctx.fillRect(45, 45, 60, 60) - - ctx.restore() - ctx.fillRect(60, 60, 30, 30) -} - -tests['path through fillRect/strokeRect/clearRect'] = function (ctx) { - // left: fillRect() - ctx.beginPath() - ctx.rect(0, 50, 50, 50) - ctx.fillStyle = '#F00' - ctx.fillRect(10, 60, 30, 30) - ctx.fillStyle = '#0F0' - ctx.fill() - - // center: strokeRect() - ctx.beginPath() - ctx.rect(50, 50, 50, 50) - ctx.strokeStyle = '#F00' - ctx.lineWidth = 5 - ctx.strokeRect(60, 60, 30, 30) - ctx.fillStyle = '#0F0' - ctx.fill() - - // right: clearRect() - ctx.beginPath() - ctx.rect(100, 50, 50, 50) - ctx.fillStyle = '#0F0' - ctx.fill() - ctx.clearRect(110, 60, 30, 30) - ctx.fill() -} - -tests['invalid stroke/fill styles'] = function (ctx) { - ctx.fillStyle = 'red' - ctx.strokeStyle = 'yellow' - ctx.rect(50, 50, 50, 50) - ctx.fill() - ctx.stroke() - ctx.beginPath() - ctx.fillStyle = 'asdf' - ctx.strokeStyle = 'asdf' - ctx.rect(100, 80, 15, 15) - ctx.fill() - ctx.stroke() -} - -tests['fillText()'] = function (ctx) { - ctx.font = '30px Arial' - ctx.rotate(0.1) - ctx.lineTo(10, 10) - ctx.fillText('Awesome!', 50, 100) - - const te = ctx.measureText('Awesome!') - - ctx.strokeStyle = 'rgba(0,0,0,0.5)' - ctx.lineTo(50, 102) - ctx.lineTo(50 + te.width, 102) - ctx.stroke() -} - -tests['fillText() transformations'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.font = 'bold 12px Helvetica' - - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.beginPath() - ctx.lineTo(100, 0) - ctx.lineTo(100, 200) - ctx.stroke() - - ctx.rotate(0.2) - ctx.fillText('foo', 150, 100) - ctx.font = 'normal 30px Arial' - ctx.fillText('bar', 50, 100) -} - -tests['fillText() maxWidth argument'] = function (ctx) { - ctx.font = 'Helvetica, sans' - ctx.fillText('Drawing text can be fun!', 0, 20) - - for (let i = 1; i < 6; i++) { - ctx.fillText('Drawing text can be fun!', 0, 20 * (7 - i), i * 20) - } - - ctx.fillText('Drawing text can be fun!', 0, 20 * 7) -} - -tests['maxWidth bug first usage path'] = function (ctx, done) { - ctx.textDrawingMode = 'path' - ctx.fillText('Drawing text can be fun!', 0, 20, 50) - ctx.fillText('Drawing text can be fun!', 0, 40, 50) - ctx.fillText('Drawing text can be fun changing text bug!', 0, 60, 50) - done() -} - -tests['maxWidth bug first usage glyph'] = function (ctx, done) { - ctx.textDrawingMode = 'glyph' - ctx.fillText('Drawing text can be fun!', 0, 20, 50) - ctx.fillText('Drawing text can be fun!', 0, 40, 50) - ctx.fillText('Drawing text can be fun changing text bug!', 0, 60, 50) - done() -} - -tests['fillText() maxWidth argument + textAlign center (#1253)'] = function (ctx) { - ctx.font = 'Helvetica, sans' - ctx.textAlign = 'center' - ctx.fillText('Drawing text can be fun!', 100, 20) - - for (let i = 1; i < 6; i++) { - ctx.fillText('Drawing text can be fun!', 100, 20 * (7 - i), i * 20) - } - - ctx.fillText('Drawing text can be fun!', 100, 20 * 7) -} - -tests['fillText() maxWidth argument + textAlign right'] = function (ctx) { - ctx.font = 'Helvetica, sans' - ctx.textAlign = 'right' - ctx.fillText('Drawing text can be fun!', 200, 20) - - for (let i = 1; i < 6; i++) { - ctx.fillText('Drawing text can be fun!', 200, 20 * (7 - i), i * 20) - } - - ctx.fillText('Drawing text can be fun!', 200, 20 * 7) -} - -tests['strokeText()'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.beginPath() - ctx.lineTo(100, 0) - ctx.lineTo(100, 200) - ctx.stroke() - - ctx.strokeStyle = 'red' - ctx.font = 'normal 50px Arial' - ctx.strokeText('bar', 100, 100) -} - -tests['strokeText() maxWidth argument'] = function (ctx) { - ctx.font = 'Helvetica, sans' - ctx.strokeText('Drawing text can be fun!', 0, 20) - - for (let i = 1; i < 6; i++) { - ctx.strokeText('Drawing text can be fun!', 0, 20 * (7 - i), i * 20) - } - - ctx.strokeText('Drawing text can be fun!', 0, 20 * 7) -} - -tests['textAlign right'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.beginPath() - ctx.lineTo(100, 0) - ctx.lineTo(100, 200) - ctx.stroke() - ctx.font = 'normal 20px Arial' - ctx.direction = 'ltr' - ctx.textAlign = 'right' - ctx.fillText('right ltr', 100, 70) - ctx.fillText( - 'الحق ltr', - 100, 100) - ctx.direction = 'rtl' - ctx.fillText('right rtl', 100, 130) - ctx.fillText( - 'rtl الحق', - 100, 160) -} - -tests['textAlign left'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.beginPath() - ctx.lineTo(100, 0) - ctx.lineTo(100, 200) - ctx.stroke() - - ctx.font = 'normal 20px Arial' - ctx.direction = 'ltr' - ctx.textAlign = 'left' - ctx.fillText('left ltr', 100, 70) - ctx.fillText( - 'تركت ltr', - 100, 100) - ctx.direction = 'rtl' - ctx.fillText('left rtl', 100, 130) - ctx.fillText( - 'rtl تركت', - 100, 160) -} - -tests['textAlign start'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.beginPath() - ctx.lineTo(100, 0) - ctx.lineTo(100, 200) - ctx.stroke() - - ctx.font = 'normal 20px Arial' - ctx.direction = 'ltr' - ctx.textAlign = 'start' - ctx.fillText('start ltr', 100, 70) - ctx.fillText( - 'بداية ltr', - 100, 100) - ctx.direction = 'rtl' - ctx.fillText('start rtl', 100, 130) - ctx.fillText( - 'rtl بداية', - 100, 160) -} - -tests['textAlign end'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.beginPath() - ctx.lineTo(100, 0) - ctx.lineTo(100, 200) - ctx.stroke() - - ctx.font = 'normal 20px Arial' - ctx.direction = 'ltr' - ctx.textAlign = 'end' - ctx.fillText('end ltr', 100, 70) - ctx.fillText( - 'نهاية ltr', - 100, 100) - ctx.direction = 'rtl' - ctx.fillText('start rtl', 100, 130) - ctx.fillText( - 'rtl نهاية', - 100, 160) -} - -tests['textAlign center'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.beginPath() - ctx.lineTo(100, 0) - ctx.lineTo(100, 200) - ctx.stroke() - - ctx.font = 'normal 20px Arial' - ctx.textAlign = 'center' - ctx.fillText('center', 100, 100) -} - -tests['textBaseline alphabetic'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = 'normal 20px Arial' - ctx.textBaseline = 'alphabetic' - ctx.textAlign = 'center' - ctx.fillText('alphabetic', 100, 100) -} - -tests['textBaseline top'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = 'normal 20px Arial' - ctx.textBaseline = 'top' - ctx.textAlign = 'center' - ctx.fillText('top', 100, 100) -} - -tests['textBaseline hanging'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = 'normal 20px Arial' - ctx.textBaseline = 'hanging' - ctx.textAlign = 'center' - ctx.fillText('hanging', 100, 100) -} - -tests['textBaseline middle'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = 'normal 20px Arial' - ctx.textBaseline = 'middle' - ctx.textAlign = 'center' - ctx.fillText('middle', 100, 100) -} - -tests['textBaseline ideographic'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = 'normal 20px Arial' - ctx.textBaseline = 'ideographic' - ctx.textAlign = 'center' - ctx.fillText('ideographic', 100, 100) -} - -tests['textBaseline bottom'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = 'normal 20px Arial' - ctx.textBaseline = 'bottom' - ctx.textAlign = 'center' - ctx.fillText('bottom', 100, 100) -} - -tests['font size px'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = 'normal 14px Arial' - ctx.textAlign = 'center' - ctx.fillText('normal 14px Arial', 100, 100) -} - -tests['font size pt'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = 'normal 14pt Arial' - ctx.textAlign = 'center' - ctx.fillText('normal 14pt Arial', 100, 100) -} - -tests['font size mm'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = 'normal 3mm Arial' - ctx.textAlign = 'center' - ctx.fillText('normal 3mm Arial', 100, 100) -} - -tests['font size cm'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = 'normal 0.6cm Arial' - ctx.textAlign = 'center' - ctx.fillText('normal 0.6cm Arial', 100, 100) -} - -tests['font weight bold'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = 'bold 14px Arial' - ctx.textAlign = 'center' - ctx.fillText('bold 14px Arial', 100, 100) -} - -tests['font weight lighter'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = 'lighter 14px Arial' - ctx.textAlign = 'center' - ctx.fillText('lighter 14px Arial', 100, 100) -} - -tests['font weight lighter italic'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = 'lighter italic 14px Arial' - ctx.textAlign = 'center' - ctx.fillText('lighter italic 14px Arial', 100, 100) -} - -tests['font weight 200'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() - - ctx.font = '200 14px Arial' - ctx.textAlign = 'center' - ctx.fillText('200 14px Arial', 100, 100) -} - -tests['font weight 800'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() + ctx.save(); + ctx.rect(50, 50, 100, 100); + ctx.stroke(); + + ctx.restore(); + ctx.save(); + ctx.translate(50, 50); + ctx.scale(0.5, 0.5); + ctx.strokeRect(51, 51, 100, 100); + + ctx.restore(); + ctx.translate(95, 95); + ctx.fillRect(0, 0, 10, 10); +}; + +tests["states with stroke/fill/globalAlpha"] = function (ctx) { + ctx.fillRect(0, 0, 150, 150); + ctx.save(); + + ctx.fillStyle = "#09F"; + ctx.fillRect(15, 15, 120, 120); + + ctx.save(); + ctx.fillStyle = "#FFF"; + ctx.globalAlpha = 0.5; + ctx.fillRect(30, 30, 90, 90); + + ctx.restore(); + ctx.fillRect(45, 45, 60, 60); + + ctx.restore(); + ctx.fillRect(60, 60, 30, 30); +}; + +tests["path through fillRect/strokeRect/clearRect"] = function (ctx) { + // left: fillRect() + ctx.beginPath(); + ctx.rect(0, 50, 50, 50); + ctx.fillStyle = "#F00"; + ctx.fillRect(10, 60, 30, 30); + ctx.fillStyle = "#0F0"; + ctx.fill(); + + // center: strokeRect() + ctx.beginPath(); + ctx.rect(50, 50, 50, 50); + ctx.strokeStyle = "#F00"; + ctx.lineWidth = 5; + ctx.strokeRect(60, 60, 30, 30); + ctx.fillStyle = "#0F0"; + ctx.fill(); + + // right: clearRect() + ctx.beginPath(); + ctx.rect(100, 50, 50, 50); + ctx.fillStyle = "#0F0"; + ctx.fill(); + ctx.clearRect(110, 60, 30, 30); + ctx.fill(); +}; + +tests["invalid stroke/fill styles"] = function (ctx) { + ctx.fillStyle = "red"; + ctx.strokeStyle = "yellow"; + ctx.rect(50, 50, 50, 50); + ctx.fill(); + ctx.stroke(); + ctx.beginPath(); + ctx.fillStyle = "asdf"; + ctx.strokeStyle = "asdf"; + ctx.rect(100, 80, 15, 15); + ctx.fill(); + ctx.stroke(); +}; + +tests["fillText()"] = function (ctx) { + ctx.font = "30px Arial"; + ctx.rotate(0.1); + ctx.lineTo(10, 10); + ctx.fillText("Awesome!", 50, 100); + + const te = ctx.measureText("Awesome!"); + + ctx.strokeStyle = "rgba(0,0,0,0.5)"; + ctx.lineTo(50, 102); + ctx.lineTo(50 + te.width, 102); + ctx.stroke(); +}; + +tests["fillText() transformations"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.font = "bold 12px Helvetica"; + + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.beginPath(); + ctx.lineTo(100, 0); + ctx.lineTo(100, 200); + ctx.stroke(); + + ctx.rotate(0.2); + ctx.fillText("foo", 150, 100); + ctx.font = "normal 30px Arial"; + ctx.fillText("bar", 50, 100); +}; + +tests["fillText() maxWidth argument"] = function (ctx) { + ctx.font = "Helvetica, sans"; + ctx.fillText("Drawing text can be fun!", 0, 20); + + for (let i = 1; i < 6; i++) { + ctx.fillText("Drawing text can be fun!", 0, 20 * (7 - i), i * 20); + } - ctx.font = '800 14px Arial' - ctx.textAlign = 'center' - ctx.fillText('800 14px Arial', 100, 100) -} + ctx.fillText("Drawing text can be fun!", 0, 20 * 7); +}; + +tests["maxWidth bug first usage path"] = function (ctx, done) { + ctx.textDrawingMode = "path"; + ctx.fillText("Drawing text can be fun!", 0, 20, 50); + ctx.fillText("Drawing text can be fun!", 0, 40, 50); + ctx.fillText("Drawing text can be fun changing text bug!", 0, 60, 50); + done(); +}; + +tests["maxWidth bug first usage glyph"] = function (ctx, done) { + ctx.textDrawingMode = "glyph"; + ctx.fillText("Drawing text can be fun!", 0, 20, 50); + ctx.fillText("Drawing text can be fun!", 0, 40, 50); + ctx.fillText("Drawing text can be fun changing text bug!", 0, 60, 50); + done(); +}; + +tests["fillText() maxWidth argument + textAlign center (#1253)"] = function ( + ctx +) { + ctx.font = "Helvetica, sans"; + ctx.textAlign = "center"; + ctx.fillText("Drawing text can be fun!", 100, 20); + + for (let i = 1; i < 6; i++) { + ctx.fillText("Drawing text can be fun!", 100, 20 * (7 - i), i * 20); + } -tests['font family serif'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() + ctx.fillText("Drawing text can be fun!", 100, 20 * 7); +}; - ctx.font = '14px serif' - ctx.textAlign = 'center' - ctx.fillText('14px serif', 100, 100) -} +tests["fillText() maxWidth argument + textAlign right"] = function (ctx) { + ctx.font = "Helvetica, sans"; + ctx.textAlign = "right"; + ctx.fillText("Drawing text can be fun!", 200, 20); -tests['font family sans-serif'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() + for (let i = 1; i < 6; i++) { + ctx.fillText("Drawing text can be fun!", 200, 20 * (7 - i), i * 20); + } - ctx.font = '14px sans-serif' - ctx.textAlign = 'center' - ctx.fillText('14px sans-serif', 100, 100) -} + ctx.fillText("Drawing text can be fun!", 200, 20 * 7); +}; -tests['font family Impact'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() +tests["strokeText()"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); - ctx.font = '18px Impact' - ctx.textAlign = 'center' - ctx.fillText('18px Impact', 100, 100) -} + ctx.beginPath(); + ctx.lineTo(100, 0); + ctx.lineTo(100, 200); + ctx.stroke(); -tests['font family invalid'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() + ctx.strokeStyle = "red"; + ctx.font = "normal 50px Arial"; + ctx.strokeText("bar", 100, 100); +}; - ctx.font = '14px Foo, Invalid, Impact, sans-serif' - ctx.textAlign = 'center' - ctx.fillText('14px Invalid, Impact', 100, 100) -} +tests["strokeText() maxWidth argument"] = function (ctx) { + ctx.font = "Helvetica, sans"; + ctx.strokeText("Drawing text can be fun!", 0, 20); -tests['font style variant weight size family'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 100) - ctx.lineTo(200, 100) - ctx.stroke() + for (let i = 1; i < 6; i++) { + ctx.strokeText("Drawing text can be fun!", 0, 20 * (7 - i), i * 20); + } - ctx.font = 'normal normal normal 16px Impact' - ctx.textAlign = 'center' - ctx.fillText('normal normal normal 16px', 100, 100) -} + ctx.strokeText("Drawing text can be fun!", 0, 20 * 7); +}; + +tests["textAlign right"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.beginPath(); + ctx.lineTo(100, 0); + ctx.lineTo(100, 200); + ctx.stroke(); + ctx.font = "normal 20px Arial"; + ctx.direction = "ltr"; + ctx.textAlign = "right"; + ctx.fillText("right ltr", 100, 70); + ctx.fillText("الحق ltr", 100, 100); + ctx.direction = "rtl"; + ctx.fillText("right rtl", 100, 130); + ctx.fillText("rtl الحق", 100, 160); +}; + +tests["textAlign left"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.beginPath(); + ctx.lineTo(100, 0); + ctx.lineTo(100, 200); + ctx.stroke(); + + ctx.font = "normal 20px Arial"; + ctx.direction = "ltr"; + ctx.textAlign = "left"; + ctx.fillText("left ltr", 100, 70); + ctx.fillText("تركت ltr", 100, 100); + ctx.direction = "rtl"; + ctx.fillText("left rtl", 100, 130); + ctx.fillText("rtl تركت", 100, 160); +}; + +tests["textAlign start"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.beginPath(); + ctx.lineTo(100, 0); + ctx.lineTo(100, 200); + ctx.stroke(); + + ctx.font = "normal 20px Arial"; + ctx.direction = "ltr"; + ctx.textAlign = "start"; + ctx.fillText("start ltr", 100, 70); + ctx.fillText("بداية ltr", 100, 100); + ctx.direction = "rtl"; + ctx.fillText("start rtl", 100, 130); + ctx.fillText("rtl بداية", 100, 160); +}; + +tests["textAlign end"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.beginPath(); + ctx.lineTo(100, 0); + ctx.lineTo(100, 200); + ctx.stroke(); + + ctx.font = "normal 20px Arial"; + ctx.direction = "ltr"; + ctx.textAlign = "end"; + ctx.fillText("end ltr", 100, 70); + ctx.fillText("نهاية ltr", 100, 100); + ctx.direction = "rtl"; + ctx.fillText("start rtl", 100, 130); + ctx.fillText("rtl نهاية", 100, 160); +}; + +tests["textAlign center"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.beginPath(); + ctx.lineTo(100, 0); + ctx.lineTo(100, 200); + ctx.stroke(); + + ctx.font = "normal 20px Arial"; + ctx.textAlign = "center"; + ctx.fillText("center", 100, 100); +}; + +tests["textBaseline alphabetic"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "normal 20px Arial"; + ctx.textBaseline = "alphabetic"; + ctx.textAlign = "center"; + ctx.fillText("alphabetic", 100, 100); +}; + +tests["textBaseline top"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "normal 20px Arial"; + ctx.textBaseline = "top"; + ctx.textAlign = "center"; + ctx.fillText("top", 100, 100); +}; + +tests["textBaseline hanging"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "normal 20px Arial"; + ctx.textBaseline = "hanging"; + ctx.textAlign = "center"; + ctx.fillText("hanging", 100, 100); +}; + +tests["textBaseline middle"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "normal 20px Arial"; + ctx.textBaseline = "middle"; + ctx.textAlign = "center"; + ctx.fillText("middle", 100, 100); +}; + +tests["textBaseline ideographic"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "normal 20px Arial"; + ctx.textBaseline = "ideographic"; + ctx.textAlign = "center"; + ctx.fillText("ideographic", 100, 100); +}; + +tests["textBaseline bottom"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "normal 20px Arial"; + ctx.textBaseline = "bottom"; + ctx.textAlign = "center"; + ctx.fillText("bottom", 100, 100); +}; + +tests["font size px"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "normal 14px Arial"; + ctx.textAlign = "center"; + ctx.fillText("normal 14px Arial", 100, 100); +}; + +tests["font size pt"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "normal 14pt Arial"; + ctx.textAlign = "center"; + ctx.fillText("normal 14pt Arial", 100, 100); +}; + +tests["font size mm"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "normal 3mm Arial"; + ctx.textAlign = "center"; + ctx.fillText("normal 3mm Arial", 100, 100); +}; + +tests["font size cm"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "normal 0.6cm Arial"; + ctx.textAlign = "center"; + ctx.fillText("normal 0.6cm Arial", 100, 100); +}; + +tests["font weight bold"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "bold 14px Arial"; + ctx.textAlign = "center"; + ctx.fillText("bold 14px Arial", 100, 100); +}; + +tests["font weight lighter"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "lighter 14px Arial"; + ctx.textAlign = "center"; + ctx.fillText("lighter 14px Arial", 100, 100); +}; + +tests["font weight lighter italic"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "lighter italic 14px Arial"; + ctx.textAlign = "center"; + ctx.fillText("lighter italic 14px Arial", 100, 100); +}; + +tests["font weight 200"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "200 14px Arial"; + ctx.textAlign = "center"; + ctx.fillText("200 14px Arial", 100, 100); +}; + +tests["font weight 800"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "800 14px Arial"; + ctx.textAlign = "center"; + ctx.fillText("800 14px Arial", 100, 100); +}; + +tests["font family serif"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "14px serif"; + ctx.textAlign = "center"; + ctx.fillText("14px serif", 100, 100); +}; + +tests["font family sans-serif"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "14px sans-serif"; + ctx.textAlign = "center"; + ctx.fillText("14px sans-serif", 100, 100); +}; + +tests["font family Impact"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "18px Impact"; + ctx.textAlign = "center"; + ctx.fillText("18px Impact", 100, 100); +}; + +tests["font family invalid"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "14px Foo, Invalid, Impact, sans-serif"; + ctx.textAlign = "center"; + ctx.fillText("14px Invalid, Impact", 100, 100); +}; + +tests["font style variant weight size family"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + + ctx.font = "normal normal normal 16px Impact"; + ctx.textAlign = "center"; + ctx.fillText("normal normal normal 16px", 100, 100); +}; // From https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/globalCompositeOperation const gco = [ - 'source-over', 'source-in', 'source-out', 'source-atop', - 'destination-over', 'destination-in', 'destination-out', 'destination-atop', - 'lighter', 'copy', 'xor', 'multiply', 'screen', 'overlay', 'darken', - 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', - 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity' -] - -gco.forEach(op => { - tests['globalCompositeOperator ' + op] = function (ctx, done) { - const img1 = new Image() - const img2 = new Image() + "source-over", + "source-in", + "source-out", + "source-atop", + "destination-over", + "destination-in", + "destination-out", + "destination-atop", + "lighter", + "copy", + "xor", + "multiply", + "screen", + "overlay", + "darken", + "lighten", + "color-dodge", + "color-burn", + "hard-light", + "soft-light", + "difference", + "exclusion", + "hue", + "saturation", + "color", + "luminosity", +]; + +gco.forEach((op) => { + tests["globalCompositeOperator " + op] = function (ctx, done) { + const img1 = new Image(); + const img2 = new Image(); + img1.onload = function () { + img2.onload = function () { + ctx.globalAlpha = 0.7; + ctx.drawImage(img1, 0, 0); + ctx.globalCompositeOperation = op; + ctx.drawImage(img2, 0, 0); + done(); + }; + img2.src = imageSrc("newcontent.png"); + }; + img1.src = imageSrc("existing.png"); + }; +}); + +gco.forEach((op) => { + tests["9 args, transform, globalCompositeOperator " + op] = function ( + ctx, + done + ) { + const img1 = new Image(); + const img2 = new Image(); + img1.onload = function () { + img2.onload = function () { + ctx.globalAlpha = 0.7; + ctx.drawImage(img1, 0, 0); + ctx.globalCompositeOperation = op; + ctx.rotate(0.1); + ctx.scale(0.8, 1.2); + ctx.translate(5, -5); + ctx.drawImage(img2, -80, -50, 400, 400, 10, 10, 180, 180); + done(); + }; + img2.src = imageSrc("newcontent.png"); + }; + img1.src = imageSrc("existing.png"); + }; +}); + +tests["drawImage issue #1249"] = function (ctx, done) { + const img1 = new Image(); + const img2 = new Image(); img1.onload = function () { - img2.onload = function () { - ctx.globalAlpha = 0.7 - ctx.drawImage(img1, 0, 0) - ctx.globalCompositeOperation = op - ctx.drawImage(img2, 0, 0) - done() - } - img2.src = imageSrc('newcontent.png') - } - img1.src = imageSrc('existing.png') - } -}) - -gco.forEach(op => { - tests['9 args, transform, globalCompositeOperator ' + op] = function (ctx, done) { - const img1 = new Image() - const img2 = new Image() + img2.onload = function () { + ctx.drawImage(img1, 0, 0, 200, 200); + ctx.drawImage(img2, -8, -8, 18, 18, 0, 0, 200, 200); + ctx.restore(); + done(); + }; + img2.src = imageSrc("checkers.png"); + }; + img1.src = imageSrc("chrome.jpg"); +}; + +tests["drawImage 9 arguments big numbers"] = function (ctx, done) { + const img = new Image(); + ctx.imageSmoothingEnabled = false; + img.onload = function () { + // we use big numbers because is over the max canvas allowed + ctx.drawImage( + img, + -90000, + -90000, + 90080, + 90080, + -180000, + -18000, + 180160, + 18016 + ); + ctx.drawImage( + img, + -90000, + -90000, + 90040, + 90040, + -179930, + -179930, + 180060, + 180060 + ); + ctx.drawImage( + img, + -90000, + -90000, + 90080, + 90080, + -18000, + -180000, + 18016, + 180160 + ); + ctx.drawImage(img, 475, 380, 90000, 90000, 20, 20, 180000, 720000); + done(null); + }; + img.onerror = function () { + done(new Error("Failed to load image")); + }; + img.src = imageSrc("face.jpeg"); +}; + +tests["known bug #416"] = function (ctx, done) { + const img1 = new Image(); + const img2 = new Image(); img1.onload = function () { - img2.onload = function () { - ctx.globalAlpha = 0.7 - ctx.drawImage(img1, 0, 0) - ctx.globalCompositeOperation = op - ctx.rotate(0.1) - ctx.scale(0.8, 1.2) - ctx.translate(5, -5) - ctx.drawImage(img2, -80, -50, 400, 400, 10, 10, 180, 180) - done() - } - img2.src = imageSrc('newcontent.png') - } - img1.src = imageSrc('existing.png') - } -}) - -tests['drawImage issue #1249'] = function (ctx, done) { - const img1 = new Image() - const img2 = new Image() - img1.onload = function () { - img2.onload = function () { - ctx.drawImage(img1, 0, 0, 200, 200) - ctx.drawImage(img2, -8, -8, 18, 18, 0, 0, 200, 200) - ctx.restore() - done() - } - img2.src = imageSrc('checkers.png') - } - img1.src = imageSrc('chrome.jpg') -} - -tests['drawImage 9 arguments big numbers'] = function (ctx, done) { - const img = new Image() - ctx.imageSmoothingEnabled = false - img.onload = function () { - // we use big numbers because is over the max canvas allowed - ctx.drawImage(img, -90000, -90000, 90080, 90080, -180000, -18000, 180160, 18016) - ctx.drawImage(img, -90000, -90000, 90040, 90040, -179930, -179930, 180060, 180060) - ctx.drawImage(img, -90000, -90000, 90080, 90080, -18000, -180000, 18016, 180160) - ctx.drawImage(img, 475, 380, 90000, 90000, 20, 20, 180000, 720000) - done(null) - } - img.onerror = function () { - done(new Error('Failed to load image')) - } - img.src = imageSrc('face.jpeg') -} - -tests['known bug #416'] = function (ctx, done) { - const img1 = new Image() - const img2 = new Image() - img1.onload = function () { - img2.onload = function () { - ctx.drawImage(img1, 0, 0) - ctx.globalCompositeOperation = 'destination-in' - ctx.save() - ctx.translate(img2.width / 2, img1.height / 2) - ctx.rotate(Math.PI / 4) - ctx.scale(0.5, 0.5) - ctx.translate(-img2.width / 2, -img1.height / 2) - ctx.drawImage(img2, 0, 0) - ctx.restore() - done() - } - img2.src = imageSrc('newcontent.png') - } - img1.src = imageSrc('existing.png') -} + img2.onload = function () { + ctx.drawImage(img1, 0, 0); + ctx.globalCompositeOperation = "destination-in"; + ctx.save(); + ctx.translate(img2.width / 2, img1.height / 2); + ctx.rotate(Math.PI / 4); + ctx.scale(0.5, 0.5); + ctx.translate(-img2.width / 2, -img1.height / 2); + ctx.drawImage(img2, 0, 0); + ctx.restore(); + done(); + }; + img2.src = imageSrc("newcontent.png"); + }; + img1.src = imageSrc("existing.png"); +}; tests.shadowBlur = function (ctx) { - ctx.fillRect(150, 10, 20, 20) + ctx.fillRect(150, 10, 20, 20); - ctx.lineTo(20, 5) - ctx.lineTo(100, 5) - ctx.stroke() + ctx.lineTo(20, 5); + ctx.lineTo(100, 5); + ctx.stroke(); - ctx.shadowColor = '#000' - ctx.shadowBlur = 5 - ctx.fillRect(20, 20, 100, 100) + ctx.shadowColor = "#000"; + ctx.shadowBlur = 5; + ctx.fillRect(20, 20, 100, 100); - ctx.beginPath() - ctx.lineTo(20, 150) - ctx.lineTo(100, 150) - ctx.stroke() + ctx.beginPath(); + ctx.lineTo(20, 150); + ctx.lineTo(100, 150); + ctx.stroke(); - ctx.shadowBlur = 0 + ctx.shadowBlur = 0; - ctx.beginPath() - ctx.lineTo(20, 180) - ctx.lineTo(100, 180) - ctx.stroke() + ctx.beginPath(); + ctx.lineTo(20, 180); + ctx.lineTo(100, 180); + ctx.stroke(); - ctx.fillRect(150, 150, 20, 20) -} + ctx.fillRect(150, 150, 20, 20); +}; tests.shadowColor = function (ctx) { - ctx.fillRect(150, 10, 20, 20) - - ctx.lineTo(20, 5) - ctx.lineTo(100, 5) - ctx.stroke() - - ctx.shadowColor = '#c00' - ctx.shadowBlur = 5 - ctx.fillRect(20, 20, 100, 100) - - ctx.beginPath() - ctx.lineTo(20, 150) - ctx.lineTo(100, 150) - ctx.stroke() - - ctx.shadowBlur = 0 - - ctx.beginPath() - ctx.lineTo(20, 180) - ctx.lineTo(100, 180) - ctx.stroke() - - ctx.fillRect(150, 150, 20, 20) -} - -tests['shadowOffset{X,Y}'] = function (ctx) { - ctx.fillRect(150, 10, 20, 20) - - ctx.lineTo(20, 5) - ctx.lineTo(100, 5) - ctx.stroke() - - ctx.shadowColor = '#c00' - ctx.shadowBlur = 5 - ctx.shadowOffsetX = 2 - ctx.shadowOffsetY = 2 - ctx.fillRect(20, 20, 100, 100) - - ctx.beginPath() - ctx.lineTo(20, 150) - ctx.lineTo(100, 150) - ctx.stroke() - - ctx.shadowBlur = 0 - - ctx.beginPath() - ctx.lineTo(20, 180) - ctx.lineTo(100, 180) - ctx.stroke() - - ctx.fillRect(150, 150, 20, 20) -} - -tests['shadowOffset{X,Y} large'] = function (ctx) { - ctx.fillRect(150, 10, 20, 20) - - ctx.lineTo(20, 5) - ctx.lineTo(100, 5) - ctx.stroke() - - ctx.shadowColor = '#c00' - ctx.shadowBlur = 5 - ctx.shadowOffsetX = 10 - ctx.shadowOffsetY = 10 - ctx.fillRect(20, 20, 100, 100) - - ctx.beginPath() - ctx.lineTo(20, 150) - ctx.lineTo(100, 150) - ctx.stroke() - - ctx.shadowBlur = 0 - - ctx.beginPath() - ctx.lineTo(20, 180) - ctx.lineTo(100, 180) - ctx.stroke() - - ctx.fillRect(150, 150, 20, 20) -} - -tests['shadowOffset{X,Y} negative'] = function (ctx) { - ctx.fillRect(150, 10, 20, 20) - - ctx.lineTo(20, 5) - ctx.lineTo(100, 5) - ctx.stroke() - - ctx.shadowColor = '#c00' - ctx.shadowBlur = 5 - ctx.shadowOffsetX = -10 - ctx.shadowOffsetY = -10 - ctx.fillRect(20, 20, 100, 100) - - ctx.beginPath() - ctx.lineTo(20, 150) - ctx.lineTo(100, 150) - ctx.stroke() - - ctx.shadowBlur = 0 - - ctx.beginPath() - ctx.lineTo(20, 180) - ctx.lineTo(100, 180) - ctx.stroke() - - ctx.fillRect(150, 150, 20, 20) -} - -tests['shadowOffset{X,Y} transform'] = function (ctx) { - ctx.translate(100, 0) - ctx.scale(0.75, 0.75) - ctx.rotate(Math.PI / 4) - - ctx.fillRect(150, 10, 20, 20) - - ctx.lineTo(20, 5) - ctx.lineTo(100, 5) - ctx.stroke() - - ctx.shadowColor = '#c00' - ctx.shadowBlur = 5 - ctx.shadowOffsetX = 10 - ctx.shadowOffsetY = 10 - ctx.fillRect(20, 20, 100, 100) - - ctx.beginPath() - ctx.lineTo(20, 150) - ctx.lineTo(100, 150) - ctx.stroke() - - ctx.shadowBlur = 0 - - ctx.beginPath() - ctx.lineTo(20, 180) - ctx.lineTo(100, 180) - ctx.stroke() - - ctx.fillRect(150, 150, 20, 20) -} - -tests['shadowBlur values'] = function (ctx) { - ctx.fillRect(150, 10, 20, 20) - - ctx.lineTo(20, 5) - ctx.lineTo(100, 5) - ctx.stroke() - - ctx.shadowColor = '#c00' - ctx.shadowBlur = 25 - ctx.shadowOffsetX = 2 - ctx.shadowOffsetY = 2 - ctx.fillRect(20, 20, 100, 100) - - ctx.beginPath() - ctx.lineTo(20, 150) - ctx.lineTo(100, 150) - ctx.stroke() - - ctx.shadowColor = 'rgba(0,0,0,0)' - - ctx.beginPath() - ctx.lineTo(20, 180) - ctx.lineTo(100, 180) - ctx.stroke() - - ctx.fillRect(150, 150, 20, 20) -} - -tests['shadow strokeRect()'] = function (ctx) { - ctx.strokeRect(150, 10, 20, 20) - - ctx.lineTo(20, 5) - ctx.lineTo(100, 5) - ctx.stroke() - - ctx.shadowColor = '#000' - ctx.shadowBlur = 5 - ctx.shadowOffsetX = 2 - ctx.shadowOffsetY = 2 - ctx.strokeRect(20, 20, 100, 100) - - ctx.beginPath() - ctx.lineTo(20, 150) - ctx.lineTo(100, 150) - ctx.stroke() - - ctx.shadowColor = 'rgba(0,0,0,0)' - - ctx.beginPath() - ctx.lineTo(20, 180) - ctx.lineTo(100, 180) - ctx.stroke() - - ctx.strokeRect(150, 150, 20, 20) -} - -tests['shadow fill()'] = function (ctx) { - ctx.strokeRect(150, 10, 20, 20) - - ctx.lineTo(20, 5) - ctx.lineTo(100, 5) - ctx.stroke() - - ctx.shadowColor = '#000' - ctx.shadowBlur = 5 - ctx.shadowOffsetX = 2 - ctx.shadowOffsetY = 2 - ctx.rect(20, 20, 100, 100) - ctx.fill() - - ctx.beginPath() - ctx.lineTo(20, 150) - ctx.lineTo(100, 150) - ctx.stroke() - - ctx.shadowColor = 'rgba(0,0,0,0)' - - ctx.beginPath() - ctx.lineTo(20, 180) - ctx.lineTo(100, 180) - ctx.stroke() - - ctx.strokeRect(150, 150, 20, 20) -} - -tests['shadow stroke()'] = function (ctx) { - ctx.strokeRect(150, 10, 20, 20) - - ctx.lineTo(20, 5) - ctx.lineTo(100, 5) - ctx.stroke() - - ctx.shadowColor = '#000' - ctx.shadowBlur = 5 - ctx.shadowOffsetX = 2 - ctx.shadowOffsetY = 2 - ctx.rect(20, 20, 100, 100) - ctx.stroke() + ctx.fillRect(150, 10, 20, 20); - ctx.beginPath() - ctx.lineTo(20, 150) - ctx.lineTo(100, 150) - ctx.stroke() + ctx.lineTo(20, 5); + ctx.lineTo(100, 5); + ctx.stroke(); - ctx.shadowColor = 'rgba(0,0,0,0)' + ctx.shadowColor = "#c00"; + ctx.shadowBlur = 5; + ctx.fillRect(20, 20, 100, 100); - ctx.beginPath() - ctx.lineTo(20, 180) - ctx.lineTo(100, 180) - ctx.stroke() + ctx.beginPath(); + ctx.lineTo(20, 150); + ctx.lineTo(100, 150); + ctx.stroke(); - ctx.strokeRect(150, 150, 20, 20) -} + ctx.shadowBlur = 0; -tests['shadow globalAlpha'] = function (ctx) { - ctx.lineTo(0, 0) - ctx.lineTo(50, 0) - ctx.lineTo(50, 150) - ctx.stroke() - - ctx.lineWidth = 5 - ctx.globalAlpha = 0.3 - ctx.shadowColor = '#00c' - ctx.shadowBlur = 2 - ctx.shadowOffsetX = 8 - ctx.shadowOffsetY = 8 - - ctx.lineTo(0, 150) - ctx.stroke() -} + ctx.beginPath(); + ctx.lineTo(20, 180); + ctx.lineTo(100, 180); + ctx.stroke(); -tests['shadow fillText()'] = function (ctx) { - ctx.shadowColor = '#00c' - ctx.shadowBlur = 2 - ctx.shadowOffsetX = 8 - ctx.shadowOffsetY = 8 - ctx.textAlign = 'center' - ctx.font = '35px Arial' - ctx.fillText('Shadow', 100, 100) -} + ctx.fillRect(150, 150, 20, 20); +}; -tests['shadow strokeText()'] = function (ctx) { - ctx.shadowColor = '#00c' - ctx.shadowBlur = 2 - ctx.shadowOffsetX = 8 - ctx.shadowOffsetY = 8 - ctx.textAlign = 'center' - ctx.font = '35px Arial' - ctx.strokeText('Shadow', 100, 100) -} +tests["shadowOffset{X,Y}"] = function (ctx) { + ctx.fillRect(150, 10, 20, 20); -tests['shadow transform text'] = function (ctx) { - ctx.shadowColor = '#c0c' - ctx.shadowBlur = 4 - ctx.shadowOffsetX = 6 - ctx.shadowOffsetY = 10 - ctx.textAlign = 'center' - ctx.font = '35px Arial' - ctx.scale(2, 2) - ctx.strokeText('Sha', 33, 40) - ctx.rotate(Math.PI / 2) - ctx.fillText('dow', 50, -72) -} + ctx.lineTo(20, 5); + ctx.lineTo(100, 5); + ctx.stroke(); -tests['shadow image'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.shadowColor = '#f3ac22' - ctx.shadowBlur = 2 - ctx.shadowOffsetX = 8 - ctx.shadowOffsetY = 8 - ctx.drawImage(img, 0, 0) - done(null) - } - img.onerror = done - img.src = imageSrc('star.png') -} + ctx.shadowColor = "#c00"; + ctx.shadowBlur = 5; + ctx.shadowOffsetX = 2; + ctx.shadowOffsetY = 2; + ctx.fillRect(20, 20, 100, 100); -tests['shadow image with crop'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.shadowColor = '#000' - ctx.shadowBlur = 4 - ctx.shadowOffsetX = 4 - ctx.shadowOffsetY = 4 - - // cropped - ctx.drawImage(img, 100, 100, 150, 150, 25, 25, 150, 150) - done(null) - } - img.onerror = function () { - done(new Error('Failed to load image')) - } - img.src = imageSrc('face.jpeg') -} + ctx.beginPath(); + ctx.lineTo(20, 150); + ctx.lineTo(100, 150); + ctx.stroke(); -tests['shadow image with crop and zoom'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.shadowColor = '#000' - ctx.shadowBlur = 4 - ctx.shadowOffsetX = 4 - ctx.shadowOffsetY = 4 - - // cropped - ctx.drawImage(img, 100, 100, 40, 40, 25, 25, 150, 150) - done(null) - } - img.onerror = function () { - done(new Error('Failed to load image')) - } - img.src = imageSrc('face.jpeg') -} + ctx.shadowBlur = 0; -tests['drawImage canvas over canvas'] = function (ctx) { - // Drawing canvas to itself - ctx.fillStyle = 'white' - ctx.fillRect(0, 0, 200, 200) - ctx.fillStyle = 'black' - ctx.fillRect(5, 5, 10, 10) - ctx.drawImage(ctx.canvas, 20, 20) -} + ctx.beginPath(); + ctx.lineTo(20, 180); + ctx.lineTo(100, 180); + ctx.stroke(); -tests['scaled shadow image'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.shadowColor = '#f3ac22' - ctx.shadowBlur = 2 - ctx.shadowOffsetX = 8 - ctx.shadowOffsetY = 8 - ctx.drawImage(img, 10, 10, 80, 80) - done(null) - } - img.onerror = done - img.src = imageSrc('star.png') -} + ctx.fillRect(150, 150, 20, 20); +}; -tests['smoothing disabled image'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.imageSmoothingEnabled = false - ctx.patternQuality = 'good' - // cropped - ctx.drawImage(img, 0, 0, 10, 10, 0, 0, 200, 200) - done(null) - } - img.onerror = function () { - done(new Error('Failed to load image')) - } - img.src = imageSrc('face.jpeg') -} +tests["shadowOffset{X,Y} large"] = function (ctx) { + ctx.fillRect(150, 10, 20, 20); -tests['createPattern() with globalAlpha and smoothing off scaling down'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.imageSmoothingEnabled = false - ctx.patternQuality = 'good' - const pattern = ctx.createPattern(img, 'repeat') - ctx.scale(0.1, 0.1) - ctx.globalAlpha = 0.95 - ctx.fillStyle = pattern - ctx.fillRect(100, 100, 800, 800) - ctx.globalAlpha = 1 - ctx.strokeStyle = pattern - ctx.lineWidth = 800 - ctx.strokeRect(1400, 1100, 1, 800) - done() - } - img.src = imageSrc('face.jpeg') -} + ctx.lineTo(20, 5); + ctx.lineTo(100, 5); + ctx.stroke(); -tests['createPattern() with globalAlpha and smoothing off scaling up'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.imageSmoothingEnabled = false - ctx.patternQuality = 'good' - const pattern = ctx.createPattern(img, 'repeat') - ctx.scale(20, 20) - ctx.globalAlpha = 0.95 - ctx.fillStyle = pattern - ctx.fillRect(1, 1, 8, 3) - ctx.globalAlpha = 1 - ctx.strokeStyle = pattern - ctx.lineWidth = 2 - ctx.strokeRect(2, 6, 6, 1) - done() - } - img.src = imageSrc('face.jpeg') -} + ctx.shadowColor = "#c00"; + ctx.shadowBlur = 5; + ctx.shadowOffsetX = 10; + ctx.shadowOffsetY = 10; + ctx.fillRect(20, 20, 100, 100); -tests['smoothing and gradients (gradients are not influenced by patternQuality)'] = function (ctx) { - const grad1 = ctx.createLinearGradient(0, 0, 10, 10) - grad1.addColorStop(0, 'yellow') - grad1.addColorStop(0.25, 'red') - grad1.addColorStop(0.75, 'blue') - grad1.addColorStop(1, 'limegreen') - ctx.imageSmoothingEnabled = false - ctx.patternQuality = 'nearest' - ctx.globalAlpha = 0.9 - // linear grad box - ctx.fillStyle = grad1 - ctx.moveTo(0, 0) - ctx.lineTo(200, 0) - ctx.lineTo(200, 200) - ctx.lineTo(0, 200) - ctx.lineTo(0, 0) - ctx.scale(20, 20) - ctx.fill() -} + ctx.beginPath(); + ctx.lineTo(20, 150); + ctx.lineTo(100, 150); + ctx.stroke(); -tests['shadow integration'] = function (ctx) { - ctx.shadowBlur = 5 - ctx.shadowOffsetX = 10 - ctx.shadowOffsetY = 10 - ctx.shadowColor = '#eee' - ctx.lineWidth = 3 - - const grad1 = ctx.createLinearGradient(105, 0, 200, 100) - grad1.addColorStop(0, 'yellow') - grad1.addColorStop(0.25, 'red') - grad1.addColorStop(0.75, 'blue') - grad1.addColorStop(1, 'limegreen') - - const grad2 = ctx.createRadialGradient(50, 50, 10, 50, 50, 50) - grad2.addColorStop(0, 'yellow') - grad2.addColorStop(0.25, 'red') - grad2.addColorStop(0.75, 'blue') - grad2.addColorStop(1, 'limegreen') - - // linear grad box - ctx.fillStyle = grad1 - ctx.fillRect(105, 0, 100, 100) - - // skyblue box - ctx.fillStyle = 'skyblue' - ctx.fillRect(105, 101, 100, 100) - - // radial grad oval - ctx.beginPath() - ctx.arc(50, 50, 50, 0, Math.PI * 2, false) - ctx.fillStyle = grad2 - ctx.fill() - - // gold oval - ctx.beginPath() - ctx.arc(50, 151, 50, 0, Math.PI * 2, false) - ctx.fillStyle = 'gold' - ctx.fill() -} + ctx.shadowBlur = 0; -tests['font state'] = function (ctx) { - ctx.save() - ctx.font = '20px Impact' - ctx.fillText('Bam!', 50, 80) + ctx.beginPath(); + ctx.lineTo(20, 180); + ctx.lineTo(100, 180); + ctx.stroke(); - ctx.save() - ctx.font = '10px Arial' - ctx.fillText('Boom!', 50, 100) + ctx.fillRect(150, 150, 20, 20); +}; - ctx.restore() - ctx.fillText('Bam again!', 50, 120) +tests["shadowOffset{X,Y} negative"] = function (ctx) { + ctx.fillRect(150, 10, 20, 20); - ctx.restore() - ctx.fillText('Boom again!', 50, 140) -} + ctx.lineTo(20, 5); + ctx.lineTo(100, 5); + ctx.stroke(); -tests['drawImage(img,0,0)'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.drawImage(img, 0, 0) - done(null) - } - img.onerror = done - img.src = imageSrc('state.png') -} + ctx.shadowColor = "#c00"; + ctx.shadowBlur = 5; + ctx.shadowOffsetX = -10; + ctx.shadowOffsetY = -10; + ctx.fillRect(20, 20, 100, 100); -tests['drawImage(img) jpeg'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.drawImage(img, 0, 0, 100, 100) - done(null) - } - img.onerror = done - img.src = imageSrc('face.jpeg') -} + ctx.beginPath(); + ctx.lineTo(20, 150); + ctx.lineTo(100, 150); + ctx.stroke(); -tests['drawImage(img) YCCK JPEG (#425)'] = function (ctx, done) { - // This also provides coverage for CMYK JPEGs - const img = new Image() - img.onload = function () { - ctx.drawImage(img, 0, 0, 100, 100) - done(null) - } - img.onerror = done - img.src = imageSrc('ycck.jpg') -} + ctx.shadowBlur = 0; -tests['drawImage(img) grayscale JPEG'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.drawImage(img, 0, 0, 100, 100) - done(null) - } - img.onerror = done - img.src = imageSrc('grayscale.jpg') -} + ctx.beginPath(); + ctx.lineTo(20, 180); + ctx.lineTo(100, 180); + ctx.stroke(); -tests['drawImage(img) svg'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.drawImage(img, 0, 0, 100, 100) - done(null) - } - img.onerror = done - img.src = imageSrc('tree.svg') -} + ctx.fillRect(150, 150, 20, 20); +}; -tests['drawImage(img) svg with scaling from drawImage'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.drawImage(img, -800, -800, 1000, 1000) - done(null) - } - img.onerror = done - img.src = imageSrc('tree.svg') -} +tests["shadowOffset{X,Y} transform"] = function (ctx) { + ctx.translate(100, 0); + ctx.scale(0.75, 0.75); + ctx.rotate(Math.PI / 4); -tests['drawImage(img) svg with scaling from ctx'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.scale(100, 100) - ctx.drawImage(img, -8, -8, 10, 10) - done(null) - } - img.onerror = done - img.src = imageSrc('tree.svg') -} + ctx.fillRect(150, 10, 20, 20); -tests['drawImage(img,x,y)'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.drawImage(img, 5, 25) - done(null) - } - img.onerror = done - img.src = imageSrc('state.png') -} + ctx.lineTo(20, 5); + ctx.lineTo(100, 5); + ctx.stroke(); -tests['drawImage(img,x,y,w,h) scale down'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.drawImage(img, 25, 25, 10, 10) - done(null) - } - img.onerror = done - img.src = imageSrc('state.png') -} + ctx.shadowColor = "#c00"; + ctx.shadowBlur = 5; + ctx.shadowOffsetX = 10; + ctx.shadowOffsetY = 10; + ctx.fillRect(20, 20, 100, 100); -tests['drawImage(img,x,y,w,h) scale down in a scaled up context'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.scale(20, 20) - ctx.drawImage(img, 0, 0, 10, 10) - done(null) - } - img.onerror = done - img.src = imageSrc('state.png') -} - -tests['drawImage(img,x,y,w,h) scale up'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.drawImage(img, 0, 0, 200, 200) - done(null) - } - img.onerror = done - img.src = imageSrc('state.png') -} + ctx.beginPath(); + ctx.lineTo(20, 150); + ctx.lineTo(100, 150); + ctx.stroke(); -tests['drawImage(img,x,y,w,h) scale vertical'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.drawImage(img, 0, 0, img.width, 200) - done(null) - } - img.onerror = done - img.src = imageSrc('state.png') -} + ctx.shadowBlur = 0; -tests['drawImage(img,sx,sy,sw,sh,x,y,w,h)'] = function (ctx, done) { - const img = new Image() - img.onload = function () { - ctx.drawImage(img, 13, 13, 45, 45, 25, 25, img.width / 2, img.height / 2) - done(null) - } - img.onerror = done - img.src = imageSrc('state.png') -} + ctx.beginPath(); + ctx.lineTo(20, 180); + ctx.lineTo(100, 180); + ctx.stroke(); -tests['drawImage(img,0,0) globalAlpha'] = function (ctx, done) { - const img = new Image() - ctx.fillRect(50, 50, 30, 30) - ctx.globalAlpha = 0.5 - img.onload = function () { - ctx.drawImage(img, 0, 0) - done(null) - } - img.onerror = done - img.src = imageSrc('state.png') -} + ctx.fillRect(150, 150, 20, 20); +}; -tests['drawImage(img,0,0) clip'] = function (ctx, done) { - ctx.arc(50, 50, 50, 0, Math.PI * 2, false) - ctx.stroke() - ctx.clip() - const img = new Image() - ctx.fillRect(50, 50, 30, 30) - ctx.globalAlpha = 0.5 - img.onload = function () { - ctx.drawImage(img, 0, 0) - done(null) - } - img.onerror = done - img.src = imageSrc('state.png') -} +tests["shadowBlur values"] = function (ctx) { + ctx.fillRect(150, 10, 20, 20); + + ctx.lineTo(20, 5); + ctx.lineTo(100, 5); + ctx.stroke(); -tests['putImageData()'] = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.fillStyle = 'rgb(' + Math.floor(255 - 42.5 * i) + ',' + Math.floor(255 - 42.5 * j) + ',0)' - ctx.fillRect(j * 25, i * 25, 25, 25) + ctx.shadowColor = "#c00"; + ctx.shadowBlur = 25; + ctx.shadowOffsetX = 2; + ctx.shadowOffsetY = 2; + ctx.fillRect(20, 20, 100, 100); + + ctx.beginPath(); + ctx.lineTo(20, 150); + ctx.lineTo(100, 150); + ctx.stroke(); + + ctx.shadowColor = "rgba(0,0,0,0)"; + + ctx.beginPath(); + ctx.lineTo(20, 180); + ctx.lineTo(100, 180); + ctx.stroke(); + + ctx.fillRect(150, 150, 20, 20); +}; + +tests["shadow strokeRect()"] = function (ctx) { + ctx.strokeRect(150, 10, 20, 20); + + ctx.lineTo(20, 5); + ctx.lineTo(100, 5); + ctx.stroke(); + + ctx.shadowColor = "#000"; + ctx.shadowBlur = 5; + ctx.shadowOffsetX = 2; + ctx.shadowOffsetY = 2; + ctx.strokeRect(20, 20, 100, 100); + + ctx.beginPath(); + ctx.lineTo(20, 150); + ctx.lineTo(100, 150); + ctx.stroke(); + + ctx.shadowColor = "rgba(0,0,0,0)"; + + ctx.beginPath(); + ctx.lineTo(20, 180); + ctx.lineTo(100, 180); + ctx.stroke(); + + ctx.strokeRect(150, 150, 20, 20); +}; + +tests["shadow fill()"] = function (ctx) { + ctx.strokeRect(150, 10, 20, 20); + + ctx.lineTo(20, 5); + ctx.lineTo(100, 5); + ctx.stroke(); + + ctx.shadowColor = "#000"; + ctx.shadowBlur = 5; + ctx.shadowOffsetX = 2; + ctx.shadowOffsetY = 2; + ctx.rect(20, 20, 100, 100); + ctx.fill(); + + ctx.beginPath(); + ctx.lineTo(20, 150); + ctx.lineTo(100, 150); + ctx.stroke(); + + ctx.shadowColor = "rgba(0,0,0,0)"; + + ctx.beginPath(); + ctx.lineTo(20, 180); + ctx.lineTo(100, 180); + ctx.stroke(); + + ctx.strokeRect(150, 150, 20, 20); +}; + +tests["shadow stroke()"] = function (ctx) { + ctx.strokeRect(150, 10, 20, 20); + + ctx.lineTo(20, 5); + ctx.lineTo(100, 5); + ctx.stroke(); + + ctx.shadowColor = "#000"; + ctx.shadowBlur = 5; + ctx.shadowOffsetX = 2; + ctx.shadowOffsetY = 2; + ctx.rect(20, 20, 100, 100); + ctx.stroke(); + + ctx.beginPath(); + ctx.lineTo(20, 150); + ctx.lineTo(100, 150); + ctx.stroke(); + + ctx.shadowColor = "rgba(0,0,0,0)"; + + ctx.beginPath(); + ctx.lineTo(20, 180); + ctx.lineTo(100, 180); + ctx.stroke(); + + ctx.strokeRect(150, 150, 20, 20); +}; + +tests["shadow globalAlpha"] = function (ctx) { + ctx.lineTo(0, 0); + ctx.lineTo(50, 0); + ctx.lineTo(50, 150); + ctx.stroke(); + + ctx.lineWidth = 5; + ctx.globalAlpha = 0.3; + ctx.shadowColor = "#00c"; + ctx.shadowBlur = 2; + ctx.shadowOffsetX = 8; + ctx.shadowOffsetY = 8; + + ctx.lineTo(0, 150); + ctx.stroke(); +}; + +tests["shadow fillText()"] = function (ctx) { + ctx.shadowColor = "#00c"; + ctx.shadowBlur = 2; + ctx.shadowOffsetX = 8; + ctx.shadowOffsetY = 8; + ctx.textAlign = "center"; + ctx.font = "35px Arial"; + ctx.fillText("Shadow", 100, 100); +}; + +tests["shadow strokeText()"] = function (ctx) { + ctx.shadowColor = "#00c"; + ctx.shadowBlur = 2; + ctx.shadowOffsetX = 8; + ctx.shadowOffsetY = 8; + ctx.textAlign = "center"; + ctx.font = "35px Arial"; + ctx.strokeText("Shadow", 100, 100); +}; + +tests["shadow transform text"] = function (ctx) { + ctx.shadowColor = "#c0c"; + ctx.shadowBlur = 4; + ctx.shadowOffsetX = 6; + ctx.shadowOffsetY = 10; + ctx.textAlign = "center"; + ctx.font = "35px Arial"; + ctx.scale(2, 2); + ctx.strokeText("Sha", 33, 40); + ctx.rotate(Math.PI / 2); + ctx.fillText("dow", 50, -72); +}; + +tests["shadow image"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.shadowColor = "#f3ac22"; + ctx.shadowBlur = 2; + ctx.shadowOffsetX = 8; + ctx.shadowOffsetY = 8; + ctx.drawImage(img, 0, 0); + done(null); + }; + img.onerror = done; + img.src = imageSrc("star.png"); +}; + +tests["shadow image with crop"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.shadowColor = "#000"; + ctx.shadowBlur = 4; + ctx.shadowOffsetX = 4; + ctx.shadowOffsetY = 4; + + // cropped + ctx.drawImage(img, 100, 100, 150, 150, 25, 25, 150, 150); + done(null); + }; + img.onerror = function () { + done(new Error("Failed to load image")); + }; + img.src = imageSrc("face.jpeg"); +}; + +tests["shadow image with crop and zoom"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.shadowColor = "#000"; + ctx.shadowBlur = 4; + ctx.shadowOffsetX = 4; + ctx.shadowOffsetY = 4; + + // cropped + ctx.drawImage(img, 100, 100, 40, 40, 25, 25, 150, 150); + done(null); + }; + img.onerror = function () { + done(new Error("Failed to load image")); + }; + img.src = imageSrc("face.jpeg"); +}; + +tests["drawImage canvas over canvas"] = function (ctx) { + // Drawing canvas to itself + ctx.fillStyle = "white"; + ctx.fillRect(0, 0, 200, 200); + ctx.fillStyle = "black"; + ctx.fillRect(5, 5, 10, 10); + ctx.drawImage(ctx.canvas, 20, 20); +}; + +tests["scaled shadow image"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.shadowColor = "#f3ac22"; + ctx.shadowBlur = 2; + ctx.shadowOffsetX = 8; + ctx.shadowOffsetY = 8; + ctx.drawImage(img, 10, 10, 80, 80); + done(null); + }; + img.onerror = done; + img.src = imageSrc("star.png"); +}; + +tests["smoothing disabled image"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.imageSmoothingEnabled = false; + ctx.patternQuality = "good"; + // cropped + ctx.drawImage(img, 0, 0, 10, 10, 0, 0, 200, 200); + done(null); + }; + img.onerror = function () { + done(new Error("Failed to load image")); + }; + img.src = imageSrc("face.jpeg"); +}; + +tests["createPattern() with globalAlpha and smoothing off scaling down"] = + function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.imageSmoothingEnabled = false; + ctx.patternQuality = "good"; + const pattern = ctx.createPattern(img, "repeat"); + ctx.scale(0.1, 0.1); + ctx.globalAlpha = 0.95; + ctx.fillStyle = pattern; + ctx.fillRect(100, 100, 800, 800); + ctx.globalAlpha = 1; + ctx.strokeStyle = pattern; + ctx.lineWidth = 800; + ctx.strokeRect(1400, 1100, 1, 800); + done(); + }; + img.src = imageSrc("face.jpeg"); + }; + +tests["createPattern() with globalAlpha and smoothing off scaling up"] = + function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.imageSmoothingEnabled = false; + ctx.patternQuality = "good"; + const pattern = ctx.createPattern(img, "repeat"); + ctx.scale(20, 20); + ctx.globalAlpha = 0.95; + ctx.fillStyle = pattern; + ctx.fillRect(1, 1, 8, 3); + ctx.globalAlpha = 1; + ctx.strokeStyle = pattern; + ctx.lineWidth = 2; + ctx.strokeRect(2, 6, 6, 1); + done(); + }; + img.src = imageSrc("face.jpeg"); + }; + +tests[ + "smoothing and gradients (gradients are not influenced by patternQuality)" +] = function (ctx) { + const grad1 = ctx.createLinearGradient(0, 0, 10, 10); + grad1.addColorStop(0, "yellow"); + grad1.addColorStop(0.25, "red"); + grad1.addColorStop(0.75, "blue"); + grad1.addColorStop(1, "limegreen"); + ctx.imageSmoothingEnabled = false; + ctx.patternQuality = "nearest"; + ctx.globalAlpha = 0.9; + // linear grad box + ctx.fillStyle = grad1; + ctx.moveTo(0, 0); + ctx.lineTo(200, 0); + ctx.lineTo(200, 200); + ctx.lineTo(0, 200); + ctx.lineTo(0, 0); + ctx.scale(20, 20); + ctx.fill(); +}; + +tests["shadow integration"] = function (ctx) { + ctx.shadowBlur = 5; + ctx.shadowOffsetX = 10; + ctx.shadowOffsetY = 10; + ctx.shadowColor = "#eee"; + ctx.lineWidth = 3; + + const grad1 = ctx.createLinearGradient(105, 0, 200, 100); + grad1.addColorStop(0, "yellow"); + grad1.addColorStop(0.25, "red"); + grad1.addColorStop(0.75, "blue"); + grad1.addColorStop(1, "limegreen"); + + const grad2 = ctx.createRadialGradient(50, 50, 10, 50, 50, 50); + grad2.addColorStop(0, "yellow"); + grad2.addColorStop(0.25, "red"); + grad2.addColorStop(0.75, "blue"); + grad2.addColorStop(1, "limegreen"); + + // linear grad box + ctx.fillStyle = grad1; + ctx.fillRect(105, 0, 100, 100); + + // skyblue box + ctx.fillStyle = "skyblue"; + ctx.fillRect(105, 101, 100, 100); + + // radial grad oval + ctx.beginPath(); + ctx.arc(50, 50, 50, 0, Math.PI * 2, false); + ctx.fillStyle = grad2; + ctx.fill(); + + // gold oval + ctx.beginPath(); + ctx.arc(50, 151, 50, 0, Math.PI * 2, false); + ctx.fillStyle = "gold"; + ctx.fill(); +}; + +tests["font state"] = function (ctx) { + ctx.save(); + ctx.font = "20px Impact"; + ctx.fillText("Bam!", 50, 80); + + ctx.save(); + ctx.font = "10px Arial"; + ctx.fillText("Boom!", 50, 100); + + ctx.restore(); + ctx.fillText("Bam again!", 50, 120); + + ctx.restore(); + ctx.fillText("Boom again!", 50, 140); +}; + +tests["drawImage(img,0,0)"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.drawImage(img, 0, 0); + done(null); + }; + img.onerror = done; + img.src = imageSrc("state.png"); +}; + +tests["drawImage(img) jpeg"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.drawImage(img, 0, 0, 100, 100); + done(null); + }; + img.onerror = done; + img.src = imageSrc("face.jpeg"); +}; + +tests["drawImage(img) YCCK JPEG (#425)"] = function (ctx, done) { + // This also provides coverage for CMYK JPEGs + const img = new Image(); + img.onload = function () { + ctx.drawImage(img, 0, 0, 100, 100); + done(null); + }; + img.onerror = done; + img.src = imageSrc("ycck.jpg"); +}; + +tests["drawImage(img) grayscale JPEG"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.drawImage(img, 0, 0, 100, 100); + done(null); + }; + img.onerror = done; + img.src = imageSrc("grayscale.jpg"); +}; + +tests["drawImage(img) svg"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.drawImage(img, 0, 0, 100, 100); + done(null); + }; + img.onerror = done; + img.src = imageSrc("tree.svg"); +}; + +tests["drawImage(img) svg with scaling from drawImage"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.drawImage(img, -800, -800, 1000, 1000); + done(null); + }; + img.onerror = done; + img.src = imageSrc("tree.svg"); +}; + +tests["drawImage(img) svg with scaling from ctx"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.scale(100, 100); + ctx.drawImage(img, -8, -8, 10, 10); + done(null); + }; + img.onerror = done; + img.src = imageSrc("tree.svg"); +}; + +tests["drawImage(img,x,y)"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.drawImage(img, 5, 25); + done(null); + }; + img.onerror = done; + img.src = imageSrc("state.png"); +}; + +tests["drawImage(img,x,y,w,h) scale down"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.drawImage(img, 25, 25, 10, 10); + done(null); + }; + img.onerror = done; + img.src = imageSrc("state.png"); +}; + +tests["drawImage(img,x,y,w,h) scale down in a scaled up context"] = function ( + ctx, + done +) { + const img = new Image(); + img.onload = function () { + ctx.scale(20, 20); + ctx.drawImage(img, 0, 0, 10, 10); + done(null); + }; + img.onerror = done; + img.src = imageSrc("state.png"); +}; + +tests["drawImage(img,x,y,w,h) scale up"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.drawImage(img, 0, 0, 200, 200); + done(null); + }; + img.onerror = done; + img.src = imageSrc("state.png"); +}; + +tests["drawImage(img,x,y,w,h) scale vertical"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.drawImage(img, 0, 0, img.width, 200); + done(null); + }; + img.onerror = done; + img.src = imageSrc("state.png"); +}; + +tests["drawImage(img,sx,sy,sw,sh,x,y,w,h)"] = function (ctx, done) { + const img = new Image(); + img.onload = function () { + ctx.drawImage( + img, + 13, + 13, + 45, + 45, + 25, + 25, + img.width / 2, + img.height / 2 + ); + done(null); + }; + img.onerror = done; + img.src = imageSrc("state.png"); +}; + +tests["drawImage(img,0,0) globalAlpha"] = function (ctx, done) { + const img = new Image(); + ctx.fillRect(50, 50, 30, 30); + ctx.globalAlpha = 0.5; + img.onload = function () { + ctx.drawImage(img, 0, 0); + done(null); + }; + img.onerror = done; + img.src = imageSrc("state.png"); +}; + +tests["drawImage(img,0,0) clip"] = function (ctx, done) { + ctx.arc(50, 50, 50, 0, Math.PI * 2, false); + ctx.stroke(); + ctx.clip(); + const img = new Image(); + ctx.fillRect(50, 50, 30, 30); + ctx.globalAlpha = 0.5; + img.onload = function () { + ctx.drawImage(img, 0, 0); + done(null); + }; + img.onerror = done; + img.src = imageSrc("state.png"); +}; + +tests["putImageData()"] = function (ctx) { + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.fillStyle = + "rgb(" + + Math.floor(255 - 42.5 * i) + + "," + + Math.floor(255 - 42.5 * j) + + ",0)"; + ctx.fillRect(j * 25, i * 25, 25, 25); + } } - } - const data = ctx.getImageData(0, 0, 50, 50) - ctx.putImageData(data, 10, 10) -} - -tests['putImageData() 1'] = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.fillStyle = 'rgb(' + Math.floor(255 - 42.5 * i) + ',' + Math.floor(255 - 42.5 * j) + ',0)' - ctx.fillRect(j * 25, i * 25, 25, 25) + const data = ctx.getImageData(0, 0, 50, 50); + ctx.putImageData(data, 10, 10); +}; + +tests["putImageData() 1"] = function (ctx) { + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.fillStyle = + "rgb(" + + Math.floor(255 - 42.5 * i) + + "," + + Math.floor(255 - 42.5 * j) + + ",0)"; + ctx.fillRect(j * 25, i * 25, 25, 25); + } } - } - const data = ctx.getImageData(0, 0, 50, 50) - ctx.putImageData(data, -10, -10) -} - -tests['putImageData() 2'] = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.fillStyle = 'rgb(' + Math.floor(255 - 42.5 * i) + ',' + Math.floor(255 - 42.5 * j) + ',0)' - ctx.fillRect(j * 25, i * 25, 25, 25) + const data = ctx.getImageData(0, 0, 50, 50); + ctx.putImageData(data, -10, -10); +}; + +tests["putImageData() 2"] = function (ctx) { + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.fillStyle = + "rgb(" + + Math.floor(255 - 42.5 * i) + + "," + + Math.floor(255 - 42.5 * j) + + ",0)"; + ctx.fillRect(j * 25, i * 25, 25, 25); + } } - } - const data = ctx.getImageData(25, 25, 50, 50) - ctx.putImageData(data, 10, 10) -} - -tests['putImageData() 3'] = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.fillStyle = 'rgb(' + Math.floor(255 - 42.5 * i) + ',' + Math.floor(255 - 42.5 * j) + ',0)' - ctx.fillRect(j * 25, i * 25, 25, 25) + const data = ctx.getImageData(25, 25, 50, 50); + ctx.putImageData(data, 10, 10); +}; + +tests["putImageData() 3"] = function (ctx) { + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.fillStyle = + "rgb(" + + Math.floor(255 - 42.5 * i) + + "," + + Math.floor(255 - 42.5 * j) + + ",0)"; + ctx.fillRect(j * 25, i * 25, 25, 25); + } } - } - const data = ctx.getImageData(10, 25, 10, 50) - ctx.putImageData(data, 50, 10) -} - -tests['putImageData() 4'] = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.fillStyle = 'rgb(' + Math.floor(255 - 42.5 * i) + ',' + - Math.floor(255 - 42.5 * j) + ',0)' - ctx.fillRect(j * 25, i * 25, 25, 25) + const data = ctx.getImageData(10, 25, 10, 50); + ctx.putImageData(data, 50, 10); +}; + +tests["putImageData() 4"] = function (ctx) { + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.fillStyle = + "rgb(" + + Math.floor(255 - 42.5 * i) + + "," + + Math.floor(255 - 42.5 * j) + + ",0)"; + ctx.fillRect(j * 25, i * 25, 25, 25); + } } - } - ctx.strokeRect(30, 30, 30, 30) - const data = ctx.getImageData(0, 0, 50, 50) - ctx.putImageData(data, 30, 30, 10, 10, 30, 30) -} - -tests['putImageData() 5'] = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.fillStyle = 'rgb(' + Math.floor(255 - 42.5 * i) + ',' + Math.floor(255 - 42.5 * j) + ',0)' - ctx.fillRect(j * 25, i * 25, 25, 25) + ctx.strokeRect(30, 30, 30, 30); + const data = ctx.getImageData(0, 0, 50, 50); + ctx.putImageData(data, 30, 30, 10, 10, 30, 30); +}; + +tests["putImageData() 5"] = function (ctx) { + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.fillStyle = + "rgb(" + + Math.floor(255 - 42.5 * i) + + "," + + Math.floor(255 - 42.5 * j) + + ",0)"; + ctx.fillRect(j * 25, i * 25, 25, 25); + } } - } - ctx.strokeRect(60, 60, 50, 30) - const data = ctx.getImageData(0, 0, 50, 50) - ctx.putImageData(data, 60, 60, 0, 0, 50, 30) -} - -tests['putImageData() 6'] = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.fillStyle = 'rgb(' + Math.floor(255 - 42.5 * i) + ',' + Math.floor(255 - 42.5 * j) + ',0)' - ctx.fillRect(j * 25, i * 25, 25, 25) + ctx.strokeRect(60, 60, 50, 30); + const data = ctx.getImageData(0, 0, 50, 50); + ctx.putImageData(data, 60, 60, 0, 0, 50, 30); +}; + +tests["putImageData() 6"] = function (ctx) { + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.fillStyle = + "rgb(" + + Math.floor(255 - 42.5 * i) + + "," + + Math.floor(255 - 42.5 * j) + + ",0)"; + ctx.fillRect(j * 25, i * 25, 25, 25); + } } - } - ctx.strokeRect(60, 60, 50, 30) - const data = ctx.getImageData(0, 0, 50, 50) - ctx.putImageData(data, 60, 60, 10, 0, 35, 30) -} - -tests['putImageData() 7'] = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.fillStyle = 'rgb(' + Math.floor(255 - 42.5 * i) + ',' + Math.floor(255 - 42.5 * j) + ',0)' - ctx.fillRect(j * 25, i * 25, 25, 25) + ctx.strokeRect(60, 60, 50, 30); + const data = ctx.getImageData(0, 0, 50, 50); + ctx.putImageData(data, 60, 60, 10, 0, 35, 30); +}; + +tests["putImageData() 7"] = function (ctx) { + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.fillStyle = + "rgb(" + + Math.floor(255 - 42.5 * i) + + "," + + Math.floor(255 - 42.5 * j) + + ",0)"; + ctx.fillRect(j * 25, i * 25, 25, 25); + } } - } - ctx.strokeRect(60, 60, 50, 30) - ctx.translate(20, 20) - const data = ctx.getImageData(0, 0, 50, 50) - ctx.putImageData(data, 60, 60, 10, 20, 35, -10) -} - -tests['putImageData() 8'] = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.fillStyle = 'rgb(' + Math.floor(255 - 42.5 * i) + ',' + Math.floor(255 - 42.5 * j) + ',0)' - ctx.fillRect(j * 25, i * 25, 25, 25) + ctx.strokeRect(60, 60, 50, 30); + ctx.translate(20, 20); + const data = ctx.getImageData(0, 0, 50, 50); + ctx.putImageData(data, 60, 60, 10, 20, 35, -10); +}; + +tests["putImageData() 8"] = function (ctx) { + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.fillStyle = + "rgb(" + + Math.floor(255 - 42.5 * i) + + "," + + Math.floor(255 - 42.5 * j) + + ",0)"; + ctx.fillRect(j * 25, i * 25, 25, 25); + } } - } - ctx.translate(20, 20) - const data = ctx.getImageData(0, 0, 50, 50) - ctx.putImageData(data, -10, -10, 0, 20, 35, 30) -} - -tests['putImageData() 9'] = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.fillStyle = 'rgb(' + Math.floor(255 - 42.5 * i) + ',' + Math.floor(255 - 42.5 * j) + ',0)' - ctx.fillRect(j * 25, i * 25, 25, 25) + ctx.translate(20, 20); + const data = ctx.getImageData(0, 0, 50, 50); + ctx.putImageData(data, -10, -10, 0, 20, 35, 30); +}; + +tests["putImageData() 9"] = function (ctx) { + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.fillStyle = + "rgb(" + + Math.floor(255 - 42.5 * i) + + "," + + Math.floor(255 - 42.5 * j) + + ",0)"; + ctx.fillRect(j * 25, i * 25, 25, 25); + } } - } - ctx.translate(20, 20) - const data = ctx.getImageData(0, 0, 50, 50) - ctx.putImageData(data, -10, -10, 0, 20, 500, 500) -} + ctx.translate(20, 20); + const data = ctx.getImageData(0, 0, 50, 50); + ctx.putImageData(data, -10, -10, 0, 20, 500, 500); +}; + +tests["putImageData() 10"] = function (ctx) { + ctx.fillStyle = "rgba(255,0,0,1)"; + ctx.fillRect(0, 0, 50, 100); + ctx.fillStyle = "rgba(0,255,0,1)"; + ctx.fillRect(50, 0, 50, 100); + ctx.fillStyle = "rgba(0,0,255,1)"; + ctx.fillRect(100, 0, 50, 100); + + const data = ctx.getImageData(0, 0, 120, 20); + ctx.putImageData(data, 20, 120); +}; + +tests["putImageData() alpha"] = function (ctx) { + ctx.fillStyle = "rgba(255,0,0,0.5)"; + ctx.fillRect(0, 0, 50, 100); + ctx.fillStyle = "rgba(0,255,0,0.5)"; + ctx.fillRect(50, 0, 50, 100); + ctx.fillStyle = "rgba(0,0,255,0.5)"; + ctx.fillRect(100, 0, 50, 100); + + const data = ctx.getImageData(0, 0, 120, 20); + ctx.putImageData(data, 20, 120); +}; + +tests["putImageData() alpha 2"] = function (ctx) { + ctx.fillStyle = "rgba(255,0,0,0.2)"; + ctx.fillRect(0, 0, 50, 100); + ctx.fillStyle = "rgba(0,255,0,0.5)"; + ctx.fillRect(50, 0, 50, 100); + ctx.fillStyle = "rgba(0,0,255,0.75)"; + ctx.fillRect(100, 0, 50, 100); + + const data = ctx.getImageData(0, 0, 120, 20); + ctx.putImageData(data, 20, 120); +}; + +tests["putImageData() globalAlpha"] = function (ctx) { + ctx.globalAlpha = 0.5; + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 50, 100); + ctx.fillStyle = "#0f0"; + ctx.fillRect(50, 0, 50, 100); + ctx.fillStyle = "#00f"; + ctx.fillRect(100, 0, 50, 100); + + const data = ctx.getImageData(0, 0, 120, 20); + ctx.putImageData(data, 20, 120); +}; + +tests["putImageData() png data"] = function (ctx, done) { + const img = new Image(); + ctx.fillRect(50, 50, 30, 30); + img.onload = function () { + ctx.drawImage(img, 0, 0, 200, 200); + const imageData = ctx.getImageData(0, 0, 50, 50); + const data = imageData.data; + if (data instanceof Uint8ClampedArray) { + for (let i = 0, len = data.length; i < len; i += 4) { + data[i + 3] = 80; + } + } + ctx.putImageData(imageData, 50, 50); + done(null); + }; + + img.onerror = done; + + img.src = imageSrc("state.png"); +}; + +tests["putImageData() png data 2"] = function (ctx, done) { + const img = new Image(); + ctx.fillRect(50, 50, 30, 30); + img.onload = function () { + ctx.drawImage(img, 0, 0, 200, 200); + const imageData = ctx.getImageData(0, 0, 50, 50); + const data = imageData.data; + if (data instanceof Uint8ClampedArray) { + for (let i = 0, len = data.length; i < len; i += 4) { + data[i + 3] = 80; + } + } + ctx.putImageData(imageData, 50, 50, 10, 10, 20, 20); + done(null); + }; + + img.onerror = done; + + img.src = imageSrc("state.png"); +}; + +tests["putImageData() png data 3"] = function (ctx, done) { + const img = new Image(); + ctx.fillRect(50, 50, 30, 30); + img.onload = function () { + ctx.drawImage(img, 0, 0, 200, 200); + const imageData = ctx.getImageData(0, 0, 50, 50); + const data = imageData.data; + if (data instanceof Uint8ClampedArray) { + for (let i = 0, len = data.length; i < len; i += 4) { + data[i + 0] = data[i + 0] * 0.2; + data[i + 1] = data[i + 1] * 0.2; + data[i + 2] = data[i + 2] * 0.2; + } + } + ctx.putImageData(imageData, 50, 50); + done(null); + }; + img.onerror = done; + img.src = imageSrc("state.png"); +}; -tests['putImageData() 10'] = function (ctx) { - ctx.fillStyle = 'rgba(255,0,0,1)' - ctx.fillRect(0, 0, 50, 100) - ctx.fillStyle = 'rgba(0,255,0,1)' - ctx.fillRect(50, 0, 50, 100) - ctx.fillStyle = 'rgba(0,0,255,1)' - ctx.fillRect(100, 0, 50, 100) - - const data = ctx.getImageData(0, 0, 120, 20) - ctx.putImageData(data, 20, 120) -} - -tests['putImageData() alpha'] = function (ctx) { - ctx.fillStyle = 'rgba(255,0,0,0.5)' - ctx.fillRect(0, 0, 50, 100) - ctx.fillStyle = 'rgba(0,255,0,0.5)' - ctx.fillRect(50, 0, 50, 100) - ctx.fillStyle = 'rgba(0,0,255,0.5)' - ctx.fillRect(100, 0, 50, 100) - - const data = ctx.getImageData(0, 0, 120, 20) - ctx.putImageData(data, 20, 120) -} - -tests['putImageData() alpha 2'] = function (ctx) { - ctx.fillStyle = 'rgba(255,0,0,0.2)' - ctx.fillRect(0, 0, 50, 100) - ctx.fillStyle = 'rgba(0,255,0,0.5)' - ctx.fillRect(50, 0, 50, 100) - ctx.fillStyle = 'rgba(0,0,255,0.75)' - ctx.fillRect(100, 0, 50, 100) - - const data = ctx.getImageData(0, 0, 120, 20) - ctx.putImageData(data, 20, 120) -} - -tests['putImageData() globalAlpha'] = function (ctx) { - ctx.globalAlpha = 0.5 - ctx.fillStyle = '#f00' - ctx.fillRect(0, 0, 50, 100) - ctx.fillStyle = '#0f0' - ctx.fillRect(50, 0, 50, 100) - ctx.fillStyle = '#00f' - ctx.fillRect(100, 0, 50, 100) - - const data = ctx.getImageData(0, 0, 120, 20) - ctx.putImageData(data, 20, 120) -} +tests.setLineDash = function (ctx) { + ctx.setLineDash([10, 5, 25, 15]); + ctx.lineWidth = 14; + + let y = 5; + const line = function (lineDash, color) { + ctx.setLineDash(lineDash); + if (color) ctx.strokeStyle = color; + ctx.beginPath(); + ctx.moveTo(0, y); + ctx.lineTo(200, y); + ctx.stroke(); + y += ctx.lineWidth + 4; + }; + + line([15, 30], "blue"); + line([], "black"); + line([5, 10, 15, 20, 25, 30, 35, 40, 45, 50], "purple"); + line([8], "green"); + line([3, 3, -30], "red"); + line([4, Infinity, 4]); + line([10, 10, NaN]); + line( + (function () { + ctx.setLineDash([8]); + const a = ctx.getLineDash(); + a[0] -= 3; + a.push(20); + return a; + })(), + "orange" + ); + line([0, 0], "purple"); // should be full + line([0, 0, 3, 0], "orange"); // should be full + line([0, 3, 0, 0], "green"); // should be empty +}; -tests['putImageData() png data'] = function (ctx, done) { - const img = new Image() - ctx.fillRect(50, 50, 30, 30) - img.onload = function () { - ctx.drawImage(img, 0, 0, 200, 200) - const imageData = ctx.getImageData(0, 0, 50, 50) - const data = imageData.data - if (data instanceof Uint8ClampedArray) { - for (let i = 0, len = data.length; i < len; i += 4) { - data[i + 3] = 80 - } +tests.lineDashOffset = function (ctx) { + ctx.setLineDash([10, 5, 25, 15]); + ctx.lineWidth = 4; + + let y = 5; + const line = function (lineDashOffset, color) { + ctx.lineDashOffset = lineDashOffset; + if (color) ctx.strokeStyle = color; + ctx.beginPath(); + ctx.moveTo(0, y); + ctx.lineTo(200, y); + ctx.stroke(); + y += ctx.lineWidth + 4; + }; + + line(-10, "black"); + line(0); + line(10); + line(20); + line(30); + line(40, "blue"); + line(NaN); + line(50, "green"); + line(Infinity); + line(60, "orange"); + line(-Infinity); + line(70, "purple"); + line(undefined); + line(80, "black"); + line(ctx.lineDashOffset + 10); + + for (let i = 0; i < 10; i++) { + line(90 + i / 5, "red"); } - ctx.putImageData(imageData, 50, 50) - done(null) - } - - img.onerror = done - - img.src = imageSrc('state.png') -} - -tests['putImageData() png data 2'] = function (ctx, done) { - const img = new Image() - ctx.fillRect(50, 50, 30, 30) - img.onload = function () { - ctx.drawImage(img, 0, 0, 200, 200) - const imageData = ctx.getImageData(0, 0, 50, 50) - const data = imageData.data - if (data instanceof Uint8ClampedArray) { - for (let i = 0, len = data.length; i < len; i += 4) { - data[i + 3] = 80 - } +}; + +tests["fillStyle='hsl(...)'"] = function (ctx) { + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.fillStyle = + "hsl(" + + (360 - 60 * i) + + "," + + (100 - 16.66 * j) + + "%," + + (50 + (i + j) * (50 / 12)) + + "%)"; + ctx.fillRect(j * 25, i * 25, 25, 25); + } } - ctx.putImageData(imageData, 50, 50, 10, 10, 20, 20) - done(null) - } - - img.onerror = done - - img.src = imageSrc('state.png') -} - -tests['putImageData() png data 3'] = function (ctx, done) { - const img = new Image() - ctx.fillRect(50, 50, 30, 30) - img.onload = function () { - ctx.drawImage(img, 0, 0, 200, 200) - const imageData = ctx.getImageData(0, 0, 50, 50) - const data = imageData.data - if (data instanceof Uint8ClampedArray) { - for (let i = 0, len = data.length; i < len; i += 4) { - data[i + 0] = data[i + 0] * 0.2 - data[i + 1] = data[i + 1] * 0.2 - data[i + 2] = data[i + 2] * 0.2 - } +}; + +tests["fillStyle='hsla(...)'"] = function (ctx) { + for (let i = 0; i < 6; i++) { + for (let j = 0; j < 6; j++) { + ctx.fillStyle = + "hsla(" + + (360 - 60 * i) + + "," + + (100 - 16.66 * j) + + "%,50%," + + (1 - 0.16 * j) + + ")"; + ctx.fillRect(j * 25, i * 25, 25, 25); + } } - ctx.putImageData(imageData, 50, 50) - done(null) - } - img.onerror = done - img.src = imageSrc('state.png') -} - -tests.setLineDash = function (ctx) { - ctx.setLineDash([10, 5, 25, 15]) - ctx.lineWidth = 14 - - let y = 5 - const line = function (lineDash, color) { - ctx.setLineDash(lineDash) - if (color) ctx.strokeStyle = color - ctx.beginPath() - ctx.moveTo(0, y) - ctx.lineTo(200, y) - ctx.stroke() - y += ctx.lineWidth + 4 - } - - line([15, 30], 'blue') - line([], 'black') - line([5, 10, 15, 20, 25, 30, 35, 40, 45, 50], 'purple') - line([8], 'green') - line([3, 3, -30], 'red') - line([4, Infinity, 4]) - line([10, 10, NaN]) - line((function () { - ctx.setLineDash([8]) - const a = ctx.getLineDash() - a[0] -= 3 - a.push(20) - return a - })(), 'orange') - line([0, 0], 'purple') // should be full - line([0, 0, 3, 0], 'orange') // should be full - line([0, 3, 0, 0], 'green') // should be empty -} - -tests.lineDashOffset = function (ctx) { - ctx.setLineDash([10, 5, 25, 15]) - ctx.lineWidth = 4 - - let y = 5 - const line = function (lineDashOffset, color) { - ctx.lineDashOffset = lineDashOffset - if (color) ctx.strokeStyle = color - ctx.beginPath() - ctx.moveTo(0, y) - ctx.lineTo(200, y) - ctx.stroke() - y += ctx.lineWidth + 4 - } - - line(-10, 'black') - line(0) - line(10) - line(20) - line(30) - line(40, 'blue') - line(NaN) - line(50, 'green') - line(Infinity) - line(60, 'orange') - line(-Infinity) - line(70, 'purple') - line(undefined) - line(80, 'black') - line(ctx.lineDashOffset + 10) - - for (let i = 0; i < 10; i++) { - line(90 + i / 5, 'red') - } -} - -tests['fillStyle=\'hsl(...)\''] = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.fillStyle = 'hsl(' + (360 - 60 * i) + ',' + (100 - 16.66 * j) + '%,' + (50 + (i + j) * (50 / 12)) + '%)' - ctx.fillRect(j * 25, i * 25, 25, 25) +}; + +tests["textBaseline and scale"] = function (ctx) { + ctx.strokeStyle = "#666"; + ctx.strokeRect(0, 0, 200, 200); + ctx.lineTo(0, 50); + ctx.lineTo(200, 50); + ctx.stroke(); + ctx.beginPath(); + ctx.lineTo(0, 150); + ctx.lineTo(200, 150); + ctx.stroke(); + + ctx.font = "normal 20px Arial"; + ctx.textBaseline = "bottom"; + ctx.textAlign = "center"; + ctx.fillText("bottom", 100, 50); + + ctx.scale(0.1, 0.1); + ctx.font = "normal 200px Arial"; + ctx.textBaseline = "bottom"; + ctx.textAlign = "center"; + ctx.fillText("bottom", 1000, 1500); +}; + +tests["rotated baseline"] = function (ctx) { + ctx.font = "12px Arial"; + ctx.fillStyle = "black"; + ctx.textAlign = "center"; + ctx.textBaseline = "bottom"; + ctx.translate(100, 100); + + for (let i = 0; i < 16; i++) { + ctx.fillText("Hello world!", -50, -50); + ctx.rotate(-Math.PI / 8); } - } -} - -tests['fillStyle=\'hsla(...)\''] = function (ctx) { - for (let i = 0; i < 6; i++) { - for (let j = 0; j < 6; j++) { - ctx.fillStyle = 'hsla(' + (360 - 60 * i) + ',' + (100 - 16.66 * j) + '%,50%,' + (1 - 0.16 * j) + ')' - ctx.fillRect(j * 25, i * 25, 25, 25) +}; + +tests["rotated and scaled baseline"] = function (ctx) { + ctx.font = "120px Arial"; + ctx.fillStyle = "black"; + ctx.textAlign = "center"; + ctx.textBaseline = "bottom"; + ctx.translate(100, 100); + ctx.scale(0.1, 0.2); + + for (let i = 0; i < 16; i++) { + ctx.fillText("Hello world!", -50 / 0.1, -50 / 0.2); + ctx.rotate(-Math.PI / 8); + } +}; + +tests["rotated and skewed baseline"] = function (ctx) { + ctx.font = "12px Arial"; + ctx.fillStyle = "black"; + ctx.textAlign = "center"; + ctx.textBaseline = "bottom"; + ctx.translate(100, 100); + ctx.transform(1, 1, 0, 1, 1, 1); + + for (let i = 0; i < 16; i++) { + ctx.fillText("Hello world!", -50, -50); + ctx.rotate(-Math.PI / 8); + } +}; + +tests["rotated, scaled and skewed baseline"] = function (ctx) { + // Known issue: we don't have a way to decompose the cairo matrix into the + // skew and rotation separately. + ctx.font = "120px Arial"; + ctx.fillStyle = "black"; + ctx.textAlign = "center"; + ctx.textBaseline = "bottom"; + ctx.translate(100, 100); + ctx.scale(0.1, 0.2); + ctx.transform(1, 1, 0, 1, 1, 1); + + for (let i = 0; i < 16; i++) { + ctx.fillText("Hello world!", -50 / 0.1, -50 / 0.2); + ctx.rotate(-Math.PI / 8); + } +}; + +tests["measureText()"] = function (ctx) { + // Note: As of Sep 2017, Chrome is the only browser with advanced TextMetrics, + // and they're behind a flag, and a few of them are missing and others are + // wrong. + function drawWithBBox(text, x, y) { + ctx.fillText(text, x, y); + ctx.strokeStyle = "red"; + ctx.beginPath(); + ctx.moveTo(0, y + 0.5); + ctx.lineTo(200, y + 0.5); + ctx.stroke(); + const metrics = ctx.measureText(text); + ctx.strokeStyle = "blue"; + ctx.strokeRect( + // positive numbers for actualBoundingBoxLeft indicate a distance going left + x + metrics.actualBoundingBoxLeft + 0.5, + y - metrics.actualBoundingBoxAscent + 0.5, + metrics.width, + metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent + ); } - } -} -tests['textBaseline and scale'] = function (ctx) { - ctx.strokeStyle = '#666' - ctx.strokeRect(0, 0, 200, 200) - ctx.lineTo(0, 50) - ctx.lineTo(200, 50) - ctx.stroke() - ctx.beginPath() - ctx.lineTo(0, 150) - ctx.lineTo(200, 150) - ctx.stroke() - - ctx.font = 'normal 20px Arial' - ctx.textBaseline = 'bottom' - ctx.textAlign = 'center' - ctx.fillText('bottom', 100, 50) - - ctx.scale(0.1, 0.1) - ctx.font = 'normal 200px Arial' - ctx.textBaseline = 'bottom' - ctx.textAlign = 'center' - ctx.fillText('bottom', 1000, 1500) -} + ctx.font = "20px Arial"; + ctx.textBaseline = "alphabetic"; + drawWithBBox("Alphabet alphabetic", 20, 50); -tests['rotated baseline'] = function (ctx) { - ctx.font = '12px Arial' - ctx.fillStyle = 'black' - ctx.textAlign = 'center' - ctx.textBaseline = 'bottom' - ctx.translate(100, 100) - - for (let i = 0; i < 16; i++) { - ctx.fillText('Hello world!', -50, -50) - ctx.rotate(-Math.PI / 8) - } -} + drawWithBBox("weruoasnm", 50, 175); // no ascenders/descenders -tests['rotated and scaled baseline'] = function (ctx) { - ctx.font = '120px Arial' - ctx.fillStyle = 'black' - ctx.textAlign = 'center' - ctx.textBaseline = 'bottom' - ctx.translate(100, 100) - ctx.scale(0.1, 0.2) - - for (let i = 0; i < 16; i++) { - ctx.fillText('Hello world!', -50 / 0.1, -50 / 0.2) - ctx.rotate(-Math.PI / 8) - } -} + drawWithBBox(",", 100, 125); // tiny height -tests['rotated and skewed baseline'] = function (ctx) { - ctx.font = '12px Arial' - ctx.fillStyle = 'black' - ctx.textAlign = 'center' - ctx.textBaseline = 'bottom' - ctx.translate(100, 100) - ctx.transform(1, 1, 0, 1, 1, 1) - - for (let i = 0; i < 16; i++) { - ctx.fillText('Hello world!', -50, -50) - ctx.rotate(-Math.PI / 8) - } -} + ctx.textBaseline = "bottom"; + drawWithBBox("Alphabet bottom", 20, 90); -tests['rotated, scaled and skewed baseline'] = function (ctx) { - // Known issue: we don't have a way to decompose the cairo matrix into the - // skew and rotation separately. - ctx.font = '120px Arial' - ctx.fillStyle = 'black' - ctx.textAlign = 'center' - ctx.textBaseline = 'bottom' - ctx.translate(100, 100) - ctx.scale(0.1, 0.2) - ctx.transform(1, 1, 0, 1, 1, 1) - - for (let i = 0; i < 16; i++) { - ctx.fillText('Hello world!', -50 / 0.1, -50 / 0.2) - ctx.rotate(-Math.PI / 8) - } -} + ctx.textBaseline = "alphabetic"; + ctx.save(); + ctx.rotate(Math.PI / 8); + drawWithBBox("Alphabet", 50, 100); + ctx.restore(); -tests['measureText()'] = function (ctx) { - // Note: As of Sep 2017, Chrome is the only browser with advanced TextMetrics, - // and they're behind a flag, and a few of them are missing and others are - // wrong. - function drawWithBBox (text, x, y) { - ctx.fillText(text, x, y) - ctx.strokeStyle = 'red' - ctx.beginPath(); ctx.moveTo(0, y + 0.5); ctx.lineTo(200, y + 0.5); ctx.stroke() - const metrics = ctx.measureText(text) - ctx.strokeStyle = 'blue' - ctx.strokeRect( - // positive numbers for actualBoundingBoxLeft indicate a distance going left - x + metrics.actualBoundingBoxLeft + 0.5, - y - metrics.actualBoundingBoxAscent + 0.5, - metrics.width, - metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent - ) - } - - ctx.font = '20px Arial' - ctx.textBaseline = 'alphabetic' - drawWithBBox('Alphabet alphabetic', 20, 50) - - drawWithBBox('weruoasnm', 50, 175) // no ascenders/descenders - - drawWithBBox(',', 100, 125) // tiny height - - ctx.textBaseline = 'bottom' - drawWithBBox('Alphabet bottom', 20, 90) - - ctx.textBaseline = 'alphabetic' - ctx.save() - ctx.rotate(Math.PI / 8) - drawWithBBox('Alphabet', 50, 100) - ctx.restore() - - ctx.textAlign = 'center' - drawWithBBox('Centered', 100, 195) - - ctx.textAlign = 'left' - drawWithBBox('Left', 10, 195) - - ctx.textAlign = 'right' - drawWithBBox('right', 195, 195) -} + ctx.textAlign = "center"; + drawWithBBox("Centered", 100, 195); -tests['glyph advances (#2184)'] = function (ctx) { - ctx.font = '8px Arial' - ctx.fillText('A float is a box that is shifted to the left or right on the current line.', 0, 8) -} + ctx.textAlign = "left"; + drawWithBBox("Left", 10, 195); -tests['image sampling (#1084)'] = function (ctx, done) { - let loaded1, loaded2 - const img1 = new Image() - const img2 = new Image() + ctx.textAlign = "right"; + drawWithBBox("right", 195, 195); +}; - img1.onload = () => { - loaded1 = true - ctx.drawImage(img1, -170 - 100, -203, 352, 352) - if (loaded2) done() - } +tests["glyph advances (#2184)"] = function (ctx) { + ctx.font = "8px Arial"; + ctx.fillText( + "A float is a box that is shifted to the left or right on the current line.", + 0, + 8 + ); +}; - img1.onerror = done +tests["image sampling (#1084)"] = function (ctx, done) { + let loaded1, loaded2; + const img1 = new Image(); + const img2 = new Image(); - img2.onload = () => { - loaded2 = true - ctx.drawImage(img2, 182 - 100, -203, 352, 352) - if (loaded1) done() - } + img1.onload = () => { + loaded1 = true; + ctx.drawImage(img1, -170 - 100, -203, 352, 352); + if (loaded2) done(); + }; - img2.onerror = done + img1.onerror = done; - img1.src = imageSrc('halved-1.jpeg') - img2.src = imageSrc('halved-2.jpeg') -} + img2.onload = () => { + loaded2 = true; + ctx.drawImage(img2, 182 - 100, -203, 352, 352); + if (loaded1) done(); + }; -tests['drawImage reflection bug'] = function (ctx, done) { - const img1 = new Image() - img1.onload = function () { - ctx.drawImage(img1, 60, 30, 150, 150, 0, 0, 200, 200) - done() - } - img1.src = imageSrc('chrome.jpg') -} + img2.onerror = done; -tests['drawImage reflection bug with skewing'] = function (ctx, done) { - const img1 = new Image() - img1.onload = function () { - ctx.transform(1.2, 1, 1.8, 1.3, 0, 0) - ctx.drawImage(img1, 60, 30, 150, 150, 0, 0, 200, 200) - ctx.setTransform(1.2, 1.8, 0.3, 0.8, 0, 0) - ctx.drawImage(img1, 30, 60, 150, 150, -5, -5, 200, 200) - done() - } - img1.src = imageSrc('chrome.jpg') -} + img1.src = imageSrc("halved-1.jpeg"); + img2.src = imageSrc("halved-2.jpeg"); +}; -tests['transformed drawimage'] = function (ctx) { - ctx.fillStyle = 'white' - ctx.fillRect(0, 0, 200, 200) - ctx.fillStyle = 'black' - ctx.fillRect(5, 5, 50, 50) - ctx.transform(1.2, 1, 1.8, 1.3, 0, 0) - ctx.drawImage(ctx.canvas, 0, 0) -} +tests["drawImage reflection bug"] = function (ctx, done) { + const img1 = new Image(); + img1.onload = function () { + ctx.drawImage(img1, 60, 30, 150, 150, 0, 0, 200, 200); + done(); + }; + img1.src = imageSrc("chrome.jpg"); +}; + +tests["drawImage reflection bug with skewing"] = function (ctx, done) { + const img1 = new Image(); + img1.onload = function () { + ctx.transform(1.2, 1, 1.8, 1.3, 0, 0); + ctx.drawImage(img1, 60, 30, 150, 150, 0, 0, 200, 200); + ctx.setTransform(1.2, 1.8, 0.3, 0.8, 0, 0); + ctx.drawImage(img1, 30, 60, 150, 150, -5, -5, 200, 200); + done(); + }; + img1.src = imageSrc("chrome.jpg"); +}; + +tests["transformed drawimage"] = function (ctx) { + ctx.fillStyle = "white"; + ctx.fillRect(0, 0, 200, 200); + ctx.fillStyle = "black"; + ctx.fillRect(5, 5, 50, 50); + ctx.transform(1.2, 1, 1.8, 1.3, 0, 0); + ctx.drawImage(ctx.canvas, 0, 0); +}; diff --git a/test/server.js b/test/server.js index fe2a53218..7239a1100 100644 --- a/test/server.js +++ b/test/server.js @@ -1,63 +1,67 @@ -const path = require('path') -const express = require('express') - -const Canvas = require('../') -const tests = require('./public/tests') - -const app = express() -const port = parseInt(process.argv[2] || '4000', 10) - -function renderTest (canvas, name, cb) { - if (!tests[name]) { - throw new Error('Unknown test: ' + name) - } - - const ctx = canvas.getContext('2d', { pixelFormat: 'RGBA32' }) - const initialFillStyle = ctx.fillStyle - ctx.fillStyle = 'white' - ctx.fillRect(0, 0, 200, 200) - ctx.fillStyle = initialFillStyle - if (tests[name].length === 2) { - tests[name](ctx, cb) - } else { - tests[name](ctx) - cb(null) - } +const path = require("path"); +const express = require("express"); + +const Canvas = require("../"); +const tests = require("./public/tests"); + +const app = express(); +const port = parseInt(process.argv[2] || "4000", 10); + +function renderTest(canvas, name, cb) { + if (!tests[name]) { + throw new Error("Unknown test: " + name); + } + + const ctx = canvas.getContext("2d", { pixelFormat: "RGBA32" }); + const initialFillStyle = ctx.fillStyle; + + ctx.fillStyle = "white"; + ctx.fillRect(0, 0, 200, 200); + ctx.fillStyle = initialFillStyle; + + if (tests[name].length === 2) { + tests[name](ctx, cb); + } else { + tests[name](ctx); + cb(null); + } } -app.use(express.static(path.join(__dirname, 'fixtures'))) -app.use(express.static(path.join(__dirname, 'public'))) +app.use(express.static(path.join(__dirname, "fixtures"))); +app.use(express.static(path.join(__dirname, "public"))); -app.get('/', function (req, res) { - res.sendFile(path.join(__dirname, 'public', 'app.html')) -}) +app.get("/", function (req, res) { + res.sendFile(path.join(__dirname, "public", "app.html")); +}); -app.get('/pixelmatch.js', function (req, res) { - res.sendFile(path.join(__dirname, '../node_modules/pixelmatch/', 'index.js')) -}) +app.get("/pixelmatch.js", function (req, res) { + res.sendFile( + path.join(__dirname, "../node_modules/pixelmatch/", "index.js") + ); +}); -app.get('/render', function (req, res, next) { - const canvas = Canvas.createCanvas(200, 200) +app.get("/render", function (req, res, next) { + const canvas = Canvas.createCanvas(200, 200); - renderTest(canvas, req.query.name, function (err) { - if (err) return next(err) + renderTest(canvas, req.query.name, function (err) { + if (err) return next(err); - res.writeHead(200, { 'Content-Type': 'image/png' }) - canvas.pngStream().pipe(res) - }) -}) + res.writeHead(200, { "Content-Type": "image/png" }); + canvas.pngStream().pipe(res); + }); +}); -app.get('/pdf', function (req, res, next) { - const canvas = Canvas.createCanvas(200, 200, 'pdf') +app.get("/pdf", function (req, res, next) { + const canvas = Canvas.createCanvas(200, 200, "pdf"); - renderTest(canvas, req.query.name, function (err) { - if (err) return next(err) + renderTest(canvas, req.query.name, function (err) { + if (err) return next(err); - res.writeHead(200, { 'Content-Type': 'application/pdf' }) - canvas.pdfStream().pipe(res) - }) -}) + res.writeHead(200, { "Content-Type": "application/pdf" }); + canvas.pdfStream().pipe(res); + }); +}); app.listen(port, function () { - console.log('👉 http://localhost:%d/', port) -}) + console.log("👉 http://localhost:%d/", port); +}); diff --git a/test/wpt/drawing-text-to-the-canvas.yaml b/test/wpt/drawing-text-to-the-canvas.yaml index e0f0d4f72..6435a60f3 100644 --- a/test/wpt/drawing-text-to-the-canvas.yaml +++ b/test/wpt/drawing-text-to-the-canvas.yaml @@ -2,194 +2,194 @@ desc: fillText draws filled text manual: testing: - - 2d.text.draw - - 2d.text.draw.fill + - 2d.text.draw + - 2d.text.draw.fill code: | - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('PASS', 5, 35); + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.font = '35px Arial, sans-serif'; + ctx.fillText('PASS', 5, 35); expected: &passfill | - size 100 50 - cr.set_source_rgb(0, 0, 0) - cr.rectangle(0, 0, 100, 50) - cr.fill() - cr.set_source_rgb(0, 1, 0) - cr.select_font_face("Arial") - cr.set_font_size(35) - cr.translate(5, 35) - cr.text_path("PASS") - cr.fill() + size 100 50 + cr.set_source_rgb(0, 0, 0) + cr.rectangle(0, 0, 100, 50) + cr.fill() + cr.set_source_rgb(0, 1, 0) + cr.select_font_face("Arial") + cr.set_font_size(35) + cr.translate(5, 35) + cr.text_path("PASS") + cr.fill() - name: 2d.text.draw.fill.unaffected desc: fillText does not start a new path or subpath testing: - - 2d.text.draw.fill + - 2d.text.draw.fill code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('FAIL', 5, 35); + ctx.font = '35px Arial, sans-serif'; + ctx.fillText('FAIL', 5, 35); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 5,45 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 5,45 == 0,255,0,255; expected: green - name: 2d.text.draw.fill.rtl desc: fillText respects Right-To-Left Override characters manual: testing: - - 2d.text.draw + - 2d.text.draw code: | - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('\u202eFAIL \xa0 \xa0 SSAP', 5, 35); + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.font = '35px Arial, sans-serif'; + ctx.fillText('\u202eFAIL \xa0 \xa0 SSAP', 5, 35); expected: *passfill - name: 2d.text.draw.fill.maxWidth.large desc: fillText handles maxWidth correctly manual: testing: - - 2d.text.draw.maxwidth + - 2d.text.draw.maxwidth code: | - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('PASS', 5, 35, 200); + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.font = '35px Arial, sans-serif'; + ctx.fillText('PASS', 5, 35, 200); expected: *passfill - name: 2d.text.draw.fill.maxWidth.small desc: fillText handles maxWidth correctly testing: - - 2d.text.draw.maxwidth + - 2d.text.draw.maxwidth code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('fail fail fail fail fail', -100, 35, 90); - _assertGreen(ctx, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.font = '35px Arial, sans-serif'; + ctx.fillText('fail fail fail fail fail', -100, 35, 90); + _assertGreen(ctx, 100, 50); expected: green - name: 2d.text.draw.fill.maxWidth.zero desc: fillText handles maxWidth correctly testing: - - 2d.text.draw.maxwidth + - 2d.text.draw.maxwidth code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('fail fail fail fail fail', 5, 35, 0); - _assertGreen(ctx, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.font = '35px Arial, sans-serif'; + ctx.fillText('fail fail fail fail fail', 5, 35, 0); + _assertGreen(ctx, 100, 50); expected: green - name: 2d.text.draw.fill.maxWidth.negative desc: fillText handles maxWidth correctly testing: - - 2d.text.draw.maxwidth + - 2d.text.draw.maxwidth code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('fail fail fail fail fail', 5, 35, -1); - _assertGreen(ctx, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.font = '35px Arial, sans-serif'; + ctx.fillText('fail fail fail fail fail', 5, 35, -1); + _assertGreen(ctx, 100, 50); expected: green - name: 2d.text.draw.fill.maxWidth.NaN desc: fillText handles maxWidth correctly testing: - - 2d.text.draw.maxwidth + - 2d.text.draw.maxwidth code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('fail fail fail fail fail', 5, 35, NaN); - _assertGreen(ctx, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.font = '35px Arial, sans-serif'; + ctx.fillText('fail fail fail fail fail', 5, 35, NaN); + _assertGreen(ctx, 100, 50); expected: green - name: 2d.text.draw.stroke.basic desc: strokeText draws stroked text manual: testing: - - 2d.text.draw - - 2d.text.draw.stroke + - 2d.text.draw + - 2d.text.draw.stroke code: | - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.fillStyle = '#f00'; - ctx.lineWidth = 1; - ctx.font = '35px Arial, sans-serif'; - ctx.strokeText('PASS', 5, 35); + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.fillStyle = '#f00'; + ctx.lineWidth = 1; + ctx.font = '35px Arial, sans-serif'; + ctx.strokeText('PASS', 5, 35); expected: | - size 100 50 - cr.set_source_rgb(0, 0, 0) - cr.rectangle(0, 0, 100, 50) - cr.fill() - cr.set_source_rgb(0, 1, 0) - cr.select_font_face("Arial") - cr.set_font_size(35) - cr.set_line_width(1) - cr.translate(5, 35) - cr.text_path("PASS") - cr.stroke() + size 100 50 + cr.set_source_rgb(0, 0, 0) + cr.rectangle(0, 0, 100, 50) + cr.fill() + cr.set_source_rgb(0, 1, 0) + cr.select_font_face("Arial") + cr.set_font_size(35) + cr.set_line_width(1) + cr.translate(5, 35) + cr.text_path("PASS") + cr.stroke() - name: 2d.text.draw.stroke.unaffected desc: strokeText does not start a new path or subpath testing: - - 2d.text.draw.stroke + - 2d.text.draw.stroke code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); - ctx.font = '35px Arial, sans-serif'; - ctx.strokeStyle = '#f00'; - ctx.strokeText('FAIL', 5, 35); + ctx.font = '35px Arial, sans-serif'; + ctx.strokeStyle = '#f00'; + ctx.strokeText('FAIL', 5, 35); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 5,45 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 5,45 == 0,255,0,255; expected: green - name: 2d.text.draw.kern.consistent desc: Stroked and filled text should have exactly the same kerning so it overlaps manual: testing: - - 2d.text.draw + - 2d.text.draw code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 3; - ctx.font = '20px Arial, sans-serif'; - ctx.fillText('VAVAVAVAVAVAVA', -50, 25); - ctx.fillText('ToToToToToToTo', -50, 45); - ctx.strokeText('VAVAVAVAVAVAVA', -50, 25); - ctx.strokeText('ToToToToToToTo', -50, 45); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 3; + ctx.font = '20px Arial, sans-serif'; + ctx.fillText('VAVAVAVAVAVAVA', -50, 25); + ctx.fillText('ToToToToToToTo', -50, 45); + ctx.strokeText('VAVAVAVAVAVAVA', -50, 25); + ctx.strokeText('ToToToToToToTo', -50, 45); expected: green # CanvasTest is: @@ -213,849 +213,849 @@ - name: 2d.text.draw.fill.maxWidth.fontface desc: fillText works on @font-face fonts testing: - - 2d.text.draw.maxwidth + - 2d.text.draw.maxwidth fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillText('EEEE', -50, 37.5, 40); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillText('EEEE', -50, 37.5, 40); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.fill.maxWidth.bound desc: fillText handles maxWidth based on line size, not bounding box size testing: - - 2d.text.draw.maxwidth + - 2d.text.draw.maxwidth fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('DD', 0, 37.5, 100); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillText('DD', 0, 37.5, 100); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.fontface testing: - - 2d.text.font.fontface + - 2d.text.font.fontface fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '67px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('AA', 0, 50); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - }), 500); + ctx.font = '67px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillText('AA', 0, 50); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.fontface.repeat - desc: Draw with the font immediately, then wait a bit until and draw again. (This - crashes some version of WebKit.) + desc: + Draw with the font immediately, then wait a bit until and draw again. (This + crashes some version of WebKit.) testing: - - 2d.text.font.fontface + - 2d.text.font.fontface fonts: - - CanvasTest + - CanvasTest fonthack: 0 code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.font = '67px CanvasTest'; - ctx.fillStyle = '#0f0'; - ctx.fillText('AA', 0, 50); - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillText('AA', 0, 50); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - }), 500); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.font = '67px CanvasTest'; + ctx.fillStyle = '#0f0'; + ctx.fillText('AA', 0, 50); + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillText('AA', 0, 50); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.fontface.notinpage - desc: '@font-face fonts should work even if they are not used in the page' + desc: "@font-face fonts should work even if they are not used in the page" testing: - - 2d.text.font.fontface + - 2d.text.font.fontface fonts: - - CanvasTest + - CanvasTest fonthack: 0 code: | - ctx.font = '67px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('AA', 0, 50); - @assert pixel 5,5 ==~ 0,255,0,255; @moz-todo - @assert pixel 95,5 ==~ 0,255,0,255; @moz-todo - @assert pixel 25,25 ==~ 0,255,0,255; @moz-todo - @assert pixel 75,25 ==~ 0,255,0,255; @moz-todo - }), 500); + ctx.font = '67px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillText('AA', 0, 50); + @assert pixel 5,5 ==~ 0,255,0,255; @moz-todo + @assert pixel 95,5 ==~ 0,255,0,255; @moz-todo + @assert pixel 25,25 ==~ 0,255,0,255; @moz-todo + @assert pixel 75,25 ==~ 0,255,0,255; @moz-todo + }), 500); expected: green - name: 2d.text.draw.align.left desc: textAlign left is the left of the first em square (not the bounding box) testing: - - 2d.text.align.left + - 2d.text.align.left fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'left'; - ctx.fillText('DD', 0, 37.5); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - @assert pixel 5,45 ==~ 0,255,0,255; - @assert pixel 95,45 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textAlign = 'left'; + ctx.fillText('DD', 0, 37.5); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + @assert pixel 5,45 ==~ 0,255,0,255; + @assert pixel 95,45 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.align.right desc: textAlign right is the right of the last em square (not the bounding box) testing: - - 2d.text.align.right + - 2d.text.align.right fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'right'; - ctx.fillText('DD', 100, 37.5); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - @assert pixel 5,45 ==~ 0,255,0,255; - @assert pixel 95,45 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textAlign = 'right'; + ctx.fillText('DD', 100, 37.5); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + @assert pixel 5,45 ==~ 0,255,0,255; + @assert pixel 95,45 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.align.start.ltr desc: textAlign start with ltr is the left edge testing: - - 2d.text.align.left + - 2d.text.align.left fonts: - - CanvasTest + - CanvasTest canvas: width="100" height="50" dir="ltr" code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'start'; - ctx.fillText('DD', 0, 37.5); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - @assert pixel 5,45 ==~ 0,255,0,255; - @assert pixel 95,45 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textAlign = 'start'; + ctx.fillText('DD', 0, 37.5); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + @assert pixel 5,45 ==~ 0,255,0,255; + @assert pixel 95,45 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.align.start.rtl desc: textAlign start with rtl is the right edge testing: - - 2d.text.align.right - - 2d.text.draw.direction + - 2d.text.align.right + - 2d.text.draw.direction fonts: - - CanvasTest + - CanvasTest canvas: width="100" height="50" dir="rtl" code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'start'; - ctx.fillText('DD', 100, 37.5); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - @assert pixel 5,45 ==~ 0,255,0,255; - @assert pixel 95,45 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textAlign = 'start'; + ctx.fillText('DD', 100, 37.5); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + @assert pixel 5,45 ==~ 0,255,0,255; + @assert pixel 95,45 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.align.end.ltr desc: textAlign end with ltr is the right edge testing: - - 2d.text.align.right + - 2d.text.align.right fonts: - - CanvasTest + - CanvasTest canvas: width="100" height="50" dir="ltr" code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'end'; - ctx.fillText('DD', 100, 37.5); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - @assert pixel 5,45 ==~ 0,255,0,255; - @assert pixel 95,45 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textAlign = 'end'; + ctx.fillText('DD', 100, 37.5); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + @assert pixel 5,45 ==~ 0,255,0,255; + @assert pixel 95,45 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.align.end.rtl desc: textAlign end with rtl is the left edge testing: - - 2d.text.align.left - - 2d.text.draw.direction + - 2d.text.align.left + - 2d.text.draw.direction fonts: - - CanvasTest + - CanvasTest canvas: width="100" height="50" dir="rtl" code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'end'; - ctx.fillText('DD', 0, 37.5); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - @assert pixel 5,45 ==~ 0,255,0,255; - @assert pixel 95,45 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textAlign = 'end'; + ctx.fillText('DD', 0, 37.5); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + @assert pixel 5,45 ==~ 0,255,0,255; + @assert pixel 95,45 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.align.center desc: textAlign center is the center of the em squares (not the bounding box) testing: - - 2d.text.align.center + - 2d.text.align.center fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'center'; - ctx.fillText('DD', 50, 37.5); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - @assert pixel 5,45 ==~ 0,255,0,255; - @assert pixel 95,45 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textAlign = 'center'; + ctx.fillText('DD', 50, 37.5); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + @assert pixel 5,45 ==~ 0,255,0,255; + @assert pixel 95,45 ==~ 0,255,0,255; + }), 500); expected: green - - name: 2d.text.draw.space.basic desc: U+0020 is rendered the correct size (1em wide) testing: - - 2d.text.draw.spaces + - 2d.text.draw.spaces fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('E EE', -100, 37.5); - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillText('E EE', -100, 37.5); + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.space.collapse.nonspace desc: Non-space characters are not converted to U+0020 and collapsed testing: - - 2d.text.draw.spaces + - 2d.text.draw.spaces fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('E\x0b EE', -150, 37.5); - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillText('E\x0b EE', -150, 37.5); + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.measure.width.basic desc: The width of character is same as font used testing: - - 2d.text.measure + - 2d.text.measure fonts: - - CanvasTest + - CanvasTest code: | - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - @assert ctx.measureText('A').width === 50; - @assert ctx.measureText('AA').width === 100; - @assert ctx.measureText('ABCD').width === 200; - - ctx.font = '100px CanvasTest'; - @assert ctx.measureText('A').width === 100; - }), 500); - }); + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout(t.step_func_done(function () { + ctx.font = '50px CanvasTest'; + @assert ctx.measureText('A').width === 50; + @assert ctx.measureText('AA').width === 100; + @assert ctx.measureText('ABCD').width === 200; + + ctx.font = '100px CanvasTest'; + @assert ctx.measureText('A').width === 100; + }), 500); + }); - name: 2d.text.measure.width.empty desc: The empty string has zero width testing: - - 2d.text.measure + - 2d.text.measure fonts: - - CanvasTest + - CanvasTest code: | - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - @assert ctx.measureText("").width === 0; - }), 500); - }); + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout(t.step_func_done(function () { + ctx.font = '50px CanvasTest'; + @assert ctx.measureText("").width === 0; + }), 500); + }); - name: 2d.text.measure.advances desc: Testing width advances testing: - - 2d.text.measure.advances + - 2d.text.measure.advances fonts: - - CanvasTest + - CanvasTest code: | - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - ctx.direction = 'ltr'; - ctx.align = 'left' - // Some platforms may return '-0'. - @assert Math.abs(ctx.measureText('Hello').advances[0]) === 0; - // Different platforms may render text slightly different. - @assert ctx.measureText('Hello').advances[1] >= 36; - @assert ctx.measureText('Hello').advances[2] >= 58; - @assert ctx.measureText('Hello').advances[3] >= 70; - @assert ctx.measureText('Hello').advances[4] >= 80; - - var tm = ctx.measureText('Hello'); - @assert ctx.measureText('Hello').advances[0] === tm.advances[0]; - @assert ctx.measureText('Hello').advances[1] === tm.advances[1]; - @assert ctx.measureText('Hello').advances[2] === tm.advances[2]; - @assert ctx.measureText('Hello').advances[3] === tm.advances[3]; - @assert ctx.measureText('Hello').advances[4] === tm.advances[4]; - }), 500); - }); + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout(t.step_func_done(function () { + ctx.font = '50px CanvasTest'; + ctx.direction = 'ltr'; + ctx.align = 'left' + // Some platforms may return '-0'. + @assert Math.abs(ctx.measureText('Hello').advances[0]) === 0; + // Different platforms may render text slightly different. + @assert ctx.measureText('Hello').advances[1] >= 36; + @assert ctx.measureText('Hello').advances[2] >= 58; + @assert ctx.measureText('Hello').advances[3] >= 70; + @assert ctx.measureText('Hello').advances[4] >= 80; + + var tm = ctx.measureText('Hello'); + @assert ctx.measureText('Hello').advances[0] === tm.advances[0]; + @assert ctx.measureText('Hello').advances[1] === tm.advances[1]; + @assert ctx.measureText('Hello').advances[2] === tm.advances[2]; + @assert ctx.measureText('Hello').advances[3] === tm.advances[3]; + @assert ctx.measureText('Hello').advances[4] === tm.advances[4]; + }), 500); + }); - name: 2d.text.measure.actualBoundingBox desc: Testing actualBoundingBox testing: - - 2d.text.measure.actualBoundingBox + - 2d.text.measure.actualBoundingBox fonts: - - CanvasTest + - CanvasTest code: | - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - ctx.direction = 'ltr'; - ctx.align = 'left' - ctx.baseline = 'alphabetic' - // Different platforms may render text slightly different. - // Values that are nominally expected to be zero might actually vary by a pixel or so - // if the UA accounts for antialiasing at glyph edges, so we allow a slight deviation. - @assert Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1; - @assert ctx.measureText('A').actualBoundingBoxRight >= 50; - @assert ctx.measureText('A').actualBoundingBoxAscent >= 35; - @assert Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1; - - @assert ctx.measureText('D').actualBoundingBoxLeft >= 48; - @assert ctx.measureText('D').actualBoundingBoxLeft <= 52; - @assert ctx.measureText('D').actualBoundingBoxRight >= 75; - @assert ctx.measureText('D').actualBoundingBoxRight <= 80; - @assert ctx.measureText('D').actualBoundingBoxAscent >= 35; - @assert ctx.measureText('D').actualBoundingBoxAscent <= 40; - @assert ctx.measureText('D').actualBoundingBoxDescent >= 12; - @assert ctx.measureText('D').actualBoundingBoxDescent <= 15; - - @assert Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1; - @assert ctx.measureText('ABCD').actualBoundingBoxRight >= 200; - @assert ctx.measureText('ABCD').actualBoundingBoxAscent >= 85; - @assert ctx.measureText('ABCD').actualBoundingBoxDescent >= 37; - }), 500); - }); + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout(t.step_func_done(function () { + ctx.font = '50px CanvasTest'; + ctx.direction = 'ltr'; + ctx.align = 'left' + ctx.baseline = 'alphabetic' + // Different platforms may render text slightly different. + // Values that are nominally expected to be zero might actually vary by a pixel or so + // if the UA accounts for antialiasing at glyph edges, so we allow a slight deviation. + @assert Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1; + @assert ctx.measureText('A').actualBoundingBoxRight >= 50; + @assert ctx.measureText('A').actualBoundingBoxAscent >= 35; + @assert Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1; + + @assert ctx.measureText('D').actualBoundingBoxLeft >= 48; + @assert ctx.measureText('D').actualBoundingBoxLeft <= 52; + @assert ctx.measureText('D').actualBoundingBoxRight >= 75; + @assert ctx.measureText('D').actualBoundingBoxRight <= 80; + @assert ctx.measureText('D').actualBoundingBoxAscent >= 35; + @assert ctx.measureText('D').actualBoundingBoxAscent <= 40; + @assert ctx.measureText('D').actualBoundingBoxDescent >= 12; + @assert ctx.measureText('D').actualBoundingBoxDescent <= 15; + + @assert Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1; + @assert ctx.measureText('ABCD').actualBoundingBoxRight >= 200; + @assert ctx.measureText('ABCD').actualBoundingBoxAscent >= 85; + @assert ctx.measureText('ABCD').actualBoundingBoxDescent >= 37; + }), 500); + }); - name: 2d.text.measure.fontBoundingBox desc: Testing fontBoundingBox testing: - - 2d.text.measure.fontBoundingBox + - 2d.text.measure.fontBoundingBox fonts: - - CanvasTest + - CanvasTest code: | - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - ctx.direction = 'ltr'; - ctx.align = 'left' - @assert ctx.measureText('A').fontBoundingBoxAscent === 85; - @assert ctx.measureText('A').fontBoundingBoxDescent === 39; - - @assert ctx.measureText('ABCD').fontBoundingBoxAscent === 85; - @assert ctx.measureText('ABCD').fontBoundingBoxDescent === 39; - }), 500); - }); + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout(t.step_func_done(function () { + ctx.font = '50px CanvasTest'; + ctx.direction = 'ltr'; + ctx.align = 'left' + @assert ctx.measureText('A').fontBoundingBoxAscent === 85; + @assert ctx.measureText('A').fontBoundingBoxDescent === 39; + + @assert ctx.measureText('ABCD').fontBoundingBoxAscent === 85; + @assert ctx.measureText('ABCD').fontBoundingBoxDescent === 39; + }), 500); + }); - name: 2d.text.measure.fontBoundingBox.ahem desc: Testing fontBoundingBox for font ahem testing: - - 2d.text.measure.fontBoundingBox + - 2d.text.measure.fontBoundingBox fonts: - - Ahem + - Ahem code: | - deferTest(); - var f = new FontFace("Ahem", "/fonts/Ahem.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px Ahem'; - ctx.direction = 'ltr'; - ctx.align = 'left' - @assert ctx.measureText('A').fontBoundingBoxAscent === 40; - @assert ctx.measureText('A').fontBoundingBoxDescent === 10; - - @assert ctx.measureText('ABCD').fontBoundingBoxAscent === 40; - @assert ctx.measureText('ABCD').fontBoundingBoxDescent === 10; - }), 500); - }); + deferTest(); + var f = new FontFace("Ahem", "/fonts/Ahem.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout(t.step_func_done(function () { + ctx.font = '50px Ahem'; + ctx.direction = 'ltr'; + ctx.align = 'left' + @assert ctx.measureText('A').fontBoundingBoxAscent === 40; + @assert ctx.measureText('A').fontBoundingBoxDescent === 10; + + @assert ctx.measureText('ABCD').fontBoundingBoxAscent === 40; + @assert ctx.measureText('ABCD').fontBoundingBoxDescent === 10; + }), 500); + }); - name: 2d.text.measure.emHeights desc: Testing emHeights testing: - - 2d.text.measure.emHeights + - 2d.text.measure.emHeights fonts: - - CanvasTest + - CanvasTest code: | - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - ctx.direction = 'ltr'; - ctx.align = 'left' - @assert ctx.measureText('A').emHeightAscent === 37.5; - @assert ctx.measureText('A').emHeightDescent === 12.5; - @assert ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent === 50; - - @assert ctx.measureText('ABCD').emHeightAscent === 37.5; - @assert ctx.measureText('ABCD').emHeightDescent === 12.5; - @assert ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent === 50; - }), 500); - }); + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout(t.step_func_done(function () { + ctx.font = '50px CanvasTest'; + ctx.direction = 'ltr'; + ctx.align = 'left' + @assert ctx.measureText('A').emHeightAscent === 37.5; + @assert ctx.measureText('A').emHeightDescent === 12.5; + @assert ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent === 50; + + @assert ctx.measureText('ABCD').emHeightAscent === 37.5; + @assert ctx.measureText('ABCD').emHeightDescent === 12.5; + @assert ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent === 50; + }), 500); + }); - name: 2d.text.measure.baselines desc: Testing baselines testing: - - 2d.text.measure.baselines + - 2d.text.measure.baselines fonts: - - CanvasTest + - CanvasTest code: | - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - ctx.direction = 'ltr'; - ctx.align = 'left' - @assert Math.abs(ctx.measureText('A').getBaselines().alphabetic) === 0; - @assert ctx.measureText('A').getBaselines().ideographic === -39; - @assert ctx.measureText('A').getBaselines().hanging === 68; - - @assert Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic) === 0; - @assert ctx.measureText('ABCD').getBaselines().ideographic === -39; - @assert ctx.measureText('ABCD').getBaselines().hanging === 68; - }), 500); - }); + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout(t.step_func_done(function () { + ctx.font = '50px CanvasTest'; + ctx.direction = 'ltr'; + ctx.align = 'left' + @assert Math.abs(ctx.measureText('A').getBaselines().alphabetic) === 0; + @assert ctx.measureText('A').getBaselines().ideographic === -39; + @assert ctx.measureText('A').getBaselines().hanging === 68; + + @assert Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic) === 0; + @assert ctx.measureText('ABCD').getBaselines().ideographic === -39; + @assert ctx.measureText('ABCD').getBaselines().hanging === 68; + }), 500); + }); - name: 2d.text.drawing.style.spacing desc: Testing letter spacing and word spacing testing: - - 2d.text.drawing.style.spacing + - 2d.text.drawing.style.spacing code: | - @assert ctx.letterSpacing === '0px'; - @assert ctx.wordSpacing === '0px'; + @assert ctx.letterSpacing === '0px'; + @assert ctx.wordSpacing === '0px'; - ctx.letterSpacing = '3px'; - @assert ctx.letterSpacing === '3px'; - @assert ctx.wordSpacing === '0px'; + ctx.letterSpacing = '3px'; + @assert ctx.letterSpacing === '3px'; + @assert ctx.wordSpacing === '0px'; - ctx.wordSpacing = '5px'; - @assert ctx.letterSpacing === '3px'; - @assert ctx.wordSpacing === '5px'; + ctx.wordSpacing = '5px'; + @assert ctx.letterSpacing === '3px'; + @assert ctx.wordSpacing === '5px'; - ctx.letterSpacing = '-1px'; - ctx.wordSpacing = '-1px'; - @assert ctx.letterSpacing === '-1px'; - @assert ctx.wordSpacing === '-1px'; + ctx.letterSpacing = '-1px'; + ctx.wordSpacing = '-1px'; + @assert ctx.letterSpacing === '-1px'; + @assert ctx.wordSpacing === '-1px'; - ctx.letterSpacing = '1PX'; - ctx.wordSpacing = '1EM'; - @assert ctx.letterSpacing === '1px'; - @assert ctx.wordSpacing === '1em'; + ctx.letterSpacing = '1PX'; + ctx.wordSpacing = '1EM'; + @assert ctx.letterSpacing === '1px'; + @assert ctx.wordSpacing === '1em'; - name: 2d.text.drawing.style.nonfinite.spacing desc: Testing letter spacing and word spacing with nonfinite inputs testing: - - 2d.text.drawing.style.spacing + - 2d.text.drawing.style.spacing code: | - @assert ctx.letterSpacing === '0px'; - @assert ctx.wordSpacing === '0px'; - - function test_word_spacing(value) { - ctx.wordSpacing = value; - ctx.letterSpacing = value; - @assert ctx.wordSpacing === '0px'; @assert ctx.letterSpacing === '0px'; - } - @nonfinite test_word_spacing(<0 NaN Infinity -Infinity>); + @assert ctx.wordSpacing === '0px'; + + function test_word_spacing(value) { + ctx.wordSpacing = value; + ctx.letterSpacing = value; + @assert ctx.wordSpacing === '0px'; + @assert ctx.letterSpacing === '0px'; + } + @nonfinite test_word_spacing(<0 NaN Infinity -Infinity>); - name: 2d.text.drawing.style.invalid.spacing desc: Testing letter spacing and word spacing with invalid units testing: - - 2d.text.drawing.style.spacing + - 2d.text.drawing.style.spacing code: | - @assert ctx.letterSpacing === '0px'; - @assert ctx.wordSpacing === '0px'; - - function test_word_spacing(value) { - ctx.wordSpacing = value; - ctx.letterSpacing = value; - @assert ctx.wordSpacing === '0px'; @assert ctx.letterSpacing === '0px'; - } - @nonfinite test_word_spacing(< '0s' '1min' '1deg' '1pp'>); + @assert ctx.wordSpacing === '0px'; + + function test_word_spacing(value) { + ctx.wordSpacing = value; + ctx.letterSpacing = value; + @assert ctx.wordSpacing === '0px'; + @assert ctx.letterSpacing === '0px'; + } + @nonfinite test_word_spacing(< '0s' '1min' '1deg' '1pp'>); - name: 2d.text.drawing.style.letterSpacing.measure desc: Testing letter spacing and word spacing testing: - - 2d.text.drawing.style.spacing + - 2d.text.drawing.style.spacing code: | - @assert ctx.letterSpacing === '0px'; - @assert ctx.wordSpacing === '0px'; - var width_normal = ctx.measureText('Hello World').width; - - function test_letter_spacing(value, difference_spacing, epsilon) { - ctx.letterSpacing = value; - @assert ctx.letterSpacing === value; + @assert ctx.letterSpacing === '0px'; @assert ctx.wordSpacing === '0px'; - width_with_letter_spacing = ctx.measureText('Hello World').width; - assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work."); - } - - // The first value is the letter Spacing to be set, the second value the - // change in length of string 'Hello World', note that there are 11 letters - // in 'hello world', so the length difference is always letterSpacing * 11. - // and the third value is the acceptable differencee for the length change, - // note that unit such as 1cm/1mm doesn't map to an exact pixel value. - test_cases = [['3px', 33, 0], - ['5px', 55, 0], - ['-2px', -22, 0], - ['1em', 110, 0], - ['1in', 1056, 0], - ['-0.1cm', -41.65, 0.2], - ['-0.6mm', -24,95, 0.2]] - - for (const test_case of test_cases) { - test_letter_spacing(test_case[0], test_case[1], test_case[2]); - } + var width_normal = ctx.measureText('Hello World').width; + + function test_letter_spacing(value, difference_spacing, epsilon) { + ctx.letterSpacing = value; + @assert ctx.letterSpacing === value; + @assert ctx.wordSpacing === '0px'; + width_with_letter_spacing = ctx.measureText('Hello World').width; + assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work."); + } + + // The first value is the letter Spacing to be set, the second value the + // change in length of string 'Hello World', note that there are 11 letters + // in 'hello world', so the length difference is always letterSpacing * 11. + // and the third value is the acceptable differencee for the length change, + // note that unit such as 1cm/1mm doesn't map to an exact pixel value. + test_cases = [['3px', 33, 0], + ['5px', 55, 0], + ['-2px', -22, 0], + ['1em', 110, 0], + ['1in', 1056, 0], + ['-0.1cm', -41.65, 0.2], + ['-0.6mm', -24,95, 0.2]] + + for (const test_case of test_cases) { + test_letter_spacing(test_case[0], test_case[1], test_case[2]); + } - name: 2d.text.drawing.style.wordSpacing.measure desc: Testing if word spacing is working properly testing: - - 2d.text.drawing.style.spacing + - 2d.text.drawing.style.spacing code: | - @assert ctx.letterSpacing === '0px'; - @assert ctx.wordSpacing === '0px'; - var width_normal = ctx.measureText('Hello World, again').width; - - function test_word_spacing(value, difference_spacing, epsilon) { - ctx.wordSpacing = value; @assert ctx.letterSpacing === '0px'; - @assert ctx.wordSpacing === value; - width_with_word_spacing = ctx.measureText('Hello World, again').width; - assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work."); - } - - // The first value is the word Spacing to be set, the second value the - // change in length of string 'Hello World', note that there are 2 words - // in 'Hello World, again', so the length difference is always wordSpacing * 2. - // and the third value is the acceptable differencee for the length change, - // note that unit such as 1cm/1mm doesn't map to an exact pixel value. - test_cases = [['3px', 6, 0], - ['5px', 10, 0], - ['-2px', -4, 0], - ['1em', 20, 0], - ['1in', 192, 0], - ['-0.1cm', -7.57, 0.2], - ['-0.6mm', -4.54, 0.2]] - - for (const test_case of test_cases) { - test_word_spacing(test_case[0], test_case[1], test_case[2]); - } + @assert ctx.wordSpacing === '0px'; + var width_normal = ctx.measureText('Hello World, again').width; + + function test_word_spacing(value, difference_spacing, epsilon) { + ctx.wordSpacing = value; + @assert ctx.letterSpacing === '0px'; + @assert ctx.wordSpacing === value; + width_with_word_spacing = ctx.measureText('Hello World, again').width; + assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work."); + } + + // The first value is the word Spacing to be set, the second value the + // change in length of string 'Hello World', note that there are 2 words + // in 'Hello World, again', so the length difference is always wordSpacing * 2. + // and the third value is the acceptable differencee for the length change, + // note that unit such as 1cm/1mm doesn't map to an exact pixel value. + test_cases = [['3px', 6, 0], + ['5px', 10, 0], + ['-2px', -4, 0], + ['1em', 20, 0], + ['1in', 192, 0], + ['-0.1cm', -7.57, 0.2], + ['-0.6mm', -4.54, 0.2]] + + for (const test_case of test_cases) { + test_word_spacing(test_case[0], test_case[1], test_case[2]); + } - name: 2d.text.drawing.style.letterSpacing.change.font desc: Set letter spacing and word spacing to font dependent value and verify it works after font change. testing: - - 2d.text.drawing.style.spacing + - 2d.text.drawing.style.spacing code: | - @assert ctx.letterSpacing === '0px'; - @assert ctx.wordSpacing === '0px'; - // Get the width for 'Hello World' at default size, 10px. - var width_normal = ctx.measureText('Hello World').width; - - ctx.letterSpacing = '1em'; - @assert ctx.letterSpacing === '1em'; - // 1em = 10px. Add 10px after each letter in "Hello World", - // makes it 110px longer. - var width_with_spacing = ctx.measureText('Hello World').width; - @assert width_with_spacing === width_normal + 110; - - // Changing font to 20px. Without resetting the spacing, 1em letterSpacing - // is now 20px, so it's suppose to be 220px longer without any letterSpacing set. - ctx.font = '20px serif'; - width_with_spacing = ctx.measureText('Hello World').width; - // Now calculate the reference spacing for "Hello World" with no spacing. - ctx.letterSpacing = '0em'; - width_normal = ctx.measureText('Hello World').width; - @assert width_with_spacing === width_normal + 220; + @assert ctx.letterSpacing === '0px'; + @assert ctx.wordSpacing === '0px'; + // Get the width for 'Hello World' at default size, 10px. + var width_normal = ctx.measureText('Hello World').width; + + ctx.letterSpacing = '1em'; + @assert ctx.letterSpacing === '1em'; + // 1em = 10px. Add 10px after each letter in "Hello World", + // makes it 110px longer. + var width_with_spacing = ctx.measureText('Hello World').width; + @assert width_with_spacing === width_normal + 110; + + // Changing font to 20px. Without resetting the spacing, 1em letterSpacing + // is now 20px, so it's suppose to be 220px longer without any letterSpacing set. + ctx.font = '20px serif'; + width_with_spacing = ctx.measureText('Hello World').width; + // Now calculate the reference spacing for "Hello World" with no spacing. + ctx.letterSpacing = '0em'; + width_normal = ctx.measureText('Hello World').width; + @assert width_with_spacing === width_normal + 220; - name: 2d.text.drawing.style.wordSpacing.change.font desc: Set word spacing and word spacing to font dependent value and verify it works after font change. testing: - - 2d.text.drawing.style.spacing + - 2d.text.drawing.style.spacing code: | - @assert ctx.letterSpacing === '0px'; - @assert ctx.wordSpacing === '0px'; - // Get the width for 'Hello World, again' at default size, 10px. - var width_normal = ctx.measureText('Hello World, again').width; - - ctx.wordSpacing = '1em'; - @assert ctx.wordSpacing === '1em'; - // 1em = 10px. Add 10px after each word in "Hello World, again", - // makes it 20px longer. - var width_with_spacing = ctx.measureText('Hello World, again').width; - @assert width_with_spacing === width_normal + 20; - - // Changing font to 20px. Without resetting the spacing, 1em wordSpacing - // is now 20px, so it's suppose to be 40px longer without any wordSpacing set. - ctx.font = '20px serif'; - width_with_spacing = ctx.measureText('Hello World, again').width; - // Now calculate the reference spacing for "Hello World, again" with no spacing. - ctx.wordSpacing = '0em'; - width_normal = ctx.measureText('Hello World, again').width; - @assert width_with_spacing === width_normal + 40; + @assert ctx.letterSpacing === '0px'; + @assert ctx.wordSpacing === '0px'; + // Get the width for 'Hello World, again' at default size, 10px. + var width_normal = ctx.measureText('Hello World, again').width; + + ctx.wordSpacing = '1em'; + @assert ctx.wordSpacing === '1em'; + // 1em = 10px. Add 10px after each word in "Hello World, again", + // makes it 20px longer. + var width_with_spacing = ctx.measureText('Hello World, again').width; + @assert width_with_spacing === width_normal + 20; + + // Changing font to 20px. Without resetting the spacing, 1em wordSpacing + // is now 20px, so it's suppose to be 40px longer without any wordSpacing set. + ctx.font = '20px serif'; + width_with_spacing = ctx.measureText('Hello World, again').width; + // Now calculate the reference spacing for "Hello World, again" with no spacing. + ctx.wordSpacing = '0em'; + width_normal = ctx.measureText('Hello World, again').width; + @assert width_with_spacing === width_normal + 40; - name: 2d.text.drawing.style.fontKerning desc: Testing basic functionalities of fontKerning for canvas testing: - - 2d.text.drawing.style.fontKerning + - 2d.text.drawing.style.fontKerning code: | - @assert ctx.fontKerning === "auto"; - ctx.fontKerning = "normal"; - @assert ctx.fontKerning === "normal"; - width_normal = ctx.measureText("TAWATAVA").width; - ctx.fontKerning = "none"; - @assert ctx.fontKerning === "none"; - width_none = ctx.measureText("TAWATAVA").width; - @assert width_normal < width_none; + @assert ctx.fontKerning === "auto"; + ctx.fontKerning = "normal"; + @assert ctx.fontKerning === "normal"; + width_normal = ctx.measureText("TAWATAVA").width; + ctx.fontKerning = "none"; + @assert ctx.fontKerning === "none"; + width_none = ctx.measureText("TAWATAVA").width; + @assert width_normal < width_none; - name: 2d.text.drawing.style.fontKerning.with.uppercase desc: Testing basic functionalities of fontKerning for canvas testing: - - 2d.text.drawing.style.fontKerning + - 2d.text.drawing.style.fontKerning code: | - @assert ctx.fontKerning === "auto"; - ctx.fontKerning = "Normal"; - @assert ctx.fontKerning === "normal"; - ctx.fontKerning = "Auto"; - ctx.fontKerning = "normal"; - @assert ctx.fontKerning === "normal"; - ctx.fontKerning = "Auto"; - ctx.fontKerning = "noRmal"; - @assert ctx.fontKerning === "normal"; - ctx.fontKerning = "Auto"; - ctx.fontKerning = "NoRMal"; - @assert ctx.fontKerning === "normal"; - ctx.fontKerning = "Auto"; - ctx.fontKerning = "NORMAL"; - @assert ctx.fontKerning === "normal"; - - ctx.fontKerning = "None"; - @assert ctx.fontKerning === "none"; - ctx.fontKerning = "Auto"; - ctx.fontKerning = "none"; - @assert ctx.fontKerning === "none"; - ctx.fontKerning = "Auto"; - ctx.fontKerning = "nOne"; - @assert ctx.fontKerning === "none"; - ctx.fontKerning = "Auto"; - ctx.fontKerning = "nonE"; - @assert ctx.fontKerning === "none"; - ctx.fontKerning = "Auto"; - ctx.fontKerning = "NONE"; - @assert ctx.fontKerning === "none"; + @assert ctx.fontKerning === "auto"; + ctx.fontKerning = "Normal"; + @assert ctx.fontKerning === "normal"; + ctx.fontKerning = "Auto"; + ctx.fontKerning = "normal"; + @assert ctx.fontKerning === "normal"; + ctx.fontKerning = "Auto"; + ctx.fontKerning = "noRmal"; + @assert ctx.fontKerning === "normal"; + ctx.fontKerning = "Auto"; + ctx.fontKerning = "NoRMal"; + @assert ctx.fontKerning === "normal"; + ctx.fontKerning = "Auto"; + ctx.fontKerning = "NORMAL"; + @assert ctx.fontKerning === "normal"; + + ctx.fontKerning = "None"; + @assert ctx.fontKerning === "none"; + ctx.fontKerning = "Auto"; + ctx.fontKerning = "none"; + @assert ctx.fontKerning === "none"; + ctx.fontKerning = "Auto"; + ctx.fontKerning = "nOne"; + @assert ctx.fontKerning === "none"; + ctx.fontKerning = "Auto"; + ctx.fontKerning = "nonE"; + @assert ctx.fontKerning === "none"; + ctx.fontKerning = "Auto"; + ctx.fontKerning = "NONE"; + @assert ctx.fontKerning === "none"; - name: 2d.text.drawing.style.fontVariant.settings desc: Testing basic functionalities of fontKerning for canvas testing: - - 2d.text.drawing.style.fontVariantCaps + - 2d.text.drawing.style.fontVariantCaps code: | - // Setting fontVariantCaps with lower cases - @assert ctx.fontVariantCaps === "normal"; + // Setting fontVariantCaps with lower cases + @assert ctx.fontVariantCaps === "normal"; - ctx.fontVariantCaps = "normal"; - @assert ctx.fontVariantCaps === "normal"; + ctx.fontVariantCaps = "normal"; + @assert ctx.fontVariantCaps === "normal"; - ctx.fontVariantCaps = "small-caps"; - @assert ctx.fontVariantCaps === "small-caps"; + ctx.fontVariantCaps = "small-caps"; + @assert ctx.fontVariantCaps === "small-caps"; - ctx.fontVariantCaps = "all-small-caps"; - @assert ctx.fontVariantCaps === "all-small-caps"; + ctx.fontVariantCaps = "all-small-caps"; + @assert ctx.fontVariantCaps === "all-small-caps"; - ctx.fontVariantCaps = "petite-caps"; - @assert ctx.fontVariantCaps === "petite-caps"; + ctx.fontVariantCaps = "petite-caps"; + @assert ctx.fontVariantCaps === "petite-caps"; - ctx.fontVariantCaps = "all-petite-caps"; - @assert ctx.fontVariantCaps === "all-petite-caps"; + ctx.fontVariantCaps = "all-petite-caps"; + @assert ctx.fontVariantCaps === "all-petite-caps"; - ctx.fontVariantCaps = "unicase"; - @assert ctx.fontVariantCaps === "unicase"; + ctx.fontVariantCaps = "unicase"; + @assert ctx.fontVariantCaps === "unicase"; - ctx.fontVariantCaps = "titling-caps"; - @assert ctx.fontVariantCaps === "titling-caps"; + ctx.fontVariantCaps = "titling-caps"; + @assert ctx.fontVariantCaps === "titling-caps"; - // Setting fontVariantCaps with lower cases and upper cases word. - ctx.fontVariantCaps = "nORmal"; - @assert ctx.fontVariantCaps === "normal"; + // Setting fontVariantCaps with lower cases and upper cases word. + ctx.fontVariantCaps = "nORmal"; + @assert ctx.fontVariantCaps === "normal"; - ctx.fontVariantCaps = "smaLL-caps"; - @assert ctx.fontVariantCaps === "small-caps"; + ctx.fontVariantCaps = "smaLL-caps"; + @assert ctx.fontVariantCaps === "small-caps"; - ctx.fontVariantCaps = "all-small-CAPS"; - @assert ctx.fontVariantCaps === "all-small-caps"; + ctx.fontVariantCaps = "all-small-CAPS"; + @assert ctx.fontVariantCaps === "all-small-caps"; - ctx.fontVariantCaps = "pEtitE-caps"; - @assert ctx.fontVariantCaps === "petite-caps"; + ctx.fontVariantCaps = "pEtitE-caps"; + @assert ctx.fontVariantCaps === "petite-caps"; - ctx.fontVariantCaps = "All-Petite-Caps"; - @assert ctx.fontVariantCaps === "all-petite-caps"; + ctx.fontVariantCaps = "All-Petite-Caps"; + @assert ctx.fontVariantCaps === "all-petite-caps"; - ctx.fontVariantCaps = "uNIcase"; - @assert ctx.fontVariantCaps === "unicase"; + ctx.fontVariantCaps = "uNIcase"; + @assert ctx.fontVariantCaps === "unicase"; - ctx.fontVariantCaps = "titling-CAPS"; - @assert ctx.fontVariantCaps === "titling-caps"; + ctx.fontVariantCaps = "titling-CAPS"; + @assert ctx.fontVariantCaps === "titling-caps"; - // Setting fontVariantCaps with non-existing font variant. - ctx.fontVariantCaps = "abcd"; - @assert ctx.fontVariantCaps === "titling-caps"; + // Setting fontVariantCaps with non-existing font variant. + ctx.fontVariantCaps = "abcd"; + @assert ctx.fontVariantCaps === "titling-caps"; - name: 2d.text.drawing.style.textRendering.settings desc: Testing basic functionalities of textRendering in Canvas testing: - - 2d.text.drawing.style.textRendering + - 2d.text.drawing.style.textRendering code: | - // Setting textRendering with lower cases - @assert ctx.textRendering === "auto"; + // Setting textRendering with lower cases + @assert ctx.textRendering === "auto"; - ctx.textRendering = "auto"; - @assert ctx.textRendering === "auto"; + ctx.textRendering = "auto"; + @assert ctx.textRendering === "auto"; - ctx.textRendering = "optimizespeed"; - @assert ctx.textRendering === "optimizeSpeed"; + ctx.textRendering = "optimizespeed"; + @assert ctx.textRendering === "optimizeSpeed"; - ctx.textRendering = "optimizelegibility"; - @assert ctx.textRendering === "optimizeLegibility"; + ctx.textRendering = "optimizelegibility"; + @assert ctx.textRendering === "optimizeLegibility"; - ctx.textRendering = "geometricprecision"; - @assert ctx.textRendering === "geometricPrecision"; + ctx.textRendering = "geometricprecision"; + @assert ctx.textRendering === "geometricPrecision"; - // Setting textRendering with lower cases and upper cases word. - ctx.textRendering = "aUto"; - @assert ctx.textRendering === "auto"; + // Setting textRendering with lower cases and upper cases word. + ctx.textRendering = "aUto"; + @assert ctx.textRendering === "auto"; - ctx.textRendering = "OPtimizeSpeed"; - @assert ctx.textRendering === "optimizeSpeed"; + ctx.textRendering = "OPtimizeSpeed"; + @assert ctx.textRendering === "optimizeSpeed"; - ctx.textRendering = "OPtimizELEgibility"; - @assert ctx.textRendering === "optimizeLegibility"; + ctx.textRendering = "OPtimizELEgibility"; + @assert ctx.textRendering === "optimizeLegibility"; - ctx.textRendering = "GeometricPrecision"; - @assert ctx.textRendering === "geometricPrecision"; + ctx.textRendering = "GeometricPrecision"; + @assert ctx.textRendering === "geometricPrecision"; - // Setting textRendering with non-existing font variant. - ctx.textRendering = "abcd"; - @assert ctx.textRendering === "geometricPrecision"; + // Setting textRendering with non-existing font variant. + ctx.textRendering = "abcd"; + @assert ctx.textRendering === "geometricPrecision"; -# TODO: shadows, alpha, composite, clip \ No newline at end of file +# TODO: shadows, alpha, composite, clip diff --git a/test/wpt/fill-and-stroke-styles.yaml b/test/wpt/fill-and-stroke-styles.yaml index 88a36119d..b85256447 100644 --- a/test/wpt/fill-and-stroke-styles.yaml +++ b/test/wpt/fill-and-stroke-styles.yaml @@ -1,2244 +1,2244 @@ - name: 2d.fillStyle.parse.current.basic desc: currentColor is computed from the canvas element testing: - - 2d.colors.parse - - 2d.currentColor.onset + - 2d.colors.parse + - 2d.currentColor.onset code: | - canvas.setAttribute('style', 'color: #0f0'); - ctx.fillStyle = '#f00'; - ctx.fillStyle = 'currentColor'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + canvas.setAttribute('style', 'color: #0f0'); + ctx.fillStyle = '#f00'; + ctx.fillStyle = 'currentColor'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.fillStyle.parse.current.changed desc: currentColor is computed when the attribute is set, not when it is painted testing: - - 2d.colors.parse - - 2d.currentColor.onset + - 2d.colors.parse + - 2d.currentColor.onset code: | - canvas.setAttribute('style', 'color: #0f0'); - ctx.fillStyle = '#f00'; - ctx.fillStyle = 'currentColor'; - canvas.setAttribute('style', 'color: #f00'); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + canvas.setAttribute('style', 'color: #0f0'); + ctx.fillStyle = '#f00'; + ctx.fillStyle = 'currentColor'; + canvas.setAttribute('style', 'color: #f00'); + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.fillStyle.parse.current.removed desc: currentColor is solid black when the canvas element is not in a document testing: - - 2d.colors.parse - - 2d.currentColor.outofdoc + - 2d.colors.parse + - 2d.currentColor.outofdoc code: | - // Try not to let it undetectably incorrectly pick up opaque-black - // from other parts of the document: - document.body.parentNode.setAttribute('style', 'color: #f00'); - document.body.setAttribute('style', 'color: #f00'); - canvas.setAttribute('style', 'color: #f00'); + // Try not to let it undetectably incorrectly pick up opaque-black + // from other parts of the document: + document.body.parentNode.setAttribute('style', 'color: #f00'); + document.body.setAttribute('style', 'color: #f00'); + canvas.setAttribute('style', 'color: #f00'); - var canvas2 = document.createElement('canvas'); - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = '#f00'; - ctx2.fillStyle = 'currentColor'; - ctx2.fillRect(0, 0, 100, 50); - ctx.drawImage(canvas2, 0, 0); + var canvas2 = document.createElement('canvas'); + var ctx2 = canvas2.getContext('2d'); + ctx2.fillStyle = '#f00'; + ctx2.fillStyle = 'currentColor'; + ctx2.fillRect(0, 0, 100, 50); + ctx.drawImage(canvas2, 0, 0); - document.body.parentNode.removeAttribute('style'); - document.body.removeAttribute('style'); + document.body.parentNode.removeAttribute('style'); + document.body.removeAttribute('style'); - @assert pixel 50,25 == 0,0,0,255; + @assert pixel 50,25 == 0,0,0,255; expected: | - size 100 50 - cr.set_source_rgb(0, 0, 0) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + cr.set_source_rgb(0, 0, 0) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.fillStyle.invalidstring testing: - - 2d.colors.invalidstring + - 2d.colors.invalidstring code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillStyle = 'invalid'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillStyle = 'invalid'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.fillStyle.invalidtype testing: - - 2d.colors.invalidtype + - 2d.colors.invalidtype code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillStyle = null; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillStyle = null; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.fillStyle.get.solid testing: - - 2d.colors.getcolor - - 2d.serializecolor.solid + - 2d.colors.getcolor + - 2d.serializecolor.solid code: | - ctx.fillStyle = '#fa0'; - @assert ctx.fillStyle === '#ffaa00'; + ctx.fillStyle = '#fa0'; + @assert ctx.fillStyle === '#ffaa00'; - name: 2d.fillStyle.get.semitransparent testing: - - 2d.colors.getcolor - - 2d.serializecolor.transparent + - 2d.colors.getcolor + - 2d.serializecolor.transparent code: | - ctx.fillStyle = 'rgba(255,255,255,0.45)'; - @assert ctx.fillStyle =~ /^rgba\(255, 255, 255, 0\.4\d+\)$/; + ctx.fillStyle = 'rgba(255,255,255,0.45)'; + @assert ctx.fillStyle =~ /^rgba\(255, 255, 255, 0\.4\d+\)$/; - name: 2d.fillStyle.get.halftransparent testing: - - 2d.colors.getcolor - - 2d.serializecolor.transparent + - 2d.colors.getcolor + - 2d.serializecolor.transparent code: | - ctx.fillStyle = 'rgba(255,255,255,0.5)'; - @assert ctx.fillStyle === 'rgba(255, 255, 255, 0.5)'; + ctx.fillStyle = 'rgba(255,255,255,0.5)'; + @assert ctx.fillStyle === 'rgba(255, 255, 255, 0.5)'; - name: 2d.fillStyle.get.transparent testing: - - 2d.colors.getcolor - - 2d.serializecolor.transparent + - 2d.colors.getcolor + - 2d.serializecolor.transparent code: | - ctx.fillStyle = 'rgba(0,0,0,0)'; - @assert ctx.fillStyle === 'rgba(0, 0, 0, 0)'; + ctx.fillStyle = 'rgba(0,0,0,0)'; + @assert ctx.fillStyle === 'rgba(0, 0, 0, 0)'; - name: 2d.fillStyle.default testing: - - 2d.colors.default + - 2d.colors.default code: | - @assert ctx.fillStyle === '#000000'; + @assert ctx.fillStyle === '#000000'; - name: 2d.fillStyle.toStringFunctionCallback desc: Passing a function in to ctx.fillStyle or ctx.strokeStyle with a toString callback works as specified - testing: - 2d.colors.toStringFunctionCallback - code: | - ctx.fillStyle = { toString: function() { return "#008000"; } }; - @assert ctx.fillStyle === "#008000"; - ctx.fillStyle = {}; - @assert ctx.fillStyle === "#008000"; - ctx.fillStyle = 800000; - @assert ctx.fillStyle === "#008000"; - @assert throws TypeError ctx.fillStyle = { toString: function() { throw new TypeError; } }; - ctx.strokeStyle = { toString: function() { return "#008000"; } }; - @assert ctx.strokeStyle === "#008000"; - ctx.strokeStyle = {}; - @assert ctx.strokeStyle === "#008000"; - ctx.strokeStyle = 800000; - @assert ctx.strokeStyle === "#008000"; - @assert throws TypeError ctx.strokeStyle = { toString: function() { throw new TypeError; } }; + testing: 2d.colors.toStringFunctionCallback + code: | + ctx.fillStyle = { toString: function() { return "#008000"; } }; + @assert ctx.fillStyle === "#008000"; + ctx.fillStyle = {}; + @assert ctx.fillStyle === "#008000"; + ctx.fillStyle = 800000; + @assert ctx.fillStyle === "#008000"; + @assert throws TypeError ctx.fillStyle = { toString: function() { throw new TypeError; } }; + ctx.strokeStyle = { toString: function() { return "#008000"; } }; + @assert ctx.strokeStyle === "#008000"; + ctx.strokeStyle = {}; + @assert ctx.strokeStyle === "#008000"; + ctx.strokeStyle = 800000; + @assert ctx.strokeStyle === "#008000"; + @assert throws TypeError ctx.strokeStyle = { toString: function() { throw new TypeError; } }; - name: 2d.strokeStyle.default testing: - - 2d.colors.default + - 2d.colors.default code: | - @assert ctx.strokeStyle === '#000000'; - + @assert ctx.strokeStyle === '#000000'; - name: 2d.gradient.object.type desc: window.CanvasGradient exists and has the right properties testing: - - 2d.canvasGradient.type + - 2d.canvasGradient.type notes: &bindings Defined in "Web IDL" (draft) code: | - @assert window.CanvasGradient !== undefined; - @assert window.CanvasGradient.prototype.addColorStop !== undefined; + @assert window.CanvasGradient !== undefined; + @assert window.CanvasGradient.prototype.addColorStop !== undefined; - name: 2d.gradient.object.return - desc: createLinearGradient() and createRadialGradient() returns objects implementing - CanvasGradient + desc: + createLinearGradient() and createRadialGradient() returns objects implementing + CanvasGradient testing: - - 2d.gradient.linear.return - - 2d.gradient.radial.return + - 2d.gradient.linear.return + - 2d.gradient.radial.return code: | - window.CanvasGradient.prototype.thisImplementsCanvasGradient = true; + window.CanvasGradient.prototype.thisImplementsCanvasGradient = true; - var g1 = ctx.createLinearGradient(0, 0, 100, 0); - @assert g1.addColorStop !== undefined; - @assert g1.thisImplementsCanvasGradient === true; + var g1 = ctx.createLinearGradient(0, 0, 100, 0); + @assert g1.addColorStop !== undefined; + @assert g1.thisImplementsCanvasGradient === true; - var g2 = ctx.createRadialGradient(0, 0, 10, 0, 0, 20); - @assert g2.addColorStop !== undefined; - @assert g2.thisImplementsCanvasGradient === true; + var g2 = ctx.createRadialGradient(0, 0, 10, 0, 0, 20); + @assert g2.addColorStop !== undefined; + @assert g2.thisImplementsCanvasGradient === true; - name: 2d.gradient.interpolate.solid testing: - - 2d.gradient.interpolate.linear + - 2d.gradient.interpolate.linear code: | - var g = ctx.createLinearGradient(0, 0, 100, 0); - g.addColorStop(0, '#0f0'); - g.addColorStop(1, '#0f0'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + var g = ctx.createLinearGradient(0, 0, 100, 0); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.gradient.interpolate.color testing: - - 2d.gradient.interpolate.linear + - 2d.gradient.interpolate.linear code: | - var g = ctx.createLinearGradient(0, 0, 100, 0); - g.addColorStop(0, '#ff0'); - g.addColorStop(1, '#00f'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 25,25 ==~ 191,191,63,255 +/- 3; - @assert pixel 50,25 ==~ 127,127,127,255 +/- 3; - @assert pixel 75,25 ==~ 63,63,191,255 +/- 3; + var g = ctx.createLinearGradient(0, 0, 100, 0); + g.addColorStop(0, '#ff0'); + g.addColorStop(1, '#00f'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 25,25 ==~ 191,191,63,255 +/- 3; + @assert pixel 50,25 ==~ 127,127,127,255 +/- 3; + @assert pixel 75,25 ==~ 63,63,191,255 +/- 3; expected: | - size 100 50 - g = cairo.LinearGradient(0, 0, 100, 0) - g.add_color_stop_rgb(0, 1,1,0) - g.add_color_stop_rgb(1, 0,0,1) - cr.set_source(g) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + g = cairo.LinearGradient(0, 0, 100, 0) + g.add_color_stop_rgb(0, 1,1,0) + g.add_color_stop_rgb(1, 0,0,1) + cr.set_source(g) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.gradient.interpolate.alpha testing: - - 2d.gradient.interpolate.linear - code: | - ctx.fillStyle = '#ff0'; - ctx.fillRect(0, 0, 100, 50); - var g = ctx.createLinearGradient(0, 0, 100, 0); - g.addColorStop(0, 'rgba(0,0,255, 0)'); - g.addColorStop(1, 'rgba(0,0,255, 1)'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 25,25 ==~ 191,191,63,255 +/- 3; - @assert pixel 50,25 ==~ 127,127,127,255 +/- 3; - @assert pixel 75,25 ==~ 63,63,191,255 +/- 3; + - 2d.gradient.interpolate.linear + code: | + ctx.fillStyle = '#ff0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createLinearGradient(0, 0, 100, 0); + g.addColorStop(0, 'rgba(0,0,255, 0)'); + g.addColorStop(1, 'rgba(0,0,255, 1)'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 25,25 ==~ 191,191,63,255 +/- 3; + @assert pixel 50,25 ==~ 127,127,127,255 +/- 3; + @assert pixel 75,25 ==~ 63,63,191,255 +/- 3; expected: | - size 100 50 - g = cairo.LinearGradient(0, 0, 100, 0) - g.add_color_stop_rgb(0, 1,1,0) - g.add_color_stop_rgb(1, 0,0,1) - cr.set_source(g) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + g = cairo.LinearGradient(0, 0, 100, 0) + g.add_color_stop_rgb(0, 1,1,0) + g.add_color_stop_rgb(1, 0,0,1) + cr.set_source(g) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.gradient.interpolate.coloralpha testing: - - 2d.gradient.interpolate.alpha + - 2d.gradient.interpolate.alpha code: | - var g = ctx.createLinearGradient(0, 0, 100, 0); - g.addColorStop(0, 'rgba(255,255,0, 0)'); - g.addColorStop(1, 'rgba(0,0,255, 1)'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 25,25 ==~ 190,190,65,65 +/- 3; - @assert pixel 50,25 ==~ 126,126,128,128 +/- 3; - @assert pixel 75,25 ==~ 62,62,192,192 +/- 3; + var g = ctx.createLinearGradient(0, 0, 100, 0); + g.addColorStop(0, 'rgba(255,255,0, 0)'); + g.addColorStop(1, 'rgba(0,0,255, 1)'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 25,25 ==~ 190,190,65,65 +/- 3; + @assert pixel 50,25 ==~ 126,126,128,128 +/- 3; + @assert pixel 75,25 ==~ 62,62,192,192 +/- 3; expected: | - size 100 50 - g = cairo.LinearGradient(0, 0, 100, 0) - g.add_color_stop_rgba(0, 1,1,0, 0) - g.add_color_stop_rgba(1, 0,0,1, 1) - cr.set_source(g) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + g = cairo.LinearGradient(0, 0, 100, 0) + g.add_color_stop_rgba(0, 1,1,0, 0) + g.add_color_stop_rgba(1, 0,0,1, 1) + cr.set_source(g) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.gradient.interpolate.outside testing: - - 2d.gradient.outside.first - - 2d.gradient.outside.last + - 2d.gradient.outside.first + - 2d.gradient.outside.last code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createLinearGradient(25, 0, 75, 0); - g.addColorStop(0.4, '#0f0'); - g.addColorStop(0.6, '#0f0'); + var g = ctx.createLinearGradient(25, 0, 75, 0); + g.addColorStop(0.4, '#0f0'); + g.addColorStop(0.6, '#0f0'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 20,25 ==~ 0,255,0,255; - @assert pixel 50,25 ==~ 0,255,0,255; - @assert pixel 80,25 ==~ 0,255,0,255; + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 20,25 ==~ 0,255,0,255; + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 80,25 ==~ 0,255,0,255; expected: green - name: 2d.gradient.interpolate.zerosize.fill testing: - - 2d.gradient.linear.zerosize + - 2d.gradient.linear.zerosize code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.rect(0, 0, 100, 50); - ctx.fill(); - @assert pixel 40,20 == 0,255,0,255; + var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.rect(0, 0, 100, 50); + ctx.fill(); + @assert pixel 40,20 == 0,255,0,255; expected: green - name: 2d.gradient.interpolate.zerosize.stroke testing: - - 2d.gradient.linear.zerosize + - 2d.gradient.linear.zerosize code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#f00'); - ctx.strokeStyle = g; - ctx.rect(20, 20, 60, 10); - ctx.stroke(); - @assert pixel 19,19 == 0,255,0,255; - @assert pixel 20,19 == 0,255,0,255; - @assert pixel 21,19 == 0,255,0,255; - @assert pixel 19,20 == 0,255,0,255; - @assert pixel 20,20 == 0,255,0,255; - @assert pixel 21,20 == 0,255,0,255; - @assert pixel 19,21 == 0,255,0,255; - @assert pixel 20,21 == 0,255,0,255; - @assert pixel 21,21 == 0,255,0,255; + var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.strokeStyle = g; + ctx.rect(20, 20, 60, 10); + ctx.stroke(); + @assert pixel 19,19 == 0,255,0,255; + @assert pixel 20,19 == 0,255,0,255; + @assert pixel 21,19 == 0,255,0,255; + @assert pixel 19,20 == 0,255,0,255; + @assert pixel 20,20 == 0,255,0,255; + @assert pixel 21,20 == 0,255,0,255; + @assert pixel 19,21 == 0,255,0,255; + @assert pixel 20,21 == 0,255,0,255; + @assert pixel 21,21 == 0,255,0,255; expected: green - name: 2d.gradient.interpolate.zerosize.fillRect testing: - - 2d.gradient.linear.zerosize + - 2d.gradient.linear.zerosize code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 40,20 == 0,255,0,255; @moz-todo + var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 40,20 == 0,255,0,255; @moz-todo expected: green - name: 2d.gradient.interpolate.zerosize.strokeRect testing: - - 2d.gradient.linear.zerosize + - 2d.gradient.linear.zerosize code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#f00'); - ctx.strokeStyle = g; - ctx.strokeRect(20, 20, 60, 10); - @assert pixel 19,19 == 0,255,0,255; - @assert pixel 20,19 == 0,255,0,255; - @assert pixel 21,19 == 0,255,0,255; - @assert pixel 19,20 == 0,255,0,255; - @assert pixel 20,20 == 0,255,0,255; - @assert pixel 21,20 == 0,255,0,255; - @assert pixel 19,21 == 0,255,0,255; - @assert pixel 20,21 == 0,255,0,255; - @assert pixel 21,21 == 0,255,0,255; + var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.strokeStyle = g; + ctx.strokeRect(20, 20, 60, 10); + @assert pixel 19,19 == 0,255,0,255; + @assert pixel 20,19 == 0,255,0,255; + @assert pixel 21,19 == 0,255,0,255; + @assert pixel 19,20 == 0,255,0,255; + @assert pixel 20,20 == 0,255,0,255; + @assert pixel 21,20 == 0,255,0,255; + @assert pixel 19,21 == 0,255,0,255; + @assert pixel 20,21 == 0,255,0,255; + @assert pixel 21,21 == 0,255,0,255; expected: green - name: 2d.gradient.interpolate.zerosize.fillText testing: - - 2d.gradient.linear.zerosize + - 2d.gradient.linear.zerosize code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.font = '100px sans-serif'; - ctx.fillText("AA", 0, 50); - _assertGreen(ctx, 100, 50); + var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.font = '100px sans-serif'; + ctx.fillText("AA", 0, 50); + _assertGreen(ctx, 100, 50); expected: green - name: 2d.gradient.interpolate.zerosize.strokeText testing: - - 2d.gradient.linear.zerosize + - 2d.gradient.linear.zerosize code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#f00'); - ctx.strokeStyle = g; - ctx.font = '100px sans-serif'; - ctx.strokeText("AA", 0, 50); - _assertGreen(ctx, 100, 50); + var g = ctx.createLinearGradient(50, 25, 50, 25); // zero-length line (undefined direction) + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.strokeStyle = g; + ctx.font = '100px sans-serif'; + ctx.strokeText("AA", 0, 50); + _assertGreen(ctx, 100, 50); expected: green - - name: 2d.gradient.interpolate.vertical testing: - - 2d.gradient.interpolate.linear + - 2d.gradient.interpolate.linear code: | - var g = ctx.createLinearGradient(0, 0, 0, 50); - g.addColorStop(0, '#ff0'); - g.addColorStop(1, '#00f'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,12 ==~ 191,191,63,255 +/- 10; - @assert pixel 50,25 ==~ 127,127,127,255 +/- 5; - @assert pixel 50,37 ==~ 63,63,191,255 +/- 10; + var g = ctx.createLinearGradient(0, 0, 0, 50); + g.addColorStop(0, '#ff0'); + g.addColorStop(1, '#00f'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,12 ==~ 191,191,63,255 +/- 10; + @assert pixel 50,25 ==~ 127,127,127,255 +/- 5; + @assert pixel 50,37 ==~ 63,63,191,255 +/- 10; expected: | - size 100 50 - g = cairo.LinearGradient(0, 0, 0, 50) - g.add_color_stop_rgb(0, 1,1,0) - g.add_color_stop_rgb(1, 0,0,1) - cr.set_source(g) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + g = cairo.LinearGradient(0, 0, 0, 50) + g.add_color_stop_rgb(0, 1,1,0) + g.add_color_stop_rgb(1, 0,0,1) + cr.set_source(g) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.gradient.interpolate.multiple testing: - - 2d.gradient.interpolate.linear - code: | - canvas.width = 200; - var g = ctx.createLinearGradient(0, 0, 200, 0); - g.addColorStop(0, '#ff0'); - g.addColorStop(0.5, '#0ff'); - g.addColorStop(1, '#f0f'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 200, 50); - @assert pixel 50,25 ==~ 127,255,127,255 +/- 3; - @assert pixel 100,25 ==~ 0,255,255,255 +/- 3; - @assert pixel 150,25 ==~ 127,127,255,255 +/- 3; + - 2d.gradient.interpolate.linear + code: | + canvas.width = 200; + var g = ctx.createLinearGradient(0, 0, 200, 0); + g.addColorStop(0, '#ff0'); + g.addColorStop(0.5, '#0ff'); + g.addColorStop(1, '#f0f'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 200, 50); + @assert pixel 50,25 ==~ 127,255,127,255 +/- 3; + @assert pixel 100,25 ==~ 0,255,255,255 +/- 3; + @assert pixel 150,25 ==~ 127,127,255,255 +/- 3; expected: | - size 200 50 - g = cairo.LinearGradient(0, 0, 200, 0) - g.add_color_stop_rgb(0.0, 1,1,0) - g.add_color_stop_rgb(0.5, 0,1,1) - g.add_color_stop_rgb(1.0, 1,0,1) - cr.set_source(g) - cr.rectangle(0, 0, 200, 50) - cr.fill() + size 200 50 + g = cairo.LinearGradient(0, 0, 200, 0) + g.add_color_stop_rgb(0.0, 1,1,0) + g.add_color_stop_rgb(0.5, 0,1,1) + g.add_color_stop_rgb(1.0, 1,0,1) + cr.set_source(g) + cr.rectangle(0, 0, 200, 50) + cr.fill() - name: 2d.gradient.interpolate.overlap testing: - - 2d.gradient.interpolate.overlap - code: | - canvas.width = 200; - var g = ctx.createLinearGradient(0, 0, 200, 0); - g.addColorStop(0, '#f00'); - g.addColorStop(0, '#ff0'); - g.addColorStop(0.25, '#00f'); - g.addColorStop(0.25, '#0f0'); - g.addColorStop(0.25, '#0f0'); - g.addColorStop(0.25, '#0f0'); - g.addColorStop(0.25, '#ff0'); - g.addColorStop(0.5, '#00f'); - g.addColorStop(0.5, '#0f0'); - g.addColorStop(0.75, '#00f'); - g.addColorStop(0.75, '#f00'); - g.addColorStop(0.75, '#ff0'); - g.addColorStop(0.5, '#0f0'); - g.addColorStop(0.5, '#0f0'); - g.addColorStop(0.5, '#ff0'); - g.addColorStop(1, '#00f'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 200, 50); - @assert pixel 49,25 ==~ 0,0,255,255 +/- 16; - @assert pixel 51,25 ==~ 255,255,0,255 +/- 16; - @assert pixel 99,25 ==~ 0,0,255,255 +/- 16; - @assert pixel 101,25 ==~ 255,255,0,255 +/- 16; - @assert pixel 149,25 ==~ 0,0,255,255 +/- 16; - @assert pixel 151,25 ==~ 255,255,0,255 +/- 16; + - 2d.gradient.interpolate.overlap + code: | + canvas.width = 200; + var g = ctx.createLinearGradient(0, 0, 200, 0); + g.addColorStop(0, '#f00'); + g.addColorStop(0, '#ff0'); + g.addColorStop(0.25, '#00f'); + g.addColorStop(0.25, '#0f0'); + g.addColorStop(0.25, '#0f0'); + g.addColorStop(0.25, '#0f0'); + g.addColorStop(0.25, '#ff0'); + g.addColorStop(0.5, '#00f'); + g.addColorStop(0.5, '#0f0'); + g.addColorStop(0.75, '#00f'); + g.addColorStop(0.75, '#f00'); + g.addColorStop(0.75, '#ff0'); + g.addColorStop(0.5, '#0f0'); + g.addColorStop(0.5, '#0f0'); + g.addColorStop(0.5, '#ff0'); + g.addColorStop(1, '#00f'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 200, 50); + @assert pixel 49,25 ==~ 0,0,255,255 +/- 16; + @assert pixel 51,25 ==~ 255,255,0,255 +/- 16; + @assert pixel 99,25 ==~ 0,0,255,255 +/- 16; + @assert pixel 101,25 ==~ 255,255,0,255 +/- 16; + @assert pixel 149,25 ==~ 0,0,255,255 +/- 16; + @assert pixel 151,25 ==~ 255,255,0,255 +/- 16; expected: | - size 200 50 - g = cairo.LinearGradient(0, 0, 50, 0) - g.add_color_stop_rgb(0, 1,1,0) - g.add_color_stop_rgb(1, 0,0,1) - cr.set_source(g) - cr.rectangle(0, 0, 50, 50) - cr.fill() - - g = cairo.LinearGradient(50, 0, 100, 0) - g.add_color_stop_rgb(0, 1,1,0) - g.add_color_stop_rgb(1, 0,0,1) - cr.set_source(g) - cr.rectangle(50, 0, 50, 50) - cr.fill() - - g = cairo.LinearGradient(100, 0, 150, 0) - g.add_color_stop_rgb(0, 1,1,0) - g.add_color_stop_rgb(1, 0,0,1) - cr.set_source(g) - cr.rectangle(100, 0, 50, 50) - cr.fill() - - g = cairo.LinearGradient(150, 0, 200, 0) - g.add_color_stop_rgb(0, 1,1,0) - g.add_color_stop_rgb(1, 0,0,1) - cr.set_source(g) - cr.rectangle(150, 0, 50, 50) - cr.fill() + size 200 50 + g = cairo.LinearGradient(0, 0, 50, 0) + g.add_color_stop_rgb(0, 1,1,0) + g.add_color_stop_rgb(1, 0,0,1) + cr.set_source(g) + cr.rectangle(0, 0, 50, 50) + cr.fill() + + g = cairo.LinearGradient(50, 0, 100, 0) + g.add_color_stop_rgb(0, 1,1,0) + g.add_color_stop_rgb(1, 0,0,1) + cr.set_source(g) + cr.rectangle(50, 0, 50, 50) + cr.fill() + + g = cairo.LinearGradient(100, 0, 150, 0) + g.add_color_stop_rgb(0, 1,1,0) + g.add_color_stop_rgb(1, 0,0,1) + cr.set_source(g) + cr.rectangle(100, 0, 50, 50) + cr.fill() + + g = cairo.LinearGradient(150, 0, 200, 0) + g.add_color_stop_rgb(0, 1,1,0) + g.add_color_stop_rgb(1, 0,0,1) + cr.set_source(g) + cr.rectangle(150, 0, 50, 50) + cr.fill() - name: 2d.gradient.interpolate.overlap2 testing: - - 2d.gradient.interpolate.overlap - code: | - var g = ctx.createLinearGradient(0, 0, 100, 0); - var ps = [ 0, 1/10, 1/4, 1/3, 1/2, 3/4, 1 ]; - for (var p = 0; p < ps.length; ++p) - { - g.addColorStop(ps[p], '#0f0'); - for (var i = 0; i < 15; ++i) - g.addColorStop(ps[p], '#f00'); - g.addColorStop(ps[p], '#0f0'); - } - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 30,25 == 0,255,0,255; - @assert pixel 40,25 == 0,255,0,255; - @assert pixel 60,25 == 0,255,0,255; - @assert pixel 80,25 == 0,255,0,255; + - 2d.gradient.interpolate.overlap + code: | + var g = ctx.createLinearGradient(0, 0, 100, 0); + var ps = [ 0, 1/10, 1/4, 1/3, 1/2, 3/4, 1 ]; + for (var p = 0; p < ps.length; ++p) + { + g.addColorStop(ps[p], '#0f0'); + for (var i = 0; i < 15; ++i) + g.addColorStop(ps[p], '#f00'); + g.addColorStop(ps[p], '#0f0'); + } + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 30,25 == 0,255,0,255; + @assert pixel 40,25 == 0,255,0,255; + @assert pixel 60,25 == 0,255,0,255; + @assert pixel 80,25 == 0,255,0,255; expected: green - name: 2d.gradient.empty testing: - - 2d.gradient.empty + - 2d.gradient.empty code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var g = ctx.createLinearGradient(0, 0, 0, 50); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var g = ctx.createLinearGradient(0, 0, 0, 50); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; expected: green - name: 2d.gradient.object.update testing: - - 2d.gradient.update + - 2d.gradient.update code: | - var g = ctx.createLinearGradient(-100, 0, 200, 0); - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - g.addColorStop(0.1, '#0f0'); - g.addColorStop(0.9, '#0f0'); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255; + var g = ctx.createLinearGradient(-100, 0, 200, 0); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + g.addColorStop(0.1, '#0f0'); + g.addColorStop(0.9, '#0f0'); + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; expected: green - name: 2d.gradient.object.compare testing: - - 2d.gradient.object + - 2d.gradient.object code: | - var g1 = ctx.createLinearGradient(0, 0, 100, 0); - var g2 = ctx.createLinearGradient(0, 0, 100, 0); - @assert g1 !== g2; - ctx.fillStyle = g1; - @assert ctx.fillStyle === g1; + var g1 = ctx.createLinearGradient(0, 0, 100, 0); + var g2 = ctx.createLinearGradient(0, 0, 100, 0); + @assert g1 !== g2; + ctx.fillStyle = g1; + @assert ctx.fillStyle === g1; - name: 2d.gradient.object.crosscanvas code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - var g = document.createElement('canvas').getContext('2d').createLinearGradient(0, 0, 100, 0); - g.addColorStop(0, '#0f0'); - g.addColorStop(1, '#0f0'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var g = document.createElement('canvas').getContext('2d').createLinearGradient(0, 0, 100, 0); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,255,0,255; expected: green - name: 2d.gradient.object.current testing: - - 2d.currentColor.gradient + - 2d.currentColor.gradient code: | - canvas.setAttribute('style', 'color: #f00'); + canvas.setAttribute('style', 'color: #f00'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createLinearGradient(0, 0, 100, 0); - g.addColorStop(0, 'currentColor'); - g.addColorStop(1, 'currentColor'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 ==~ 0,0,0,255; + var g = ctx.createLinearGradient(0, 0, 100, 0); + g.addColorStop(0, 'currentColor'); + g.addColorStop(1, 'currentColor'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 ==~ 0,0,0,255; expected: | - size 100 50 - cr.set_source_rgb(0, 0, 0) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + cr.set_source_rgb(0, 0, 0) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.gradient.object.invalidoffset testing: - - 2d.gradient.invalidoffset + - 2d.gradient.invalidoffset code: | - var g = ctx.createLinearGradient(0, 0, 100, 0); - @assert throws INDEX_SIZE_ERR g.addColorStop(-1, '#000'); - @assert throws INDEX_SIZE_ERR g.addColorStop(2, '#000'); - @assert throws TypeError g.addColorStop(Infinity, '#000'); - @assert throws TypeError g.addColorStop(-Infinity, '#000'); - @assert throws TypeError g.addColorStop(NaN, '#000'); + var g = ctx.createLinearGradient(0, 0, 100, 0); + @assert throws INDEX_SIZE_ERR g.addColorStop(-1, '#000'); + @assert throws INDEX_SIZE_ERR g.addColorStop(2, '#000'); + @assert throws TypeError g.addColorStop(Infinity, '#000'); + @assert throws TypeError g.addColorStop(-Infinity, '#000'); + @assert throws TypeError g.addColorStop(NaN, '#000'); - name: 2d.gradient.object.invalidcolor testing: - - 2d.gradient.invalidcolor + - 2d.gradient.invalidcolor code: | - var g = ctx.createLinearGradient(0, 0, 100, 0); - @assert throws SYNTAX_ERR g.addColorStop(0, ""); - @assert throws SYNTAX_ERR g.addColorStop(0, 'rgb(NaN%, NaN%, NaN%)'); - @assert throws SYNTAX_ERR g.addColorStop(0, 'null'); - @assert throws SYNTAX_ERR g.addColorStop(0, 'undefined'); - @assert throws SYNTAX_ERR g.addColorStop(0, null); - @assert throws SYNTAX_ERR g.addColorStop(0, undefined); - - var g = ctx.createRadialGradient(0, 0, 0, 100, 0, 0); - @assert throws SYNTAX_ERR g.addColorStop(0, ""); - @assert throws SYNTAX_ERR g.addColorStop(0, 'rgb(NaN%, NaN%, NaN%)'); - @assert throws SYNTAX_ERR g.addColorStop(0, 'null'); - @assert throws SYNTAX_ERR g.addColorStop(0, 'undefined'); - @assert throws SYNTAX_ERR g.addColorStop(0, null); - @assert throws SYNTAX_ERR g.addColorStop(0, undefined); + var g = ctx.createLinearGradient(0, 0, 100, 0); + @assert throws SYNTAX_ERR g.addColorStop(0, ""); + @assert throws SYNTAX_ERR g.addColorStop(0, 'rgb(NaN%, NaN%, NaN%)'); + @assert throws SYNTAX_ERR g.addColorStop(0, 'null'); + @assert throws SYNTAX_ERR g.addColorStop(0, 'undefined'); + @assert throws SYNTAX_ERR g.addColorStop(0, null); + @assert throws SYNTAX_ERR g.addColorStop(0, undefined); + var g = ctx.createRadialGradient(0, 0, 0, 100, 0, 0); + @assert throws SYNTAX_ERR g.addColorStop(0, ""); + @assert throws SYNTAX_ERR g.addColorStop(0, 'rgb(NaN%, NaN%, NaN%)'); + @assert throws SYNTAX_ERR g.addColorStop(0, 'null'); + @assert throws SYNTAX_ERR g.addColorStop(0, 'undefined'); + @assert throws SYNTAX_ERR g.addColorStop(0, null); + @assert throws SYNTAX_ERR g.addColorStop(0, undefined); - name: 2d.gradient.linear.nonfinite desc: createLinearGradient() throws TypeError if arguments are not finite notes: *bindings testing: - - 2d.gradient.linear.nonfinite + - 2d.gradient.linear.nonfinite code: | - @nonfinite @assert throws TypeError ctx.createLinearGradient(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); + @nonfinite @assert throws TypeError ctx.createLinearGradient(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); - name: 2d.gradient.linear.transform.1 - desc: Linear gradient coordinates are relative to the coordinate space at the time - of filling + desc: + Linear gradient coordinates are relative to the coordinate space at the time + of filling testing: - - 2d.gradient.linear.transform + - 2d.gradient.linear.transform code: | - var g = ctx.createLinearGradient(0, 0, 200, 0); - g.addColorStop(0, '#f00'); - g.addColorStop(0.25, '#0f0'); - g.addColorStop(0.75, '#0f0'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.translate(-50, 0); - ctx.fillRect(50, 0, 100, 50); - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + var g = ctx.createLinearGradient(0, 0, 200, 0); + g.addColorStop(0, '#f00'); + g.addColorStop(0.25, '#0f0'); + g.addColorStop(0.75, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.translate(-50, 0); + ctx.fillRect(50, 0, 100, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.gradient.linear.transform.2 - desc: Linear gradient coordinates are relative to the coordinate space at the time - of filling - testing: - - 2d.gradient.linear.transform - code: | - ctx.translate(100, 0); - var g = ctx.createLinearGradient(0, 0, 200, 0); - g.addColorStop(0, '#f00'); - g.addColorStop(0.25, '#0f0'); - g.addColorStop(0.75, '#0f0'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.translate(-150, 0); - ctx.fillRect(50, 0, 100, 50); - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + desc: + Linear gradient coordinates are relative to the coordinate space at the time + of filling + testing: + - 2d.gradient.linear.transform + code: | + ctx.translate(100, 0); + var g = ctx.createLinearGradient(0, 0, 200, 0); + g.addColorStop(0, '#f00'); + g.addColorStop(0.25, '#0f0'); + g.addColorStop(0.75, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.translate(-150, 0); + ctx.fillRect(50, 0, 100, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.gradient.linear.transform.3 desc: Linear gradient transforms do not experience broken caching effects testing: - - 2d.gradient.linear.transform + - 2d.gradient.linear.transform code: | - var g = ctx.createLinearGradient(0, 0, 200, 0); - g.addColorStop(0, '#f00'); - g.addColorStop(0.25, '#0f0'); - g.addColorStop(0.75, '#0f0'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - ctx.translate(-50, 0); - ctx.fillRect(50, 0, 100, 50); - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + var g = ctx.createLinearGradient(0, 0, 200, 0); + g.addColorStop(0, '#f00'); + g.addColorStop(0.25, '#0f0'); + g.addColorStop(0.75, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(-50, 0); + ctx.fillRect(50, 0, 100, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.gradient.radial.negative desc: createRadialGradient() throws INDEX_SIZE_ERR if either radius is negative testing: - - 2d.gradient.radial.negative + - 2d.gradient.radial.negative code: | - @assert throws INDEX_SIZE_ERR ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1); - @assert throws INDEX_SIZE_ERR ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1); - @assert throws INDEX_SIZE_ERR ctx.createRadialGradient(0, 0, -0.1, 0, 0, -0.1); + @assert throws INDEX_SIZE_ERR ctx.createRadialGradient(0, 0, -0.1, 0, 0, 1); + @assert throws INDEX_SIZE_ERR ctx.createRadialGradient(0, 0, 1, 0, 0, -0.1); + @assert throws INDEX_SIZE_ERR ctx.createRadialGradient(0, 0, -0.1, 0, 0, -0.1); - name: 2d.gradient.radial.nonfinite desc: createRadialGradient() throws TypeError if arguments are not finite notes: *bindings testing: - - 2d.gradient.radial.nonfinite + - 2d.gradient.radial.nonfinite code: | - @nonfinite @assert throws TypeError ctx.createRadialGradient(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>); + @nonfinite @assert throws TypeError ctx.createRadialGradient(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>); - name: 2d.gradient.radial.inside1 testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(50, 25, 100, 50, 25, 200); - g.addColorStop(0, '#0f0'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(50, 25, 100, 50, 25, 200); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.gradient.radial.inside2 testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100); - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#0f0'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.gradient.radial.inside3 testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100); - g.addColorStop(0, '#f00'); - g.addColorStop(0.993, '#f00'); - g.addColorStop(1, '#0f0'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(50, 25, 200, 50, 25, 100); + g.addColorStop(0, '#f00'); + g.addColorStop(0.993, '#f00'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.gradient.radial.outside1 testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(200, 25, 10, 200, 25, 20); - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#0f0'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(200, 25, 10, 200, 25, 20); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.gradient.radial.outside2 testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10); - g.addColorStop(0, '#0f0'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.gradient.radial.outside3 testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10); - g.addColorStop(0, '#0f0'); - g.addColorStop(0.001, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(200, 25, 20, 200, 25, 10); + g.addColorStop(0, '#0f0'); + g.addColorStop(0.001, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.gradient.radial.touch1 testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(150, 25, 50, 200, 25, 100); - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(150, 25, 50, 200, 25, 100); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; @moz-todo - @assert pixel 50,1 == 0,255,0,255; @moz-todo - @assert pixel 98,1 == 0,255,0,255; @moz-todo - @assert pixel 1,25 == 0,255,0,255; @moz-todo - @assert pixel 50,25 == 0,255,0,255; @moz-todo - @assert pixel 98,25 == 0,255,0,255; @moz-todo - @assert pixel 1,48 == 0,255,0,255; @moz-todo - @assert pixel 50,48 == 0,255,0,255; @moz-todo - @assert pixel 98,48 == 0,255,0,255; @moz-todo + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,1 == 0,255,0,255; @moz-todo + @assert pixel 98,1 == 0,255,0,255; @moz-todo + @assert pixel 1,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 98,25 == 0,255,0,255; @moz-todo + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 50,48 == 0,255,0,255; @moz-todo + @assert pixel 98,48 == 0,255,0,255; @moz-todo expected: green - name: 2d.gradient.radial.touch2 testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(-80, 25, 70, 0, 25, 150); - g.addColorStop(0, '#f00'); - g.addColorStop(0.01, '#0f0'); - g.addColorStop(0.99, '#0f0'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(-80, 25, 70, 0, 25, 150); + g.addColorStop(0, '#f00'); + g.addColorStop(0.01, '#0f0'); + g.addColorStop(0.99, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.gradient.radial.touch3 testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(120, -15, 25, 140, -30, 50); - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(120, -15, 25, 140, -30, 50); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; @moz-todo - @assert pixel 50,1 == 0,255,0,255; @moz-todo - @assert pixel 98,1 == 0,255,0,255; @moz-todo - @assert pixel 1,25 == 0,255,0,255; @moz-todo - @assert pixel 50,25 == 0,255,0,255; @moz-todo - @assert pixel 98,25 == 0,255,0,255; @moz-todo - @assert pixel 1,48 == 0,255,0,255; @moz-todo - @assert pixel 50,48 == 0,255,0,255; @moz-todo - @assert pixel 98,48 == 0,255,0,255; @moz-todo + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,1 == 0,255,0,255; @moz-todo + @assert pixel 98,1 == 0,255,0,255; @moz-todo + @assert pixel 1,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 98,25 == 0,255,0,255; @moz-todo + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 50,48 == 0,255,0,255; @moz-todo + @assert pixel 98,48 == 0,255,0,255; @moz-todo expected: green - name: 2d.gradient.radial.equal testing: - - 2d.gradient.radial.equal + - 2d.gradient.radial.equal code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(50, 25, 20, 50, 25, 20); - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(50, 25, 20, 50, 25, 20); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; @moz-todo - @assert pixel 50,1 == 0,255,0,255; @moz-todo - @assert pixel 98,1 == 0,255,0,255; @moz-todo - @assert pixel 1,25 == 0,255,0,255; @moz-todo - @assert pixel 50,25 == 0,255,0,255; @moz-todo - @assert pixel 98,25 == 0,255,0,255; @moz-todo - @assert pixel 1,48 == 0,255,0,255; @moz-todo - @assert pixel 50,48 == 0,255,0,255; @moz-todo - @assert pixel 98,48 == 0,255,0,255; @moz-todo + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,1 == 0,255,0,255; @moz-todo + @assert pixel 98,1 == 0,255,0,255; @moz-todo + @assert pixel 1,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 98,25 == 0,255,0,255; @moz-todo + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 50,48 == 0,255,0,255; @moz-todo + @assert pixel 98,48 == 0,255,0,255; @moz-todo expected: green - name: 2d.gradient.radial.cone.behind testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(120, 25, 10, 211, 25, 100); - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(120, 25, 10, 211, 25, 100); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; @moz-todo - @assert pixel 50,1 == 0,255,0,255; @moz-todo - @assert pixel 98,1 == 0,255,0,255; @moz-todo - @assert pixel 1,25 == 0,255,0,255; @moz-todo - @assert pixel 50,25 == 0,255,0,255; @moz-todo - @assert pixel 98,25 == 0,255,0,255; @moz-todo - @assert pixel 1,48 == 0,255,0,255; @moz-todo - @assert pixel 50,48 == 0,255,0,255; @moz-todo - @assert pixel 98,48 == 0,255,0,255; @moz-todo + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,1 == 0,255,0,255; @moz-todo + @assert pixel 98,1 == 0,255,0,255; @moz-todo + @assert pixel 1,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 98,25 == 0,255,0,255; @moz-todo + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 50,48 == 0,255,0,255; @moz-todo + @assert pixel 98,48 == 0,255,0,255; @moz-todo expected: green - name: 2d.gradient.radial.cone.front testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(311, 25, 10, 210, 25, 100); - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#0f0'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(311, 25, 10, 210, 25, 100); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.gradient.radial.cone.bottom testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 101); - g.addColorStop(0, '#0f0'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 101); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.gradient.radial.cone.top testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(230, 25, 100, 100, 25, 101); - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#0f0'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(230, 25, 100, 100, 25, 101); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.gradient.radial.cone.beside testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(0, 100, 40, 100, 100, 50); - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(0, 100, 40, 100, 100, 50); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; @moz-todo - @assert pixel 50,1 == 0,255,0,255; @moz-todo - @assert pixel 98,1 == 0,255,0,255; @moz-todo - @assert pixel 1,25 == 0,255,0,255; @moz-todo - @assert pixel 50,25 == 0,255,0,255; @moz-todo - @assert pixel 98,25 == 0,255,0,255; @moz-todo - @assert pixel 1,48 == 0,255,0,255; @moz-todo - @assert pixel 50,48 == 0,255,0,255; @moz-todo - @assert pixel 98,48 == 0,255,0,255; @moz-todo + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,1 == 0,255,0,255; @moz-todo + @assert pixel 98,1 == 0,255,0,255; @moz-todo + @assert pixel 1,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 98,25 == 0,255,0,255; @moz-todo + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 50,48 == 0,255,0,255; @moz-todo + @assert pixel 98,48 == 0,255,0,255; @moz-todo expected: green - name: 2d.gradient.radial.cone.cylinder testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 100); - g.addColorStop(0, '#0f0'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 100); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.gradient.radial.cone.shape1 testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - var tol = 1; // tolerance to avoid antialiasing artifacts + var tol = 1; // tolerance to avoid antialiasing artifacts - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(30+tol, 40); - ctx.lineTo(110, -20+tol); - ctx.lineTo(110, 100-tol); - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(30+tol, 40); + ctx.lineTo(110, -20+tol); + ctx.lineTo(110, 100-tol); + ctx.fill(); - var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4); - g.addColorStop(0, '#0f0'); - g.addColorStop(1, '#0f0'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4); + g.addColorStop(0, '#0f0'); + g.addColorStop(1, '#0f0'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.gradient.radial.cone.shape2 testing: - - 2d.gradient.radial.rendering + - 2d.gradient.radial.rendering code: | - var tol = 1; // tolerance to avoid antialiasing artifacts + var tol = 1; // tolerance to avoid antialiasing artifacts - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4); - g.addColorStop(0, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); + var g = ctx.createRadialGradient(30+10*5/2, 40, 10*3/2, 30+10*15/4, 40, 10*9/4); + g.addColorStop(0, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(30-tol, 40); - ctx.lineTo(110, -20-tol); - ctx.lineTo(110, 100+tol); - ctx.fill(); + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(30-tol, 40); + ctx.lineTo(110, -20-tol); + ctx.lineTo(110, 100+tol); + ctx.fill(); - @assert pixel 1,1 == 0,255,0,255; @moz-todo - @assert pixel 50,1 == 0,255,0,255; @moz-todo - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; @moz-todo - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; @moz-todo - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,1 == 0,255,0,255; @moz-todo + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.gradient.radial.transform.1 - desc: Radial gradient coordinates are relative to the coordinate space at the time - of filling - testing: - - 2d.gradient.radial.transform - code: | - var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); - g.addColorStop(0, '#0f0'); - g.addColorStop(0.5, '#0f0'); - g.addColorStop(0.51, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.translate(50, 25); - ctx.scale(10, 10); - ctx.fillRect(-5, -2.5, 10, 5); - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + desc: + Radial gradient coordinates are relative to the coordinate space at the time + of filling + testing: + - 2d.gradient.radial.transform + code: | + var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); + g.addColorStop(0, '#0f0'); + g.addColorStop(0.5, '#0f0'); + g.addColorStop(0.51, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.translate(50, 25); + ctx.scale(10, 10); + ctx.fillRect(-5, -2.5, 10, 5); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.gradient.radial.transform.2 - desc: Radial gradient coordinates are relative to the coordinate space at the time - of filling - testing: - - 2d.gradient.radial.transform - code: | - ctx.translate(100, 0); - var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); - g.addColorStop(0, '#0f0'); - g.addColorStop(0.5, '#0f0'); - g.addColorStop(0.51, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.translate(-50, 25); - ctx.scale(10, 10); - ctx.fillRect(-5, -2.5, 10, 5); - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + desc: + Radial gradient coordinates are relative to the coordinate space at the time + of filling + testing: + - 2d.gradient.radial.transform + code: | + ctx.translate(100, 0); + var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); + g.addColorStop(0, '#0f0'); + g.addColorStop(0.5, '#0f0'); + g.addColorStop(0.51, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.translate(-50, 25); + ctx.scale(10, 10); + ctx.fillRect(-5, -2.5, 10, 5); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.gradient.radial.transform.3 desc: Radial gradient transforms do not experience broken caching effects testing: - - 2d.gradient.radial.transform + - 2d.gradient.radial.transform code: | - var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); - g.addColorStop(0, '#0f0'); - g.addColorStop(0.5, '#0f0'); - g.addColorStop(0.51, '#f00'); - g.addColorStop(1, '#f00'); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - ctx.translate(50, 25); - ctx.scale(10, 10); - ctx.fillRect(-5, -2.5, 10, 5); - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + var g = ctx.createRadialGradient(0, 0, 0, 0, 0, 11.2); + g.addColorStop(0, '#0f0'); + g.addColorStop(0.5, '#0f0'); + g.addColorStop(0.51, '#f00'); + g.addColorStop(1, '#f00'); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + ctx.translate(50, 25); + ctx.scale(10, 10); + ctx.fillRect(-5, -2.5, 10, 5); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.gradient.conic.positive.rotation desc: Conic gradient with positive rotation code: | - const g = ctx.createConicGradient(3*Math.PI/2, 50, 25); - // It's red in the upper right region and green on the lower left region - g.addColorStop(0, "#f00"); - g.addColorStop(0.25, "#0f0"); - g.addColorStop(0.50, "#0f0"); - g.addColorStop(0.75, "#f00"); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 25,15 == 255,0,0,255; - @assert pixel 75,40 == 0,255,0,255; + const g = ctx.createConicGradient(3*Math.PI/2, 50, 25); + // It's red in the upper right region and green on the lower left region + g.addColorStop(0, "#f00"); + g.addColorStop(0.25, "#0f0"); + g.addColorStop(0.50, "#0f0"); + g.addColorStop(0.75, "#f00"); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 25,15 == 255,0,0,255; + @assert pixel 75,40 == 0,255,0,255; expected: green - name: 2d.gradient.conic.negative.rotation desc: Conic gradient with negative rotation code: | - const g = ctx.createConicGradient(-Math.PI/2, 50, 25); - // It's red in the upper right region and green on the lower left region - g.addColorStop(0, "#f00"); - g.addColorStop(0.25, "#0f0"); - g.addColorStop(0.50, "#0f0"); - g.addColorStop(0.75, "#f00"); - ctx.fillStyle = g; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 25,15 == 255,0,0,255; - @assert pixel 75,40 == 0,255,0,255; + const g = ctx.createConicGradient(-Math.PI/2, 50, 25); + // It's red in the upper right region and green on the lower left region + g.addColorStop(0, "#f00"); + g.addColorStop(0.25, "#0f0"); + g.addColorStop(0.50, "#0f0"); + g.addColorStop(0.75, "#f00"); + ctx.fillStyle = g; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 25,15 == 255,0,0,255; + @assert pixel 75,40 == 0,255,0,255; expected: green - name: 2d.gradient.conic.invalid.inputs desc: Conic gradient function with invalid inputs code: | - @nonfinite @assert throws TypeError ctx.createConicGradient(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>); + @nonfinite @assert throws TypeError ctx.createConicGradient(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>); - const g = ctx.createConicGradient(0, 0, 25); - @nonfinite @assert throws TypeError g.addColorStop(, <'#f00'>); - @nonfinite @assert throws SYNTAX_ERR g.addColorStop(<0>, ); + const g = ctx.createConicGradient(0, 0, 25); + @nonfinite @assert throws TypeError g.addColorStop(, <'#f00'>); + @nonfinite @assert throws SYNTAX_ERR g.addColorStop(<0>, ); - name: 2d.pattern.basic.type testing: - - 2d.pattern.return + - 2d.pattern.return images: - - green.png + - green.png code: | - @assert window.CanvasPattern !== undefined; + @assert window.CanvasPattern !== undefined; - window.CanvasPattern.prototype.thisImplementsCanvasPattern = true; + window.CanvasPattern.prototype.thisImplementsCanvasPattern = true; - var img = document.getElementById('green.png'); - var pattern = ctx.createPattern(img, 'no-repeat'); - @assert pattern.thisImplementsCanvasPattern; + var img = document.getElementById('green.png'); + var pattern = ctx.createPattern(img, 'no-repeat'); + @assert pattern.thisImplementsCanvasPattern; - name: 2d.pattern.basic.image testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - green.png + - green.png code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('green.png'); - var pattern = ctx.createPattern(img, 'no-repeat'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('green.png'); + var pattern = ctx.createPattern(img, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.basic.canvas testing: - - 2d.pattern.painting + - 2d.pattern.painting code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = '#0f0'; - ctx2.fillRect(0, 0, 100, 50); + var canvas2 = document.createElement('canvas'); + canvas2.width = 100; + canvas2.height = 50; + var ctx2 = canvas2.getContext('2d'); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 0, 100, 50); - var pattern = ctx.createPattern(canvas2, 'no-repeat'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + var pattern = ctx.createPattern(canvas2, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.basic.zerocanvas testing: - - 2d.pattern.zerocanvas + - 2d.pattern.zerocanvas code: | - canvas.width = 0; - canvas.height = 10; - @assert canvas.width === 0; - @assert canvas.height === 10; - @assert throws INVALID_STATE_ERR ctx.createPattern(canvas, 'repeat'); + canvas.width = 0; + canvas.height = 10; + @assert canvas.width === 0; + @assert canvas.height === 10; + @assert throws INVALID_STATE_ERR ctx.createPattern(canvas, 'repeat'); - canvas.width = 10; - canvas.height = 0; - @assert canvas.width === 10; - @assert canvas.height === 0; - @assert throws INVALID_STATE_ERR ctx.createPattern(canvas, 'repeat'); + canvas.width = 10; + canvas.height = 0; + @assert canvas.width === 10; + @assert canvas.height === 0; + @assert throws INVALID_STATE_ERR ctx.createPattern(canvas, 'repeat'); - canvas.width = 0; - canvas.height = 0; - @assert canvas.width === 0; - @assert canvas.height === 0; - @assert throws INVALID_STATE_ERR ctx.createPattern(canvas, 'repeat'); + canvas.width = 0; + canvas.height = 0; + @assert canvas.width === 0; + @assert canvas.height === 0; + @assert throws INVALID_STATE_ERR ctx.createPattern(canvas, 'repeat'); - name: 2d.pattern.basic.nocontext testing: - - 2d.pattern.painting + - 2d.pattern.painting code: | - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var pattern = ctx.createPattern(canvas2, 'no-repeat'); + var canvas2 = document.createElement('canvas'); + canvas2.width = 100; + canvas2.height = 50; + var pattern = ctx.createPattern(canvas2, 'no-repeat'); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.transform.identity testing: - - 2d.pattern.transform + - 2d.pattern.transform code: | - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var pattern = ctx.createPattern(canvas2, 'no-repeat'); - pattern.setTransform(new DOMMatrix()); + var canvas2 = document.createElement('canvas'); + canvas2.width = 100; + canvas2.height = 50; + var pattern = ctx.createPattern(canvas2, 'no-repeat'); + pattern.setTransform(new DOMMatrix()); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.transform.infinity testing: - - 2d.pattern.transform + - 2d.pattern.transform code: | - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var pattern = ctx.createPattern(canvas2, 'no-repeat'); - pattern.setTransform({a: Infinity}); + var canvas2 = document.createElement('canvas'); + canvas2.width = 100; + canvas2.height = 50; + var pattern = ctx.createPattern(canvas2, 'no-repeat'); + pattern.setTransform({a: Infinity}); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.transform.invalid testing: - - 2d.pattern.transform + - 2d.pattern.transform code: | - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var pattern = ctx.createPattern(canvas2, 'no-repeat'); - @assert throws TypeError pattern.setTransform({a: 1, m11: 2}); + var canvas2 = document.createElement('canvas'); + canvas2.width = 100; + canvas2.height = 50; + var pattern = ctx.createPattern(canvas2, 'no-repeat'); + @assert throws TypeError pattern.setTransform({a: 1, m11: 2}); - name: 2d.pattern.image.undefined testing: - - 2d.pattern.IDL + - 2d.pattern.IDL notes: *bindings code: | - @assert throws TypeError ctx.createPattern(undefined, 'repeat'); + @assert throws TypeError ctx.createPattern(undefined, 'repeat'); - name: 2d.pattern.image.null testing: - - 2d.pattern.IDL + - 2d.pattern.IDL notes: *bindings code: | - @assert throws TypeError ctx.createPattern(null, 'repeat'); + @assert throws TypeError ctx.createPattern(null, 'repeat'); - name: 2d.pattern.image.string testing: - - 2d.pattern.IDL + - 2d.pattern.IDL notes: *bindings code: | - @assert throws TypeError ctx.createPattern('../images/red.png', 'repeat'); + @assert throws TypeError ctx.createPattern('../images/red.png', 'repeat'); - name: 2d.pattern.image.incomplete.nosrc testing: - - 2d.pattern.incomplete.image + - 2d.pattern.incomplete.image code: | - var img = new Image(); - @assert ctx.createPattern(img, 'repeat') === null; + var img = new Image(); + @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.image.incomplete.immediate testing: - - 2d.pattern.incomplete.image + - 2d.pattern.incomplete.image images: - - red.png + - red.png code: | - var img = new Image(); - img.src = '../images/red.png'; - // This triggers the "update the image data" algorithm. - // The image will not go to the "completely available" state - // until a fetch task in the networking task source is processed, - // so the image must not be fully decodable yet: - @assert ctx.createPattern(img, 'repeat') === null; @moz-todo + var img = new Image(); + img.src = '../images/red.png'; + // This triggers the "update the image data" algorithm. + // The image will not go to the "completely available" state + // until a fetch task in the networking task source is processed, + // so the image must not be fully decodable yet: + @assert ctx.createPattern(img, 'repeat') === null; @moz-todo - name: 2d.pattern.image.incomplete.reload testing: - - 2d.pattern.incomplete.image + - 2d.pattern.incomplete.image images: - - yellow.png - - red.png - code: | - var img = document.getElementById('yellow.png'); - img.src = '../images/red.png'; - // This triggers the "update the image data" algorithm, - // and resets the image to the "unavailable" state. - // The image will not go to the "completely available" state - // until a fetch task in the networking task source is processed, - // so the image must not be fully decodable yet: - @assert ctx.createPattern(img, 'repeat') === null; @moz-todo + - yellow.png + - red.png + code: | + var img = document.getElementById('yellow.png'); + img.src = '../images/red.png'; + // This triggers the "update the image data" algorithm, + // and resets the image to the "unavailable" state. + // The image will not go to the "completely available" state + // until a fetch task in the networking task source is processed, + // so the image must not be fully decodable yet: + @assert ctx.createPattern(img, 'repeat') === null; @moz-todo - name: 2d.pattern.image.incomplete.emptysrc testing: - - 2d.pattern.incomplete.image + - 2d.pattern.incomplete.image images: - - red.png - mozilla: {throws: !!null ''} + - red.png + mozilla: { throws: !!null "" } code: | - var img = document.getElementById('red.png'); - img.src = ""; - @assert ctx.createPattern(img, 'repeat') === null; + var img = document.getElementById('red.png'); + img.src = ""; + @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.image.incomplete.removedsrc testing: - - 2d.pattern.incomplete.image + - 2d.pattern.incomplete.image images: - - red.png - mozilla: {throws: !!null ''} + - red.png + mozilla: { throws: !!null "" } code: | - var img = document.getElementById('red.png'); - img.removeAttribute('src'); - @assert ctx.createPattern(img, 'repeat') === null; + var img = document.getElementById('red.png'); + img.removeAttribute('src'); + @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.image.broken testing: - - 2d.pattern.broken.image + - 2d.pattern.broken.image images: - - broken.png + - broken.png code: | - var img = document.getElementById('broken.png'); - @assert ctx.createPattern(img, 'repeat') === null; + var img = document.getElementById('broken.png'); + @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.image.nonexistent testing: - - 2d.pattern.nonexistent.image + - 2d.pattern.nonexistent.image images: - - no-such-image-really.png + - no-such-image-really.png code: | - var img = document.getElementById('no-such-image-really.png'); - @assert throws INVALID_STATE_ERR ctx.createPattern(img, 'repeat'); + var img = document.getElementById('no-such-image-really.png'); + @assert throws INVALID_STATE_ERR ctx.createPattern(img, 'repeat'); - name: 2d.pattern.svgimage.nonexistent testing: - - 2d.pattern.nonexistent.svgimage + - 2d.pattern.nonexistent.svgimage svgimages: - - no-such-image-really.png + - no-such-image-really.png code: | - var img = document.getElementById('no-such-image-really.png'); - @assert throws INVALID_STATE_ERR ctx.createPattern(img, 'repeat'); + var img = document.getElementById('no-such-image-really.png'); + @assert throws INVALID_STATE_ERR ctx.createPattern(img, 'repeat'); - name: 2d.pattern.image.nonexistent-but-loading testing: - - 2d.pattern.nonexistent-but-loading.image + - 2d.pattern.nonexistent-but-loading.image code: | - var img = document.createElement("img"); - img.src = "/images/no-such-image-really.png"; - @assert ctx.createPattern(img, 'repeat') === null; - var img = document.createElementNS("http://www.w3.org/2000/svg", "image"); - img.src = "/images/no-such-image-really.png"; - @assert ctx.createPattern(img, 'repeat') === null; + var img = document.createElement("img"); + img.src = "/images/no-such-image-really.png"; + @assert ctx.createPattern(img, 'repeat') === null; + var img = document.createElementNS("http://www.w3.org/2000/svg", "image"); + img.src = "/images/no-such-image-really.png"; + @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.image.nosrc testing: - - 2d.pattern.nosrc.image + - 2d.pattern.nosrc.image code: | - var img = document.createElement("img"); - @assert ctx.createPattern(img, 'repeat') === null; - var img = document.createElementNS("http://www.w3.org/2000/svg", "image"); - @assert ctx.createPattern(img, 'repeat') === null; + var img = document.createElement("img"); + @assert ctx.createPattern(img, 'repeat') === null; + var img = document.createElementNS("http://www.w3.org/2000/svg", "image"); + @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.image.zerowidth testing: - - 2d.pattern.zerowidth.image + - 2d.pattern.zerowidth.image images: - - red-zerowidth.svg + - red-zerowidth.svg code: | - var img = document.getElementById('red-zerowidth.svg'); - @assert ctx.createPattern(img, 'repeat') === null; + var img = document.getElementById('red-zerowidth.svg'); + @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.image.zeroheight testing: - - 2d.pattern.zeroheight.image + - 2d.pattern.zeroheight.image images: - - red-zeroheight.svg + - red-zeroheight.svg code: | - var img = document.getElementById('red-zeroheight.svg'); - @assert ctx.createPattern(img, 'repeat') === null; + var img = document.getElementById('red-zeroheight.svg'); + @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.svgimage.zerowidth testing: - - 2d.pattern.zerowidth.svgimage + - 2d.pattern.zerowidth.svgimage svgimages: - - red-zerowidth.svg + - red-zerowidth.svg code: | - var img = document.getElementById('red-zerowidth.svg'); - @assert ctx.createPattern(img, 'repeat') === null; + var img = document.getElementById('red-zerowidth.svg'); + @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.svgimage.zeroheight testing: - - 2d.pattern.zeroheight.svgimage + - 2d.pattern.zeroheight.svgimage svgimages: - - red-zeroheight.svg + - red-zeroheight.svg code: | - var img = document.getElementById('red-zeroheight.svg'); - @assert ctx.createPattern(img, 'repeat') === null; + var img = document.getElementById('red-zeroheight.svg'); + @assert ctx.createPattern(img, 'repeat') === null; - name: 2d.pattern.repeat.empty testing: - - 2d.pattern.missing + - 2d.pattern.missing images: - - green-1x1.png + - green-1x1.png code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('green-1x1.png'); - var pattern = ctx.createPattern(img, ""); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 200, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('green-1x1.png'); + var pattern = ctx.createPattern(img, ""); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 200, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.repeat.null testing: - - 2d.pattern.unrecognised + - 2d.pattern.unrecognised code: | - @assert ctx.createPattern(canvas, null) != null; + @assert ctx.createPattern(canvas, null) != null; - name: 2d.pattern.repeat.undefined testing: - - 2d.pattern.unrecognised + - 2d.pattern.unrecognised code: | - @assert throws SYNTAX_ERR ctx.createPattern(canvas, undefined); + @assert throws SYNTAX_ERR ctx.createPattern(canvas, undefined); - name: 2d.pattern.repeat.unrecognised testing: - - 2d.pattern.unrecognised + - 2d.pattern.unrecognised code: | - @assert throws SYNTAX_ERR ctx.createPattern(canvas, "invalid"); + @assert throws SYNTAX_ERR ctx.createPattern(canvas, "invalid"); - name: 2d.pattern.repeat.unrecognisednull testing: - - 2d.pattern.unrecognised + - 2d.pattern.unrecognised code: | - @assert throws SYNTAX_ERR ctx.createPattern(canvas, "null"); + @assert throws SYNTAX_ERR ctx.createPattern(canvas, "null"); - name: 2d.pattern.repeat.case testing: - - 2d.pattern.exact + - 2d.pattern.exact code: | - @assert throws SYNTAX_ERR ctx.createPattern(canvas, "Repeat"); + @assert throws SYNTAX_ERR ctx.createPattern(canvas, "Repeat"); - name: 2d.pattern.repeat.nullsuffix testing: - - 2d.pattern.exact + - 2d.pattern.exact code: | - @assert throws SYNTAX_ERR ctx.createPattern(canvas, "repeat\0"); + @assert throws SYNTAX_ERR ctx.createPattern(canvas, "repeat\0"); - name: 2d.pattern.modify.image1 testing: - - 2d.pattern.modify + - 2d.pattern.modify images: - - green.png + - green.png code: | - var img = document.getElementById('green.png'); - var pattern = ctx.createPattern(img, 'no-repeat'); - deferTest(); - img.onload = t.step_func_done(function () - { - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('green.png'); + var pattern = ctx.createPattern(img, 'no-repeat'); + deferTest(); + img.onload = t.step_func_done(function () + { + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; - }); - img.src = '/images/red.png'; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + img.src = '/images/red.png'; expected: green - name: 2d.pattern.modify.image2 testing: - - 2d.pattern.modify + - 2d.pattern.modify images: - - green.png - code: | - var img = document.getElementById('green.png'); - var pattern = ctx.createPattern(img, 'no-repeat'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#00f'; - ctx.fillRect(0, 0, 100, 50); - deferTest(); - img.onload = t.step_func_done(function () - { - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; - }); - img.src = '/images/red.png'; + - green.png + code: | + var img = document.getElementById('green.png'); + var pattern = ctx.createPattern(img, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#00f'; + ctx.fillRect(0, 0, 100, 50); + deferTest(); + img.onload = t.step_func_done(function () + { + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + }); + img.src = '/images/red.png'; expected: green - name: 2d.pattern.modify.canvas1 testing: - - 2d.pattern.modify + - 2d.pattern.modify code: | - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = '#0f0'; - ctx2.fillRect(0, 0, 100, 50); + var canvas2 = document.createElement('canvas'); + canvas2.width = 100; + canvas2.height = 50; + var ctx2 = canvas2.getContext('2d'); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 0, 100, 50); - var pattern = ctx.createPattern(canvas2, 'no-repeat'); + var pattern = ctx.createPattern(canvas2, 'no-repeat'); - ctx2.fillStyle = '#f00'; - ctx2.fillRect(0, 0, 100, 50); + ctx2.fillStyle = '#f00'; + ctx2.fillRect(0, 0, 100, 50); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.modify.canvas2 testing: - - 2d.pattern.modify + - 2d.pattern.modify code: | - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = '#0f0'; - ctx2.fillRect(0, 0, 100, 50); + var canvas2 = document.createElement('canvas'); + canvas2.width = 100; + canvas2.height = 50; + var ctx2 = canvas2.getContext('2d'); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 0, 100, 50); - var pattern = ctx.createPattern(canvas2, 'no-repeat'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + var pattern = ctx.createPattern(canvas2, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx2.fillStyle = '#f00'; - ctx2.fillRect(0, 0, 100, 50); + ctx2.fillStyle = '#f00'; + ctx2.fillRect(0, 0, 100, 50); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.crosscanvas images: - - green.png + - green.png code: | - var img = document.getElementById('green.png'); + var img = document.getElementById('green.png'); - var pattern = document.createElement('canvas').getContext('2d').createPattern(img, 'no-repeat'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + var pattern = document.createElement('canvas').getContext('2d').createPattern(img, 'no-repeat'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.pattern.paint.norepeat.basic testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - green.png + - green.png code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('green.png'); - var pattern = ctx.createPattern(img, 'no-repeat'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('green.png'); + var pattern = ctx.createPattern(img, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.norepeat.outside testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - red.png + - red.png code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('red.png'); - var pattern = ctx.createPattern(img, 'no-repeat'); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('red.png'); + var pattern = ctx.createPattern(img, 'no-repeat'); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = pattern; - ctx.fillRect(0, -50, 100, 50); - ctx.fillRect(-100, 0, 100, 50); - ctx.fillRect(0, 50, 100, 50); - ctx.fillRect(100, 0, 100, 50); + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + ctx.fillRect(-100, 0, 100, 50); + ctx.fillRect(0, 50, 100, 50); + ctx.fillRect(100, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.norepeat.coord1 testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - green.png + - green.png code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(50, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50); - var img = document.getElementById('green.png'); - var pattern = ctx.createPattern(img, 'no-repeat'); - ctx.fillStyle = pattern; - ctx.translate(50, 0); - ctx.fillRect(-50, 0, 100, 50); + var img = document.getElementById('green.png'); + var pattern = ctx.createPattern(img, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.translate(50, 0); + ctx.fillRect(-50, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.norepeat.coord2 testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - green.png + - green.png code: | - var img = document.getElementById('green.png'); - var pattern = ctx.createPattern(img, 'no-repeat'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 50, 50); + var img = document.getElementById('green.png'); + var pattern = ctx.createPattern(img, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(50, 0, 50, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50); - ctx.fillStyle = pattern; - ctx.translate(50, 0); - ctx.fillRect(-50, 0, 100, 50); + ctx.fillStyle = pattern; + ctx.translate(50, 0); + ctx.fillRect(-50, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.norepeat.coord3 testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - red.png + - red.png code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('red.png'); - var pattern = ctx.createPattern(img, 'no-repeat'); - ctx.fillStyle = pattern; - ctx.translate(50, 25); - ctx.fillRect(-50, -25, 100, 50); + var img = document.getElementById('red.png'); + var pattern = ctx.createPattern(img, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.translate(50, 25); + ctx.fillRect(-50, -25, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 25); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 25); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.repeat.basic testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - green-16x16.png + - green-16x16.png code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('green-16x16.png'); - var pattern = ctx.createPattern(img, 'repeat'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('green-16x16.png'); + var pattern = ctx.createPattern(img, 'repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.repeat.outside testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - green-16x16.png + - green-16x16.png code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('green-16x16.png'); - var pattern = ctx.createPattern(img, 'repeat'); - ctx.fillStyle = pattern; - ctx.translate(50, 25); - ctx.fillRect(-50, -25, 100, 50); + var img = document.getElementById('green-16x16.png'); + var pattern = ctx.createPattern(img, 'repeat'); + ctx.fillStyle = pattern; + ctx.translate(50, 25); + ctx.fillRect(-50, -25, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.repeat.coord1 testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - rgrg-256x256.png + - rgrg-256x256.png code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('rgrg-256x256.png'); - var pattern = ctx.createPattern(img, 'repeat'); - ctx.fillStyle = pattern; - ctx.translate(-128, -78); - ctx.fillRect(128, 78, 100, 50); + var img = document.getElementById('rgrg-256x256.png'); + var pattern = ctx.createPattern(img, 'repeat'); + ctx.fillStyle = pattern; + ctx.translate(-128, -78); + ctx.fillRect(128, 78, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.repeat.coord2 testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - ggrr-256x256.png + - ggrr-256x256.png code: | - var img = document.getElementById('ggrr-256x256.png'); - var pattern = ctx.createPattern(img, 'repeat'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('ggrr-256x256.png'); + var pattern = ctx.createPattern(img, 'repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.repeat.coord3 testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - rgrg-256x256.png + - rgrg-256x256.png code: | - var img = document.getElementById('rgrg-256x256.png'); - var pattern = ctx.createPattern(img, 'repeat'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('rgrg-256x256.png'); + var pattern = ctx.createPattern(img, 'repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - ctx.translate(-128, -78); - ctx.fillRect(128, 78, 100, 50); + ctx.translate(-128, -78); + ctx.fillRect(128, 78, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.repeatx.basic testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - green-16x16.png + - green-16x16.png code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 16); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 16); - var img = document.getElementById('green-16x16.png'); - var pattern = ctx.createPattern(img, 'repeat-x'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('green-16x16.png'); + var pattern = ctx.createPattern(img, 'repeat-x'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.repeatx.outside testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - red-16x16.png + - red-16x16.png code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('red-16x16.png'); - var pattern = ctx.createPattern(img, 'repeat-x'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('red-16x16.png'); + var pattern = ctx.createPattern(img, 'repeat-x'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 16); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 16); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.repeatx.coord1 testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - red-16x16.png + - red-16x16.png code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('red-16x16.png'); - var pattern = ctx.createPattern(img, 'repeat-x'); - ctx.fillStyle = pattern; - ctx.translate(0, 16); - ctx.fillRect(0, -16, 100, 50); + var img = document.getElementById('red-16x16.png'); + var pattern = ctx.createPattern(img, 'repeat-x'); + ctx.fillStyle = pattern; + ctx.translate(0, 16); + ctx.fillRect(0, -16, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 16); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 16); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.repeaty.basic testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - green-16x16.png + - green-16x16.png code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 16, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 16, 50); - var img = document.getElementById('green-16x16.png'); - var pattern = ctx.createPattern(img, 'repeat-y'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('green-16x16.png'); + var pattern = ctx.createPattern(img, 'repeat-y'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.repeaty.outside testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - red-16x16.png + - red-16x16.png code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('red-16x16.png'); - var pattern = ctx.createPattern(img, 'repeat-y'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); + var img = document.getElementById('red-16x16.png'); + var pattern = ctx.createPattern(img, 'repeat-y'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 16, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 16, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.repeaty.coord1 testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - red-16x16.png + - red-16x16.png code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('red-16x16.png'); - var pattern = ctx.createPattern(img, 'repeat-y'); - ctx.fillStyle = pattern; - ctx.translate(48, 0); - ctx.fillRect(-48, 0, 100, 50); + var img = document.getElementById('red-16x16.png'); + var pattern = ctx.createPattern(img, 'repeat-y'); + ctx.fillStyle = pattern; + ctx.translate(48, 0); + ctx.fillRect(-48, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 16, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 16, 50); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.orientation.image desc: Image patterns do not get flipped when painted testing: - - 2d.pattern.painting + - 2d.pattern.painting images: - - rrgg-256x256.png + - rrgg-256x256.png code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var img = document.getElementById('rrgg-256x256.png'); - var pattern = ctx.createPattern(img, 'no-repeat'); - ctx.fillStyle = pattern; - ctx.save(); - ctx.translate(0, -103); - ctx.fillRect(0, 103, 100, 50); - ctx.restore(); + var img = document.getElementById('rrgg-256x256.png'); + var pattern = ctx.createPattern(img, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.save(); + ctx.translate(0, -103); + ctx.fillRect(0, 103, 100, 50); + ctx.restore(); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 25); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 25); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.pattern.paint.orientation.canvas desc: Canvas patterns do not get flipped when painted testing: - - 2d.pattern.painting + - 2d.pattern.painting code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = '#f00'; - ctx2.fillRect(0, 0, 100, 25); - ctx2.fillStyle = '#0f0'; - ctx2.fillRect(0, 25, 100, 25); + var canvas2 = document.createElement('canvas'); + canvas2.width = 100; + canvas2.height = 50; + var ctx2 = canvas2.getContext('2d'); + ctx2.fillStyle = '#f00'; + ctx2.fillRect(0, 0, 100, 25); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 25, 100, 25); - var pattern = ctx.createPattern(canvas2, 'no-repeat'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 25); + var pattern = ctx.createPattern(canvas2, 'no-repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 25); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - - name: 2d.pattern.animated.gif desc: createPattern() of an animated GIF draws the first frame testing: - - 2d.pattern.animated.image + - 2d.pattern.animated.image images: - - anim-gr.gif + - anim-gr.gif code: | - deferTest(); - step_timeout(function () { - var pattern = ctx.createPattern(document.getElementById('anim-gr.gif'), 'repeat'); - ctx.fillStyle = pattern; - ctx.fillRect(0, 0, 50, 50); - step_timeout(t.step_func_done(function () { - ctx.fillRect(50, 0, 50, 50); - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - }), 250); - }, 250); + deferTest(); + step_timeout(function () { + var pattern = ctx.createPattern(document.getElementById('anim-gr.gif'), 'repeat'); + ctx.fillStyle = pattern; + ctx.fillRect(0, 0, 50, 50); + step_timeout(t.step_func_done(function () { + ctx.fillRect(50, 0, 50, 50); + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + }), 250); + }, 250); expected: green - name: 2d.fillStyle.CSSRGB desc: CSSRGB works as color input testing: - - 2d.colors.CSSRGB - code: | - ctx.fillStyle = new CSSRGB(1, 0, 1); - @assert ctx.fillStyle === '#ff00ff'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 255,0,255,255; - - const color = new CSSRGB(0, CSS.percent(50), 0); - ctx.fillStyle = color; - @assert ctx.fillStyle === '#008000'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,128,0,255; - color.g = 0; - ctx.fillStyle = color; - @assert ctx.fillStyle === '#000000'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,0,0,255; - - color.alpha = 0; - ctx.fillStyle = color; - @assert ctx.fillStyle === 'rgba(0, 0, 0, 0)'; - ctx.reset(); - color.alpha = 0.5; - ctx.fillStyle = color; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,0,0,128; - - ctx.fillStyle = new CSSHSL(CSS.deg(0), 1, 1).toRGB(); - @assert ctx.fillStyle === '#ffffff'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 255,255,255,255; - - color.alpha = 1; - color.g = 1; - ctx.fillStyle = color; - ctx.fillRect(0, 0, 100, 50); + - 2d.colors.CSSRGB + code: | + ctx.fillStyle = new CSSRGB(1, 0, 1); + @assert ctx.fillStyle === '#ff00ff'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 255,0,255,255; + + const color = new CSSRGB(0, CSS.percent(50), 0); + ctx.fillStyle = color; + @assert ctx.fillStyle === '#008000'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,128,0,255; + color.g = 0; + ctx.fillStyle = color; + @assert ctx.fillStyle === '#000000'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,0,0,255; + + color.alpha = 0; + ctx.fillStyle = color; + @assert ctx.fillStyle === 'rgba(0, 0, 0, 0)'; + ctx.reset(); + color.alpha = 0.5; + ctx.fillStyle = color; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,0,0,128; + + ctx.fillStyle = new CSSHSL(CSS.deg(0), 1, 1).toRGB(); + @assert ctx.fillStyle === '#ffffff'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 255,255,255,255; + + color.alpha = 1; + color.g = 1; + ctx.fillStyle = color; + ctx.fillRect(0, 0, 100, 50); expected: green - name: 2d.fillStyle.CSSHSL desc: CSSHSL works as color input testing: - - 2d.colors.CSSHSL - code: | - ctx.fillStyle = new CSSHSL(CSS.deg(180), 0.5, 0.5); - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 ==~ 64,191,191,255 +/- 3; - - const color = new CSSHSL(CSS.deg(180), 1, 1); - ctx.fillStyle = color; - @assert ctx.fillStyle === '#ffffff'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 255,255,255,255; - color.l = 0.5; - ctx.fillStyle = color; - @assert ctx.fillStyle === '#00ffff'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,255,255; - - ctx.fillStyle = new CSSRGB(1, 0, 1).toHSL(); - @assert ctx.fillStyle === '#ff00ff'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 255,0,255,255; - - color.h = CSS.deg(120); - color.s = 1; - color.l = 0.5; - ctx.fillStyle = color; - ctx.fillRect(0, 0, 100, 50); + - 2d.colors.CSSHSL + code: | + ctx.fillStyle = new CSSHSL(CSS.deg(180), 0.5, 0.5); + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 ==~ 64,191,191,255 +/- 3; + + const color = new CSSHSL(CSS.deg(180), 1, 1); + ctx.fillStyle = color; + @assert ctx.fillStyle === '#ffffff'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 255,255,255,255; + color.l = 0.5; + ctx.fillStyle = color; + @assert ctx.fillStyle === '#00ffff'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,255,255; + + ctx.fillStyle = new CSSRGB(1, 0, 1).toHSL(); + @assert ctx.fillStyle === '#ff00ff'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 255,0,255,255; + + color.h = CSS.deg(120); + color.s = 1; + color.l = 0.5; + ctx.fillStyle = color; + ctx.fillRect(0, 0, 100, 50); expected: green diff --git a/test/wpt/generate.js b/test/wpt/generate.js index 74fbcb623..7a094b0d3 100644 --- a/test/wpt/generate.js +++ b/test/wpt/generate.js @@ -4,128 +4,144 @@ const yaml = require("js-yaml"); const fs = require("fs"); -const yamlFiles = fs.readdirSync(__dirname).filter(f => f.endsWith(".yaml")); +const yamlFiles = fs.readdirSync(__dirname).filter((f) => f.endsWith(".yaml")); // Files that should be skipped: const SKIP_FILES = new Set("meta.yaml"); // Tests that should be skipped (e.g. because they cause hangs or V8 crashes): const SKIP_TESTS = new Set([ - "2d.imageData.create2.negative", - "2d.imageData.create2.zero", - "2d.imageData.create2.nonfinite", - "2d.imageData.create1.zero", - "2d.imageData.create2.double", - "2d.imageData.get.source.outside", - "2d.imageData.get.source.negative", - "2d.imageData.get.double", - "2d.imageData.get.large.crash", // expected + "2d.imageData.create2.negative", + "2d.imageData.create2.zero", + "2d.imageData.create2.nonfinite", + "2d.imageData.create1.zero", + "2d.imageData.create2.double", + "2d.imageData.get.source.outside", + "2d.imageData.get.source.negative", + "2d.imageData.get.double", + "2d.imageData.get.large.crash", // expected ]); function expandNonfinite(method, argstr, tail) { - // argstr is ", ..." (where usually - // 'invalid' is Infinity/-Infinity/NaN) - const args = []; - for (const arg of argstr.split(', ')) { - const [, a] = arg.match(/<(.*)>/); - args.push(a.split(' ')); - } - const calls = []; - // Start with the valid argument list - const call = []; - for (let i = 0; i < args.length; i++) { - call.push(args[i][0]); - } - // For each argument alone, try setting it to all its invalid values: - for (let i = 0; i < args.length; i++) { - for (let j = 1; j < args[i].length; j++) { - const c2 = [...call] - c2[i] = args[i][j]; - calls.push(c2); - } - } - // For all combinations of >= 2 arguments, try setting them to their first - // invalid values. (Don't do all invalid values, because the number of - // combinations explodes.) - const f = (c, start, depth) => { - for (let i = start; i < args.length; i++) { - if (args[i].length > 1) { - const a = args[i][1] - const c2 = [...c] - c2[i] = a - if (depth > 0) - calls.push(c2) - f(c2, i+1, depth+1) - } - } - }; - f(call, 0, 0); - - return calls.map(c => `${method}(${c.join(", ")})${tail}`).join("\n\t\t"); + // argstr is ", ..." (where usually + // 'invalid' is Infinity/-Infinity/NaN) + const args = []; + for (const arg of argstr.split(", ")) { + const [, a] = arg.match(/<(.*)>/); + args.push(a.split(" ")); + } + const calls = []; + // Start with the valid argument list + const call = []; + for (let i = 0; i < args.length; i++) { + call.push(args[i][0]); + } + // For each argument alone, try setting it to all its invalid values: + for (let i = 0; i < args.length; i++) { + for (let j = 1; j < args[i].length; j++) { + const c2 = [...call]; + c2[i] = args[i][j]; + calls.push(c2); + } + } + // For all combinations of >= 2 arguments, try setting them to their first + // invalid values. (Don't do all invalid values, because the number of + // combinations explodes.) + const f = (c, start, depth) => { + for (let i = start; i < args.length; i++) { + if (args[i].length > 1) { + const a = args[i][1]; + const c2 = [...c]; + c2[i] = a; + if (depth > 0) calls.push(c2); + f(c2, i + 1, depth + 1); + } + } + }; + f(call, 0, 0); + + return calls.map((c) => `${method}(${c.join(", ")})${tail}`).join("\n\t\t"); } function simpleEscapeJS(str) { - return str.replace(/\\/g, '\\\\').replace(/"/g, '\\"') + return str.replace(/\\/g, "\\\\").replace(/"/g, '\\"'); } function escapeJS(str) { - str = simpleEscapeJS(str) - str = str.replace(/\[(\w+)\]/g, '[\\""+($1)+"\\"]') // kind of an ugly hack, for nicer failure-message output - return str + str = simpleEscapeJS(str); + str = str.replace(/\[(\w+)\]/g, '[\\""+($1)+"\\"]'); // kind of an ugly hack, for nicer failure-message output + return str; } /** @type {string} test */ function convert(test) { - let code = test.code; - if (!code) return ""; - // Indent it - code = code.trim().replace(/^/gm, "\t\t"); - - code = code.replace(/@nonfinite ([^(]+)\(([^)]+)\)(.*)/g, (match, g1, g2, g3) => { - return expandNonfinite(g1, g2, g3); - }); - - code = code.replace(/@assert pixel (\d+,\d+) == (\d+,\d+,\d+,\d+);/g, - "_assertPixel(canvas, $1, $2);"); - - code = code.replace(/@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+);/g, - "_assertPixelApprox(canvas, $1, $2);"); - - code = code.replace(/@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+) \+\/- (\d+);/g, - "_assertPixelApprox(canvas, $1, $2, $3);"); - - code = code.replace(/@assert throws (\S+_ERR) (.*);/g, - 'assert.throws(function() { $2; }, /$1/);'); - - code = code.replace(/@assert throws (\S+Error) (.*);/g, - 'assert.throws(function() { $2; }, $1);'); - - code = code.replace(/@assert (.*) === (.*);/g, (match, g1, g2) => { - return `assert.strictEqual(${g1}, ${g2}, "${escapeJS(g1)}", "${escapeJS(g2)}")`; - }); - - code = code.replace(/@assert (.*) !== (.*);/g, (match, g1, g2) => { - return `assert.notStrictEqual(${g1}, ${g2}, "${escapeJS(g1)}", "${escapeJS(g2)}");`; - }); - - code = code.replace(/@assert (.*) =~ (.*);/g, (match, g1, g2) => { - return `assert.match(${g1}, ${g2});`; - }); - - code = code.replace(/@assert (.*);/g, (match, g1) => { - return `assert(${g1}, "${escapeJS(g1)}");`; - }); - - code = code.replace(/ @moz-todo/g, ""); - - code = code.replace(/@moz-UniversalBrowserRead;/g, ""); - - if (code.includes("@")) - throw new Error("@ found in code; generation failed"); - - const name = test.name.replace(/"/g, /\"/); - - const skip = SKIP_TESTS.has(name) ? ".skip" : ""; - - return ` + let code = test.code; + if (!code) return ""; + // Indent it + code = code.trim().replace(/^/gm, "\t\t"); + + code = code.replace( + /@nonfinite ([^(]+)\(([^)]+)\)(.*)/g, + (match, g1, g2, g3) => { + return expandNonfinite(g1, g2, g3); + } + ); + + code = code.replace( + /@assert pixel (\d+,\d+) == (\d+,\d+,\d+,\d+);/g, + "_assertPixel(canvas, $1, $2);" + ); + + code = code.replace( + /@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+);/g, + "_assertPixelApprox(canvas, $1, $2);" + ); + + code = code.replace( + /@assert pixel (\d+,\d+) ==~ (\d+,\d+,\d+,\d+) \+\/- (\d+);/g, + "_assertPixelApprox(canvas, $1, $2, $3);" + ); + + code = code.replace( + /@assert throws (\S+_ERR) (.*);/g, + "assert.throws(function() { $2; }, /$1/);" + ); + + code = code.replace( + /@assert throws (\S+Error) (.*);/g, + "assert.throws(function() { $2; }, $1);" + ); + + code = code.replace(/@assert (.*) === (.*);/g, (match, g1, g2) => { + return `assert.strictEqual(${g1}, ${g2}, "${escapeJS(g1)}", "${escapeJS( + g2 + )}")`; + }); + + code = code.replace(/@assert (.*) !== (.*);/g, (match, g1, g2) => { + return `assert.notStrictEqual(${g1}, ${g2}, "${escapeJS( + g1 + )}", "${escapeJS(g2)}");`; + }); + + code = code.replace(/@assert (.*) =~ (.*);/g, (match, g1, g2) => { + return `assert.match(${g1}, ${g2});`; + }); + + code = code.replace(/@assert (.*);/g, (match, g1) => { + return `assert(${g1}, "${escapeJS(g1)}");`; + }); + + code = code.replace(/ @moz-todo/g, ""); + + code = code.replace(/@moz-UniversalBrowserRead;/g, ""); + + if (code.includes("@")) + throw new Error("@ found in code; generation failed"); + + const name = test.name.replace(/"/g, /\"/); + + const skip = SKIP_TESTS.has(name) ? ".skip" : ""; + + return ` it${skip}("${name}", function () {${test.desc ? `\n\t\t// ${test.desc}` : ""} const canvas = createCanvas(100, 50); const ctx = canvas.getContext("2d"); @@ -133,29 +149,29 @@ function convert(test) { ${code} }); -` +`; } - for (const filename of yamlFiles) { - if (SKIP_FILES.has(filename)) - continue; - - let tests; - try { - const content = fs.readFileSync(`${__dirname}/${filename}`, "utf8"); - tests = yaml.load(content, { - filename, - // schema: yaml.DEFAULT_SCHEMA - }); - } catch (ex) { - console.error(ex.toString()); - continue; - } - - const out = fs.createWriteStream(`${__dirname}/generated/${filename.replace(".yaml", ".js")}`); - - out.write(`// THIS FILE WAS AUTO-GENERATED. DO NOT EDIT BY HAND. + if (SKIP_FILES.has(filename)) continue; + + let tests; + try { + const content = fs.readFileSync(`${__dirname}/${filename}`, "utf8"); + tests = yaml.load(content, { + filename, + // schema: yaml.DEFAULT_SCHEMA + }); + } catch (ex) { + console.error(ex.toString()); + continue; + } + + const out = fs.createWriteStream( + `${__dirname}/generated/${filename.replace(".yaml", ".js")}` + ); + + out.write(`// THIS FILE WAS AUTO-GENERATED. DO NOT EDIT BY HAND. const assert = require('assert'); const path = require('path'); @@ -248,12 +264,12 @@ function step_timeout(result, time) { describe("WPT: ${filename.replace(".yaml", "")}", function () { `); - for (const test of tests) { - out.write(convert(test)); - } + for (const test of tests) { + out.write(convert(test)); + } - out.write(`}); -`) + out.write(`}); +`); - out.end(); + out.end(); } diff --git a/test/wpt/generated/drawing-text-to-the-canvas.js b/test/wpt/generated/drawing-text-to-the-canvas.js index 38cddc45b..1561e1fbd 100644 --- a/test/wpt/generated/drawing-text-to-the-canvas.js +++ b/test/wpt/generated/drawing-text-to-the-canvas.js @@ -1,1122 +1,1800 @@ // THIS FILE WAS AUTO-GENERATED. DO NOT EDIT BY HAND. -const assert = require('assert'); -const path = require('path'); +const assert = require("assert"); +const path = require("path"); const { - createCanvas, - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - CanvasPattern, - CanvasGradient -} = require('../../..'); + createCanvas, + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + CanvasPattern, + CanvasGradient, +} = require("../../.."); const window = { - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - Uint8ClampedArray, - CanvasPattern, - CanvasGradient + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + Uint8ClampedArray, + CanvasPattern, + CanvasGradient, }; const document = { - createElement(type, ...args) { - if (type !== "canvas") - throw new Error(`createElement(${type}) not supported`); - return createCanvas(...args); - } + createElement(type, ...args) { + if (type !== "canvas") + throw new Error(`createElement(${type}) not supported`); + return createCanvas(...args); + }, }; function _getPixel(canvas, x, y) { - const ctx = canvas.getContext('2d'); - const imgdata = ctx.getImageData(x, y, 1, 1); - return [ imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3] ]; + const ctx = canvas.getContext("2d"); + const imgdata = ctx.getImageData(x, y, 1, 1); + return [imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3]]; } -function _assertApprox(actual, expected, epsilon=0, msg="") { - assert(typeof actual === "number", "actual should be a number but got a ${typeof type_actual}"); - - // The epsilon math below does not place nice with NaN and Infinity - // But in this case Infinity = Infinity and NaN = NaN - if (isFinite(actual) || isFinite(expected)) { - assert(Math.abs(actual - expected) <= epsilon, - `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}`); - } else { - assert.strictEqual(actual, expected); - } +function _assertApprox(actual, expected, epsilon = 0, msg = "") { + assert( + typeof actual === "number", + "actual should be a number but got a ${typeof type_actual}" + ); + + // The epsilon math below does not place nice with NaN and Infinity + // But in this case Infinity = Infinity and NaN = NaN + if (isFinite(actual) || isFinite(expected)) { + assert( + Math.abs(actual - expected) <= epsilon, + `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}` + ); + } else { + assert.strictEqual(actual, expected); + } } function _assertPixel(canvas, x, y, r, g, b, a, pos, color) { - const c = _getPixel(canvas, x,y); - assert.strictEqual(c[0], r, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[1], g, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[2], b, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[3], a, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + assert.strictEqual( + c[0], + r, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[1], + g, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[2], + b, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[3], + a, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function _assertPixelApprox(canvas, x, y, r, g, b, a, pos, color, tolerance) { - const c = _getPixel(canvas, x,y); - _assertApprox(c[0], r, tolerance, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[1], g, tolerance, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[2], b, tolerance, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[3], a, tolerance, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + _assertApprox( + c[0], + r, + tolerance, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[1], + g, + tolerance, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[2], + b, + tolerance, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[3], + a, + tolerance, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function assert_throws_js(Type, fn) { - assert.throws(fn, Type); + assert.throws(fn, Type); } // Used by font tests to allow fonts to load. function deferTest() {} class Test { - // Two cases of this in the tests, look unnecessary. - done() {} - // Used by font tests to allow fonts to load. - step_func_done(func) { func(); } - // Used for image onload callback. - step_func(func) { func(); } + // Two cases of this in the tests, look unnecessary. + done() {} + // Used by font tests to allow fonts to load. + step_func_done(func) { + func(); + } + // Used for image onload callback. + step_func(func) { + func(); + } } function step_timeout(result, time) { - // Nothing; code needs to be converted for this to work. + // Nothing; code needs to be converted for this to work. } describe("WPT: drawing-text-to-the-canvas", function () { - - it("2d.text.draw.fill.basic", function () { - // fillText draws filled text - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('PASS', 5, 35); - }); - - it("2d.text.draw.fill.unaffected", function () { - // fillText does not start a new path or subpath - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('FAIL', 5, 35); - - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 5,45, 0,255,0,255); - }); - - it("2d.text.draw.fill.rtl", function () { - // fillText respects Right-To-Left Override characters - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('\u202eFAIL \xa0 \xa0 SSAP', 5, 35); - }); - - it("2d.text.draw.fill.maxWidth.large", function () { - // fillText handles maxWidth correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('PASS', 5, 35, 200); - }); - - it("2d.text.draw.fill.maxWidth.small", function () { - // fillText handles maxWidth correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('fail fail fail fail fail', -100, 35, 90); - _assertGreen(ctx, 100, 50); - }); - - it("2d.text.draw.fill.maxWidth.zero", function () { - // fillText handles maxWidth correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('fail fail fail fail fail', 5, 35, 0); - _assertGreen(ctx, 100, 50); - }); - - it("2d.text.draw.fill.maxWidth.negative", function () { - // fillText handles maxWidth correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('fail fail fail fail fail', 5, 35, -1); - _assertGreen(ctx, 100, 50); - }); - - it("2d.text.draw.fill.maxWidth.NaN", function () { - // fillText handles maxWidth correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.font = '35px Arial, sans-serif'; - ctx.fillText('fail fail fail fail fail', 5, 35, NaN); - _assertGreen(ctx, 100, 50); - }); - - it("2d.text.draw.stroke.basic", function () { - // strokeText draws stroked text - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.fillStyle = '#f00'; - ctx.lineWidth = 1; - ctx.font = '35px Arial, sans-serif'; - ctx.strokeText('PASS', 5, 35); - }); - - it("2d.text.draw.stroke.unaffected", function () { - // strokeText does not start a new path or subpath - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - - ctx.font = '35px Arial, sans-serif'; - ctx.strokeStyle = '#f00'; - ctx.strokeText('FAIL', 5, 35); - - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 5,45, 0,255,0,255); - }); - - it("2d.text.draw.kern.consistent", function () { - // Stroked and filled text should have exactly the same kerning so it overlaps - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 3; - ctx.font = '20px Arial, sans-serif'; - ctx.fillText('VAVAVAVAVAVAVA', -50, 25); - ctx.fillText('ToToToToToToTo', -50, 45); - ctx.strokeText('VAVAVAVAVAVAVA', -50, 25); - ctx.strokeText('ToToToToToToTo', -50, 45); - }); - - it("2d.text.draw.fill.maxWidth.fontface", function () { - // fillText works on @font-face fonts - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillText('EEEE', -50, 37.5, 40); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.fill.maxWidth.bound", function () { - // fillText handles maxWidth based on line size, not bounding box size - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('DD', 0, 37.5, 100); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.fontface", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '67px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('AA', 0, 50); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.fontface.repeat", function () { - // Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.font = '67px CanvasTest'; - ctx.fillStyle = '#0f0'; - ctx.fillText('AA', 0, 50); - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillText('AA', 0, 50); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.fontface.notinpage", function () { - // @font-face fonts should work even if they are not used in the page - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '67px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('AA', 0, 50); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.align.left", function () { - // textAlign left is the left of the first em square (not the bounding box) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'left'; - ctx.fillText('DD', 0, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - _assertPixelApprox(canvas, 5,45, 0,255,0,255); - _assertPixelApprox(canvas, 95,45, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.align.right", function () { - // textAlign right is the right of the last em square (not the bounding box) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'right'; - ctx.fillText('DD', 100, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - _assertPixelApprox(canvas, 5,45, 0,255,0,255); - _assertPixelApprox(canvas, 95,45, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.align.start.ltr", function () { - // textAlign start with ltr is the left edge - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'start'; - ctx.fillText('DD', 0, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - _assertPixelApprox(canvas, 5,45, 0,255,0,255); - _assertPixelApprox(canvas, 95,45, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.align.start.rtl", function () { - // textAlign start with rtl is the right edge - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'start'; - ctx.fillText('DD', 100, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - _assertPixelApprox(canvas, 5,45, 0,255,0,255); - _assertPixelApprox(canvas, 95,45, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.align.end.ltr", function () { - // textAlign end with ltr is the right edge - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'end'; - ctx.fillText('DD', 100, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - _assertPixelApprox(canvas, 5,45, 0,255,0,255); - _assertPixelApprox(canvas, 95,45, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.align.end.rtl", function () { - // textAlign end with rtl is the left edge - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'end'; - ctx.fillText('DD', 0, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - _assertPixelApprox(canvas, 5,45, 0,255,0,255); - _assertPixelApprox(canvas, 95,45, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.align.center", function () { - // textAlign center is the center of the em squares (not the bounding box) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'center'; - ctx.fillText('DD', 50, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - _assertPixelApprox(canvas, 5,45, 0,255,0,255); - _assertPixelApprox(canvas, 95,45, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.space.basic", function () { - // U+0020 is rendered the correct size (1em wide) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('E EE', -100, 37.5); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.space.collapse.nonspace", function () { - // Non-space characters are not converted to U+0020 and collapsed - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('E\x0b EE', -150, 37.5); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }), 500); - }); - - it("2d.text.measure.width.basic", function () { - // The width of character is same as font used - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - assert.strictEqual(ctx.measureText('A').width, 50, "ctx.measureText('A').width", "50") - assert.strictEqual(ctx.measureText('AA').width, 100, "ctx.measureText('AA').width", "100") - assert.strictEqual(ctx.measureText('ABCD').width, 200, "ctx.measureText('ABCD').width", "200") - - ctx.font = '100px CanvasTest'; - assert.strictEqual(ctx.measureText('A').width, 100, "ctx.measureText('A').width", "100") - }), 500); - }); - }); - - it("2d.text.measure.width.empty", function () { - // The empty string has zero width - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - assert.strictEqual(ctx.measureText("").width, 0, "ctx.measureText(\"\").width", "0") - }), 500); - }); - }); - - it("2d.text.measure.advances", function () { - // Testing width advances - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - ctx.direction = 'ltr'; - ctx.align = 'left' - // Some platforms may return '-0'. - assert.strictEqual(Math.abs(ctx.measureText('Hello').advances[0]), 0, "Math.abs(ctx.measureText('Hello').advances[\""+(0)+"\"])", "0") - // Different platforms may render text slightly different. - assert(ctx.measureText('Hello').advances[1] >= 36, "ctx.measureText('Hello').advances[\""+(1)+"\"] >= 36"); - assert(ctx.measureText('Hello').advances[2] >= 58, "ctx.measureText('Hello').advances[\""+(2)+"\"] >= 58"); - assert(ctx.measureText('Hello').advances[3] >= 70, "ctx.measureText('Hello').advances[\""+(3)+"\"] >= 70"); - assert(ctx.measureText('Hello').advances[4] >= 80, "ctx.measureText('Hello').advances[\""+(4)+"\"] >= 80"); - - var tm = ctx.measureText('Hello'); - assert.strictEqual(ctx.measureText('Hello').advances[0], tm.advances[0], "ctx.measureText('Hello').advances[\""+(0)+"\"]", "tm.advances[\""+(0)+"\"]") - assert.strictEqual(ctx.measureText('Hello').advances[1], tm.advances[1], "ctx.measureText('Hello').advances[\""+(1)+"\"]", "tm.advances[\""+(1)+"\"]") - assert.strictEqual(ctx.measureText('Hello').advances[2], tm.advances[2], "ctx.measureText('Hello').advances[\""+(2)+"\"]", "tm.advances[\""+(2)+"\"]") - assert.strictEqual(ctx.measureText('Hello').advances[3], tm.advances[3], "ctx.measureText('Hello').advances[\""+(3)+"\"]", "tm.advances[\""+(3)+"\"]") - assert.strictEqual(ctx.measureText('Hello').advances[4], tm.advances[4], "ctx.measureText('Hello').advances[\""+(4)+"\"]", "tm.advances[\""+(4)+"\"]") - }), 500); - }); - }); - - it("2d.text.measure.actualBoundingBox", function () { - // Testing actualBoundingBox - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - ctx.direction = 'ltr'; - ctx.align = 'left' - ctx.baseline = 'alphabetic' - // Different platforms may render text slightly different. - // Values that are nominally expected to be zero might actually vary by a pixel or so - // if the UA accounts for antialiasing at glyph edges, so we allow a slight deviation. - assert(Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1"); - assert(ctx.measureText('A').actualBoundingBoxRight >= 50, "ctx.measureText('A').actualBoundingBoxRight >= 50"); - assert(ctx.measureText('A').actualBoundingBoxAscent >= 35, "ctx.measureText('A').actualBoundingBoxAscent >= 35"); - assert(Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1, "Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1"); - - assert(ctx.measureText('D').actualBoundingBoxLeft >= 48, "ctx.measureText('D').actualBoundingBoxLeft >= 48"); - assert(ctx.measureText('D').actualBoundingBoxLeft <= 52, "ctx.measureText('D').actualBoundingBoxLeft <= 52"); - assert(ctx.measureText('D').actualBoundingBoxRight >= 75, "ctx.measureText('D').actualBoundingBoxRight >= 75"); - assert(ctx.measureText('D').actualBoundingBoxRight <= 80, "ctx.measureText('D').actualBoundingBoxRight <= 80"); - assert(ctx.measureText('D').actualBoundingBoxAscent >= 35, "ctx.measureText('D').actualBoundingBoxAscent >= 35"); - assert(ctx.measureText('D').actualBoundingBoxAscent <= 40, "ctx.measureText('D').actualBoundingBoxAscent <= 40"); - assert(ctx.measureText('D').actualBoundingBoxDescent >= 12, "ctx.measureText('D').actualBoundingBoxDescent >= 12"); - assert(ctx.measureText('D').actualBoundingBoxDescent <= 15, "ctx.measureText('D').actualBoundingBoxDescent <= 15"); - - assert(Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1, "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1"); - assert(ctx.measureText('ABCD').actualBoundingBoxRight >= 200, "ctx.measureText('ABCD').actualBoundingBoxRight >= 200"); - assert(ctx.measureText('ABCD').actualBoundingBoxAscent >= 85, "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85"); - assert(ctx.measureText('ABCD').actualBoundingBoxDescent >= 37, "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37"); - }), 500); - }); - }); - - it("2d.text.measure.fontBoundingBox", function () { - // Testing fontBoundingBox - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - ctx.direction = 'ltr'; - ctx.align = 'left' - assert.strictEqual(ctx.measureText('A').fontBoundingBoxAscent, 85, "ctx.measureText('A').fontBoundingBoxAscent", "85") - assert.strictEqual(ctx.measureText('A').fontBoundingBoxDescent, 39, "ctx.measureText('A').fontBoundingBoxDescent", "39") - - assert.strictEqual(ctx.measureText('ABCD').fontBoundingBoxAscent, 85, "ctx.measureText('ABCD').fontBoundingBoxAscent", "85") - assert.strictEqual(ctx.measureText('ABCD').fontBoundingBoxDescent, 39, "ctx.measureText('ABCD').fontBoundingBoxDescent", "39") - }), 500); - }); - }); - - it("2d.text.measure.fontBoundingBox.ahem", function () { - // Testing fontBoundingBox for font ahem - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - deferTest(); - var f = new FontFace("Ahem", "/fonts/Ahem.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px Ahem'; - ctx.direction = 'ltr'; - ctx.align = 'left' - assert.strictEqual(ctx.measureText('A').fontBoundingBoxAscent, 40, "ctx.measureText('A').fontBoundingBoxAscent", "40") - assert.strictEqual(ctx.measureText('A').fontBoundingBoxDescent, 10, "ctx.measureText('A').fontBoundingBoxDescent", "10") - - assert.strictEqual(ctx.measureText('ABCD').fontBoundingBoxAscent, 40, "ctx.measureText('ABCD').fontBoundingBoxAscent", "40") - assert.strictEqual(ctx.measureText('ABCD').fontBoundingBoxDescent, 10, "ctx.measureText('ABCD').fontBoundingBoxDescent", "10") - }), 500); - }); - }); - - it("2d.text.measure.emHeights", function () { - // Testing emHeights - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - ctx.direction = 'ltr'; - ctx.align = 'left' - assert.strictEqual(ctx.measureText('A').emHeightAscent, 37.5, "ctx.measureText('A').emHeightAscent", "37.5") - assert.strictEqual(ctx.measureText('A').emHeightDescent, 12.5, "ctx.measureText('A').emHeightDescent", "12.5") - assert.strictEqual(ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent, 50, "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", "50") - - assert.strictEqual(ctx.measureText('ABCD').emHeightAscent, 37.5, "ctx.measureText('ABCD').emHeightAscent", "37.5") - assert.strictEqual(ctx.measureText('ABCD').emHeightDescent, 12.5, "ctx.measureText('ABCD').emHeightDescent", "12.5") - assert.strictEqual(ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent, 50, "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", "50") - }), 500); - }); - }); - - it("2d.text.measure.baselines", function () { - // Testing baselines - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - ctx.direction = 'ltr'; - ctx.align = 'left' - assert.strictEqual(Math.abs(ctx.measureText('A').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('A').getBaselines().alphabetic)", "0") - assert.strictEqual(ctx.measureText('A').getBaselines().ideographic, -39, "ctx.measureText('A').getBaselines().ideographic", "-39") - assert.strictEqual(ctx.measureText('A').getBaselines().hanging, 68, "ctx.measureText('A').getBaselines().hanging", "68") - - assert.strictEqual(Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic), 0, "Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic)", "0") - assert.strictEqual(ctx.measureText('ABCD').getBaselines().ideographic, -39, "ctx.measureText('ABCD').getBaselines().ideographic", "-39") - assert.strictEqual(ctx.measureText('ABCD').getBaselines().hanging, 68, "ctx.measureText('ABCD').getBaselines().hanging", "68") - }), 500); - }); - }); - - it("2d.text.drawing.style.spacing", function () { - // Testing letter spacing and word spacing - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'") - assert.strictEqual(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'") - - ctx.letterSpacing = '3px'; - assert.strictEqual(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'") - assert.strictEqual(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'") - - ctx.wordSpacing = '5px'; - assert.strictEqual(ctx.letterSpacing, '3px', "ctx.letterSpacing", "'3px'") - assert.strictEqual(ctx.wordSpacing, '5px', "ctx.wordSpacing", "'5px'") - - ctx.letterSpacing = '-1px'; - ctx.wordSpacing = '-1px'; - assert.strictEqual(ctx.letterSpacing, '-1px', "ctx.letterSpacing", "'-1px'") - assert.strictEqual(ctx.wordSpacing, '-1px', "ctx.wordSpacing", "'-1px'") - - ctx.letterSpacing = '1PX'; - ctx.wordSpacing = '1EM'; - assert.strictEqual(ctx.letterSpacing, '1px', "ctx.letterSpacing", "'1px'") - assert.strictEqual(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'") - }); - - it("2d.text.drawing.style.nonfinite.spacing", function () { - // Testing letter spacing and word spacing with nonfinite inputs - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'") - assert.strictEqual(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'") - - function test_word_spacing(value) { - ctx.wordSpacing = value; - ctx.letterSpacing = value; - assert.strictEqual(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'") - assert.strictEqual(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'") - } - test_word_spacing(NaN); - test_word_spacing(Infinity); - test_word_spacing(-Infinity); - }); - - it("2d.text.drawing.style.invalid.spacing", function () { - // Testing letter spacing and word spacing with invalid units - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'") - assert.strictEqual(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'") - - function test_word_spacing(value) { - ctx.wordSpacing = value; - ctx.letterSpacing = value; - assert.strictEqual(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'") - assert.strictEqual(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'") - } - test_word_spacing('0s'); - test_word_spacing('1min'); - test_word_spacing('1deg'); - test_word_spacing('1pp'); - }); - - it("2d.text.drawing.style.letterSpacing.measure", function () { - // Testing letter spacing and word spacing - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'") - assert.strictEqual(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'") - var width_normal = ctx.measureText('Hello World').width; - - function test_letter_spacing(value, difference_spacing, epsilon) { - ctx.letterSpacing = value; - assert.strictEqual(ctx.letterSpacing, value, "ctx.letterSpacing", "value") - assert.strictEqual(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'") - width_with_letter_spacing = ctx.measureText('Hello World').width; - assert_approx_equals(width_with_letter_spacing, width_normal + difference_spacing, epsilon, "letter spacing doesn't work."); - } - - // The first value is the letter Spacing to be set, the second value the - // change in length of string 'Hello World', note that there are 11 letters - // in 'hello world', so the length difference is always letterSpacing * 11. - // and the third value is the acceptable differencee for the length change, - // note that unit such as 1cm/1mm doesn't map to an exact pixel value. - test_cases = [['3px', 33, 0], - ['5px', 55, 0], - ['-2px', -22, 0], - ['1em', 110, 0], - ['1in', 1056, 0], - ['-0.1cm', -41.65, 0.2], - ['-0.6mm', -24,95, 0.2]] - - for (const test_case of test_cases) { - test_letter_spacing(test_case[0], test_case[1], test_case[2]); - } - }); - - it("2d.text.drawing.style.wordSpacing.measure", function () { - // Testing if word spacing is working properly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'") - assert.strictEqual(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'") - var width_normal = ctx.measureText('Hello World, again').width; - - function test_word_spacing(value, difference_spacing, epsilon) { - ctx.wordSpacing = value; - assert.strictEqual(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'") - assert.strictEqual(ctx.wordSpacing, value, "ctx.wordSpacing", "value") - width_with_word_spacing = ctx.measureText('Hello World, again').width; - assert_approx_equals(width_with_word_spacing, width_normal + difference_spacing, epsilon, "word spacing doesn't work."); - } - - // The first value is the word Spacing to be set, the second value the - // change in length of string 'Hello World', note that there are 2 words - // in 'Hello World, again', so the length difference is always wordSpacing * 2. - // and the third value is the acceptable differencee for the length change, - // note that unit such as 1cm/1mm doesn't map to an exact pixel value. - test_cases = [['3px', 6, 0], - ['5px', 10, 0], - ['-2px', -4, 0], - ['1em', 20, 0], - ['1in', 192, 0], - ['-0.1cm', -7.57, 0.2], - ['-0.6mm', -4.54, 0.2]] - - for (const test_case of test_cases) { - test_word_spacing(test_case[0], test_case[1], test_case[2]); - } - }); - - it("2d.text.drawing.style.letterSpacing.change.font", function () { - // Set letter spacing and word spacing to font dependent value and verify it works after font change. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'") - assert.strictEqual(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'") - // Get the width for 'Hello World' at default size, 10px. - var width_normal = ctx.measureText('Hello World').width; - - ctx.letterSpacing = '1em'; - assert.strictEqual(ctx.letterSpacing, '1em', "ctx.letterSpacing", "'1em'") - // 1em = 10px. Add 10px after each letter in "Hello World", - // makes it 110px longer. - var width_with_spacing = ctx.measureText('Hello World').width; - assert.strictEqual(width_with_spacing, width_normal + 110, "width_with_spacing", "width_normal + 110") - - // Changing font to 20px. Without resetting the spacing, 1em letterSpacing - // is now 20px, so it's suppose to be 220px longer without any letterSpacing set. - ctx.font = '20px serif'; - width_with_spacing = ctx.measureText('Hello World').width; - // Now calculate the reference spacing for "Hello World" with no spacing. - ctx.letterSpacing = '0em'; - width_normal = ctx.measureText('Hello World').width; - assert.strictEqual(width_with_spacing, width_normal + 220, "width_with_spacing", "width_normal + 220") - }); - - it("2d.text.drawing.style.wordSpacing.change.font", function () { - // Set word spacing and word spacing to font dependent value and verify it works after font change. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.letterSpacing, '0px', "ctx.letterSpacing", "'0px'") - assert.strictEqual(ctx.wordSpacing, '0px', "ctx.wordSpacing", "'0px'") - // Get the width for 'Hello World, again' at default size, 10px. - var width_normal = ctx.measureText('Hello World, again').width; - - ctx.wordSpacing = '1em'; - assert.strictEqual(ctx.wordSpacing, '1em', "ctx.wordSpacing", "'1em'") - // 1em = 10px. Add 10px after each word in "Hello World, again", - // makes it 20px longer. - var width_with_spacing = ctx.measureText('Hello World, again').width; - assert.strictEqual(width_with_spacing, width_normal + 20, "width_with_spacing", "width_normal + 20") - - // Changing font to 20px. Without resetting the spacing, 1em wordSpacing - // is now 20px, so it's suppose to be 40px longer without any wordSpacing set. - ctx.font = '20px serif'; - width_with_spacing = ctx.measureText('Hello World, again').width; - // Now calculate the reference spacing for "Hello World, again" with no spacing. - ctx.wordSpacing = '0em'; - width_normal = ctx.measureText('Hello World, again').width; - assert.strictEqual(width_with_spacing, width_normal + 40, "width_with_spacing", "width_normal + 40") - }); - - it("2d.text.drawing.style.fontKerning", function () { - // Testing basic functionalities of fontKerning for canvas - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"") - ctx.fontKerning = "normal"; - assert.strictEqual(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"") - width_normal = ctx.measureText("TAWATAVA").width; - ctx.fontKerning = "none"; - assert.strictEqual(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"") - width_none = ctx.measureText("TAWATAVA").width; - assert(width_normal < width_none, "width_normal < width_none"); - }); - - it("2d.text.drawing.style.fontKerning.with.uppercase", function () { - // Testing basic functionalities of fontKerning for canvas - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.fontKerning, "auto", "ctx.fontKerning", "\"auto\"") - ctx.fontKerning = "Normal"; - assert.strictEqual(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"") - ctx.fontKerning = "Auto"; - ctx.fontKerning = "normal"; - assert.strictEqual(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"") - ctx.fontKerning = "Auto"; - ctx.fontKerning = "noRmal"; - assert.strictEqual(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"") - ctx.fontKerning = "Auto"; - ctx.fontKerning = "NoRMal"; - assert.strictEqual(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"") - ctx.fontKerning = "Auto"; - ctx.fontKerning = "NORMAL"; - assert.strictEqual(ctx.fontKerning, "normal", "ctx.fontKerning", "\"normal\"") - - ctx.fontKerning = "None"; - assert.strictEqual(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"") - ctx.fontKerning = "Auto"; - ctx.fontKerning = "none"; - assert.strictEqual(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"") - ctx.fontKerning = "Auto"; - ctx.fontKerning = "nOne"; - assert.strictEqual(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"") - ctx.fontKerning = "Auto"; - ctx.fontKerning = "nonE"; - assert.strictEqual(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"") - ctx.fontKerning = "Auto"; - ctx.fontKerning = "NONE"; - assert.strictEqual(ctx.fontKerning, "none", "ctx.fontKerning", "\"none\"") - }); - - it("2d.text.drawing.style.fontVariant.settings", function () { - // Testing basic functionalities of fontKerning for canvas - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - // Setting fontVariantCaps with lower cases - assert.strictEqual(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"") - - ctx.fontVariantCaps = "normal"; - assert.strictEqual(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"") - - ctx.fontVariantCaps = "small-caps"; - assert.strictEqual(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"") - - ctx.fontVariantCaps = "all-small-caps"; - assert.strictEqual(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"") - - ctx.fontVariantCaps = "petite-caps"; - assert.strictEqual(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"") - - ctx.fontVariantCaps = "all-petite-caps"; - assert.strictEqual(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"") - - ctx.fontVariantCaps = "unicase"; - assert.strictEqual(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"") - - ctx.fontVariantCaps = "titling-caps"; - assert.strictEqual(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"") - - // Setting fontVariantCaps with lower cases and upper cases word. - ctx.fontVariantCaps = "nORmal"; - assert.strictEqual(ctx.fontVariantCaps, "normal", "ctx.fontVariantCaps", "\"normal\"") - - ctx.fontVariantCaps = "smaLL-caps"; - assert.strictEqual(ctx.fontVariantCaps, "small-caps", "ctx.fontVariantCaps", "\"small-caps\"") - - ctx.fontVariantCaps = "all-small-CAPS"; - assert.strictEqual(ctx.fontVariantCaps, "all-small-caps", "ctx.fontVariantCaps", "\"all-small-caps\"") - - ctx.fontVariantCaps = "pEtitE-caps"; - assert.strictEqual(ctx.fontVariantCaps, "petite-caps", "ctx.fontVariantCaps", "\"petite-caps\"") - - ctx.fontVariantCaps = "All-Petite-Caps"; - assert.strictEqual(ctx.fontVariantCaps, "all-petite-caps", "ctx.fontVariantCaps", "\"all-petite-caps\"") - - ctx.fontVariantCaps = "uNIcase"; - assert.strictEqual(ctx.fontVariantCaps, "unicase", "ctx.fontVariantCaps", "\"unicase\"") - - ctx.fontVariantCaps = "titling-CAPS"; - assert.strictEqual(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"") - - // Setting fontVariantCaps with non-existing font variant. - ctx.fontVariantCaps = "abcd"; - assert.strictEqual(ctx.fontVariantCaps, "titling-caps", "ctx.fontVariantCaps", "\"titling-caps\"") - }); - - it("2d.text.drawing.style.textRendering.settings", function () { - // Testing basic functionalities of textRendering in Canvas - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - // Setting textRendering with lower cases - assert.strictEqual(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"") - - ctx.textRendering = "auto"; - assert.strictEqual(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"") - - ctx.textRendering = "optimizespeed"; - assert.strictEqual(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"") - - ctx.textRendering = "optimizelegibility"; - assert.strictEqual(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"") - - ctx.textRendering = "geometricprecision"; - assert.strictEqual(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"") - - // Setting textRendering with lower cases and upper cases word. - ctx.textRendering = "aUto"; - assert.strictEqual(ctx.textRendering, "auto", "ctx.textRendering", "\"auto\"") - - ctx.textRendering = "OPtimizeSpeed"; - assert.strictEqual(ctx.textRendering, "optimizeSpeed", "ctx.textRendering", "\"optimizeSpeed\"") - - ctx.textRendering = "OPtimizELEgibility"; - assert.strictEqual(ctx.textRendering, "optimizeLegibility", "ctx.textRendering", "\"optimizeLegibility\"") - - ctx.textRendering = "GeometricPrecision"; - assert.strictEqual(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"") - - // Setting textRendering with non-existing font variant. - ctx.textRendering = "abcd"; - assert.strictEqual(ctx.textRendering, "geometricPrecision", "ctx.textRendering", "\"geometricPrecision\"") - }); + it("2d.text.draw.fill.basic", function () { + // fillText draws filled text + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#000"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.strokeStyle = "#f00"; + ctx.font = "35px Arial, sans-serif"; + ctx.fillText("PASS", 5, 35); + }); + + it("2d.text.draw.fill.unaffected", function () { + // fillText does not start a new path or subpath + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + + ctx.font = "35px Arial, sans-serif"; + ctx.fillText("FAIL", 5, 35); + + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 5, 45, 0, 255, 0, 255); + }); + + it("2d.text.draw.fill.rtl", function () { + // fillText respects Right-To-Left Override characters + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#000"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.strokeStyle = "#f00"; + ctx.font = "35px Arial, sans-serif"; + ctx.fillText("\u202eFAIL \xa0 \xa0 SSAP", 5, 35); + }); + + it("2d.text.draw.fill.maxWidth.large", function () { + // fillText handles maxWidth correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#000"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.font = "35px Arial, sans-serif"; + ctx.fillText("PASS", 5, 35, 200); + }); + + it("2d.text.draw.fill.maxWidth.small", function () { + // fillText handles maxWidth correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.font = "35px Arial, sans-serif"; + ctx.fillText("fail fail fail fail fail", -100, 35, 90); + _assertGreen(ctx, 100, 50); + }); + + it("2d.text.draw.fill.maxWidth.zero", function () { + // fillText handles maxWidth correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.font = "35px Arial, sans-serif"; + ctx.fillText("fail fail fail fail fail", 5, 35, 0); + _assertGreen(ctx, 100, 50); + }); + + it("2d.text.draw.fill.maxWidth.negative", function () { + // fillText handles maxWidth correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.font = "35px Arial, sans-serif"; + ctx.fillText("fail fail fail fail fail", 5, 35, -1); + _assertGreen(ctx, 100, 50); + }); + + it("2d.text.draw.fill.maxWidth.NaN", function () { + // fillText handles maxWidth correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.font = "35px Arial, sans-serif"; + ctx.fillText("fail fail fail fail fail", 5, 35, NaN); + _assertGreen(ctx, 100, 50); + }); + + it("2d.text.draw.stroke.basic", function () { + // strokeText draws stroked text + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#000"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.fillStyle = "#f00"; + ctx.lineWidth = 1; + ctx.font = "35px Arial, sans-serif"; + ctx.strokeText("PASS", 5, 35); + }); + + it("2d.text.draw.stroke.unaffected", function () { + // strokeText does not start a new path or subpath + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + + ctx.font = "35px Arial, sans-serif"; + ctx.strokeStyle = "#f00"; + ctx.strokeText("FAIL", 5, 35); + + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 5, 45, 0, 255, 0, 255); + }); + + it("2d.text.draw.kern.consistent", function () { + // Stroked and filled text should have exactly the same kerning so it overlaps + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 3; + ctx.font = "20px Arial, sans-serif"; + ctx.fillText("VAVAVAVAVAVAVA", -50, 25); + ctx.fillText("ToToToToToToTo", -50, 45); + ctx.strokeText("VAVAVAVAVAVAVA", -50, 25); + ctx.strokeText("ToToToToToToTo", -50, 45); + }); + + it("2d.text.draw.fill.maxWidth.fontface", function () { + // fillText works on @font-face fonts + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.fillText("EEEE", -50, 37.5, 40); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.fill.maxWidth.bound", function () { + // fillText handles maxWidth based on line size, not bounding box size + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.fillText("DD", 0, 37.5, 100); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.fontface", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "67px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.fillText("AA", 0, 50); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.fontface.repeat", function () { + // Draw with the font immediately, then wait a bit until and draw again. (This crashes some version of WebKit.) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.font = "67px CanvasTest"; + ctx.fillStyle = "#0f0"; + ctx.fillText("AA", 0, 50); + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillText("AA", 0, 50); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.fontface.notinpage", function () { + // @font-face fonts should work even if they are not used in the page + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "67px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.fillText("AA", 0, 50); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.align.left", function () { + // textAlign left is the left of the first em square (not the bounding box) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textAlign = "left"; + ctx.fillText("DD", 0, 37.5); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 5, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 45, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.align.right", function () { + // textAlign right is the right of the last em square (not the bounding box) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textAlign = "right"; + ctx.fillText("DD", 100, 37.5); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 5, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 45, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.align.start.ltr", function () { + // textAlign start with ltr is the left edge + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textAlign = "start"; + ctx.fillText("DD", 0, 37.5); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 5, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 45, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.align.start.rtl", function () { + // textAlign start with rtl is the right edge + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textAlign = "start"; + ctx.fillText("DD", 100, 37.5); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 5, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 45, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.align.end.ltr", function () { + // textAlign end with ltr is the right edge + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textAlign = "end"; + ctx.fillText("DD", 100, 37.5); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 5, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 45, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.align.end.rtl", function () { + // textAlign end with rtl is the left edge + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textAlign = "end"; + ctx.fillText("DD", 0, 37.5); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 5, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 45, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.align.center", function () { + // textAlign center is the center of the em squares (not the bounding box) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textAlign = "center"; + ctx.fillText("DD", 50, 37.5); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 5, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 45, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.space.basic", function () { + // U+0020 is rendered the correct size (1em wide) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.fillText("E EE", -100, 37.5); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.space.collapse.nonspace", function () { + // Non-space characters are not converted to U+0020 and collapsed + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.fillText("E\x0b EE", -150, 37.5); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.measure.width.basic", function () { + // The width of character is same as font used + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout( + t.step_func_done(function () { + ctx.font = "50px CanvasTest"; + assert.strictEqual( + ctx.measureText("A").width, + 50, + "ctx.measureText('A').width", + "50" + ); + assert.strictEqual( + ctx.measureText("AA").width, + 100, + "ctx.measureText('AA').width", + "100" + ); + assert.strictEqual( + ctx.measureText("ABCD").width, + 200, + "ctx.measureText('ABCD').width", + "200" + ); + + ctx.font = "100px CanvasTest"; + assert.strictEqual( + ctx.measureText("A").width, + 100, + "ctx.measureText('A').width", + "100" + ); + }), + 500 + ); + }); + }); + + it("2d.text.measure.width.empty", function () { + // The empty string has zero width + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout( + t.step_func_done(function () { + ctx.font = "50px CanvasTest"; + assert.strictEqual( + ctx.measureText("").width, + 0, + 'ctx.measureText("").width', + "0" + ); + }), + 500 + ); + }); + }); + + it("2d.text.measure.advances", function () { + // Testing width advances + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout( + t.step_func_done(function () { + ctx.font = "50px CanvasTest"; + ctx.direction = "ltr"; + ctx.align = "left"; + // Some platforms may return '-0'. + assert.strictEqual( + Math.abs(ctx.measureText("Hello").advances[0]), + 0, + "Math.abs(ctx.measureText('Hello').advances[\"" + + 0 + + '"])', + "0" + ); + // Different platforms may render text slightly different. + assert( + ctx.measureText("Hello").advances[1] >= 36, + "ctx.measureText('Hello').advances[\"" + 1 + '"] >= 36' + ); + assert( + ctx.measureText("Hello").advances[2] >= 58, + "ctx.measureText('Hello').advances[\"" + 2 + '"] >= 58' + ); + assert( + ctx.measureText("Hello").advances[3] >= 70, + "ctx.measureText('Hello').advances[\"" + 3 + '"] >= 70' + ); + assert( + ctx.measureText("Hello").advances[4] >= 80, + "ctx.measureText('Hello').advances[\"" + 4 + '"] >= 80' + ); + + var tm = ctx.measureText("Hello"); + assert.strictEqual( + ctx.measureText("Hello").advances[0], + tm.advances[0], + "ctx.measureText('Hello').advances[\"" + 0 + '"]', + 'tm.advances["' + 0 + '"]' + ); + assert.strictEqual( + ctx.measureText("Hello").advances[1], + tm.advances[1], + "ctx.measureText('Hello').advances[\"" + 1 + '"]', + 'tm.advances["' + 1 + '"]' + ); + assert.strictEqual( + ctx.measureText("Hello").advances[2], + tm.advances[2], + "ctx.measureText('Hello').advances[\"" + 2 + '"]', + 'tm.advances["' + 2 + '"]' + ); + assert.strictEqual( + ctx.measureText("Hello").advances[3], + tm.advances[3], + "ctx.measureText('Hello').advances[\"" + 3 + '"]', + 'tm.advances["' + 3 + '"]' + ); + assert.strictEqual( + ctx.measureText("Hello").advances[4], + tm.advances[4], + "ctx.measureText('Hello').advances[\"" + 4 + '"]', + 'tm.advances["' + 4 + '"]' + ); + }), + 500 + ); + }); + }); + + it("2d.text.measure.actualBoundingBox", function () { + // Testing actualBoundingBox + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout( + t.step_func_done(function () { + ctx.font = "50px CanvasTest"; + ctx.direction = "ltr"; + ctx.align = "left"; + ctx.baseline = "alphabetic"; + // Different platforms may render text slightly different. + // Values that are nominally expected to be zero might actually vary by a pixel or so + // if the UA accounts for antialiasing at glyph edges, so we allow a slight deviation. + assert( + Math.abs(ctx.measureText("A").actualBoundingBoxLeft) <= + 1, + "Math.abs(ctx.measureText('A').actualBoundingBoxLeft) <= 1" + ); + assert( + ctx.measureText("A").actualBoundingBoxRight >= 50, + "ctx.measureText('A').actualBoundingBoxRight >= 50" + ); + assert( + ctx.measureText("A").actualBoundingBoxAscent >= 35, + "ctx.measureText('A').actualBoundingBoxAscent >= 35" + ); + assert( + Math.abs( + ctx.measureText("A").actualBoundingBoxDescent + ) <= 1, + "Math.abs(ctx.measureText('A').actualBoundingBoxDescent) <= 1" + ); + + assert( + ctx.measureText("D").actualBoundingBoxLeft >= 48, + "ctx.measureText('D').actualBoundingBoxLeft >= 48" + ); + assert( + ctx.measureText("D").actualBoundingBoxLeft <= 52, + "ctx.measureText('D').actualBoundingBoxLeft <= 52" + ); + assert( + ctx.measureText("D").actualBoundingBoxRight >= 75, + "ctx.measureText('D').actualBoundingBoxRight >= 75" + ); + assert( + ctx.measureText("D").actualBoundingBoxRight <= 80, + "ctx.measureText('D').actualBoundingBoxRight <= 80" + ); + assert( + ctx.measureText("D").actualBoundingBoxAscent >= 35, + "ctx.measureText('D').actualBoundingBoxAscent >= 35" + ); + assert( + ctx.measureText("D").actualBoundingBoxAscent <= 40, + "ctx.measureText('D').actualBoundingBoxAscent <= 40" + ); + assert( + ctx.measureText("D").actualBoundingBoxDescent >= 12, + "ctx.measureText('D').actualBoundingBoxDescent >= 12" + ); + assert( + ctx.measureText("D").actualBoundingBoxDescent <= 15, + "ctx.measureText('D').actualBoundingBoxDescent <= 15" + ); + + assert( + Math.abs( + ctx.measureText("ABCD").actualBoundingBoxLeft + ) <= 1, + "Math.abs(ctx.measureText('ABCD').actualBoundingBoxLeft) <= 1" + ); + assert( + ctx.measureText("ABCD").actualBoundingBoxRight >= 200, + "ctx.measureText('ABCD').actualBoundingBoxRight >= 200" + ); + assert( + ctx.measureText("ABCD").actualBoundingBoxAscent >= 85, + "ctx.measureText('ABCD').actualBoundingBoxAscent >= 85" + ); + assert( + ctx.measureText("ABCD").actualBoundingBoxDescent >= 37, + "ctx.measureText('ABCD').actualBoundingBoxDescent >= 37" + ); + }), + 500 + ); + }); + }); + + it("2d.text.measure.fontBoundingBox", function () { + // Testing fontBoundingBox + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout( + t.step_func_done(function () { + ctx.font = "50px CanvasTest"; + ctx.direction = "ltr"; + ctx.align = "left"; + assert.strictEqual( + ctx.measureText("A").fontBoundingBoxAscent, + 85, + "ctx.measureText('A').fontBoundingBoxAscent", + "85" + ); + assert.strictEqual( + ctx.measureText("A").fontBoundingBoxDescent, + 39, + "ctx.measureText('A').fontBoundingBoxDescent", + "39" + ); + + assert.strictEqual( + ctx.measureText("ABCD").fontBoundingBoxAscent, + 85, + "ctx.measureText('ABCD').fontBoundingBoxAscent", + "85" + ); + assert.strictEqual( + ctx.measureText("ABCD").fontBoundingBoxDescent, + 39, + "ctx.measureText('ABCD').fontBoundingBoxDescent", + "39" + ); + }), + 500 + ); + }); + }); + + it("2d.text.measure.fontBoundingBox.ahem", function () { + // Testing fontBoundingBox for font ahem + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + deferTest(); + var f = new FontFace("Ahem", "/fonts/Ahem.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout( + t.step_func_done(function () { + ctx.font = "50px Ahem"; + ctx.direction = "ltr"; + ctx.align = "left"; + assert.strictEqual( + ctx.measureText("A").fontBoundingBoxAscent, + 40, + "ctx.measureText('A').fontBoundingBoxAscent", + "40" + ); + assert.strictEqual( + ctx.measureText("A").fontBoundingBoxDescent, + 10, + "ctx.measureText('A').fontBoundingBoxDescent", + "10" + ); + + assert.strictEqual( + ctx.measureText("ABCD").fontBoundingBoxAscent, + 40, + "ctx.measureText('ABCD').fontBoundingBoxAscent", + "40" + ); + assert.strictEqual( + ctx.measureText("ABCD").fontBoundingBoxDescent, + 10, + "ctx.measureText('ABCD').fontBoundingBoxDescent", + "10" + ); + }), + 500 + ); + }); + }); + + it("2d.text.measure.emHeights", function () { + // Testing emHeights + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout( + t.step_func_done(function () { + ctx.font = "50px CanvasTest"; + ctx.direction = "ltr"; + ctx.align = "left"; + assert.strictEqual( + ctx.measureText("A").emHeightAscent, + 37.5, + "ctx.measureText('A').emHeightAscent", + "37.5" + ); + assert.strictEqual( + ctx.measureText("A").emHeightDescent, + 12.5, + "ctx.measureText('A').emHeightDescent", + "12.5" + ); + assert.strictEqual( + ctx.measureText("A").emHeightDescent + + ctx.measureText("A").emHeightAscent, + 50, + "ctx.measureText('A').emHeightDescent + ctx.measureText('A').emHeightAscent", + "50" + ); + + assert.strictEqual( + ctx.measureText("ABCD").emHeightAscent, + 37.5, + "ctx.measureText('ABCD').emHeightAscent", + "37.5" + ); + assert.strictEqual( + ctx.measureText("ABCD").emHeightDescent, + 12.5, + "ctx.measureText('ABCD').emHeightDescent", + "12.5" + ); + assert.strictEqual( + ctx.measureText("ABCD").emHeightDescent + + ctx.measureText("ABCD").emHeightAscent, + 50, + "ctx.measureText('ABCD').emHeightDescent + ctx.measureText('ABCD').emHeightAscent", + "50" + ); + }), + 500 + ); + }); + }); + + it("2d.text.measure.baselines", function () { + // Testing baselines + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout( + t.step_func_done(function () { + ctx.font = "50px CanvasTest"; + ctx.direction = "ltr"; + ctx.align = "left"; + assert.strictEqual( + Math.abs( + ctx.measureText("A").getBaselines().alphabetic + ), + 0, + "Math.abs(ctx.measureText('A').getBaselines().alphabetic)", + "0" + ); + assert.strictEqual( + ctx.measureText("A").getBaselines().ideographic, + -39, + "ctx.measureText('A').getBaselines().ideographic", + "-39" + ); + assert.strictEqual( + ctx.measureText("A").getBaselines().hanging, + 68, + "ctx.measureText('A').getBaselines().hanging", + "68" + ); + + assert.strictEqual( + Math.abs( + ctx.measureText("ABCD").getBaselines().alphabetic + ), + 0, + "Math.abs(ctx.measureText('ABCD').getBaselines().alphabetic)", + "0" + ); + assert.strictEqual( + ctx.measureText("ABCD").getBaselines().ideographic, + -39, + "ctx.measureText('ABCD').getBaselines().ideographic", + "-39" + ); + assert.strictEqual( + ctx.measureText("ABCD").getBaselines().hanging, + 68, + "ctx.measureText('ABCD').getBaselines().hanging", + "68" + ); + }), + 500 + ); + }); + }); + + it("2d.text.drawing.style.spacing", function () { + // Testing letter spacing and word spacing + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + ctx.letterSpacing, + "0px", + "ctx.letterSpacing", + "'0px'" + ); + assert.strictEqual(ctx.wordSpacing, "0px", "ctx.wordSpacing", "'0px'"); + + ctx.letterSpacing = "3px"; + assert.strictEqual( + ctx.letterSpacing, + "3px", + "ctx.letterSpacing", + "'3px'" + ); + assert.strictEqual(ctx.wordSpacing, "0px", "ctx.wordSpacing", "'0px'"); + + ctx.wordSpacing = "5px"; + assert.strictEqual( + ctx.letterSpacing, + "3px", + "ctx.letterSpacing", + "'3px'" + ); + assert.strictEqual(ctx.wordSpacing, "5px", "ctx.wordSpacing", "'5px'"); + + ctx.letterSpacing = "-1px"; + ctx.wordSpacing = "-1px"; + assert.strictEqual( + ctx.letterSpacing, + "-1px", + "ctx.letterSpacing", + "'-1px'" + ); + assert.strictEqual( + ctx.wordSpacing, + "-1px", + "ctx.wordSpacing", + "'-1px'" + ); + + ctx.letterSpacing = "1PX"; + ctx.wordSpacing = "1EM"; + assert.strictEqual( + ctx.letterSpacing, + "1px", + "ctx.letterSpacing", + "'1px'" + ); + assert.strictEqual(ctx.wordSpacing, "1em", "ctx.wordSpacing", "'1em'"); + }); + + it("2d.text.drawing.style.nonfinite.spacing", function () { + // Testing letter spacing and word spacing with nonfinite inputs + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + ctx.letterSpacing, + "0px", + "ctx.letterSpacing", + "'0px'" + ); + assert.strictEqual(ctx.wordSpacing, "0px", "ctx.wordSpacing", "'0px'"); + + function test_word_spacing(value) { + ctx.wordSpacing = value; + ctx.letterSpacing = value; + assert.strictEqual( + ctx.wordSpacing, + "0px", + "ctx.wordSpacing", + "'0px'" + ); + assert.strictEqual( + ctx.letterSpacing, + "0px", + "ctx.letterSpacing", + "'0px'" + ); + } + test_word_spacing(NaN); + test_word_spacing(Infinity); + test_word_spacing(-Infinity); + }); + + it("2d.text.drawing.style.invalid.spacing", function () { + // Testing letter spacing and word spacing with invalid units + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + ctx.letterSpacing, + "0px", + "ctx.letterSpacing", + "'0px'" + ); + assert.strictEqual(ctx.wordSpacing, "0px", "ctx.wordSpacing", "'0px'"); + + function test_word_spacing(value) { + ctx.wordSpacing = value; + ctx.letterSpacing = value; + assert.strictEqual( + ctx.wordSpacing, + "0px", + "ctx.wordSpacing", + "'0px'" + ); + assert.strictEqual( + ctx.letterSpacing, + "0px", + "ctx.letterSpacing", + "'0px'" + ); + } + test_word_spacing("0s"); + test_word_spacing("1min"); + test_word_spacing("1deg"); + test_word_spacing("1pp"); + }); + + it("2d.text.drawing.style.letterSpacing.measure", function () { + // Testing letter spacing and word spacing + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + ctx.letterSpacing, + "0px", + "ctx.letterSpacing", + "'0px'" + ); + assert.strictEqual(ctx.wordSpacing, "0px", "ctx.wordSpacing", "'0px'"); + var width_normal = ctx.measureText("Hello World").width; + + function test_letter_spacing(value, difference_spacing, epsilon) { + ctx.letterSpacing = value; + assert.strictEqual( + ctx.letterSpacing, + value, + "ctx.letterSpacing", + "value" + ); + assert.strictEqual( + ctx.wordSpacing, + "0px", + "ctx.wordSpacing", + "'0px'" + ); + width_with_letter_spacing = ctx.measureText("Hello World").width; + assert_approx_equals( + width_with_letter_spacing, + width_normal + difference_spacing, + epsilon, + "letter spacing doesn't work." + ); + } + + // The first value is the letter Spacing to be set, the second value the + // change in length of string 'Hello World', note that there are 11 letters + // in 'hello world', so the length difference is always letterSpacing * 11. + // and the third value is the acceptable differencee for the length change, + // note that unit such as 1cm/1mm doesn't map to an exact pixel value. + test_cases = [ + ["3px", 33, 0], + ["5px", 55, 0], + ["-2px", -22, 0], + ["1em", 110, 0], + ["1in", 1056, 0], + ["-0.1cm", -41.65, 0.2], + ["-0.6mm", -24, 95, 0.2], + ]; + + for (const test_case of test_cases) { + test_letter_spacing(test_case[0], test_case[1], test_case[2]); + } + }); + + it("2d.text.drawing.style.wordSpacing.measure", function () { + // Testing if word spacing is working properly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + ctx.letterSpacing, + "0px", + "ctx.letterSpacing", + "'0px'" + ); + assert.strictEqual(ctx.wordSpacing, "0px", "ctx.wordSpacing", "'0px'"); + var width_normal = ctx.measureText("Hello World, again").width; + + function test_word_spacing(value, difference_spacing, epsilon) { + ctx.wordSpacing = value; + assert.strictEqual( + ctx.letterSpacing, + "0px", + "ctx.letterSpacing", + "'0px'" + ); + assert.strictEqual( + ctx.wordSpacing, + value, + "ctx.wordSpacing", + "value" + ); + width_with_word_spacing = + ctx.measureText("Hello World, again").width; + assert_approx_equals( + width_with_word_spacing, + width_normal + difference_spacing, + epsilon, + "word spacing doesn't work." + ); + } + + // The first value is the word Spacing to be set, the second value the + // change in length of string 'Hello World', note that there are 2 words + // in 'Hello World, again', so the length difference is always wordSpacing * 2. + // and the third value is the acceptable differencee for the length change, + // note that unit such as 1cm/1mm doesn't map to an exact pixel value. + test_cases = [ + ["3px", 6, 0], + ["5px", 10, 0], + ["-2px", -4, 0], + ["1em", 20, 0], + ["1in", 192, 0], + ["-0.1cm", -7.57, 0.2], + ["-0.6mm", -4.54, 0.2], + ]; + + for (const test_case of test_cases) { + test_word_spacing(test_case[0], test_case[1], test_case[2]); + } + }); + + it("2d.text.drawing.style.letterSpacing.change.font", function () { + // Set letter spacing and word spacing to font dependent value and verify it works after font change. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + ctx.letterSpacing, + "0px", + "ctx.letterSpacing", + "'0px'" + ); + assert.strictEqual(ctx.wordSpacing, "0px", "ctx.wordSpacing", "'0px'"); + // Get the width for 'Hello World' at default size, 10px. + var width_normal = ctx.measureText("Hello World").width; + + ctx.letterSpacing = "1em"; + assert.strictEqual( + ctx.letterSpacing, + "1em", + "ctx.letterSpacing", + "'1em'" + ); + // 1em = 10px. Add 10px after each letter in "Hello World", + // makes it 110px longer. + var width_with_spacing = ctx.measureText("Hello World").width; + assert.strictEqual( + width_with_spacing, + width_normal + 110, + "width_with_spacing", + "width_normal + 110" + ); + + // Changing font to 20px. Without resetting the spacing, 1em letterSpacing + // is now 20px, so it's suppose to be 220px longer without any letterSpacing set. + ctx.font = "20px serif"; + width_with_spacing = ctx.measureText("Hello World").width; + // Now calculate the reference spacing for "Hello World" with no spacing. + ctx.letterSpacing = "0em"; + width_normal = ctx.measureText("Hello World").width; + assert.strictEqual( + width_with_spacing, + width_normal + 220, + "width_with_spacing", + "width_normal + 220" + ); + }); + + it("2d.text.drawing.style.wordSpacing.change.font", function () { + // Set word spacing and word spacing to font dependent value and verify it works after font change. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + ctx.letterSpacing, + "0px", + "ctx.letterSpacing", + "'0px'" + ); + assert.strictEqual(ctx.wordSpacing, "0px", "ctx.wordSpacing", "'0px'"); + // Get the width for 'Hello World, again' at default size, 10px. + var width_normal = ctx.measureText("Hello World, again").width; + + ctx.wordSpacing = "1em"; + assert.strictEqual(ctx.wordSpacing, "1em", "ctx.wordSpacing", "'1em'"); + // 1em = 10px. Add 10px after each word in "Hello World, again", + // makes it 20px longer. + var width_with_spacing = ctx.measureText("Hello World, again").width; + assert.strictEqual( + width_with_spacing, + width_normal + 20, + "width_with_spacing", + "width_normal + 20" + ); + + // Changing font to 20px. Without resetting the spacing, 1em wordSpacing + // is now 20px, so it's suppose to be 40px longer without any wordSpacing set. + ctx.font = "20px serif"; + width_with_spacing = ctx.measureText("Hello World, again").width; + // Now calculate the reference spacing for "Hello World, again" with no spacing. + ctx.wordSpacing = "0em"; + width_normal = ctx.measureText("Hello World, again").width; + assert.strictEqual( + width_with_spacing, + width_normal + 40, + "width_with_spacing", + "width_normal + 40" + ); + }); + + it("2d.text.drawing.style.fontKerning", function () { + // Testing basic functionalities of fontKerning for canvas + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + ctx.fontKerning, + "auto", + "ctx.fontKerning", + '"auto"' + ); + ctx.fontKerning = "normal"; + assert.strictEqual( + ctx.fontKerning, + "normal", + "ctx.fontKerning", + '"normal"' + ); + width_normal = ctx.measureText("TAWATAVA").width; + ctx.fontKerning = "none"; + assert.strictEqual( + ctx.fontKerning, + "none", + "ctx.fontKerning", + '"none"' + ); + width_none = ctx.measureText("TAWATAVA").width; + assert(width_normal < width_none, "width_normal < width_none"); + }); + + it("2d.text.drawing.style.fontKerning.with.uppercase", function () { + // Testing basic functionalities of fontKerning for canvas + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + ctx.fontKerning, + "auto", + "ctx.fontKerning", + '"auto"' + ); + ctx.fontKerning = "Normal"; + assert.strictEqual( + ctx.fontKerning, + "normal", + "ctx.fontKerning", + '"normal"' + ); + ctx.fontKerning = "Auto"; + ctx.fontKerning = "normal"; + assert.strictEqual( + ctx.fontKerning, + "normal", + "ctx.fontKerning", + '"normal"' + ); + ctx.fontKerning = "Auto"; + ctx.fontKerning = "noRmal"; + assert.strictEqual( + ctx.fontKerning, + "normal", + "ctx.fontKerning", + '"normal"' + ); + ctx.fontKerning = "Auto"; + ctx.fontKerning = "NoRMal"; + assert.strictEqual( + ctx.fontKerning, + "normal", + "ctx.fontKerning", + '"normal"' + ); + ctx.fontKerning = "Auto"; + ctx.fontKerning = "NORMAL"; + assert.strictEqual( + ctx.fontKerning, + "normal", + "ctx.fontKerning", + '"normal"' + ); + + ctx.fontKerning = "None"; + assert.strictEqual( + ctx.fontKerning, + "none", + "ctx.fontKerning", + '"none"' + ); + ctx.fontKerning = "Auto"; + ctx.fontKerning = "none"; + assert.strictEqual( + ctx.fontKerning, + "none", + "ctx.fontKerning", + '"none"' + ); + ctx.fontKerning = "Auto"; + ctx.fontKerning = "nOne"; + assert.strictEqual( + ctx.fontKerning, + "none", + "ctx.fontKerning", + '"none"' + ); + ctx.fontKerning = "Auto"; + ctx.fontKerning = "nonE"; + assert.strictEqual( + ctx.fontKerning, + "none", + "ctx.fontKerning", + '"none"' + ); + ctx.fontKerning = "Auto"; + ctx.fontKerning = "NONE"; + assert.strictEqual( + ctx.fontKerning, + "none", + "ctx.fontKerning", + '"none"' + ); + }); + + it("2d.text.drawing.style.fontVariant.settings", function () { + // Testing basic functionalities of fontKerning for canvas + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + // Setting fontVariantCaps with lower cases + assert.strictEqual( + ctx.fontVariantCaps, + "normal", + "ctx.fontVariantCaps", + '"normal"' + ); + + ctx.fontVariantCaps = "normal"; + assert.strictEqual( + ctx.fontVariantCaps, + "normal", + "ctx.fontVariantCaps", + '"normal"' + ); + + ctx.fontVariantCaps = "small-caps"; + assert.strictEqual( + ctx.fontVariantCaps, + "small-caps", + "ctx.fontVariantCaps", + '"small-caps"' + ); + + ctx.fontVariantCaps = "all-small-caps"; + assert.strictEqual( + ctx.fontVariantCaps, + "all-small-caps", + "ctx.fontVariantCaps", + '"all-small-caps"' + ); + + ctx.fontVariantCaps = "petite-caps"; + assert.strictEqual( + ctx.fontVariantCaps, + "petite-caps", + "ctx.fontVariantCaps", + '"petite-caps"' + ); + + ctx.fontVariantCaps = "all-petite-caps"; + assert.strictEqual( + ctx.fontVariantCaps, + "all-petite-caps", + "ctx.fontVariantCaps", + '"all-petite-caps"' + ); + + ctx.fontVariantCaps = "unicase"; + assert.strictEqual( + ctx.fontVariantCaps, + "unicase", + "ctx.fontVariantCaps", + '"unicase"' + ); + + ctx.fontVariantCaps = "titling-caps"; + assert.strictEqual( + ctx.fontVariantCaps, + "titling-caps", + "ctx.fontVariantCaps", + '"titling-caps"' + ); + + // Setting fontVariantCaps with lower cases and upper cases word. + ctx.fontVariantCaps = "nORmal"; + assert.strictEqual( + ctx.fontVariantCaps, + "normal", + "ctx.fontVariantCaps", + '"normal"' + ); + + ctx.fontVariantCaps = "smaLL-caps"; + assert.strictEqual( + ctx.fontVariantCaps, + "small-caps", + "ctx.fontVariantCaps", + '"small-caps"' + ); + + ctx.fontVariantCaps = "all-small-CAPS"; + assert.strictEqual( + ctx.fontVariantCaps, + "all-small-caps", + "ctx.fontVariantCaps", + '"all-small-caps"' + ); + + ctx.fontVariantCaps = "pEtitE-caps"; + assert.strictEqual( + ctx.fontVariantCaps, + "petite-caps", + "ctx.fontVariantCaps", + '"petite-caps"' + ); + + ctx.fontVariantCaps = "All-Petite-Caps"; + assert.strictEqual( + ctx.fontVariantCaps, + "all-petite-caps", + "ctx.fontVariantCaps", + '"all-petite-caps"' + ); + + ctx.fontVariantCaps = "uNIcase"; + assert.strictEqual( + ctx.fontVariantCaps, + "unicase", + "ctx.fontVariantCaps", + '"unicase"' + ); + + ctx.fontVariantCaps = "titling-CAPS"; + assert.strictEqual( + ctx.fontVariantCaps, + "titling-caps", + "ctx.fontVariantCaps", + '"titling-caps"' + ); + + // Setting fontVariantCaps with non-existing font variant. + ctx.fontVariantCaps = "abcd"; + assert.strictEqual( + ctx.fontVariantCaps, + "titling-caps", + "ctx.fontVariantCaps", + '"titling-caps"' + ); + }); + + it("2d.text.drawing.style.textRendering.settings", function () { + // Testing basic functionalities of textRendering in Canvas + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + // Setting textRendering with lower cases + assert.strictEqual( + ctx.textRendering, + "auto", + "ctx.textRendering", + '"auto"' + ); + + ctx.textRendering = "auto"; + assert.strictEqual( + ctx.textRendering, + "auto", + "ctx.textRendering", + '"auto"' + ); + + ctx.textRendering = "optimizespeed"; + assert.strictEqual( + ctx.textRendering, + "optimizeSpeed", + "ctx.textRendering", + '"optimizeSpeed"' + ); + + ctx.textRendering = "optimizelegibility"; + assert.strictEqual( + ctx.textRendering, + "optimizeLegibility", + "ctx.textRendering", + '"optimizeLegibility"' + ); + + ctx.textRendering = "geometricprecision"; + assert.strictEqual( + ctx.textRendering, + "geometricPrecision", + "ctx.textRendering", + '"geometricPrecision"' + ); + + // Setting textRendering with lower cases and upper cases word. + ctx.textRendering = "aUto"; + assert.strictEqual( + ctx.textRendering, + "auto", + "ctx.textRendering", + '"auto"' + ); + + ctx.textRendering = "OPtimizeSpeed"; + assert.strictEqual( + ctx.textRendering, + "optimizeSpeed", + "ctx.textRendering", + '"optimizeSpeed"' + ); + + ctx.textRendering = "OPtimizELEgibility"; + assert.strictEqual( + ctx.textRendering, + "optimizeLegibility", + "ctx.textRendering", + '"optimizeLegibility"' + ); + + ctx.textRendering = "GeometricPrecision"; + assert.strictEqual( + ctx.textRendering, + "geometricPrecision", + "ctx.textRendering", + '"geometricPrecision"' + ); + + // Setting textRendering with non-existing font variant. + ctx.textRendering = "abcd"; + assert.strictEqual( + ctx.textRendering, + "geometricPrecision", + "ctx.textRendering", + '"geometricPrecision"' + ); + }); }); diff --git a/test/wpt/generated/line-styles.js b/test/wpt/generated/line-styles.js index 815b3dc19..ad2a5aeac 100644 --- a/test/wpt/generated/line-styles.js +++ b/test/wpt/generated/line-styles.js @@ -1,1136 +1,1180 @@ // THIS FILE WAS AUTO-GENERATED. DO NOT EDIT BY HAND. -const assert = require('assert'); -const path = require('path'); +const assert = require("assert"); +const path = require("path"); const { - createCanvas, - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - CanvasPattern, - CanvasGradient -} = require('../../..'); + createCanvas, + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + CanvasPattern, + CanvasGradient, +} = require("../../.."); const window = { - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - Uint8ClampedArray, - CanvasPattern, - CanvasGradient + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + Uint8ClampedArray, + CanvasPattern, + CanvasGradient, }; const document = { - createElement(type, ...args) { - if (type !== "canvas") - throw new Error(`createElement(${type}) not supported`); - return createCanvas(...args); - } + createElement(type, ...args) { + if (type !== "canvas") + throw new Error(`createElement(${type}) not supported`); + return createCanvas(...args); + }, }; function _getPixel(canvas, x, y) { - const ctx = canvas.getContext('2d'); - const imgdata = ctx.getImageData(x, y, 1, 1); - return [ imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3] ]; + const ctx = canvas.getContext("2d"); + const imgdata = ctx.getImageData(x, y, 1, 1); + return [imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3]]; } -function _assertApprox(actual, expected, epsilon=0, msg="") { - assert(typeof actual === "number", "actual should be a number but got a ${typeof type_actual}"); - - // The epsilon math below does not place nice with NaN and Infinity - // But in this case Infinity = Infinity and NaN = NaN - if (isFinite(actual) || isFinite(expected)) { - assert(Math.abs(actual - expected) <= epsilon, - `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}`); - } else { - assert.strictEqual(actual, expected); - } +function _assertApprox(actual, expected, epsilon = 0, msg = "") { + assert( + typeof actual === "number", + "actual should be a number but got a ${typeof type_actual}" + ); + + // The epsilon math below does not place nice with NaN and Infinity + // But in this case Infinity = Infinity and NaN = NaN + if (isFinite(actual) || isFinite(expected)) { + assert( + Math.abs(actual - expected) <= epsilon, + `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}` + ); + } else { + assert.strictEqual(actual, expected); + } } function _assertPixel(canvas, x, y, r, g, b, a, pos, color) { - const c = _getPixel(canvas, x,y); - assert.strictEqual(c[0], r, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[1], g, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[2], b, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[3], a, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + assert.strictEqual( + c[0], + r, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[1], + g, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[2], + b, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[3], + a, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function _assertPixelApprox(canvas, x, y, r, g, b, a, pos, color, tolerance) { - const c = _getPixel(canvas, x,y); - _assertApprox(c[0], r, tolerance, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[1], g, tolerance, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[2], b, tolerance, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[3], a, tolerance, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + _assertApprox( + c[0], + r, + tolerance, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[1], + g, + tolerance, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[2], + b, + tolerance, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[3], + a, + tolerance, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function assert_throws_js(Type, fn) { - assert.throws(fn, Type); + assert.throws(fn, Type); } // Used by font tests to allow fonts to load. function deferTest() {} class Test { - // Two cases of this in the tests, look unnecessary. - done() {} - // Used by font tests to allow fonts to load. - step_func_done(func) { func(); } - // Used for image onload callback. - step_func(func) { func(); } + // Two cases of this in the tests, look unnecessary. + done() {} + // Used by font tests to allow fonts to load. + step_func_done(func) { + func(); + } + // Used for image onload callback. + step_func(func) { + func(); + } } function step_timeout(result, time) { - // Nothing; code needs to be converted for this to work. + // Nothing; code needs to be converted for this to work. } describe("WPT: line-styles", function () { - - it("2d.line.defaults", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.lineWidth, 1, "ctx.lineWidth", "1") - assert.strictEqual(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'") - assert.strictEqual(ctx.lineJoin, 'miter', "ctx.lineJoin", "'miter'") - assert.strictEqual(ctx.miterLimit, 10, "ctx.miterLimit", "10") - }); - - it("2d.line.width.basic", function () { - // lineWidth determines the width of line strokes - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 20; - // Draw a green line over a red box, to check the line is not too small - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.fillRect(15, 15, 20, 20); - ctx.beginPath(); - ctx.moveTo(25, 15); - ctx.lineTo(25, 35); - ctx.stroke(); - - // Draw a green box over a red line, to check the line is not too large - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(75, 15); - ctx.lineTo(75, 35); - ctx.stroke(); - ctx.fillRect(65, 15, 20, 20); - - _assertPixel(canvas, 14,25, 0,255,0,255); - _assertPixel(canvas, 15,25, 0,255,0,255); - _assertPixel(canvas, 16,25, 0,255,0,255); - _assertPixel(canvas, 25,25, 0,255,0,255); - _assertPixel(canvas, 34,25, 0,255,0,255); - _assertPixel(canvas, 35,25, 0,255,0,255); - _assertPixel(canvas, 36,25, 0,255,0,255); - - _assertPixel(canvas, 64,25, 0,255,0,255); - _assertPixel(canvas, 65,25, 0,255,0,255); - _assertPixel(canvas, 66,25, 0,255,0,255); - _assertPixel(canvas, 75,25, 0,255,0,255); - _assertPixel(canvas, 84,25, 0,255,0,255); - _assertPixel(canvas, 85,25, 0,255,0,255); - _assertPixel(canvas, 86,25, 0,255,0,255); - }); - - it("2d.line.width.transformed", function () { - // Line stroke widths are affected by scale transformations - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 4; - // Draw a green line over a red box, to check the line is not too small - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.fillRect(15, 15, 20, 20); - ctx.save(); - ctx.scale(5, 1); - ctx.beginPath(); - ctx.moveTo(5, 15); - ctx.lineTo(5, 35); - ctx.stroke(); - ctx.restore(); - - // Draw a green box over a red line, to check the line is not too large - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.save(); - ctx.scale(-5, 1); - ctx.beginPath(); - ctx.moveTo(-15, 15); - ctx.lineTo(-15, 35); - ctx.stroke(); - ctx.restore(); - ctx.fillRect(65, 15, 20, 20); - - _assertPixel(canvas, 14,25, 0,255,0,255); - _assertPixel(canvas, 15,25, 0,255,0,255); - _assertPixel(canvas, 16,25, 0,255,0,255); - _assertPixel(canvas, 25,25, 0,255,0,255); - _assertPixel(canvas, 34,25, 0,255,0,255); - _assertPixel(canvas, 35,25, 0,255,0,255); - _assertPixel(canvas, 36,25, 0,255,0,255); - - _assertPixel(canvas, 64,25, 0,255,0,255); - _assertPixel(canvas, 65,25, 0,255,0,255); - _assertPixel(canvas, 66,25, 0,255,0,255); - _assertPixel(canvas, 75,25, 0,255,0,255); - _assertPixel(canvas, 84,25, 0,255,0,255); - _assertPixel(canvas, 85,25, 0,255,0,255); - _assertPixel(canvas, 86,25, 0,255,0,255); - }); - - it("2d.line.width.scaledefault", function () { - // Default lineWidth strokes are affected by scale transformations - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.scale(50, 50); - ctx.strokeStyle = '#0f0'; - ctx.moveTo(0, 0.5); - ctx.lineTo(2, 0.5); - ctx.stroke(); - - _assertPixel(canvas, 25,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 75,25, 0,255,0,255); - _assertPixel(canvas, 50,5, 0,255,0,255); - _assertPixel(canvas, 50,45, 0,255,0,255); - }); - - it("2d.line.width.valid", function () { - // Setting lineWidth to valid values works - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.lineWidth = 1.5; - assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5") - - ctx.lineWidth = "1e1"; - assert.strictEqual(ctx.lineWidth, 10, "ctx.lineWidth", "10") - - ctx.lineWidth = 1/1024; - assert.strictEqual(ctx.lineWidth, 1/1024, "ctx.lineWidth", "1/1024") - - ctx.lineWidth = 1000; - assert.strictEqual(ctx.lineWidth, 1000, "ctx.lineWidth", "1000") - }); - - it("2d.line.width.invalid", function () { - // Setting lineWidth to invalid values is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.lineWidth = 1.5; - assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5") - - ctx.lineWidth = 1.5; - ctx.lineWidth = 0; - assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5") - - ctx.lineWidth = 1.5; - ctx.lineWidth = -1; - assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5") - - ctx.lineWidth = 1.5; - ctx.lineWidth = Infinity; - assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5") - - ctx.lineWidth = 1.5; - ctx.lineWidth = -Infinity; - assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5") - - ctx.lineWidth = 1.5; - ctx.lineWidth = NaN; - assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5") - - ctx.lineWidth = 1.5; - ctx.lineWidth = 'string'; - assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5") - - ctx.lineWidth = 1.5; - ctx.lineWidth = true; - assert.strictEqual(ctx.lineWidth, 1, "ctx.lineWidth", "1") - - ctx.lineWidth = 1.5; - ctx.lineWidth = false; - assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5") - }); - - it("2d.line.cap.butt", function () { - // lineCap 'butt' is rendered correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineCap = 'butt'; - ctx.lineWidth = 20; - - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.fillRect(15, 15, 20, 20); - ctx.beginPath(); - ctx.moveTo(25, 15); - ctx.lineTo(25, 35); - ctx.stroke(); - - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(75, 15); - ctx.lineTo(75, 35); - ctx.stroke(); - ctx.fillRect(65, 15, 20, 20); - - _assertPixel(canvas, 25,14, 0,255,0,255); - _assertPixel(canvas, 25,15, 0,255,0,255); - _assertPixel(canvas, 25,16, 0,255,0,255); - _assertPixel(canvas, 25,34, 0,255,0,255); - _assertPixel(canvas, 25,35, 0,255,0,255); - _assertPixel(canvas, 25,36, 0,255,0,255); - - _assertPixel(canvas, 75,14, 0,255,0,255); - _assertPixel(canvas, 75,15, 0,255,0,255); - _assertPixel(canvas, 75,16, 0,255,0,255); - _assertPixel(canvas, 75,34, 0,255,0,255); - _assertPixel(canvas, 75,35, 0,255,0,255); - _assertPixel(canvas, 75,36, 0,255,0,255); - }); - - it("2d.line.cap.round", function () { - // lineCap 'round' is rendered correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - var tol = 1; // tolerance to avoid antialiasing artifacts - - ctx.lineCap = 'round'; - ctx.lineWidth = 20; - - - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - - ctx.beginPath(); - ctx.moveTo(35-tol, 15); - ctx.arc(25, 15, 10-tol, 0, Math.PI, true); - ctx.arc(25, 35, 10-tol, Math.PI, 0, true); - ctx.fill(); - - ctx.beginPath(); - ctx.moveTo(25, 15); - ctx.lineTo(25, 35); - ctx.stroke(); - - - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - - ctx.beginPath(); - ctx.moveTo(75, 15); - ctx.lineTo(75, 35); - ctx.stroke(); - - ctx.beginPath(); - ctx.moveTo(85+tol, 15); - ctx.arc(75, 15, 10+tol, 0, Math.PI, true); - ctx.arc(75, 35, 10+tol, Math.PI, 0, true); - ctx.fill(); - - _assertPixel(canvas, 17,6, 0,255,0,255); - _assertPixel(canvas, 25,6, 0,255,0,255); - _assertPixel(canvas, 32,6, 0,255,0,255); - _assertPixel(canvas, 17,43, 0,255,0,255); - _assertPixel(canvas, 25,43, 0,255,0,255); - _assertPixel(canvas, 32,43, 0,255,0,255); - - _assertPixel(canvas, 67,6, 0,255,0,255); - _assertPixel(canvas, 75,6, 0,255,0,255); - _assertPixel(canvas, 82,6, 0,255,0,255); - _assertPixel(canvas, 67,43, 0,255,0,255); - _assertPixel(canvas, 75,43, 0,255,0,255); - _assertPixel(canvas, 82,43, 0,255,0,255); - }); - - it("2d.line.cap.square", function () { - // lineCap 'square' is rendered correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineCap = 'square'; - ctx.lineWidth = 20; - - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.fillRect(15, 5, 20, 40); - ctx.beginPath(); - ctx.moveTo(25, 15); - ctx.lineTo(25, 35); - ctx.stroke(); - - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(75, 15); - ctx.lineTo(75, 35); - ctx.stroke(); - ctx.fillRect(65, 5, 20, 40); - - _assertPixel(canvas, 25,4, 0,255,0,255); - _assertPixel(canvas, 25,5, 0,255,0,255); - _assertPixel(canvas, 25,6, 0,255,0,255); - _assertPixel(canvas, 25,44, 0,255,0,255); - _assertPixel(canvas, 25,45, 0,255,0,255); - _assertPixel(canvas, 25,46, 0,255,0,255); - - _assertPixel(canvas, 75,4, 0,255,0,255); - _assertPixel(canvas, 75,5, 0,255,0,255); - _assertPixel(canvas, 75,6, 0,255,0,255); - _assertPixel(canvas, 75,44, 0,255,0,255); - _assertPixel(canvas, 75,45, 0,255,0,255); - _assertPixel(canvas, 75,46, 0,255,0,255); - }); - - it("2d.line.cap.open", function () { - // Line caps are drawn at the corners of an unclosed rectangle - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineJoin = 'bevel'; - ctx.lineCap = 'square'; - ctx.lineWidth = 400; - - ctx.beginPath(); - ctx.moveTo(200, 200); - ctx.lineTo(200, 1000); - ctx.lineTo(1000, 1000); - ctx.lineTo(1000, 200); - ctx.lineTo(200, 200); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.line.cap.closed", function () { - // Line caps are not drawn at the corners of an unclosed rectangle - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineJoin = 'bevel'; - ctx.lineCap = 'square'; - ctx.lineWidth = 400; - - ctx.beginPath(); - ctx.moveTo(200, 200); - ctx.lineTo(200, 1000); - ctx.lineTo(1000, 1000); - ctx.lineTo(1000, 200); - ctx.closePath(); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.line.cap.valid", function () { - // Setting lineCap to valid values works - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.lineCap = 'butt' - assert.strictEqual(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'") - - ctx.lineCap = 'round'; - assert.strictEqual(ctx.lineCap, 'round', "ctx.lineCap", "'round'") - - ctx.lineCap = 'square'; - assert.strictEqual(ctx.lineCap, 'square', "ctx.lineCap", "'square'") - }); - - it("2d.line.cap.invalid", function () { - // Setting lineCap to invalid values is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.lineCap = 'butt' - assert.strictEqual(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'") - - ctx.lineCap = 'butt'; - ctx.lineCap = 'invalid'; - assert.strictEqual(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'") - - ctx.lineCap = 'butt'; - ctx.lineCap = 'ROUND'; - assert.strictEqual(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'") - - ctx.lineCap = 'butt'; - ctx.lineCap = 'round\0'; - assert.strictEqual(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'") - - ctx.lineCap = 'butt'; - ctx.lineCap = 'round '; - assert.strictEqual(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'") - - ctx.lineCap = 'butt'; - ctx.lineCap = ""; - assert.strictEqual(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'") - - ctx.lineCap = 'butt'; - ctx.lineCap = 'bevel'; - assert.strictEqual(ctx.lineCap, 'butt', "ctx.lineCap", "'butt'") - }); - - it("2d.line.join.bevel", function () { - // lineJoin 'bevel' is rendered correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - var tol = 1; // tolerance to avoid antialiasing artifacts - - ctx.lineJoin = 'bevel'; - ctx.lineWidth = 20; - - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - - ctx.fillRect(10, 10, 20, 20); - ctx.fillRect(20, 20, 20, 20); - ctx.beginPath(); - ctx.moveTo(30, 20); - ctx.lineTo(40-tol, 20); - ctx.lineTo(30, 10+tol); - ctx.fill(); - - ctx.beginPath(); - ctx.moveTo(10, 20); - ctx.lineTo(30, 20); - ctx.lineTo(30, 40); - ctx.stroke(); - - - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - - ctx.beginPath(); - ctx.moveTo(60, 20); - ctx.lineTo(80, 20); - ctx.lineTo(80, 40); - ctx.stroke(); - - ctx.fillRect(60, 10, 20, 20); - ctx.fillRect(70, 20, 20, 20); - ctx.beginPath(); - ctx.moveTo(80, 20); - ctx.lineTo(90+tol, 20); - ctx.lineTo(80, 10-tol); - ctx.fill(); - - _assertPixel(canvas, 34,16, 0,255,0,255); - _assertPixel(canvas, 34,15, 0,255,0,255); - _assertPixel(canvas, 35,15, 0,255,0,255); - _assertPixel(canvas, 36,15, 0,255,0,255); - _assertPixel(canvas, 36,14, 0,255,0,255); - - _assertPixel(canvas, 84,16, 0,255,0,255); - _assertPixel(canvas, 84,15, 0,255,0,255); - _assertPixel(canvas, 85,15, 0,255,0,255); - _assertPixel(canvas, 86,15, 0,255,0,255); - _assertPixel(canvas, 86,14, 0,255,0,255); - }); - - it("2d.line.join.round", function () { - // lineJoin 'round' is rendered correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - var tol = 1; // tolerance to avoid antialiasing artifacts - - ctx.lineJoin = 'round'; - ctx.lineWidth = 20; - - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - - ctx.fillRect(10, 10, 20, 20); - ctx.fillRect(20, 20, 20, 20); - ctx.beginPath(); - ctx.moveTo(30, 20); - ctx.arc(30, 20, 10-tol, 0, 2*Math.PI, true); - ctx.fill(); - - ctx.beginPath(); - ctx.moveTo(10, 20); - ctx.lineTo(30, 20); - ctx.lineTo(30, 40); - ctx.stroke(); - - - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - - ctx.beginPath(); - ctx.moveTo(60, 20); - ctx.lineTo(80, 20); - ctx.lineTo(80, 40); - ctx.stroke(); - - ctx.fillRect(60, 10, 20, 20); - ctx.fillRect(70, 20, 20, 20); - ctx.beginPath(); - ctx.moveTo(80, 20); - ctx.arc(80, 20, 10+tol, 0, 2*Math.PI, true); - ctx.fill(); - - _assertPixel(canvas, 36,14, 0,255,0,255); - _assertPixel(canvas, 36,13, 0,255,0,255); - _assertPixel(canvas, 37,13, 0,255,0,255); - _assertPixel(canvas, 38,13, 0,255,0,255); - _assertPixel(canvas, 38,12, 0,255,0,255); - - _assertPixel(canvas, 86,14, 0,255,0,255); - _assertPixel(canvas, 86,13, 0,255,0,255); - _assertPixel(canvas, 87,13, 0,255,0,255); - _assertPixel(canvas, 88,13, 0,255,0,255); - _assertPixel(canvas, 88,12, 0,255,0,255); - }); - - it("2d.line.join.miter", function () { - // lineJoin 'miter' is rendered correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineJoin = 'miter'; - ctx.lineWidth = 20; - - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - - ctx.fillRect(10, 10, 30, 20); - ctx.fillRect(20, 10, 20, 30); - - ctx.beginPath(); - ctx.moveTo(10, 20); - ctx.lineTo(30, 20); - ctx.lineTo(30, 40); - ctx.stroke(); - - - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - - ctx.beginPath(); - ctx.moveTo(60, 20); - ctx.lineTo(80, 20); - ctx.lineTo(80, 40); - ctx.stroke(); - - ctx.fillRect(60, 10, 30, 20); - ctx.fillRect(70, 10, 20, 30); - - _assertPixel(canvas, 38,12, 0,255,0,255); - _assertPixel(canvas, 39,11, 0,255,0,255); - _assertPixel(canvas, 40,10, 0,255,0,255); - _assertPixel(canvas, 41,9, 0,255,0,255); - _assertPixel(canvas, 42,8, 0,255,0,255); - - _assertPixel(canvas, 88,12, 0,255,0,255); - _assertPixel(canvas, 89,11, 0,255,0,255); - _assertPixel(canvas, 90,10, 0,255,0,255); - _assertPixel(canvas, 91,9, 0,255,0,255); - _assertPixel(canvas, 92,8, 0,255,0,255); - }); - - it("2d.line.join.open", function () { - // Line joins are not drawn at the corner of an unclosed rectangle - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineJoin = 'miter'; - ctx.lineWidth = 200; - - ctx.beginPath(); - ctx.moveTo(100, 50); - ctx.lineTo(100, 1000); - ctx.lineTo(1000, 1000); - ctx.lineTo(1000, 50); - ctx.lineTo(100, 50); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.line.join.closed", function () { - // Line joins are drawn at the corner of a closed rectangle - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineJoin = 'miter'; - ctx.lineWidth = 200; - - ctx.beginPath(); - ctx.moveTo(100, 50); - ctx.lineTo(100, 1000); - ctx.lineTo(1000, 1000); - ctx.lineTo(1000, 50); - ctx.closePath(); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.line.join.parallel", function () { - // Line joins are drawn at 180-degree joins - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 300; - ctx.lineJoin = 'round'; - ctx.beginPath(); - ctx.moveTo(-100, 25); - ctx.lineTo(0, 25); - ctx.lineTo(-100, 25); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.line.join.valid", function () { - // Setting lineJoin to valid values works - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.lineJoin = 'bevel' - assert.strictEqual(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'") - - ctx.lineJoin = 'round'; - assert.strictEqual(ctx.lineJoin, 'round', "ctx.lineJoin", "'round'") - - ctx.lineJoin = 'miter'; - assert.strictEqual(ctx.lineJoin, 'miter', "ctx.lineJoin", "'miter'") - }); - - it("2d.line.join.invalid", function () { - // Setting lineJoin to invalid values is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.lineJoin = 'bevel' - assert.strictEqual(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'") - - ctx.lineJoin = 'bevel'; - ctx.lineJoin = 'invalid'; - assert.strictEqual(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'") - - ctx.lineJoin = 'bevel'; - ctx.lineJoin = 'ROUND'; - assert.strictEqual(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'") - - ctx.lineJoin = 'bevel'; - ctx.lineJoin = 'round\0'; - assert.strictEqual(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'") - - ctx.lineJoin = 'bevel'; - ctx.lineJoin = 'round '; - assert.strictEqual(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'") - - ctx.lineJoin = 'bevel'; - ctx.lineJoin = ""; - assert.strictEqual(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'") - - ctx.lineJoin = 'bevel'; - ctx.lineJoin = 'butt'; - assert.strictEqual(ctx.lineJoin, 'bevel', "ctx.lineJoin", "'bevel'") - }); - - it("2d.line.miter.exceeded", function () { - // Miter joins are not drawn when the miter limit is exceeded - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 400; - ctx.lineJoin = 'miter'; - - ctx.strokeStyle = '#f00'; - ctx.miterLimit = 1.414; - ctx.beginPath(); - ctx.moveTo(200, 1000); - ctx.lineTo(200, 200); - ctx.lineTo(1000, 201); // slightly non-right-angle to avoid being a special case - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.line.miter.acute", function () { - // Miter joins are drawn correctly with acute angles - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 200; - ctx.lineJoin = 'miter'; - - ctx.strokeStyle = '#0f0'; - ctx.miterLimit = 2.614; - ctx.beginPath(); - ctx.moveTo(100, 1000); - ctx.lineTo(100, 100); - ctx.lineTo(1000, 1000); - ctx.stroke(); - - ctx.strokeStyle = '#f00'; - ctx.miterLimit = 2.613; - ctx.beginPath(); - ctx.moveTo(100, 1000); - ctx.lineTo(100, 100); - ctx.lineTo(1000, 1000); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.line.miter.obtuse", function () { - // Miter joins are drawn correctly with obtuse angles - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 1600; - ctx.lineJoin = 'miter'; - - ctx.strokeStyle = '#0f0'; - ctx.miterLimit = 1.083; - ctx.beginPath(); - ctx.moveTo(800, 10000); - ctx.lineTo(800, 300); - ctx.lineTo(10000, -8900); - ctx.stroke(); - - ctx.strokeStyle = '#f00'; - ctx.miterLimit = 1.082; - ctx.beginPath(); - ctx.moveTo(800, 10000); - ctx.lineTo(800, 300); - ctx.lineTo(10000, -8900); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.line.miter.rightangle", function () { - // Miter joins are not drawn when the miter limit is exceeded, on exact right angles - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 400; - ctx.lineJoin = 'miter'; - - ctx.strokeStyle = '#f00'; - ctx.miterLimit = 1.414; - ctx.beginPath(); - ctx.moveTo(200, 1000); - ctx.lineTo(200, 200); - ctx.lineTo(1000, 200); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.line.miter.lineedge", function () { - // Miter joins are not drawn when the miter limit is exceeded at the corners of a zero-height rectangle - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 200; - ctx.lineJoin = 'miter'; - - ctx.strokeStyle = '#f00'; - ctx.miterLimit = 1.414; - ctx.beginPath(); - ctx.strokeRect(100, 25, 200, 0); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.line.miter.within", function () { - // Miter joins are drawn when the miter limit is not quite exceeded - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 400; - ctx.lineJoin = 'miter'; - - ctx.strokeStyle = '#0f0'; - ctx.miterLimit = 1.416; - ctx.beginPath(); - ctx.moveTo(200, 1000); - ctx.lineTo(200, 200); - ctx.lineTo(1000, 201); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.line.miter.valid", function () { - // Setting miterLimit to valid values works - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.miterLimit = 1.5; - assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5") - - ctx.miterLimit = "1e1"; - assert.strictEqual(ctx.miterLimit, 10, "ctx.miterLimit", "10") - - ctx.miterLimit = 1/1024; - assert.strictEqual(ctx.miterLimit, 1/1024, "ctx.miterLimit", "1/1024") - - ctx.miterLimit = 1000; - assert.strictEqual(ctx.miterLimit, 1000, "ctx.miterLimit", "1000") - }); - - it("2d.line.miter.invalid", function () { - // Setting miterLimit to invalid values is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.miterLimit = 1.5; - assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5") - - ctx.miterLimit = 1.5; - ctx.miterLimit = 0; - assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5") - - ctx.miterLimit = 1.5; - ctx.miterLimit = -1; - assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5") - - ctx.miterLimit = 1.5; - ctx.miterLimit = Infinity; - assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5") - - ctx.miterLimit = 1.5; - ctx.miterLimit = -Infinity; - assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5") - - ctx.miterLimit = 1.5; - ctx.miterLimit = NaN; - assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5") - - ctx.miterLimit = 1.5; - ctx.miterLimit = 'string'; - assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5") - - ctx.miterLimit = 1.5; - ctx.miterLimit = true; - assert.strictEqual(ctx.miterLimit, 1, "ctx.miterLimit", "1") - - ctx.miterLimit = 1.5; - ctx.miterLimit = false; - assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5") - }); - - it("2d.line.cross", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 200; - ctx.lineJoin = 'bevel'; - - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(110, 50); - ctx.lineTo(110, 60); - ctx.lineTo(100, 60); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.line.union", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 24); - ctx.lineTo(100, 25); - ctx.lineTo(0, 26); - ctx.closePath(); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 25,1, 0,255,0,255); - _assertPixel(canvas, 48,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 25,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - }); - - it("2d.line.invalid.strokestyle", function () { - // Verify correct behavior of canvas on an invalid strokeStyle() - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.strokeStyle = 'rgb(0, 255, 0)'; - ctx.strokeStyle = 'nonsense'; - ctx.lineWidth = 200; - ctx.moveTo(0,100); - ctx.lineTo(200,100); - ctx.stroke(); - var imageData = ctx.getImageData(0, 0, 200, 200); - var imgdata = imageData.data; - assert(imgdata[4] == 0, "imgdata[\""+(4)+"\"] == 0"); - assert(imgdata[5] == 255, "imgdata[\""+(5)+"\"] == 255"); - assert(imgdata[6] == 0, "imgdata[\""+(6)+"\"] == 0"); - }); + it("2d.line.defaults", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual(ctx.lineWidth, 1, "ctx.lineWidth", "1"); + assert.strictEqual(ctx.lineCap, "butt", "ctx.lineCap", "'butt'"); + assert.strictEqual(ctx.lineJoin, "miter", "ctx.lineJoin", "'miter'"); + assert.strictEqual(ctx.miterLimit, 10, "ctx.miterLimit", "10"); + }); + + it("2d.line.width.basic", function () { + // lineWidth determines the width of line strokes + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 20; + // Draw a green line over a red box, to check the line is not too small + ctx.fillStyle = "#f00"; + ctx.strokeStyle = "#0f0"; + ctx.fillRect(15, 15, 20, 20); + ctx.beginPath(); + ctx.moveTo(25, 15); + ctx.lineTo(25, 35); + ctx.stroke(); + + // Draw a green box over a red line, to check the line is not too large + ctx.fillStyle = "#0f0"; + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(75, 15); + ctx.lineTo(75, 35); + ctx.stroke(); + ctx.fillRect(65, 15, 20, 20); + + _assertPixel(canvas, 14, 25, 0, 255, 0, 255); + _assertPixel(canvas, 15, 25, 0, 255, 0, 255); + _assertPixel(canvas, 16, 25, 0, 255, 0, 255); + _assertPixel(canvas, 25, 25, 0, 255, 0, 255); + _assertPixel(canvas, 34, 25, 0, 255, 0, 255); + _assertPixel(canvas, 35, 25, 0, 255, 0, 255); + _assertPixel(canvas, 36, 25, 0, 255, 0, 255); + + _assertPixel(canvas, 64, 25, 0, 255, 0, 255); + _assertPixel(canvas, 65, 25, 0, 255, 0, 255); + _assertPixel(canvas, 66, 25, 0, 255, 0, 255); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + _assertPixel(canvas, 84, 25, 0, 255, 0, 255); + _assertPixel(canvas, 85, 25, 0, 255, 0, 255); + _assertPixel(canvas, 86, 25, 0, 255, 0, 255); + }); + + it("2d.line.width.transformed", function () { + // Line stroke widths are affected by scale transformations + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 4; + // Draw a green line over a red box, to check the line is not too small + ctx.fillStyle = "#f00"; + ctx.strokeStyle = "#0f0"; + ctx.fillRect(15, 15, 20, 20); + ctx.save(); + ctx.scale(5, 1); + ctx.beginPath(); + ctx.moveTo(5, 15); + ctx.lineTo(5, 35); + ctx.stroke(); + ctx.restore(); + + // Draw a green box over a red line, to check the line is not too large + ctx.fillStyle = "#0f0"; + ctx.strokeStyle = "#f00"; + ctx.save(); + ctx.scale(-5, 1); + ctx.beginPath(); + ctx.moveTo(-15, 15); + ctx.lineTo(-15, 35); + ctx.stroke(); + ctx.restore(); + ctx.fillRect(65, 15, 20, 20); + + _assertPixel(canvas, 14, 25, 0, 255, 0, 255); + _assertPixel(canvas, 15, 25, 0, 255, 0, 255); + _assertPixel(canvas, 16, 25, 0, 255, 0, 255); + _assertPixel(canvas, 25, 25, 0, 255, 0, 255); + _assertPixel(canvas, 34, 25, 0, 255, 0, 255); + _assertPixel(canvas, 35, 25, 0, 255, 0, 255); + _assertPixel(canvas, 36, 25, 0, 255, 0, 255); + + _assertPixel(canvas, 64, 25, 0, 255, 0, 255); + _assertPixel(canvas, 65, 25, 0, 255, 0, 255); + _assertPixel(canvas, 66, 25, 0, 255, 0, 255); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + _assertPixel(canvas, 84, 25, 0, 255, 0, 255); + _assertPixel(canvas, 85, 25, 0, 255, 0, 255); + _assertPixel(canvas, 86, 25, 0, 255, 0, 255); + }); + + it("2d.line.width.scaledefault", function () { + // Default lineWidth strokes are affected by scale transformations + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.scale(50, 50); + ctx.strokeStyle = "#0f0"; + ctx.moveTo(0, 0.5); + ctx.lineTo(2, 0.5); + ctx.stroke(); + + _assertPixel(canvas, 25, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 5, 0, 255, 0, 255); + _assertPixel(canvas, 50, 45, 0, 255, 0, 255); + }); + + it("2d.line.width.valid", function () { + // Setting lineWidth to valid values works + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.lineWidth = 1.5; + assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); + + ctx.lineWidth = "1e1"; + assert.strictEqual(ctx.lineWidth, 10, "ctx.lineWidth", "10"); + + ctx.lineWidth = 1 / 1024; + assert.strictEqual(ctx.lineWidth, 1 / 1024, "ctx.lineWidth", "1/1024"); + + ctx.lineWidth = 1000; + assert.strictEqual(ctx.lineWidth, 1000, "ctx.lineWidth", "1000"); + }); + + it("2d.line.width.invalid", function () { + // Setting lineWidth to invalid values is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.lineWidth = 1.5; + assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); + + ctx.lineWidth = 1.5; + ctx.lineWidth = 0; + assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); + + ctx.lineWidth = 1.5; + ctx.lineWidth = -1; + assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); + + ctx.lineWidth = 1.5; + ctx.lineWidth = Infinity; + assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); + + ctx.lineWidth = 1.5; + ctx.lineWidth = -Infinity; + assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); + + ctx.lineWidth = 1.5; + ctx.lineWidth = NaN; + assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); + + ctx.lineWidth = 1.5; + ctx.lineWidth = "string"; + assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); + + ctx.lineWidth = 1.5; + ctx.lineWidth = true; + assert.strictEqual(ctx.lineWidth, 1, "ctx.lineWidth", "1"); + + ctx.lineWidth = 1.5; + ctx.lineWidth = false; + assert.strictEqual(ctx.lineWidth, 1.5, "ctx.lineWidth", "1.5"); + }); + + it("2d.line.cap.butt", function () { + // lineCap 'butt' is rendered correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineCap = "butt"; + ctx.lineWidth = 20; + + ctx.fillStyle = "#f00"; + ctx.strokeStyle = "#0f0"; + ctx.fillRect(15, 15, 20, 20); + ctx.beginPath(); + ctx.moveTo(25, 15); + ctx.lineTo(25, 35); + ctx.stroke(); + + ctx.fillStyle = "#0f0"; + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(75, 15); + ctx.lineTo(75, 35); + ctx.stroke(); + ctx.fillRect(65, 15, 20, 20); + + _assertPixel(canvas, 25, 14, 0, 255, 0, 255); + _assertPixel(canvas, 25, 15, 0, 255, 0, 255); + _assertPixel(canvas, 25, 16, 0, 255, 0, 255); + _assertPixel(canvas, 25, 34, 0, 255, 0, 255); + _assertPixel(canvas, 25, 35, 0, 255, 0, 255); + _assertPixel(canvas, 25, 36, 0, 255, 0, 255); + + _assertPixel(canvas, 75, 14, 0, 255, 0, 255); + _assertPixel(canvas, 75, 15, 0, 255, 0, 255); + _assertPixel(canvas, 75, 16, 0, 255, 0, 255); + _assertPixel(canvas, 75, 34, 0, 255, 0, 255); + _assertPixel(canvas, 75, 35, 0, 255, 0, 255); + _assertPixel(canvas, 75, 36, 0, 255, 0, 255); + }); + + it("2d.line.cap.round", function () { + // lineCap 'round' is rendered correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + var tol = 1; // tolerance to avoid antialiasing artifacts + + ctx.lineCap = "round"; + ctx.lineWidth = 20; + + ctx.fillStyle = "#f00"; + ctx.strokeStyle = "#0f0"; + + ctx.beginPath(); + ctx.moveTo(35 - tol, 15); + ctx.arc(25, 15, 10 - tol, 0, Math.PI, true); + ctx.arc(25, 35, 10 - tol, Math.PI, 0, true); + ctx.fill(); + + ctx.beginPath(); + ctx.moveTo(25, 15); + ctx.lineTo(25, 35); + ctx.stroke(); + + ctx.fillStyle = "#0f0"; + ctx.strokeStyle = "#f00"; + + ctx.beginPath(); + ctx.moveTo(75, 15); + ctx.lineTo(75, 35); + ctx.stroke(); + + ctx.beginPath(); + ctx.moveTo(85 + tol, 15); + ctx.arc(75, 15, 10 + tol, 0, Math.PI, true); + ctx.arc(75, 35, 10 + tol, Math.PI, 0, true); + ctx.fill(); + + _assertPixel(canvas, 17, 6, 0, 255, 0, 255); + _assertPixel(canvas, 25, 6, 0, 255, 0, 255); + _assertPixel(canvas, 32, 6, 0, 255, 0, 255); + _assertPixel(canvas, 17, 43, 0, 255, 0, 255); + _assertPixel(canvas, 25, 43, 0, 255, 0, 255); + _assertPixel(canvas, 32, 43, 0, 255, 0, 255); + + _assertPixel(canvas, 67, 6, 0, 255, 0, 255); + _assertPixel(canvas, 75, 6, 0, 255, 0, 255); + _assertPixel(canvas, 82, 6, 0, 255, 0, 255); + _assertPixel(canvas, 67, 43, 0, 255, 0, 255); + _assertPixel(canvas, 75, 43, 0, 255, 0, 255); + _assertPixel(canvas, 82, 43, 0, 255, 0, 255); + }); + + it("2d.line.cap.square", function () { + // lineCap 'square' is rendered correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineCap = "square"; + ctx.lineWidth = 20; + + ctx.fillStyle = "#f00"; + ctx.strokeStyle = "#0f0"; + ctx.fillRect(15, 5, 20, 40); + ctx.beginPath(); + ctx.moveTo(25, 15); + ctx.lineTo(25, 35); + ctx.stroke(); + + ctx.fillStyle = "#0f0"; + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(75, 15); + ctx.lineTo(75, 35); + ctx.stroke(); + ctx.fillRect(65, 5, 20, 40); + + _assertPixel(canvas, 25, 4, 0, 255, 0, 255); + _assertPixel(canvas, 25, 5, 0, 255, 0, 255); + _assertPixel(canvas, 25, 6, 0, 255, 0, 255); + _assertPixel(canvas, 25, 44, 0, 255, 0, 255); + _assertPixel(canvas, 25, 45, 0, 255, 0, 255); + _assertPixel(canvas, 25, 46, 0, 255, 0, 255); + + _assertPixel(canvas, 75, 4, 0, 255, 0, 255); + _assertPixel(canvas, 75, 5, 0, 255, 0, 255); + _assertPixel(canvas, 75, 6, 0, 255, 0, 255); + _assertPixel(canvas, 75, 44, 0, 255, 0, 255); + _assertPixel(canvas, 75, 45, 0, 255, 0, 255); + _assertPixel(canvas, 75, 46, 0, 255, 0, 255); + }); + + it("2d.line.cap.open", function () { + // Line caps are drawn at the corners of an unclosed rectangle + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.strokeStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineJoin = "bevel"; + ctx.lineCap = "square"; + ctx.lineWidth = 400; + + ctx.beginPath(); + ctx.moveTo(200, 200); + ctx.lineTo(200, 1000); + ctx.lineTo(1000, 1000); + ctx.lineTo(1000, 200); + ctx.lineTo(200, 200); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.line.cap.closed", function () { + // Line caps are not drawn at the corners of an unclosed rectangle + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.strokeStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineJoin = "bevel"; + ctx.lineCap = "square"; + ctx.lineWidth = 400; + + ctx.beginPath(); + ctx.moveTo(200, 200); + ctx.lineTo(200, 1000); + ctx.lineTo(1000, 1000); + ctx.lineTo(1000, 200); + ctx.closePath(); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.line.cap.valid", function () { + // Setting lineCap to valid values works + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.lineCap = "butt"; + assert.strictEqual(ctx.lineCap, "butt", "ctx.lineCap", "'butt'"); + + ctx.lineCap = "round"; + assert.strictEqual(ctx.lineCap, "round", "ctx.lineCap", "'round'"); + + ctx.lineCap = "square"; + assert.strictEqual(ctx.lineCap, "square", "ctx.lineCap", "'square'"); + }); + + it("2d.line.cap.invalid", function () { + // Setting lineCap to invalid values is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.lineCap = "butt"; + assert.strictEqual(ctx.lineCap, "butt", "ctx.lineCap", "'butt'"); + + ctx.lineCap = "butt"; + ctx.lineCap = "invalid"; + assert.strictEqual(ctx.lineCap, "butt", "ctx.lineCap", "'butt'"); + + ctx.lineCap = "butt"; + ctx.lineCap = "ROUND"; + assert.strictEqual(ctx.lineCap, "butt", "ctx.lineCap", "'butt'"); + + ctx.lineCap = "butt"; + ctx.lineCap = "round\0"; + assert.strictEqual(ctx.lineCap, "butt", "ctx.lineCap", "'butt'"); + + ctx.lineCap = "butt"; + ctx.lineCap = "round "; + assert.strictEqual(ctx.lineCap, "butt", "ctx.lineCap", "'butt'"); + + ctx.lineCap = "butt"; + ctx.lineCap = ""; + assert.strictEqual(ctx.lineCap, "butt", "ctx.lineCap", "'butt'"); + + ctx.lineCap = "butt"; + ctx.lineCap = "bevel"; + assert.strictEqual(ctx.lineCap, "butt", "ctx.lineCap", "'butt'"); + }); + + it("2d.line.join.bevel", function () { + // lineJoin 'bevel' is rendered correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + var tol = 1; // tolerance to avoid antialiasing artifacts + + ctx.lineJoin = "bevel"; + ctx.lineWidth = 20; + + ctx.fillStyle = "#f00"; + ctx.strokeStyle = "#0f0"; + + ctx.fillRect(10, 10, 20, 20); + ctx.fillRect(20, 20, 20, 20); + ctx.beginPath(); + ctx.moveTo(30, 20); + ctx.lineTo(40 - tol, 20); + ctx.lineTo(30, 10 + tol); + ctx.fill(); + + ctx.beginPath(); + ctx.moveTo(10, 20); + ctx.lineTo(30, 20); + ctx.lineTo(30, 40); + ctx.stroke(); + + ctx.fillStyle = "#0f0"; + ctx.strokeStyle = "#f00"; + + ctx.beginPath(); + ctx.moveTo(60, 20); + ctx.lineTo(80, 20); + ctx.lineTo(80, 40); + ctx.stroke(); + + ctx.fillRect(60, 10, 20, 20); + ctx.fillRect(70, 20, 20, 20); + ctx.beginPath(); + ctx.moveTo(80, 20); + ctx.lineTo(90 + tol, 20); + ctx.lineTo(80, 10 - tol); + ctx.fill(); + + _assertPixel(canvas, 34, 16, 0, 255, 0, 255); + _assertPixel(canvas, 34, 15, 0, 255, 0, 255); + _assertPixel(canvas, 35, 15, 0, 255, 0, 255); + _assertPixel(canvas, 36, 15, 0, 255, 0, 255); + _assertPixel(canvas, 36, 14, 0, 255, 0, 255); + + _assertPixel(canvas, 84, 16, 0, 255, 0, 255); + _assertPixel(canvas, 84, 15, 0, 255, 0, 255); + _assertPixel(canvas, 85, 15, 0, 255, 0, 255); + _assertPixel(canvas, 86, 15, 0, 255, 0, 255); + _assertPixel(canvas, 86, 14, 0, 255, 0, 255); + }); + + it("2d.line.join.round", function () { + // lineJoin 'round' is rendered correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + var tol = 1; // tolerance to avoid antialiasing artifacts + + ctx.lineJoin = "round"; + ctx.lineWidth = 20; + + ctx.fillStyle = "#f00"; + ctx.strokeStyle = "#0f0"; + + ctx.fillRect(10, 10, 20, 20); + ctx.fillRect(20, 20, 20, 20); + ctx.beginPath(); + ctx.moveTo(30, 20); + ctx.arc(30, 20, 10 - tol, 0, 2 * Math.PI, true); + ctx.fill(); + + ctx.beginPath(); + ctx.moveTo(10, 20); + ctx.lineTo(30, 20); + ctx.lineTo(30, 40); + ctx.stroke(); + + ctx.fillStyle = "#0f0"; + ctx.strokeStyle = "#f00"; + + ctx.beginPath(); + ctx.moveTo(60, 20); + ctx.lineTo(80, 20); + ctx.lineTo(80, 40); + ctx.stroke(); + + ctx.fillRect(60, 10, 20, 20); + ctx.fillRect(70, 20, 20, 20); + ctx.beginPath(); + ctx.moveTo(80, 20); + ctx.arc(80, 20, 10 + tol, 0, 2 * Math.PI, true); + ctx.fill(); + + _assertPixel(canvas, 36, 14, 0, 255, 0, 255); + _assertPixel(canvas, 36, 13, 0, 255, 0, 255); + _assertPixel(canvas, 37, 13, 0, 255, 0, 255); + _assertPixel(canvas, 38, 13, 0, 255, 0, 255); + _assertPixel(canvas, 38, 12, 0, 255, 0, 255); + + _assertPixel(canvas, 86, 14, 0, 255, 0, 255); + _assertPixel(canvas, 86, 13, 0, 255, 0, 255); + _assertPixel(canvas, 87, 13, 0, 255, 0, 255); + _assertPixel(canvas, 88, 13, 0, 255, 0, 255); + _assertPixel(canvas, 88, 12, 0, 255, 0, 255); + }); + + it("2d.line.join.miter", function () { + // lineJoin 'miter' is rendered correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineJoin = "miter"; + ctx.lineWidth = 20; + + ctx.fillStyle = "#f00"; + ctx.strokeStyle = "#0f0"; + + ctx.fillStyle = "#f00"; + ctx.strokeStyle = "#0f0"; + + ctx.fillRect(10, 10, 30, 20); + ctx.fillRect(20, 10, 20, 30); + + ctx.beginPath(); + ctx.moveTo(10, 20); + ctx.lineTo(30, 20); + ctx.lineTo(30, 40); + ctx.stroke(); + + ctx.fillStyle = "#0f0"; + ctx.strokeStyle = "#f00"; + + ctx.beginPath(); + ctx.moveTo(60, 20); + ctx.lineTo(80, 20); + ctx.lineTo(80, 40); + ctx.stroke(); + + ctx.fillRect(60, 10, 30, 20); + ctx.fillRect(70, 10, 20, 30); + + _assertPixel(canvas, 38, 12, 0, 255, 0, 255); + _assertPixel(canvas, 39, 11, 0, 255, 0, 255); + _assertPixel(canvas, 40, 10, 0, 255, 0, 255); + _assertPixel(canvas, 41, 9, 0, 255, 0, 255); + _assertPixel(canvas, 42, 8, 0, 255, 0, 255); + + _assertPixel(canvas, 88, 12, 0, 255, 0, 255); + _assertPixel(canvas, 89, 11, 0, 255, 0, 255); + _assertPixel(canvas, 90, 10, 0, 255, 0, 255); + _assertPixel(canvas, 91, 9, 0, 255, 0, 255); + _assertPixel(canvas, 92, 8, 0, 255, 0, 255); + }); + + it("2d.line.join.open", function () { + // Line joins are not drawn at the corner of an unclosed rectangle + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.strokeStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineJoin = "miter"; + ctx.lineWidth = 200; + + ctx.beginPath(); + ctx.moveTo(100, 50); + ctx.lineTo(100, 1000); + ctx.lineTo(1000, 1000); + ctx.lineTo(1000, 50); + ctx.lineTo(100, 50); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.line.join.closed", function () { + // Line joins are drawn at the corner of a closed rectangle + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.strokeStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineJoin = "miter"; + ctx.lineWidth = 200; + + ctx.beginPath(); + ctx.moveTo(100, 50); + ctx.lineTo(100, 1000); + ctx.lineTo(1000, 1000); + ctx.lineTo(1000, 50); + ctx.closePath(); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.line.join.parallel", function () { + // Line joins are drawn at 180-degree joins + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 300; + ctx.lineJoin = "round"; + ctx.beginPath(); + ctx.moveTo(-100, 25); + ctx.lineTo(0, 25); + ctx.lineTo(-100, 25); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.line.join.valid", function () { + // Setting lineJoin to valid values works + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.lineJoin = "bevel"; + assert.strictEqual(ctx.lineJoin, "bevel", "ctx.lineJoin", "'bevel'"); + + ctx.lineJoin = "round"; + assert.strictEqual(ctx.lineJoin, "round", "ctx.lineJoin", "'round'"); + + ctx.lineJoin = "miter"; + assert.strictEqual(ctx.lineJoin, "miter", "ctx.lineJoin", "'miter'"); + }); + + it("2d.line.join.invalid", function () { + // Setting lineJoin to invalid values is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.lineJoin = "bevel"; + assert.strictEqual(ctx.lineJoin, "bevel", "ctx.lineJoin", "'bevel'"); + + ctx.lineJoin = "bevel"; + ctx.lineJoin = "invalid"; + assert.strictEqual(ctx.lineJoin, "bevel", "ctx.lineJoin", "'bevel'"); + + ctx.lineJoin = "bevel"; + ctx.lineJoin = "ROUND"; + assert.strictEqual(ctx.lineJoin, "bevel", "ctx.lineJoin", "'bevel'"); + + ctx.lineJoin = "bevel"; + ctx.lineJoin = "round\0"; + assert.strictEqual(ctx.lineJoin, "bevel", "ctx.lineJoin", "'bevel'"); + + ctx.lineJoin = "bevel"; + ctx.lineJoin = "round "; + assert.strictEqual(ctx.lineJoin, "bevel", "ctx.lineJoin", "'bevel'"); + + ctx.lineJoin = "bevel"; + ctx.lineJoin = ""; + assert.strictEqual(ctx.lineJoin, "bevel", "ctx.lineJoin", "'bevel'"); + + ctx.lineJoin = "bevel"; + ctx.lineJoin = "butt"; + assert.strictEqual(ctx.lineJoin, "bevel", "ctx.lineJoin", "'bevel'"); + }); + + it("2d.line.miter.exceeded", function () { + // Miter joins are not drawn when the miter limit is exceeded + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 400; + ctx.lineJoin = "miter"; + + ctx.strokeStyle = "#f00"; + ctx.miterLimit = 1.414; + ctx.beginPath(); + ctx.moveTo(200, 1000); + ctx.lineTo(200, 200); + ctx.lineTo(1000, 201); // slightly non-right-angle to avoid being a special case + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.line.miter.acute", function () { + // Miter joins are drawn correctly with acute angles + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 200; + ctx.lineJoin = "miter"; + + ctx.strokeStyle = "#0f0"; + ctx.miterLimit = 2.614; + ctx.beginPath(); + ctx.moveTo(100, 1000); + ctx.lineTo(100, 100); + ctx.lineTo(1000, 1000); + ctx.stroke(); + + ctx.strokeStyle = "#f00"; + ctx.miterLimit = 2.613; + ctx.beginPath(); + ctx.moveTo(100, 1000); + ctx.lineTo(100, 100); + ctx.lineTo(1000, 1000); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.line.miter.obtuse", function () { + // Miter joins are drawn correctly with obtuse angles + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 1600; + ctx.lineJoin = "miter"; + + ctx.strokeStyle = "#0f0"; + ctx.miterLimit = 1.083; + ctx.beginPath(); + ctx.moveTo(800, 10000); + ctx.lineTo(800, 300); + ctx.lineTo(10000, -8900); + ctx.stroke(); + + ctx.strokeStyle = "#f00"; + ctx.miterLimit = 1.082; + ctx.beginPath(); + ctx.moveTo(800, 10000); + ctx.lineTo(800, 300); + ctx.lineTo(10000, -8900); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.line.miter.rightangle", function () { + // Miter joins are not drawn when the miter limit is exceeded, on exact right angles + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 400; + ctx.lineJoin = "miter"; + + ctx.strokeStyle = "#f00"; + ctx.miterLimit = 1.414; + ctx.beginPath(); + ctx.moveTo(200, 1000); + ctx.lineTo(200, 200); + ctx.lineTo(1000, 200); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.line.miter.lineedge", function () { + // Miter joins are not drawn when the miter limit is exceeded at the corners of a zero-height rectangle + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 200; + ctx.lineJoin = "miter"; + + ctx.strokeStyle = "#f00"; + ctx.miterLimit = 1.414; + ctx.beginPath(); + ctx.strokeRect(100, 25, 200, 0); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.line.miter.within", function () { + // Miter joins are drawn when the miter limit is not quite exceeded + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 400; + ctx.lineJoin = "miter"; + + ctx.strokeStyle = "#0f0"; + ctx.miterLimit = 1.416; + ctx.beginPath(); + ctx.moveTo(200, 1000); + ctx.lineTo(200, 200); + ctx.lineTo(1000, 201); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.line.miter.valid", function () { + // Setting miterLimit to valid values works + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.miterLimit = 1.5; + assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); + + ctx.miterLimit = "1e1"; + assert.strictEqual(ctx.miterLimit, 10, "ctx.miterLimit", "10"); + + ctx.miterLimit = 1 / 1024; + assert.strictEqual( + ctx.miterLimit, + 1 / 1024, + "ctx.miterLimit", + "1/1024" + ); + + ctx.miterLimit = 1000; + assert.strictEqual(ctx.miterLimit, 1000, "ctx.miterLimit", "1000"); + }); + + it("2d.line.miter.invalid", function () { + // Setting miterLimit to invalid values is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.miterLimit = 1.5; + assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); + + ctx.miterLimit = 1.5; + ctx.miterLimit = 0; + assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); + + ctx.miterLimit = 1.5; + ctx.miterLimit = -1; + assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); + + ctx.miterLimit = 1.5; + ctx.miterLimit = Infinity; + assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); + + ctx.miterLimit = 1.5; + ctx.miterLimit = -Infinity; + assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); + + ctx.miterLimit = 1.5; + ctx.miterLimit = NaN; + assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); + + ctx.miterLimit = 1.5; + ctx.miterLimit = "string"; + assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); + + ctx.miterLimit = 1.5; + ctx.miterLimit = true; + assert.strictEqual(ctx.miterLimit, 1, "ctx.miterLimit", "1"); + + ctx.miterLimit = 1.5; + ctx.miterLimit = false; + assert.strictEqual(ctx.miterLimit, 1.5, "ctx.miterLimit", "1.5"); + }); + + it("2d.line.cross", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 200; + ctx.lineJoin = "bevel"; + + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(110, 50); + ctx.lineTo(110, 60); + ctx.lineTo(100, 60); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.line.union", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 100; + ctx.lineCap = "round"; + + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(0, 24); + ctx.lineTo(100, 25); + ctx.lineTo(0, 26); + ctx.closePath(); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 25, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 25, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + }); + + it("2d.line.invalid.strokestyle", function () { + // Verify correct behavior of canvas on an invalid strokeStyle() + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.strokeStyle = "rgb(0, 255, 0)"; + ctx.strokeStyle = "nonsense"; + ctx.lineWidth = 200; + ctx.moveTo(0, 100); + ctx.lineTo(200, 100); + ctx.stroke(); + var imageData = ctx.getImageData(0, 0, 200, 200); + var imgdata = imageData.data; + assert(imgdata[4] == 0, 'imgdata["' + 4 + '"] == 0'); + assert(imgdata[5] == 255, 'imgdata["' + 5 + '"] == 255'); + assert(imgdata[6] == 0, 'imgdata["' + 6 + '"] == 0'); + }); }); diff --git a/test/wpt/generated/meta.js b/test/wpt/generated/meta.js index 9e15857b3..23206e54c 100644 --- a/test/wpt/generated/meta.js +++ b/test/wpt/generated/meta.js @@ -1,92 +1,136 @@ // THIS FILE WAS AUTO-GENERATED. DO NOT EDIT BY HAND. -const assert = require('assert'); -const path = require('path'); +const assert = require("assert"); +const path = require("path"); const { - createCanvas, - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - CanvasPattern, - CanvasGradient -} = require('../../..'); + createCanvas, + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + CanvasPattern, + CanvasGradient, +} = require("../../.."); const window = { - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - Uint8ClampedArray, - CanvasPattern, - CanvasGradient + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + Uint8ClampedArray, + CanvasPattern, + CanvasGradient, }; const document = { - createElement(type, ...args) { - if (type !== "canvas") - throw new Error(`createElement(${type}) not supported`); - return createCanvas(...args); - } + createElement(type, ...args) { + if (type !== "canvas") + throw new Error(`createElement(${type}) not supported`); + return createCanvas(...args); + }, }; function _getPixel(canvas, x, y) { - const ctx = canvas.getContext('2d'); - const imgdata = ctx.getImageData(x, y, 1, 1); - return [ imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3] ]; + const ctx = canvas.getContext("2d"); + const imgdata = ctx.getImageData(x, y, 1, 1); + return [imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3]]; } -function _assertApprox(actual, expected, epsilon=0, msg="") { - assert(typeof actual === "number", "actual should be a number but got a ${typeof type_actual}"); +function _assertApprox(actual, expected, epsilon = 0, msg = "") { + assert( + typeof actual === "number", + "actual should be a number but got a ${typeof type_actual}" + ); - // The epsilon math below does not place nice with NaN and Infinity - // But in this case Infinity = Infinity and NaN = NaN - if (isFinite(actual) || isFinite(expected)) { - assert(Math.abs(actual - expected) <= epsilon, - `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}`); - } else { - assert.strictEqual(actual, expected); - } + // The epsilon math below does not place nice with NaN and Infinity + // But in this case Infinity = Infinity and NaN = NaN + if (isFinite(actual) || isFinite(expected)) { + assert( + Math.abs(actual - expected) <= epsilon, + `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}` + ); + } else { + assert.strictEqual(actual, expected); + } } function _assertPixel(canvas, x, y, r, g, b, a, pos, color) { - const c = _getPixel(canvas, x,y); - assert.strictEqual(c[0], r, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[1], g, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[2], b, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[3], a, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + assert.strictEqual( + c[0], + r, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[1], + g, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[2], + b, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[3], + a, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function _assertPixelApprox(canvas, x, y, r, g, b, a, pos, color, tolerance) { - const c = _getPixel(canvas, x,y); - _assertApprox(c[0], r, tolerance, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[1], g, tolerance, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[2], b, tolerance, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[3], a, tolerance, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + _assertApprox( + c[0], + r, + tolerance, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[1], + g, + tolerance, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[2], + b, + tolerance, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[3], + a, + tolerance, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function assert_throws_js(Type, fn) { - assert.throws(fn, Type); + assert.throws(fn, Type); } // Used by font tests to allow fonts to load. function deferTest() {} class Test { - // Two cases of this in the tests, look unnecessary. - done() {} - // Used by font tests to allow fonts to load. - step_func_done(func) { func(); } - // Used for image onload callback. - step_func(func) { func(); } + // Two cases of this in the tests, look unnecessary. + done() {} + // Used by font tests to allow fonts to load. + step_func_done(func) { + func(); + } + // Used for image onload callback. + step_func(func) { + func(); + } } function step_timeout(result, time) { - // Nothing; code needs to be converted for this to work. + // Nothing; code needs to be converted for this to work. } -describe("WPT: meta", function () { -}); +describe("WPT: meta", function () {}); diff --git a/test/wpt/generated/path-objects.js b/test/wpt/generated/path-objects.js index 397ec76f6..6a61dc7ea 100644 --- a/test/wpt/generated/path-objects.js +++ b/test/wpt/generated/path-objects.js @@ -1,4352 +1,5103 @@ // THIS FILE WAS AUTO-GENERATED. DO NOT EDIT BY HAND. -const assert = require('assert'); -const path = require('path'); +const assert = require("assert"); +const path = require("path"); const { - createCanvas, - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - CanvasPattern, - CanvasGradient -} = require('../../..'); + createCanvas, + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + CanvasPattern, + CanvasGradient, +} = require("../../.."); const window = { - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - Uint8ClampedArray, - CanvasPattern, - CanvasGradient + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + Uint8ClampedArray, + CanvasPattern, + CanvasGradient, }; const document = { - createElement(type, ...args) { - if (type !== "canvas") - throw new Error(`createElement(${type}) not supported`); - return createCanvas(...args); - } + createElement(type, ...args) { + if (type !== "canvas") + throw new Error(`createElement(${type}) not supported`); + return createCanvas(...args); + }, }; function _getPixel(canvas, x, y) { - const ctx = canvas.getContext('2d'); - const imgdata = ctx.getImageData(x, y, 1, 1); - return [ imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3] ]; + const ctx = canvas.getContext("2d"); + const imgdata = ctx.getImageData(x, y, 1, 1); + return [imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3]]; } -function _assertApprox(actual, expected, epsilon=0, msg="") { - assert(typeof actual === "number", "actual should be a number but got a ${typeof type_actual}"); - - // The epsilon math below does not place nice with NaN and Infinity - // But in this case Infinity = Infinity and NaN = NaN - if (isFinite(actual) || isFinite(expected)) { - assert(Math.abs(actual - expected) <= epsilon, - `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}`); - } else { - assert.strictEqual(actual, expected); - } +function _assertApprox(actual, expected, epsilon = 0, msg = "") { + assert( + typeof actual === "number", + "actual should be a number but got a ${typeof type_actual}" + ); + + // The epsilon math below does not place nice with NaN and Infinity + // But in this case Infinity = Infinity and NaN = NaN + if (isFinite(actual) || isFinite(expected)) { + assert( + Math.abs(actual - expected) <= epsilon, + `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}` + ); + } else { + assert.strictEqual(actual, expected); + } } function _assertPixel(canvas, x, y, r, g, b, a, pos, color) { - const c = _getPixel(canvas, x,y); - assert.strictEqual(c[0], r, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[1], g, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[2], b, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[3], a, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + assert.strictEqual( + c[0], + r, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[1], + g, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[2], + b, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[3], + a, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function _assertPixelApprox(canvas, x, y, r, g, b, a, pos, color, tolerance) { - const c = _getPixel(canvas, x,y); - _assertApprox(c[0], r, tolerance, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[1], g, tolerance, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[2], b, tolerance, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[3], a, tolerance, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + _assertApprox( + c[0], + r, + tolerance, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[1], + g, + tolerance, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[2], + b, + tolerance, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[3], + a, + tolerance, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function assert_throws_js(Type, fn) { - assert.throws(fn, Type); + assert.throws(fn, Type); } // Used by font tests to allow fonts to load. function deferTest() {} class Test { - // Two cases of this in the tests, look unnecessary. - done() {} - // Used by font tests to allow fonts to load. - step_func_done(func) { func(); } - // Used for image onload callback. - step_func(func) { func(); } + // Two cases of this in the tests, look unnecessary. + done() {} + // Used by font tests to allow fonts to load. + step_func_done(func) { + func(); + } + // Used for image onload callback. + step_func(func) { + func(); + } } function step_timeout(result, time) { - // Nothing; code needs to be converted for this to work. + // Nothing; code needs to be converted for this to work. } describe("WPT: path-objects", function () { - - it("2d.path.initial", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.closePath(); - ctx.fillStyle = '#f00'; - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.beginPath", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.rect(0, 0, 100, 50); - ctx.beginPath(); - ctx.fillStyle = '#f00'; - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.moveTo.basic", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.rect(0, 0, 10, 50); - ctx.moveTo(100, 0); - ctx.lineTo(10, 0); - ctx.lineTo(10, 50); - ctx.lineTo(100, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 90,25, 0,255,0,255); - }); - - it("2d.path.moveTo.newsubpath", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.moveTo(0, 0); - ctx.moveTo(100, 0); - ctx.moveTo(100, 50); - ctx.moveTo(0, 50); - ctx.fillStyle = '#f00'; - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.moveTo.multiple", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.moveTo(0, 25); - ctx.moveTo(100, 25); - ctx.moveTo(0, 25); - ctx.lineTo(100, 25); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.moveTo.nonfinite", function () { - // moveTo() with Infinity/NaN is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - ctx.moveTo(Infinity, 50); - ctx.moveTo(-Infinity, 50); - ctx.moveTo(NaN, 50); - ctx.moveTo(0, Infinity); - ctx.moveTo(0, -Infinity); - ctx.moveTo(0, NaN); - ctx.moveTo(Infinity, Infinity); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.closePath.empty", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.closePath(); - ctx.fillStyle = '#f00'; - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.closePath.newline", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.moveTo(-100, 25); - ctx.lineTo(-100, -100); - ctx.lineTo(200, -100); - ctx.lineTo(200, 25); - ctx.closePath(); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.closePath.nextpoint", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.moveTo(-100, 25); - ctx.lineTo(-100, -1000); - ctx.closePath(); - ctx.lineTo(1000, 25); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.lineTo.ensuresubpath.1", function () { - // If there is no subpath, the point is added and nothing is drawn - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.lineTo(100, 50); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.lineTo.ensuresubpath.2", function () { - // If there is no subpath, the point is added and used for subsequent drawing - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.lineTo(0, 25); - ctx.lineTo(100, 25); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.lineTo.basic", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.lineTo(100, 25); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.lineTo.nextpoint", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.moveTo(-100, -100); - ctx.lineTo(0, 25); - ctx.lineTo(100, 25); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.lineTo.nonfinite", function () { - // lineTo() with Infinity/NaN is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - ctx.lineTo(Infinity, 50); - ctx.lineTo(-Infinity, 50); - ctx.lineTo(NaN, 50); - ctx.lineTo(0, Infinity); - ctx.lineTo(0, -Infinity); - ctx.lineTo(0, NaN); - ctx.lineTo(Infinity, Infinity); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 90,45, 0,255,0,255); - }); - - it("2d.path.lineTo.nonfinite.details", function () { - // lineTo() with Infinity/NaN for first arg still converts the second arg - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - for (var arg1 of [Infinity, -Infinity, NaN]) { - var converted = false; - ctx.lineTo(arg1, { valueOf: function() { converted = true; return 0; } }); - assert(converted, "converted"); - } - }); - - it("2d.path.quadraticCurveTo.ensuresubpath.1", function () { - // If there is no subpath, the first control point is added (and nothing is drawn up to it) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.quadraticCurveTo(100, 50, 200, 50); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 95,45, 0,255,0,255); - }); - - it("2d.path.quadraticCurveTo.ensuresubpath.2", function () { - // If there is no subpath, the first control point is added - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.quadraticCurveTo(0, 25, 100, 25); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 5,45, 0,255,0,255); - }); - - it("2d.path.quadraticCurveTo.basic", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.quadraticCurveTo(100, 25, 100, 25); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.quadraticCurveTo.shape", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 55; - ctx.beginPath(); - ctx.moveTo(-1000, 1050); - ctx.quadraticCurveTo(0, -1000, 1200, 1050); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.quadraticCurveTo.scaled", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.scale(1000, 1000); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 0.055; - ctx.beginPath(); - ctx.moveTo(-1, 1.05); - ctx.quadraticCurveTo(0, -1, 1.2, 1.05); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.quadraticCurveTo.nonfinite", function () { - // quadraticCurveTo() with Infinity/NaN is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - ctx.quadraticCurveTo(Infinity, 50, 0, 50); - ctx.quadraticCurveTo(-Infinity, 50, 0, 50); - ctx.quadraticCurveTo(NaN, 50, 0, 50); - ctx.quadraticCurveTo(0, Infinity, 0, 50); - ctx.quadraticCurveTo(0, -Infinity, 0, 50); - ctx.quadraticCurveTo(0, NaN, 0, 50); - ctx.quadraticCurveTo(0, 50, Infinity, 50); - ctx.quadraticCurveTo(0, 50, -Infinity, 50); - ctx.quadraticCurveTo(0, 50, NaN, 50); - ctx.quadraticCurveTo(0, 50, 0, Infinity); - ctx.quadraticCurveTo(0, 50, 0, -Infinity); - ctx.quadraticCurveTo(0, 50, 0, NaN); - ctx.quadraticCurveTo(Infinity, Infinity, 0, 50); - ctx.quadraticCurveTo(Infinity, Infinity, Infinity, 50); - ctx.quadraticCurveTo(Infinity, Infinity, Infinity, Infinity); - ctx.quadraticCurveTo(Infinity, Infinity, 0, Infinity); - ctx.quadraticCurveTo(Infinity, 50, Infinity, 50); - ctx.quadraticCurveTo(Infinity, 50, Infinity, Infinity); - ctx.quadraticCurveTo(Infinity, 50, 0, Infinity); - ctx.quadraticCurveTo(0, Infinity, Infinity, 50); - ctx.quadraticCurveTo(0, Infinity, Infinity, Infinity); - ctx.quadraticCurveTo(0, Infinity, 0, Infinity); - ctx.quadraticCurveTo(0, 50, Infinity, Infinity); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 90,45, 0,255,0,255); - }); - - it("2d.path.bezierCurveTo.ensuresubpath.1", function () { - // If there is no subpath, the first control point is added (and nothing is drawn up to it) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.bezierCurveTo(100, 50, 200, 50, 200, 50); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 95,45, 0,255,0,255); - }); - - it("2d.path.bezierCurveTo.ensuresubpath.2", function () { - // If there is no subpath, the first control point is added - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.bezierCurveTo(0, 25, 100, 25, 100, 25); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 5,45, 0,255,0,255); - }); - - it("2d.path.bezierCurveTo.basic", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.bezierCurveTo(100, 25, 100, 25, 100, 25); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.bezierCurveTo.shape", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 55; - ctx.beginPath(); - ctx.moveTo(-2000, 3100); - ctx.bezierCurveTo(-2000, -1000, 2100, -1000, 2100, 3100); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.bezierCurveTo.scaled", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.scale(1000, 1000); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 0.055; - ctx.beginPath(); - ctx.moveTo(-2, 3.1); - ctx.bezierCurveTo(-2, -1, 2.1, -1, 2.1, 3.1); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.bezierCurveTo.nonfinite", function () { - // bezierCurveTo() with Infinity/NaN is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - ctx.bezierCurveTo(Infinity, 50, 0, 50, 0, 50); - ctx.bezierCurveTo(-Infinity, 50, 0, 50, 0, 50); - ctx.bezierCurveTo(NaN, 50, 0, 50, 0, 50); - ctx.bezierCurveTo(0, Infinity, 0, 50, 0, 50); - ctx.bezierCurveTo(0, -Infinity, 0, 50, 0, 50); - ctx.bezierCurveTo(0, NaN, 0, 50, 0, 50); - ctx.bezierCurveTo(0, 50, Infinity, 50, 0, 50); - ctx.bezierCurveTo(0, 50, -Infinity, 50, 0, 50); - ctx.bezierCurveTo(0, 50, NaN, 50, 0, 50); - ctx.bezierCurveTo(0, 50, 0, Infinity, 0, 50); - ctx.bezierCurveTo(0, 50, 0, -Infinity, 0, 50); - ctx.bezierCurveTo(0, 50, 0, NaN, 0, 50); - ctx.bezierCurveTo(0, 50, 0, 50, Infinity, 50); - ctx.bezierCurveTo(0, 50, 0, 50, -Infinity, 50); - ctx.bezierCurveTo(0, 50, 0, 50, NaN, 50); - ctx.bezierCurveTo(0, 50, 0, 50, 0, Infinity); - ctx.bezierCurveTo(0, 50, 0, 50, 0, -Infinity); - ctx.bezierCurveTo(0, 50, 0, 50, 0, NaN); - ctx.bezierCurveTo(Infinity, Infinity, 0, 50, 0, 50); - ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, 0, 50); - ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, 0, 50); - ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, Infinity, 50); - ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); - ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, 0, Infinity); - ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, Infinity, 50); - ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, Infinity, Infinity); - ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, 0, Infinity); - ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, 0, 50); - ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, Infinity, 50); - ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, Infinity, Infinity); - ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, 0, Infinity); - ctx.bezierCurveTo(Infinity, Infinity, 0, 50, Infinity, 50); - ctx.bezierCurveTo(Infinity, Infinity, 0, 50, Infinity, Infinity); - ctx.bezierCurveTo(Infinity, Infinity, 0, 50, 0, Infinity); - ctx.bezierCurveTo(Infinity, 50, Infinity, 50, 0, 50); - ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, 0, 50); - ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, Infinity, 50); - ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, Infinity, Infinity); - ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, 0, Infinity); - ctx.bezierCurveTo(Infinity, 50, Infinity, 50, Infinity, 50); - ctx.bezierCurveTo(Infinity, 50, Infinity, 50, Infinity, Infinity); - ctx.bezierCurveTo(Infinity, 50, Infinity, 50, 0, Infinity); - ctx.bezierCurveTo(Infinity, 50, 0, Infinity, 0, 50); - ctx.bezierCurveTo(Infinity, 50, 0, Infinity, Infinity, 50); - ctx.bezierCurveTo(Infinity, 50, 0, Infinity, Infinity, Infinity); - ctx.bezierCurveTo(Infinity, 50, 0, Infinity, 0, Infinity); - ctx.bezierCurveTo(Infinity, 50, 0, 50, Infinity, 50); - ctx.bezierCurveTo(Infinity, 50, 0, 50, Infinity, Infinity); - ctx.bezierCurveTo(Infinity, 50, 0, 50, 0, Infinity); - ctx.bezierCurveTo(0, Infinity, Infinity, 50, 0, 50); - ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, 0, 50); - ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, Infinity, 50); - ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, Infinity, Infinity); - ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, 0, Infinity); - ctx.bezierCurveTo(0, Infinity, Infinity, 50, Infinity, 50); - ctx.bezierCurveTo(0, Infinity, Infinity, 50, Infinity, Infinity); - ctx.bezierCurveTo(0, Infinity, Infinity, 50, 0, Infinity); - ctx.bezierCurveTo(0, Infinity, 0, Infinity, 0, 50); - ctx.bezierCurveTo(0, Infinity, 0, Infinity, Infinity, 50); - ctx.bezierCurveTo(0, Infinity, 0, Infinity, Infinity, Infinity); - ctx.bezierCurveTo(0, Infinity, 0, Infinity, 0, Infinity); - ctx.bezierCurveTo(0, Infinity, 0, 50, Infinity, 50); - ctx.bezierCurveTo(0, Infinity, 0, 50, Infinity, Infinity); - ctx.bezierCurveTo(0, Infinity, 0, 50, 0, Infinity); - ctx.bezierCurveTo(0, 50, Infinity, Infinity, 0, 50); - ctx.bezierCurveTo(0, 50, Infinity, Infinity, Infinity, 50); - ctx.bezierCurveTo(0, 50, Infinity, Infinity, Infinity, Infinity); - ctx.bezierCurveTo(0, 50, Infinity, Infinity, 0, Infinity); - ctx.bezierCurveTo(0, 50, Infinity, 50, Infinity, 50); - ctx.bezierCurveTo(0, 50, Infinity, 50, Infinity, Infinity); - ctx.bezierCurveTo(0, 50, Infinity, 50, 0, Infinity); - ctx.bezierCurveTo(0, 50, 0, Infinity, Infinity, 50); - ctx.bezierCurveTo(0, 50, 0, Infinity, Infinity, Infinity); - ctx.bezierCurveTo(0, 50, 0, Infinity, 0, Infinity); - ctx.bezierCurveTo(0, 50, 0, 50, Infinity, Infinity); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 90,45, 0,255,0,255); - }); - - it("2d.path.arcTo.ensuresubpath.1", function () { - // If there is no subpath, the first control point is added (and nothing is drawn up to it) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.arcTo(100, 50, 200, 50, 0.1); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arcTo.ensuresubpath.2", function () { - // If there is no subpath, the first control point is added - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.arcTo(0, 25, 50, 250, 0.1); // adds (x1,y1), draws nothing - ctx.lineTo(100, 25); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arcTo.coincide.1", function () { - // arcTo() has no effect if P0 = P1 - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(0, 25, 50, 1000, 1); - ctx.lineTo(100, 25); - ctx.stroke(); - - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.arcTo(50, 25, 100, 25, 1); - ctx.stroke(); - - _assertPixel(canvas, 50,1, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 50,48, 0,255,0,255); - }); - - it("2d.path.arcTo.coincide.2", function () { - // arcTo() draws a straight line to P1 if P1 = P2 - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(100, 25, 100, 25, 1); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arcTo.collinear.1", function () { - // arcTo() with all points on a line, and P1 between P0/P2, draws a straight line to P1 - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(100, 25, 200, 25, 1); - ctx.stroke(); - - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(-100, 25); - ctx.arcTo(0, 25, 100, 25, 1); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arcTo.collinear.2", function () { - // arcTo() with all points on a line, and P2 between P0/P1, draws a straight line to P1 - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(100, 25, 10, 25, 1); - ctx.stroke(); - - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 25); - ctx.arcTo(200, 25, 110, 25, 1); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arcTo.collinear.3", function () { - // arcTo() with all points on a line, and P0 between P1/P2, draws a straight line to P1 - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(100, 25, -100, 25, 1); - ctx.stroke(); - - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 25); - ctx.arcTo(200, 25, 0, 25, 1); - ctx.stroke(); - - ctx.beginPath(); - ctx.moveTo(-100, 25); - ctx.arcTo(0, 25, -200, 25, 1); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arcTo.shape.curve1", function () { - // arcTo() curves in the right kind of shape - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var tol = 1.5; // tolerance to avoid antialiasing artifacts - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 10; - ctx.beginPath(); - ctx.moveTo(10, 25); - ctx.arcTo(75, 25, 75, 60, 20); - ctx.stroke(); - - ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.rect(10, 20, 45, 10); - ctx.moveTo(80, 45); - ctx.arc(55, 45, 25+tol, 0, -Math.PI/2, true); - ctx.arc(55, 45, 15-tol, -Math.PI/2, 0, false); - ctx.fill(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 55,19, 0,255,0,255); - _assertPixel(canvas, 55,20, 0,255,0,255); - _assertPixel(canvas, 55,21, 0,255,0,255); - _assertPixel(canvas, 64,22, 0,255,0,255); - _assertPixel(canvas, 65,21, 0,255,0,255); - _assertPixel(canvas, 72,28, 0,255,0,255); - _assertPixel(canvas, 73,27, 0,255,0,255); - _assertPixel(canvas, 78,36, 0,255,0,255); - _assertPixel(canvas, 79,35, 0,255,0,255); - _assertPixel(canvas, 80,44, 0,255,0,255); - _assertPixel(canvas, 80,45, 0,255,0,255); - _assertPixel(canvas, 80,46, 0,255,0,255); - _assertPixel(canvas, 65,45, 0,255,0,255); - }); - - it("2d.path.arcTo.shape.curve2", function () { - // arcTo() curves in the right kind of shape - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var tol = 1.5; // tolerance to avoid antialiasing artifacts - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.rect(10, 20, 45, 10); - ctx.moveTo(80, 45); - ctx.arc(55, 45, 25-tol, 0, -Math.PI/2, true); - ctx.arc(55, 45, 15+tol, -Math.PI/2, 0, false); - ctx.fill(); - - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 10; - ctx.beginPath(); - ctx.moveTo(10, 25); - ctx.arcTo(75, 25, 75, 60, 20); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 55,19, 0,255,0,255); - _assertPixel(canvas, 55,20, 0,255,0,255); - _assertPixel(canvas, 55,21, 0,255,0,255); - _assertPixel(canvas, 64,22, 0,255,0,255); - _assertPixel(canvas, 65,21, 0,255,0,255); - _assertPixel(canvas, 72,28, 0,255,0,255); - _assertPixel(canvas, 73,27, 0,255,0,255); - _assertPixel(canvas, 78,36, 0,255,0,255); - _assertPixel(canvas, 79,35, 0,255,0,255); - _assertPixel(canvas, 80,44, 0,255,0,255); - _assertPixel(canvas, 80,45, 0,255,0,255); - _assertPixel(canvas, 80,46, 0,255,0,255); - }); - - it("2d.path.arcTo.shape.start", function () { - // arcTo() draws a straight line from P0 to P1 - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(200, 25, 200, 50, 10); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.arcTo.shape.end", function () { - // arcTo() does not draw anything from P1 to P2 - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.moveTo(-100, -100); - ctx.arcTo(-100, 25, 200, 25, 10); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.arcTo.negative", function () { - // arcTo() with negative radius throws an exception - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.throws(function() { ctx.arcTo(0, 0, 0, 0, -1); }, /INDEX_SIZE_ERR/); - var path = new Path2D(); - assert.throws(function() { path.arcTo(10, 10, 20, 20, -5); }, /INDEX_SIZE_ERR/); - }); - - it("2d.path.arcTo.zero.1", function () { - // arcTo() with zero radius draws a straight line from P0 to P1 - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(100, 25, 100, 100, 0); - ctx.stroke(); - - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(0, -25); - ctx.arcTo(50, -25, 50, 50, 0); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arcTo.zero.2", function () { - // arcTo() with zero radius draws a straight line from P0 to P1, even when all points are collinear - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(100, 25, -100, 25, 0); - ctx.stroke(); - - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 25); - ctx.arcTo(200, 25, 50, 25, 0); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arcTo.transformation", function () { - // arcTo joins up to the last subpath point correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 50); - ctx.translate(100, 0); - ctx.arcTo(50, 50, 50, 0, 50); - ctx.lineTo(-100, 0); - ctx.fill(); - - _assertPixel(canvas, 0,0, 0,255,0,255); - _assertPixel(canvas, 50,0, 0,255,0,255); - _assertPixel(canvas, 99,0, 0,255,0,255); - _assertPixel(canvas, 0,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 99,25, 0,255,0,255); - _assertPixel(canvas, 0,49, 0,255,0,255); - _assertPixel(canvas, 50,49, 0,255,0,255); - _assertPixel(canvas, 99,49, 0,255,0,255); - }); - - it("2d.path.arcTo.scale", function () { - // arcTo scales the curve, not just the control points - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 50); - ctx.translate(100, 0); - ctx.scale(0.1, 1); - ctx.arcTo(50, 50, 50, 0, 50); - ctx.lineTo(-1000, 0); - ctx.fill(); - - _assertPixel(canvas, 0,0, 0,255,0,255); - _assertPixel(canvas, 50,0, 0,255,0,255); - _assertPixel(canvas, 99,0, 0,255,0,255); - _assertPixel(canvas, 0,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 99,25, 0,255,0,255); - _assertPixel(canvas, 0,49, 0,255,0,255); - _assertPixel(canvas, 50,49, 0,255,0,255); - _assertPixel(canvas, 99,49, 0,255,0,255); - }); - - it("2d.path.arcTo.nonfinite", function () { - // arcTo() with Infinity/NaN is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - ctx.arcTo(Infinity, 50, 0, 50, 0); - ctx.arcTo(-Infinity, 50, 0, 50, 0); - ctx.arcTo(NaN, 50, 0, 50, 0); - ctx.arcTo(0, Infinity, 0, 50, 0); - ctx.arcTo(0, -Infinity, 0, 50, 0); - ctx.arcTo(0, NaN, 0, 50, 0); - ctx.arcTo(0, 50, Infinity, 50, 0); - ctx.arcTo(0, 50, -Infinity, 50, 0); - ctx.arcTo(0, 50, NaN, 50, 0); - ctx.arcTo(0, 50, 0, Infinity, 0); - ctx.arcTo(0, 50, 0, -Infinity, 0); - ctx.arcTo(0, 50, 0, NaN, 0); - ctx.arcTo(0, 50, 0, 50, Infinity); - ctx.arcTo(0, 50, 0, 50, -Infinity); - ctx.arcTo(0, 50, 0, 50, NaN); - ctx.arcTo(Infinity, Infinity, 0, 50, 0); - ctx.arcTo(Infinity, Infinity, Infinity, 50, 0); - ctx.arcTo(Infinity, Infinity, Infinity, Infinity, 0); - ctx.arcTo(Infinity, Infinity, Infinity, Infinity, Infinity); - ctx.arcTo(Infinity, Infinity, Infinity, 50, Infinity); - ctx.arcTo(Infinity, Infinity, 0, Infinity, 0); - ctx.arcTo(Infinity, Infinity, 0, Infinity, Infinity); - ctx.arcTo(Infinity, Infinity, 0, 50, Infinity); - ctx.arcTo(Infinity, 50, Infinity, 50, 0); - ctx.arcTo(Infinity, 50, Infinity, Infinity, 0); - ctx.arcTo(Infinity, 50, Infinity, Infinity, Infinity); - ctx.arcTo(Infinity, 50, Infinity, 50, Infinity); - ctx.arcTo(Infinity, 50, 0, Infinity, 0); - ctx.arcTo(Infinity, 50, 0, Infinity, Infinity); - ctx.arcTo(Infinity, 50, 0, 50, Infinity); - ctx.arcTo(0, Infinity, Infinity, 50, 0); - ctx.arcTo(0, Infinity, Infinity, Infinity, 0); - ctx.arcTo(0, Infinity, Infinity, Infinity, Infinity); - ctx.arcTo(0, Infinity, Infinity, 50, Infinity); - ctx.arcTo(0, Infinity, 0, Infinity, 0); - ctx.arcTo(0, Infinity, 0, Infinity, Infinity); - ctx.arcTo(0, Infinity, 0, 50, Infinity); - ctx.arcTo(0, 50, Infinity, Infinity, 0); - ctx.arcTo(0, 50, Infinity, Infinity, Infinity); - ctx.arcTo(0, 50, Infinity, 50, Infinity); - ctx.arcTo(0, 50, 0, Infinity, Infinity); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 90,45, 0,255,0,255); - }); - - it("2d.path.arc.empty", function () { - // arc() with an empty path does not draw a straight line to the start point - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.arc(200, 25, 5, 0, 2*Math.PI, true); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arc.nonempty", function () { - // arc() with a non-empty path does draw a straight line to the start point - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arc(200, 25, 5, 0, 2*Math.PI, true); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arc.end", function () { - // arc() adds the end point of the arc to the subpath - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(-100, 0); - ctx.arc(-100, 0, 25, -Math.PI/2, Math.PI/2, true); - ctx.lineTo(100, 25); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arc.default", function () { - // arc() with missing last argument defaults to clockwise - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 0); - ctx.arc(100, 0, 150, -Math.PI, Math.PI/2); - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arc.angle.1", function () { - // arc() draws pi/2 .. -pi anticlockwise correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 0); - ctx.arc(100, 0, 150, Math.PI/2, -Math.PI, true); - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arc.angle.2", function () { - // arc() draws -3pi/2 .. -pi anticlockwise correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 0); - ctx.arc(100, 0, 150, -3*Math.PI/2, -Math.PI, true); - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arc.angle.3", function () { - // arc() wraps angles mod 2pi when anticlockwise and end > start+2pi - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 0); - ctx.arc(100, 0, 150, (512+1/2)*Math.PI, (1024-1)*Math.PI, true); - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arc.angle.4", function () { - // arc() draws a full circle when clockwise and end > start+2pi - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.arc(50, 25, 60, (512+1/2)*Math.PI, (1024-1)*Math.PI, false); - ctx.fill(); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.arc.angle.5", function () { - // arc() wraps angles mod 2pi when clockwise and start > end+2pi - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 0); - ctx.arc(100, 0, 150, (1024-1)*Math.PI, (512+1/2)*Math.PI, false); - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arc.angle.6", function () { - // arc() draws a full circle when anticlockwise and start > end+2pi - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.arc(50, 25, 60, (1024-1)*Math.PI, (512+1/2)*Math.PI, true); - ctx.fill(); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.arc.zero.1", function () { - // arc() draws nothing when startAngle = endAngle and anticlockwise - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.arc(50, 25, 50, 0, 0, true); - ctx.stroke(); - _assertPixel(canvas, 50,20, 0,255,0,255); - }); - - it("2d.path.arc.zero.2", function () { - // arc() draws nothing when startAngle = endAngle and clockwise - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.arc(50, 25, 50, 0, 0, false); - ctx.stroke(); - _assertPixel(canvas, 50,20, 0,255,0,255); - }); - - it("2d.path.arc.twopie.1", function () { - // arc() draws nothing when end = start + 2pi-e and anticlockwise - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, true); - ctx.stroke(); - _assertPixel(canvas, 50,20, 0,255,0,255); - }); - - it("2d.path.arc.twopie.2", function () { - // arc() draws a full circle when end = start + 2pi-e and clockwise - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, false); - ctx.stroke(); - _assertPixel(canvas, 50,20, 0,255,0,255); - }); - - it("2d.path.arc.twopie.3", function () { - // arc() draws a full circle when end = start + 2pi+e and anticlockwise - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, true); - ctx.stroke(); - _assertPixel(canvas, 50,20, 0,255,0,255); - }); - - it("2d.path.arc.twopie.4", function () { - // arc() draws nothing when end = start + 2pi+e and clockwise - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, false); - ctx.stroke(); - _assertPixel(canvas, 50,20, 0,255,0,255); - }); - - it("2d.path.arc.shape.1", function () { - // arc() from 0 to pi does not draw anything in the wrong half - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.arc(50, 50, 50, 0, Math.PI, false); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 20,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.arc.shape.2", function () { - // arc() from 0 to pi draws stuff in the right half - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 100; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.arc(50, 50, 50, 0, Math.PI, true); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 20,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.arc.shape.3", function () { - // arc() from 0 to -pi/2 does not draw anything in the wrong quadrant - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 100; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.arc(0, 50, 50, 0, -Math.PI/2, false); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.arc.shape.4", function () { - // arc() from 0 to -pi/2 draws stuff in the right quadrant - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 150; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.arc(-50, 50, 100, 0, -Math.PI/2, true); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.arc.shape.5", function () { - // arc() from 0 to 5pi does not draw crazy things - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 200; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.arc(300, 0, 100, 0, 5*Math.PI, false); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.arc.selfintersect.1", function () { - // arc() with lineWidth > 2*radius is drawn sensibly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 200; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.arc(100, 50, 25, 0, -Math.PI/2, true); - ctx.stroke(); - ctx.beginPath(); - ctx.arc(0, 0, 25, 0, -Math.PI/2, true); - ctx.stroke(); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arc.selfintersect.2", function () { - // arc() with lineWidth > 2*radius is drawn sensibly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 180; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.arc(-50, 50, 25, 0, -Math.PI/2, true); - ctx.stroke(); - ctx.beginPath(); - ctx.arc(100, 0, 25, 0, -Math.PI/2, true); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 90,10, 0,255,0,255); - _assertPixel(canvas, 97,1, 0,255,0,255); - _assertPixel(canvas, 97,2, 0,255,0,255); - _assertPixel(canvas, 97,3, 0,255,0,255); - _assertPixel(canvas, 2,48, 0,255,0,255); - }); - - it("2d.path.arc.negative", function () { - // arc() with negative radius throws INDEX_SIZE_ERR - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.throws(function() { ctx.arc(0, 0, -1, 0, 0, true); }, /INDEX_SIZE_ERR/); - var path = new Path2D(); - assert.throws(function() { path.arc(10, 10, -5, 0, 1, false); }, /INDEX_SIZE_ERR/); - }); - - it("2d.path.arc.zeroradius", function () { - // arc() with zero radius draws a line to the start point - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00' - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arc(200, 25, 0, 0, Math.PI, true); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.arc.scale.1", function () { - // Non-uniformly scaled arcs are the right shape - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.scale(2, 0.5); - ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.arc(25, 50, 56, 0, 2*Math.PI, false); - ctx.fill(); - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(-25, 50); - ctx.arc(-25, 50, 24, 0, 2*Math.PI, false); - ctx.moveTo(75, 50); - ctx.arc(75, 50, 24, 0, 2*Math.PI, false); - ctx.moveTo(25, -25); - ctx.arc(25, -25, 24, 0, 2*Math.PI, false); - ctx.moveTo(25, 125); - ctx.arc(25, 125, 24, 0, 2*Math.PI, false); - ctx.fill(); - - _assertPixel(canvas, 0,0, 0,255,0,255); - _assertPixel(canvas, 50,0, 0,255,0,255); - _assertPixel(canvas, 99,0, 0,255,0,255); - _assertPixel(canvas, 0,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 99,25, 0,255,0,255); - _assertPixel(canvas, 0,49, 0,255,0,255); - _assertPixel(canvas, 50,49, 0,255,0,255); - _assertPixel(canvas, 99,49, 0,255,0,255); - }); - - it("2d.path.arc.scale.2", function () { - // Highly scaled arcs are the right shape - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.scale(100, 100); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 1.2; - ctx.beginPath(); - ctx.arc(0, 0, 0.6, 0, Math.PI/2, false); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 50,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 98,25, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 50,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.arc.nonfinite", function () { - // arc() with Infinity/NaN is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - ctx.arc(Infinity, 0, 50, 0, 2*Math.PI, true); - ctx.arc(-Infinity, 0, 50, 0, 2*Math.PI, true); - ctx.arc(NaN, 0, 50, 0, 2*Math.PI, true); - ctx.arc(0, Infinity, 50, 0, 2*Math.PI, true); - ctx.arc(0, -Infinity, 50, 0, 2*Math.PI, true); - ctx.arc(0, NaN, 50, 0, 2*Math.PI, true); - ctx.arc(0, 0, Infinity, 0, 2*Math.PI, true); - ctx.arc(0, 0, -Infinity, 0, 2*Math.PI, true); - ctx.arc(0, 0, NaN, 0, 2*Math.PI, true); - ctx.arc(0, 0, 50, Infinity, 2*Math.PI, true); - ctx.arc(0, 0, 50, -Infinity, 2*Math.PI, true); - ctx.arc(0, 0, 50, NaN, 2*Math.PI, true); - ctx.arc(0, 0, 50, 0, Infinity, true); - ctx.arc(0, 0, 50, 0, -Infinity, true); - ctx.arc(0, 0, 50, 0, NaN, true); - ctx.arc(Infinity, Infinity, 50, 0, 2*Math.PI, true); - ctx.arc(Infinity, Infinity, Infinity, 0, 2*Math.PI, true); - ctx.arc(Infinity, Infinity, Infinity, Infinity, 2*Math.PI, true); - ctx.arc(Infinity, Infinity, Infinity, Infinity, Infinity, true); - ctx.arc(Infinity, Infinity, Infinity, 0, Infinity, true); - ctx.arc(Infinity, Infinity, 50, Infinity, 2*Math.PI, true); - ctx.arc(Infinity, Infinity, 50, Infinity, Infinity, true); - ctx.arc(Infinity, Infinity, 50, 0, Infinity, true); - ctx.arc(Infinity, 0, Infinity, 0, 2*Math.PI, true); - ctx.arc(Infinity, 0, Infinity, Infinity, 2*Math.PI, true); - ctx.arc(Infinity, 0, Infinity, Infinity, Infinity, true); - ctx.arc(Infinity, 0, Infinity, 0, Infinity, true); - ctx.arc(Infinity, 0, 50, Infinity, 2*Math.PI, true); - ctx.arc(Infinity, 0, 50, Infinity, Infinity, true); - ctx.arc(Infinity, 0, 50, 0, Infinity, true); - ctx.arc(0, Infinity, Infinity, 0, 2*Math.PI, true); - ctx.arc(0, Infinity, Infinity, Infinity, 2*Math.PI, true); - ctx.arc(0, Infinity, Infinity, Infinity, Infinity, true); - ctx.arc(0, Infinity, Infinity, 0, Infinity, true); - ctx.arc(0, Infinity, 50, Infinity, 2*Math.PI, true); - ctx.arc(0, Infinity, 50, Infinity, Infinity, true); - ctx.arc(0, Infinity, 50, 0, Infinity, true); - ctx.arc(0, 0, Infinity, Infinity, 2*Math.PI, true); - ctx.arc(0, 0, Infinity, Infinity, Infinity, true); - ctx.arc(0, 0, Infinity, 0, Infinity, true); - ctx.arc(0, 0, 50, Infinity, Infinity, true); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 90,45, 0,255,0,255); - }); - - it("2d.path.rect.basic", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.rect(0, 0, 100, 50); - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.rect.newsubpath", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.moveTo(-100, 25); - ctx.lineTo(-50, 25); - ctx.rect(200, 25, 1, 1); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.rect.closed", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 200; - ctx.lineJoin = 'miter'; - ctx.rect(100, 50, 100, 100); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.rect.end.1", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.rect(200, 100, 400, 1000); - ctx.lineTo(-2000, -1000); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.rect.end.2", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 450; - ctx.lineCap = 'round'; - ctx.lineJoin = 'bevel'; - ctx.rect(150, 150, 2000, 2000); - ctx.lineTo(160, 160); - ctx.stroke(); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.rect.zero.1", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.rect(0, 50, 100, 0); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.rect.zero.2", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.rect(50, -100, 0, 250); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.rect.zero.3", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.rect(50, 25, 0, 0); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.rect.zero.4", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.rect(100, 25, 0, 0); - ctx.lineTo(0, 25); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.rect.zero.5", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.moveTo(0, 0); - ctx.rect(100, 25, 0, 0); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.rect.zero.6", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineJoin = 'miter'; - ctx.miterLimit = 1.5; - ctx.lineWidth = 200; - ctx.beginPath(); - ctx.rect(100, 25, 1000, 0); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.rect.negative", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.fillStyle = '#0f0'; - ctx.rect(0, 0, 50, 25); - ctx.rect(100, 0, -50, 25); - ctx.rect(0, 50, 50, -25); - ctx.rect(100, 50, -50, -25); - ctx.fill(); - _assertPixel(canvas, 25,12, 0,255,0,255); - _assertPixel(canvas, 75,12, 0,255,0,255); - _assertPixel(canvas, 25,37, 0,255,0,255); - _assertPixel(canvas, 75,37, 0,255,0,255); - }); - - it("2d.path.rect.winding", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.fillStyle = '#f00'; - ctx.rect(0, 0, 50, 50); - ctx.rect(100, 50, -50, -50); - ctx.rect(0, 25, 100, -25); - ctx.rect(100, 25, -100, 25); - ctx.fill(); - _assertPixel(canvas, 25,12, 0,255,0,255); - _assertPixel(canvas, 75,12, 0,255,0,255); - _assertPixel(canvas, 25,37, 0,255,0,255); - _assertPixel(canvas, 75,37, 0,255,0,255); - }); - - it("2d.path.rect.selfintersect", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 90; - ctx.beginPath(); - ctx.rect(45, 20, 10, 10); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.rect.nonfinite", function () { - // rect() with Infinity/NaN is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - ctx.rect(Infinity, 50, 1, 1); - ctx.rect(-Infinity, 50, 1, 1); - ctx.rect(NaN, 50, 1, 1); - ctx.rect(0, Infinity, 1, 1); - ctx.rect(0, -Infinity, 1, 1); - ctx.rect(0, NaN, 1, 1); - ctx.rect(0, 50, Infinity, 1); - ctx.rect(0, 50, -Infinity, 1); - ctx.rect(0, 50, NaN, 1); - ctx.rect(0, 50, 1, Infinity); - ctx.rect(0, 50, 1, -Infinity); - ctx.rect(0, 50, 1, NaN); - ctx.rect(Infinity, Infinity, 1, 1); - ctx.rect(Infinity, Infinity, Infinity, 1); - ctx.rect(Infinity, Infinity, Infinity, Infinity); - ctx.rect(Infinity, Infinity, 1, Infinity); - ctx.rect(Infinity, 50, Infinity, 1); - ctx.rect(Infinity, 50, Infinity, Infinity); - ctx.rect(Infinity, 50, 1, Infinity); - ctx.rect(0, Infinity, Infinity, 1); - ctx.rect(0, Infinity, Infinity, Infinity); - ctx.rect(0, Infinity, 1, Infinity); - ctx.rect(0, 50, Infinity, Infinity); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 90,45, 0,255,0,255); - }); - - it("2d.path.roundrect.newsubpath", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.moveTo(-100, 25); - ctx.lineTo(-50, 25); - ctx.roundRect(200, 25, 1, 1, [0]); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.roundrect.closed", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 200; - ctx.lineJoin = 'miter'; - ctx.roundRect(100, 50, 100, 100, [0]); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.roundrect.end.1", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.roundRect(200, 100, 400, 1000, [0]); - ctx.lineTo(-2000, -1000); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.roundrect.end.2", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 450; - ctx.lineCap = 'round'; - ctx.lineJoin = 'bevel'; - ctx.roundRect(150, 150, 2000, 2000, [0]); - ctx.lineTo(160, 160); - ctx.stroke(); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.roundrect.end.3", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.roundRect(101, 51, 2000, 2000, [500, 500, 500, 500]); - ctx.lineTo(-1, -1); - ctx.stroke(); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.roundrect.end.4", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 10; - ctx.roundRect(-1, -1, 2000, 2000, [1000, 1000, 1000, 1000]); - ctx.lineTo(-150, -150); - ctx.stroke(); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.roundrect.zero.1", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.roundRect(0, 50, 100, 0, [0]); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.roundrect.zero.2", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.roundRect(50, -100, 0, 250, [0]); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.roundrect.zero.3", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.roundRect(50, 25, 0, 0, [0]); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.roundrect.zero.4", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.roundRect(100, 25, 0, 0, [0]); - ctx.lineTo(0, 25); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.roundrect.zero.5", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.moveTo(0, 0); - ctx.roundRect(100, 25, 0, 0, [0]); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.roundrect.zero.6", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineJoin = 'miter'; - ctx.miterLimit = 1.5; - ctx.lineWidth = 200; - ctx.beginPath(); - ctx.roundRect(100, 25, 1000, 0, [0]); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.roundrect.negative", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.fillStyle = '#0f0'; - ctx.roundRect(0, 0, 50, 25, [10, 0, 0, 0]); - ctx.roundRect(100, 0, -50, 25, [10, 0, 0, 0]); - ctx.roundRect(0, 50, 50, -25, [10, 0, 0, 0]); - ctx.roundRect(100, 50, -50, -25, [10, 0, 0, 0]); - ctx.fill(); - // All rects drawn - _assertPixel(canvas, 25,12, 0,255,0,255); - _assertPixel(canvas, 75,12, 0,255,0,255); - _assertPixel(canvas, 25,37, 0,255,0,255); - _assertPixel(canvas, 75,37, 0,255,0,255); - // Correct corners are rounded. - _assertPixel(canvas, 1,1, 255,0,0,255); - _assertPixel(canvas, 98,1, 255,0,0,255); - _assertPixel(canvas, 1,48, 255,0,0,255); - _assertPixel(canvas, 98,48, 255,0,0,255); - }); - - it("2d.path.roundrect.winding", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.fillStyle = '#f00'; - ctx.roundRect(0, 0, 50, 50, [0]); - ctx.roundRect(100, 50, -50, -50, [0]); - ctx.roundRect(0, 25, 100, -25, [0]); - ctx.roundRect(100, 25, -100, 25, [0]); - ctx.fill(); - _assertPixel(canvas, 25,12, 0,255,0,255); - _assertPixel(canvas, 75,12, 0,255,0,255); - _assertPixel(canvas, 25,37, 0,255,0,255); - _assertPixel(canvas, 75,37, 0,255,0,255); - }); - - it("2d.path.roundrect.selfintersect", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.roundRect(0, 0, 100, 50, [0]); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 90; - ctx.beginPath(); - ctx.roundRect(45, 20, 10, 10, [0]); - ctx.stroke(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.roundrect.nonfinite", function () { - // roundRect() with Infinity/NaN is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - ctx.roundRect(Infinity, 50, 1, 1, [0]); - ctx.roundRect(-Infinity, 50, 1, 1, [0]); - ctx.roundRect(NaN, 50, 1, 1, [0]); - ctx.roundRect(0, Infinity, 1, 1, [0]); - ctx.roundRect(0, -Infinity, 1, 1, [0]); - ctx.roundRect(0, NaN, 1, 1, [0]); - ctx.roundRect(0, 50, Infinity, 1, [0]); - ctx.roundRect(0, 50, -Infinity, 1, [0]); - ctx.roundRect(0, 50, NaN, 1, [0]); - ctx.roundRect(0, 50, 1, Infinity, [0]); - ctx.roundRect(0, 50, 1, -Infinity, [0]); - ctx.roundRect(0, 50, 1, NaN, [0]); - ctx.roundRect(0, 50, 1, 1, [Infinity]); - ctx.roundRect(0, 50, 1, 1, [-Infinity]); - ctx.roundRect(0, 50, 1, 1, [NaN]); - ctx.roundRect(0, 50, 1, 1, [Infinity,0]); - ctx.roundRect(0, 50, 1, 1, [-Infinity,0]); - ctx.roundRect(0, 50, 1, 1, [NaN,0]); - ctx.roundRect(0, 50, 1, 1, [0,Infinity]); - ctx.roundRect(0, 50, 1, 1, [0,-Infinity]); - ctx.roundRect(0, 50, 1, 1, [0,NaN]); - ctx.roundRect(0, 50, 1, 1, [Infinity,0,0]); - ctx.roundRect(0, 50, 1, 1, [-Infinity,0,0]); - ctx.roundRect(0, 50, 1, 1, [NaN,0,0]); - ctx.roundRect(0, 50, 1, 1, [0,Infinity,0]); - ctx.roundRect(0, 50, 1, 1, [0,-Infinity,0]); - ctx.roundRect(0, 50, 1, 1, [0,NaN,0]); - ctx.roundRect(0, 50, 1, 1, [0,0,Infinity]); - ctx.roundRect(0, 50, 1, 1, [0,0,-Infinity]); - ctx.roundRect(0, 50, 1, 1, [0,0,NaN]); - ctx.roundRect(0, 50, 1, 1, [Infinity,0,0,0]); - ctx.roundRect(0, 50, 1, 1, [-Infinity,0,0,0]); - ctx.roundRect(0, 50, 1, 1, [NaN,0,0,0]); - ctx.roundRect(0, 50, 1, 1, [0,Infinity,0,0]); - ctx.roundRect(0, 50, 1, 1, [0,-Infinity,0,0]); - ctx.roundRect(0, 50, 1, 1, [0,NaN,0,0]); - ctx.roundRect(0, 50, 1, 1, [0,0,Infinity,0]); - ctx.roundRect(0, 50, 1, 1, [0,0,-Infinity,0]); - ctx.roundRect(0, 50, 1, 1, [0,0,NaN,0]); - ctx.roundRect(0, 50, 1, 1, [0,0,0,Infinity]); - ctx.roundRect(0, 50, 1, 1, [0,0,0,-Infinity]); - ctx.roundRect(0, 50, 1, 1, [0,0,0,NaN]); - ctx.roundRect(Infinity, Infinity, 1, 1, [0]); - ctx.roundRect(Infinity, Infinity, Infinity, 1, [0]); - ctx.roundRect(Infinity, Infinity, Infinity, Infinity, [0]); - ctx.roundRect(Infinity, Infinity, Infinity, Infinity, [Infinity]); - ctx.roundRect(Infinity, Infinity, Infinity, 1, [Infinity]); - ctx.roundRect(Infinity, Infinity, 1, Infinity, [0]); - ctx.roundRect(Infinity, Infinity, 1, Infinity, [Infinity]); - ctx.roundRect(Infinity, Infinity, 1, 1, [Infinity]); - ctx.roundRect(Infinity, 50, Infinity, 1, [0]); - ctx.roundRect(Infinity, 50, Infinity, Infinity, [0]); - ctx.roundRect(Infinity, 50, Infinity, Infinity, [Infinity]); - ctx.roundRect(Infinity, 50, Infinity, 1, [Infinity]); - ctx.roundRect(Infinity, 50, 1, Infinity, [0]); - ctx.roundRect(Infinity, 50, 1, Infinity, [Infinity]); - ctx.roundRect(Infinity, 50, 1, 1, [Infinity]); - ctx.roundRect(0, Infinity, Infinity, 1, [0]); - ctx.roundRect(0, Infinity, Infinity, Infinity, [0]); - ctx.roundRect(0, Infinity, Infinity, Infinity, [Infinity]); - ctx.roundRect(0, Infinity, Infinity, 1, [Infinity]); - ctx.roundRect(0, Infinity, 1, Infinity, [0]); - ctx.roundRect(0, Infinity, 1, Infinity, [Infinity]); - ctx.roundRect(0, Infinity, 1, 1, [Infinity]); - ctx.roundRect(0, 50, Infinity, Infinity, [0]); - ctx.roundRect(0, 50, Infinity, Infinity, [Infinity]); - ctx.roundRect(0, 50, Infinity, 1, [Infinity]); - ctx.roundRect(0, 50, 1, Infinity, [Infinity]); - ctx.roundRect(0, 0, 100, 100, [new DOMPoint(10, Infinity)]); - ctx.roundRect(0, 0, 100, 100, [new DOMPoint(10, -Infinity)]); - ctx.roundRect(0, 0, 100, 100, [new DOMPoint(10, NaN)]); - ctx.roundRect(0, 0, 100, 100, [new DOMPoint(Infinity, 10)]); - ctx.roundRect(0, 0, 100, 100, [new DOMPoint(-Infinity, 10)]); - ctx.roundRect(0, 0, 100, 100, [new DOMPoint(NaN, 10)]); - ctx.roundRect(0, 0, 100, 100, [{x: 10, y: Infinity}]); - ctx.roundRect(0, 0, 100, 100, [{x: 10, y: -Infinity}]); - ctx.roundRect(0, 0, 100, 100, [{x: 10, y: NaN}]); - ctx.roundRect(0, 0, 100, 100, [{x: Infinity, y: 10}]); - ctx.roundRect(0, 0, 100, 100, [{x: -Infinity, y: 10}]); - ctx.roundRect(0, 0, 100, 100, [{x: NaN, y: 10}]); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 90,45, 0,255,0,255); - }); - - it("2d.path.roundrect.4.radii.1.double", function () { - // Verify that when four radii are given to roundRect(), the first radius, specified as a double, applies to the top-left corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [20, 0, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 1,1, 255,0,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.4.radii.1.dompoint", function () { - // Verify that when four radii are given to roundRect(), the first radius, specified as a DOMPoint, applies to the top-left corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20), 0, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - _assertPixel(canvas, 20,1, 255,0,0,255); - _assertPixel(canvas, 41,1, 0,255,0,255); - _assertPixel(canvas, 1,10, 255,0,0,255); - _assertPixel(canvas, 1,21, 0,255,0,255); - - // other corners - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.4.radii.1.dompointinit", function () { - // Verify that when four radii are given to roundRect(), the first radius, specified as a DOMPointInit, applies to the top-left corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [{x: 40, y: 20}, 0, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - _assertPixel(canvas, 20,1, 255,0,0,255); - _assertPixel(canvas, 41,1, 0,255,0,255); - _assertPixel(canvas, 1,10, 255,0,0,255); - _assertPixel(canvas, 1,21, 0,255,0,255); - - // other corners - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.4.radii.2.double", function () { - // Verify that when four radii are given to roundRect(), the second radius, specified as a double, applies to the top-right corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 20, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 255,0,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.4.radii.2.dompoint", function () { - // Verify that when four radii are given to roundRect(), the second radius, specified as a DOMPoint, applies to the top-right corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, new DOMPoint(40, 20), 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-right corner - _assertPixel(canvas, 79,1, 255,0,0,255); - _assertPixel(canvas, 58,1, 0,255,0,255); - _assertPixel(canvas, 98,10, 255,0,0,255); - _assertPixel(canvas, 98,21, 0,255,0,255); - - // other corners - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.4.radii.2.dompointinit", function () { - // Verify that when four radii are given to roundRect(), the second radius, specified as a DOMPointInit, applies to the top-right corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, {x: 40, y: 20}, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-right corner - _assertPixel(canvas, 79,1, 255,0,0,255); - _assertPixel(canvas, 58,1, 0,255,0,255); - _assertPixel(canvas, 98,10, 255,0,0,255); - _assertPixel(canvas, 98,21, 0,255,0,255); - - // other corners - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.4.radii.3.double", function () { - // Verify that when four radii are given to roundRect(), the third radius, specified as a double, applies to the bottom-right corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, 20, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 255,0,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.4.radii.3.dompoint", function () { - // Verify that when four radii are given to roundRect(), the third radius, specified as a DOMPoint, applies to the bottom-right corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, new DOMPoint(40, 20), 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // bottom-right corner - _assertPixel(canvas, 79,48, 255,0,0,255); - _assertPixel(canvas, 58,48, 0,255,0,255); - _assertPixel(canvas, 98,39, 255,0,0,255); - _assertPixel(canvas, 98,28, 0,255,0,255); - - // other corners - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.4.radii.3.dompointinit", function () { - // Verify that when four radii are given to roundRect(), the third radius, specified as a DOMPointInit, applies to the bottom-right corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, {x: 40, y: 20}, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // bottom-right corner - _assertPixel(canvas, 79,48, 255,0,0,255); - _assertPixel(canvas, 58,48, 0,255,0,255); - _assertPixel(canvas, 98,39, 255,0,0,255); - _assertPixel(canvas, 98,28, 0,255,0,255); - - // other corners - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.4.radii.4.double", function () { - // Verify that when four radii are given to roundRect(), the fourth radius, specified as a double, applies to the bottom-left corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, 0, 20]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 255,0,0,255); - }); - - it("2d.path.roundrect.4.radii.4.dompoint", function () { - // Verify that when four radii are given to roundRect(), the fourth radius, specified as a DOMPoint, applies to the bottom-left corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, 0, new DOMPoint(40, 20)]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // bottom-left corner - _assertPixel(canvas, 20,48, 255,0,0,255); - _assertPixel(canvas, 41,48, 0,255,0,255); - _assertPixel(canvas, 1,39, 255,0,0,255); - _assertPixel(canvas, 1,28, 0,255,0,255); - - // other corners - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.roundrect.4.radii.4.dompointinit", function () { - // Verify that when four radii are given to roundRect(), the fourth radius, specified as a DOMPointInit, applies to the bottom-left corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, 0, {x: 40, y: 20}]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // bottom-left corner - _assertPixel(canvas, 20,48, 255,0,0,255); - _assertPixel(canvas, 41,48, 0,255,0,255); - _assertPixel(canvas, 1,39, 255,0,0,255); - _assertPixel(canvas, 1,28, 0,255,0,255); - - // other corners - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.roundrect.3.radii.1.double", function () { - // Verify that when three radii are given to roundRect(), the first radius, specified as a double, applies to the top-left corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [20, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 1,1, 255,0,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.3.radii.1.dompoint", function () { - // Verify that when three radii are given to roundRect(), the first radius, specified as a DOMPoint, applies to the top-left corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20), 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - _assertPixel(canvas, 20,1, 255,0,0,255); - _assertPixel(canvas, 41,1, 0,255,0,255); - _assertPixel(canvas, 1,10, 255,0,0,255); - _assertPixel(canvas, 1,21, 0,255,0,255); - - // other corners - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.3.radii.1.dompointinit", function () { - // Verify that when three radii are given to roundRect(), the first radius, specified as a DOMPointInit, applies to the top-left corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [{x: 40, y: 20}, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - _assertPixel(canvas, 20,1, 255,0,0,255); - _assertPixel(canvas, 41,1, 0,255,0,255); - _assertPixel(canvas, 1,10, 255,0,0,255); - _assertPixel(canvas, 1,21, 0,255,0,255); - - // other corners - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.3.radii.2.double", function () { - // Verify that when three radii are given to roundRect(), the second radius, specified as a double, applies to the top-right and bottom-left corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 20, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 255,0,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 255,0,0,255); - }); - - it("2d.path.roundrect.3.radii.2.dompoint", function () { - // Verify that when three radii are given to roundRect(), the second radius, specified as a DOMPoint, applies to the top-right and bottom-left corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, new DOMPoint(40, 20), 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-right corner - _assertPixel(canvas, 79,1, 255,0,0,255); - _assertPixel(canvas, 58,1, 0,255,0,255); - _assertPixel(canvas, 98,10, 255,0,0,255); - _assertPixel(canvas, 98,21, 0,255,0,255); - - // bottom-left corner - _assertPixel(canvas, 20,48, 255,0,0,255); - _assertPixel(canvas, 41,48, 0,255,0,255); - _assertPixel(canvas, 1,39, 255,0,0,255); - _assertPixel(canvas, 1,28, 0,255,0,255); - - // other corners - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.roundrect.3.radii.2.dompointinit", function () { - // Verify that when three radii are given to roundRect(), the second radius, specified as a DOMPoint, applies to the top-right and bottom-left corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, {x: 40, y: 20}, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-right corner - _assertPixel(canvas, 79,1, 255,0,0,255); - _assertPixel(canvas, 58,1, 0,255,0,255); - _assertPixel(canvas, 98,10, 255,0,0,255); - _assertPixel(canvas, 98,21, 0,255,0,255); - - // bottom-left corner - _assertPixel(canvas, 20,48, 255,0,0,255); - _assertPixel(canvas, 41,48, 0,255,0,255); - _assertPixel(canvas, 1,39, 255,0,0,255); - _assertPixel(canvas, 1,28, 0,255,0,255); - - // other corners - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.roundrect.3.radii.3.double", function () { - // Verify that when three radii are given to roundRect(), the third radius, specified as a double, applies to the bottom-right corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, 20]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 255,0,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.3.radii.3.dompoint", function () { - // Verify that when three radii are given to roundRect(), the third radius, specified as a DOMPoint, applies to the bottom-right corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, new DOMPoint(40, 20)]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // bottom-right corner - _assertPixel(canvas, 79,48, 255,0,0,255); - _assertPixel(canvas, 58,48, 0,255,0,255); - _assertPixel(canvas, 98,39, 255,0,0,255); - _assertPixel(canvas, 98,28, 0,255,0,255); - - // other corners - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.3.radii.3.dompointinit", function () { - // Verify that when three radii are given to roundRect(), the third radius, specified as a DOMPointInit, applies to the bottom-right corner. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, {x: 40, y: 20}]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // bottom-right corner - _assertPixel(canvas, 79,48, 255,0,0,255); - _assertPixel(canvas, 58,48, 0,255,0,255); - _assertPixel(canvas, 98,39, 255,0,0,255); - _assertPixel(canvas, 98,28, 0,255,0,255); - - // other corners - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.2.radii.1.double", function () { - // Verify that when two radii are given to roundRect(), the first radius, specified as a double, applies to the top-left and bottom-right corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [20, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 1,1, 255,0,0,255); - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 255,0,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.2.radii.1.dompoint", function () { - // Verify that when two radii are given to roundRect(), the first radius, specified as a DOMPoint, applies to the top-left and bottom-right corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20), 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - _assertPixel(canvas, 20,1, 255,0,0,255); - _assertPixel(canvas, 41,1, 0,255,0,255); - _assertPixel(canvas, 1,10, 255,0,0,255); - _assertPixel(canvas, 1,21, 0,255,0,255); - - // bottom-right corner - _assertPixel(canvas, 79,48, 255,0,0,255); - _assertPixel(canvas, 58,48, 0,255,0,255); - _assertPixel(canvas, 98,39, 255,0,0,255); - _assertPixel(canvas, 98,28, 0,255,0,255); - - // other corners - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.2.radii.1.dompointinit", function () { - // Verify that when two radii are given to roundRect(), the first radius, specified as a DOMPointInit, applies to the top-left and bottom-right corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [{x: 40, y: 20}, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - _assertPixel(canvas, 20,1, 255,0,0,255); - _assertPixel(canvas, 41,1, 0,255,0,255); - _assertPixel(canvas, 1,10, 255,0,0,255); - _assertPixel(canvas, 1,21, 0,255,0,255); - - // bottom-right corner - _assertPixel(canvas, 79,48, 255,0,0,255); - _assertPixel(canvas, 58,48, 0,255,0,255); - _assertPixel(canvas, 98,39, 255,0,0,255); - _assertPixel(canvas, 98,28, 0,255,0,255); - - // other corners - _assertPixel(canvas, 98,1, 0,255,0,255); - _assertPixel(canvas, 1,48, 0,255,0,255); - }); - - it("2d.path.roundrect.2.radii.2.double", function () { - // Verify that when two radii are given to roundRect(), the second radius, specified as a double, applies to the top-right and bottom-left corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 20]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,1, 255,0,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - _assertPixel(canvas, 1,48, 255,0,0,255); - }); - - it("2d.path.roundrect.2.radii.2.dompoint", function () { - // Verify that when two radii are given to roundRect(), the second radius, specified as a DOMPoint, applies to the top-right and bottom-left corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, new DOMPoint(40, 20)]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-right corner - _assertPixel(canvas, 79,1, 255,0,0,255); - _assertPixel(canvas, 58,1, 0,255,0,255); - _assertPixel(canvas, 98,10, 255,0,0,255); - _assertPixel(canvas, 98,21, 0,255,0,255); - - // bottom-left corner - _assertPixel(canvas, 20,48, 255,0,0,255); - _assertPixel(canvas, 41,48, 0,255,0,255); - _assertPixel(canvas, 1,39, 255,0,0,255); - _assertPixel(canvas, 1,28, 0,255,0,255); - - // other corners - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.roundrect.2.radii.2.dompointinit", function () { - // Verify that when two radii are given to roundRect(), the second radius, specified as a DOMPointInit, applies to the top-right and bottom-left corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, {x: 40, y: 20}]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-right corner - _assertPixel(canvas, 79,1, 255,0,0,255); - _assertPixel(canvas, 58,1, 0,255,0,255); - _assertPixel(canvas, 98,10, 255,0,0,255); - _assertPixel(canvas, 98,21, 0,255,0,255); - - // bottom-left corner - _assertPixel(canvas, 20,48, 255,0,0,255); - _assertPixel(canvas, 41,48, 0,255,0,255); - _assertPixel(canvas, 1,39, 255,0,0,255); - _assertPixel(canvas, 1,28, 0,255,0,255); - - // other corners - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.path.roundrect.1.radius.double", function () { - // Verify that when one radius is given to roundRect(), specified as a double, it applies to all corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [20]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 1,1, 255,0,0,255); - _assertPixel(canvas, 98,1, 255,0,0,255); - _assertPixel(canvas, 98,48, 255,0,0,255); - _assertPixel(canvas, 1,48, 255,0,0,255); - }); - - it("2d.path.roundrect.1.radius.double.single.argument", function () { - // Verify that when one radius is given to roundRect() as a non-array argument, specified as a double, it applies to all corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, 20); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 1,1, 255,0,0,255); - _assertPixel(canvas, 98,1, 255,0,0,255); - _assertPixel(canvas, 98,48, 255,0,0,255); - _assertPixel(canvas, 1,48, 255,0,0,255); - }); - - it("2d.path.roundrect.1.radius.dompoint", function () { - // Verify that when one radius is given to roundRect(), specified as a DOMPoint, it applies to all corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20)]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - _assertPixel(canvas, 20,1, 255,0,0,255); - _assertPixel(canvas, 41,1, 0,255,0,255); - _assertPixel(canvas, 1,10, 255,0,0,255); - _assertPixel(canvas, 1,21, 0,255,0,255); - - // top-right corner - _assertPixel(canvas, 79,1, 255,0,0,255); - _assertPixel(canvas, 58,1, 0,255,0,255); - _assertPixel(canvas, 98,10, 255,0,0,255); - _assertPixel(canvas, 98,21, 0,255,0,255); - - // bottom-right corner - _assertPixel(canvas, 79,48, 255,0,0,255); - _assertPixel(canvas, 58,48, 0,255,0,255); - _assertPixel(canvas, 98,39, 255,0,0,255); - _assertPixel(canvas, 98,28, 0,255,0,255); - - // bottom-left corner - _assertPixel(canvas, 20,48, 255,0,0,255); - _assertPixel(canvas, 41,48, 0,255,0,255); - _assertPixel(canvas, 1,39, 255,0,0,255); - _assertPixel(canvas, 1,28, 0,255,0,255); - }); - - it("2d.path.roundrect.1.radius.dompoint.single argument", function () { - // Verify that when one radius is given to roundRect() as a non-array argument, specified as a DOMPoint, it applies to all corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, new DOMPoint(40, 20)); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - _assertPixel(canvas, 20,1, 255,0,0,255); - _assertPixel(canvas, 41,1, 0,255,0,255); - _assertPixel(canvas, 1,10, 255,0,0,255); - _assertPixel(canvas, 1,21, 0,255,0,255); - - // top-right corner - _assertPixel(canvas, 79,1, 255,0,0,255); - _assertPixel(canvas, 58,1, 0,255,0,255); - _assertPixel(canvas, 98,10, 255,0,0,255); - _assertPixel(canvas, 98,21, 0,255,0,255); - - // bottom-right corner - _assertPixel(canvas, 79,48, 255,0,0,255); - _assertPixel(canvas, 58,48, 0,255,0,255); - _assertPixel(canvas, 98,39, 255,0,0,255); - _assertPixel(canvas, 98,28, 0,255,0,255); - - // bottom-left corner - _assertPixel(canvas, 20,48, 255,0,0,255); - _assertPixel(canvas, 41,48, 0,255,0,255); - _assertPixel(canvas, 1,39, 255,0,0,255); - _assertPixel(canvas, 1,28, 0,255,0,255); - }); - - it("2d.path.roundrect.1.radius.dompointinit", function () { - // Verify that when one radius is given to roundRect(), specified as a DOMPointInit, applies to all corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [{x: 40, y: 20}]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - _assertPixel(canvas, 20,1, 255,0,0,255); - _assertPixel(canvas, 41,1, 0,255,0,255); - _assertPixel(canvas, 1,10, 255,0,0,255); - _assertPixel(canvas, 1,21, 0,255,0,255); - - // top-right corner - _assertPixel(canvas, 79,1, 255,0,0,255); - _assertPixel(canvas, 58,1, 0,255,0,255); - _assertPixel(canvas, 98,10, 255,0,0,255); - _assertPixel(canvas, 98,21, 0,255,0,255); - - // bottom-right corner - _assertPixel(canvas, 79,48, 255,0,0,255); - _assertPixel(canvas, 58,48, 0,255,0,255); - _assertPixel(canvas, 98,39, 255,0,0,255); - _assertPixel(canvas, 98,28, 0,255,0,255); - - // bottom-left corner - _assertPixel(canvas, 20,48, 255,0,0,255); - _assertPixel(canvas, 41,48, 0,255,0,255); - _assertPixel(canvas, 1,39, 255,0,0,255); - _assertPixel(canvas, 1,28, 0,255,0,255); - }); - - it("2d.path.roundrect.1.radius.dompointinit.single.argument", function () { - // Verify that when one radius is given to roundRect() as a non-array argument, specified as a DOMPointInit, applies to all corners. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, {x: 40, y: 20}); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - _assertPixel(canvas, 20,1, 255,0,0,255); - _assertPixel(canvas, 41,1, 0,255,0,255); - _assertPixel(canvas, 1,10, 255,0,0,255); - _assertPixel(canvas, 1,21, 0,255,0,255); - - // top-right corner - _assertPixel(canvas, 79,1, 255,0,0,255); - _assertPixel(canvas, 58,1, 0,255,0,255); - _assertPixel(canvas, 98,10, 255,0,0,255); - _assertPixel(canvas, 98,21, 0,255,0,255); - - // bottom-right corner - _assertPixel(canvas, 79,48, 255,0,0,255); - _assertPixel(canvas, 58,48, 0,255,0,255); - _assertPixel(canvas, 98,39, 255,0,0,255); - _assertPixel(canvas, 98,28, 0,255,0,255); - - // bottom-left corner - _assertPixel(canvas, 20,48, 255,0,0,255); - _assertPixel(canvas, 41,48, 0,255,0,255); - _assertPixel(canvas, 1,39, 255,0,0,255); - _assertPixel(canvas, 1,28, 0,255,0,255); - }); - - it("2d.path.roundrect.radius.intersecting.1", function () { - // Check that roundRects with intersecting corner arcs are rendered correctly. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [40, 40, 40, 40]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 2,25, 0,255,0,255); - _assertPixel(canvas, 50,1, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 50,48, 0,255,0,255); - _assertPixel(canvas, 97,25, 0,255,0,255); - _assertPixel(canvas, 1,1, 255,0,0,255); - _assertPixel(canvas, 98,1, 255,0,0,255); - _assertPixel(canvas, 1,48, 255,0,0,255); - _assertPixel(canvas, 98,48, 255,0,0,255); - }); - - it("2d.path.roundrect.radius.intersecting.2", function () { - // Check that roundRects with intersecting corner arcs are rendered correctly. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [1000, 1000, 1000, 1000]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 2,25, 0,255,0,255); - _assertPixel(canvas, 50,1, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 50,48, 0,255,0,255); - _assertPixel(canvas, 97,25, 0,255,0,255); - _assertPixel(canvas, 1,1, 255,0,0,255); - _assertPixel(canvas, 98,1, 255,0,0,255); - _assertPixel(canvas, 1,48, 255,0,0,255); - _assertPixel(canvas, 98,48, 255,0,0,255); - }); - - it("2d.path.roundrect.radius.none", function () { - // Check that roundRect throws an RangeError if radii is an empty array. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 100, 50, [])}); - }); - - it("2d.path.roundrect.radius.noargument", function () { - // Check that roundRect draws a rectangle when no radii are provided. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(10, 10, 80, 30); - ctx.fillStyle = '#0f0'; - ctx.fill(); - // upper left corner (10, 10) - _assertPixel(canvas, 10,9, 255,0,0,255); - _assertPixel(canvas, 9,10, 255,0,0,255); - _assertPixel(canvas, 10,10, 0,255,0,255); - - // upper right corner (89, 10) - _assertPixel(canvas, 90,10, 255,0,0,255); - _assertPixel(canvas, 89,9, 255,0,0,255); - _assertPixel(canvas, 89,10, 0,255,0,255); - - // lower right corner (89, 39) - _assertPixel(canvas, 89,40, 255,0,0,255); - _assertPixel(canvas, 90,39, 255,0,0,255); - _assertPixel(canvas, 89,39, 0,255,0,255); - - // lower left corner (10, 30) - _assertPixel(canvas, 9,39, 255,0,0,255); - _assertPixel(canvas, 10,40, 255,0,0,255); - _assertPixel(canvas, 10,39, 0,255,0,255); - }); - - it("2d.path.roundrect.radius.toomany", function () { - // Check that roundRect throws an IndeSizeError if radii has more than four items. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 100, 50, [0, 0, 0, 0, 0])}); - }); - - it("2d.path.roundrect.radius.negative", function () { - // roundRect() with negative radius throws an exception - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [-1])}); - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [1, -1])}); - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [new DOMPoint(-1, 1), 1])}); - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [new DOMPoint(1, -1)])}); - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [{x: -1, y: 1}, 1])}); - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [{x: 1, y: -1}])}); - }); - - it("2d.path.ellipse.basics", function () { - // Verify canvas throws error when drawing ellipse with negative radii. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.ellipse(10, 10, 10, 5, 0, 0, 1, false); - ctx.ellipse(10, 10, 10, 0, 0, 0, 1, false); - ctx.ellipse(10, 10, -0, 5, 0, 0, 1, false); - assert.throws(function() { ctx.ellipse(10, 10, -2, 5, 0, 0, 1, false); }, /INDEX_SIZE_ERR/); - assert.throws(function() { ctx.ellipse(10, 10, 0, -1.5, 0, 0, 1, false); }, /INDEX_SIZE_ERR/); - assert.throws(function() { ctx.ellipse(10, 10, -2, -5, 0, 0, 1, false); }, /INDEX_SIZE_ERR/); - ctx.ellipse(80, 0, 10, 4294967277, Math.PI / -84, -Math.PI / 2147483436, false); - }); - - it("2d.path.fill.overlap", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - - ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; - ctx.rect(0, 0, 100, 50); - ctx.closePath(); - ctx.rect(10, 10, 80, 30); - ctx.fill(); - - _assertPixelApprox(canvas, 50,25, 0,127,0,255, 1); - }); - - it("2d.path.fill.winding.add", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#0f0'; - ctx.moveTo(-10, -10); - ctx.lineTo(110, -10); - ctx.lineTo(110, 60); - ctx.lineTo(-10, 60); - ctx.lineTo(-10, -10); - ctx.lineTo(0, 0); - ctx.lineTo(100, 0); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fill(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.fill.winding.subtract.1", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#f00'; - ctx.moveTo(-10, -10); - ctx.lineTo(110, -10); - ctx.lineTo(110, 60); - ctx.lineTo(-10, 60); - ctx.lineTo(-10, -10); - ctx.lineTo(0, 0); - ctx.lineTo(0, 50); - ctx.lineTo(100, 50); - ctx.lineTo(100, 0); - ctx.fill(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.fill.winding.subtract.2", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#f00'; - ctx.moveTo(-10, -10); - ctx.lineTo(110, -10); - ctx.lineTo(110, 60); - ctx.lineTo(-10, 60); - ctx.moveTo(0, 0); - ctx.lineTo(0, 50); - ctx.lineTo(100, 50); - ctx.lineTo(100, 0); - ctx.fill(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.fill.winding.subtract.3", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#0f0'; - ctx.moveTo(-10, -10); - ctx.lineTo(110, -10); - ctx.lineTo(110, 60); - ctx.lineTo(-10, 60); - ctx.lineTo(-10, -10); - ctx.lineTo(-20, -20); - ctx.lineTo(120, -20); - ctx.lineTo(120, 70); - ctx.lineTo(-20, 70); - ctx.lineTo(-20, -20); - ctx.lineTo(0, 0); - ctx.lineTo(0, 50); - ctx.lineTo(100, 50); - ctx.lineTo(100, 0); - ctx.fill(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.fill.closed.basic", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#0f0'; - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fill(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.fill.closed.unaffected", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#00f'; - ctx.fillRect(0, 0, 100, 50); - - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - ctx.lineTo(100, 50); - ctx.fillStyle = '#f00'; - ctx.fill(); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - _assertPixel(canvas, 90,10, 0,255,0,255); - _assertPixel(canvas, 10,40, 0,255,0,255); - }); - - it("2d.path.stroke.overlap", function () { - // Stroked subpaths are combined before being drawn - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - - ctx.strokeStyle = 'rgba(0, 255, 0, 0.5)'; - ctx.lineWidth = 50; - ctx.moveTo(0, 20); - ctx.lineTo(100, 20); - ctx.moveTo(0, 30); - ctx.lineTo(100, 30); - ctx.stroke(); - - _assertPixelApprox(canvas, 50,25, 0,127,0,255, 1); - }); - - it("2d.path.stroke.union", function () { - // Strokes in opposite directions are unioned, not subtracted - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 40; - ctx.moveTo(0, 10); - ctx.lineTo(100, 10); - ctx.moveTo(100, 40); - ctx.lineTo(0, 40); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.stroke.unaffected", function () { - // Stroking does not start a new path or subpath - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 50; - ctx.moveTo(-100, 25); - ctx.lineTo(-100, -100); - ctx.lineTo(200, -100); - ctx.lineTo(200, 25); - ctx.strokeStyle = '#f00'; - ctx.stroke(); - - ctx.closePath(); - ctx.strokeStyle = '#0f0'; - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.stroke.scale1", function () { - // Stroke line widths are scaled by the current transformation matrix - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.beginPath(); - ctx.rect(25, 12.5, 50, 25); - ctx.save(); - ctx.scale(50, 25); - ctx.strokeStyle = '#0f0'; - ctx.stroke(); - ctx.restore(); - - ctx.beginPath(); - ctx.rect(-25, -12.5, 150, 75); - ctx.save(); - ctx.scale(50, 25); - ctx.strokeStyle = '#f00'; - ctx.stroke(); - ctx.restore(); - - _assertPixel(canvas, 0,0, 0,255,0,255); - _assertPixel(canvas, 50,0, 0,255,0,255); - _assertPixel(canvas, 99,0, 0,255,0,255); - _assertPixel(canvas, 0,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 99,25, 0,255,0,255); - _assertPixel(canvas, 0,49, 0,255,0,255); - _assertPixel(canvas, 50,49, 0,255,0,255); - _assertPixel(canvas, 99,49, 0,255,0,255); - }); - - it("2d.path.stroke.scale2", function () { - // Stroke line widths are scaled by the current transformation matrix - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.beginPath(); - ctx.rect(25, 12.5, 50, 25); - ctx.save(); - ctx.rotate(Math.PI/2); - ctx.scale(25, 50); - ctx.strokeStyle = '#0f0'; - ctx.stroke(); - ctx.restore(); - - ctx.beginPath(); - ctx.rect(-25, -12.5, 150, 75); - ctx.save(); - ctx.rotate(Math.PI/2); - ctx.scale(25, 50); - ctx.strokeStyle = '#f00'; - ctx.stroke(); - ctx.restore(); - - _assertPixel(canvas, 0,0, 0,255,0,255); - _assertPixel(canvas, 50,0, 0,255,0,255); - _assertPixel(canvas, 99,0, 0,255,0,255); - _assertPixel(canvas, 0,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 99,25, 0,255,0,255); - _assertPixel(canvas, 0,49, 0,255,0,255); - _assertPixel(canvas, 50,49, 0,255,0,255); - _assertPixel(canvas, 99,49, 0,255,0,255); - }); - - it("2d.path.stroke.skew", function () { - // Strokes lines are skewed by the current transformation matrix - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.save(); - ctx.beginPath(); - ctx.moveTo(49, -50); - ctx.lineTo(201, -50); - ctx.rotate(Math.PI/4); - ctx.scale(1, 283); - ctx.strokeStyle = '#0f0'; - ctx.stroke(); - ctx.restore(); - - ctx.save(); - ctx.beginPath(); - ctx.translate(-150, 0); - ctx.moveTo(49, -50); - ctx.lineTo(199, -50); - ctx.rotate(Math.PI/4); - ctx.scale(1, 142); - ctx.strokeStyle = '#f00'; - ctx.stroke(); - ctx.restore(); - - ctx.save(); - ctx.beginPath(); - ctx.translate(-150, 0); - ctx.moveTo(49, -50); - ctx.lineTo(199, -50); - ctx.rotate(Math.PI/4); - ctx.scale(1, 142); - ctx.strokeStyle = '#f00'; - ctx.stroke(); - ctx.restore(); - - _assertPixel(canvas, 0,0, 0,255,0,255); - _assertPixel(canvas, 50,0, 0,255,0,255); - _assertPixel(canvas, 99,0, 0,255,0,255); - _assertPixel(canvas, 0,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 99,25, 0,255,0,255); - _assertPixel(canvas, 0,49, 0,255,0,255); - _assertPixel(canvas, 50,49, 0,255,0,255); - _assertPixel(canvas, 99,49, 0,255,0,255); - }); - - it("2d.path.stroke.empty", function () { - // Empty subpaths are not stroked - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - ctx.lineJoin = 'round'; - - ctx.beginPath(); - ctx.moveTo(40, 25); - ctx.moveTo(60, 25); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.stroke.prune.line", function () { - // Zero-length line segments from lineTo are removed before stroking - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - ctx.lineJoin = 'round'; - - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.lineTo(50, 25); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.stroke.prune.closed", function () { - // Zero-length line segments from closed paths are removed before stroking - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - ctx.lineJoin = 'round'; - - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.lineTo(50, 25); - ctx.closePath(); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.stroke.prune.curve", function () { - // Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before stroking - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - ctx.lineJoin = 'round'; - - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.quadraticCurveTo(50, 25, 50, 25); - ctx.stroke(); - - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.bezierCurveTo(50, 25, 50, 25, 50, 25); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.stroke.prune.arc", function () { - // Zero-length line segments from arcTo and arc are removed before stroking - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - ctx.lineJoin = 'round'; - - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.arcTo(50, 25, 150, 25, 10); - ctx.stroke(); - - ctx.beginPath(); - ctx.moveTo(60, 25); - ctx.arc(50, 25, 10, 0, 0, false); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.stroke.prune.rect", function () { - // Zero-length line segments from rect and strokeRect are removed before stroking - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - ctx.lineJoin = 'round'; - - ctx.beginPath(); - ctx.rect(50, 25, 0, 0); - ctx.stroke(); - - ctx.strokeRect(50, 25, 0, 0); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.stroke.prune.corner", function () { - // Zero-length line segments are removed before stroking with miters - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 400; - ctx.lineJoin = 'miter'; - ctx.miterLimit = 1.4; - - ctx.beginPath(); - ctx.moveTo(-1000, 200); - ctx.lineTo(-100, 200); - ctx.lineTo(-100, 200); - ctx.lineTo(-100, 200); - ctx.lineTo(-100, 1000); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.transformation.basic", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.translate(-100, 0); - ctx.rect(100, 0, 100, 50); - ctx.translate(0, -100); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.transformation.multiple", function () { - // Transformations are applied while building paths, not when drawing - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#f00'; - ctx.translate(-100, 0); - ctx.rect(0, 0, 100, 50); - ctx.fill(); - ctx.translate(100, 0); - ctx.fill(); - - ctx.beginPath(); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.translate(0, -50); - ctx.moveTo(0, 25); - ctx.lineTo(100, 25); - ctx.stroke(); - ctx.translate(0, 50); - ctx.stroke(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.transformation.changing", function () { - // Transformations are applied while building paths, not when drawing - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.moveTo(0, 0); - ctx.translate(100, 0); - ctx.lineTo(0, 0); - ctx.translate(0, 50); - ctx.lineTo(0, 0); - ctx.translate(-100, 0); - ctx.lineTo(0, 0); - ctx.translate(1000, 1000); - ctx.rotate(Math.PI/2); - ctx.scale(0.1, 0.1); - ctx.fill(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.clip.empty", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.beginPath(); - ctx.clip(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.clip.basic.1", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.beginPath(); - ctx.rect(0, 0, 100, 50); - ctx.clip(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.clip.basic.2", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.beginPath(); - ctx.rect(-100, 0, 100, 50); - ctx.clip(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.clip.intersect", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.beginPath(); - ctx.rect(0, 0, 50, 50); - ctx.clip(); - ctx.beginPath(); - ctx.rect(50, 0, 50, 50) - ctx.clip(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.clip.winding.1", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.beginPath(); - ctx.moveTo(-10, -10); - ctx.lineTo(110, -10); - ctx.lineTo(110, 60); - ctx.lineTo(-10, 60); - ctx.lineTo(-10, -10); - ctx.lineTo(0, 0); - ctx.lineTo(0, 50); - ctx.lineTo(100, 50); - ctx.lineTo(100, 0); - ctx.clip(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.clip.winding.2", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.beginPath(); - ctx.moveTo(-10, -10); - ctx.lineTo(110, -10); - ctx.lineTo(110, 60); - ctx.lineTo(-10, 60); - ctx.lineTo(-10, -10); - ctx.clip(); - - ctx.beginPath(); - ctx.moveTo(0, 0); - ctx.lineTo(0, 50); - ctx.lineTo(100, 50); - ctx.lineTo(100, 0); - ctx.lineTo(0, 0); - ctx.clip(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.clip.unaffected", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#0f0'; - - ctx.beginPath(); - ctx.moveTo(0, 0); - ctx.lineTo(0, 50); - ctx.lineTo(100, 50); - ctx.lineTo(100, 0); - ctx.clip(); - - ctx.lineTo(0, 0); - ctx.fill(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.path.isPointInPath.basic.1", function () { - // isPointInPath() detects whether the point is inside the path - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.rect(0, 0, 20, 20); - assert.strictEqual(ctx.isPointInPath(10, 10), true, "ctx.isPointInPath(10, 10)", "true") - assert.strictEqual(ctx.isPointInPath(30, 10), false, "ctx.isPointInPath(30, 10)", "false") - }); - - it("2d.path.isPointInPath.basic.2", function () { - // isPointInPath() detects whether the point is inside the path - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.rect(20, 0, 20, 20); - assert.strictEqual(ctx.isPointInPath(10, 10), false, "ctx.isPointInPath(10, 10)", "false") - assert.strictEqual(ctx.isPointInPath(30, 10), true, "ctx.isPointInPath(30, 10)", "true") - }); - - it("2d.path.isPointInPath.edge", function () { - // isPointInPath() counts points on the path as being inside - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.rect(0, 0, 20, 20); - assert.strictEqual(ctx.isPointInPath(0, 0), true, "ctx.isPointInPath(0, 0)", "true") - assert.strictEqual(ctx.isPointInPath(10, 0), true, "ctx.isPointInPath(10, 0)", "true") - assert.strictEqual(ctx.isPointInPath(20, 0), true, "ctx.isPointInPath(20, 0)", "true") - assert.strictEqual(ctx.isPointInPath(20, 10), true, "ctx.isPointInPath(20, 10)", "true") - assert.strictEqual(ctx.isPointInPath(20, 20), true, "ctx.isPointInPath(20, 20)", "true") - assert.strictEqual(ctx.isPointInPath(10, 20), true, "ctx.isPointInPath(10, 20)", "true") - assert.strictEqual(ctx.isPointInPath(0, 20), true, "ctx.isPointInPath(0, 20)", "true") - assert.strictEqual(ctx.isPointInPath(0, 10), true, "ctx.isPointInPath(0, 10)", "true") - assert.strictEqual(ctx.isPointInPath(10, -0.01), false, "ctx.isPointInPath(10, -0.01)", "false") - assert.strictEqual(ctx.isPointInPath(10, 20.01), false, "ctx.isPointInPath(10, 20.01)", "false") - assert.strictEqual(ctx.isPointInPath(-0.01, 10), false, "ctx.isPointInPath(-0.01, 10)", "false") - assert.strictEqual(ctx.isPointInPath(20.01, 10), false, "ctx.isPointInPath(20.01, 10)", "false") - }); - - it("2d.path.isPointInPath.empty", function () { - // isPointInPath() works when there is no path - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.isPointInPath(0, 0), false, "ctx.isPointInPath(0, 0)", "false") - }); - - it("2d.path.isPointInPath.subpath", function () { - // isPointInPath() uses the current path, not just the subpath - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.rect(0, 0, 20, 20); - ctx.beginPath(); - ctx.rect(20, 0, 20, 20); - ctx.closePath(); - ctx.rect(40, 0, 20, 20); - assert.strictEqual(ctx.isPointInPath(10, 10), false, "ctx.isPointInPath(10, 10)", "false") - assert.strictEqual(ctx.isPointInPath(30, 10), true, "ctx.isPointInPath(30, 10)", "true") - assert.strictEqual(ctx.isPointInPath(50, 10), true, "ctx.isPointInPath(50, 10)", "true") - }); - - it("2d.path.isPointInPath.outside", function () { - // isPointInPath() works on paths outside the canvas - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.rect(0, -100, 20, 20); - ctx.rect(20, -10, 20, 20); - assert.strictEqual(ctx.isPointInPath(10, -110), false, "ctx.isPointInPath(10, -110)", "false") - assert.strictEqual(ctx.isPointInPath(10, -90), true, "ctx.isPointInPath(10, -90)", "true") - assert.strictEqual(ctx.isPointInPath(10, -70), false, "ctx.isPointInPath(10, -70)", "false") - assert.strictEqual(ctx.isPointInPath(30, -20), false, "ctx.isPointInPath(30, -20)", "false") - assert.strictEqual(ctx.isPointInPath(30, 0), true, "ctx.isPointInPath(30, 0)", "true") - assert.strictEqual(ctx.isPointInPath(30, 20), false, "ctx.isPointInPath(30, 20)", "false") - }); - - it("2d.path.isPointInPath.unclosed", function () { - // isPointInPath() works on unclosed subpaths - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.moveTo(0, 0); - ctx.lineTo(20, 0); - ctx.lineTo(20, 20); - ctx.lineTo(0, 20); - assert.strictEqual(ctx.isPointInPath(10, 10), true, "ctx.isPointInPath(10, 10)", "true") - assert.strictEqual(ctx.isPointInPath(30, 10), false, "ctx.isPointInPath(30, 10)", "false") - }); - - it("2d.path.isPointInPath.arc", function () { - // isPointInPath() works on arcs - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.arc(50, 25, 10, 0, Math.PI, false); - assert.strictEqual(ctx.isPointInPath(50, 10), false, "ctx.isPointInPath(50, 10)", "false") - assert.strictEqual(ctx.isPointInPath(50, 20), false, "ctx.isPointInPath(50, 20)", "false") - assert.strictEqual(ctx.isPointInPath(50, 30), true, "ctx.isPointInPath(50, 30)", "true") - assert.strictEqual(ctx.isPointInPath(50, 40), false, "ctx.isPointInPath(50, 40)", "false") - assert.strictEqual(ctx.isPointInPath(30, 20), false, "ctx.isPointInPath(30, 20)", "false") - assert.strictEqual(ctx.isPointInPath(70, 20), false, "ctx.isPointInPath(70, 20)", "false") - assert.strictEqual(ctx.isPointInPath(30, 30), false, "ctx.isPointInPath(30, 30)", "false") - assert.strictEqual(ctx.isPointInPath(70, 30), false, "ctx.isPointInPath(70, 30)", "false") - }); - - it("2d.path.isPointInPath.bigarc", function () { - // isPointInPath() works on unclosed arcs larger than 2pi - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.arc(50, 25, 10, 0, 7, false); - assert.strictEqual(ctx.isPointInPath(50, 10), false, "ctx.isPointInPath(50, 10)", "false") - assert.strictEqual(ctx.isPointInPath(50, 20), true, "ctx.isPointInPath(50, 20)", "true") - assert.strictEqual(ctx.isPointInPath(50, 30), true, "ctx.isPointInPath(50, 30)", "true") - assert.strictEqual(ctx.isPointInPath(50, 40), false, "ctx.isPointInPath(50, 40)", "false") - assert.strictEqual(ctx.isPointInPath(30, 20), false, "ctx.isPointInPath(30, 20)", "false") - assert.strictEqual(ctx.isPointInPath(70, 20), false, "ctx.isPointInPath(70, 20)", "false") - assert.strictEqual(ctx.isPointInPath(30, 30), false, "ctx.isPointInPath(30, 30)", "false") - assert.strictEqual(ctx.isPointInPath(70, 30), false, "ctx.isPointInPath(70, 30)", "false") - }); - - it("2d.path.isPointInPath.bezier", function () { - // isPointInPath() works on Bezier curves - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.moveTo(25, 25); - ctx.bezierCurveTo(50, -50, 50, 100, 75, 25); - assert.strictEqual(ctx.isPointInPath(25, 20), false, "ctx.isPointInPath(25, 20)", "false") - assert.strictEqual(ctx.isPointInPath(25, 30), false, "ctx.isPointInPath(25, 30)", "false") - assert.strictEqual(ctx.isPointInPath(30, 20), true, "ctx.isPointInPath(30, 20)", "true") - assert.strictEqual(ctx.isPointInPath(30, 30), false, "ctx.isPointInPath(30, 30)", "false") - assert.strictEqual(ctx.isPointInPath(40, 2), false, "ctx.isPointInPath(40, 2)", "false") - assert.strictEqual(ctx.isPointInPath(40, 20), true, "ctx.isPointInPath(40, 20)", "true") - assert.strictEqual(ctx.isPointInPath(40, 30), false, "ctx.isPointInPath(40, 30)", "false") - assert.strictEqual(ctx.isPointInPath(40, 47), false, "ctx.isPointInPath(40, 47)", "false") - assert.strictEqual(ctx.isPointInPath(45, 20), true, "ctx.isPointInPath(45, 20)", "true") - assert.strictEqual(ctx.isPointInPath(45, 30), false, "ctx.isPointInPath(45, 30)", "false") - assert.strictEqual(ctx.isPointInPath(55, 20), false, "ctx.isPointInPath(55, 20)", "false") - assert.strictEqual(ctx.isPointInPath(55, 30), true, "ctx.isPointInPath(55, 30)", "true") - assert.strictEqual(ctx.isPointInPath(60, 2), false, "ctx.isPointInPath(60, 2)", "false") - assert.strictEqual(ctx.isPointInPath(60, 20), false, "ctx.isPointInPath(60, 20)", "false") - assert.strictEqual(ctx.isPointInPath(60, 30), true, "ctx.isPointInPath(60, 30)", "true") - assert.strictEqual(ctx.isPointInPath(60, 47), false, "ctx.isPointInPath(60, 47)", "false") - assert.strictEqual(ctx.isPointInPath(70, 20), false, "ctx.isPointInPath(70, 20)", "false") - assert.strictEqual(ctx.isPointInPath(70, 30), true, "ctx.isPointInPath(70, 30)", "true") - assert.strictEqual(ctx.isPointInPath(75, 20), false, "ctx.isPointInPath(75, 20)", "false") - assert.strictEqual(ctx.isPointInPath(75, 30), false, "ctx.isPointInPath(75, 30)", "false") - }); - - it("2d.path.isPointInPath.winding", function () { - // isPointInPath() uses the non-zero winding number rule - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - // Create a square ring, using opposite windings to make a hole in the centre - ctx.moveTo(0, 0); - ctx.lineTo(50, 0); - ctx.lineTo(50, 50); - ctx.lineTo(0, 50); - ctx.lineTo(0, 0); - ctx.lineTo(10, 10); - ctx.lineTo(10, 40); - ctx.lineTo(40, 40); - ctx.lineTo(40, 10); - ctx.lineTo(10, 10); - - assert.strictEqual(ctx.isPointInPath(5, 5), true, "ctx.isPointInPath(5, 5)", "true") - assert.strictEqual(ctx.isPointInPath(25, 5), true, "ctx.isPointInPath(25, 5)", "true") - assert.strictEqual(ctx.isPointInPath(45, 5), true, "ctx.isPointInPath(45, 5)", "true") - assert.strictEqual(ctx.isPointInPath(5, 25), true, "ctx.isPointInPath(5, 25)", "true") - assert.strictEqual(ctx.isPointInPath(25, 25), false, "ctx.isPointInPath(25, 25)", "false") - assert.strictEqual(ctx.isPointInPath(45, 25), true, "ctx.isPointInPath(45, 25)", "true") - assert.strictEqual(ctx.isPointInPath(5, 45), true, "ctx.isPointInPath(5, 45)", "true") - assert.strictEqual(ctx.isPointInPath(25, 45), true, "ctx.isPointInPath(25, 45)", "true") - assert.strictEqual(ctx.isPointInPath(45, 45), true, "ctx.isPointInPath(45, 45)", "true") - }); - - it("2d.path.isPointInPath.transform.1", function () { - // isPointInPath() handles transformations correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.translate(50, 0); - ctx.rect(0, 0, 20, 20); - assert.strictEqual(ctx.isPointInPath(-40, 10), false, "ctx.isPointInPath(-40, 10)", "false") - assert.strictEqual(ctx.isPointInPath(10, 10), false, "ctx.isPointInPath(10, 10)", "false") - assert.strictEqual(ctx.isPointInPath(49, 10), false, "ctx.isPointInPath(49, 10)", "false") - assert.strictEqual(ctx.isPointInPath(51, 10), true, "ctx.isPointInPath(51, 10)", "true") - assert.strictEqual(ctx.isPointInPath(69, 10), true, "ctx.isPointInPath(69, 10)", "true") - assert.strictEqual(ctx.isPointInPath(71, 10), false, "ctx.isPointInPath(71, 10)", "false") - }); - - it("2d.path.isPointInPath.transform.2", function () { - // isPointInPath() handles transformations correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.rect(50, 0, 20, 20); - ctx.translate(50, 0); - assert.strictEqual(ctx.isPointInPath(-40, 10), false, "ctx.isPointInPath(-40, 10)", "false") - assert.strictEqual(ctx.isPointInPath(10, 10), false, "ctx.isPointInPath(10, 10)", "false") - assert.strictEqual(ctx.isPointInPath(49, 10), false, "ctx.isPointInPath(49, 10)", "false") - assert.strictEqual(ctx.isPointInPath(51, 10), true, "ctx.isPointInPath(51, 10)", "true") - assert.strictEqual(ctx.isPointInPath(69, 10), true, "ctx.isPointInPath(69, 10)", "true") - assert.strictEqual(ctx.isPointInPath(71, 10), false, "ctx.isPointInPath(71, 10)", "false") - }); - - it("2d.path.isPointInPath.transform.3", function () { - // isPointInPath() handles transformations correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.scale(-1, 1); - ctx.rect(-70, 0, 20, 20); - assert.strictEqual(ctx.isPointInPath(-40, 10), false, "ctx.isPointInPath(-40, 10)", "false") - assert.strictEqual(ctx.isPointInPath(10, 10), false, "ctx.isPointInPath(10, 10)", "false") - assert.strictEqual(ctx.isPointInPath(49, 10), false, "ctx.isPointInPath(49, 10)", "false") - assert.strictEqual(ctx.isPointInPath(51, 10), true, "ctx.isPointInPath(51, 10)", "true") - assert.strictEqual(ctx.isPointInPath(69, 10), true, "ctx.isPointInPath(69, 10)", "true") - assert.strictEqual(ctx.isPointInPath(71, 10), false, "ctx.isPointInPath(71, 10)", "false") - }); - - it("2d.path.isPointInPath.transform.4", function () { - // isPointInPath() handles transformations correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.translate(50, 0); - ctx.rect(50, 0, 20, 20); - ctx.translate(0, 50); - assert.strictEqual(ctx.isPointInPath(60, 10), false, "ctx.isPointInPath(60, 10)", "false") - assert.strictEqual(ctx.isPointInPath(110, 10), true, "ctx.isPointInPath(110, 10)", "true") - assert.strictEqual(ctx.isPointInPath(110, 60), false, "ctx.isPointInPath(110, 60)", "false") - }); - - it("2d.path.isPointInPath.nonfinite", function () { - // isPointInPath() returns false for non-finite arguments - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.rect(-100, -50, 200, 100); - assert.strictEqual(ctx.isPointInPath(Infinity, 0), false, "ctx.isPointInPath(Infinity, 0)", "false") - assert.strictEqual(ctx.isPointInPath(-Infinity, 0), false, "ctx.isPointInPath(-Infinity, 0)", "false") - assert.strictEqual(ctx.isPointInPath(NaN, 0), false, "ctx.isPointInPath(NaN, 0)", "false") - assert.strictEqual(ctx.isPointInPath(0, Infinity), false, "ctx.isPointInPath(0, Infinity)", "false") - assert.strictEqual(ctx.isPointInPath(0, -Infinity), false, "ctx.isPointInPath(0, -Infinity)", "false") - assert.strictEqual(ctx.isPointInPath(0, NaN), false, "ctx.isPointInPath(0, NaN)", "false") - assert.strictEqual(ctx.isPointInPath(NaN, NaN), false, "ctx.isPointInPath(NaN, NaN)", "false") - }); - - it("2d.path.isPointInStroke.scaleddashes", function () { - // isPointInStroke() should return correct results on dashed paths at high scale factors - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var scale = 20; - ctx.setLineDash([10, 21.4159]); // dash from t=0 to t=10 along the circle - ctx.scale(scale, scale); - ctx.ellipse(6, 10, 5, 5, 0, 2*Math.PI, false); - ctx.stroke(); - - // hit-test the beginning of the dash (t=0) - assert.strictEqual(ctx.isPointInStroke(11*scale, 10*scale), true, "ctx.isPointInStroke(11*scale, 10*scale)", "true") - // hit-test the middle of the dash (t=5) - assert.strictEqual(ctx.isPointInStroke(8.70*scale, 14.21*scale), true, "ctx.isPointInStroke(8.70*scale, 14.21*scale)", "true") - // hit-test the end of the dash (t=9.8) - assert.strictEqual(ctx.isPointInStroke(4.10*scale, 14.63*scale), true, "ctx.isPointInStroke(4.10*scale, 14.63*scale)", "true") - // hit-test past the end of the dash (t=10.2) - assert.strictEqual(ctx.isPointInStroke(3.74*scale, 14.46*scale), false, "ctx.isPointInStroke(3.74*scale, 14.46*scale)", "false") - }); - - it("2d.path.isPointInPath.basic", function () { - // Verify the winding rule in isPointInPath works for for rect path. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - canvas.width = 200; - canvas.height = 200; - - // Testing default isPointInPath - ctx.beginPath(); - ctx.rect(0, 0, 100, 100); - ctx.rect(25, 25, 50, 50); - assert.strictEqual(ctx.isPointInPath(50, 50), true, "ctx.isPointInPath(50, 50)", "true") - assert.strictEqual(ctx.isPointInPath(NaN, 50), false, "ctx.isPointInPath(NaN, 50)", "false") - assert.strictEqual(ctx.isPointInPath(50, NaN), false, "ctx.isPointInPath(50, NaN)", "false") - - // Testing nonzero isPointInPath - ctx.beginPath(); - ctx.rect(0, 0, 100, 100); - ctx.rect(25, 25, 50, 50); - assert.strictEqual(ctx.isPointInPath(50, 50, 'nonzero'), true, "ctx.isPointInPath(50, 50, 'nonzero')", "true") - - // Testing evenodd isPointInPath - ctx.beginPath(); - ctx.rect(0, 0, 100, 100); - ctx.rect(25, 25, 50, 50); - assert.strictEqual(ctx.isPointInPath(50, 50, 'evenodd'), false, "ctx.isPointInPath(50, 50, 'evenodd')", "false") - - // Testing extremely large scale - ctx.save(); - ctx.scale(Number.MAX_VALUE, Number.MAX_VALUE); - ctx.beginPath(); - ctx.rect(-10, -10, 20, 20); - assert.strictEqual(ctx.isPointInPath(0, 0, 'nonzero'), true, "ctx.isPointInPath(0, 0, 'nonzero')", "true") - assert.strictEqual(ctx.isPointInPath(0, 0, 'evenodd'), true, "ctx.isPointInPath(0, 0, 'evenodd')", "true") - ctx.restore(); - - // Check with non-invertible ctm. - ctx.save(); - ctx.scale(0, 0); - ctx.beginPath(); - ctx.rect(-10, -10, 20, 20); - assert.strictEqual(ctx.isPointInPath(0, 0, 'nonzero'), false, "ctx.isPointInPath(0, 0, 'nonzero')", "false") - assert.strictEqual(ctx.isPointInPath(0, 0, 'evenodd'), false, "ctx.isPointInPath(0, 0, 'evenodd')", "false") - ctx.restore(); - }); - - it("2d.path.isPointInpath.multi.path", function () { - // Verify the winding rule in isPointInPath works for path object. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - canvas.width = 200; - canvas.height = 200; - - // Testing default isPointInPath with Path object'); - path = new Path2D(); - path.rect(0, 0, 100, 100); - path.rect(25, 25, 50, 50); - assert.strictEqual(ctx.isPointInPath(path, 50, 50), true, "ctx.isPointInPath(path, 50, 50)", "true") - assert.strictEqual(ctx.isPointInPath(path, 50, 50, undefined), true, "ctx.isPointInPath(path, 50, 50, undefined)", "true") - assert.strictEqual(ctx.isPointInPath(path, NaN, 50), false, "ctx.isPointInPath(path, NaN, 50)", "false") - assert.strictEqual(ctx.isPointInPath(path, 50, NaN), false, "ctx.isPointInPath(path, 50, NaN)", "false") - - // Testing nonzero isPointInPath with Path object'); - path = new Path2D(); - path.rect(0, 0, 100, 100); - path.rect(25, 25, 50, 50); - assert.strictEqual(ctx.isPointInPath(path, 50, 50, 'nonzero'), true, "ctx.isPointInPath(path, 50, 50, 'nonzero')", "true") - - // Testing evenodd isPointInPath with Path object'); - path = new Path2D(); - path.rect(0, 0, 100, 100); - path.rect(25, 25, 50, 50); - assert_false(ctx.isPointInPath(path, 50, 50, 'evenodd')); - }); - - it("2d.path.isPointInpath.invalid", function () { - // Verify isPointInPath throws exceptions with invalid inputs. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - canvas.width = 200; - canvas.height = 200; - path = new Path2D(); - path.rect(0, 0, 100, 100); - path.rect(25, 25, 50, 50); - // Testing invalid enumeration isPointInPath (w/ and w/o Path object'); - assert.throws(function() { ctx.isPointInPath(path, 50, 50, 'gazonk'); }, TypeError); - assert.throws(function() { ctx.isPointInPath(50, 50, 'gazonk'); }, TypeError); - - // Testing invalid type isPointInPath with Path object'); - assert.throws(function() { ctx.isPointInPath(null, 50, 50); }, TypeError); - assert.throws(function() { ctx.isPointInPath(null, 50, 50, 'nonzero'); }, TypeError); - assert.throws(function() { ctx.isPointInPath(null, 50, 50, 'evenodd'); }, TypeError); - assert.throws(function() { ctx.isPointInPath(null, 50, 50, null); }, TypeError); - assert.throws(function() { ctx.isPointInPath(path, 50, 50, null); }, TypeError); - assert.throws(function() { ctx.isPointInPath(undefined, 50, 50); }, TypeError); - assert.throws(function() { ctx.isPointInPath(undefined, 50, 50, 'nonzero'); }, TypeError); - assert.throws(function() { ctx.isPointInPath(undefined, 50, 50, 'evenodd'); }, TypeError); - assert.throws(function() { ctx.isPointInPath(undefined, 50, 50, undefined); }, TypeError); - assert.throws(function() { ctx.isPointInPath([], 50, 50); }, TypeError); - assert.throws(function() { ctx.isPointInPath([], 50, 50, 'nonzero'); }, TypeError); - assert.throws(function() { ctx.isPointInPath([], 50, 50, 'evenodd'); }, TypeError); - assert.throws(function() { ctx.isPointInPath({}, 50, 50); }, TypeError); - assert.throws(function() { ctx.isPointInPath({}, 50, 50, 'nonzero'); }, TypeError); - assert.throws(function() { ctx.isPointInPath({}, 50, 50, 'evenodd'); }, TypeError); - }); + it("2d.path.initial", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.closePath(); + ctx.fillStyle = "#f00"; + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.beginPath", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(0, 0, 100, 50); + ctx.beginPath(); + ctx.fillStyle = "#f00"; + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.moveTo.basic", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(0, 0, 10, 50); + ctx.moveTo(100, 0); + ctx.lineTo(10, 0); + ctx.lineTo(10, 50); + ctx.lineTo(100, 50); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 90, 25, 0, 255, 0, 255); + }); + + it("2d.path.moveTo.newsubpath", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.moveTo(100, 0); + ctx.moveTo(100, 50); + ctx.moveTo(0, 50); + ctx.fillStyle = "#f00"; + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.moveTo.multiple", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.moveTo(0, 25); + ctx.moveTo(100, 25); + ctx.moveTo(0, 25); + ctx.lineTo(100, 25); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 50; + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.moveTo.nonfinite", function () { + // moveTo() with Infinity/NaN is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.moveTo(Infinity, 50); + ctx.moveTo(-Infinity, 50); + ctx.moveTo(NaN, 50); + ctx.moveTo(0, Infinity); + ctx.moveTo(0, -Infinity); + ctx.moveTo(0, NaN); + ctx.moveTo(Infinity, Infinity); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.closePath.empty", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.closePath(); + ctx.fillStyle = "#f00"; + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.closePath.newline", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-100, -100); + ctx.lineTo(200, -100); + ctx.lineTo(200, 25); + ctx.closePath(); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.closePath.nextpoint", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-100, -1000); + ctx.closePath(); + ctx.lineTo(1000, 25); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.lineTo.ensuresubpath.1", function () { + // If there is no subpath, the point is added and nothing is drawn + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.lineTo(100, 50); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.lineTo.ensuresubpath.2", function () { + // If there is no subpath, the point is added and used for subsequent drawing + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.lineTo(0, 25); + ctx.lineTo(100, 25); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.lineTo.basic", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.lineTo(100, 25); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.lineTo.nextpoint", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(-100, -100); + ctx.lineTo(0, 25); + ctx.lineTo(100, 25); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.lineTo.nonfinite", function () { + // lineTo() with Infinity/NaN is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.lineTo(Infinity, 50); + ctx.lineTo(-Infinity, 50); + ctx.lineTo(NaN, 50); + ctx.lineTo(0, Infinity); + ctx.lineTo(0, -Infinity); + ctx.lineTo(0, NaN); + ctx.lineTo(Infinity, Infinity); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 90, 45, 0, 255, 0, 255); + }); + + it("2d.path.lineTo.nonfinite.details", function () { + // lineTo() with Infinity/NaN for first arg still converts the second arg + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + for (var arg1 of [Infinity, -Infinity, NaN]) { + var converted = false; + ctx.lineTo(arg1, { + valueOf: function () { + converted = true; + return 0; + }, + }); + assert(converted, "converted"); + } + }); + + it("2d.path.quadraticCurveTo.ensuresubpath.1", function () { + // If there is no subpath, the first control point is added (and nothing is drawn up to it) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.quadraticCurveTo(100, 50, 200, 50); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 95, 45, 0, 255, 0, 255); + }); + + it("2d.path.quadraticCurveTo.ensuresubpath.2", function () { + // If there is no subpath, the first control point is added + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.quadraticCurveTo(0, 25, 100, 25); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 5, 45, 0, 255, 0, 255); + }); + + it("2d.path.quadraticCurveTo.basic", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.quadraticCurveTo(100, 25, 100, 25); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.quadraticCurveTo.shape", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 55; + ctx.beginPath(); + ctx.moveTo(-1000, 1050); + ctx.quadraticCurveTo(0, -1000, 1200, 1050); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.quadraticCurveTo.scaled", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(1000, 1000); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 0.055; + ctx.beginPath(); + ctx.moveTo(-1, 1.05); + ctx.quadraticCurveTo(0, -1, 1.2, 1.05); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.quadraticCurveTo.nonfinite", function () { + // quadraticCurveTo() with Infinity/NaN is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.quadraticCurveTo(Infinity, 50, 0, 50); + ctx.quadraticCurveTo(-Infinity, 50, 0, 50); + ctx.quadraticCurveTo(NaN, 50, 0, 50); + ctx.quadraticCurveTo(0, Infinity, 0, 50); + ctx.quadraticCurveTo(0, -Infinity, 0, 50); + ctx.quadraticCurveTo(0, NaN, 0, 50); + ctx.quadraticCurveTo(0, 50, Infinity, 50); + ctx.quadraticCurveTo(0, 50, -Infinity, 50); + ctx.quadraticCurveTo(0, 50, NaN, 50); + ctx.quadraticCurveTo(0, 50, 0, Infinity); + ctx.quadraticCurveTo(0, 50, 0, -Infinity); + ctx.quadraticCurveTo(0, 50, 0, NaN); + ctx.quadraticCurveTo(Infinity, Infinity, 0, 50); + ctx.quadraticCurveTo(Infinity, Infinity, Infinity, 50); + ctx.quadraticCurveTo(Infinity, Infinity, Infinity, Infinity); + ctx.quadraticCurveTo(Infinity, Infinity, 0, Infinity); + ctx.quadraticCurveTo(Infinity, 50, Infinity, 50); + ctx.quadraticCurveTo(Infinity, 50, Infinity, Infinity); + ctx.quadraticCurveTo(Infinity, 50, 0, Infinity); + ctx.quadraticCurveTo(0, Infinity, Infinity, 50); + ctx.quadraticCurveTo(0, Infinity, Infinity, Infinity); + ctx.quadraticCurveTo(0, Infinity, 0, Infinity); + ctx.quadraticCurveTo(0, 50, Infinity, Infinity); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 90, 45, 0, 255, 0, 255); + }); + + it("2d.path.bezierCurveTo.ensuresubpath.1", function () { + // If there is no subpath, the first control point is added (and nothing is drawn up to it) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.bezierCurveTo(100, 50, 200, 50, 200, 50); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 95, 45, 0, 255, 0, 255); + }); + + it("2d.path.bezierCurveTo.ensuresubpath.2", function () { + // If there is no subpath, the first control point is added + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.bezierCurveTo(0, 25, 100, 25, 100, 25); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 5, 45, 0, 255, 0, 255); + }); + + it("2d.path.bezierCurveTo.basic", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.bezierCurveTo(100, 25, 100, 25, 100, 25); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.bezierCurveTo.shape", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 55; + ctx.beginPath(); + ctx.moveTo(-2000, 3100); + ctx.bezierCurveTo(-2000, -1000, 2100, -1000, 2100, 3100); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.bezierCurveTo.scaled", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(1000, 1000); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 0.055; + ctx.beginPath(); + ctx.moveTo(-2, 3.1); + ctx.bezierCurveTo(-2, -1, 2.1, -1, 2.1, 3.1); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.bezierCurveTo.nonfinite", function () { + // bezierCurveTo() with Infinity/NaN is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.bezierCurveTo(Infinity, 50, 0, 50, 0, 50); + ctx.bezierCurveTo(-Infinity, 50, 0, 50, 0, 50); + ctx.bezierCurveTo(NaN, 50, 0, 50, 0, 50); + ctx.bezierCurveTo(0, Infinity, 0, 50, 0, 50); + ctx.bezierCurveTo(0, -Infinity, 0, 50, 0, 50); + ctx.bezierCurveTo(0, NaN, 0, 50, 0, 50); + ctx.bezierCurveTo(0, 50, Infinity, 50, 0, 50); + ctx.bezierCurveTo(0, 50, -Infinity, 50, 0, 50); + ctx.bezierCurveTo(0, 50, NaN, 50, 0, 50); + ctx.bezierCurveTo(0, 50, 0, Infinity, 0, 50); + ctx.bezierCurveTo(0, 50, 0, -Infinity, 0, 50); + ctx.bezierCurveTo(0, 50, 0, NaN, 0, 50); + ctx.bezierCurveTo(0, 50, 0, 50, Infinity, 50); + ctx.bezierCurveTo(0, 50, 0, 50, -Infinity, 50); + ctx.bezierCurveTo(0, 50, 0, 50, NaN, 50); + ctx.bezierCurveTo(0, 50, 0, 50, 0, Infinity); + ctx.bezierCurveTo(0, 50, 0, 50, 0, -Infinity); + ctx.bezierCurveTo(0, 50, 0, 50, 0, NaN); + ctx.bezierCurveTo(Infinity, Infinity, 0, 50, 0, 50); + ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, 0, 50); + ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, 0, 50); + ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, Infinity, 50); + ctx.bezierCurveTo( + Infinity, + Infinity, + Infinity, + Infinity, + Infinity, + Infinity + ); + ctx.bezierCurveTo(Infinity, Infinity, Infinity, Infinity, 0, Infinity); + ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, Infinity, 50); + ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, Infinity, Infinity); + ctx.bezierCurveTo(Infinity, Infinity, Infinity, 50, 0, Infinity); + ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, 0, 50); + ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, Infinity, 50); + ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, Infinity, Infinity); + ctx.bezierCurveTo(Infinity, Infinity, 0, Infinity, 0, Infinity); + ctx.bezierCurveTo(Infinity, Infinity, 0, 50, Infinity, 50); + ctx.bezierCurveTo(Infinity, Infinity, 0, 50, Infinity, Infinity); + ctx.bezierCurveTo(Infinity, Infinity, 0, 50, 0, Infinity); + ctx.bezierCurveTo(Infinity, 50, Infinity, 50, 0, 50); + ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, 0, 50); + ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, Infinity, 50); + ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, Infinity, Infinity); + ctx.bezierCurveTo(Infinity, 50, Infinity, Infinity, 0, Infinity); + ctx.bezierCurveTo(Infinity, 50, Infinity, 50, Infinity, 50); + ctx.bezierCurveTo(Infinity, 50, Infinity, 50, Infinity, Infinity); + ctx.bezierCurveTo(Infinity, 50, Infinity, 50, 0, Infinity); + ctx.bezierCurveTo(Infinity, 50, 0, Infinity, 0, 50); + ctx.bezierCurveTo(Infinity, 50, 0, Infinity, Infinity, 50); + ctx.bezierCurveTo(Infinity, 50, 0, Infinity, Infinity, Infinity); + ctx.bezierCurveTo(Infinity, 50, 0, Infinity, 0, Infinity); + ctx.bezierCurveTo(Infinity, 50, 0, 50, Infinity, 50); + ctx.bezierCurveTo(Infinity, 50, 0, 50, Infinity, Infinity); + ctx.bezierCurveTo(Infinity, 50, 0, 50, 0, Infinity); + ctx.bezierCurveTo(0, Infinity, Infinity, 50, 0, 50); + ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, 0, 50); + ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, Infinity, 50); + ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, Infinity, Infinity); + ctx.bezierCurveTo(0, Infinity, Infinity, Infinity, 0, Infinity); + ctx.bezierCurveTo(0, Infinity, Infinity, 50, Infinity, 50); + ctx.bezierCurveTo(0, Infinity, Infinity, 50, Infinity, Infinity); + ctx.bezierCurveTo(0, Infinity, Infinity, 50, 0, Infinity); + ctx.bezierCurveTo(0, Infinity, 0, Infinity, 0, 50); + ctx.bezierCurveTo(0, Infinity, 0, Infinity, Infinity, 50); + ctx.bezierCurveTo(0, Infinity, 0, Infinity, Infinity, Infinity); + ctx.bezierCurveTo(0, Infinity, 0, Infinity, 0, Infinity); + ctx.bezierCurveTo(0, Infinity, 0, 50, Infinity, 50); + ctx.bezierCurveTo(0, Infinity, 0, 50, Infinity, Infinity); + ctx.bezierCurveTo(0, Infinity, 0, 50, 0, Infinity); + ctx.bezierCurveTo(0, 50, Infinity, Infinity, 0, 50); + ctx.bezierCurveTo(0, 50, Infinity, Infinity, Infinity, 50); + ctx.bezierCurveTo(0, 50, Infinity, Infinity, Infinity, Infinity); + ctx.bezierCurveTo(0, 50, Infinity, Infinity, 0, Infinity); + ctx.bezierCurveTo(0, 50, Infinity, 50, Infinity, 50); + ctx.bezierCurveTo(0, 50, Infinity, 50, Infinity, Infinity); + ctx.bezierCurveTo(0, 50, Infinity, 50, 0, Infinity); + ctx.bezierCurveTo(0, 50, 0, Infinity, Infinity, 50); + ctx.bezierCurveTo(0, 50, 0, Infinity, Infinity, Infinity); + ctx.bezierCurveTo(0, 50, 0, Infinity, 0, Infinity); + ctx.bezierCurveTo(0, 50, 0, 50, Infinity, Infinity); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 90, 45, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.ensuresubpath.1", function () { + // If there is no subpath, the first control point is added (and nothing is drawn up to it) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.arcTo(100, 50, 200, 50, 0.1); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.ensuresubpath.2", function () { + // If there is no subpath, the first control point is added + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.arcTo(0, 25, 50, 250, 0.1); // adds (x1,y1), draws nothing + ctx.lineTo(100, 25); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.coincide.1", function () { + // arcTo() has no effect if P0 = P1 + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(0, 25, 50, 1000, 1); + ctx.lineTo(100, 25); + ctx.stroke(); + + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.arcTo(50, 25, 100, 25, 1); + ctx.stroke(); + + _assertPixel(canvas, 50, 1, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 48, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.coincide.2", function () { + // arcTo() draws a straight line to P1 if P1 = P2 + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, 100, 25, 1); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.collinear.1", function () { + // arcTo() with all points on a line, and P1 between P0/P2, draws a straight line to P1 + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, 200, 25, 1); + ctx.stroke(); + + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(-100, 25); + ctx.arcTo(0, 25, 100, 25, 1); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.collinear.2", function () { + // arcTo() with all points on a line, and P2 between P0/P1, draws a straight line to P1 + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, 10, 25, 1); + ctx.stroke(); + + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(100, 25); + ctx.arcTo(200, 25, 110, 25, 1); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.collinear.3", function () { + // arcTo() with all points on a line, and P0 between P1/P2, draws a straight line to P1 + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, -100, 25, 1); + ctx.stroke(); + + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(100, 25); + ctx.arcTo(200, 25, 0, 25, 1); + ctx.stroke(); + + ctx.beginPath(); + ctx.moveTo(-100, 25); + ctx.arcTo(0, 25, -200, 25, 1); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.shape.curve1", function () { + // arcTo() curves in the right kind of shape + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var tol = 1.5; // tolerance to avoid antialiasing artifacts + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 10; + ctx.beginPath(); + ctx.moveTo(10, 25); + ctx.arcTo(75, 25, 75, 60, 20); + ctx.stroke(); + + ctx.fillStyle = "#0f0"; + ctx.beginPath(); + ctx.rect(10, 20, 45, 10); + ctx.moveTo(80, 45); + ctx.arc(55, 45, 25 + tol, 0, -Math.PI / 2, true); + ctx.arc(55, 45, 15 - tol, -Math.PI / 2, 0, false); + ctx.fill(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 55, 19, 0, 255, 0, 255); + _assertPixel(canvas, 55, 20, 0, 255, 0, 255); + _assertPixel(canvas, 55, 21, 0, 255, 0, 255); + _assertPixel(canvas, 64, 22, 0, 255, 0, 255); + _assertPixel(canvas, 65, 21, 0, 255, 0, 255); + _assertPixel(canvas, 72, 28, 0, 255, 0, 255); + _assertPixel(canvas, 73, 27, 0, 255, 0, 255); + _assertPixel(canvas, 78, 36, 0, 255, 0, 255); + _assertPixel(canvas, 79, 35, 0, 255, 0, 255); + _assertPixel(canvas, 80, 44, 0, 255, 0, 255); + _assertPixel(canvas, 80, 45, 0, 255, 0, 255); + _assertPixel(canvas, 80, 46, 0, 255, 0, 255); + _assertPixel(canvas, 65, 45, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.shape.curve2", function () { + // arcTo() curves in the right kind of shape + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var tol = 1.5; // tolerance to avoid antialiasing artifacts + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.fillStyle = "#f00"; + ctx.beginPath(); + ctx.rect(10, 20, 45, 10); + ctx.moveTo(80, 45); + ctx.arc(55, 45, 25 - tol, 0, -Math.PI / 2, true); + ctx.arc(55, 45, 15 + tol, -Math.PI / 2, 0, false); + ctx.fill(); + + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 10; + ctx.beginPath(); + ctx.moveTo(10, 25); + ctx.arcTo(75, 25, 75, 60, 20); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 55, 19, 0, 255, 0, 255); + _assertPixel(canvas, 55, 20, 0, 255, 0, 255); + _assertPixel(canvas, 55, 21, 0, 255, 0, 255); + _assertPixel(canvas, 64, 22, 0, 255, 0, 255); + _assertPixel(canvas, 65, 21, 0, 255, 0, 255); + _assertPixel(canvas, 72, 28, 0, 255, 0, 255); + _assertPixel(canvas, 73, 27, 0, 255, 0, 255); + _assertPixel(canvas, 78, 36, 0, 255, 0, 255); + _assertPixel(canvas, 79, 35, 0, 255, 0, 255); + _assertPixel(canvas, 80, 44, 0, 255, 0, 255); + _assertPixel(canvas, 80, 45, 0, 255, 0, 255); + _assertPixel(canvas, 80, 46, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.shape.start", function () { + // arcTo() draws a straight line from P0 to P1 + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(200, 25, 200, 50, 10); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.shape.end", function () { + // arcTo() does not draw anything from P1 to P2 + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(-100, -100); + ctx.arcTo(-100, 25, 200, 25, 10); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.negative", function () { + // arcTo() with negative radius throws an exception + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.throws(function () { + ctx.arcTo(0, 0, 0, 0, -1); + }, /INDEX_SIZE_ERR/); + var path = new Path2D(); + assert.throws(function () { + path.arcTo(10, 10, 20, 20, -5); + }, /INDEX_SIZE_ERR/); + }); + + it("2d.path.arcTo.zero.1", function () { + // arcTo() with zero radius draws a straight line from P0 to P1 + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, 100, 100, 0); + ctx.stroke(); + + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(0, -25); + ctx.arcTo(50, -25, 50, 50, 0); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.zero.2", function () { + // arcTo() with zero radius draws a straight line from P0 to P1, even when all points are collinear + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, -100, 25, 0); + ctx.stroke(); + + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(100, 25); + ctx.arcTo(200, 25, 50, 25, 0); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.transformation", function () { + // arcTo joins up to the last subpath point correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.fillStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(0, 50); + ctx.translate(100, 0); + ctx.arcTo(50, 50, 50, 0, 50); + ctx.lineTo(-100, 0); + ctx.fill(); + + _assertPixel(canvas, 0, 0, 0, 255, 0, 255); + _assertPixel(canvas, 50, 0, 0, 255, 0, 255); + _assertPixel(canvas, 99, 0, 0, 255, 0, 255); + _assertPixel(canvas, 0, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 99, 25, 0, 255, 0, 255); + _assertPixel(canvas, 0, 49, 0, 255, 0, 255); + _assertPixel(canvas, 50, 49, 0, 255, 0, 255); + _assertPixel(canvas, 99, 49, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.scale", function () { + // arcTo scales the curve, not just the control points + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.fillStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(0, 50); + ctx.translate(100, 0); + ctx.scale(0.1, 1); + ctx.arcTo(50, 50, 50, 0, 50); + ctx.lineTo(-1000, 0); + ctx.fill(); + + _assertPixel(canvas, 0, 0, 0, 255, 0, 255); + _assertPixel(canvas, 50, 0, 0, 255, 0, 255); + _assertPixel(canvas, 99, 0, 0, 255, 0, 255); + _assertPixel(canvas, 0, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 99, 25, 0, 255, 0, 255); + _assertPixel(canvas, 0, 49, 0, 255, 0, 255); + _assertPixel(canvas, 50, 49, 0, 255, 0, 255); + _assertPixel(canvas, 99, 49, 0, 255, 0, 255); + }); + + it("2d.path.arcTo.nonfinite", function () { + // arcTo() with Infinity/NaN is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.arcTo(Infinity, 50, 0, 50, 0); + ctx.arcTo(-Infinity, 50, 0, 50, 0); + ctx.arcTo(NaN, 50, 0, 50, 0); + ctx.arcTo(0, Infinity, 0, 50, 0); + ctx.arcTo(0, -Infinity, 0, 50, 0); + ctx.arcTo(0, NaN, 0, 50, 0); + ctx.arcTo(0, 50, Infinity, 50, 0); + ctx.arcTo(0, 50, -Infinity, 50, 0); + ctx.arcTo(0, 50, NaN, 50, 0); + ctx.arcTo(0, 50, 0, Infinity, 0); + ctx.arcTo(0, 50, 0, -Infinity, 0); + ctx.arcTo(0, 50, 0, NaN, 0); + ctx.arcTo(0, 50, 0, 50, Infinity); + ctx.arcTo(0, 50, 0, 50, -Infinity); + ctx.arcTo(0, 50, 0, 50, NaN); + ctx.arcTo(Infinity, Infinity, 0, 50, 0); + ctx.arcTo(Infinity, Infinity, Infinity, 50, 0); + ctx.arcTo(Infinity, Infinity, Infinity, Infinity, 0); + ctx.arcTo(Infinity, Infinity, Infinity, Infinity, Infinity); + ctx.arcTo(Infinity, Infinity, Infinity, 50, Infinity); + ctx.arcTo(Infinity, Infinity, 0, Infinity, 0); + ctx.arcTo(Infinity, Infinity, 0, Infinity, Infinity); + ctx.arcTo(Infinity, Infinity, 0, 50, Infinity); + ctx.arcTo(Infinity, 50, Infinity, 50, 0); + ctx.arcTo(Infinity, 50, Infinity, Infinity, 0); + ctx.arcTo(Infinity, 50, Infinity, Infinity, Infinity); + ctx.arcTo(Infinity, 50, Infinity, 50, Infinity); + ctx.arcTo(Infinity, 50, 0, Infinity, 0); + ctx.arcTo(Infinity, 50, 0, Infinity, Infinity); + ctx.arcTo(Infinity, 50, 0, 50, Infinity); + ctx.arcTo(0, Infinity, Infinity, 50, 0); + ctx.arcTo(0, Infinity, Infinity, Infinity, 0); + ctx.arcTo(0, Infinity, Infinity, Infinity, Infinity); + ctx.arcTo(0, Infinity, Infinity, 50, Infinity); + ctx.arcTo(0, Infinity, 0, Infinity, 0); + ctx.arcTo(0, Infinity, 0, Infinity, Infinity); + ctx.arcTo(0, Infinity, 0, 50, Infinity); + ctx.arcTo(0, 50, Infinity, Infinity, 0); + ctx.arcTo(0, 50, Infinity, Infinity, Infinity); + ctx.arcTo(0, 50, Infinity, 50, Infinity); + ctx.arcTo(0, 50, 0, Infinity, Infinity); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 90, 45, 0, 255, 0, 255); + }); + + it("2d.path.arc.empty", function () { + // arc() with an empty path does not draw a straight line to the start point + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.arc(200, 25, 5, 0, 2 * Math.PI, true); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arc.nonempty", function () { + // arc() with a non-empty path does draw a straight line to the start point + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arc(200, 25, 5, 0, 2 * Math.PI, true); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arc.end", function () { + // arc() adds the end point of the arc to the subpath + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(-100, 0); + ctx.arc(-100, 0, 25, -Math.PI / 2, Math.PI / 2, true); + ctx.lineTo(100, 25); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arc.default", function () { + // arc() with missing last argument defaults to clockwise + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc(100, 0, 150, -Math.PI, Math.PI / 2); + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arc.angle.1", function () { + // arc() draws pi/2 .. -pi anticlockwise correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc(100, 0, 150, Math.PI / 2, -Math.PI, true); + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arc.angle.2", function () { + // arc() draws -3pi/2 .. -pi anticlockwise correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc(100, 0, 150, (-3 * Math.PI) / 2, -Math.PI, true); + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arc.angle.3", function () { + // arc() wraps angles mod 2pi when anticlockwise and end > start+2pi + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc( + 100, + 0, + 150, + (512 + 1 / 2) * Math.PI, + (1024 - 1) * Math.PI, + true + ); + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arc.angle.4", function () { + // arc() draws a full circle when clockwise and end > start+2pi + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.arc( + 50, + 25, + 60, + (512 + 1 / 2) * Math.PI, + (1024 - 1) * Math.PI, + false + ); + ctx.fill(); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.arc.angle.5", function () { + // arc() wraps angles mod 2pi when clockwise and start > end+2pi + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc( + 100, + 0, + 150, + (1024 - 1) * Math.PI, + (512 + 1 / 2) * Math.PI, + false + ); + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arc.angle.6", function () { + // arc() draws a full circle when anticlockwise and start > end+2pi + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.arc( + 50, + 25, + 60, + (1024 - 1) * Math.PI, + (512 + 1 / 2) * Math.PI, + true + ); + ctx.fill(); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.arc.zero.1", function () { + // arc() draws nothing when startAngle = endAngle and anticlockwise + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 0, true); + ctx.stroke(); + _assertPixel(canvas, 50, 20, 0, 255, 0, 255); + }); + + it("2d.path.arc.zero.2", function () { + // arc() draws nothing when startAngle = endAngle and clockwise + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 0, false); + ctx.stroke(); + _assertPixel(canvas, 50, 20, 0, 255, 0, 255); + }); + + it("2d.path.arc.twopie.1", function () { + // arc() draws nothing when end = start + 2pi-e and anticlockwise + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 2 * Math.PI - 1e-4, true); + ctx.stroke(); + _assertPixel(canvas, 50, 20, 0, 255, 0, 255); + }); + + it("2d.path.arc.twopie.2", function () { + // arc() draws a full circle when end = start + 2pi-e and clockwise + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 2 * Math.PI - 1e-4, false); + ctx.stroke(); + _assertPixel(canvas, 50, 20, 0, 255, 0, 255); + }); + + it("2d.path.arc.twopie.3", function () { + // arc() draws a full circle when end = start + 2pi+e and anticlockwise + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 2 * Math.PI + 1e-4, true); + ctx.stroke(); + _assertPixel(canvas, 50, 20, 0, 255, 0, 255); + }); + + it("2d.path.arc.twopie.4", function () { + // arc() draws nothing when end = start + 2pi+e and clockwise + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 2 * Math.PI + 1e-4, false); + ctx.stroke(); + _assertPixel(canvas, 50, 20, 0, 255, 0, 255); + }); + + it("2d.path.arc.shape.1", function () { + // arc() from 0 to pi does not draw anything in the wrong half + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.arc(50, 50, 50, 0, Math.PI, false); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 20, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.arc.shape.2", function () { + // arc() from 0 to pi draws stuff in the right half + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 100; + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.arc(50, 50, 50, 0, Math.PI, true); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 20, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.arc.shape.3", function () { + // arc() from 0 to -pi/2 does not draw anything in the wrong quadrant + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 100; + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.arc(0, 50, 50, 0, -Math.PI / 2, false); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.arc.shape.4", function () { + // arc() from 0 to -pi/2 draws stuff in the right quadrant + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 150; + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.arc(-50, 50, 100, 0, -Math.PI / 2, true); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.arc.shape.5", function () { + // arc() from 0 to 5pi does not draw crazy things + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 200; + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.arc(300, 0, 100, 0, 5 * Math.PI, false); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.arc.selfintersect.1", function () { + // arc() with lineWidth > 2*radius is drawn sensibly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 200; + ctx.strokeStyle = "#f00"; + ctx.beginPath(); + ctx.arc(100, 50, 25, 0, -Math.PI / 2, true); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(0, 0, 25, 0, -Math.PI / 2, true); + ctx.stroke(); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arc.selfintersect.2", function () { + // arc() with lineWidth > 2*radius is drawn sensibly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 180; + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.arc(-50, 50, 25, 0, -Math.PI / 2, true); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(100, 0, 25, 0, -Math.PI / 2, true); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 90, 10, 0, 255, 0, 255); + _assertPixel(canvas, 97, 1, 0, 255, 0, 255); + _assertPixel(canvas, 97, 2, 0, 255, 0, 255); + _assertPixel(canvas, 97, 3, 0, 255, 0, 255); + _assertPixel(canvas, 2, 48, 0, 255, 0, 255); + }); + + it("2d.path.arc.negative", function () { + // arc() with negative radius throws INDEX_SIZE_ERR + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.throws(function () { + ctx.arc(0, 0, -1, 0, 0, true); + }, /INDEX_SIZE_ERR/); + var path = new Path2D(); + assert.throws(function () { + path.arc(10, 10, -5, 0, 1, false); + }, /INDEX_SIZE_ERR/); + }); + + it("2d.path.arc.zeroradius", function () { + // arc() with zero radius draws a line to the start point + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = "#0f0"; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arc(200, 25, 0, 0, Math.PI, true); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.arc.scale.1", function () { + // Non-uniformly scaled arcs are the right shape + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(2, 0.5); + ctx.fillStyle = "#0f0"; + ctx.beginPath(); + ctx.arc(25, 50, 56, 0, 2 * Math.PI, false); + ctx.fill(); + ctx.fillStyle = "#f00"; + ctx.beginPath(); + ctx.moveTo(-25, 50); + ctx.arc(-25, 50, 24, 0, 2 * Math.PI, false); + ctx.moveTo(75, 50); + ctx.arc(75, 50, 24, 0, 2 * Math.PI, false); + ctx.moveTo(25, -25); + ctx.arc(25, -25, 24, 0, 2 * Math.PI, false); + ctx.moveTo(25, 125); + ctx.arc(25, 125, 24, 0, 2 * Math.PI, false); + ctx.fill(); + + _assertPixel(canvas, 0, 0, 0, 255, 0, 255); + _assertPixel(canvas, 50, 0, 0, 255, 0, 255); + _assertPixel(canvas, 99, 0, 0, 255, 0, 255); + _assertPixel(canvas, 0, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 99, 25, 0, 255, 0, 255); + _assertPixel(canvas, 0, 49, 0, 255, 0, 255); + _assertPixel(canvas, 50, 49, 0, 255, 0, 255); + _assertPixel(canvas, 99, 49, 0, 255, 0, 255); + }); + + it("2d.path.arc.scale.2", function () { + // Highly scaled arcs are the right shape + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(100, 100); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 1.2; + ctx.beginPath(); + ctx.arc(0, 0, 0.6, 0, Math.PI / 2, false); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 50, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 98, 25, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 50, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.arc.nonfinite", function () { + // arc() with Infinity/NaN is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.arc(Infinity, 0, 50, 0, 2 * Math.PI, true); + ctx.arc(-Infinity, 0, 50, 0, 2 * Math.PI, true); + ctx.arc(NaN, 0, 50, 0, 2 * Math.PI, true); + ctx.arc(0, Infinity, 50, 0, 2 * Math.PI, true); + ctx.arc(0, -Infinity, 50, 0, 2 * Math.PI, true); + ctx.arc(0, NaN, 50, 0, 2 * Math.PI, true); + ctx.arc(0, 0, Infinity, 0, 2 * Math.PI, true); + ctx.arc(0, 0, -Infinity, 0, 2 * Math.PI, true); + ctx.arc(0, 0, NaN, 0, 2 * Math.PI, true); + ctx.arc(0, 0, 50, Infinity, 2 * Math.PI, true); + ctx.arc(0, 0, 50, -Infinity, 2 * Math.PI, true); + ctx.arc(0, 0, 50, NaN, 2 * Math.PI, true); + ctx.arc(0, 0, 50, 0, Infinity, true); + ctx.arc(0, 0, 50, 0, -Infinity, true); + ctx.arc(0, 0, 50, 0, NaN, true); + ctx.arc(Infinity, Infinity, 50, 0, 2 * Math.PI, true); + ctx.arc(Infinity, Infinity, Infinity, 0, 2 * Math.PI, true); + ctx.arc(Infinity, Infinity, Infinity, Infinity, 2 * Math.PI, true); + ctx.arc(Infinity, Infinity, Infinity, Infinity, Infinity, true); + ctx.arc(Infinity, Infinity, Infinity, 0, Infinity, true); + ctx.arc(Infinity, Infinity, 50, Infinity, 2 * Math.PI, true); + ctx.arc(Infinity, Infinity, 50, Infinity, Infinity, true); + ctx.arc(Infinity, Infinity, 50, 0, Infinity, true); + ctx.arc(Infinity, 0, Infinity, 0, 2 * Math.PI, true); + ctx.arc(Infinity, 0, Infinity, Infinity, 2 * Math.PI, true); + ctx.arc(Infinity, 0, Infinity, Infinity, Infinity, true); + ctx.arc(Infinity, 0, Infinity, 0, Infinity, true); + ctx.arc(Infinity, 0, 50, Infinity, 2 * Math.PI, true); + ctx.arc(Infinity, 0, 50, Infinity, Infinity, true); + ctx.arc(Infinity, 0, 50, 0, Infinity, true); + ctx.arc(0, Infinity, Infinity, 0, 2 * Math.PI, true); + ctx.arc(0, Infinity, Infinity, Infinity, 2 * Math.PI, true); + ctx.arc(0, Infinity, Infinity, Infinity, Infinity, true); + ctx.arc(0, Infinity, Infinity, 0, Infinity, true); + ctx.arc(0, Infinity, 50, Infinity, 2 * Math.PI, true); + ctx.arc(0, Infinity, 50, Infinity, Infinity, true); + ctx.arc(0, Infinity, 50, 0, Infinity, true); + ctx.arc(0, 0, Infinity, Infinity, 2 * Math.PI, true); + ctx.arc(0, 0, Infinity, Infinity, Infinity, true); + ctx.arc(0, 0, Infinity, 0, Infinity, true); + ctx.arc(0, 0, 50, Infinity, Infinity, true); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 90, 45, 0, 255, 0, 255); + }); + + it("2d.path.rect.basic", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.rect(0, 0, 100, 50); + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.rect.newsubpath", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-50, 25); + ctx.rect(200, 25, 1, 1); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.rect.closed", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 200; + ctx.lineJoin = "miter"; + ctx.rect(100, 50, 100, 100); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.rect.end.1", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 100; + ctx.rect(200, 100, 400, 1000); + ctx.lineTo(-2000, -1000); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.rect.end.2", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 450; + ctx.lineCap = "round"; + ctx.lineJoin = "bevel"; + ctx.rect(150, 150, 2000, 2000); + ctx.lineTo(160, 160); + ctx.stroke(); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.rect.zero.1", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.rect(0, 50, 100, 0); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.rect.zero.2", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.rect(50, -100, 0, 250); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.rect.zero.3", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.rect(50, 25, 0, 0); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.rect.zero.4", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 50; + ctx.rect(100, 25, 0, 0); + ctx.lineTo(0, 25); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.rect.zero.5", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 50; + ctx.moveTo(0, 0); + ctx.rect(100, 25, 0, 0); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.rect.zero.6", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineJoin = "miter"; + ctx.miterLimit = 1.5; + ctx.lineWidth = 200; + ctx.beginPath(); + ctx.rect(100, 25, 1000, 0); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.rect.negative", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.fillStyle = "#0f0"; + ctx.rect(0, 0, 50, 25); + ctx.rect(100, 0, -50, 25); + ctx.rect(0, 50, 50, -25); + ctx.rect(100, 50, -50, -25); + ctx.fill(); + _assertPixel(canvas, 25, 12, 0, 255, 0, 255); + _assertPixel(canvas, 75, 12, 0, 255, 0, 255); + _assertPixel(canvas, 25, 37, 0, 255, 0, 255); + _assertPixel(canvas, 75, 37, 0, 255, 0, 255); + }); + + it("2d.path.rect.winding", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.fillStyle = "#f00"; + ctx.rect(0, 0, 50, 50); + ctx.rect(100, 50, -50, -50); + ctx.rect(0, 25, 100, -25); + ctx.rect(100, 25, -100, 25); + ctx.fill(); + _assertPixel(canvas, 25, 12, 0, 255, 0, 255); + _assertPixel(canvas, 75, 12, 0, 255, 0, 255); + _assertPixel(canvas, 25, 37, 0, 255, 0, 255); + _assertPixel(canvas, 75, 37, 0, 255, 0, 255); + }); + + it("2d.path.rect.selfintersect", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 90; + ctx.beginPath(); + ctx.rect(45, 20, 10, 10); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.rect.nonfinite", function () { + // rect() with Infinity/NaN is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.rect(Infinity, 50, 1, 1); + ctx.rect(-Infinity, 50, 1, 1); + ctx.rect(NaN, 50, 1, 1); + ctx.rect(0, Infinity, 1, 1); + ctx.rect(0, -Infinity, 1, 1); + ctx.rect(0, NaN, 1, 1); + ctx.rect(0, 50, Infinity, 1); + ctx.rect(0, 50, -Infinity, 1); + ctx.rect(0, 50, NaN, 1); + ctx.rect(0, 50, 1, Infinity); + ctx.rect(0, 50, 1, -Infinity); + ctx.rect(0, 50, 1, NaN); + ctx.rect(Infinity, Infinity, 1, 1); + ctx.rect(Infinity, Infinity, Infinity, 1); + ctx.rect(Infinity, Infinity, Infinity, Infinity); + ctx.rect(Infinity, Infinity, 1, Infinity); + ctx.rect(Infinity, 50, Infinity, 1); + ctx.rect(Infinity, 50, Infinity, Infinity); + ctx.rect(Infinity, 50, 1, Infinity); + ctx.rect(0, Infinity, Infinity, 1); + ctx.rect(0, Infinity, Infinity, Infinity); + ctx.rect(0, Infinity, 1, Infinity); + ctx.rect(0, 50, Infinity, Infinity); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 90, 45, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.newsubpath", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-50, 25); + ctx.roundRect(200, 25, 1, 1, [0]); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.closed", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 200; + ctx.lineJoin = "miter"; + ctx.roundRect(100, 50, 100, 100, [0]); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.end.1", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 100; + ctx.roundRect(200, 100, 400, 1000, [0]); + ctx.lineTo(-2000, -1000); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.end.2", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 450; + ctx.lineCap = "round"; + ctx.lineJoin = "bevel"; + ctx.roundRect(150, 150, 2000, 2000, [0]); + ctx.lineTo(160, 160); + ctx.stroke(); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.end.3", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 100; + ctx.roundRect(101, 51, 2000, 2000, [500, 500, 500, 500]); + ctx.lineTo(-1, -1); + ctx.stroke(); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.end.4", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 10; + ctx.roundRect(-1, -1, 2000, 2000, [1000, 1000, 1000, 1000]); + ctx.lineTo(-150, -150); + ctx.stroke(); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.zero.1", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.roundRect(0, 50, 100, 0, [0]); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.zero.2", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.roundRect(50, -100, 0, 250, [0]); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.zero.3", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.roundRect(50, 25, 0, 0, [0]); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.zero.4", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 50; + ctx.roundRect(100, 25, 0, 0, [0]); + ctx.lineTo(0, 25); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.zero.5", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 50; + ctx.moveTo(0, 0); + ctx.roundRect(100, 25, 0, 0, [0]); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.zero.6", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.lineJoin = "miter"; + ctx.miterLimit = 1.5; + ctx.lineWidth = 200; + ctx.beginPath(); + ctx.roundRect(100, 25, 1000, 0, [0]); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.negative", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.fillStyle = "#0f0"; + ctx.roundRect(0, 0, 50, 25, [10, 0, 0, 0]); + ctx.roundRect(100, 0, -50, 25, [10, 0, 0, 0]); + ctx.roundRect(0, 50, 50, -25, [10, 0, 0, 0]); + ctx.roundRect(100, 50, -50, -25, [10, 0, 0, 0]); + ctx.fill(); + // All rects drawn + _assertPixel(canvas, 25, 12, 0, 255, 0, 255); + _assertPixel(canvas, 75, 12, 0, 255, 0, 255); + _assertPixel(canvas, 25, 37, 0, 255, 0, 255); + _assertPixel(canvas, 75, 37, 0, 255, 0, 255); + // Correct corners are rounded. + _assertPixel(canvas, 1, 1, 255, 0, 0, 255); + _assertPixel(canvas, 98, 1, 255, 0, 0, 255); + _assertPixel(canvas, 1, 48, 255, 0, 0, 255); + _assertPixel(canvas, 98, 48, 255, 0, 0, 255); + }); + + it("2d.path.roundrect.winding", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.fillStyle = "#f00"; + ctx.roundRect(0, 0, 50, 50, [0]); + ctx.roundRect(100, 50, -50, -50, [0]); + ctx.roundRect(0, 25, 100, -25, [0]); + ctx.roundRect(100, 25, -100, 25, [0]); + ctx.fill(); + _assertPixel(canvas, 25, 12, 0, 255, 0, 255); + _assertPixel(canvas, 75, 12, 0, 255, 0, 255); + _assertPixel(canvas, 25, 37, 0, 255, 0, 255); + _assertPixel(canvas, 75, 37, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.selfintersect", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.roundRect(0, 0, 100, 50, [0]); + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 90; + ctx.beginPath(); + ctx.roundRect(45, 20, 10, 10, [0]); + ctx.stroke(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.nonfinite", function () { + // roundRect() with Infinity/NaN is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.roundRect(Infinity, 50, 1, 1, [0]); + ctx.roundRect(-Infinity, 50, 1, 1, [0]); + ctx.roundRect(NaN, 50, 1, 1, [0]); + ctx.roundRect(0, Infinity, 1, 1, [0]); + ctx.roundRect(0, -Infinity, 1, 1, [0]); + ctx.roundRect(0, NaN, 1, 1, [0]); + ctx.roundRect(0, 50, Infinity, 1, [0]); + ctx.roundRect(0, 50, -Infinity, 1, [0]); + ctx.roundRect(0, 50, NaN, 1, [0]); + ctx.roundRect(0, 50, 1, Infinity, [0]); + ctx.roundRect(0, 50, 1, -Infinity, [0]); + ctx.roundRect(0, 50, 1, NaN, [0]); + ctx.roundRect(0, 50, 1, 1, [Infinity]); + ctx.roundRect(0, 50, 1, 1, [-Infinity]); + ctx.roundRect(0, 50, 1, 1, [NaN]); + ctx.roundRect(0, 50, 1, 1, [Infinity, 0]); + ctx.roundRect(0, 50, 1, 1, [-Infinity, 0]); + ctx.roundRect(0, 50, 1, 1, [NaN, 0]); + ctx.roundRect(0, 50, 1, 1, [0, Infinity]); + ctx.roundRect(0, 50, 1, 1, [0, -Infinity]); + ctx.roundRect(0, 50, 1, 1, [0, NaN]); + ctx.roundRect(0, 50, 1, 1, [Infinity, 0, 0]); + ctx.roundRect(0, 50, 1, 1, [-Infinity, 0, 0]); + ctx.roundRect(0, 50, 1, 1, [NaN, 0, 0]); + ctx.roundRect(0, 50, 1, 1, [0, Infinity, 0]); + ctx.roundRect(0, 50, 1, 1, [0, -Infinity, 0]); + ctx.roundRect(0, 50, 1, 1, [0, NaN, 0]); + ctx.roundRect(0, 50, 1, 1, [0, 0, Infinity]); + ctx.roundRect(0, 50, 1, 1, [0, 0, -Infinity]); + ctx.roundRect(0, 50, 1, 1, [0, 0, NaN]); + ctx.roundRect(0, 50, 1, 1, [Infinity, 0, 0, 0]); + ctx.roundRect(0, 50, 1, 1, [-Infinity, 0, 0, 0]); + ctx.roundRect(0, 50, 1, 1, [NaN, 0, 0, 0]); + ctx.roundRect(0, 50, 1, 1, [0, Infinity, 0, 0]); + ctx.roundRect(0, 50, 1, 1, [0, -Infinity, 0, 0]); + ctx.roundRect(0, 50, 1, 1, [0, NaN, 0, 0]); + ctx.roundRect(0, 50, 1, 1, [0, 0, Infinity, 0]); + ctx.roundRect(0, 50, 1, 1, [0, 0, -Infinity, 0]); + ctx.roundRect(0, 50, 1, 1, [0, 0, NaN, 0]); + ctx.roundRect(0, 50, 1, 1, [0, 0, 0, Infinity]); + ctx.roundRect(0, 50, 1, 1, [0, 0, 0, -Infinity]); + ctx.roundRect(0, 50, 1, 1, [0, 0, 0, NaN]); + ctx.roundRect(Infinity, Infinity, 1, 1, [0]); + ctx.roundRect(Infinity, Infinity, Infinity, 1, [0]); + ctx.roundRect(Infinity, Infinity, Infinity, Infinity, [0]); + ctx.roundRect(Infinity, Infinity, Infinity, Infinity, [Infinity]); + ctx.roundRect(Infinity, Infinity, Infinity, 1, [Infinity]); + ctx.roundRect(Infinity, Infinity, 1, Infinity, [0]); + ctx.roundRect(Infinity, Infinity, 1, Infinity, [Infinity]); + ctx.roundRect(Infinity, Infinity, 1, 1, [Infinity]); + ctx.roundRect(Infinity, 50, Infinity, 1, [0]); + ctx.roundRect(Infinity, 50, Infinity, Infinity, [0]); + ctx.roundRect(Infinity, 50, Infinity, Infinity, [Infinity]); + ctx.roundRect(Infinity, 50, Infinity, 1, [Infinity]); + ctx.roundRect(Infinity, 50, 1, Infinity, [0]); + ctx.roundRect(Infinity, 50, 1, Infinity, [Infinity]); + ctx.roundRect(Infinity, 50, 1, 1, [Infinity]); + ctx.roundRect(0, Infinity, Infinity, 1, [0]); + ctx.roundRect(0, Infinity, Infinity, Infinity, [0]); + ctx.roundRect(0, Infinity, Infinity, Infinity, [Infinity]); + ctx.roundRect(0, Infinity, Infinity, 1, [Infinity]); + ctx.roundRect(0, Infinity, 1, Infinity, [0]); + ctx.roundRect(0, Infinity, 1, Infinity, [Infinity]); + ctx.roundRect(0, Infinity, 1, 1, [Infinity]); + ctx.roundRect(0, 50, Infinity, Infinity, [0]); + ctx.roundRect(0, 50, Infinity, Infinity, [Infinity]); + ctx.roundRect(0, 50, Infinity, 1, [Infinity]); + ctx.roundRect(0, 50, 1, Infinity, [Infinity]); + ctx.roundRect(0, 0, 100, 100, [new DOMPoint(10, Infinity)]); + ctx.roundRect(0, 0, 100, 100, [new DOMPoint(10, -Infinity)]); + ctx.roundRect(0, 0, 100, 100, [new DOMPoint(10, NaN)]); + ctx.roundRect(0, 0, 100, 100, [new DOMPoint(Infinity, 10)]); + ctx.roundRect(0, 0, 100, 100, [new DOMPoint(-Infinity, 10)]); + ctx.roundRect(0, 0, 100, 100, [new DOMPoint(NaN, 10)]); + ctx.roundRect(0, 0, 100, 100, [{ x: 10, y: Infinity }]); + ctx.roundRect(0, 0, 100, 100, [{ x: 10, y: -Infinity }]); + ctx.roundRect(0, 0, 100, 100, [{ x: 10, y: NaN }]); + ctx.roundRect(0, 0, 100, 100, [{ x: Infinity, y: 10 }]); + ctx.roundRect(0, 0, 100, 100, [{ x: -Infinity, y: 10 }]); + ctx.roundRect(0, 0, 100, 100, [{ x: NaN, y: 10 }]); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 90, 45, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.4.radii.1.double", function () { + // Verify that when four radii are given to roundRect(), the first radius, specified as a double, applies to the top-left corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [20, 0, 0, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 1, 1, 255, 0, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.4.radii.1.dompoint", function () { + // Verify that when four radii are given to roundRect(), the first radius, specified as a DOMPoint, applies to the top-left corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20), 0, 0, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-left corner + _assertPixel(canvas, 20, 1, 255, 0, 0, 255); + _assertPixel(canvas, 41, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 10, 255, 0, 0, 255); + _assertPixel(canvas, 1, 21, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.4.radii.1.dompointinit", function () { + // Verify that when four radii are given to roundRect(), the first radius, specified as a DOMPointInit, applies to the top-left corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [{ x: 40, y: 20 }, 0, 0, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-left corner + _assertPixel(canvas, 20, 1, 255, 0, 0, 255); + _assertPixel(canvas, 41, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 10, 255, 0, 0, 255); + _assertPixel(canvas, 1, 21, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.4.radii.2.double", function () { + // Verify that when four radii are given to roundRect(), the second radius, specified as a double, applies to the top-right corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 20, 0, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 255, 0, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.4.radii.2.dompoint", function () { + // Verify that when four radii are given to roundRect(), the second radius, specified as a DOMPoint, applies to the top-right corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, new DOMPoint(40, 20), 0, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-right corner + _assertPixel(canvas, 79, 1, 255, 0, 0, 255); + _assertPixel(canvas, 58, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 10, 255, 0, 0, 255); + _assertPixel(canvas, 98, 21, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.4.radii.2.dompointinit", function () { + // Verify that when four radii are given to roundRect(), the second radius, specified as a DOMPointInit, applies to the top-right corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, { x: 40, y: 20 }, 0, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-right corner + _assertPixel(canvas, 79, 1, 255, 0, 0, 255); + _assertPixel(canvas, 58, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 10, 255, 0, 0, 255); + _assertPixel(canvas, 98, 21, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.4.radii.3.double", function () { + // Verify that when four radii are given to roundRect(), the third radius, specified as a double, applies to the bottom-right corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, 20, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 255, 0, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.4.radii.3.dompoint", function () { + // Verify that when four radii are given to roundRect(), the third radius, specified as a DOMPoint, applies to the bottom-right corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, new DOMPoint(40, 20), 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // bottom-right corner + _assertPixel(canvas, 79, 48, 255, 0, 0, 255); + _assertPixel(canvas, 58, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 39, 255, 0, 0, 255); + _assertPixel(canvas, 98, 28, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.4.radii.3.dompointinit", function () { + // Verify that when four radii are given to roundRect(), the third radius, specified as a DOMPointInit, applies to the bottom-right corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, { x: 40, y: 20 }, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // bottom-right corner + _assertPixel(canvas, 79, 48, 255, 0, 0, 255); + _assertPixel(canvas, 58, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 39, 255, 0, 0, 255); + _assertPixel(canvas, 98, 28, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.4.radii.4.double", function () { + // Verify that when four radii are given to roundRect(), the fourth radius, specified as a double, applies to the bottom-left corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, 0, 20]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 255, 0, 0, 255); + }); + + it("2d.path.roundrect.4.radii.4.dompoint", function () { + // Verify that when four radii are given to roundRect(), the fourth radius, specified as a DOMPoint, applies to the bottom-left corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, 0, new DOMPoint(40, 20)]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // bottom-left corner + _assertPixel(canvas, 20, 48, 255, 0, 0, 255); + _assertPixel(canvas, 41, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 39, 255, 0, 0, 255); + _assertPixel(canvas, 1, 28, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.4.radii.4.dompointinit", function () { + // Verify that when four radii are given to roundRect(), the fourth radius, specified as a DOMPointInit, applies to the bottom-left corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, 0, { x: 40, y: 20 }]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // bottom-left corner + _assertPixel(canvas, 20, 48, 255, 0, 0, 255); + _assertPixel(canvas, 41, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 39, 255, 0, 0, 255); + _assertPixel(canvas, 1, 28, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.3.radii.1.double", function () { + // Verify that when three radii are given to roundRect(), the first radius, specified as a double, applies to the top-left corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [20, 0, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 1, 1, 255, 0, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.3.radii.1.dompoint", function () { + // Verify that when three radii are given to roundRect(), the first radius, specified as a DOMPoint, applies to the top-left corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20), 0, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-left corner + _assertPixel(canvas, 20, 1, 255, 0, 0, 255); + _assertPixel(canvas, 41, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 10, 255, 0, 0, 255); + _assertPixel(canvas, 1, 21, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.3.radii.1.dompointinit", function () { + // Verify that when three radii are given to roundRect(), the first radius, specified as a DOMPointInit, applies to the top-left corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [{ x: 40, y: 20 }, 0, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-left corner + _assertPixel(canvas, 20, 1, 255, 0, 0, 255); + _assertPixel(canvas, 41, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 10, 255, 0, 0, 255); + _assertPixel(canvas, 1, 21, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.3.radii.2.double", function () { + // Verify that when three radii are given to roundRect(), the second radius, specified as a double, applies to the top-right and bottom-left corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 20, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 255, 0, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 255, 0, 0, 255); + }); + + it("2d.path.roundrect.3.radii.2.dompoint", function () { + // Verify that when three radii are given to roundRect(), the second radius, specified as a DOMPoint, applies to the top-right and bottom-left corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, new DOMPoint(40, 20), 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-right corner + _assertPixel(canvas, 79, 1, 255, 0, 0, 255); + _assertPixel(canvas, 58, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 10, 255, 0, 0, 255); + _assertPixel(canvas, 98, 21, 0, 255, 0, 255); + + // bottom-left corner + _assertPixel(canvas, 20, 48, 255, 0, 0, 255); + _assertPixel(canvas, 41, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 39, 255, 0, 0, 255); + _assertPixel(canvas, 1, 28, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.3.radii.2.dompointinit", function () { + // Verify that when three radii are given to roundRect(), the second radius, specified as a DOMPoint, applies to the top-right and bottom-left corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, { x: 40, y: 20 }, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-right corner + _assertPixel(canvas, 79, 1, 255, 0, 0, 255); + _assertPixel(canvas, 58, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 10, 255, 0, 0, 255); + _assertPixel(canvas, 98, 21, 0, 255, 0, 255); + + // bottom-left corner + _assertPixel(canvas, 20, 48, 255, 0, 0, 255); + _assertPixel(canvas, 41, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 39, 255, 0, 0, 255); + _assertPixel(canvas, 1, 28, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.3.radii.3.double", function () { + // Verify that when three radii are given to roundRect(), the third radius, specified as a double, applies to the bottom-right corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, 20]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 255, 0, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.3.radii.3.dompoint", function () { + // Verify that when three radii are given to roundRect(), the third radius, specified as a DOMPoint, applies to the bottom-right corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, new DOMPoint(40, 20)]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // bottom-right corner + _assertPixel(canvas, 79, 48, 255, 0, 0, 255); + _assertPixel(canvas, 58, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 39, 255, 0, 0, 255); + _assertPixel(canvas, 98, 28, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.3.radii.3.dompointinit", function () { + // Verify that when three radii are given to roundRect(), the third radius, specified as a DOMPointInit, applies to the bottom-right corner. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, { x: 40, y: 20 }]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // bottom-right corner + _assertPixel(canvas, 79, 48, 255, 0, 0, 255); + _assertPixel(canvas, 58, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 39, 255, 0, 0, 255); + _assertPixel(canvas, 98, 28, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.2.radii.1.double", function () { + // Verify that when two radii are given to roundRect(), the first radius, specified as a double, applies to the top-left and bottom-right corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [20, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 1, 1, 255, 0, 0, 255); + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 255, 0, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.2.radii.1.dompoint", function () { + // Verify that when two radii are given to roundRect(), the first radius, specified as a DOMPoint, applies to the top-left and bottom-right corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20), 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-left corner + _assertPixel(canvas, 20, 1, 255, 0, 0, 255); + _assertPixel(canvas, 41, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 10, 255, 0, 0, 255); + _assertPixel(canvas, 1, 21, 0, 255, 0, 255); + + // bottom-right corner + _assertPixel(canvas, 79, 48, 255, 0, 0, 255); + _assertPixel(canvas, 58, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 39, 255, 0, 0, 255); + _assertPixel(canvas, 98, 28, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.2.radii.1.dompointinit", function () { + // Verify that when two radii are given to roundRect(), the first radius, specified as a DOMPointInit, applies to the top-left and bottom-right corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [{ x: 40, y: 20 }, 0]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-left corner + _assertPixel(canvas, 20, 1, 255, 0, 0, 255); + _assertPixel(canvas, 41, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 10, 255, 0, 0, 255); + _assertPixel(canvas, 1, 21, 0, 255, 0, 255); + + // bottom-right corner + _assertPixel(canvas, 79, 48, 255, 0, 0, 255); + _assertPixel(canvas, 58, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 39, 255, 0, 0, 255); + _assertPixel(canvas, 98, 28, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 98, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.2.radii.2.double", function () { + // Verify that when two radii are given to roundRect(), the second radius, specified as a double, applies to the top-right and bottom-left corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 20]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 1, 255, 0, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 48, 255, 0, 0, 255); + }); + + it("2d.path.roundrect.2.radii.2.dompoint", function () { + // Verify that when two radii are given to roundRect(), the second radius, specified as a DOMPoint, applies to the top-right and bottom-left corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, new DOMPoint(40, 20)]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-right corner + _assertPixel(canvas, 79, 1, 255, 0, 0, 255); + _assertPixel(canvas, 58, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 10, 255, 0, 0, 255); + _assertPixel(canvas, 98, 21, 0, 255, 0, 255); + + // bottom-left corner + _assertPixel(canvas, 20, 48, 255, 0, 0, 255); + _assertPixel(canvas, 41, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 39, 255, 0, 0, 255); + _assertPixel(canvas, 1, 28, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.2.radii.2.dompointinit", function () { + // Verify that when two radii are given to roundRect(), the second radius, specified as a DOMPointInit, applies to the top-right and bottom-left corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, { x: 40, y: 20 }]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-right corner + _assertPixel(canvas, 79, 1, 255, 0, 0, 255); + _assertPixel(canvas, 58, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 10, 255, 0, 0, 255); + _assertPixel(canvas, 98, 21, 0, 255, 0, 255); + + // bottom-left corner + _assertPixel(canvas, 20, 48, 255, 0, 0, 255); + _assertPixel(canvas, 41, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 39, 255, 0, 0, 255); + _assertPixel(canvas, 1, 28, 0, 255, 0, 255); + + // other corners + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.1.radius.double", function () { + // Verify that when one radius is given to roundRect(), specified as a double, it applies to all corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [20]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 1, 1, 255, 0, 0, 255); + _assertPixel(canvas, 98, 1, 255, 0, 0, 255); + _assertPixel(canvas, 98, 48, 255, 0, 0, 255); + _assertPixel(canvas, 1, 48, 255, 0, 0, 255); + }); + + it("2d.path.roundrect.1.radius.double.single.argument", function () { + // Verify that when one radius is given to roundRect() as a non-array argument, specified as a double, it applies to all corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, 20); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 1, 1, 255, 0, 0, 255); + _assertPixel(canvas, 98, 1, 255, 0, 0, 255); + _assertPixel(canvas, 98, 48, 255, 0, 0, 255); + _assertPixel(canvas, 1, 48, 255, 0, 0, 255); + }); + + it("2d.path.roundrect.1.radius.dompoint", function () { + // Verify that when one radius is given to roundRect(), specified as a DOMPoint, it applies to all corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20)]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-left corner + _assertPixel(canvas, 20, 1, 255, 0, 0, 255); + _assertPixel(canvas, 41, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 10, 255, 0, 0, 255); + _assertPixel(canvas, 1, 21, 0, 255, 0, 255); + + // top-right corner + _assertPixel(canvas, 79, 1, 255, 0, 0, 255); + _assertPixel(canvas, 58, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 10, 255, 0, 0, 255); + _assertPixel(canvas, 98, 21, 0, 255, 0, 255); + + // bottom-right corner + _assertPixel(canvas, 79, 48, 255, 0, 0, 255); + _assertPixel(canvas, 58, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 39, 255, 0, 0, 255); + _assertPixel(canvas, 98, 28, 0, 255, 0, 255); + + // bottom-left corner + _assertPixel(canvas, 20, 48, 255, 0, 0, 255); + _assertPixel(canvas, 41, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 39, 255, 0, 0, 255); + _assertPixel(canvas, 1, 28, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.1.radius.dompoint.single argument", function () { + // Verify that when one radius is given to roundRect() as a non-array argument, specified as a DOMPoint, it applies to all corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, new DOMPoint(40, 20)); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-left corner + _assertPixel(canvas, 20, 1, 255, 0, 0, 255); + _assertPixel(canvas, 41, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 10, 255, 0, 0, 255); + _assertPixel(canvas, 1, 21, 0, 255, 0, 255); + + // top-right corner + _assertPixel(canvas, 79, 1, 255, 0, 0, 255); + _assertPixel(canvas, 58, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 10, 255, 0, 0, 255); + _assertPixel(canvas, 98, 21, 0, 255, 0, 255); + + // bottom-right corner + _assertPixel(canvas, 79, 48, 255, 0, 0, 255); + _assertPixel(canvas, 58, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 39, 255, 0, 0, 255); + _assertPixel(canvas, 98, 28, 0, 255, 0, 255); + + // bottom-left corner + _assertPixel(canvas, 20, 48, 255, 0, 0, 255); + _assertPixel(canvas, 41, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 39, 255, 0, 0, 255); + _assertPixel(canvas, 1, 28, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.1.radius.dompointinit", function () { + // Verify that when one radius is given to roundRect(), specified as a DOMPointInit, applies to all corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [{ x: 40, y: 20 }]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-left corner + _assertPixel(canvas, 20, 1, 255, 0, 0, 255); + _assertPixel(canvas, 41, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 10, 255, 0, 0, 255); + _assertPixel(canvas, 1, 21, 0, 255, 0, 255); + + // top-right corner + _assertPixel(canvas, 79, 1, 255, 0, 0, 255); + _assertPixel(canvas, 58, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 10, 255, 0, 0, 255); + _assertPixel(canvas, 98, 21, 0, 255, 0, 255); + + // bottom-right corner + _assertPixel(canvas, 79, 48, 255, 0, 0, 255); + _assertPixel(canvas, 58, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 39, 255, 0, 0, 255); + _assertPixel(canvas, 98, 28, 0, 255, 0, 255); + + // bottom-left corner + _assertPixel(canvas, 20, 48, 255, 0, 0, 255); + _assertPixel(canvas, 41, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 39, 255, 0, 0, 255); + _assertPixel(canvas, 1, 28, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.1.radius.dompointinit.single.argument", function () { + // Verify that when one radius is given to roundRect() as a non-array argument, specified as a DOMPointInit, applies to all corners. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, { x: 40, y: 20 }); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + // top-left corner + _assertPixel(canvas, 20, 1, 255, 0, 0, 255); + _assertPixel(canvas, 41, 1, 0, 255, 0, 255); + _assertPixel(canvas, 1, 10, 255, 0, 0, 255); + _assertPixel(canvas, 1, 21, 0, 255, 0, 255); + + // top-right corner + _assertPixel(canvas, 79, 1, 255, 0, 0, 255); + _assertPixel(canvas, 58, 1, 0, 255, 0, 255); + _assertPixel(canvas, 98, 10, 255, 0, 0, 255); + _assertPixel(canvas, 98, 21, 0, 255, 0, 255); + + // bottom-right corner + _assertPixel(canvas, 79, 48, 255, 0, 0, 255); + _assertPixel(canvas, 58, 48, 0, 255, 0, 255); + _assertPixel(canvas, 98, 39, 255, 0, 0, 255); + _assertPixel(canvas, 98, 28, 0, 255, 0, 255); + + // bottom-left corner + _assertPixel(canvas, 20, 48, 255, 0, 0, 255); + _assertPixel(canvas, 41, 48, 0, 255, 0, 255); + _assertPixel(canvas, 1, 39, 255, 0, 0, 255); + _assertPixel(canvas, 1, 28, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.radius.intersecting.1", function () { + // Check that roundRects with intersecting corner arcs are rendered correctly. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [40, 40, 40, 40]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 2, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 1, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 48, 0, 255, 0, 255); + _assertPixel(canvas, 97, 25, 0, 255, 0, 255); + _assertPixel(canvas, 1, 1, 255, 0, 0, 255); + _assertPixel(canvas, 98, 1, 255, 0, 0, 255); + _assertPixel(canvas, 1, 48, 255, 0, 0, 255); + _assertPixel(canvas, 98, 48, 255, 0, 0, 255); + }); + + it("2d.path.roundrect.radius.intersecting.2", function () { + // Check that roundRects with intersecting corner arcs are rendered correctly. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [1000, 1000, 1000, 1000]); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 2, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 1, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 48, 0, 255, 0, 255); + _assertPixel(canvas, 97, 25, 0, 255, 0, 255); + _assertPixel(canvas, 1, 1, 255, 0, 0, 255); + _assertPixel(canvas, 98, 1, 255, 0, 0, 255); + _assertPixel(canvas, 1, 48, 255, 0, 0, 255); + _assertPixel(canvas, 98, 48, 255, 0, 0, 255); + }); + + it("2d.path.roundrect.radius.none", function () { + // Check that roundRect throws an RangeError if radii is an empty array. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert_throws_js(RangeError, () => { + ctx.roundRect(0, 0, 100, 50, []); + }); + }); + + it("2d.path.roundrect.radius.noargument", function () { + // Check that roundRect draws a rectangle when no radii are provided. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(10, 10, 80, 30); + ctx.fillStyle = "#0f0"; + ctx.fill(); + // upper left corner (10, 10) + _assertPixel(canvas, 10, 9, 255, 0, 0, 255); + _assertPixel(canvas, 9, 10, 255, 0, 0, 255); + _assertPixel(canvas, 10, 10, 0, 255, 0, 255); + + // upper right corner (89, 10) + _assertPixel(canvas, 90, 10, 255, 0, 0, 255); + _assertPixel(canvas, 89, 9, 255, 0, 0, 255); + _assertPixel(canvas, 89, 10, 0, 255, 0, 255); + + // lower right corner (89, 39) + _assertPixel(canvas, 89, 40, 255, 0, 0, 255); + _assertPixel(canvas, 90, 39, 255, 0, 0, 255); + _assertPixel(canvas, 89, 39, 0, 255, 0, 255); + + // lower left corner (10, 30) + _assertPixel(canvas, 9, 39, 255, 0, 0, 255); + _assertPixel(canvas, 10, 40, 255, 0, 0, 255); + _assertPixel(canvas, 10, 39, 0, 255, 0, 255); + }); + + it("2d.path.roundrect.radius.toomany", function () { + // Check that roundRect throws an IndeSizeError if radii has more than four items. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert_throws_js(RangeError, () => { + ctx.roundRect(0, 0, 100, 50, [0, 0, 0, 0, 0]); + }); + }); + + it("2d.path.roundrect.radius.negative", function () { + // roundRect() with negative radius throws an exception + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert_throws_js(RangeError, () => { + ctx.roundRect(0, 0, 0, 0, [-1]); + }); + assert_throws_js(RangeError, () => { + ctx.roundRect(0, 0, 0, 0, [1, -1]); + }); + assert_throws_js(RangeError, () => { + ctx.roundRect(0, 0, 0, 0, [new DOMPoint(-1, 1), 1]); + }); + assert_throws_js(RangeError, () => { + ctx.roundRect(0, 0, 0, 0, [new DOMPoint(1, -1)]); + }); + assert_throws_js(RangeError, () => { + ctx.roundRect(0, 0, 0, 0, [{ x: -1, y: 1 }, 1]); + }); + assert_throws_js(RangeError, () => { + ctx.roundRect(0, 0, 0, 0, [{ x: 1, y: -1 }]); + }); + }); + + it("2d.path.ellipse.basics", function () { + // Verify canvas throws error when drawing ellipse with negative radii. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.ellipse(10, 10, 10, 5, 0, 0, 1, false); + ctx.ellipse(10, 10, 10, 0, 0, 0, 1, false); + ctx.ellipse(10, 10, -0, 5, 0, 0, 1, false); + assert.throws(function () { + ctx.ellipse(10, 10, -2, 5, 0, 0, 1, false); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + ctx.ellipse(10, 10, 0, -1.5, 0, 0, 1, false); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + ctx.ellipse(10, 10, -2, -5, 0, 0, 1, false); + }, /INDEX_SIZE_ERR/); + ctx.ellipse( + 80, + 0, + 10, + 4294967277, + Math.PI / -84, + -Math.PI / 2147483436, + false + ); + }); + + it("2d.path.fill.overlap", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#000"; + ctx.fillRect(0, 0, 100, 50); + + ctx.fillStyle = "rgba(0, 255, 0, 0.5)"; + ctx.rect(0, 0, 100, 50); + ctx.closePath(); + ctx.rect(10, 10, 80, 30); + ctx.fill(); + + _assertPixelApprox(canvas, 50, 25, 0, 127, 0, 255, 1); + }); + + it("2d.path.fill.winding.add", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.fillStyle = "#0f0"; + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.lineTo(0, 0); + ctx.lineTo(100, 0); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fill(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.fill.winding.subtract.1", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.fillStyle = "#f00"; + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.lineTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.fill(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.fill.winding.subtract.2", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.fillStyle = "#f00"; + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.moveTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.fill(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.fill.winding.subtract.3", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.fillStyle = "#0f0"; + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.lineTo(-20, -20); + ctx.lineTo(120, -20); + ctx.lineTo(120, 70); + ctx.lineTo(-20, 70); + ctx.lineTo(-20, -20); + ctx.lineTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.fill(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.fill.closed.basic", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.fillStyle = "#0f0"; + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fill(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.fill.closed.unaffected", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#00f"; + ctx.fillRect(0, 0, 100, 50); + + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.lineTo(100, 50); + ctx.fillStyle = "#f00"; + ctx.fill(); + ctx.lineTo(0, 50); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + _assertPixel(canvas, 90, 10, 0, 255, 0, 255); + _assertPixel(canvas, 10, 40, 0, 255, 0, 255); + }); + + it("2d.path.stroke.overlap", function () { + // Stroked subpaths are combined before being drawn + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#000"; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = "rgba(0, 255, 0, 0.5)"; + ctx.lineWidth = 50; + ctx.moveTo(0, 20); + ctx.lineTo(100, 20); + ctx.moveTo(0, 30); + ctx.lineTo(100, 30); + ctx.stroke(); + + _assertPixelApprox(canvas, 50, 25, 0, 127, 0, 255, 1); + }); + + it("2d.path.stroke.union", function () { + // Strokes in opposite directions are unioned, not subtracted + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = "#0f0"; + ctx.lineWidth = 40; + ctx.moveTo(0, 10); + ctx.lineTo(100, 10); + ctx.moveTo(100, 40); + ctx.lineTo(0, 40); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.stroke.unaffected", function () { + // Stroking does not start a new path or subpath + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-100, -100); + ctx.lineTo(200, -100); + ctx.lineTo(200, 25); + ctx.strokeStyle = "#f00"; + ctx.stroke(); + + ctx.closePath(); + ctx.strokeStyle = "#0f0"; + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.stroke.scale1", function () { + // Stroke line widths are scaled by the current transformation matrix + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.beginPath(); + ctx.rect(25, 12.5, 50, 25); + ctx.save(); + ctx.scale(50, 25); + ctx.strokeStyle = "#0f0"; + ctx.stroke(); + ctx.restore(); + + ctx.beginPath(); + ctx.rect(-25, -12.5, 150, 75); + ctx.save(); + ctx.scale(50, 25); + ctx.strokeStyle = "#f00"; + ctx.stroke(); + ctx.restore(); + + _assertPixel(canvas, 0, 0, 0, 255, 0, 255); + _assertPixel(canvas, 50, 0, 0, 255, 0, 255); + _assertPixel(canvas, 99, 0, 0, 255, 0, 255); + _assertPixel(canvas, 0, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 99, 25, 0, 255, 0, 255); + _assertPixel(canvas, 0, 49, 0, 255, 0, 255); + _assertPixel(canvas, 50, 49, 0, 255, 0, 255); + _assertPixel(canvas, 99, 49, 0, 255, 0, 255); + }); + + it("2d.path.stroke.scale2", function () { + // Stroke line widths are scaled by the current transformation matrix + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.beginPath(); + ctx.rect(25, 12.5, 50, 25); + ctx.save(); + ctx.rotate(Math.PI / 2); + ctx.scale(25, 50); + ctx.strokeStyle = "#0f0"; + ctx.stroke(); + ctx.restore(); + + ctx.beginPath(); + ctx.rect(-25, -12.5, 150, 75); + ctx.save(); + ctx.rotate(Math.PI / 2); + ctx.scale(25, 50); + ctx.strokeStyle = "#f00"; + ctx.stroke(); + ctx.restore(); + + _assertPixel(canvas, 0, 0, 0, 255, 0, 255); + _assertPixel(canvas, 50, 0, 0, 255, 0, 255); + _assertPixel(canvas, 99, 0, 0, 255, 0, 255); + _assertPixel(canvas, 0, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 99, 25, 0, 255, 0, 255); + _assertPixel(canvas, 0, 49, 0, 255, 0, 255); + _assertPixel(canvas, 50, 49, 0, 255, 0, 255); + _assertPixel(canvas, 99, 49, 0, 255, 0, 255); + }); + + it("2d.path.stroke.skew", function () { + // Strokes lines are skewed by the current transformation matrix + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.save(); + ctx.beginPath(); + ctx.moveTo(49, -50); + ctx.lineTo(201, -50); + ctx.rotate(Math.PI / 4); + ctx.scale(1, 283); + ctx.strokeStyle = "#0f0"; + ctx.stroke(); + ctx.restore(); + + ctx.save(); + ctx.beginPath(); + ctx.translate(-150, 0); + ctx.moveTo(49, -50); + ctx.lineTo(199, -50); + ctx.rotate(Math.PI / 4); + ctx.scale(1, 142); + ctx.strokeStyle = "#f00"; + ctx.stroke(); + ctx.restore(); + + ctx.save(); + ctx.beginPath(); + ctx.translate(-150, 0); + ctx.moveTo(49, -50); + ctx.lineTo(199, -50); + ctx.rotate(Math.PI / 4); + ctx.scale(1, 142); + ctx.strokeStyle = "#f00"; + ctx.stroke(); + ctx.restore(); + + _assertPixel(canvas, 0, 0, 0, 255, 0, 255); + _assertPixel(canvas, 50, 0, 0, 255, 0, 255); + _assertPixel(canvas, 99, 0, 0, 255, 0, 255); + _assertPixel(canvas, 0, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 99, 25, 0, 255, 0, 255); + _assertPixel(canvas, 0, 49, 0, 255, 0, 255); + _assertPixel(canvas, 50, 49, 0, 255, 0, 255); + _assertPixel(canvas, 99, 49, 0, 255, 0, 255); + }); + + it("2d.path.stroke.empty", function () { + // Empty subpaths are not stroked + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 100; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + + ctx.beginPath(); + ctx.moveTo(40, 25); + ctx.moveTo(60, 25); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.stroke.prune.line", function () { + // Zero-length line segments from lineTo are removed before stroking + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 100; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.lineTo(50, 25); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.stroke.prune.closed", function () { + // Zero-length line segments from closed paths are removed before stroking + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 100; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.lineTo(50, 25); + ctx.closePath(); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.stroke.prune.curve", function () { + // Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before stroking + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 100; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.quadraticCurveTo(50, 25, 50, 25); + ctx.stroke(); + + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.bezierCurveTo(50, 25, 50, 25, 50, 25); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.stroke.prune.arc", function () { + // Zero-length line segments from arcTo and arc are removed before stroking + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 100; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.arcTo(50, 25, 150, 25, 10); + ctx.stroke(); + + ctx.beginPath(); + ctx.moveTo(60, 25); + ctx.arc(50, 25, 10, 0, 0, false); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.stroke.prune.rect", function () { + // Zero-length line segments from rect and strokeRect are removed before stroking + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 100; + ctx.lineCap = "round"; + ctx.lineJoin = "round"; + + ctx.beginPath(); + ctx.rect(50, 25, 0, 0); + ctx.stroke(); + + ctx.strokeRect(50, 25, 0, 0); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.stroke.prune.corner", function () { + // Zero-length line segments are removed before stroking with miters + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 400; + ctx.lineJoin = "miter"; + ctx.miterLimit = 1.4; + + ctx.beginPath(); + ctx.moveTo(-1000, 200); + ctx.lineTo(-100, 200); + ctx.lineTo(-100, 200); + ctx.lineTo(-100, 200); + ctx.lineTo(-100, 1000); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.transformation.basic", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.translate(-100, 0); + ctx.rect(100, 0, 100, 50); + ctx.translate(0, -100); + ctx.fillStyle = "#0f0"; + ctx.fill(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.transformation.multiple", function () { + // Transformations are applied while building paths, not when drawing + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.fillStyle = "#f00"; + ctx.translate(-100, 0); + ctx.rect(0, 0, 100, 50); + ctx.fill(); + ctx.translate(100, 0); + ctx.fill(); + + ctx.beginPath(); + ctx.strokeStyle = "#f00"; + ctx.lineWidth = 50; + ctx.translate(0, -50); + ctx.moveTo(0, 25); + ctx.lineTo(100, 25); + ctx.stroke(); + ctx.translate(0, 50); + ctx.stroke(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.transformation.changing", function () { + // Transformations are applied while building paths, not when drawing + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.moveTo(0, 0); + ctx.translate(100, 0); + ctx.lineTo(0, 0); + ctx.translate(0, 50); + ctx.lineTo(0, 0); + ctx.translate(-100, 0); + ctx.lineTo(0, 0); + ctx.translate(1000, 1000); + ctx.rotate(Math.PI / 2); + ctx.scale(0.1, 0.1); + ctx.fill(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.clip.empty", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.beginPath(); + ctx.clip(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.clip.basic.1", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.beginPath(); + ctx.rect(0, 0, 100, 50); + ctx.clip(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.clip.basic.2", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.beginPath(); + ctx.rect(-100, 0, 100, 50); + ctx.clip(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.clip.intersect", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.beginPath(); + ctx.rect(0, 0, 50, 50); + ctx.clip(); + ctx.beginPath(); + ctx.rect(50, 0, 50, 50); + ctx.clip(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.clip.winding.1", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.beginPath(); + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.lineTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.clip(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.clip.winding.2", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.beginPath(); + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.clip(); + + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.lineTo(0, 0); + ctx.clip(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.clip.unaffected", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.fillStyle = "#0f0"; + + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.clip(); + + ctx.lineTo(0, 0); + ctx.fill(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.path.isPointInPath.basic.1", function () { + // isPointInPath() detects whether the point is inside the path + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.rect(0, 0, 20, 20); + assert.strictEqual( + ctx.isPointInPath(10, 10), + true, + "ctx.isPointInPath(10, 10)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(30, 10), + false, + "ctx.isPointInPath(30, 10)", + "false" + ); + }); + + it("2d.path.isPointInPath.basic.2", function () { + // isPointInPath() detects whether the point is inside the path + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.rect(20, 0, 20, 20); + assert.strictEqual( + ctx.isPointInPath(10, 10), + false, + "ctx.isPointInPath(10, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(30, 10), + true, + "ctx.isPointInPath(30, 10)", + "true" + ); + }); + + it("2d.path.isPointInPath.edge", function () { + // isPointInPath() counts points on the path as being inside + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.rect(0, 0, 20, 20); + assert.strictEqual( + ctx.isPointInPath(0, 0), + true, + "ctx.isPointInPath(0, 0)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(10, 0), + true, + "ctx.isPointInPath(10, 0)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(20, 0), + true, + "ctx.isPointInPath(20, 0)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(20, 10), + true, + "ctx.isPointInPath(20, 10)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(20, 20), + true, + "ctx.isPointInPath(20, 20)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(10, 20), + true, + "ctx.isPointInPath(10, 20)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(0, 20), + true, + "ctx.isPointInPath(0, 20)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(0, 10), + true, + "ctx.isPointInPath(0, 10)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(10, -0.01), + false, + "ctx.isPointInPath(10, -0.01)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(10, 20.01), + false, + "ctx.isPointInPath(10, 20.01)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(-0.01, 10), + false, + "ctx.isPointInPath(-0.01, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(20.01, 10), + false, + "ctx.isPointInPath(20.01, 10)", + "false" + ); + }); + + it("2d.path.isPointInPath.empty", function () { + // isPointInPath() works when there is no path + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + ctx.isPointInPath(0, 0), + false, + "ctx.isPointInPath(0, 0)", + "false" + ); + }); + + it("2d.path.isPointInPath.subpath", function () { + // isPointInPath() uses the current path, not just the subpath + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.rect(0, 0, 20, 20); + ctx.beginPath(); + ctx.rect(20, 0, 20, 20); + ctx.closePath(); + ctx.rect(40, 0, 20, 20); + assert.strictEqual( + ctx.isPointInPath(10, 10), + false, + "ctx.isPointInPath(10, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(30, 10), + true, + "ctx.isPointInPath(30, 10)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(50, 10), + true, + "ctx.isPointInPath(50, 10)", + "true" + ); + }); + + it("2d.path.isPointInPath.outside", function () { + // isPointInPath() works on paths outside the canvas + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.rect(0, -100, 20, 20); + ctx.rect(20, -10, 20, 20); + assert.strictEqual( + ctx.isPointInPath(10, -110), + false, + "ctx.isPointInPath(10, -110)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(10, -90), + true, + "ctx.isPointInPath(10, -90)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(10, -70), + false, + "ctx.isPointInPath(10, -70)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(30, -20), + false, + "ctx.isPointInPath(30, -20)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(30, 0), + true, + "ctx.isPointInPath(30, 0)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(30, 20), + false, + "ctx.isPointInPath(30, 20)", + "false" + ); + }); + + it("2d.path.isPointInPath.unclosed", function () { + // isPointInPath() works on unclosed subpaths + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.moveTo(0, 0); + ctx.lineTo(20, 0); + ctx.lineTo(20, 20); + ctx.lineTo(0, 20); + assert.strictEqual( + ctx.isPointInPath(10, 10), + true, + "ctx.isPointInPath(10, 10)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(30, 10), + false, + "ctx.isPointInPath(30, 10)", + "false" + ); + }); + + it("2d.path.isPointInPath.arc", function () { + // isPointInPath() works on arcs + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.arc(50, 25, 10, 0, Math.PI, false); + assert.strictEqual( + ctx.isPointInPath(50, 10), + false, + "ctx.isPointInPath(50, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(50, 20), + false, + "ctx.isPointInPath(50, 20)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(50, 30), + true, + "ctx.isPointInPath(50, 30)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(50, 40), + false, + "ctx.isPointInPath(50, 40)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(30, 20), + false, + "ctx.isPointInPath(30, 20)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(70, 20), + false, + "ctx.isPointInPath(70, 20)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(30, 30), + false, + "ctx.isPointInPath(30, 30)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(70, 30), + false, + "ctx.isPointInPath(70, 30)", + "false" + ); + }); + + it("2d.path.isPointInPath.bigarc", function () { + // isPointInPath() works on unclosed arcs larger than 2pi + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.arc(50, 25, 10, 0, 7, false); + assert.strictEqual( + ctx.isPointInPath(50, 10), + false, + "ctx.isPointInPath(50, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(50, 20), + true, + "ctx.isPointInPath(50, 20)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(50, 30), + true, + "ctx.isPointInPath(50, 30)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(50, 40), + false, + "ctx.isPointInPath(50, 40)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(30, 20), + false, + "ctx.isPointInPath(30, 20)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(70, 20), + false, + "ctx.isPointInPath(70, 20)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(30, 30), + false, + "ctx.isPointInPath(30, 30)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(70, 30), + false, + "ctx.isPointInPath(70, 30)", + "false" + ); + }); + + it("2d.path.isPointInPath.bezier", function () { + // isPointInPath() works on Bezier curves + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.moveTo(25, 25); + ctx.bezierCurveTo(50, -50, 50, 100, 75, 25); + assert.strictEqual( + ctx.isPointInPath(25, 20), + false, + "ctx.isPointInPath(25, 20)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(25, 30), + false, + "ctx.isPointInPath(25, 30)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(30, 20), + true, + "ctx.isPointInPath(30, 20)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(30, 30), + false, + "ctx.isPointInPath(30, 30)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(40, 2), + false, + "ctx.isPointInPath(40, 2)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(40, 20), + true, + "ctx.isPointInPath(40, 20)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(40, 30), + false, + "ctx.isPointInPath(40, 30)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(40, 47), + false, + "ctx.isPointInPath(40, 47)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(45, 20), + true, + "ctx.isPointInPath(45, 20)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(45, 30), + false, + "ctx.isPointInPath(45, 30)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(55, 20), + false, + "ctx.isPointInPath(55, 20)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(55, 30), + true, + "ctx.isPointInPath(55, 30)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(60, 2), + false, + "ctx.isPointInPath(60, 2)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(60, 20), + false, + "ctx.isPointInPath(60, 20)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(60, 30), + true, + "ctx.isPointInPath(60, 30)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(60, 47), + false, + "ctx.isPointInPath(60, 47)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(70, 20), + false, + "ctx.isPointInPath(70, 20)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(70, 30), + true, + "ctx.isPointInPath(70, 30)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(75, 20), + false, + "ctx.isPointInPath(75, 20)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(75, 30), + false, + "ctx.isPointInPath(75, 30)", + "false" + ); + }); + + it("2d.path.isPointInPath.winding", function () { + // isPointInPath() uses the non-zero winding number rule + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + // Create a square ring, using opposite windings to make a hole in the centre + ctx.moveTo(0, 0); + ctx.lineTo(50, 0); + ctx.lineTo(50, 50); + ctx.lineTo(0, 50); + ctx.lineTo(0, 0); + ctx.lineTo(10, 10); + ctx.lineTo(10, 40); + ctx.lineTo(40, 40); + ctx.lineTo(40, 10); + ctx.lineTo(10, 10); + + assert.strictEqual( + ctx.isPointInPath(5, 5), + true, + "ctx.isPointInPath(5, 5)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(25, 5), + true, + "ctx.isPointInPath(25, 5)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(45, 5), + true, + "ctx.isPointInPath(45, 5)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(5, 25), + true, + "ctx.isPointInPath(5, 25)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(25, 25), + false, + "ctx.isPointInPath(25, 25)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(45, 25), + true, + "ctx.isPointInPath(45, 25)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(5, 45), + true, + "ctx.isPointInPath(5, 45)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(25, 45), + true, + "ctx.isPointInPath(25, 45)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(45, 45), + true, + "ctx.isPointInPath(45, 45)", + "true" + ); + }); + + it("2d.path.isPointInPath.transform.1", function () { + // isPointInPath() handles transformations correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.translate(50, 0); + ctx.rect(0, 0, 20, 20); + assert.strictEqual( + ctx.isPointInPath(-40, 10), + false, + "ctx.isPointInPath(-40, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(10, 10), + false, + "ctx.isPointInPath(10, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(49, 10), + false, + "ctx.isPointInPath(49, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(51, 10), + true, + "ctx.isPointInPath(51, 10)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(69, 10), + true, + "ctx.isPointInPath(69, 10)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(71, 10), + false, + "ctx.isPointInPath(71, 10)", + "false" + ); + }); + + it("2d.path.isPointInPath.transform.2", function () { + // isPointInPath() handles transformations correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.rect(50, 0, 20, 20); + ctx.translate(50, 0); + assert.strictEqual( + ctx.isPointInPath(-40, 10), + false, + "ctx.isPointInPath(-40, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(10, 10), + false, + "ctx.isPointInPath(10, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(49, 10), + false, + "ctx.isPointInPath(49, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(51, 10), + true, + "ctx.isPointInPath(51, 10)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(69, 10), + true, + "ctx.isPointInPath(69, 10)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(71, 10), + false, + "ctx.isPointInPath(71, 10)", + "false" + ); + }); + + it("2d.path.isPointInPath.transform.3", function () { + // isPointInPath() handles transformations correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.scale(-1, 1); + ctx.rect(-70, 0, 20, 20); + assert.strictEqual( + ctx.isPointInPath(-40, 10), + false, + "ctx.isPointInPath(-40, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(10, 10), + false, + "ctx.isPointInPath(10, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(49, 10), + false, + "ctx.isPointInPath(49, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(51, 10), + true, + "ctx.isPointInPath(51, 10)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(69, 10), + true, + "ctx.isPointInPath(69, 10)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(71, 10), + false, + "ctx.isPointInPath(71, 10)", + "false" + ); + }); + + it("2d.path.isPointInPath.transform.4", function () { + // isPointInPath() handles transformations correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.translate(50, 0); + ctx.rect(50, 0, 20, 20); + ctx.translate(0, 50); + assert.strictEqual( + ctx.isPointInPath(60, 10), + false, + "ctx.isPointInPath(60, 10)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(110, 10), + true, + "ctx.isPointInPath(110, 10)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(110, 60), + false, + "ctx.isPointInPath(110, 60)", + "false" + ); + }); + + it("2d.path.isPointInPath.nonfinite", function () { + // isPointInPath() returns false for non-finite arguments + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.rect(-100, -50, 200, 100); + assert.strictEqual( + ctx.isPointInPath(Infinity, 0), + false, + "ctx.isPointInPath(Infinity, 0)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(-Infinity, 0), + false, + "ctx.isPointInPath(-Infinity, 0)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(NaN, 0), + false, + "ctx.isPointInPath(NaN, 0)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(0, Infinity), + false, + "ctx.isPointInPath(0, Infinity)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(0, -Infinity), + false, + "ctx.isPointInPath(0, -Infinity)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(0, NaN), + false, + "ctx.isPointInPath(0, NaN)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(NaN, NaN), + false, + "ctx.isPointInPath(NaN, NaN)", + "false" + ); + }); + + it("2d.path.isPointInStroke.scaleddashes", function () { + // isPointInStroke() should return correct results on dashed paths at high scale factors + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var scale = 20; + ctx.setLineDash([10, 21.4159]); // dash from t=0 to t=10 along the circle + ctx.scale(scale, scale); + ctx.ellipse(6, 10, 5, 5, 0, 2 * Math.PI, false); + ctx.stroke(); + + // hit-test the beginning of the dash (t=0) + assert.strictEqual( + ctx.isPointInStroke(11 * scale, 10 * scale), + true, + "ctx.isPointInStroke(11*scale, 10*scale)", + "true" + ); + // hit-test the middle of the dash (t=5) + assert.strictEqual( + ctx.isPointInStroke(8.7 * scale, 14.21 * scale), + true, + "ctx.isPointInStroke(8.70*scale, 14.21*scale)", + "true" + ); + // hit-test the end of the dash (t=9.8) + assert.strictEqual( + ctx.isPointInStroke(4.1 * scale, 14.63 * scale), + true, + "ctx.isPointInStroke(4.10*scale, 14.63*scale)", + "true" + ); + // hit-test past the end of the dash (t=10.2) + assert.strictEqual( + ctx.isPointInStroke(3.74 * scale, 14.46 * scale), + false, + "ctx.isPointInStroke(3.74*scale, 14.46*scale)", + "false" + ); + }); + + it("2d.path.isPointInPath.basic", function () { + // Verify the winding rule in isPointInPath works for for rect path. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + canvas.width = 200; + canvas.height = 200; + + // Testing default isPointInPath + ctx.beginPath(); + ctx.rect(0, 0, 100, 100); + ctx.rect(25, 25, 50, 50); + assert.strictEqual( + ctx.isPointInPath(50, 50), + true, + "ctx.isPointInPath(50, 50)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(NaN, 50), + false, + "ctx.isPointInPath(NaN, 50)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(50, NaN), + false, + "ctx.isPointInPath(50, NaN)", + "false" + ); + + // Testing nonzero isPointInPath + ctx.beginPath(); + ctx.rect(0, 0, 100, 100); + ctx.rect(25, 25, 50, 50); + assert.strictEqual( + ctx.isPointInPath(50, 50, "nonzero"), + true, + "ctx.isPointInPath(50, 50, 'nonzero')", + "true" + ); + + // Testing evenodd isPointInPath + ctx.beginPath(); + ctx.rect(0, 0, 100, 100); + ctx.rect(25, 25, 50, 50); + assert.strictEqual( + ctx.isPointInPath(50, 50, "evenodd"), + false, + "ctx.isPointInPath(50, 50, 'evenodd')", + "false" + ); + + // Testing extremely large scale + ctx.save(); + ctx.scale(Number.MAX_VALUE, Number.MAX_VALUE); + ctx.beginPath(); + ctx.rect(-10, -10, 20, 20); + assert.strictEqual( + ctx.isPointInPath(0, 0, "nonzero"), + true, + "ctx.isPointInPath(0, 0, 'nonzero')", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(0, 0, "evenodd"), + true, + "ctx.isPointInPath(0, 0, 'evenodd')", + "true" + ); + ctx.restore(); + + // Check with non-invertible ctm. + ctx.save(); + ctx.scale(0, 0); + ctx.beginPath(); + ctx.rect(-10, -10, 20, 20); + assert.strictEqual( + ctx.isPointInPath(0, 0, "nonzero"), + false, + "ctx.isPointInPath(0, 0, 'nonzero')", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(0, 0, "evenodd"), + false, + "ctx.isPointInPath(0, 0, 'evenodd')", + "false" + ); + ctx.restore(); + }); + + it("2d.path.isPointInpath.multi.path", function () { + // Verify the winding rule in isPointInPath works for path object. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + canvas.width = 200; + canvas.height = 200; + + // Testing default isPointInPath with Path object'); + path = new Path2D(); + path.rect(0, 0, 100, 100); + path.rect(25, 25, 50, 50); + assert.strictEqual( + ctx.isPointInPath(path, 50, 50), + true, + "ctx.isPointInPath(path, 50, 50)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(path, 50, 50, undefined), + true, + "ctx.isPointInPath(path, 50, 50, undefined)", + "true" + ); + assert.strictEqual( + ctx.isPointInPath(path, NaN, 50), + false, + "ctx.isPointInPath(path, NaN, 50)", + "false" + ); + assert.strictEqual( + ctx.isPointInPath(path, 50, NaN), + false, + "ctx.isPointInPath(path, 50, NaN)", + "false" + ); + + // Testing nonzero isPointInPath with Path object'); + path = new Path2D(); + path.rect(0, 0, 100, 100); + path.rect(25, 25, 50, 50); + assert.strictEqual( + ctx.isPointInPath(path, 50, 50, "nonzero"), + true, + "ctx.isPointInPath(path, 50, 50, 'nonzero')", + "true" + ); + + // Testing evenodd isPointInPath with Path object'); + path = new Path2D(); + path.rect(0, 0, 100, 100); + path.rect(25, 25, 50, 50); + assert_false(ctx.isPointInPath(path, 50, 50, "evenodd")); + }); + + it("2d.path.isPointInpath.invalid", function () { + // Verify isPointInPath throws exceptions with invalid inputs. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + canvas.width = 200; + canvas.height = 200; + path = new Path2D(); + path.rect(0, 0, 100, 100); + path.rect(25, 25, 50, 50); + // Testing invalid enumeration isPointInPath (w/ and w/o Path object'); + assert.throws(function () { + ctx.isPointInPath(path, 50, 50, "gazonk"); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath(50, 50, "gazonk"); + }, TypeError); + + // Testing invalid type isPointInPath with Path object'); + assert.throws(function () { + ctx.isPointInPath(null, 50, 50); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath(null, 50, 50, "nonzero"); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath(null, 50, 50, "evenodd"); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath(null, 50, 50, null); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath(path, 50, 50, null); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath(undefined, 50, 50); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath(undefined, 50, 50, "nonzero"); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath(undefined, 50, 50, "evenodd"); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath(undefined, 50, 50, undefined); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath([], 50, 50); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath([], 50, 50, "nonzero"); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath([], 50, 50, "evenodd"); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath({}, 50, 50); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath({}, 50, 50, "nonzero"); + }, TypeError); + assert.throws(function () { + ctx.isPointInPath({}, 50, 50, "evenodd"); + }, TypeError); + }); }); diff --git a/test/wpt/generated/pixel-manipulation.js b/test/wpt/generated/pixel-manipulation.js index 453572d0c..495bff86d 100644 --- a/test/wpt/generated/pixel-manipulation.js +++ b/test/wpt/generated/pixel-manipulation.js @@ -1,1448 +1,2916 @@ // THIS FILE WAS AUTO-GENERATED. DO NOT EDIT BY HAND. -const assert = require('assert'); -const path = require('path'); +const assert = require("assert"); +const path = require("path"); const { - createCanvas, - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - CanvasPattern, - CanvasGradient -} = require('../../..'); + createCanvas, + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + CanvasPattern, + CanvasGradient, +} = require("../../.."); const window = { - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - Uint8ClampedArray, - CanvasPattern, - CanvasGradient + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + Uint8ClampedArray, + CanvasPattern, + CanvasGradient, }; const document = { - createElement(type, ...args) { - if (type !== "canvas") - throw new Error(`createElement(${type}) not supported`); - return createCanvas(...args); - } + createElement(type, ...args) { + if (type !== "canvas") + throw new Error(`createElement(${type}) not supported`); + return createCanvas(...args); + }, }; function _getPixel(canvas, x, y) { - const ctx = canvas.getContext('2d'); - const imgdata = ctx.getImageData(x, y, 1, 1); - return [ imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3] ]; + const ctx = canvas.getContext("2d"); + const imgdata = ctx.getImageData(x, y, 1, 1); + return [imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3]]; } -function _assertApprox(actual, expected, epsilon=0, msg="") { - assert(typeof actual === "number", "actual should be a number but got a ${typeof type_actual}"); - - // The epsilon math below does not place nice with NaN and Infinity - // But in this case Infinity = Infinity and NaN = NaN - if (isFinite(actual) || isFinite(expected)) { - assert(Math.abs(actual - expected) <= epsilon, - `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}`); - } else { - assert.strictEqual(actual, expected); - } +function _assertApprox(actual, expected, epsilon = 0, msg = "") { + assert( + typeof actual === "number", + "actual should be a number but got a ${typeof type_actual}" + ); + + // The epsilon math below does not place nice with NaN and Infinity + // But in this case Infinity = Infinity and NaN = NaN + if (isFinite(actual) || isFinite(expected)) { + assert( + Math.abs(actual - expected) <= epsilon, + `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}` + ); + } else { + assert.strictEqual(actual, expected); + } } function _assertPixel(canvas, x, y, r, g, b, a, pos, color) { - const c = _getPixel(canvas, x,y); - assert.strictEqual(c[0], r, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[1], g, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[2], b, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[3], a, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + assert.strictEqual( + c[0], + r, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[1], + g, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[2], + b, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[3], + a, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function _assertPixelApprox(canvas, x, y, r, g, b, a, pos, color, tolerance) { - const c = _getPixel(canvas, x,y); - _assertApprox(c[0], r, tolerance, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[1], g, tolerance, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[2], b, tolerance, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[3], a, tolerance, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + _assertApprox( + c[0], + r, + tolerance, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[1], + g, + tolerance, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[2], + b, + tolerance, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[3], + a, + tolerance, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function assert_throws_js(Type, fn) { - assert.throws(fn, Type); + assert.throws(fn, Type); } // Used by font tests to allow fonts to load. function deferTest() {} class Test { - // Two cases of this in the tests, look unnecessary. - done() {} - // Used by font tests to allow fonts to load. - step_func_done(func) { func(); } - // Used for image onload callback. - step_func(func) { func(); } + // Two cases of this in the tests, look unnecessary. + done() {} + // Used by font tests to allow fonts to load. + step_func_done(func) { + func(); + } + // Used for image onload callback. + step_func(func) { + func(); + } } function step_timeout(result, time) { - // Nothing; code needs to be converted for this to work. + // Nothing; code needs to be converted for this to work. } describe("WPT: pixel-manipulation", function () { - - it("2d.imageData.create2.basic", function () { - // createImageData(sw, sh) exists and returns something - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.notStrictEqual(ctx.createImageData(1, 1), null, "ctx.createImageData(1, 1)", "null"); - }); - - it("2d.imageData.create1.basic", function () { - // createImageData(imgdata) exists and returns something - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.notStrictEqual(ctx.createImageData(ctx.createImageData(1, 1)), null, "ctx.createImageData(ctx.createImageData(1, 1))", "null"); - }); - - it("2d.imageData.create2.type", function () { - // createImageData(sw, sh) returns an ImageData object containing a Uint8ClampedArray object - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.notStrictEqual(window.ImageData, undefined, "window.ImageData", "undefined"); - assert.notStrictEqual(window.Uint8ClampedArray, undefined, "window.Uint8ClampedArray", "undefined"); - window.ImageData.prototype.thisImplementsImageData = true; - window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; - var imgdata = ctx.createImageData(1, 1); - assert(imgdata.thisImplementsImageData, "imgdata.thisImplementsImageData"); - assert(imgdata.data.thisImplementsUint8ClampedArray, "imgdata.data.thisImplementsUint8ClampedArray"); - }); - - it("2d.imageData.create1.type", function () { - // createImageData(imgdata) returns an ImageData object containing a Uint8ClampedArray object - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.notStrictEqual(window.ImageData, undefined, "window.ImageData", "undefined"); - assert.notStrictEqual(window.Uint8ClampedArray, undefined, "window.Uint8ClampedArray", "undefined"); - window.ImageData.prototype.thisImplementsImageData = true; - window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; - var imgdata = ctx.createImageData(ctx.createImageData(1, 1)); - assert(imgdata.thisImplementsImageData, "imgdata.thisImplementsImageData"); - assert(imgdata.data.thisImplementsUint8ClampedArray, "imgdata.data.thisImplementsUint8ClampedArray"); - }); - - it("2d.imageData.create2.this", function () { - // createImageData(sw, sh) should throw when called with the wrong |this| - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.throws(function() { CanvasRenderingContext2D.prototype.createImageData.call(null, 1, 1); }, TypeError); - assert.throws(function() { CanvasRenderingContext2D.prototype.createImageData.call(undefined, 1, 1); }, TypeError); - assert.throws(function() { CanvasRenderingContext2D.prototype.createImageData.call({}, 1, 1); }, TypeError); - }); - - it("2d.imageData.create1.this", function () { - // createImageData(imgdata) should throw when called with the wrong |this| - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.createImageData(1, 1); - assert.throws(function() { CanvasRenderingContext2D.prototype.createImageData.call(null, imgdata); }, TypeError); - assert.throws(function() { CanvasRenderingContext2D.prototype.createImageData.call(undefined, imgdata); }, TypeError); - assert.throws(function() { CanvasRenderingContext2D.prototype.createImageData.call({}, imgdata); }, TypeError); - }); - - it("2d.imageData.create2.initial", function () { - // createImageData(sw, sh) returns transparent black data of the right size - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.createImageData(10, 20); - assert.strictEqual(imgdata.data.length, imgdata.width*imgdata.height*4, "imgdata.data.length", "imgdata.width*imgdata.height*4") - assert(imgdata.width < imgdata.height, "imgdata.width < imgdata.height"); - assert(imgdata.width > 0, "imgdata.width > 0"); - var isTransparentBlack = true; - for (var i = 0; i < imgdata.data.length; ++i) - if (imgdata.data[i] !== 0) - isTransparentBlack = false; - assert(isTransparentBlack, "isTransparentBlack"); - }); - - it("2d.imageData.create1.initial", function () { - // createImageData(imgdata) returns transparent black data of the right size - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var imgdata1 = ctx.getImageData(0, 0, 10, 20); - var imgdata2 = ctx.createImageData(imgdata1); - assert.strictEqual(imgdata2.data.length, imgdata1.data.length, "imgdata2.data.length", "imgdata1.data.length") - assert.strictEqual(imgdata2.width, imgdata1.width, "imgdata2.width", "imgdata1.width") - assert.strictEqual(imgdata2.height, imgdata1.height, "imgdata2.height", "imgdata1.height") - var isTransparentBlack = true; - for (var i = 0; i < imgdata2.data.length; ++i) - if (imgdata2.data[i] !== 0) - isTransparentBlack = false; - assert(isTransparentBlack, "isTransparentBlack"); - }); - - it("2d.imageData.create2.large", function () { - // createImageData(sw, sh) works for sizes much larger than the canvas - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.createImageData(1000, 2000); - assert.strictEqual(imgdata.data.length, imgdata.width*imgdata.height*4, "imgdata.data.length", "imgdata.width*imgdata.height*4") - assert(imgdata.width < imgdata.height, "imgdata.width < imgdata.height"); - assert(imgdata.width > 0, "imgdata.width > 0"); - var isTransparentBlack = true; - for (var i = 0; i < imgdata.data.length; i += 7813) // check ~1024 points (assuming normal scaling) - if (imgdata.data[i] !== 0) - isTransparentBlack = false; - assert(isTransparentBlack, "isTransparentBlack"); - }); - - it.skip("2d.imageData.create2.negative", function () { - // createImageData(sw, sh) takes the absolute magnitude of the size arguments - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata1 = ctx.createImageData(10, 20); - var imgdata2 = ctx.createImageData(-10, 20); - var imgdata3 = ctx.createImageData(10, -20); - var imgdata4 = ctx.createImageData(-10, -20); - assert.strictEqual(imgdata1.data.length, imgdata2.data.length, "imgdata1.data.length", "imgdata2.data.length") - assert.strictEqual(imgdata2.data.length, imgdata3.data.length, "imgdata2.data.length", "imgdata3.data.length") - assert.strictEqual(imgdata3.data.length, imgdata4.data.length, "imgdata3.data.length", "imgdata4.data.length") - }); - - it.skip("2d.imageData.create2.zero", function () { - // createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zero - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.throws(function() { ctx.createImageData(10, 0); }, /INDEX_SIZE_ERR/); - assert.throws(function() { ctx.createImageData(0, 10); }, /INDEX_SIZE_ERR/); - assert.throws(function() { ctx.createImageData(0, 0); }, /INDEX_SIZE_ERR/); - assert.throws(function() { ctx.createImageData(0.99, 10); }, /INDEX_SIZE_ERR/); - assert.throws(function() { ctx.createImageData(10, 0.1); }, /INDEX_SIZE_ERR/); - }); - - it.skip("2d.imageData.create2.nonfinite", function () { - // createImageData() throws TypeError if arguments are not finite - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.throws(function() { ctx.createImageData(Infinity, 10); }, TypeError); - assert.throws(function() { ctx.createImageData(-Infinity, 10); }, TypeError); - assert.throws(function() { ctx.createImageData(NaN, 10); }, TypeError); - assert.throws(function() { ctx.createImageData(10, Infinity); }, TypeError); - assert.throws(function() { ctx.createImageData(10, -Infinity); }, TypeError); - assert.throws(function() { ctx.createImageData(10, NaN); }, TypeError); - assert.throws(function() { ctx.createImageData(Infinity, Infinity); }, TypeError); - var posinfobj = { valueOf: function() { return Infinity; } }, - neginfobj = { valueOf: function() { return -Infinity; } }, - nanobj = { valueOf: function() { return -Infinity; } }; - assert.throws(function() { ctx.createImageData(posinfobj, 10); }, TypeError); - assert.throws(function() { ctx.createImageData(neginfobj, 10); }, TypeError); - assert.throws(function() { ctx.createImageData(nanobj, 10); }, TypeError); - assert.throws(function() { ctx.createImageData(10, posinfobj); }, TypeError); - assert.throws(function() { ctx.createImageData(10, neginfobj); }, TypeError); - assert.throws(function() { ctx.createImageData(10, nanobj); }, TypeError); - assert.throws(function() { ctx.createImageData(posinfobj, posinfobj); }, TypeError); - }); - - it.skip("2d.imageData.create1.zero", function () { - // createImageData(null) throws TypeError - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.throws(function() { ctx.createImageData(null); }, TypeError); - }); - - it.skip("2d.imageData.create2.double", function () { - // createImageData(w, h) double is converted to long - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata1 = ctx.createImageData(10.01, 10.99); - var imgdata2 = ctx.createImageData(-10.01, -10.99); - assert.strictEqual(imgdata1.width, 10, "imgdata1.width", "10") - assert.strictEqual(imgdata1.height, 10, "imgdata1.height", "10") - assert.strictEqual(imgdata2.width, 10, "imgdata2.width", "10") - assert.strictEqual(imgdata2.height, 10, "imgdata2.height", "10") - }); - - it("2d.imageData.create.and.resize", function () { - // Verify no crash when resizing an image bitmap to zero. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var image = new Image(); - image.onload = t.step_func(function() { - var options = { resizeHeight: 0 }; - var p1 = createImageBitmap(image, options); - p1.catch(function(error){}); - t.done(); - }); - image.src = 'red.png'; - }); - - it("2d.imageData.get.basic", function () { - // getImageData() exists and returns something - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.notStrictEqual(ctx.getImageData(0, 0, 100, 50), null, "ctx.getImageData(0, 0, 100, 50)", "null"); - }); - - it("2d.imageData.get.type", function () { - // getImageData() returns an ImageData object containing a Uint8ClampedArray object - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.notStrictEqual(window.ImageData, undefined, "window.ImageData", "undefined"); - assert.notStrictEqual(window.Uint8ClampedArray, undefined, "window.Uint8ClampedArray", "undefined"); - window.ImageData.prototype.thisImplementsImageData = true; - window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; - var imgdata = ctx.getImageData(0, 0, 1, 1); - assert(imgdata.thisImplementsImageData, "imgdata.thisImplementsImageData"); - assert(imgdata.data.thisImplementsUint8ClampedArray, "imgdata.data.thisImplementsUint8ClampedArray"); - }); - - it("2d.imageData.get.zero", function () { - // getImageData() throws INDEX_SIZE_ERR if size is zero - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.throws(function() { ctx.getImageData(1, 1, 10, 0); }, /INDEX_SIZE_ERR/); - assert.throws(function() { ctx.getImageData(1, 1, 0, 10); }, /INDEX_SIZE_ERR/); - assert.throws(function() { ctx.getImageData(1, 1, 0, 0); }, /INDEX_SIZE_ERR/); - assert.throws(function() { ctx.getImageData(1, 1, 0.1, 10); }, /INDEX_SIZE_ERR/); - assert.throws(function() { ctx.getImageData(1, 1, 10, 0.99); }, /INDEX_SIZE_ERR/); - assert.throws(function() { ctx.getImageData(1, 1, -0.1, 10); }, /INDEX_SIZE_ERR/); - assert.throws(function() { ctx.getImageData(1, 1, 10, -0.99); }, /INDEX_SIZE_ERR/); - }); - - it("2d.imageData.get.nonfinite", function () { - // getImageData() throws TypeError if arguments are not finite - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.throws(function() { ctx.getImageData(Infinity, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(-Infinity, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(NaN, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, Infinity, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, -Infinity, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, NaN, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, -Infinity, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, NaN, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, 10, -Infinity); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, 10, NaN); }, TypeError); - assert.throws(function() { ctx.getImageData(Infinity, Infinity, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(Infinity, Infinity, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(Infinity, Infinity, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.getImageData(Infinity, Infinity, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.getImageData(Infinity, 10, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(Infinity, 10, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.getImageData(Infinity, 10, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.getImageData(10, Infinity, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, Infinity, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.getImageData(10, Infinity, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, Infinity, Infinity); }, TypeError); - var posinfobj = { valueOf: function() { return Infinity; } }, - neginfobj = { valueOf: function() { return -Infinity; } }, - nanobj = { valueOf: function() { return -Infinity; } }; - assert.throws(function() { ctx.getImageData(posinfobj, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(neginfobj, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(nanobj, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, posinfobj, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, neginfobj, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, nanobj, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, posinfobj, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, neginfobj, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, nanobj, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, 10, posinfobj); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, 10, neginfobj); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, 10, nanobj); }, TypeError); - assert.throws(function() { ctx.getImageData(posinfobj, posinfobj, 10, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(posinfobj, posinfobj, posinfobj, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(posinfobj, posinfobj, posinfobj, posinfobj); }, TypeError); - assert.throws(function() { ctx.getImageData(posinfobj, posinfobj, 10, posinfobj); }, TypeError); - assert.throws(function() { ctx.getImageData(posinfobj, 10, posinfobj, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(posinfobj, 10, posinfobj, posinfobj); }, TypeError); - assert.throws(function() { ctx.getImageData(posinfobj, 10, 10, posinfobj); }, TypeError); - assert.throws(function() { ctx.getImageData(10, posinfobj, posinfobj, 10); }, TypeError); - assert.throws(function() { ctx.getImageData(10, posinfobj, posinfobj, posinfobj); }, TypeError); - assert.throws(function() { ctx.getImageData(10, posinfobj, 10, posinfobj); }, TypeError); - assert.throws(function() { ctx.getImageData(10, 10, posinfobj, posinfobj); }, TypeError); - }); - - it.skip("2d.imageData.get.source.outside", function () { - // getImageData() returns transparent black outside the canvas - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#08f'; - ctx.fillRect(0, 0, 100, 50); - - var imgdata1 = ctx.getImageData(-10, 5, 1, 1); - assert.strictEqual(imgdata1.data[0], 0, "imgdata1.data[\""+(0)+"\"]", "0") - assert.strictEqual(imgdata1.data[1], 0, "imgdata1.data[\""+(1)+"\"]", "0") - assert.strictEqual(imgdata1.data[2], 0, "imgdata1.data[\""+(2)+"\"]", "0") - assert.strictEqual(imgdata1.data[3], 0, "imgdata1.data[\""+(3)+"\"]", "0") - - var imgdata2 = ctx.getImageData(10, -5, 1, 1); - assert.strictEqual(imgdata2.data[0], 0, "imgdata2.data[\""+(0)+"\"]", "0") - assert.strictEqual(imgdata2.data[1], 0, "imgdata2.data[\""+(1)+"\"]", "0") - assert.strictEqual(imgdata2.data[2], 0, "imgdata2.data[\""+(2)+"\"]", "0") - assert.strictEqual(imgdata2.data[3], 0, "imgdata2.data[\""+(3)+"\"]", "0") - - var imgdata3 = ctx.getImageData(200, 5, 1, 1); - assert.strictEqual(imgdata3.data[0], 0, "imgdata3.data[\""+(0)+"\"]", "0") - assert.strictEqual(imgdata3.data[1], 0, "imgdata3.data[\""+(1)+"\"]", "0") - assert.strictEqual(imgdata3.data[2], 0, "imgdata3.data[\""+(2)+"\"]", "0") - assert.strictEqual(imgdata3.data[3], 0, "imgdata3.data[\""+(3)+"\"]", "0") - - var imgdata4 = ctx.getImageData(10, 60, 1, 1); - assert.strictEqual(imgdata4.data[0], 0, "imgdata4.data[\""+(0)+"\"]", "0") - assert.strictEqual(imgdata4.data[1], 0, "imgdata4.data[\""+(1)+"\"]", "0") - assert.strictEqual(imgdata4.data[2], 0, "imgdata4.data[\""+(2)+"\"]", "0") - assert.strictEqual(imgdata4.data[3], 0, "imgdata4.data[\""+(3)+"\"]", "0") - - var imgdata5 = ctx.getImageData(100, 10, 1, 1); - assert.strictEqual(imgdata5.data[0], 0, "imgdata5.data[\""+(0)+"\"]", "0") - assert.strictEqual(imgdata5.data[1], 0, "imgdata5.data[\""+(1)+"\"]", "0") - assert.strictEqual(imgdata5.data[2], 0, "imgdata5.data[\""+(2)+"\"]", "0") - assert.strictEqual(imgdata5.data[3], 0, "imgdata5.data[\""+(3)+"\"]", "0") - - var imgdata6 = ctx.getImageData(0, 10, 1, 1); - assert.strictEqual(imgdata6.data[0], 0, "imgdata6.data[\""+(0)+"\"]", "0") - assert.strictEqual(imgdata6.data[1], 136, "imgdata6.data[\""+(1)+"\"]", "136") - assert.strictEqual(imgdata6.data[2], 255, "imgdata6.data[\""+(2)+"\"]", "255") - assert.strictEqual(imgdata6.data[3], 255, "imgdata6.data[\""+(3)+"\"]", "255") - - var imgdata7 = ctx.getImageData(-10, 10, 20, 20); - assert.strictEqual(imgdata7.data[ 0*4+0], 0, "imgdata7.data[ 0*4+0]", "0") - assert.strictEqual(imgdata7.data[ 0*4+1], 0, "imgdata7.data[ 0*4+1]", "0") - assert.strictEqual(imgdata7.data[ 0*4+2], 0, "imgdata7.data[ 0*4+2]", "0") - assert.strictEqual(imgdata7.data[ 0*4+3], 0, "imgdata7.data[ 0*4+3]", "0") - assert.strictEqual(imgdata7.data[ 9*4+0], 0, "imgdata7.data[ 9*4+0]", "0") - assert.strictEqual(imgdata7.data[ 9*4+1], 0, "imgdata7.data[ 9*4+1]", "0") - assert.strictEqual(imgdata7.data[ 9*4+2], 0, "imgdata7.data[ 9*4+2]", "0") - assert.strictEqual(imgdata7.data[ 9*4+3], 0, "imgdata7.data[ 9*4+3]", "0") - assert.strictEqual(imgdata7.data[10*4+0], 0, "imgdata7.data[10*4+0]", "0") - assert.strictEqual(imgdata7.data[10*4+1], 136, "imgdata7.data[10*4+1]", "136") - assert.strictEqual(imgdata7.data[10*4+2], 255, "imgdata7.data[10*4+2]", "255") - assert.strictEqual(imgdata7.data[10*4+3], 255, "imgdata7.data[10*4+3]", "255") - assert.strictEqual(imgdata7.data[19*4+0], 0, "imgdata7.data[19*4+0]", "0") - assert.strictEqual(imgdata7.data[19*4+1], 136, "imgdata7.data[19*4+1]", "136") - assert.strictEqual(imgdata7.data[19*4+2], 255, "imgdata7.data[19*4+2]", "255") - assert.strictEqual(imgdata7.data[19*4+3], 255, "imgdata7.data[19*4+3]", "255") - assert.strictEqual(imgdata7.data[20*4+0], 0, "imgdata7.data[20*4+0]", "0") - assert.strictEqual(imgdata7.data[20*4+1], 0, "imgdata7.data[20*4+1]", "0") - assert.strictEqual(imgdata7.data[20*4+2], 0, "imgdata7.data[20*4+2]", "0") - assert.strictEqual(imgdata7.data[20*4+3], 0, "imgdata7.data[20*4+3]", "0") - }); - - it.skip("2d.imageData.get.source.negative", function () { - // getImageData() works with negative width and height, and returns top-to-bottom left-to-right - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#fff'; - ctx.fillRect(20, 10, 60, 10); - - var imgdata1 = ctx.getImageData(85, 25, -10, -10); - assert.strictEqual(imgdata1.data[0], 255, "imgdata1.data[\""+(0)+"\"]", "255") - assert.strictEqual(imgdata1.data[1], 255, "imgdata1.data[\""+(1)+"\"]", "255") - assert.strictEqual(imgdata1.data[2], 255, "imgdata1.data[\""+(2)+"\"]", "255") - assert.strictEqual(imgdata1.data[3], 255, "imgdata1.data[\""+(3)+"\"]", "255") - assert.strictEqual(imgdata1.data[imgdata1.data.length-4+0], 0, "imgdata1.data[imgdata1.data.length-4+0]", "0") - assert.strictEqual(imgdata1.data[imgdata1.data.length-4+1], 0, "imgdata1.data[imgdata1.data.length-4+1]", "0") - assert.strictEqual(imgdata1.data[imgdata1.data.length-4+2], 0, "imgdata1.data[imgdata1.data.length-4+2]", "0") - assert.strictEqual(imgdata1.data[imgdata1.data.length-4+3], 255, "imgdata1.data[imgdata1.data.length-4+3]", "255") - - var imgdata2 = ctx.getImageData(0, 0, -1, -1); - assert.strictEqual(imgdata2.data[0], 0, "imgdata2.data[\""+(0)+"\"]", "0") - assert.strictEqual(imgdata2.data[1], 0, "imgdata2.data[\""+(1)+"\"]", "0") - assert.strictEqual(imgdata2.data[2], 0, "imgdata2.data[\""+(2)+"\"]", "0") - assert.strictEqual(imgdata2.data[3], 0, "imgdata2.data[\""+(3)+"\"]", "0") - }); - - it("2d.imageData.get.source.size", function () { - // getImageData() returns bigger ImageData for bigger source rectangle - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata1 = ctx.getImageData(0, 0, 10, 10); - var imgdata2 = ctx.getImageData(0, 0, 20, 20); - assert(imgdata2.width > imgdata1.width, "imgdata2.width > imgdata1.width"); - assert(imgdata2.height > imgdata1.height, "imgdata2.height > imgdata1.height"); - }); - - it.skip("2d.imageData.get.double", function () { - // createImageData(w, h) double is converted to long - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata1 = ctx.getImageData(0, 0, 10.01, 10.99); - var imgdata2 = ctx.getImageData(0, 0, -10.01, -10.99); - assert.strictEqual(imgdata1.width, 10, "imgdata1.width", "10") - assert.strictEqual(imgdata1.height, 10, "imgdata1.height", "10") - assert.strictEqual(imgdata2.width, 10, "imgdata2.width", "10") - assert.strictEqual(imgdata2.height, 10, "imgdata2.height", "10") - }); - - it("2d.imageData.get.nonpremul", function () { - // getImageData() returns non-premultiplied colors - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = 'rgba(255, 255, 255, 0.5)'; - ctx.fillRect(0, 0, 100, 50); - var imgdata = ctx.getImageData(10, 10, 10, 10); - assert(imgdata.data[0] > 200, "imgdata.data[\""+(0)+"\"] > 200"); - assert(imgdata.data[1] > 200, "imgdata.data[\""+(1)+"\"] > 200"); - assert(imgdata.data[2] > 200, "imgdata.data[\""+(2)+"\"] > 200"); - assert(imgdata.data[3] > 100, "imgdata.data[\""+(3)+"\"] > 100"); - assert(imgdata.data[3] < 200, "imgdata.data[\""+(3)+"\"] < 200"); - }); - - it("2d.imageData.get.range", function () { - // getImageData() returns values in the range [0, 255] - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#fff'; - ctx.fillRect(20, 10, 60, 10); - var imgdata1 = ctx.getImageData(10, 5, 1, 1); - assert.strictEqual(imgdata1.data[0], 0, "imgdata1.data[\""+(0)+"\"]", "0") - var imgdata2 = ctx.getImageData(30, 15, 1, 1); - assert.strictEqual(imgdata2.data[0], 255, "imgdata2.data[\""+(0)+"\"]", "255") - }); - - it("2d.imageData.get.clamp", function () { - // getImageData() clamps colors to the range [0, 255] - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = 'rgb(-100, -200, -300)'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = 'rgb(256, 300, 400)'; - ctx.fillRect(20, 10, 60, 10); - var imgdata1 = ctx.getImageData(10, 5, 1, 1); - assert.strictEqual(imgdata1.data[0], 0, "imgdata1.data[\""+(0)+"\"]", "0") - assert.strictEqual(imgdata1.data[1], 0, "imgdata1.data[\""+(1)+"\"]", "0") - assert.strictEqual(imgdata1.data[2], 0, "imgdata1.data[\""+(2)+"\"]", "0") - var imgdata2 = ctx.getImageData(30, 15, 1, 1); - assert.strictEqual(imgdata2.data[0], 255, "imgdata2.data[\""+(0)+"\"]", "255") - assert.strictEqual(imgdata2.data[1], 255, "imgdata2.data[\""+(1)+"\"]", "255") - assert.strictEqual(imgdata2.data[2], 255, "imgdata2.data[\""+(2)+"\"]", "255") - }); - - it("2d.imageData.get.length", function () { - // getImageData() returns a correctly-sized Uint8ClampedArray - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.getImageData(0, 0, 10, 10); - assert.strictEqual(imgdata.data.length, imgdata.width*imgdata.height*4, "imgdata.data.length", "imgdata.width*imgdata.height*4") - }); - - it("2d.imageData.get.order.cols", function () { - // getImageData() returns leftmost columns first - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#fff'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 2, 50); - var imgdata = ctx.getImageData(0, 0, 10, 10); - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - assert.strictEqual(imgdata.data[Math.round(imgdata.width/2*4)], 255, "imgdata.data[Math.round(imgdata.width/2*4)]", "255") - assert.strictEqual(imgdata.data[Math.round((imgdata.height/2)*imgdata.width*4)], 0, "imgdata.data[Math.round((imgdata.height/2)*imgdata.width*4)]", "0") - }); - - it("2d.imageData.get.order.rows", function () { - // getImageData() returns topmost rows first - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#fff'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 2); - var imgdata = ctx.getImageData(0, 0, 10, 10); - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - assert.strictEqual(imgdata.data[Math.floor(imgdata.width/2*4)], 0, "imgdata.data[Math.floor(imgdata.width/2*4)]", "0") - assert.strictEqual(imgdata.data[(imgdata.height/2)*imgdata.width*4], 255, "imgdata.data[(imgdata.height/2)*imgdata.width*4]", "255") - }); - - it("2d.imageData.get.order.rgb", function () { - // getImageData() returns R then G then B - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#48c'; - ctx.fillRect(0, 0, 100, 50); - var imgdata = ctx.getImageData(0, 0, 10, 10); - assert.strictEqual(imgdata.data[0], 0x44, "imgdata.data[\""+(0)+"\"]", "0x44") - assert.strictEqual(imgdata.data[1], 0x88, "imgdata.data[\""+(1)+"\"]", "0x88") - assert.strictEqual(imgdata.data[2], 0xCC, "imgdata.data[\""+(2)+"\"]", "0xCC") - assert.strictEqual(imgdata.data[3], 255, "imgdata.data[\""+(3)+"\"]", "255") - assert.strictEqual(imgdata.data[4], 0x44, "imgdata.data[\""+(4)+"\"]", "0x44") - assert.strictEqual(imgdata.data[5], 0x88, "imgdata.data[\""+(5)+"\"]", "0x88") - assert.strictEqual(imgdata.data[6], 0xCC, "imgdata.data[\""+(6)+"\"]", "0xCC") - assert.strictEqual(imgdata.data[7], 255, "imgdata.data[\""+(7)+"\"]", "255") - }); - - it("2d.imageData.get.order.alpha", function () { - // getImageData() returns A in the fourth component - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = 'rgba(0, 0, 0, 0.5)'; - ctx.fillRect(0, 0, 100, 50); - var imgdata = ctx.getImageData(0, 0, 10, 10); - assert(imgdata.data[3] < 200, "imgdata.data[\""+(3)+"\"] < 200"); - assert(imgdata.data[3] > 100, "imgdata.data[\""+(3)+"\"] > 100"); - }); - - it("2d.imageData.get.unaffected", function () { - // getImageData() is not affected by context state - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 50) - ctx.fillStyle = '#f00'; - ctx.fillRect(50, 0, 50, 50) - ctx.save(); - ctx.translate(50, 0); - ctx.globalAlpha = 0.1; - ctx.globalCompositeOperation = 'destination-atop'; - ctx.shadowColor = '#f00'; - ctx.rect(0, 0, 5, 5); - ctx.clip(); - var imgdata = ctx.getImageData(0, 0, 50, 50); - ctx.restore(); - ctx.putImageData(imgdata, 50, 0); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }); - - it.skip("2d.imageData.get.large.crash", function () { - // Test that canvas crash when image data cannot be allocated. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.throws(function() { ctx.getImageData(10, 0xffffffff, 2147483647, 10); }, TypeError); - }); - - it("2d.imageData.get.rounding", function () { - // Test the handling of non-integer source coordinates in getImageData(). - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - function testDimensions(sx, sy, sw, sh, width, height) - { - imageData = ctx.getImageData(sx, sy, sw, sh); - assert(imageData.width == width, "imageData.width == width"); - assert(imageData.height == height, "imageData.height == height"); - } - - testDimensions(0, 0, 20, 10, 20, 10); - - testDimensions(.1, .2, 20, 10, 20, 10); - testDimensions(.9, .8, 20, 10, 20, 10); - - testDimensions(0, 0, 20.9, 10.9, 20, 10); - testDimensions(0, 0, 20.1, 10.1, 20, 10); - - testDimensions(-1, -1, 20, 10, 20, 10); - - testDimensions(-1.1, 0, 20, 10, 20, 10); - testDimensions(-1.9, 0, 20, 10, 20, 10); - }); - - it("2d.imageData.get.invalid", function () { - // Verify getImageData() behavior in invalid cases. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - imageData = ctx.getImageData(0,0,2,2); - var testValues = [NaN, true, false, "\"garbage\"", "-1", - "0", "1", "2", Infinity, -Infinity, - -5, -0.5, 0, 0.5, 5, - 5.4, 255, 256, null, undefined]; - var testResults = [0, 1, 0, 0, 0, - 0, 1, 2, 255, 0, - 0, 0, 0, 0, 5, - 5, 255, 255, 0, 0]; - for (var i = 0; i < testValues.length; i++) { - imageData.data[0] = testValues[i]; - assert(imageData.data[0] == testResults[i], "imageData.data[\""+(0)+"\"] == testResults[\""+(i)+"\"]"); - } - imageData.data['foo']='garbage'; - assert(imageData.data['foo'] == 'garbage', "imageData.data['foo'] == 'garbage'"); - imageData.data[-1]='garbage'; - assert(imageData.data[-1] == undefined, "imageData.data[-1] == undefined"); - imageData.data[17]='garbage'; - assert(imageData.data[17] == undefined, "imageData.data[\""+(17)+"\"] == undefined"); - }); - - it("2d.imageData.object.properties", function () { - // ImageData objects have the right properties - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.getImageData(0, 0, 10, 10); - assert.strictEqual(typeof(imgdata.width), 'number', "typeof(imgdata.width)", "'number'") - assert.strictEqual(typeof(imgdata.height), 'number', "typeof(imgdata.height)", "'number'") - assert.strictEqual(typeof(imgdata.data), 'object', "typeof(imgdata.data)", "'object'") - }); - - it("2d.imageData.object.readonly", function () { - // ImageData objects properties are read-only - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.getImageData(0, 0, 10, 10); - var w = imgdata.width; - var h = imgdata.height; - var d = imgdata.data; - imgdata.width = 123; - imgdata.height = 123; - imgdata.data = [100,100,100,100]; - assert.strictEqual(imgdata.width, w, "imgdata.width", "w") - assert.strictEqual(imgdata.height, h, "imgdata.height", "h") - assert.strictEqual(imgdata.data, d, "imgdata.data", "d") - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - assert.strictEqual(imgdata.data[1], 0, "imgdata.data[\""+(1)+"\"]", "0") - assert.strictEqual(imgdata.data[2], 0, "imgdata.data[\""+(2)+"\"]", "0") - assert.strictEqual(imgdata.data[3], 0, "imgdata.data[\""+(3)+"\"]", "0") - }); - - it("2d.imageData.object.ctor.size", function () { - // ImageData has a usable constructor - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.notStrictEqual(window.ImageData, undefined, "window.ImageData", "undefined"); - - var imgdata = new window.ImageData(2, 3); - assert.strictEqual(imgdata.width, 2, "imgdata.width", "2") - assert.strictEqual(imgdata.height, 3, "imgdata.height", "3") - assert.strictEqual(imgdata.data.length, 2 * 3 * 4, "imgdata.data.length", "2 * 3 * 4") - for (var i = 0; i < imgdata.data.length; ++i) { - assert.strictEqual(imgdata.data[i], 0, "imgdata.data[\""+(i)+"\"]", "0") - } - }); - - it("2d.imageData.object.ctor.basics", function () { - // Testing different type of ImageData constructor - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - function setRGBA(imageData, i, rgba) - { - var s = i * 4; - imageData[s] = rgba[0]; - imageData[s + 1] = rgba[1]; - imageData[s + 2] = rgba[2]; - imageData[s + 3] = rgba[3]; - } - - function getRGBA(imageData, i) - { - var result = []; - var s = i * 4; - for (var j = 0; j < 4; j++) { - result[j] = imageData[s + j]; - } - return result; - } - - function assertArrayEquals(actual, expected) - { - assert.strictEqual(typeof actual, "object", "typeof actual", "\"object\"") - assert.notStrictEqual(actual, null, "actual", "null"); - assert.strictEqual("length" in actual, true, "\"length\" in actual", "true") - assert.strictEqual(actual.length, expected.length, "actual.length", "expected.length") - for (var i = 0; i < actual.length; i++) { - assert.strictEqual(actual.hasOwnProperty(i), expected.hasOwnProperty(i), "actual.hasOwnProperty(i)", "expected.hasOwnProperty(i)") - assert.strictEqual(actual[i], expected[i], "actual[\""+(i)+"\"]", "expected[\""+(i)+"\"]") - } - } - - assert.notStrictEqual(ImageData, undefined, "ImageData", "undefined"); - imageData = new ImageData(100, 50); - - assert.notStrictEqual(imageData, null, "imageData", "null"); - assert.notStrictEqual(imageData.data, null, "imageData.data", "null"); - assert.strictEqual(imageData.width, 100, "imageData.width", "100") - assert.strictEqual(imageData.height, 50, "imageData.height", "50") - assertArrayEquals(getRGBA(imageData.data, 4), [0, 0, 0, 0]); - - var testColor = [0, 255, 255, 128]; - setRGBA(imageData.data, 4, testColor); - assertArrayEquals(getRGBA(imageData.data, 4), testColor); - - assert.throws(function() { new ImageData(10); }, TypeError); - assert.throws(function() { new ImageData(0, 10); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData(10, 0); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData('width', 'height'); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData(1 << 31, 1 << 31); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData(new Uint8ClampedArray(0)); }, TypeError); - assert.throws(function() { new ImageData(new Uint8Array(100), 25); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData(new Uint8ClampedArray(27), 2); }, /INVALID_STATE_ERR/); - assert.throws(function() { new ImageData(new Uint8ClampedArray(28), 7, 0); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData(new Uint8ClampedArray(104), 14); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData(new Uint8ClampedArray([12, 34, 168, 65328]), 1, 151); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData(self, 4, 4); }, TypeError); - assert.throws(function() { new ImageData(null, 4, 4); }, TypeError); - assert.throws(function() { new ImageData(imageData.data, 0); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData(imageData.data, 13); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData(imageData.data, 1 << 31); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData(imageData.data, 'biggish'); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData(imageData.data, 1 << 24, 1 << 31); }, /INDEX_SIZE_ERR/); - assert.strictEqual(new ImageData(new Uint8ClampedArray(28), 7).height, 1, "new ImageData(new Uint8ClampedArray(28), 7).height", "1") - - imageDataFromData = new ImageData(imageData.data, 100); - assert.strictEqual(imageDataFromData.width, 100, "imageDataFromData.width", "100") - assert.strictEqual(imageDataFromData.height, 50, "imageDataFromData.height", "50") - assert.strictEqual(imageDataFromData.data, imageData.data, "imageDataFromData.data", "imageData.data") - assertArrayEquals(getRGBA(imageDataFromData.data, 10), getRGBA(imageData.data, 10)); - setRGBA(imageData.data, 10, testColor); - assertArrayEquals(getRGBA(imageDataFromData.data, 10), getRGBA(imageData.data, 10)); - - var data = new Uint8ClampedArray(400); - data[22] = 129; - imageDataFromData = new ImageData(data, 20, 5); - assert.strictEqual(imageDataFromData.width, 20, "imageDataFromData.width", "20") - assert.strictEqual(imageDataFromData.height, 5, "imageDataFromData.height", "5") - assert.strictEqual(imageDataFromData.data, data, "imageDataFromData.data", "data") - assertArrayEquals(getRGBA(imageDataFromData.data, 2), getRGBA(data, 2)); - setRGBA(imageDataFromData.data, 2, testColor); - assertArrayEquals(getRGBA(imageDataFromData.data, 2), getRGBA(data, 2)); - - if (window.SharedArrayBuffer) { - assert.throws(function() { new ImageData(new Uint16Array(new SharedArrayBuffer(32)), 4, 2); }, TypeError); - } - }); - - it("2d.imageData.object.ctor.array", function () { - // ImageData has a usable constructor - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.notStrictEqual(window.ImageData, undefined, "window.ImageData", "undefined"); - - var array = new Uint8ClampedArray(8); - var imgdata = new window.ImageData(array, 1, 2); - assert.strictEqual(imgdata.width, 1, "imgdata.width", "1") - assert.strictEqual(imgdata.height, 2, "imgdata.height", "2") - assert.strictEqual(imgdata.data, array, "imgdata.data", "array") - }); - - it("2d.imageData.object.ctor.array.bounds", function () { - // ImageData has a usable constructor - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.notStrictEqual(window.ImageData, undefined, "window.ImageData", "undefined"); - - assert.throws(function() { new ImageData(new Uint8ClampedArray(0), 1); }, /INVALID_STATE_ERR/); - assert.throws(function() { new ImageData(new Uint8ClampedArray(3), 1); }, /INVALID_STATE_ERR/); - assert.throws(function() { new ImageData(new Uint8ClampedArray(4), 0); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData(new Uint8ClampedArray(4), 1, 2); }, /INDEX_SIZE_ERR/); - assert.throws(function() { new ImageData(new Uint8Array(8), 1, 2); }, TypeError); - assert.throws(function() { new ImageData(new Int8Array(8), 1, 2); }, TypeError); - }); - - it("2d.imageData.object.set", function () { - // ImageData.data can be modified - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.getImageData(0, 0, 10, 10); - imgdata.data[0] = 100; - assert.strictEqual(imgdata.data[0], 100, "imgdata.data[\""+(0)+"\"]", "100") - imgdata.data[0] = 200; - assert.strictEqual(imgdata.data[0], 200, "imgdata.data[\""+(0)+"\"]", "200") - }); - - it("2d.imageData.object.undefined", function () { - // ImageData.data converts undefined to 0 - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.getImageData(0, 0, 10, 10); - imgdata.data[0] = 100; - imgdata.data[0] = undefined; - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - }); - - it("2d.imageData.object.nan", function () { - // ImageData.data converts NaN to 0 - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.getImageData(0, 0, 10, 10); - imgdata.data[0] = 100; - imgdata.data[0] = NaN; - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - imgdata.data[0] = 100; - imgdata.data[0] = "cheese"; - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - }); - - it("2d.imageData.object.string", function () { - // ImageData.data converts strings to numbers with ToNumber - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.getImageData(0, 0, 10, 10); - imgdata.data[0] = 100; - imgdata.data[0] = "110"; - assert.strictEqual(imgdata.data[0], 110, "imgdata.data[\""+(0)+"\"]", "110") - imgdata.data[0] = 100; - imgdata.data[0] = "0x78"; - assert.strictEqual(imgdata.data[0], 120, "imgdata.data[\""+(0)+"\"]", "120") - imgdata.data[0] = 100; - imgdata.data[0] = " +130e0 "; - assert.strictEqual(imgdata.data[0], 130, "imgdata.data[\""+(0)+"\"]", "130") - }); - - it("2d.imageData.object.clamp", function () { - // ImageData.data clamps numbers to [0, 255] - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.getImageData(0, 0, 10, 10); - - imgdata.data[0] = 100; - imgdata.data[0] = 300; - assert.strictEqual(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255") - imgdata.data[0] = 100; - imgdata.data[0] = -100; - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - - imgdata.data[0] = 100; - imgdata.data[0] = 200+Math.pow(2, 32); - assert.strictEqual(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255") - imgdata.data[0] = 100; - imgdata.data[0] = -200-Math.pow(2, 32); - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - - imgdata.data[0] = 100; - imgdata.data[0] = Math.pow(10, 39); - assert.strictEqual(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255") - imgdata.data[0] = 100; - imgdata.data[0] = -Math.pow(10, 39); - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - - imgdata.data[0] = 100; - imgdata.data[0] = -Infinity; - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - imgdata.data[0] = 100; - imgdata.data[0] = Infinity; - assert.strictEqual(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255") - }); - - it("2d.imageData.object.round", function () { - // ImageData.data rounds numbers with round-to-zero - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.getImageData(0, 0, 10, 10); - imgdata.data[0] = 0.499; - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - imgdata.data[0] = 0.5; - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - imgdata.data[0] = 0.501; - assert.strictEqual(imgdata.data[0], 1, "imgdata.data[\""+(0)+"\"]", "1") - imgdata.data[0] = 1.499; - assert.strictEqual(imgdata.data[0], 1, "imgdata.data[\""+(0)+"\"]", "1") - imgdata.data[0] = 1.5; - assert.strictEqual(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2") - imgdata.data[0] = 1.501; - assert.strictEqual(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2") - imgdata.data[0] = 2.5; - assert.strictEqual(imgdata.data[0], 2, "imgdata.data[\""+(0)+"\"]", "2") - imgdata.data[0] = 3.5; - assert.strictEqual(imgdata.data[0], 4, "imgdata.data[\""+(0)+"\"]", "4") - imgdata.data[0] = 252.5; - assert.strictEqual(imgdata.data[0], 252, "imgdata.data[\""+(0)+"\"]", "252") - imgdata.data[0] = 253.5; - assert.strictEqual(imgdata.data[0], 254, "imgdata.data[\""+(0)+"\"]", "254") - imgdata.data[0] = 254.5; - assert.strictEqual(imgdata.data[0], 254, "imgdata.data[\""+(0)+"\"]", "254") - imgdata.data[0] = 256.5; - assert.strictEqual(imgdata.data[0], 255, "imgdata.data[\""+(0)+"\"]", "255") - imgdata.data[0] = -0.5; - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - imgdata.data[0] = -1.5; - assert.strictEqual(imgdata.data[0], 0, "imgdata.data[\""+(0)+"\"]", "0") - }); - - it("2d.imageData.put.null", function () { - // putImageData() with null imagedata throws TypeError - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.throws(function() { ctx.putImageData(null, 0, 0); }, TypeError); - }); - - it("2d.imageData.put.nonfinite", function () { - // putImageData() throws TypeError if arguments are not finite - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.getImageData(0, 0, 10, 10); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, -Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, NaN, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, -Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, NaN); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, 10, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, -Infinity, 10, 10, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, NaN, 10, 10, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, 10, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, -Infinity, 10, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, NaN, 10, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, Infinity, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, -Infinity, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, NaN, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, 10, Infinity, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, 10, -Infinity, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, 10, NaN, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, 10, 10, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, 10, 10, -Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, 10, 10, NaN, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, 10, 10, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, 10, 10, 10, -Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, 10, 10, 10, NaN); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, Infinity, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, Infinity, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, Infinity, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, 10, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, 10, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, Infinity, 10, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, Infinity, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, Infinity, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, Infinity, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, Infinity, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, 10, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, 10, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, Infinity, 10, 10, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, Infinity, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, Infinity, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, Infinity, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, Infinity, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, 10, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, 10, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, Infinity, 10, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, 10, Infinity, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, 10, Infinity, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, 10, Infinity, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, 10, Infinity, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, 10, 10, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, 10, 10, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, Infinity, 10, 10, 10, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, 10, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, Infinity, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, Infinity, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, Infinity, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, Infinity, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, 10, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, 10, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, Infinity, 10, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, 10, Infinity, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, 10, Infinity, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, 10, Infinity, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, 10, Infinity, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, 10, 10, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, 10, 10, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, Infinity, 10, 10, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, Infinity, Infinity, 10, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, Infinity, Infinity, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, Infinity, Infinity, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, Infinity, Infinity, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, Infinity, 10, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, Infinity, 10, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, Infinity, 10, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, 10, Infinity, Infinity, 10); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, 10, Infinity, Infinity, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, 10, Infinity, 10, Infinity); }, TypeError); - assert.throws(function() { ctx.putImageData(imgdata, 10, 10, 10, 10, Infinity, Infinity); }, TypeError); - }); - - it("2d.imageData.put.basic", function () { - // putImageData() puts image data from getImageData() onto the canvas - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.putImageData(imgdata, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - }); - - it("2d.imageData.put.created", function () { - // putImageData() puts image data from createImageData() onto the canvas - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = ctx.createImageData(100, 50); - for (var i = 0; i < imgdata.data.length; i += 4) { - imgdata.data[i] = 0; - imgdata.data[i+1] = 255; - imgdata.data[i+2] = 0; - imgdata.data[i+3] = 255; - } - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.putImageData(imgdata, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - }); - - it("2d.imageData.put.wrongtype", function () { - // putImageData() does not accept non-ImageData objects - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var imgdata = { width: 1, height: 1, data: [255, 0, 0, 255] }; - assert.throws(function() { ctx.putImageData(imgdata, 0, 0); }, TypeError); - assert.throws(function() { ctx.putImageData("cheese", 0, 0); }, TypeError); - assert.throws(function() { ctx.putImageData(42, 0, 0); }, TypeError); - }); - - it("2d.imageData.put.cross", function () { - // putImageData() accepts image data got from a different canvas - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var canvas2 = document.createElement('canvas'); - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = '#0f0'; - ctx2.fillRect(0, 0, 100, 50) - var imgdata = ctx2.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.putImageData(imgdata, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - }); - - it("2d.imageData.put.alpha", function () { - // putImageData() puts non-solid image data correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = 'rgba(0, 255, 0, 0.25)'; - ctx.fillRect(0, 0, 100, 50) - var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.putImageData(imgdata, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,64); - }); - - it("2d.imageData.put.modified", function () { - // putImageData() puts modified image data correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#f00'; - ctx.fillRect(45, 20, 10, 10) - var imgdata = ctx.getImageData(45, 20, 10, 10); - for (var i = 0, len = imgdata.width*imgdata.height*4; i < len; i += 4) - { - imgdata.data[i] = 0; - imgdata.data[i+1] = 255; - } - ctx.putImageData(imgdata, 45, 20); - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - }); - - it("2d.imageData.put.dirty.zero", function () { - // putImageData() with zero-sized dirty rectangle puts nothing - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - ctx.putImageData(imgdata, 0, 0, 0, 0, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - }); - - it("2d.imageData.put.dirty.rect1", function () { - // putImageData() only modifies areas inside the dirty rectangle, using width and height - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 20, 20) - - var imgdata = ctx.getImageData(0, 0, 100, 50); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#f00'; - ctx.fillRect(40, 20, 20, 20) - ctx.putImageData(imgdata, 40, 20, 0, 0, 20, 20); - - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - _assertPixelApprox(canvas, 35,25, 0,255,0,255); - _assertPixelApprox(canvas, 65,25, 0,255,0,255); - _assertPixelApprox(canvas, 50,15, 0,255,0,255); - _assertPixelApprox(canvas, 50,45, 0,255,0,255); - }); - - it("2d.imageData.put.dirty.rect2", function () { - // putImageData() only modifies areas inside the dirty rectangle, using x and y - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#0f0'; - ctx.fillRect(60, 30, 20, 20) - - var imgdata = ctx.getImageData(0, 0, 100, 50); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#f00'; - ctx.fillRect(40, 20, 20, 20) - ctx.putImageData(imgdata, -20, -10, 60, 30, 20, 20); - - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - _assertPixelApprox(canvas, 35,25, 0,255,0,255); - _assertPixelApprox(canvas, 65,25, 0,255,0,255); - _assertPixelApprox(canvas, 50,15, 0,255,0,255); - _assertPixelApprox(canvas, 50,45, 0,255,0,255); - }); - - it("2d.imageData.put.dirty.negative", function () { - // putImageData() handles negative-sized dirty rectangles correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 20, 20) - - var imgdata = ctx.getImageData(0, 0, 100, 50); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#f00'; - ctx.fillRect(40, 20, 20, 20) - ctx.putImageData(imgdata, 40, 20, 20, 20, -20, -20); - - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - _assertPixelApprox(canvas, 35,25, 0,255,0,255); - _assertPixelApprox(canvas, 65,25, 0,255,0,255); - _assertPixelApprox(canvas, 50,15, 0,255,0,255); - _assertPixelApprox(canvas, 50,45, 0,255,0,255); - }); - - it("2d.imageData.put.dirty.outside", function () { - // putImageData() handles dirty rectangles outside the canvas correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - - var imgdata = ctx.getImageData(0, 0, 100, 50); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - - ctx.putImageData(imgdata, 100, 20, 20, 20, -20, -20); - ctx.putImageData(imgdata, 200, 200, 0, 0, 100, 50); - ctx.putImageData(imgdata, 40, 20, -30, -20, 30, 20); - ctx.putImageData(imgdata, -30, 20, 0, 0, 30, 20); - - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - _assertPixelApprox(canvas, 98,15, 0,255,0,255); - _assertPixelApprox(canvas, 98,25, 0,255,0,255); - _assertPixelApprox(canvas, 98,45, 0,255,0,255); - _assertPixelApprox(canvas, 1,5, 0,255,0,255); - _assertPixelApprox(canvas, 1,25, 0,255,0,255); - _assertPixelApprox(canvas, 1,45, 0,255,0,255); - }); - - it("2d.imageData.put.unchanged", function () { - // putImageData(getImageData(...), ...) has no effect - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var i = 0; - for (var y = 0; y < 16; ++y) { - for (var x = 0; x < 16; ++x, ++i) { - ctx.fillStyle = 'rgba(' + i + ',' + (Math.floor(i*1.5) % 256) + ',' + (Math.floor(i*23.3) % 256) + ',' + (i/256) + ')'; - ctx.fillRect(x, y, 1, 1); - } - } - var imgdata1 = ctx.getImageData(0.1, 0.2, 15.8, 15.9); - var olddata = []; - for (var i = 0; i < imgdata1.data.length; ++i) - olddata[i] = imgdata1.data[i]; - - ctx.putImageData(imgdata1, 0.1, 0.2); - - var imgdata2 = ctx.getImageData(0.1, 0.2, 15.8, 15.9); - for (var i = 0; i < imgdata2.data.length; ++i) { - assert.strictEqual(olddata[i], imgdata2.data[i], "olddata[\""+(i)+"\"]", "imgdata2.data[\""+(i)+"\"]") - } - }); - - it("2d.imageData.put.unaffected", function () { - // putImageData() is not affected by context state - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.globalAlpha = 0.1; - ctx.globalCompositeOperation = 'destination-atop'; - ctx.shadowColor = '#f00'; - ctx.shadowBlur = 1; - ctx.translate(100, 50); - ctx.scale(0.1, 0.1); - ctx.putImageData(imgdata, 0, 0); - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - }); - - it("2d.imageData.put.clip", function () { - // putImageData() is not affected by clipping regions - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.beginPath(); - ctx.rect(0, 0, 50, 50); - ctx.clip(); - ctx.putImageData(imgdata, 0, 0); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }); - - it("2d.imageData.put.path", function () { - // putImageData() does not affect the current path - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.rect(0, 0, 100, 50); - var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.putImageData(imgdata, 0, 0); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - }); + it("2d.imageData.create2.basic", function () { + // createImageData(sw, sh) exists and returns something + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.notStrictEqual( + ctx.createImageData(1, 1), + null, + "ctx.createImageData(1, 1)", + "null" + ); + }); + + it("2d.imageData.create1.basic", function () { + // createImageData(imgdata) exists and returns something + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.notStrictEqual( + ctx.createImageData(ctx.createImageData(1, 1)), + null, + "ctx.createImageData(ctx.createImageData(1, 1))", + "null" + ); + }); + + it("2d.imageData.create2.type", function () { + // createImageData(sw, sh) returns an ImageData object containing a Uint8ClampedArray object + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.notStrictEqual( + window.ImageData, + undefined, + "window.ImageData", + "undefined" + ); + assert.notStrictEqual( + window.Uint8ClampedArray, + undefined, + "window.Uint8ClampedArray", + "undefined" + ); + window.ImageData.prototype.thisImplementsImageData = true; + window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; + var imgdata = ctx.createImageData(1, 1); + assert( + imgdata.thisImplementsImageData, + "imgdata.thisImplementsImageData" + ); + assert( + imgdata.data.thisImplementsUint8ClampedArray, + "imgdata.data.thisImplementsUint8ClampedArray" + ); + }); + + it("2d.imageData.create1.type", function () { + // createImageData(imgdata) returns an ImageData object containing a Uint8ClampedArray object + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.notStrictEqual( + window.ImageData, + undefined, + "window.ImageData", + "undefined" + ); + assert.notStrictEqual( + window.Uint8ClampedArray, + undefined, + "window.Uint8ClampedArray", + "undefined" + ); + window.ImageData.prototype.thisImplementsImageData = true; + window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; + var imgdata = ctx.createImageData(ctx.createImageData(1, 1)); + assert( + imgdata.thisImplementsImageData, + "imgdata.thisImplementsImageData" + ); + assert( + imgdata.data.thisImplementsUint8ClampedArray, + "imgdata.data.thisImplementsUint8ClampedArray" + ); + }); + + it("2d.imageData.create2.this", function () { + // createImageData(sw, sh) should throw when called with the wrong |this| + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.throws(function () { + CanvasRenderingContext2D.prototype.createImageData.call(null, 1, 1); + }, TypeError); + assert.throws(function () { + CanvasRenderingContext2D.prototype.createImageData.call( + undefined, + 1, + 1 + ); + }, TypeError); + assert.throws(function () { + CanvasRenderingContext2D.prototype.createImageData.call({}, 1, 1); + }, TypeError); + }); + + it("2d.imageData.create1.this", function () { + // createImageData(imgdata) should throw when called with the wrong |this| + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.createImageData(1, 1); + assert.throws(function () { + CanvasRenderingContext2D.prototype.createImageData.call( + null, + imgdata + ); + }, TypeError); + assert.throws(function () { + CanvasRenderingContext2D.prototype.createImageData.call( + undefined, + imgdata + ); + }, TypeError); + assert.throws(function () { + CanvasRenderingContext2D.prototype.createImageData.call( + {}, + imgdata + ); + }, TypeError); + }); + + it("2d.imageData.create2.initial", function () { + // createImageData(sw, sh) returns transparent black data of the right size + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.createImageData(10, 20); + assert.strictEqual( + imgdata.data.length, + imgdata.width * imgdata.height * 4, + "imgdata.data.length", + "imgdata.width*imgdata.height*4" + ); + assert( + imgdata.width < imgdata.height, + "imgdata.width < imgdata.height" + ); + assert(imgdata.width > 0, "imgdata.width > 0"); + var isTransparentBlack = true; + for (var i = 0; i < imgdata.data.length; ++i) + if (imgdata.data[i] !== 0) isTransparentBlack = false; + assert(isTransparentBlack, "isTransparentBlack"); + }); + + it("2d.imageData.create1.initial", function () { + // createImageData(imgdata) returns transparent black data of the right size + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + var imgdata1 = ctx.getImageData(0, 0, 10, 20); + var imgdata2 = ctx.createImageData(imgdata1); + assert.strictEqual( + imgdata2.data.length, + imgdata1.data.length, + "imgdata2.data.length", + "imgdata1.data.length" + ); + assert.strictEqual( + imgdata2.width, + imgdata1.width, + "imgdata2.width", + "imgdata1.width" + ); + assert.strictEqual( + imgdata2.height, + imgdata1.height, + "imgdata2.height", + "imgdata1.height" + ); + var isTransparentBlack = true; + for (var i = 0; i < imgdata2.data.length; ++i) + if (imgdata2.data[i] !== 0) isTransparentBlack = false; + assert(isTransparentBlack, "isTransparentBlack"); + }); + + it("2d.imageData.create2.large", function () { + // createImageData(sw, sh) works for sizes much larger than the canvas + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.createImageData(1000, 2000); + assert.strictEqual( + imgdata.data.length, + imgdata.width * imgdata.height * 4, + "imgdata.data.length", + "imgdata.width*imgdata.height*4" + ); + assert( + imgdata.width < imgdata.height, + "imgdata.width < imgdata.height" + ); + assert(imgdata.width > 0, "imgdata.width > 0"); + var isTransparentBlack = true; + for ( + var i = 0; + i < imgdata.data.length; + i += 7813 // check ~1024 points (assuming normal scaling) + ) + if (imgdata.data[i] !== 0) isTransparentBlack = false; + assert(isTransparentBlack, "isTransparentBlack"); + }); + + it.skip("2d.imageData.create2.negative", function () { + // createImageData(sw, sh) takes the absolute magnitude of the size arguments + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata1 = ctx.createImageData(10, 20); + var imgdata2 = ctx.createImageData(-10, 20); + var imgdata3 = ctx.createImageData(10, -20); + var imgdata4 = ctx.createImageData(-10, -20); + assert.strictEqual( + imgdata1.data.length, + imgdata2.data.length, + "imgdata1.data.length", + "imgdata2.data.length" + ); + assert.strictEqual( + imgdata2.data.length, + imgdata3.data.length, + "imgdata2.data.length", + "imgdata3.data.length" + ); + assert.strictEqual( + imgdata3.data.length, + imgdata4.data.length, + "imgdata3.data.length", + "imgdata4.data.length" + ); + }); + + it.skip("2d.imageData.create2.zero", function () { + // createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zero + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.throws(function () { + ctx.createImageData(10, 0); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + ctx.createImageData(0, 10); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + ctx.createImageData(0, 0); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + ctx.createImageData(0.99, 10); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + ctx.createImageData(10, 0.1); + }, /INDEX_SIZE_ERR/); + }); + + it.skip("2d.imageData.create2.nonfinite", function () { + // createImageData() throws TypeError if arguments are not finite + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.throws(function () { + ctx.createImageData(Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.createImageData(-Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.createImageData(NaN, 10); + }, TypeError); + assert.throws(function () { + ctx.createImageData(10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.createImageData(10, -Infinity); + }, TypeError); + assert.throws(function () { + ctx.createImageData(10, NaN); + }, TypeError); + assert.throws(function () { + ctx.createImageData(Infinity, Infinity); + }, TypeError); + var posinfobj = { + valueOf: function () { + return Infinity; + }, + }, + neginfobj = { + valueOf: function () { + return -Infinity; + }, + }, + nanobj = { + valueOf: function () { + return -Infinity; + }, + }; + assert.throws(function () { + ctx.createImageData(posinfobj, 10); + }, TypeError); + assert.throws(function () { + ctx.createImageData(neginfobj, 10); + }, TypeError); + assert.throws(function () { + ctx.createImageData(nanobj, 10); + }, TypeError); + assert.throws(function () { + ctx.createImageData(10, posinfobj); + }, TypeError); + assert.throws(function () { + ctx.createImageData(10, neginfobj); + }, TypeError); + assert.throws(function () { + ctx.createImageData(10, nanobj); + }, TypeError); + assert.throws(function () { + ctx.createImageData(posinfobj, posinfobj); + }, TypeError); + }); + + it.skip("2d.imageData.create1.zero", function () { + // createImageData(null) throws TypeError + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.throws(function () { + ctx.createImageData(null); + }, TypeError); + }); + + it.skip("2d.imageData.create2.double", function () { + // createImageData(w, h) double is converted to long + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata1 = ctx.createImageData(10.01, 10.99); + var imgdata2 = ctx.createImageData(-10.01, -10.99); + assert.strictEqual(imgdata1.width, 10, "imgdata1.width", "10"); + assert.strictEqual(imgdata1.height, 10, "imgdata1.height", "10"); + assert.strictEqual(imgdata2.width, 10, "imgdata2.width", "10"); + assert.strictEqual(imgdata2.height, 10, "imgdata2.height", "10"); + }); + + it("2d.imageData.create.and.resize", function () { + // Verify no crash when resizing an image bitmap to zero. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var image = new Image(); + image.onload = t.step_func(function () { + var options = { resizeHeight: 0 }; + var p1 = createImageBitmap(image, options); + p1.catch(function (error) {}); + t.done(); + }); + image.src = "red.png"; + }); + + it("2d.imageData.get.basic", function () { + // getImageData() exists and returns something + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.notStrictEqual( + ctx.getImageData(0, 0, 100, 50), + null, + "ctx.getImageData(0, 0, 100, 50)", + "null" + ); + }); + + it("2d.imageData.get.type", function () { + // getImageData() returns an ImageData object containing a Uint8ClampedArray object + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.notStrictEqual( + window.ImageData, + undefined, + "window.ImageData", + "undefined" + ); + assert.notStrictEqual( + window.Uint8ClampedArray, + undefined, + "window.Uint8ClampedArray", + "undefined" + ); + window.ImageData.prototype.thisImplementsImageData = true; + window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; + var imgdata = ctx.getImageData(0, 0, 1, 1); + assert( + imgdata.thisImplementsImageData, + "imgdata.thisImplementsImageData" + ); + assert( + imgdata.data.thisImplementsUint8ClampedArray, + "imgdata.data.thisImplementsUint8ClampedArray" + ); + }); + + it("2d.imageData.get.zero", function () { + // getImageData() throws INDEX_SIZE_ERR if size is zero + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.throws(function () { + ctx.getImageData(1, 1, 10, 0); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + ctx.getImageData(1, 1, 0, 10); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + ctx.getImageData(1, 1, 0, 0); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + ctx.getImageData(1, 1, 0.1, 10); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + ctx.getImageData(1, 1, 10, 0.99); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + ctx.getImageData(1, 1, -0.1, 10); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + ctx.getImageData(1, 1, 10, -0.99); + }, /INDEX_SIZE_ERR/); + }); + + it("2d.imageData.get.nonfinite", function () { + // getImageData() throws TypeError if arguments are not finite + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.throws(function () { + ctx.getImageData(Infinity, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(-Infinity, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(NaN, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, Infinity, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, -Infinity, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, NaN, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, -Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, NaN, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, 10, -Infinity); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, 10, NaN); + }, TypeError); + assert.throws(function () { + ctx.getImageData(Infinity, Infinity, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(Infinity, Infinity, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(Infinity, Infinity, Infinity, Infinity); + }, TypeError); + assert.throws(function () { + ctx.getImageData(Infinity, Infinity, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.getImageData(Infinity, 10, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(Infinity, 10, Infinity, Infinity); + }, TypeError); + assert.throws(function () { + ctx.getImageData(Infinity, 10, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, Infinity, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, Infinity, Infinity, Infinity); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, Infinity, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, Infinity, Infinity); + }, TypeError); + var posinfobj = { + valueOf: function () { + return Infinity; + }, + }, + neginfobj = { + valueOf: function () { + return -Infinity; + }, + }, + nanobj = { + valueOf: function () { + return -Infinity; + }, + }; + assert.throws(function () { + ctx.getImageData(posinfobj, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(neginfobj, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(nanobj, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, posinfobj, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, neginfobj, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, nanobj, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, posinfobj, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, neginfobj, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, nanobj, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, 10, posinfobj); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, 10, neginfobj); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, 10, nanobj); + }, TypeError); + assert.throws(function () { + ctx.getImageData(posinfobj, posinfobj, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(posinfobj, posinfobj, posinfobj, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(posinfobj, posinfobj, posinfobj, posinfobj); + }, TypeError); + assert.throws(function () { + ctx.getImageData(posinfobj, posinfobj, 10, posinfobj); + }, TypeError); + assert.throws(function () { + ctx.getImageData(posinfobj, 10, posinfobj, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(posinfobj, 10, posinfobj, posinfobj); + }, TypeError); + assert.throws(function () { + ctx.getImageData(posinfobj, 10, 10, posinfobj); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, posinfobj, posinfobj, 10); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, posinfobj, posinfobj, posinfobj); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, posinfobj, 10, posinfobj); + }, TypeError); + assert.throws(function () { + ctx.getImageData(10, 10, posinfobj, posinfobj); + }, TypeError); + }); + + it.skip("2d.imageData.get.source.outside", function () { + // getImageData() returns transparent black outside the canvas + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#08f"; + ctx.fillRect(0, 0, 100, 50); + + var imgdata1 = ctx.getImageData(-10, 5, 1, 1); + assert.strictEqual( + imgdata1.data[0], + 0, + 'imgdata1.data["' + 0 + '"]', + "0" + ); + assert.strictEqual( + imgdata1.data[1], + 0, + 'imgdata1.data["' + 1 + '"]', + "0" + ); + assert.strictEqual( + imgdata1.data[2], + 0, + 'imgdata1.data["' + 2 + '"]', + "0" + ); + assert.strictEqual( + imgdata1.data[3], + 0, + 'imgdata1.data["' + 3 + '"]', + "0" + ); + + var imgdata2 = ctx.getImageData(10, -5, 1, 1); + assert.strictEqual( + imgdata2.data[0], + 0, + 'imgdata2.data["' + 0 + '"]', + "0" + ); + assert.strictEqual( + imgdata2.data[1], + 0, + 'imgdata2.data["' + 1 + '"]', + "0" + ); + assert.strictEqual( + imgdata2.data[2], + 0, + 'imgdata2.data["' + 2 + '"]', + "0" + ); + assert.strictEqual( + imgdata2.data[3], + 0, + 'imgdata2.data["' + 3 + '"]', + "0" + ); + + var imgdata3 = ctx.getImageData(200, 5, 1, 1); + assert.strictEqual( + imgdata3.data[0], + 0, + 'imgdata3.data["' + 0 + '"]', + "0" + ); + assert.strictEqual( + imgdata3.data[1], + 0, + 'imgdata3.data["' + 1 + '"]', + "0" + ); + assert.strictEqual( + imgdata3.data[2], + 0, + 'imgdata3.data["' + 2 + '"]', + "0" + ); + assert.strictEqual( + imgdata3.data[3], + 0, + 'imgdata3.data["' + 3 + '"]', + "0" + ); + + var imgdata4 = ctx.getImageData(10, 60, 1, 1); + assert.strictEqual( + imgdata4.data[0], + 0, + 'imgdata4.data["' + 0 + '"]', + "0" + ); + assert.strictEqual( + imgdata4.data[1], + 0, + 'imgdata4.data["' + 1 + '"]', + "0" + ); + assert.strictEqual( + imgdata4.data[2], + 0, + 'imgdata4.data["' + 2 + '"]', + "0" + ); + assert.strictEqual( + imgdata4.data[3], + 0, + 'imgdata4.data["' + 3 + '"]', + "0" + ); + + var imgdata5 = ctx.getImageData(100, 10, 1, 1); + assert.strictEqual( + imgdata5.data[0], + 0, + 'imgdata5.data["' + 0 + '"]', + "0" + ); + assert.strictEqual( + imgdata5.data[1], + 0, + 'imgdata5.data["' + 1 + '"]', + "0" + ); + assert.strictEqual( + imgdata5.data[2], + 0, + 'imgdata5.data["' + 2 + '"]', + "0" + ); + assert.strictEqual( + imgdata5.data[3], + 0, + 'imgdata5.data["' + 3 + '"]', + "0" + ); + + var imgdata6 = ctx.getImageData(0, 10, 1, 1); + assert.strictEqual( + imgdata6.data[0], + 0, + 'imgdata6.data["' + 0 + '"]', + "0" + ); + assert.strictEqual( + imgdata6.data[1], + 136, + 'imgdata6.data["' + 1 + '"]', + "136" + ); + assert.strictEqual( + imgdata6.data[2], + 255, + 'imgdata6.data["' + 2 + '"]', + "255" + ); + assert.strictEqual( + imgdata6.data[3], + 255, + 'imgdata6.data["' + 3 + '"]', + "255" + ); + + var imgdata7 = ctx.getImageData(-10, 10, 20, 20); + assert.strictEqual( + imgdata7.data[0 * 4 + 0], + 0, + "imgdata7.data[ 0*4+0]", + "0" + ); + assert.strictEqual( + imgdata7.data[0 * 4 + 1], + 0, + "imgdata7.data[ 0*4+1]", + "0" + ); + assert.strictEqual( + imgdata7.data[0 * 4 + 2], + 0, + "imgdata7.data[ 0*4+2]", + "0" + ); + assert.strictEqual( + imgdata7.data[0 * 4 + 3], + 0, + "imgdata7.data[ 0*4+3]", + "0" + ); + assert.strictEqual( + imgdata7.data[9 * 4 + 0], + 0, + "imgdata7.data[ 9*4+0]", + "0" + ); + assert.strictEqual( + imgdata7.data[9 * 4 + 1], + 0, + "imgdata7.data[ 9*4+1]", + "0" + ); + assert.strictEqual( + imgdata7.data[9 * 4 + 2], + 0, + "imgdata7.data[ 9*4+2]", + "0" + ); + assert.strictEqual( + imgdata7.data[9 * 4 + 3], + 0, + "imgdata7.data[ 9*4+3]", + "0" + ); + assert.strictEqual( + imgdata7.data[10 * 4 + 0], + 0, + "imgdata7.data[10*4+0]", + "0" + ); + assert.strictEqual( + imgdata7.data[10 * 4 + 1], + 136, + "imgdata7.data[10*4+1]", + "136" + ); + assert.strictEqual( + imgdata7.data[10 * 4 + 2], + 255, + "imgdata7.data[10*4+2]", + "255" + ); + assert.strictEqual( + imgdata7.data[10 * 4 + 3], + 255, + "imgdata7.data[10*4+3]", + "255" + ); + assert.strictEqual( + imgdata7.data[19 * 4 + 0], + 0, + "imgdata7.data[19*4+0]", + "0" + ); + assert.strictEqual( + imgdata7.data[19 * 4 + 1], + 136, + "imgdata7.data[19*4+1]", + "136" + ); + assert.strictEqual( + imgdata7.data[19 * 4 + 2], + 255, + "imgdata7.data[19*4+2]", + "255" + ); + assert.strictEqual( + imgdata7.data[19 * 4 + 3], + 255, + "imgdata7.data[19*4+3]", + "255" + ); + assert.strictEqual( + imgdata7.data[20 * 4 + 0], + 0, + "imgdata7.data[20*4+0]", + "0" + ); + assert.strictEqual( + imgdata7.data[20 * 4 + 1], + 0, + "imgdata7.data[20*4+1]", + "0" + ); + assert.strictEqual( + imgdata7.data[20 * 4 + 2], + 0, + "imgdata7.data[20*4+2]", + "0" + ); + assert.strictEqual( + imgdata7.data[20 * 4 + 3], + 0, + "imgdata7.data[20*4+3]", + "0" + ); + }); + + it.skip("2d.imageData.get.source.negative", function () { + // getImageData() works with negative width and height, and returns top-to-bottom left-to-right + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#000"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#fff"; + ctx.fillRect(20, 10, 60, 10); + + var imgdata1 = ctx.getImageData(85, 25, -10, -10); + assert.strictEqual( + imgdata1.data[0], + 255, + 'imgdata1.data["' + 0 + '"]', + "255" + ); + assert.strictEqual( + imgdata1.data[1], + 255, + 'imgdata1.data["' + 1 + '"]', + "255" + ); + assert.strictEqual( + imgdata1.data[2], + 255, + 'imgdata1.data["' + 2 + '"]', + "255" + ); + assert.strictEqual( + imgdata1.data[3], + 255, + 'imgdata1.data["' + 3 + '"]', + "255" + ); + assert.strictEqual( + imgdata1.data[imgdata1.data.length - 4 + 0], + 0, + "imgdata1.data[imgdata1.data.length-4+0]", + "0" + ); + assert.strictEqual( + imgdata1.data[imgdata1.data.length - 4 + 1], + 0, + "imgdata1.data[imgdata1.data.length-4+1]", + "0" + ); + assert.strictEqual( + imgdata1.data[imgdata1.data.length - 4 + 2], + 0, + "imgdata1.data[imgdata1.data.length-4+2]", + "0" + ); + assert.strictEqual( + imgdata1.data[imgdata1.data.length - 4 + 3], + 255, + "imgdata1.data[imgdata1.data.length-4+3]", + "255" + ); + + var imgdata2 = ctx.getImageData(0, 0, -1, -1); + assert.strictEqual( + imgdata2.data[0], + 0, + 'imgdata2.data["' + 0 + '"]', + "0" + ); + assert.strictEqual( + imgdata2.data[1], + 0, + 'imgdata2.data["' + 1 + '"]', + "0" + ); + assert.strictEqual( + imgdata2.data[2], + 0, + 'imgdata2.data["' + 2 + '"]', + "0" + ); + assert.strictEqual( + imgdata2.data[3], + 0, + 'imgdata2.data["' + 3 + '"]', + "0" + ); + }); + + it("2d.imageData.get.source.size", function () { + // getImageData() returns bigger ImageData for bigger source rectangle + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata1 = ctx.getImageData(0, 0, 10, 10); + var imgdata2 = ctx.getImageData(0, 0, 20, 20); + assert( + imgdata2.width > imgdata1.width, + "imgdata2.width > imgdata1.width" + ); + assert( + imgdata2.height > imgdata1.height, + "imgdata2.height > imgdata1.height" + ); + }); + + it.skip("2d.imageData.get.double", function () { + // createImageData(w, h) double is converted to long + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata1 = ctx.getImageData(0, 0, 10.01, 10.99); + var imgdata2 = ctx.getImageData(0, 0, -10.01, -10.99); + assert.strictEqual(imgdata1.width, 10, "imgdata1.width", "10"); + assert.strictEqual(imgdata1.height, 10, "imgdata1.height", "10"); + assert.strictEqual(imgdata2.width, 10, "imgdata2.width", "10"); + assert.strictEqual(imgdata2.height, 10, "imgdata2.height", "10"); + }); + + it("2d.imageData.get.nonpremul", function () { + // getImageData() returns non-premultiplied colors + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "rgba(255, 255, 255, 0.5)"; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(10, 10, 10, 10); + assert(imgdata.data[0] > 200, 'imgdata.data["' + 0 + '"] > 200'); + assert(imgdata.data[1] > 200, 'imgdata.data["' + 1 + '"] > 200'); + assert(imgdata.data[2] > 200, 'imgdata.data["' + 2 + '"] > 200'); + assert(imgdata.data[3] > 100, 'imgdata.data["' + 3 + '"] > 100'); + assert(imgdata.data[3] < 200, 'imgdata.data["' + 3 + '"] < 200'); + }); + + it("2d.imageData.get.range", function () { + // getImageData() returns values in the range [0, 255] + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#000"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#fff"; + ctx.fillRect(20, 10, 60, 10); + var imgdata1 = ctx.getImageData(10, 5, 1, 1); + assert.strictEqual( + imgdata1.data[0], + 0, + 'imgdata1.data["' + 0 + '"]', + "0" + ); + var imgdata2 = ctx.getImageData(30, 15, 1, 1); + assert.strictEqual( + imgdata2.data[0], + 255, + 'imgdata2.data["' + 0 + '"]', + "255" + ); + }); + + it("2d.imageData.get.clamp", function () { + // getImageData() clamps colors to the range [0, 255] + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "rgb(-100, -200, -300)"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "rgb(256, 300, 400)"; + ctx.fillRect(20, 10, 60, 10); + var imgdata1 = ctx.getImageData(10, 5, 1, 1); + assert.strictEqual( + imgdata1.data[0], + 0, + 'imgdata1.data["' + 0 + '"]', + "0" + ); + assert.strictEqual( + imgdata1.data[1], + 0, + 'imgdata1.data["' + 1 + '"]', + "0" + ); + assert.strictEqual( + imgdata1.data[2], + 0, + 'imgdata1.data["' + 2 + '"]', + "0" + ); + var imgdata2 = ctx.getImageData(30, 15, 1, 1); + assert.strictEqual( + imgdata2.data[0], + 255, + 'imgdata2.data["' + 0 + '"]', + "255" + ); + assert.strictEqual( + imgdata2.data[1], + 255, + 'imgdata2.data["' + 1 + '"]', + "255" + ); + assert.strictEqual( + imgdata2.data[2], + 255, + 'imgdata2.data["' + 2 + '"]', + "255" + ); + }); + + it("2d.imageData.get.length", function () { + // getImageData() returns a correctly-sized Uint8ClampedArray + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.getImageData(0, 0, 10, 10); + assert.strictEqual( + imgdata.data.length, + imgdata.width * imgdata.height * 4, + "imgdata.data.length", + "imgdata.width*imgdata.height*4" + ); + }); + + it("2d.imageData.get.order.cols", function () { + // getImageData() returns leftmost columns first + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#fff"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#000"; + ctx.fillRect(0, 0, 2, 50); + var imgdata = ctx.getImageData(0, 0, 10, 10); + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + assert.strictEqual( + imgdata.data[Math.round((imgdata.width / 2) * 4)], + 255, + "imgdata.data[Math.round(imgdata.width/2*4)]", + "255" + ); + assert.strictEqual( + imgdata.data[Math.round((imgdata.height / 2) * imgdata.width * 4)], + 0, + "imgdata.data[Math.round((imgdata.height/2)*imgdata.width*4)]", + "0" + ); + }); + + it("2d.imageData.get.order.rows", function () { + // getImageData() returns topmost rows first + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#fff"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#000"; + ctx.fillRect(0, 0, 100, 2); + var imgdata = ctx.getImageData(0, 0, 10, 10); + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + assert.strictEqual( + imgdata.data[Math.floor((imgdata.width / 2) * 4)], + 0, + "imgdata.data[Math.floor(imgdata.width/2*4)]", + "0" + ); + assert.strictEqual( + imgdata.data[(imgdata.height / 2) * imgdata.width * 4], + 255, + "imgdata.data[(imgdata.height/2)*imgdata.width*4]", + "255" + ); + }); + + it("2d.imageData.get.order.rgb", function () { + // getImageData() returns R then G then B + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#48c"; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 10, 10); + assert.strictEqual( + imgdata.data[0], + 0x44, + 'imgdata.data["' + 0 + '"]', + "0x44" + ); + assert.strictEqual( + imgdata.data[1], + 0x88, + 'imgdata.data["' + 1 + '"]', + "0x88" + ); + assert.strictEqual( + imgdata.data[2], + 0xcc, + 'imgdata.data["' + 2 + '"]', + "0xCC" + ); + assert.strictEqual( + imgdata.data[3], + 255, + 'imgdata.data["' + 3 + '"]', + "255" + ); + assert.strictEqual( + imgdata.data[4], + 0x44, + 'imgdata.data["' + 4 + '"]', + "0x44" + ); + assert.strictEqual( + imgdata.data[5], + 0x88, + 'imgdata.data["' + 5 + '"]', + "0x88" + ); + assert.strictEqual( + imgdata.data[6], + 0xcc, + 'imgdata.data["' + 6 + '"]', + "0xCC" + ); + assert.strictEqual( + imgdata.data[7], + 255, + 'imgdata.data["' + 7 + '"]', + "255" + ); + }); + + it("2d.imageData.get.order.alpha", function () { + // getImageData() returns A in the fourth component + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "rgba(0, 0, 0, 0.5)"; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 10, 10); + assert(imgdata.data[3] < 200, 'imgdata.data["' + 3 + '"] < 200'); + assert(imgdata.data[3] > 100, 'imgdata.data["' + 3 + '"] > 100'); + }); + + it("2d.imageData.get.unaffected", function () { + // getImageData() is not affected by context state + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(50, 0, 50, 50); + ctx.save(); + ctx.translate(50, 0); + ctx.globalAlpha = 0.1; + ctx.globalCompositeOperation = "destination-atop"; + ctx.shadowColor = "#f00"; + ctx.rect(0, 0, 5, 5); + ctx.clip(); + var imgdata = ctx.getImageData(0, 0, 50, 50); + ctx.restore(); + ctx.putImageData(imgdata, 50, 0); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }); + + it.skip("2d.imageData.get.large.crash", function () { + // Test that canvas crash when image data cannot be allocated. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.throws(function () { + ctx.getImageData(10, 0xffffffff, 2147483647, 10); + }, TypeError); + }); + + it("2d.imageData.get.rounding", function () { + // Test the handling of non-integer source coordinates in getImageData(). + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + function testDimensions(sx, sy, sw, sh, width, height) { + imageData = ctx.getImageData(sx, sy, sw, sh); + assert(imageData.width == width, "imageData.width == width"); + assert(imageData.height == height, "imageData.height == height"); + } + + testDimensions(0, 0, 20, 10, 20, 10); + + testDimensions(0.1, 0.2, 20, 10, 20, 10); + testDimensions(0.9, 0.8, 20, 10, 20, 10); + + testDimensions(0, 0, 20.9, 10.9, 20, 10); + testDimensions(0, 0, 20.1, 10.1, 20, 10); + + testDimensions(-1, -1, 20, 10, 20, 10); + + testDimensions(-1.1, 0, 20, 10, 20, 10); + testDimensions(-1.9, 0, 20, 10, 20, 10); + }); + + it("2d.imageData.get.invalid", function () { + // Verify getImageData() behavior in invalid cases. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + imageData = ctx.getImageData(0, 0, 2, 2); + var testValues = [ + NaN, + true, + false, + '"garbage"', + "-1", + "0", + "1", + "2", + Infinity, + -Infinity, + -5, + -0.5, + 0, + 0.5, + 5, + 5.4, + 255, + 256, + null, + undefined, + ]; + var testResults = [ + 0, 1, 0, 0, 0, 0, 1, 2, 255, 0, 0, 0, 0, 0, 5, 5, 255, 255, 0, 0, + ]; + for (var i = 0; i < testValues.length; i++) { + imageData.data[0] = testValues[i]; + assert( + imageData.data[0] == testResults[i], + 'imageData.data["' + 0 + '"] == testResults["' + i + '"]' + ); + } + imageData.data["foo"] = "garbage"; + assert( + imageData.data["foo"] == "garbage", + "imageData.data['foo'] == 'garbage'" + ); + imageData.data[-1] = "garbage"; + assert( + imageData.data[-1] == undefined, + "imageData.data[-1] == undefined" + ); + imageData.data[17] = "garbage"; + assert( + imageData.data[17] == undefined, + 'imageData.data["' + 17 + '"] == undefined' + ); + }); + + it("2d.imageData.object.properties", function () { + // ImageData objects have the right properties + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.getImageData(0, 0, 10, 10); + assert.strictEqual( + typeof imgdata.width, + "number", + "typeof(imgdata.width)", + "'number'" + ); + assert.strictEqual( + typeof imgdata.height, + "number", + "typeof(imgdata.height)", + "'number'" + ); + assert.strictEqual( + typeof imgdata.data, + "object", + "typeof(imgdata.data)", + "'object'" + ); + }); + + it("2d.imageData.object.readonly", function () { + // ImageData objects properties are read-only + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.getImageData(0, 0, 10, 10); + var w = imgdata.width; + var h = imgdata.height; + var d = imgdata.data; + imgdata.width = 123; + imgdata.height = 123; + imgdata.data = [100, 100, 100, 100]; + assert.strictEqual(imgdata.width, w, "imgdata.width", "w"); + assert.strictEqual(imgdata.height, h, "imgdata.height", "h"); + assert.strictEqual(imgdata.data, d, "imgdata.data", "d"); + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + assert.strictEqual( + imgdata.data[1], + 0, + 'imgdata.data["' + 1 + '"]', + "0" + ); + assert.strictEqual( + imgdata.data[2], + 0, + 'imgdata.data["' + 2 + '"]', + "0" + ); + assert.strictEqual( + imgdata.data[3], + 0, + 'imgdata.data["' + 3 + '"]', + "0" + ); + }); + + it("2d.imageData.object.ctor.size", function () { + // ImageData has a usable constructor + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.notStrictEqual( + window.ImageData, + undefined, + "window.ImageData", + "undefined" + ); + + var imgdata = new window.ImageData(2, 3); + assert.strictEqual(imgdata.width, 2, "imgdata.width", "2"); + assert.strictEqual(imgdata.height, 3, "imgdata.height", "3"); + assert.strictEqual( + imgdata.data.length, + 2 * 3 * 4, + "imgdata.data.length", + "2 * 3 * 4" + ); + for (var i = 0; i < imgdata.data.length; ++i) { + assert.strictEqual( + imgdata.data[i], + 0, + 'imgdata.data["' + i + '"]', + "0" + ); + } + }); + + it("2d.imageData.object.ctor.basics", function () { + // Testing different type of ImageData constructor + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + function setRGBA(imageData, i, rgba) { + var s = i * 4; + imageData[s] = rgba[0]; + imageData[s + 1] = rgba[1]; + imageData[s + 2] = rgba[2]; + imageData[s + 3] = rgba[3]; + } + + function getRGBA(imageData, i) { + var result = []; + var s = i * 4; + for (var j = 0; j < 4; j++) { + result[j] = imageData[s + j]; + } + return result; + } + + function assertArrayEquals(actual, expected) { + assert.strictEqual( + typeof actual, + "object", + "typeof actual", + '"object"' + ); + assert.notStrictEqual(actual, null, "actual", "null"); + assert.strictEqual( + "length" in actual, + true, + '"length" in actual', + "true" + ); + assert.strictEqual( + actual.length, + expected.length, + "actual.length", + "expected.length" + ); + for (var i = 0; i < actual.length; i++) { + assert.strictEqual( + actual.hasOwnProperty(i), + expected.hasOwnProperty(i), + "actual.hasOwnProperty(i)", + "expected.hasOwnProperty(i)" + ); + assert.strictEqual( + actual[i], + expected[i], + 'actual["' + i + '"]', + 'expected["' + i + '"]' + ); + } + } + + assert.notStrictEqual(ImageData, undefined, "ImageData", "undefined"); + imageData = new ImageData(100, 50); + + assert.notStrictEqual(imageData, null, "imageData", "null"); + assert.notStrictEqual(imageData.data, null, "imageData.data", "null"); + assert.strictEqual(imageData.width, 100, "imageData.width", "100"); + assert.strictEqual(imageData.height, 50, "imageData.height", "50"); + assertArrayEquals(getRGBA(imageData.data, 4), [0, 0, 0, 0]); + + var testColor = [0, 255, 255, 128]; + setRGBA(imageData.data, 4, testColor); + assertArrayEquals(getRGBA(imageData.data, 4), testColor); + + assert.throws(function () { + new ImageData(10); + }, TypeError); + assert.throws(function () { + new ImageData(0, 10); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData(10, 0); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData("width", "height"); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData(1 << 31, 1 << 31); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData(new Uint8ClampedArray(0)); + }, TypeError); + assert.throws(function () { + new ImageData(new Uint8Array(100), 25); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData(new Uint8ClampedArray(27), 2); + }, /INVALID_STATE_ERR/); + assert.throws(function () { + new ImageData(new Uint8ClampedArray(28), 7, 0); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData(new Uint8ClampedArray(104), 14); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData(new Uint8ClampedArray([12, 34, 168, 65328]), 1, 151); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData(self, 4, 4); + }, TypeError); + assert.throws(function () { + new ImageData(null, 4, 4); + }, TypeError); + assert.throws(function () { + new ImageData(imageData.data, 0); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData(imageData.data, 13); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData(imageData.data, 1 << 31); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData(imageData.data, "biggish"); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData(imageData.data, 1 << 24, 1 << 31); + }, /INDEX_SIZE_ERR/); + assert.strictEqual( + new ImageData(new Uint8ClampedArray(28), 7).height, + 1, + "new ImageData(new Uint8ClampedArray(28), 7).height", + "1" + ); + + imageDataFromData = new ImageData(imageData.data, 100); + assert.strictEqual( + imageDataFromData.width, + 100, + "imageDataFromData.width", + "100" + ); + assert.strictEqual( + imageDataFromData.height, + 50, + "imageDataFromData.height", + "50" + ); + assert.strictEqual( + imageDataFromData.data, + imageData.data, + "imageDataFromData.data", + "imageData.data" + ); + assertArrayEquals( + getRGBA(imageDataFromData.data, 10), + getRGBA(imageData.data, 10) + ); + setRGBA(imageData.data, 10, testColor); + assertArrayEquals( + getRGBA(imageDataFromData.data, 10), + getRGBA(imageData.data, 10) + ); + + var data = new Uint8ClampedArray(400); + data[22] = 129; + imageDataFromData = new ImageData(data, 20, 5); + assert.strictEqual( + imageDataFromData.width, + 20, + "imageDataFromData.width", + "20" + ); + assert.strictEqual( + imageDataFromData.height, + 5, + "imageDataFromData.height", + "5" + ); + assert.strictEqual( + imageDataFromData.data, + data, + "imageDataFromData.data", + "data" + ); + assertArrayEquals(getRGBA(imageDataFromData.data, 2), getRGBA(data, 2)); + setRGBA(imageDataFromData.data, 2, testColor); + assertArrayEquals(getRGBA(imageDataFromData.data, 2), getRGBA(data, 2)); + + if (window.SharedArrayBuffer) { + assert.throws(function () { + new ImageData(new Uint16Array(new SharedArrayBuffer(32)), 4, 2); + }, TypeError); + } + }); + + it("2d.imageData.object.ctor.array", function () { + // ImageData has a usable constructor + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.notStrictEqual( + window.ImageData, + undefined, + "window.ImageData", + "undefined" + ); + + var array = new Uint8ClampedArray(8); + var imgdata = new window.ImageData(array, 1, 2); + assert.strictEqual(imgdata.width, 1, "imgdata.width", "1"); + assert.strictEqual(imgdata.height, 2, "imgdata.height", "2"); + assert.strictEqual(imgdata.data, array, "imgdata.data", "array"); + }); + + it("2d.imageData.object.ctor.array.bounds", function () { + // ImageData has a usable constructor + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.notStrictEqual( + window.ImageData, + undefined, + "window.ImageData", + "undefined" + ); + + assert.throws(function () { + new ImageData(new Uint8ClampedArray(0), 1); + }, /INVALID_STATE_ERR/); + assert.throws(function () { + new ImageData(new Uint8ClampedArray(3), 1); + }, /INVALID_STATE_ERR/); + assert.throws(function () { + new ImageData(new Uint8ClampedArray(4), 0); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData(new Uint8ClampedArray(4), 1, 2); + }, /INDEX_SIZE_ERR/); + assert.throws(function () { + new ImageData(new Uint8Array(8), 1, 2); + }, TypeError); + assert.throws(function () { + new ImageData(new Int8Array(8), 1, 2); + }, TypeError); + }); + + it("2d.imageData.object.set", function () { + // ImageData.data can be modified + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 100; + assert.strictEqual( + imgdata.data[0], + 100, + 'imgdata.data["' + 0 + '"]', + "100" + ); + imgdata.data[0] = 200; + assert.strictEqual( + imgdata.data[0], + 200, + 'imgdata.data["' + 0 + '"]', + "200" + ); + }); + + it("2d.imageData.object.undefined", function () { + // ImageData.data converts undefined to 0 + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 100; + imgdata.data[0] = undefined; + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + }); + + it("2d.imageData.object.nan", function () { + // ImageData.data converts NaN to 0 + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 100; + imgdata.data[0] = NaN; + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + imgdata.data[0] = 100; + imgdata.data[0] = "cheese"; + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + }); + + it("2d.imageData.object.string", function () { + // ImageData.data converts strings to numbers with ToNumber + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 100; + imgdata.data[0] = "110"; + assert.strictEqual( + imgdata.data[0], + 110, + 'imgdata.data["' + 0 + '"]', + "110" + ); + imgdata.data[0] = 100; + imgdata.data[0] = "0x78"; + assert.strictEqual( + imgdata.data[0], + 120, + 'imgdata.data["' + 0 + '"]', + "120" + ); + imgdata.data[0] = 100; + imgdata.data[0] = " +130e0 "; + assert.strictEqual( + imgdata.data[0], + 130, + 'imgdata.data["' + 0 + '"]', + "130" + ); + }); + + it("2d.imageData.object.clamp", function () { + // ImageData.data clamps numbers to [0, 255] + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.getImageData(0, 0, 10, 10); + + imgdata.data[0] = 100; + imgdata.data[0] = 300; + assert.strictEqual( + imgdata.data[0], + 255, + 'imgdata.data["' + 0 + '"]', + "255" + ); + imgdata.data[0] = 100; + imgdata.data[0] = -100; + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + + imgdata.data[0] = 100; + imgdata.data[0] = 200 + Math.pow(2, 32); + assert.strictEqual( + imgdata.data[0], + 255, + 'imgdata.data["' + 0 + '"]', + "255" + ); + imgdata.data[0] = 100; + imgdata.data[0] = -200 - Math.pow(2, 32); + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + + imgdata.data[0] = 100; + imgdata.data[0] = Math.pow(10, 39); + assert.strictEqual( + imgdata.data[0], + 255, + 'imgdata.data["' + 0 + '"]', + "255" + ); + imgdata.data[0] = 100; + imgdata.data[0] = -Math.pow(10, 39); + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + + imgdata.data[0] = 100; + imgdata.data[0] = -Infinity; + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + imgdata.data[0] = 100; + imgdata.data[0] = Infinity; + assert.strictEqual( + imgdata.data[0], + 255, + 'imgdata.data["' + 0 + '"]', + "255" + ); + }); + + it("2d.imageData.object.round", function () { + // ImageData.data rounds numbers with round-to-zero + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 0.499; + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + imgdata.data[0] = 0.5; + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + imgdata.data[0] = 0.501; + assert.strictEqual( + imgdata.data[0], + 1, + 'imgdata.data["' + 0 + '"]', + "1" + ); + imgdata.data[0] = 1.499; + assert.strictEqual( + imgdata.data[0], + 1, + 'imgdata.data["' + 0 + '"]', + "1" + ); + imgdata.data[0] = 1.5; + assert.strictEqual( + imgdata.data[0], + 2, + 'imgdata.data["' + 0 + '"]', + "2" + ); + imgdata.data[0] = 1.501; + assert.strictEqual( + imgdata.data[0], + 2, + 'imgdata.data["' + 0 + '"]', + "2" + ); + imgdata.data[0] = 2.5; + assert.strictEqual( + imgdata.data[0], + 2, + 'imgdata.data["' + 0 + '"]', + "2" + ); + imgdata.data[0] = 3.5; + assert.strictEqual( + imgdata.data[0], + 4, + 'imgdata.data["' + 0 + '"]', + "4" + ); + imgdata.data[0] = 252.5; + assert.strictEqual( + imgdata.data[0], + 252, + 'imgdata.data["' + 0 + '"]', + "252" + ); + imgdata.data[0] = 253.5; + assert.strictEqual( + imgdata.data[0], + 254, + 'imgdata.data["' + 0 + '"]', + "254" + ); + imgdata.data[0] = 254.5; + assert.strictEqual( + imgdata.data[0], + 254, + 'imgdata.data["' + 0 + '"]', + "254" + ); + imgdata.data[0] = 256.5; + assert.strictEqual( + imgdata.data[0], + 255, + 'imgdata.data["' + 0 + '"]', + "255" + ); + imgdata.data[0] = -0.5; + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + imgdata.data[0] = -1.5; + assert.strictEqual( + imgdata.data[0], + 0, + 'imgdata.data["' + 0 + '"]', + "0" + ); + }); + + it("2d.imageData.put.null", function () { + // putImageData() with null imagedata throws TypeError + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.throws(function () { + ctx.putImageData(null, 0, 0); + }, TypeError); + }); + + it("2d.imageData.put.nonfinite", function () { + // putImageData() throws TypeError if arguments are not finite + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.getImageData(0, 0, 10, 10); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, -Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, NaN, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, -Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, NaN); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, 10, 10, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, -Infinity, 10, 10, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, NaN, 10, 10, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, Infinity, 10, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, -Infinity, 10, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, NaN, 10, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, Infinity, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, -Infinity, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, NaN, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, 10, Infinity, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, 10, -Infinity, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, 10, NaN, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, 10, 10, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, 10, 10, -Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, 10, 10, NaN, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, 10, 10, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, 10, 10, 10, -Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, 10, 10, 10, NaN); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, Infinity, 10, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, Infinity, Infinity, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + Infinity, + Infinity, + Infinity, + 10, + 10 + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + Infinity, + Infinity, + Infinity, + Infinity, + 10 + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + Infinity, + Infinity, + Infinity, + Infinity, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + Infinity, + Infinity, + Infinity, + 10, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + Infinity, + Infinity, + 10, + Infinity, + 10 + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + Infinity, + Infinity, + 10, + Infinity, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + Infinity, + Infinity, + 10, + 10, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, Infinity, 10, Infinity, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + Infinity, + 10, + Infinity, + Infinity, + 10 + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + Infinity, + 10, + Infinity, + Infinity, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + Infinity, + 10, + Infinity, + 10, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, Infinity, 10, 10, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + Infinity, + 10, + 10, + Infinity, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, Infinity, 10, 10, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, 10, Infinity, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, 10, Infinity, Infinity, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + 10, + Infinity, + Infinity, + Infinity, + 10 + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + 10, + Infinity, + Infinity, + Infinity, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + 10, + Infinity, + Infinity, + 10, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, 10, Infinity, 10, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + 10, + Infinity, + 10, + Infinity, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, 10, Infinity, 10, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, 10, 10, Infinity, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, 10, 10, Infinity, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + Infinity, + 10, + 10, + Infinity, + Infinity, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, 10, 10, Infinity, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, 10, 10, 10, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, 10, 10, 10, Infinity, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, Infinity, 10, 10, 10, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, Infinity, Infinity, 10, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, Infinity, Infinity, Infinity, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + 10, + Infinity, + Infinity, + Infinity, + Infinity, + 10 + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + 10, + Infinity, + Infinity, + Infinity, + Infinity, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + 10, + Infinity, + Infinity, + Infinity, + 10, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, Infinity, Infinity, 10, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + 10, + Infinity, + Infinity, + 10, + Infinity, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, Infinity, Infinity, 10, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, Infinity, 10, Infinity, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, Infinity, 10, Infinity, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + 10, + Infinity, + 10, + Infinity, + Infinity, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, Infinity, 10, Infinity, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, Infinity, 10, 10, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, Infinity, 10, 10, Infinity, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, Infinity, 10, 10, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, Infinity, Infinity, 10, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, Infinity, Infinity, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData( + imgdata, + 10, + 10, + Infinity, + Infinity, + Infinity, + Infinity + ); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, Infinity, Infinity, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, Infinity, 10, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, Infinity, 10, Infinity, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, Infinity, 10, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, 10, Infinity, Infinity, 10); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, 10, Infinity, Infinity, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, 10, Infinity, 10, Infinity); + }, TypeError); + assert.throws(function () { + ctx.putImageData(imgdata, 10, 10, 10, 10, Infinity, Infinity); + }, TypeError); + }); + + it("2d.imageData.put.basic", function () { + // putImageData() puts image data from getImageData() onto the canvas + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.putImageData(imgdata, 0, 0); + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.imageData.put.created", function () { + // putImageData() puts image data from createImageData() onto the canvas + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = ctx.createImageData(100, 50); + for (var i = 0; i < imgdata.data.length; i += 4) { + imgdata.data[i] = 0; + imgdata.data[i + 1] = 255; + imgdata.data[i + 2] = 0; + imgdata.data[i + 3] = 255; + } + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.putImageData(imgdata, 0, 0); + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.imageData.put.wrongtype", function () { + // putImageData() does not accept non-ImageData objects + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var imgdata = { width: 1, height: 1, data: [255, 0, 0, 255] }; + assert.throws(function () { + ctx.putImageData(imgdata, 0, 0); + }, TypeError); + assert.throws(function () { + ctx.putImageData("cheese", 0, 0); + }, TypeError); + assert.throws(function () { + ctx.putImageData(42, 0, 0); + }, TypeError); + }); + + it("2d.imageData.put.cross", function () { + // putImageData() accepts image data got from a different canvas + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var canvas2 = document.createElement("canvas"); + var ctx2 = canvas2.getContext("2d"); + ctx2.fillStyle = "#0f0"; + ctx2.fillRect(0, 0, 100, 50); + var imgdata = ctx2.getImageData(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.putImageData(imgdata, 0, 0); + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.imageData.put.alpha", function () { + // putImageData() puts non-solid image data correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "rgba(0, 255, 0, 0.25)"; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.putImageData(imgdata, 0, 0); + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 64); + }); + + it("2d.imageData.put.modified", function () { + // putImageData() puts modified image data correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(45, 20, 10, 10); + var imgdata = ctx.getImageData(45, 20, 10, 10); + for ( + var i = 0, len = imgdata.width * imgdata.height * 4; + i < len; + i += 4 + ) { + imgdata.data[i] = 0; + imgdata.data[i + 1] = 255; + } + ctx.putImageData(imgdata, 45, 20); + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.imageData.put.dirty.zero", function () { + // putImageData() with zero-sized dirty rectangle puts nothing + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.putImageData(imgdata, 0, 0, 0, 0, 0, 0); + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.imageData.put.dirty.rect1", function () { + // putImageData() only modifies areas inside the dirty rectangle, using width and height + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 20, 20); + + var imgdata = ctx.getImageData(0, 0, 100, 50); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(40, 20, 20, 20); + ctx.putImageData(imgdata, 40, 20, 0, 0, 20, 20); + + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 35, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 65, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 50, 15, 0, 255, 0, 255); + _assertPixelApprox(canvas, 50, 45, 0, 255, 0, 255); + }); + + it("2d.imageData.put.dirty.rect2", function () { + // putImageData() only modifies areas inside the dirty rectangle, using x and y + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.fillRect(60, 30, 20, 20); + + var imgdata = ctx.getImageData(0, 0, 100, 50); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(40, 20, 20, 20); + ctx.putImageData(imgdata, -20, -10, 60, 30, 20, 20); + + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 35, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 65, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 50, 15, 0, 255, 0, 255); + _assertPixelApprox(canvas, 50, 45, 0, 255, 0, 255); + }); + + it("2d.imageData.put.dirty.negative", function () { + // putImageData() handles negative-sized dirty rectangles correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 20, 20); + + var imgdata = ctx.getImageData(0, 0, 100, 50); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(40, 20, 20, 20); + ctx.putImageData(imgdata, 40, 20, 20, 20, -20, -20); + + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 35, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 65, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 50, 15, 0, 255, 0, 255); + _assertPixelApprox(canvas, 50, 45, 0, 255, 0, 255); + }); + + it("2d.imageData.put.dirty.outside", function () { + // putImageData() handles dirty rectangles outside the canvas correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + var imgdata = ctx.getImageData(0, 0, 100, 50); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.putImageData(imgdata, 100, 20, 20, 20, -20, -20); + ctx.putImageData(imgdata, 200, 200, 0, 0, 100, 50); + ctx.putImageData(imgdata, 40, 20, -30, -20, 30, 20); + ctx.putImageData(imgdata, -30, 20, 0, 0, 30, 20); + + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 98, 15, 0, 255, 0, 255); + _assertPixelApprox(canvas, 98, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 98, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 1, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 1, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 1, 45, 0, 255, 0, 255); + }); + + it("2d.imageData.put.unchanged", function () { + // putImageData(getImageData(...), ...) has no effect + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var i = 0; + for (var y = 0; y < 16; ++y) { + for (var x = 0; x < 16; ++x, ++i) { + ctx.fillStyle = + "rgba(" + + i + + "," + + (Math.floor(i * 1.5) % 256) + + "," + + (Math.floor(i * 23.3) % 256) + + "," + + i / 256 + + ")"; + ctx.fillRect(x, y, 1, 1); + } + } + var imgdata1 = ctx.getImageData(0.1, 0.2, 15.8, 15.9); + var olddata = []; + for (var i = 0; i < imgdata1.data.length; ++i) + olddata[i] = imgdata1.data[i]; + + ctx.putImageData(imgdata1, 0.1, 0.2); + + var imgdata2 = ctx.getImageData(0.1, 0.2, 15.8, 15.9); + for (var i = 0; i < imgdata2.data.length; ++i) { + assert.strictEqual( + olddata[i], + imgdata2.data[i], + 'olddata["' + i + '"]', + 'imgdata2.data["' + i + '"]' + ); + } + }); + + it("2d.imageData.put.unaffected", function () { + // putImageData() is not affected by context state + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.globalAlpha = 0.1; + ctx.globalCompositeOperation = "destination-atop"; + ctx.shadowColor = "#f00"; + ctx.shadowBlur = 1; + ctx.translate(100, 50); + ctx.scale(0.1, 0.1); + ctx.putImageData(imgdata, 0, 0); + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.imageData.put.clip", function () { + // putImageData() is not affected by clipping regions + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.rect(0, 0, 50, 50); + ctx.clip(); + ctx.putImageData(imgdata, 0, 0); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.imageData.put.path", function () { + // putImageData() does not affect the current path + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.putImageData(imgdata, 0, 0); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + }); }); diff --git a/test/wpt/generated/shadows.js b/test/wpt/generated/shadows.js index 91a138519..e123d9c48 100644 --- a/test/wpt/generated/shadows.js +++ b/test/wpt/generated/shadows.js @@ -1,1203 +1,1329 @@ // THIS FILE WAS AUTO-GENERATED. DO NOT EDIT BY HAND. -const assert = require('assert'); -const path = require('path'); +const assert = require("assert"); +const path = require("path"); const { - createCanvas, - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - CanvasPattern, - CanvasGradient -} = require('../../..'); + createCanvas, + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + CanvasPattern, + CanvasGradient, +} = require("../../.."); const window = { - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - Uint8ClampedArray, - CanvasPattern, - CanvasGradient + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + Uint8ClampedArray, + CanvasPattern, + CanvasGradient, }; const document = { - createElement(type, ...args) { - if (type !== "canvas") - throw new Error(`createElement(${type}) not supported`); - return createCanvas(...args); - } + createElement(type, ...args) { + if (type !== "canvas") + throw new Error(`createElement(${type}) not supported`); + return createCanvas(...args); + }, }; function _getPixel(canvas, x, y) { - const ctx = canvas.getContext('2d'); - const imgdata = ctx.getImageData(x, y, 1, 1); - return [ imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3] ]; + const ctx = canvas.getContext("2d"); + const imgdata = ctx.getImageData(x, y, 1, 1); + return [imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3]]; } -function _assertApprox(actual, expected, epsilon=0, msg="") { - assert(typeof actual === "number", "actual should be a number but got a ${typeof type_actual}"); - - // The epsilon math below does not place nice with NaN and Infinity - // But in this case Infinity = Infinity and NaN = NaN - if (isFinite(actual) || isFinite(expected)) { - assert(Math.abs(actual - expected) <= epsilon, - `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}`); - } else { - assert.strictEqual(actual, expected); - } +function _assertApprox(actual, expected, epsilon = 0, msg = "") { + assert( + typeof actual === "number", + "actual should be a number but got a ${typeof type_actual}" + ); + + // The epsilon math below does not place nice with NaN and Infinity + // But in this case Infinity = Infinity and NaN = NaN + if (isFinite(actual) || isFinite(expected)) { + assert( + Math.abs(actual - expected) <= epsilon, + `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}` + ); + } else { + assert.strictEqual(actual, expected); + } } function _assertPixel(canvas, x, y, r, g, b, a, pos, color) { - const c = _getPixel(canvas, x,y); - assert.strictEqual(c[0], r, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[1], g, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[2], b, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[3], a, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + assert.strictEqual( + c[0], + r, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[1], + g, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[2], + b, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[3], + a, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function _assertPixelApprox(canvas, x, y, r, g, b, a, pos, color, tolerance) { - const c = _getPixel(canvas, x,y); - _assertApprox(c[0], r, tolerance, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[1], g, tolerance, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[2], b, tolerance, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[3], a, tolerance, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + _assertApprox( + c[0], + r, + tolerance, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[1], + g, + tolerance, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[2], + b, + tolerance, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[3], + a, + tolerance, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function assert_throws_js(Type, fn) { - assert.throws(fn, Type); + assert.throws(fn, Type); } // Used by font tests to allow fonts to load. function deferTest() {} class Test { - // Two cases of this in the tests, look unnecessary. - done() {} - // Used by font tests to allow fonts to load. - step_func_done(func) { func(); } - // Used for image onload callback. - step_func(func) { func(); } + // Two cases of this in the tests, look unnecessary. + done() {} + // Used by font tests to allow fonts to load. + step_func_done(func) { + func(); + } + // Used for image onload callback. + step_func(func) { + func(); + } } function step_timeout(result, time) { - // Nothing; code needs to be converted for this to work. + // Nothing; code needs to be converted for this to work. } describe("WPT: shadows", function () { - - it("2d.shadow.attributes.shadowBlur.initial", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.shadowBlur, 0, "ctx.shadowBlur", "0") - }); - - it("2d.shadow.attributes.shadowBlur.valid", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.shadowBlur = 1; - assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1") - - ctx.shadowBlur = 0.5; - assert.strictEqual(ctx.shadowBlur, 0.5, "ctx.shadowBlur", "0.5") - - ctx.shadowBlur = 1e6; - assert.strictEqual(ctx.shadowBlur, 1e6, "ctx.shadowBlur", "1e6") - - ctx.shadowBlur = 0; - assert.strictEqual(ctx.shadowBlur, 0, "ctx.shadowBlur", "0") - }); - - it("2d.shadow.attributes.shadowBlur.invalid", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.shadowBlur = 1; - ctx.shadowBlur = -2; - assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1") - - ctx.shadowBlur = 1; - ctx.shadowBlur = Infinity; - assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1") - - ctx.shadowBlur = 1; - ctx.shadowBlur = -Infinity; - assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1") - - ctx.shadowBlur = 1; - ctx.shadowBlur = NaN; - assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1") - - ctx.shadowBlur = 1; - ctx.shadowBlur = 'string'; - assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1") - - ctx.shadowBlur = 1; - ctx.shadowBlur = true; - assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1") - - ctx.shadowBlur = 1; - ctx.shadowBlur = false; - assert.strictEqual(ctx.shadowBlur, 0, "ctx.shadowBlur", "0") - }); - - it("2d.shadow.attributes.shadowOffset.initial", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0") - assert.strictEqual(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0") - }); - - it("2d.shadow.attributes.shadowOffset.valid", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - assert.strictEqual(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1") - assert.strictEqual(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2") - - ctx.shadowOffsetX = 0.5; - ctx.shadowOffsetY = 0.25; - assert.strictEqual(ctx.shadowOffsetX, 0.5, "ctx.shadowOffsetX", "0.5") - assert.strictEqual(ctx.shadowOffsetY, 0.25, "ctx.shadowOffsetY", "0.25") - - ctx.shadowOffsetX = -0.5; - ctx.shadowOffsetY = -0.25; - assert.strictEqual(ctx.shadowOffsetX, -0.5, "ctx.shadowOffsetX", "-0.5") - assert.strictEqual(ctx.shadowOffsetY, -0.25, "ctx.shadowOffsetY", "-0.25") - - ctx.shadowOffsetX = 0; - ctx.shadowOffsetY = 0; - assert.strictEqual(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0") - assert.strictEqual(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0") - - ctx.shadowOffsetX = 1e6; - ctx.shadowOffsetY = 1e6; - assert.strictEqual(ctx.shadowOffsetX, 1e6, "ctx.shadowOffsetX", "1e6") - assert.strictEqual(ctx.shadowOffsetY, 1e6, "ctx.shadowOffsetY", "1e6") - }); - - it("2d.shadow.attributes.shadowOffset.invalid", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - ctx.shadowOffsetX = Infinity; - ctx.shadowOffsetY = Infinity; - assert.strictEqual(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1") - assert.strictEqual(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2") - - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - ctx.shadowOffsetX = -Infinity; - ctx.shadowOffsetY = -Infinity; - assert.strictEqual(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1") - assert.strictEqual(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2") - - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - ctx.shadowOffsetX = NaN; - ctx.shadowOffsetY = NaN; - assert.strictEqual(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1") - assert.strictEqual(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2") - - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - ctx.shadowOffsetX = 'string'; - ctx.shadowOffsetY = 'string'; - assert.strictEqual(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1") - assert.strictEqual(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2") - - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - ctx.shadowOffsetX = true; - ctx.shadowOffsetY = true; - assert.strictEqual(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1") - assert.strictEqual(ctx.shadowOffsetY, 1, "ctx.shadowOffsetY", "1") - - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - ctx.shadowOffsetX = false; - ctx.shadowOffsetY = false; - assert.strictEqual(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0") - assert.strictEqual(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0") - }); - - it("2d.shadow.attributes.shadowColor.initial", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.shadowColor, 'rgba(0, 0, 0, 0)', "ctx.shadowColor", "'rgba(0, 0, 0, 0)'") - }); - - it("2d.shadow.attributes.shadowColor.valid", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.shadowColor = 'lime'; - assert.strictEqual(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'") - - ctx.shadowColor = 'RGBA(0,255, 0,0)'; - assert.strictEqual(ctx.shadowColor, 'rgba(0, 255, 0, 0)', "ctx.shadowColor", "'rgba(0, 255, 0, 0)'") - }); - - it("2d.shadow.attributes.shadowColor.invalid", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.shadowColor = '#00ff00'; - ctx.shadowColor = 'bogus'; - assert.strictEqual(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'") - - ctx.shadowColor = '#00ff00'; - ctx.shadowColor = 'red bogus'; - assert.strictEqual(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'") - - ctx.shadowColor = '#00ff00'; - ctx.shadowColor = ctx; - assert.strictEqual(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'") - - ctx.shadowColor = '#00ff00'; - ctx.shadowColor = undefined; - assert.strictEqual(ctx.shadowColor, '#00ff00', "ctx.shadowColor", "'#00ff00'") - }); - - it("2d.shadow.enable.off.1", function () { - // Shadows are not drawn when only shadowColor is set - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.shadowColor = '#f00'; - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.enable.off.2", function () { - // Shadows are not drawn when only shadowColor is set - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.globalCompositeOperation = 'destination-atop'; - ctx.shadowColor = '#f00'; - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.enable.blur", function () { - // Shadows are drawn if shadowBlur is set - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.globalCompositeOperation = 'destination-atop'; - ctx.shadowColor = '#0f0'; - ctx.shadowBlur = 0.1; - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.enable.x", function () { - // Shadows are drawn if shadowOffsetX is set - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.globalCompositeOperation = 'destination-atop'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = 0.1; - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.enable.y", function () { - // Shadows are drawn if shadowOffsetY is set - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.globalCompositeOperation = 'destination-atop'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 0.1; - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.offset.positiveX", function () { - // Shadows can be offset with positive x - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = 50; - ctx.fillRect(0, 0, 50, 50); - _assertPixel(canvas, 25,25, 0,255,0,255); - _assertPixel(canvas, 75,25, 0,255,0,255); - }); - - it("2d.shadow.offset.negativeX", function () { - // Shadows can be offset with negative x - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = -50; - ctx.fillRect(50, 0, 50, 50); - _assertPixel(canvas, 25,25, 0,255,0,255); - _assertPixel(canvas, 75,25, 0,255,0,255); - }); - - it("2d.shadow.offset.positiveY", function () { - // Shadows can be offset with positive y - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 25; - ctx.fillRect(0, 0, 100, 25); - _assertPixel(canvas, 50,12, 0,255,0,255); - _assertPixel(canvas, 50,37, 0,255,0,255); - }); - - it("2d.shadow.offset.negativeY", function () { - // Shadows can be offset with negative y - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = -25; - ctx.fillRect(0, 25, 100, 25); - _assertPixel(canvas, 50,12, 0,255,0,255); - _assertPixel(canvas, 50,37, 0,255,0,255); - }); - - it("2d.shadow.outside", function () { - // Shadows of shapes outside the visible area can be offset onto the visible area - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = 100; - ctx.fillRect(-100, 0, 25, 50); - ctx.shadowOffsetX = -100; - ctx.fillRect(175, 0, 25, 50); - ctx.shadowOffsetX = 0; - ctx.shadowOffsetY = 100; - ctx.fillRect(25, -100, 50, 25); - ctx.shadowOffsetY = -100; - ctx.fillRect(25, 125, 50, 25); - _assertPixel(canvas, 12,25, 0,255,0,255); - _assertPixel(canvas, 87,25, 0,255,0,255); - _assertPixel(canvas, 50,12, 0,255,0,255); - _assertPixel(canvas, 50,37, 0,255,0,255); - }); - - it("2d.shadow.clip.1", function () { - // Shadows of clipped shapes are still drawn within the clipping region - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(50, 0, 50, 50); - - ctx.save(); - ctx.beginPath(); - ctx.rect(50, 0, 50, 50); - ctx.clip(); - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = 50; - ctx.fillRect(0, 0, 50, 50); - ctx.restore(); - - _assertPixel(canvas, 25,25, 0,255,0,255); - _assertPixel(canvas, 75,25, 0,255,0,255); - }); - - it("2d.shadow.clip.2", function () { - // Shadows are not drawn outside the clipping region - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(50, 0, 50, 50); - - ctx.save(); - ctx.beginPath(); - ctx.rect(0, 0, 50, 50); - ctx.clip(); - ctx.shadowColor = '#f00'; - ctx.shadowOffsetX = 50; - ctx.fillRect(0, 0, 50, 50); - ctx.restore(); - - _assertPixel(canvas, 25,25, 0,255,0,255); - _assertPixel(canvas, 75,25, 0,255,0,255); - }); - - it("2d.shadow.clip.3", function () { - // Shadows of clipped shapes are still drawn within the clipping region - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(50, 0, 50, 50); - - ctx.save(); - ctx.beginPath(); - ctx.rect(0, 0, 50, 50); - ctx.clip(); - ctx.fillStyle = '#f00'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = 50; - ctx.fillRect(-50, 0, 50, 50); - ctx.restore(); - - _assertPixel(canvas, 25,25, 0,255,0,255); - _assertPixel(canvas, 75,25, 0,255,0,255); - }); - - it("2d.shadow.stroke.basic", function () { - // Shadows are drawn for strokes - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 50; - ctx.beginPath(); - ctx.lineWidth = 50; - ctx.moveTo(0, -25); - ctx.lineTo(100, -25); - ctx.stroke(); - - _assertPixel(canvas, 1,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 98,25, 0,255,0,255); - }); - - it("2d.shadow.stroke.cap.1", function () { - // Shadows are not drawn for areas outside stroke caps - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.shadowColor = '#f00'; - ctx.shadowOffsetY = 50; - ctx.beginPath(); - ctx.lineWidth = 50; - ctx.lineCap = 'butt'; - ctx.moveTo(-50, -25); - ctx.lineTo(0, -25); - ctx.moveTo(100, -25); - ctx.lineTo(150, -25); - ctx.stroke(); - - _assertPixel(canvas, 1,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 98,25, 0,255,0,255); - }); - - it("2d.shadow.stroke.cap.2", function () { - // Shadows are drawn for stroke caps - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 50; - ctx.beginPath(); - ctx.lineWidth = 50; - ctx.lineCap = 'square'; - ctx.moveTo(25, -25); - ctx.lineTo(75, -25); - ctx.stroke(); - - _assertPixel(canvas, 1,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 98,25, 0,255,0,255); - }); - - it("2d.shadow.stroke.join.1", function () { - // Shadows are not drawn for areas outside stroke joins - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.shadowColor = '#f00'; - ctx.shadowOffsetX = 100; - ctx.lineWidth = 200; - ctx.lineJoin = 'bevel'; - ctx.beginPath(); - ctx.moveTo(-200, -50); - ctx.lineTo(-150, -50); - ctx.lineTo(-151, -100); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.shadow.stroke.join.2", function () { - // Shadows are drawn for stroke joins - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(50, 0, 50, 50); - ctx.strokeStyle = '#f00'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = 100; - ctx.lineWidth = 200; - ctx.lineJoin = 'miter'; - ctx.beginPath(); - ctx.moveTo(-200, -50); - ctx.lineTo(-150, -50); - ctx.lineTo(-151, -100); - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.shadow.stroke.join.3", function () { - // Shadows are drawn for stroke joins respecting miter limit - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.shadowColor = '#f00'; - ctx.shadowOffsetX = 100; - ctx.lineWidth = 200; - ctx.lineJoin = 'miter'; - ctx.miterLimit = 0.1; - ctx.beginPath(); - ctx.moveTo(-200, -50); - ctx.lineTo(-150, -50); - ctx.lineTo(-151, -100); // (not an exact right angle, to avoid some other bug in Firefox 3) - ctx.stroke(); - - _assertPixel(canvas, 1,1, 0,255,0,255); - _assertPixel(canvas, 48,48, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 98,48, 0,255,0,255); - }); - - it("2d.shadow.image.basic", function () { - // Shadows are drawn for images - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 50; - ctx.drawImage(document.getElementById('red.png'), 0, -50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.image.transparent.1", function () { - // Shadows are not drawn for transparent images - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#f00'; - ctx.shadowOffsetY = 50; - ctx.drawImage(document.getElementById('transparent.png'), 0, -50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.image.transparent.2", function () { - // Shadows are not drawn for transparent parts of images - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(50, 0, 50, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.drawImage(document.getElementById('redtransparent.png'), 50, -50); - ctx.shadowColor = '#f00'; - ctx.drawImage(document.getElementById('redtransparent.png'), -50, -50); - - _assertPixel(canvas, 25,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 75,25, 0,255,0,255); - }); - - it("2d.shadow.image.alpha", function () { - // Shadows are drawn correctly for partially-transparent images - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#00f'; - ctx.drawImage(document.getElementById('transparent50.png'), 0, -50); - - _assertPixelApprox(canvas, 50,25, 127,0,127,255); - }); - - it("2d.shadow.image.section", function () { - // Shadows are not drawn for areas outside image source rectangles - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#f00'; - ctx.drawImage(document.getElementById('redtransparent.png'), 50, 0, 50, 50, 0, -50, 50, 50); - - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }); - - it("2d.shadow.image.scale", function () { - // Shadows are drawn correctly for scaled images - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.drawImage(document.getElementById('redtransparent.png'), 0, 0, 100, 50, -10, -50, 240, 50); - - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }); - - it("2d.shadow.canvas.basic", function () { - // Shadows are drawn for canvases - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = '#f00'; - ctx2.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 50; - ctx.drawImage(canvas2, 0, -50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.canvas.transparent.1", function () { - // Shadows are not drawn for transparent canvases - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var ctx2 = canvas2.getContext('2d'); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#f00'; - ctx.shadowOffsetY = 50; - ctx.drawImage(canvas2, 0, -50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.canvas.transparent.2", function () { - // Shadows are not drawn for transparent parts of canvases - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = '#f00'; - ctx2.fillRect(0, 0, 50, 50); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(50, 0, 50, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.drawImage(canvas2, 50, -50); - ctx.shadowColor = '#f00'; - ctx.drawImage(canvas2, -50, -50); - - _assertPixel(canvas, 25,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 75,25, 0,255,0,255); - }); - - it("2d.shadow.canvas.alpha", function () { - // Shadows are drawn correctly for partially-transparent canvases - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = 'rgba(255, 0, 0, 0.5)'; - ctx2.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#00f'; - ctx.drawImage(canvas2, 0, -50); - - _assertPixelApprox(canvas, 50,25, 127,0,127,255); - }); - - it("2d.shadow.pattern.basic", function () { - // Shadows are drawn for fill patterns - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var pattern = ctx.createPattern(document.getElementById('red.png'), 'repeat'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 50; - ctx.fillStyle = pattern; - ctx.fillRect(0, -50, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.pattern.transparent.1", function () { - // Shadows are not drawn for transparent fill patterns - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var pattern = ctx.createPattern(document.getElementById('transparent.png'), 'repeat'); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#f00'; - ctx.shadowOffsetY = 50; - ctx.fillStyle = pattern; - ctx.fillRect(0, -50, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.pattern.transparent.2", function () { - // Shadows are not drawn for transparent parts of fill patterns - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var pattern = ctx.createPattern(document.getElementById('redtransparent.png'), 'repeat'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(50, 0, 50, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.fillStyle = pattern; - ctx.fillRect(0, -50, 100, 50); - - _assertPixel(canvas, 25,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 75,25, 0,255,0,255); - }); - - it("2d.shadow.pattern.alpha", function () { - // Shadows are drawn correctly for partially-transparent fill patterns - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var pattern = ctx.createPattern(document.getElementById('transparent50.png'), 'repeat'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#00f'; - ctx.fillStyle = pattern; - ctx.fillRect(0, -50, 100, 50); - - _assertPixelApprox(canvas, 50,25, 127,0,127,255); - }); - - it("2d.shadow.gradient.basic", function () { - // Shadows are drawn for gradient fills - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var gradient = ctx.createLinearGradient(0, 0, 100, 0); - gradient.addColorStop(0, '#f00'); - gradient.addColorStop(1, '#f00'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 50; - ctx.fillStyle = gradient; - ctx.fillRect(0, -50, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.gradient.transparent.1", function () { - // Shadows are not drawn for transparent gradient fills - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var gradient = ctx.createLinearGradient(0, 0, 100, 0); - gradient.addColorStop(0, 'rgba(0,0,0,0)'); - gradient.addColorStop(1, 'rgba(0,0,0,0)'); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#f00'; - ctx.shadowOffsetY = 50; - ctx.fillStyle = gradient; - ctx.fillRect(0, -50, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.gradient.transparent.2", function () { - // Shadows are not drawn for transparent parts of gradient fills - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var gradient = ctx.createLinearGradient(0, 0, 100, 0); - gradient.addColorStop(0, '#f00'); - gradient.addColorStop(0.499, '#f00'); - gradient.addColorStop(0.5, 'rgba(0,0,0,0)'); - gradient.addColorStop(1, 'rgba(0,0,0,0)'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(50, 0, 50, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.fillStyle = gradient; - ctx.fillRect(0, -50, 100, 50); - - _assertPixel(canvas, 25,25, 0,255,0,255); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 75,25, 0,255,0,255); - }); - - it("2d.shadow.gradient.alpha", function () { - // Shadows are drawn correctly for partially-transparent gradient fills - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var gradient = ctx.createLinearGradient(0, 0, 100, 0); - gradient.addColorStop(0, 'rgba(255,0,0,0.5)'); - gradient.addColorStop(1, 'rgba(255,0,0,0.5)'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#00f'; - ctx.fillStyle = gradient; - ctx.fillRect(0, -50, 100, 50); - - _assertPixelApprox(canvas, 50,25, 127,0,127,255); - }); - - it("2d.shadow.transform.1", function () { - // Shadows take account of transformations - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.translate(100, 100); - ctx.fillRect(-100, -150, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.transform.2", function () { - // Shadow offsets are not affected by transformations - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.rotate(Math.PI) - ctx.fillRect(-100, 0, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.blur.low", function () { - // Shadows look correct for small blurs - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#ff0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#00f'; - ctx.shadowOffsetY = 25; - for (var x = 0; x < 100; ++x) { - ctx.save(); - ctx.beginPath(); - ctx.rect(x, 0, 1, 50); - ctx.clip(); - ctx.shadowBlur = x; - ctx.fillRect(-200, -200, 500, 200); - ctx.restore(); - } - }); - - it("2d.shadow.blur.high", function () { - // Shadows look correct for large blurs - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#ff0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#00f'; - ctx.shadowOffsetY = 0; - ctx.shadowBlur = 100; - ctx.fillRect(-200, -200, 200, 400); - }); - - it("2d.shadow.alpha.1", function () { - // Shadow color alpha components are used - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = 'rgba(255, 0, 0, 0.01)'; - ctx.shadowOffsetY = 50; - ctx.fillRect(0, -50, 100, 50); - - _assertPixelApprox(canvas, 50,25, 0,255,0,255, 4); - }); - - it("2d.shadow.alpha.2", function () { - // Shadow color alpha components are used - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = 'rgba(0, 0, 255, 0.5)'; - ctx.shadowOffsetY = 50; - ctx.fillRect(0, -50, 100, 50); - - _assertPixelApprox(canvas, 50,25, 127,0,127,255); - }); - - it("2d.shadow.alpha.3", function () { - // Shadows are affected by globalAlpha - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching) - ctx.shadowColor = '#00f'; - ctx.shadowOffsetY = 50; - ctx.globalAlpha = 0.5; - ctx.fillRect(0, -50, 100, 50); - - _assertPixelApprox(canvas, 50,25, 127,0,127,255); - }); - - it("2d.shadow.alpha.4", function () { - // Shadows with alpha components are correctly affected by globalAlpha - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching) - ctx.shadowColor = 'rgba(0, 0, 255, 0.707)'; - ctx.shadowOffsetY = 50; - ctx.globalAlpha = 0.707; - ctx.fillRect(0, -50, 100, 50); - - _assertPixelApprox(canvas, 50,25, 127,0,127,255); - }); - - it("2d.shadow.alpha.5", function () { - // Shadows of shapes with alpha components are drawn correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = 'rgba(64, 0, 0, 0.5)'; - ctx.shadowColor = '#00f'; - ctx.shadowOffsetY = 50; - ctx.fillRect(0, -50, 100, 50); - - _assertPixelApprox(canvas, 50,25, 127,0,127,255); - }); - - it("2d.shadow.composite.1", function () { - // Shadows are drawn using globalCompositeOperation - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = 'xor'; - ctx.shadowColor = '#f00'; - ctx.shadowOffsetX = 100; - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, 0, 200, 50); - - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.composite.2", function () { - // Shadows are drawn using globalCompositeOperation - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = 'xor'; - ctx.shadowColor = '#f00'; - ctx.shadowBlur = 1; - ctx.fillStyle = '#0f0'; - ctx.fillRect(-10, -10, 120, 70); - - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - }); - - it("2d.shadow.composite.3", function () { - // Areas outside shadows are drawn correctly with destination-out - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = 'destination-out'; - ctx.shadowColor = '#f00'; - ctx.shadowBlur = 10; - ctx.fillStyle = '#f00'; - ctx.fillRect(200, 0, 100, 50); - - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 50,25, 0,255,0,255); - }); + it("2d.shadow.attributes.shadowBlur.initial", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual(ctx.shadowBlur, 0, "ctx.shadowBlur", "0"); + }); + + it("2d.shadow.attributes.shadowBlur.valid", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.shadowBlur = 1; + assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1"); + + ctx.shadowBlur = 0.5; + assert.strictEqual(ctx.shadowBlur, 0.5, "ctx.shadowBlur", "0.5"); + + ctx.shadowBlur = 1e6; + assert.strictEqual(ctx.shadowBlur, 1e6, "ctx.shadowBlur", "1e6"); + + ctx.shadowBlur = 0; + assert.strictEqual(ctx.shadowBlur, 0, "ctx.shadowBlur", "0"); + }); + + it("2d.shadow.attributes.shadowBlur.invalid", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.shadowBlur = 1; + ctx.shadowBlur = -2; + assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1"); + + ctx.shadowBlur = 1; + ctx.shadowBlur = Infinity; + assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1"); + + ctx.shadowBlur = 1; + ctx.shadowBlur = -Infinity; + assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1"); + + ctx.shadowBlur = 1; + ctx.shadowBlur = NaN; + assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1"); + + ctx.shadowBlur = 1; + ctx.shadowBlur = "string"; + assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1"); + + ctx.shadowBlur = 1; + ctx.shadowBlur = true; + assert.strictEqual(ctx.shadowBlur, 1, "ctx.shadowBlur", "1"); + + ctx.shadowBlur = 1; + ctx.shadowBlur = false; + assert.strictEqual(ctx.shadowBlur, 0, "ctx.shadowBlur", "0"); + }); + + it("2d.shadow.attributes.shadowOffset.initial", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0"); + assert.strictEqual(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0"); + }); + + it("2d.shadow.attributes.shadowOffset.valid", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + assert.strictEqual(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1"); + assert.strictEqual(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2"); + + ctx.shadowOffsetX = 0.5; + ctx.shadowOffsetY = 0.25; + assert.strictEqual(ctx.shadowOffsetX, 0.5, "ctx.shadowOffsetX", "0.5"); + assert.strictEqual( + ctx.shadowOffsetY, + 0.25, + "ctx.shadowOffsetY", + "0.25" + ); + + ctx.shadowOffsetX = -0.5; + ctx.shadowOffsetY = -0.25; + assert.strictEqual( + ctx.shadowOffsetX, + -0.5, + "ctx.shadowOffsetX", + "-0.5" + ); + assert.strictEqual( + ctx.shadowOffsetY, + -0.25, + "ctx.shadowOffsetY", + "-0.25" + ); + + ctx.shadowOffsetX = 0; + ctx.shadowOffsetY = 0; + assert.strictEqual(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0"); + assert.strictEqual(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0"); + + ctx.shadowOffsetX = 1e6; + ctx.shadowOffsetY = 1e6; + assert.strictEqual(ctx.shadowOffsetX, 1e6, "ctx.shadowOffsetX", "1e6"); + assert.strictEqual(ctx.shadowOffsetY, 1e6, "ctx.shadowOffsetY", "1e6"); + }); + + it("2d.shadow.attributes.shadowOffset.invalid", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = Infinity; + ctx.shadowOffsetY = Infinity; + assert.strictEqual(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1"); + assert.strictEqual(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2"); + + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = -Infinity; + ctx.shadowOffsetY = -Infinity; + assert.strictEqual(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1"); + assert.strictEqual(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2"); + + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = NaN; + ctx.shadowOffsetY = NaN; + assert.strictEqual(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1"); + assert.strictEqual(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2"); + + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = "string"; + ctx.shadowOffsetY = "string"; + assert.strictEqual(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1"); + assert.strictEqual(ctx.shadowOffsetY, 2, "ctx.shadowOffsetY", "2"); + + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = true; + ctx.shadowOffsetY = true; + assert.strictEqual(ctx.shadowOffsetX, 1, "ctx.shadowOffsetX", "1"); + assert.strictEqual(ctx.shadowOffsetY, 1, "ctx.shadowOffsetY", "1"); + + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = false; + ctx.shadowOffsetY = false; + assert.strictEqual(ctx.shadowOffsetX, 0, "ctx.shadowOffsetX", "0"); + assert.strictEqual(ctx.shadowOffsetY, 0, "ctx.shadowOffsetY", "0"); + }); + + it("2d.shadow.attributes.shadowColor.initial", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + ctx.shadowColor, + "rgba(0, 0, 0, 0)", + "ctx.shadowColor", + "'rgba(0, 0, 0, 0)'" + ); + }); + + it("2d.shadow.attributes.shadowColor.valid", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.shadowColor = "lime"; + assert.strictEqual( + ctx.shadowColor, + "#00ff00", + "ctx.shadowColor", + "'#00ff00'" + ); + + ctx.shadowColor = "RGBA(0,255, 0,0)"; + assert.strictEqual( + ctx.shadowColor, + "rgba(0, 255, 0, 0)", + "ctx.shadowColor", + "'rgba(0, 255, 0, 0)'" + ); + }); + + it("2d.shadow.attributes.shadowColor.invalid", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.shadowColor = "#00ff00"; + ctx.shadowColor = "bogus"; + assert.strictEqual( + ctx.shadowColor, + "#00ff00", + "ctx.shadowColor", + "'#00ff00'" + ); + + ctx.shadowColor = "#00ff00"; + ctx.shadowColor = "red bogus"; + assert.strictEqual( + ctx.shadowColor, + "#00ff00", + "ctx.shadowColor", + "'#00ff00'" + ); + + ctx.shadowColor = "#00ff00"; + ctx.shadowColor = ctx; + assert.strictEqual( + ctx.shadowColor, + "#00ff00", + "ctx.shadowColor", + "'#00ff00'" + ); + + ctx.shadowColor = "#00ff00"; + ctx.shadowColor = undefined; + assert.strictEqual( + ctx.shadowColor, + "#00ff00", + "ctx.shadowColor", + "'#00ff00'" + ); + }); + + it("2d.shadow.enable.off.1", function () { + // Shadows are not drawn when only shadowColor is set + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.shadowColor = "#f00"; + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.enable.off.2", function () { + // Shadows are not drawn when only shadowColor is set + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.globalCompositeOperation = "destination-atop"; + ctx.shadowColor = "#f00"; + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.enable.blur", function () { + // Shadows are drawn if shadowBlur is set + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.globalCompositeOperation = "destination-atop"; + ctx.shadowColor = "#0f0"; + ctx.shadowBlur = 0.1; + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.enable.x", function () { + // Shadows are drawn if shadowOffsetX is set + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.globalCompositeOperation = "destination-atop"; + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetX = 0.1; + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.enable.y", function () { + // Shadows are drawn if shadowOffsetY is set + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.globalCompositeOperation = "destination-atop"; + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetY = 0.1; + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.offset.positiveX", function () { + // Shadows can be offset with positive x + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetX = 50; + ctx.fillRect(0, 0, 50, 50); + _assertPixel(canvas, 25, 25, 0, 255, 0, 255); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.offset.negativeX", function () { + // Shadows can be offset with negative x + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetX = -50; + ctx.fillRect(50, 0, 50, 50); + _assertPixel(canvas, 25, 25, 0, 255, 0, 255); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.offset.positiveY", function () { + // Shadows can be offset with positive y + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetY = 25; + ctx.fillRect(0, 0, 100, 25); + _assertPixel(canvas, 50, 12, 0, 255, 0, 255); + _assertPixel(canvas, 50, 37, 0, 255, 0, 255); + }); + + it("2d.shadow.offset.negativeY", function () { + // Shadows can be offset with negative y + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetY = -25; + ctx.fillRect(0, 25, 100, 25); + _assertPixel(canvas, 50, 12, 0, 255, 0, 255); + _assertPixel(canvas, 50, 37, 0, 255, 0, 255); + }); + + it("2d.shadow.outside", function () { + // Shadows of shapes outside the visible area can be offset onto the visible area + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetX = 100; + ctx.fillRect(-100, 0, 25, 50); + ctx.shadowOffsetX = -100; + ctx.fillRect(175, 0, 25, 50); + ctx.shadowOffsetX = 0; + ctx.shadowOffsetY = 100; + ctx.fillRect(25, -100, 50, 25); + ctx.shadowOffsetY = -100; + ctx.fillRect(25, 125, 50, 25); + _assertPixel(canvas, 12, 25, 0, 255, 0, 255); + _assertPixel(canvas, 87, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 12, 0, 255, 0, 255); + _assertPixel(canvas, 50, 37, 0, 255, 0, 255); + }); + + it("2d.shadow.clip.1", function () { + // Shadows of clipped shapes are still drawn within the clipping region + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(50, 0, 50, 50); + + ctx.save(); + ctx.beginPath(); + ctx.rect(50, 0, 50, 50); + ctx.clip(); + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetX = 50; + ctx.fillRect(0, 0, 50, 50); + ctx.restore(); + + _assertPixel(canvas, 25, 25, 0, 255, 0, 255); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.clip.2", function () { + // Shadows are not drawn outside the clipping region + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = "#0f0"; + ctx.fillRect(50, 0, 50, 50); + + ctx.save(); + ctx.beginPath(); + ctx.rect(0, 0, 50, 50); + ctx.clip(); + ctx.shadowColor = "#f00"; + ctx.shadowOffsetX = 50; + ctx.fillRect(0, 0, 50, 50); + ctx.restore(); + + _assertPixel(canvas, 25, 25, 0, 255, 0, 255); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.clip.3", function () { + // Shadows of clipped shapes are still drawn within the clipping region + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = "#0f0"; + ctx.fillRect(50, 0, 50, 50); + + ctx.save(); + ctx.beginPath(); + ctx.rect(0, 0, 50, 50); + ctx.clip(); + ctx.fillStyle = "#f00"; + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetX = 50; + ctx.fillRect(-50, 0, 50, 50); + ctx.restore(); + + _assertPixel(canvas, 25, 25, 0, 255, 0, 255); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.stroke.basic", function () { + // Shadows are drawn for strokes + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetY = 50; + ctx.beginPath(); + ctx.lineWidth = 50; + ctx.moveTo(0, -25); + ctx.lineTo(100, -25); + ctx.stroke(); + + _assertPixel(canvas, 1, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 98, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.stroke.cap.1", function () { + // Shadows are not drawn for areas outside stroke caps + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.shadowColor = "#f00"; + ctx.shadowOffsetY = 50; + ctx.beginPath(); + ctx.lineWidth = 50; + ctx.lineCap = "butt"; + ctx.moveTo(-50, -25); + ctx.lineTo(0, -25); + ctx.moveTo(100, -25); + ctx.lineTo(150, -25); + ctx.stroke(); + + _assertPixel(canvas, 1, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 98, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.stroke.cap.2", function () { + // Shadows are drawn for stroke caps + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetY = 50; + ctx.beginPath(); + ctx.lineWidth = 50; + ctx.lineCap = "square"; + ctx.moveTo(25, -25); + ctx.lineTo(75, -25); + ctx.stroke(); + + _assertPixel(canvas, 1, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 98, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.stroke.join.1", function () { + // Shadows are not drawn for areas outside stroke joins + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.shadowColor = "#f00"; + ctx.shadowOffsetX = 100; + ctx.lineWidth = 200; + ctx.lineJoin = "bevel"; + ctx.beginPath(); + ctx.moveTo(-200, -50); + ctx.lineTo(-150, -50); + ctx.lineTo(-151, -100); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.shadow.stroke.join.2", function () { + // Shadows are drawn for stroke joins + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = "#0f0"; + ctx.fillRect(50, 0, 50, 50); + ctx.strokeStyle = "#f00"; + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetX = 100; + ctx.lineWidth = 200; + ctx.lineJoin = "miter"; + ctx.beginPath(); + ctx.moveTo(-200, -50); + ctx.lineTo(-150, -50); + ctx.lineTo(-151, -100); + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.shadow.stroke.join.3", function () { + // Shadows are drawn for stroke joins respecting miter limit + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = "#f00"; + ctx.shadowColor = "#f00"; + ctx.shadowOffsetX = 100; + ctx.lineWidth = 200; + ctx.lineJoin = "miter"; + ctx.miterLimit = 0.1; + ctx.beginPath(); + ctx.moveTo(-200, -50); + ctx.lineTo(-150, -50); + ctx.lineTo(-151, -100); // (not an exact right angle, to avoid some other bug in Firefox 3) + ctx.stroke(); + + _assertPixel(canvas, 1, 1, 0, 255, 0, 255); + _assertPixel(canvas, 48, 48, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 98, 48, 0, 255, 0, 255); + }); + + it("2d.shadow.image.basic", function () { + // Shadows are drawn for images + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetY = 50; + ctx.drawImage(document.getElementById("red.png"), 0, -50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.image.transparent.1", function () { + // Shadows are not drawn for transparent images + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = "#f00"; + ctx.shadowOffsetY = 50; + ctx.drawImage(document.getElementById("transparent.png"), 0, -50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.image.transparent.2", function () { + // Shadows are not drawn for transparent parts of images + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(50, 0, 50, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = "#0f0"; + ctx.drawImage(document.getElementById("redtransparent.png"), 50, -50); + ctx.shadowColor = "#f00"; + ctx.drawImage(document.getElementById("redtransparent.png"), -50, -50); + + _assertPixel(canvas, 25, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.image.alpha", function () { + // Shadows are drawn correctly for partially-transparent images + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = "#00f"; + ctx.drawImage(document.getElementById("transparent50.png"), 0, -50); + + _assertPixelApprox(canvas, 50, 25, 127, 0, 127, 255); + }); + + it("2d.shadow.image.section", function () { + // Shadows are not drawn for areas outside image source rectangles + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = "#f00"; + ctx.drawImage( + document.getElementById("redtransparent.png"), + 50, + 0, + 50, + 50, + 0, + -50, + 50, + 50 + ); + + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.image.scale", function () { + // Shadows are drawn correctly for scaled images + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = "#0f0"; + ctx.drawImage( + document.getElementById("redtransparent.png"), + 0, + 0, + 100, + 50, + -10, + -50, + 240, + 50 + ); + + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.canvas.basic", function () { + // Shadows are drawn for canvases + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var canvas2 = document.createElement("canvas"); + canvas2.width = 100; + canvas2.height = 50; + var ctx2 = canvas2.getContext("2d"); + ctx2.fillStyle = "#f00"; + ctx2.fillRect(0, 0, 100, 50); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetY = 50; + ctx.drawImage(canvas2, 0, -50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.canvas.transparent.1", function () { + // Shadows are not drawn for transparent canvases + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var canvas2 = document.createElement("canvas"); + canvas2.width = 100; + canvas2.height = 50; + var ctx2 = canvas2.getContext("2d"); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = "#f00"; + ctx.shadowOffsetY = 50; + ctx.drawImage(canvas2, 0, -50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.canvas.transparent.2", function () { + // Shadows are not drawn for transparent parts of canvases + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var canvas2 = document.createElement("canvas"); + canvas2.width = 100; + canvas2.height = 50; + var ctx2 = canvas2.getContext("2d"); + ctx2.fillStyle = "#f00"; + ctx2.fillRect(0, 0, 50, 50); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(50, 0, 50, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = "#0f0"; + ctx.drawImage(canvas2, 50, -50); + ctx.shadowColor = "#f00"; + ctx.drawImage(canvas2, -50, -50); + + _assertPixel(canvas, 25, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.canvas.alpha", function () { + // Shadows are drawn correctly for partially-transparent canvases + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var canvas2 = document.createElement("canvas"); + canvas2.width = 100; + canvas2.height = 50; + var ctx2 = canvas2.getContext("2d"); + ctx2.fillStyle = "rgba(255, 0, 0, 0.5)"; + ctx2.fillRect(0, 0, 100, 50); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = "#00f"; + ctx.drawImage(canvas2, 0, -50); + + _assertPixelApprox(canvas, 50, 25, 127, 0, 127, 255); + }); + + it("2d.shadow.pattern.basic", function () { + // Shadows are drawn for fill patterns + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var pattern = ctx.createPattern( + document.getElementById("red.png"), + "repeat" + ); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetY = 50; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.pattern.transparent.1", function () { + // Shadows are not drawn for transparent fill patterns + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var pattern = ctx.createPattern( + document.getElementById("transparent.png"), + "repeat" + ); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = "#f00"; + ctx.shadowOffsetY = 50; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.pattern.transparent.2", function () { + // Shadows are not drawn for transparent parts of fill patterns + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var pattern = ctx.createPattern( + document.getElementById("redtransparent.png"), + "repeat" + ); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = "#0f0"; + ctx.fillRect(50, 0, 50, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = "#0f0"; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + + _assertPixel(canvas, 25, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.pattern.alpha", function () { + // Shadows are drawn correctly for partially-transparent fill patterns + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var pattern = ctx.createPattern( + document.getElementById("transparent50.png"), + "repeat" + ); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = "#00f"; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + + _assertPixelApprox(canvas, 50, 25, 127, 0, 127, 255); + }); + + it("2d.shadow.gradient.basic", function () { + // Shadows are drawn for gradient fills + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var gradient = ctx.createLinearGradient(0, 0, 100, 0); + gradient.addColorStop(0, "#f00"); + gradient.addColorStop(1, "#f00"); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = "#0f0"; + ctx.shadowOffsetY = 50; + ctx.fillStyle = gradient; + ctx.fillRect(0, -50, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.gradient.transparent.1", function () { + // Shadows are not drawn for transparent gradient fills + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var gradient = ctx.createLinearGradient(0, 0, 100, 0); + gradient.addColorStop(0, "rgba(0,0,0,0)"); + gradient.addColorStop(1, "rgba(0,0,0,0)"); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = "#f00"; + ctx.shadowOffsetY = 50; + ctx.fillStyle = gradient; + ctx.fillRect(0, -50, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.gradient.transparent.2", function () { + // Shadows are not drawn for transparent parts of gradient fills + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var gradient = ctx.createLinearGradient(0, 0, 100, 0); + gradient.addColorStop(0, "#f00"); + gradient.addColorStop(0.499, "#f00"); + gradient.addColorStop(0.5, "rgba(0,0,0,0)"); + gradient.addColorStop(1, "rgba(0,0,0,0)"); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = "#0f0"; + ctx.fillRect(50, 0, 50, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = "#0f0"; + ctx.fillStyle = gradient; + ctx.fillRect(0, -50, 100, 50); + + _assertPixel(canvas, 25, 25, 0, 255, 0, 255); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.gradient.alpha", function () { + // Shadows are drawn correctly for partially-transparent gradient fills + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var gradient = ctx.createLinearGradient(0, 0, 100, 0); + gradient.addColorStop(0, "rgba(255,0,0,0.5)"); + gradient.addColorStop(1, "rgba(255,0,0,0.5)"); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = "#00f"; + ctx.fillStyle = gradient; + ctx.fillRect(0, -50, 100, 50); + + _assertPixelApprox(canvas, 50, 25, 127, 0, 127, 255); + }); + + it("2d.shadow.transform.1", function () { + // Shadows take account of transformations + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = "#0f0"; + ctx.translate(100, 100); + ctx.fillRect(-100, -150, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.transform.2", function () { + // Shadow offsets are not affected by transformations + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = "#0f0"; + ctx.rotate(Math.PI); + ctx.fillRect(-100, 0, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.blur.low", function () { + // Shadows look correct for small blurs + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#ff0"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = "#00f"; + ctx.shadowOffsetY = 25; + for (var x = 0; x < 100; ++x) { + ctx.save(); + ctx.beginPath(); + ctx.rect(x, 0, 1, 50); + ctx.clip(); + ctx.shadowBlur = x; + ctx.fillRect(-200, -200, 500, 200); + ctx.restore(); + } + }); + + it("2d.shadow.blur.high", function () { + // Shadows look correct for large blurs + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#ff0"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = "#00f"; + ctx.shadowOffsetY = 0; + ctx.shadowBlur = 100; + ctx.fillRect(-200, -200, 200, 400); + }); + + it("2d.shadow.alpha.1", function () { + // Shadow color alpha components are used + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = "rgba(255, 0, 0, 0.01)"; + ctx.shadowOffsetY = 50; + ctx.fillRect(0, -50, 100, 50); + + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255, 4); + }); + + it("2d.shadow.alpha.2", function () { + // Shadow color alpha components are used + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = "rgba(0, 0, 255, 0.5)"; + ctx.shadowOffsetY = 50; + ctx.fillRect(0, -50, 100, 50); + + _assertPixelApprox(canvas, 50, 25, 127, 0, 127, 255); + }); + + it("2d.shadow.alpha.3", function () { + // Shadows are affected by globalAlpha + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; // (work around broken Firefox globalAlpha caching) + ctx.shadowColor = "#00f"; + ctx.shadowOffsetY = 50; + ctx.globalAlpha = 0.5; + ctx.fillRect(0, -50, 100, 50); + + _assertPixelApprox(canvas, 50, 25, 127, 0, 127, 255); + }); + + it("2d.shadow.alpha.4", function () { + // Shadows with alpha components are correctly affected by globalAlpha + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; // (work around broken Firefox globalAlpha caching) + ctx.shadowColor = "rgba(0, 0, 255, 0.707)"; + ctx.shadowOffsetY = 50; + ctx.globalAlpha = 0.707; + ctx.fillRect(0, -50, 100, 50); + + _assertPixelApprox(canvas, 50, 25, 127, 0, 127, 255); + }); + + it("2d.shadow.alpha.5", function () { + // Shadows of shapes with alpha components are drawn correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "rgba(64, 0, 0, 0.5)"; + ctx.shadowColor = "#00f"; + ctx.shadowOffsetY = 50; + ctx.fillRect(0, -50, 100, 50); + + _assertPixelApprox(canvas, 50, 25, 127, 0, 127, 255); + }); + + it("2d.shadow.composite.1", function () { + // Shadows are drawn using globalCompositeOperation + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = "xor"; + ctx.shadowColor = "#f00"; + ctx.shadowOffsetX = 100; + ctx.fillStyle = "#0f0"; + ctx.fillRect(-100, 0, 200, 50); + + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.composite.2", function () { + // Shadows are drawn using globalCompositeOperation + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = "xor"; + ctx.shadowColor = "#f00"; + ctx.shadowBlur = 1; + ctx.fillStyle = "#0f0"; + ctx.fillRect(-10, -10, 120, 70); + + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.shadow.composite.3", function () { + // Areas outside shadows are drawn correctly with destination-out + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = "destination-out"; + ctx.shadowColor = "#f00"; + ctx.shadowBlur = 10; + ctx.fillStyle = "#f00"; + ctx.fillRect(200, 0, 100, 50); + + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 50, 25, 0, 255, 0, 255); + }); }); diff --git a/test/wpt/generated/text-styles.js b/test/wpt/generated/text-styles.js index 3c227841e..5feb6fe46 100644 --- a/test/wpt/generated/text-styles.js +++ b/test/wpt/generated/text-styles.js @@ -1,614 +1,838 @@ // THIS FILE WAS AUTO-GENERATED. DO NOT EDIT BY HAND. -const assert = require('assert'); -const path = require('path'); +const assert = require("assert"); +const path = require("path"); const { - createCanvas, - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - CanvasPattern, - CanvasGradient -} = require('../../..'); + createCanvas, + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + CanvasPattern, + CanvasGradient, +} = require("../../.."); const window = { - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - Uint8ClampedArray, - CanvasPattern, - CanvasGradient + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + Uint8ClampedArray, + CanvasPattern, + CanvasGradient, }; const document = { - createElement(type, ...args) { - if (type !== "canvas") - throw new Error(`createElement(${type}) not supported`); - return createCanvas(...args); - } + createElement(type, ...args) { + if (type !== "canvas") + throw new Error(`createElement(${type}) not supported`); + return createCanvas(...args); + }, }; function _getPixel(canvas, x, y) { - const ctx = canvas.getContext('2d'); - const imgdata = ctx.getImageData(x, y, 1, 1); - return [ imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3] ]; + const ctx = canvas.getContext("2d"); + const imgdata = ctx.getImageData(x, y, 1, 1); + return [imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3]]; } -function _assertApprox(actual, expected, epsilon=0, msg="") { - assert(typeof actual === "number", "actual should be a number but got a ${typeof type_actual}"); - - // The epsilon math below does not place nice with NaN and Infinity - // But in this case Infinity = Infinity and NaN = NaN - if (isFinite(actual) || isFinite(expected)) { - assert(Math.abs(actual - expected) <= epsilon, - `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}`); - } else { - assert.strictEqual(actual, expected); - } +function _assertApprox(actual, expected, epsilon = 0, msg = "") { + assert( + typeof actual === "number", + "actual should be a number but got a ${typeof type_actual}" + ); + + // The epsilon math below does not place nice with NaN and Infinity + // But in this case Infinity = Infinity and NaN = NaN + if (isFinite(actual) || isFinite(expected)) { + assert( + Math.abs(actual - expected) <= epsilon, + `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}` + ); + } else { + assert.strictEqual(actual, expected); + } } function _assertPixel(canvas, x, y, r, g, b, a, pos, color) { - const c = _getPixel(canvas, x,y); - assert.strictEqual(c[0], r, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[1], g, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[2], b, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[3], a, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + assert.strictEqual( + c[0], + r, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[1], + g, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[2], + b, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[3], + a, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function _assertPixelApprox(canvas, x, y, r, g, b, a, pos, color, tolerance) { - const c = _getPixel(canvas, x,y); - _assertApprox(c[0], r, tolerance, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[1], g, tolerance, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[2], b, tolerance, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[3], a, tolerance, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + _assertApprox( + c[0], + r, + tolerance, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[1], + g, + tolerance, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[2], + b, + tolerance, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[3], + a, + tolerance, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function assert_throws_js(Type, fn) { - assert.throws(fn, Type); + assert.throws(fn, Type); } // Used by font tests to allow fonts to load. function deferTest() {} class Test { - // Two cases of this in the tests, look unnecessary. - done() {} - // Used by font tests to allow fonts to load. - step_func_done(func) { func(); } - // Used for image onload callback. - step_func(func) { func(); } + // Two cases of this in the tests, look unnecessary. + done() {} + // Used by font tests to allow fonts to load. + step_func_done(func) { + func(); + } + // Used for image onload callback. + step_func(func) { + func(); + } } function step_timeout(result, time) { - // Nothing; code needs to be converted for this to work. + // Nothing; code needs to be converted for this to work. } describe("WPT: text-styles", function () { - - it("2d.text.font.parse.basic", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '20px serif'; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - - ctx.font = '20PX SERIF'; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - }); - - it("2d.text.font.parse.tiny", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '1px sans-serif'; - assert.strictEqual(ctx.font, '1px sans-serif', "ctx.font", "'1px sans-serif'") - }); - - it("2d.text.font.parse.complex", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = 'small-caps italic 400 12px/2 Unknown Font, sans-serif'; - assert.strictEqual(ctx.font, 'italic small-caps 12px "Unknown Font", sans-serif', "ctx.font", "'italic small-caps 12px \"Unknown Font\", sans-serif'") - }); - - it("2d.text.font.parse.family", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","'; - assert.strictEqual(ctx.font, '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","', "ctx.font", "'20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, \"QuotedFont\\\\\\\\\\\\\",\"'") - }); - - it("2d.text.font.parse.size.percentage", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50% serif'; - assert.strictEqual(ctx.font, '72px serif', "ctx.font", "'72px serif'") - canvas.setAttribute('style', 'font-size: 100px'); - assert.strictEqual(ctx.font, '72px serif', "ctx.font", "'72px serif'") - }); - - it("2d.text.font.parse.size.percentage.default", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var canvas2 = document.createElement('canvas'); - var ctx2 = canvas2.getContext('2d'); - ctx2.font = '1000% serif'; - assert.strictEqual(ctx2.font, '100px serif', "ctx2.font", "'100px serif'") - }); - - it("2d.text.font.parse.system", function () { - // System fonts must be computed to explicit values - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = 'message-box'; - assert.notStrictEqual(ctx.font, 'message-box', "ctx.font", "'message-box'"); - }); - - it("2d.text.font.parse.invalid", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '20px serif'; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - - ctx.font = '20px serif'; - ctx.font = ''; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - - ctx.font = '20px serif'; - ctx.font = 'bogus'; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - - ctx.font = '20px serif'; - ctx.font = 'inherit'; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - - ctx.font = '20px serif'; - ctx.font = '10px {bogus}'; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - - ctx.font = '20px serif'; - ctx.font = '10px initial'; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - - ctx.font = '20px serif'; - ctx.font = '10px default'; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - - ctx.font = '20px serif'; - ctx.font = '10px inherit'; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - - ctx.font = '20px serif'; - ctx.font = '10px revert'; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - - ctx.font = '20px serif'; - ctx.font = 'var(--x)'; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - - ctx.font = '20px serif'; - ctx.font = 'var(--x, 10px serif)'; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - - ctx.font = '20px serif'; - ctx.font = '1em serif; background: green; margin: 10px'; - assert.strictEqual(ctx.font, '20px serif', "ctx.font", "'20px serif'") - }); - - it("2d.text.font.default", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.font, '10px sans-serif', "ctx.font", "'10px sans-serif'") - }); - - it("2d.text.font.relative_size", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var canvas2 = document.createElement('canvas'); - var ctx2 = canvas2.getContext('2d'); - ctx2.font = '1em sans-serif'; - assert.strictEqual(ctx2.font, '10px sans-serif', "ctx2.font", "'10px sans-serif'") - }); - - it("2d.text.align.valid", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.textAlign = 'start'; - assert.strictEqual(ctx.textAlign, 'start', "ctx.textAlign", "'start'") - - ctx.textAlign = 'end'; - assert.strictEqual(ctx.textAlign, 'end', "ctx.textAlign", "'end'") - - ctx.textAlign = 'left'; - assert.strictEqual(ctx.textAlign, 'left', "ctx.textAlign", "'left'") - - ctx.textAlign = 'right'; - assert.strictEqual(ctx.textAlign, 'right', "ctx.textAlign", "'right'") - - ctx.textAlign = 'center'; - assert.strictEqual(ctx.textAlign, 'center', "ctx.textAlign", "'center'") - }); - - it("2d.text.align.invalid", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.textAlign = 'start'; - ctx.textAlign = 'bogus'; - assert.strictEqual(ctx.textAlign, 'start', "ctx.textAlign", "'start'") - - ctx.textAlign = 'start'; - ctx.textAlign = 'END'; - assert.strictEqual(ctx.textAlign, 'start', "ctx.textAlign", "'start'") - - ctx.textAlign = 'start'; - ctx.textAlign = 'end '; - assert.strictEqual(ctx.textAlign, 'start', "ctx.textAlign", "'start'") - - ctx.textAlign = 'start'; - ctx.textAlign = 'end\0'; - assert.strictEqual(ctx.textAlign, 'start', "ctx.textAlign", "'start'") - }); - - it("2d.text.align.default", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.textAlign, 'start', "ctx.textAlign", "'start'") - }); - - it("2d.text.baseline.valid", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.textBaseline = 'top'; - assert.strictEqual(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'") - - ctx.textBaseline = 'hanging'; - assert.strictEqual(ctx.textBaseline, 'hanging', "ctx.textBaseline", "'hanging'") - - ctx.textBaseline = 'middle'; - assert.strictEqual(ctx.textBaseline, 'middle', "ctx.textBaseline", "'middle'") - - ctx.textBaseline = 'alphabetic'; - assert.strictEqual(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'") - - ctx.textBaseline = 'ideographic'; - assert.strictEqual(ctx.textBaseline, 'ideographic', "ctx.textBaseline", "'ideographic'") - - ctx.textBaseline = 'bottom'; - assert.strictEqual(ctx.textBaseline, 'bottom', "ctx.textBaseline", "'bottom'") - }); - - it("2d.text.baseline.invalid", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.textBaseline = 'top'; - ctx.textBaseline = 'bogus'; - assert.strictEqual(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'") - - ctx.textBaseline = 'top'; - ctx.textBaseline = 'MIDDLE'; - assert.strictEqual(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'") - - ctx.textBaseline = 'top'; - ctx.textBaseline = 'middle '; - assert.strictEqual(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'") - - ctx.textBaseline = 'top'; - ctx.textBaseline = 'middle\0'; - assert.strictEqual(ctx.textBaseline, 'top', "ctx.textBaseline", "'top'") - }); - - it("2d.text.baseline.default", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.textBaseline, 'alphabetic', "ctx.textBaseline", "'alphabetic'") - }); - - it("2d.text.draw.baseline.top", function () { - // textBaseline top is the top of the em square (not the bounding box) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textBaseline = 'top'; - ctx.fillText('CC', 0, 0); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - _assertPixelApprox(canvas, 5,45, 0,255,0,255); - _assertPixelApprox(canvas, 95,45, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.baseline.bottom", function () { - // textBaseline bottom is the bottom of the em square (not the bounding box) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textBaseline = 'bottom'; - ctx.fillText('CC', 0, 50); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - _assertPixelApprox(canvas, 5,45, 0,255,0,255); - _assertPixelApprox(canvas, 95,45, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.baseline.middle", function () { - // textBaseline middle is the middle of the em square (not the bounding box) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textBaseline = 'middle'; - ctx.fillText('CC', 0, 25); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - _assertPixelApprox(canvas, 5,45, 0,255,0,255); - _assertPixelApprox(canvas, 95,45, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.baseline.alphabetic", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textBaseline = 'alphabetic'; - ctx.fillText('CC', 0, 37.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - _assertPixelApprox(canvas, 5,45, 0,255,0,255); - _assertPixelApprox(canvas, 95,45, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.baseline.ideographic", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textBaseline = 'ideographic'; - ctx.fillText('CC', 0, 31.25); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - _assertPixelApprox(canvas, 5,45, 0,255,0,255); - _assertPixelApprox(canvas, 95,45, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.baseline.hanging", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textBaseline = 'hanging'; - ctx.fillText('CC', 0, 12.5); - _assertPixelApprox(canvas, 5,5, 0,255,0,255); - _assertPixelApprox(canvas, 95,5, 0,255,0,255); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - _assertPixelApprox(canvas, 5,45, 0,255,0,255); - _assertPixelApprox(canvas, 95,45, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.space.collapse.space", function () { - // Space characters are converted to U+0020, and collapsed (per CSS) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('E EE', -100, 37.5); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.space.collapse.other", function () { - // Space characters are converted to U+0020, and collapsed (per CSS) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('E \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dEE', -100, 37.5); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.space.collapse.start", function () { - // Space characters at the start of a line are collapsed (per CSS) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText(' EE', 0, 37.5); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }), 500); - }); - - it("2d.text.draw.space.collapse.end", function () { - // Space characters at the end of a line are collapsed (per CSS) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'right'; - ctx.fillText('EE ', 100, 37.5); - _assertPixelApprox(canvas, 25,25, 0,255,0,255); - _assertPixelApprox(canvas, 75,25, 0,255,0,255); - }), 500); - }); - - it("2d.text.measure.width.space", function () { - // Space characters are converted to U+0020 and collapsed (per CSS) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - assert.strictEqual(ctx.measureText('A B').width, 150, "ctx.measureText('A B').width", "150") - assert.strictEqual(ctx.measureText('A B').width, 200, "ctx.measureText('A B').width", "200") - assert.strictEqual(ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width, 150, "ctx.measureText('A \\x09\\x0a\\x0c\\x0d \\x09\\x0a\\x0c\\x0dB').width", "150") - assert(ctx.measureText('A \x0b B').width >= 200, "ctx.measureText('A \\x0b B').width >= 200"); - - assert.strictEqual(ctx.measureText(' AB').width, 100, "ctx.measureText(' AB').width", "100") - assert.strictEqual(ctx.measureText('AB ').width, 100, "ctx.measureText('AB ').width", "100") - }), 500); - }); - }); - - it("2d.text.measure.rtl.text", function () { - // Measurement should follow canvas direction instead text direction - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - metrics = ctx.measureText('اَلْعَرَبِيَّةُ'); - assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight"); - - metrics = ctx.measureText('hello'); - assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight"); - }); - - it("2d.text.measure.boundingBox.textAlign", function () { - // Measurement should be related to textAlignment - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.textAlign = "right"; - metrics = ctx.measureText('hello'); - assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight"); - - ctx.textAlign = "left" - metrics = ctx.measureText('hello'); - assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight"); - }); - - it("2d.text.measure.boundingBox.direction", function () { - // Measurement should follow text direction - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.direction = "ltr"; - metrics = ctx.measureText('hello'); - assert(metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight"); - - ctx.direction = "rtl"; - metrics = ctx.measureText('hello'); - assert(metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight"); - }); + it("2d.text.font.parse.basic", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "20px serif"; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + + ctx.font = "20PX SERIF"; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + }); + + it("2d.text.font.parse.tiny", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "1px sans-serif"; + assert.strictEqual( + ctx.font, + "1px sans-serif", + "ctx.font", + "'1px sans-serif'" + ); + }); + + it("2d.text.font.parse.complex", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "small-caps italic 400 12px/2 Unknown Font, sans-serif"; + assert.strictEqual( + ctx.font, + 'italic small-caps 12px "Unknown Font", sans-serif', + "ctx.font", + "'italic small-caps 12px \"Unknown Font\", sans-serif'" + ); + }); + + it("2d.text.font.parse.family", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = + '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","'; + assert.strictEqual( + ctx.font, + '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","', + "ctx.font", + '\'20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\\\\\\\","\'' + ); + }); + + it("2d.text.font.parse.size.percentage", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50% serif"; + assert.strictEqual(ctx.font, "72px serif", "ctx.font", "'72px serif'"); + canvas.setAttribute("style", "font-size: 100px"); + assert.strictEqual(ctx.font, "72px serif", "ctx.font", "'72px serif'"); + }); + + it("2d.text.font.parse.size.percentage.default", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var canvas2 = document.createElement("canvas"); + var ctx2 = canvas2.getContext("2d"); + ctx2.font = "1000% serif"; + assert.strictEqual( + ctx2.font, + "100px serif", + "ctx2.font", + "'100px serif'" + ); + }); + + it("2d.text.font.parse.system", function () { + // System fonts must be computed to explicit values + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "message-box"; + assert.notStrictEqual( + ctx.font, + "message-box", + "ctx.font", + "'message-box'" + ); + }); + + it("2d.text.font.parse.invalid", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "20px serif"; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + + ctx.font = "20px serif"; + ctx.font = ""; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + + ctx.font = "20px serif"; + ctx.font = "bogus"; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + + ctx.font = "20px serif"; + ctx.font = "inherit"; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + + ctx.font = "20px serif"; + ctx.font = "10px {bogus}"; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + + ctx.font = "20px serif"; + ctx.font = "10px initial"; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + + ctx.font = "20px serif"; + ctx.font = "10px default"; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + + ctx.font = "20px serif"; + ctx.font = "10px inherit"; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + + ctx.font = "20px serif"; + ctx.font = "10px revert"; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + + ctx.font = "20px serif"; + ctx.font = "var(--x)"; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + + ctx.font = "20px serif"; + ctx.font = "var(--x, 10px serif)"; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + + ctx.font = "20px serif"; + ctx.font = "1em serif; background: green; margin: 10px"; + assert.strictEqual(ctx.font, "20px serif", "ctx.font", "'20px serif'"); + }); + + it("2d.text.font.default", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + ctx.font, + "10px sans-serif", + "ctx.font", + "'10px sans-serif'" + ); + }); + + it("2d.text.font.relative_size", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var canvas2 = document.createElement("canvas"); + var ctx2 = canvas2.getContext("2d"); + ctx2.font = "1em sans-serif"; + assert.strictEqual( + ctx2.font, + "10px sans-serif", + "ctx2.font", + "'10px sans-serif'" + ); + }); + + it("2d.text.align.valid", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.textAlign = "start"; + assert.strictEqual(ctx.textAlign, "start", "ctx.textAlign", "'start'"); + + ctx.textAlign = "end"; + assert.strictEqual(ctx.textAlign, "end", "ctx.textAlign", "'end'"); + + ctx.textAlign = "left"; + assert.strictEqual(ctx.textAlign, "left", "ctx.textAlign", "'left'"); + + ctx.textAlign = "right"; + assert.strictEqual(ctx.textAlign, "right", "ctx.textAlign", "'right'"); + + ctx.textAlign = "center"; + assert.strictEqual( + ctx.textAlign, + "center", + "ctx.textAlign", + "'center'" + ); + }); + + it("2d.text.align.invalid", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.textAlign = "start"; + ctx.textAlign = "bogus"; + assert.strictEqual(ctx.textAlign, "start", "ctx.textAlign", "'start'"); + + ctx.textAlign = "start"; + ctx.textAlign = "END"; + assert.strictEqual(ctx.textAlign, "start", "ctx.textAlign", "'start'"); + + ctx.textAlign = "start"; + ctx.textAlign = "end "; + assert.strictEqual(ctx.textAlign, "start", "ctx.textAlign", "'start'"); + + ctx.textAlign = "start"; + ctx.textAlign = "end\0"; + assert.strictEqual(ctx.textAlign, "start", "ctx.textAlign", "'start'"); + }); + + it("2d.text.align.default", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual(ctx.textAlign, "start", "ctx.textAlign", "'start'"); + }); + + it("2d.text.baseline.valid", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.textBaseline = "top"; + assert.strictEqual( + ctx.textBaseline, + "top", + "ctx.textBaseline", + "'top'" + ); + + ctx.textBaseline = "hanging"; + assert.strictEqual( + ctx.textBaseline, + "hanging", + "ctx.textBaseline", + "'hanging'" + ); + + ctx.textBaseline = "middle"; + assert.strictEqual( + ctx.textBaseline, + "middle", + "ctx.textBaseline", + "'middle'" + ); + + ctx.textBaseline = "alphabetic"; + assert.strictEqual( + ctx.textBaseline, + "alphabetic", + "ctx.textBaseline", + "'alphabetic'" + ); + + ctx.textBaseline = "ideographic"; + assert.strictEqual( + ctx.textBaseline, + "ideographic", + "ctx.textBaseline", + "'ideographic'" + ); + + ctx.textBaseline = "bottom"; + assert.strictEqual( + ctx.textBaseline, + "bottom", + "ctx.textBaseline", + "'bottom'" + ); + }); + + it("2d.text.baseline.invalid", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.textBaseline = "top"; + ctx.textBaseline = "bogus"; + assert.strictEqual( + ctx.textBaseline, + "top", + "ctx.textBaseline", + "'top'" + ); + + ctx.textBaseline = "top"; + ctx.textBaseline = "MIDDLE"; + assert.strictEqual( + ctx.textBaseline, + "top", + "ctx.textBaseline", + "'top'" + ); + + ctx.textBaseline = "top"; + ctx.textBaseline = "middle "; + assert.strictEqual( + ctx.textBaseline, + "top", + "ctx.textBaseline", + "'top'" + ); + + ctx.textBaseline = "top"; + ctx.textBaseline = "middle\0"; + assert.strictEqual( + ctx.textBaseline, + "top", + "ctx.textBaseline", + "'top'" + ); + }); + + it("2d.text.baseline.default", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + ctx.textBaseline, + "alphabetic", + "ctx.textBaseline", + "'alphabetic'" + ); + }); + + it("2d.text.draw.baseline.top", function () { + // textBaseline top is the top of the em square (not the bounding box) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textBaseline = "top"; + ctx.fillText("CC", 0, 0); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 5, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 45, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.baseline.bottom", function () { + // textBaseline bottom is the bottom of the em square (not the bounding box) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textBaseline = "bottom"; + ctx.fillText("CC", 0, 50); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 5, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 45, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.baseline.middle", function () { + // textBaseline middle is the middle of the em square (not the bounding box) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textBaseline = "middle"; + ctx.fillText("CC", 0, 25); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 5, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 45, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.baseline.alphabetic", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textBaseline = "alphabetic"; + ctx.fillText("CC", 0, 37.5); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 5, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 45, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.baseline.ideographic", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textBaseline = "ideographic"; + ctx.fillText("CC", 0, 31.25); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 5, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 45, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.baseline.hanging", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textBaseline = "hanging"; + ctx.fillText("CC", 0, 12.5); + _assertPixelApprox(canvas, 5, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 5, 0, 255, 0, 255); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 5, 45, 0, 255, 0, 255); + _assertPixelApprox(canvas, 95, 45, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.space.collapse.space", function () { + // Space characters are converted to U+0020, and collapsed (per CSS) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.fillText("E EE", -100, 37.5); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.space.collapse.other", function () { + // Space characters are converted to U+0020, and collapsed (per CSS) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.fillText( + "E \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dEE", + -100, + 37.5 + ); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.space.collapse.start", function () { + // Space characters at the start of a line are collapsed (per CSS) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.fillText(" EE", 0, 37.5); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.draw.space.collapse.end", function () { + // Space characters at the end of a line are collapsed (per CSS) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.font = "50px CanvasTest"; + deferTest(); + step_timeout( + t.step_func_done(function () { + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#0f0"; + ctx.textAlign = "right"; + ctx.fillText("EE ", 100, 37.5); + _assertPixelApprox(canvas, 25, 25, 0, 255, 0, 255); + _assertPixelApprox(canvas, 75, 25, 0, 255, 0, 255); + }), + 500 + ); + }); + + it("2d.text.measure.width.space", function () { + // Space characters are converted to U+0020 and collapsed (per CSS) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout( + t.step_func_done(function () { + ctx.font = "50px CanvasTest"; + assert.strictEqual( + ctx.measureText("A B").width, + 150, + "ctx.measureText('A B').width", + "150" + ); + assert.strictEqual( + ctx.measureText("A B").width, + 200, + "ctx.measureText('A B').width", + "200" + ); + assert.strictEqual( + ctx.measureText("A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB") + .width, + 150, + "ctx.measureText('A \\x09\\x0a\\x0c\\x0d \\x09\\x0a\\x0c\\x0dB').width", + "150" + ); + assert( + ctx.measureText("A \x0b B").width >= 200, + "ctx.measureText('A \\x0b B').width >= 200" + ); + + assert.strictEqual( + ctx.measureText(" AB").width, + 100, + "ctx.measureText(' AB').width", + "100" + ); + assert.strictEqual( + ctx.measureText("AB ").width, + 100, + "ctx.measureText('AB ').width", + "100" + ); + }), + 500 + ); + }); + }); + + it("2d.text.measure.rtl.text", function () { + // Measurement should follow canvas direction instead text direction + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + metrics = ctx.measureText("اَلْعَرَبِيَّةُ"); + assert( + metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, + "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight" + ); + + metrics = ctx.measureText("hello"); + assert( + metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, + "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight" + ); + }); + + it("2d.text.measure.boundingBox.textAlign", function () { + // Measurement should be related to textAlignment + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.textAlign = "right"; + metrics = ctx.measureText("hello"); + assert( + metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, + "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight" + ); + + ctx.textAlign = "left"; + metrics = ctx.measureText("hello"); + assert( + metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, + "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight" + ); + }); + + it("2d.text.measure.boundingBox.direction", function () { + // Measurement should follow text direction + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.direction = "ltr"; + metrics = ctx.measureText("hello"); + assert( + metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight, + "metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight" + ); + + ctx.direction = "rtl"; + metrics = ctx.measureText("hello"); + assert( + metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight, + "metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight" + ); + }); }); diff --git a/test/wpt/generated/the-canvas-element.js b/test/wpt/generated/the-canvas-element.js index cea4fd9b4..6d2d5b9f0 100644 --- a/test/wpt/generated/the-canvas-element.js +++ b/test/wpt/generated/the-canvas-element.js @@ -1,279 +1,476 @@ // THIS FILE WAS AUTO-GENERATED. DO NOT EDIT BY HAND. -const assert = require('assert'); -const path = require('path'); +const assert = require("assert"); +const path = require("path"); const { - createCanvas, - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - CanvasPattern, - CanvasGradient -} = require('../../..'); + createCanvas, + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + CanvasPattern, + CanvasGradient, +} = require("../../.."); const window = { - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - Uint8ClampedArray, - CanvasPattern, - CanvasGradient + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + Uint8ClampedArray, + CanvasPattern, + CanvasGradient, }; const document = { - createElement(type, ...args) { - if (type !== "canvas") - throw new Error(`createElement(${type}) not supported`); - return createCanvas(...args); - } + createElement(type, ...args) { + if (type !== "canvas") + throw new Error(`createElement(${type}) not supported`); + return createCanvas(...args); + }, }; function _getPixel(canvas, x, y) { - const ctx = canvas.getContext('2d'); - const imgdata = ctx.getImageData(x, y, 1, 1); - return [ imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3] ]; + const ctx = canvas.getContext("2d"); + const imgdata = ctx.getImageData(x, y, 1, 1); + return [imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3]]; } -function _assertApprox(actual, expected, epsilon=0, msg="") { - assert(typeof actual === "number", "actual should be a number but got a ${typeof type_actual}"); - - // The epsilon math below does not place nice with NaN and Infinity - // But in this case Infinity = Infinity and NaN = NaN - if (isFinite(actual) || isFinite(expected)) { - assert(Math.abs(actual - expected) <= epsilon, - `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}`); - } else { - assert.strictEqual(actual, expected); - } +function _assertApprox(actual, expected, epsilon = 0, msg = "") { + assert( + typeof actual === "number", + "actual should be a number but got a ${typeof type_actual}" + ); + + // The epsilon math below does not place nice with NaN and Infinity + // But in this case Infinity = Infinity and NaN = NaN + if (isFinite(actual) || isFinite(expected)) { + assert( + Math.abs(actual - expected) <= epsilon, + `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}` + ); + } else { + assert.strictEqual(actual, expected); + } } function _assertPixel(canvas, x, y, r, g, b, a, pos, color) { - const c = _getPixel(canvas, x,y); - assert.strictEqual(c[0], r, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[1], g, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[2], b, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[3], a, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + assert.strictEqual( + c[0], + r, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[1], + g, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[2], + b, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[3], + a, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function _assertPixelApprox(canvas, x, y, r, g, b, a, pos, color, tolerance) { - const c = _getPixel(canvas, x,y); - _assertApprox(c[0], r, tolerance, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[1], g, tolerance, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[2], b, tolerance, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[3], a, tolerance, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + _assertApprox( + c[0], + r, + tolerance, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[1], + g, + tolerance, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[2], + b, + tolerance, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[3], + a, + tolerance, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function assert_throws_js(Type, fn) { - assert.throws(fn, Type); + assert.throws(fn, Type); } // Used by font tests to allow fonts to load. function deferTest() {} class Test { - // Two cases of this in the tests, look unnecessary. - done() {} - // Used by font tests to allow fonts to load. - step_func_done(func) { func(); } - // Used for image onload callback. - step_func(func) { func(); } + // Two cases of this in the tests, look unnecessary. + done() {} + // Used by font tests to allow fonts to load. + step_func_done(func) { + func(); + } + // Used for image onload callback. + step_func(func) { + func(); + } } function step_timeout(result, time) { - // Nothing; code needs to be converted for this to work. + // Nothing; code needs to be converted for this to work. } describe("WPT: the-canvas-element", function () { - - it("2d.getcontext.exists", function () { - // The 2D context is implemented - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.notStrictEqual(canvas.getContext('2d'), null, "canvas.getContext('2d')", "null"); - }); - - it("2d.getcontext.invalid.args", function () { - // Calling getContext with invalid arguments. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(canvas.getContext(''), null, "canvas.getContext('')", "null") - assert.strictEqual(canvas.getContext('2d#'), null, "canvas.getContext('2d#')", "null") - assert.strictEqual(canvas.getContext('This is clearly not a valid context name.'), null, "canvas.getContext('This is clearly not a valid context name.')", "null") - assert.strictEqual(canvas.getContext('2d\0'), null, "canvas.getContext('2d\\0')", "null") - assert.strictEqual(canvas.getContext('2\uFF44'), null, "canvas.getContext('2\\uFF44')", "null") - assert.strictEqual(canvas.getContext('2D'), null, "canvas.getContext('2D')", "null") - assert.throws(function() { canvas.getContext(); }, TypeError); - assert.strictEqual(canvas.getContext('null'), null, "canvas.getContext('null')", "null") - assert.strictEqual(canvas.getContext('undefined'), null, "canvas.getContext('undefined')", "null") - }); - - it("2d.getcontext.extraargs.create", function () { - // The 2D context doesn't throw with extra getContext arguments (new context) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.notStrictEqual(document.createElement("canvas").getContext('2d', false, {}, [], 1, "2"), null, "document.createElement(\"canvas\").getContext('2d', false, {}, [], 1, \"2\")", "null"); - assert.notStrictEqual(document.createElement("canvas").getContext('2d', 123), null, "document.createElement(\"canvas\").getContext('2d', 123)", "null"); - assert.notStrictEqual(document.createElement("canvas").getContext('2d', "test"), null, "document.createElement(\"canvas\").getContext('2d', \"test\")", "null"); - assert.notStrictEqual(document.createElement("canvas").getContext('2d', undefined), null, "document.createElement(\"canvas\").getContext('2d', undefined)", "null"); - assert.notStrictEqual(document.createElement("canvas").getContext('2d', null), null, "document.createElement(\"canvas\").getContext('2d', null)", "null"); - assert.notStrictEqual(document.createElement("canvas").getContext('2d', Symbol.hasInstance), null, "document.createElement(\"canvas\").getContext('2d', Symbol.hasInstance)", "null"); - }); - - it("2d.getcontext.extraargs.cache", function () { - // The 2D context doesn't throw with extra getContext arguments (cached) - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.notStrictEqual(canvas.getContext('2d', false, {}, [], 1, "2"), null, "canvas.getContext('2d', false, {}, [], 1, \"2\")", "null"); - assert.notStrictEqual(canvas.getContext('2d', 123), null, "canvas.getContext('2d', 123)", "null"); - assert.notStrictEqual(canvas.getContext('2d', "test"), null, "canvas.getContext('2d', \"test\")", "null"); - assert.notStrictEqual(canvas.getContext('2d', undefined), null, "canvas.getContext('2d', undefined)", "null"); - assert.notStrictEqual(canvas.getContext('2d', null), null, "canvas.getContext('2d', null)", "null"); - assert.notStrictEqual(canvas.getContext('2d', Symbol.hasInstance), null, "canvas.getContext('2d', Symbol.hasInstance)", "null"); - }); - - it("2d.type.exists", function () { - // The 2D context interface is a property of 'window' - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert(window.CanvasRenderingContext2D, "window.CanvasRenderingContext2D"); - }); - - it("2d.type.prototype", function () { - // window.CanvasRenderingContext2D.prototype are not [[Writable]] and not [[Configurable]], and its methods are [[Configurable]]. - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert(window.CanvasRenderingContext2D.prototype, "window.CanvasRenderingContext2D.prototype"); - assert(window.CanvasRenderingContext2D.prototype.fill, "window.CanvasRenderingContext2D.prototype.fill"); - window.CanvasRenderingContext2D.prototype = null; - assert(window.CanvasRenderingContext2D.prototype, "window.CanvasRenderingContext2D.prototype"); - delete window.CanvasRenderingContext2D.prototype; - assert(window.CanvasRenderingContext2D.prototype, "window.CanvasRenderingContext2D.prototype"); - window.CanvasRenderingContext2D.prototype.fill = 1; - assert.strictEqual(window.CanvasRenderingContext2D.prototype.fill, 1, "window.CanvasRenderingContext2D.prototype.fill", "1") - delete window.CanvasRenderingContext2D.prototype.fill; - assert.strictEqual(window.CanvasRenderingContext2D.prototype.fill, undefined, "window.CanvasRenderingContext2D.prototype.fill", "undefined") - }); - - it("2d.type class string", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - assert.strictEqual(Object.prototype.toString.call(ctx), '[object CanvasRenderingContext2D]') - }) - - it("2d.type.replace", function () { - // Interface methods can be overridden - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var fillRect = window.CanvasRenderingContext2D.prototype.fillRect; - window.CanvasRenderingContext2D.prototype.fillRect = function (x, y, w, h) - { - this.fillStyle = '#0f0'; - fillRect.call(this, x, y, w, h); - }; - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.type.extend", function () { - // Interface methods can be added - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - window.CanvasRenderingContext2D.prototype.fillRectGreen = function (x, y, w, h) - { - this.fillStyle = '#0f0'; - this.fillRect(x, y, w, h); - }; - ctx.fillStyle = '#f00'; - ctx.fillRectGreen(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.getcontext.unique", function () { - // getContext('2d') returns the same object - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(canvas.getContext('2d'), canvas.getContext('2d'), "canvas.getContext('2d')", "canvas.getContext('2d')") - }); - - it("2d.getcontext.shared", function () { - // getContext('2d') returns objects which share canvas state - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var ctx2 = canvas.getContext('2d'); - ctx.fillStyle = '#f00'; - ctx2.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.scaled", function () { - // CSS-scaled canvases get drawn correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#00f'; - ctx.fillRect(0, 0, 50, 25); - ctx.fillStyle = '#0ff'; - ctx.fillRect(0, 0, 25, 10); - }); - - it("2d.canvas.reference", function () { - // CanvasRenderingContext2D.canvas refers back to its canvas - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(ctx.canvas, canvas, "ctx.canvas", "canvas") - }); - - it("2d.canvas.readonly", function () { - // CanvasRenderingContext2D.canvas is readonly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var c = document.createElement('canvas'); - var d = ctx.canvas; - assert.notStrictEqual(c, d, "c", "d"); - ctx.canvas = c; - assert.strictEqual(ctx.canvas, d, "ctx.canvas", "d") - }); - - it("2d.canvas.context", function () { - // checks CanvasRenderingContext2D prototype - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - assert.strictEqual(Object.getPrototypeOf(CanvasRenderingContext2D.prototype), Object.prototype, "Object.getPrototypeOf(CanvasRenderingContext2D.prototype)", "Object.prototype") - assert.strictEqual(Object.getPrototypeOf(ctx), CanvasRenderingContext2D.prototype, "Object.getPrototypeOf(ctx)", "CanvasRenderingContext2D.prototype") - t.done(); - }); + it("2d.getcontext.exists", function () { + // The 2D context is implemented + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.notStrictEqual( + canvas.getContext("2d"), + null, + "canvas.getContext('2d')", + "null" + ); + }); + + it("2d.getcontext.invalid.args", function () { + // Calling getContext with invalid arguments. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + canvas.getContext(""), + null, + "canvas.getContext('')", + "null" + ); + assert.strictEqual( + canvas.getContext("2d#"), + null, + "canvas.getContext('2d#')", + "null" + ); + assert.strictEqual( + canvas.getContext("This is clearly not a valid context name."), + null, + "canvas.getContext('This is clearly not a valid context name.')", + "null" + ); + assert.strictEqual( + canvas.getContext("2d\0"), + null, + "canvas.getContext('2d\\0')", + "null" + ); + assert.strictEqual( + canvas.getContext("2\uFF44"), + null, + "canvas.getContext('2\\uFF44')", + "null" + ); + assert.strictEqual( + canvas.getContext("2D"), + null, + "canvas.getContext('2D')", + "null" + ); + assert.throws(function () { + canvas.getContext(); + }, TypeError); + assert.strictEqual( + canvas.getContext("null"), + null, + "canvas.getContext('null')", + "null" + ); + assert.strictEqual( + canvas.getContext("undefined"), + null, + "canvas.getContext('undefined')", + "null" + ); + }); + + it("2d.getcontext.extraargs.create", function () { + // The 2D context doesn't throw with extra getContext arguments (new context) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.notStrictEqual( + document + .createElement("canvas") + .getContext("2d", false, {}, [], 1, "2"), + null, + 'document.createElement("canvas").getContext(\'2d\', false, {}, [], 1, "2")', + "null" + ); + assert.notStrictEqual( + document.createElement("canvas").getContext("2d", 123), + null, + "document.createElement(\"canvas\").getContext('2d', 123)", + "null" + ); + assert.notStrictEqual( + document.createElement("canvas").getContext("2d", "test"), + null, + 'document.createElement("canvas").getContext(\'2d\', "test")', + "null" + ); + assert.notStrictEqual( + document.createElement("canvas").getContext("2d", undefined), + null, + "document.createElement(\"canvas\").getContext('2d', undefined)", + "null" + ); + assert.notStrictEqual( + document.createElement("canvas").getContext("2d", null), + null, + "document.createElement(\"canvas\").getContext('2d', null)", + "null" + ); + assert.notStrictEqual( + document + .createElement("canvas") + .getContext("2d", Symbol.hasInstance), + null, + "document.createElement(\"canvas\").getContext('2d', Symbol.hasInstance)", + "null" + ); + }); + + it("2d.getcontext.extraargs.cache", function () { + // The 2D context doesn't throw with extra getContext arguments (cached) + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.notStrictEqual( + canvas.getContext("2d", false, {}, [], 1, "2"), + null, + "canvas.getContext('2d', false, {}, [], 1, \"2\")", + "null" + ); + assert.notStrictEqual( + canvas.getContext("2d", 123), + null, + "canvas.getContext('2d', 123)", + "null" + ); + assert.notStrictEqual( + canvas.getContext("2d", "test"), + null, + "canvas.getContext('2d', \"test\")", + "null" + ); + assert.notStrictEqual( + canvas.getContext("2d", undefined), + null, + "canvas.getContext('2d', undefined)", + "null" + ); + assert.notStrictEqual( + canvas.getContext("2d", null), + null, + "canvas.getContext('2d', null)", + "null" + ); + assert.notStrictEqual( + canvas.getContext("2d", Symbol.hasInstance), + null, + "canvas.getContext('2d', Symbol.hasInstance)", + "null" + ); + }); + + it("2d.type.exists", function () { + // The 2D context interface is a property of 'window' + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert( + window.CanvasRenderingContext2D, + "window.CanvasRenderingContext2D" + ); + }); + + it("2d.type.prototype", function () { + // window.CanvasRenderingContext2D.prototype are not [[Writable]] and not [[Configurable]], and its methods are [[Configurable]]. + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert( + window.CanvasRenderingContext2D.prototype, + "window.CanvasRenderingContext2D.prototype" + ); + assert( + window.CanvasRenderingContext2D.prototype.fill, + "window.CanvasRenderingContext2D.prototype.fill" + ); + window.CanvasRenderingContext2D.prototype = null; + assert( + window.CanvasRenderingContext2D.prototype, + "window.CanvasRenderingContext2D.prototype" + ); + delete window.CanvasRenderingContext2D.prototype; + assert( + window.CanvasRenderingContext2D.prototype, + "window.CanvasRenderingContext2D.prototype" + ); + window.CanvasRenderingContext2D.prototype.fill = 1; + assert.strictEqual( + window.CanvasRenderingContext2D.prototype.fill, + 1, + "window.CanvasRenderingContext2D.prototype.fill", + "1" + ); + delete window.CanvasRenderingContext2D.prototype.fill; + assert.strictEqual( + window.CanvasRenderingContext2D.prototype.fill, + undefined, + "window.CanvasRenderingContext2D.prototype.fill", + "undefined" + ); + }); + + it("2d.type.replace", function () { + // Interface methods can be overridden + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var fillRect = window.CanvasRenderingContext2D.prototype.fillRect; + window.CanvasRenderingContext2D.prototype.fillRect = function ( + x, + y, + w, + h + ) { + this.fillStyle = "#0f0"; + fillRect.call(this, x, y, w, h); + }; + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.type.extend", function () { + // Interface methods can be added + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + window.CanvasRenderingContext2D.prototype.fillRectGreen = function ( + x, + y, + w, + h + ) { + this.fillStyle = "#0f0"; + this.fillRect(x, y, w, h); + }; + ctx.fillStyle = "#f00"; + ctx.fillRectGreen(0, 0, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.getcontext.unique", function () { + // getContext('2d') returns the same object + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + canvas.getContext("2d"), + canvas.getContext("2d"), + "canvas.getContext('2d')", + "canvas.getContext('2d')" + ); + }); + + it("2d.getcontext.shared", function () { + // getContext('2d') returns objects which share canvas state + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var ctx2 = canvas.getContext("2d"); + ctx.fillStyle = "#f00"; + ctx2.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.scaled", function () { + // CSS-scaled canvases get drawn correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#00f"; + ctx.fillRect(0, 0, 50, 25); + ctx.fillStyle = "#0ff"; + ctx.fillRect(0, 0, 25, 10); + }); + + it("2d.canvas.reference", function () { + // CanvasRenderingContext2D.canvas refers back to its canvas + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual(ctx.canvas, canvas, "ctx.canvas", "canvas"); + }); + + it("2d.canvas.readonly", function () { + // CanvasRenderingContext2D.canvas is readonly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var c = document.createElement("canvas"); + var d = ctx.canvas; + assert.notStrictEqual(c, d, "c", "d"); + ctx.canvas = c; + assert.strictEqual(ctx.canvas, d, "ctx.canvas", "d"); + }); + + it("2d.canvas.context", function () { + // checks CanvasRenderingContext2D prototype + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + assert.strictEqual( + Object.getPrototypeOf(CanvasRenderingContext2D.prototype), + Object.prototype, + "Object.getPrototypeOf(CanvasRenderingContext2D.prototype)", + "Object.prototype" + ); + assert.strictEqual( + Object.getPrototypeOf(ctx), + CanvasRenderingContext2D.prototype, + "Object.getPrototypeOf(ctx)", + "CanvasRenderingContext2D.prototype" + ); + t.done(); + }); }); diff --git a/test/wpt/generated/the-canvas-state.js b/test/wpt/generated/the-canvas-state.js index 393bc6cd2..b50f40e4c 100644 --- a/test/wpt/generated/the-canvas-state.js +++ b/test/wpt/generated/the-canvas-state.js @@ -1,206 +1,247 @@ // THIS FILE WAS AUTO-GENERATED. DO NOT EDIT BY HAND. -const assert = require('assert'); -const path = require('path'); +const assert = require("assert"); +const path = require("path"); const { - createCanvas, - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - CanvasPattern, - CanvasGradient -} = require('../../..'); + createCanvas, + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + CanvasPattern, + CanvasGradient, +} = require("../../.."); const window = { - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - Uint8ClampedArray, - CanvasPattern, - CanvasGradient + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + Uint8ClampedArray, + CanvasPattern, + CanvasGradient, }; const document = { - createElement(type, ...args) { - if (type !== "canvas") - throw new Error(`createElement(${type}) not supported`); - return createCanvas(...args); - } + createElement(type, ...args) { + if (type !== "canvas") + throw new Error(`createElement(${type}) not supported`); + return createCanvas(...args); + }, }; function _getPixel(canvas, x, y) { - const ctx = canvas.getContext('2d'); - const imgdata = ctx.getImageData(x, y, 1, 1); - return [ imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3] ]; + const ctx = canvas.getContext("2d"); + const imgdata = ctx.getImageData(x, y, 1, 1); + return [imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3]]; } -function _assertApprox(actual, expected, epsilon=0, msg="") { - assert(typeof actual === "number", "actual should be a number but got a ${typeof type_actual}"); - - // The epsilon math below does not place nice with NaN and Infinity - // But in this case Infinity = Infinity and NaN = NaN - if (isFinite(actual) || isFinite(expected)) { - assert(Math.abs(actual - expected) <= epsilon, - `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}`); - } else { - assert.strictEqual(actual, expected); - } +function _assertApprox(actual, expected, epsilon = 0, msg = "") { + assert( + typeof actual === "number", + "actual should be a number but got a ${typeof type_actual}" + ); + + // The epsilon math below does not place nice with NaN and Infinity + // But in this case Infinity = Infinity and NaN = NaN + if (isFinite(actual) || isFinite(expected)) { + assert( + Math.abs(actual - expected) <= epsilon, + `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}` + ); + } else { + assert.strictEqual(actual, expected); + } } function _assertPixel(canvas, x, y, r, g, b, a, pos, color) { - const c = _getPixel(canvas, x,y); - assert.strictEqual(c[0], r, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[1], g, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[2], b, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[3], a, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + assert.strictEqual( + c[0], + r, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[1], + g, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[2], + b, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[3], + a, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function _assertPixelApprox(canvas, x, y, r, g, b, a, pos, color, tolerance) { - const c = _getPixel(canvas, x,y); - _assertApprox(c[0], r, tolerance, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[1], g, tolerance, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[2], b, tolerance, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[3], a, tolerance, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + _assertApprox( + c[0], + r, + tolerance, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[1], + g, + tolerance, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[2], + b, + tolerance, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[3], + a, + tolerance, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function assert_throws_js(Type, fn) { - assert.throws(fn, Type); + assert.throws(fn, Type); } // Used by font tests to allow fonts to load. function deferTest() {} class Test { - // Two cases of this in the tests, look unnecessary. - done() {} - // Used by font tests to allow fonts to load. - step_func_done(func) { func(); } - // Used for image onload callback. - step_func(func) { func(); } + // Two cases of this in the tests, look unnecessary. + done() {} + // Used by font tests to allow fonts to load. + step_func_done(func) { + func(); + } + // Used for image onload callback. + step_func(func) { + func(); + } } function step_timeout(result, time) { - // Nothing; code needs to be converted for this to work. + // Nothing; code needs to be converted for this to work. } describe("WPT: the-canvas-state", function () { - - it("2d.state.saverestore.transformation", function () { - // save()/restore() affects the current transformation matrix - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.save(); - ctx.translate(200, 0); - ctx.restore(); - ctx.fillStyle = '#f00'; - ctx.fillRect(-200, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.state.saverestore.clip", function () { - // save()/restore() affects the clipping path - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.save(); - ctx.rect(0, 0, 1, 1); - ctx.clip(); - ctx.restore(); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.state.saverestore.path", function () { - // save()/restore() does not affect the current path - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.save(); - ctx.rect(0, 0, 100, 50); - ctx.restore(); - ctx.fillStyle = '#0f0'; - ctx.fill(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.state.saverestore.bitmap", function () { - // save()/restore() does not affect the current bitmap - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.save(); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.restore(); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.state.saverestore.stack", function () { - // save()/restore() can be nested as a stack - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.lineWidth = 1; - ctx.save(); - ctx.lineWidth = 2; - ctx.save(); - ctx.lineWidth = 3; - assert.strictEqual(ctx.lineWidth, 3, "ctx.lineWidth", "3") - ctx.restore(); - assert.strictEqual(ctx.lineWidth, 2, "ctx.lineWidth", "2") - ctx.restore(); - assert.strictEqual(ctx.lineWidth, 1, "ctx.lineWidth", "1") - }); - - it("2d.state.saverestore.stackdepth", function () { - // save()/restore() stack depth is not unreasonably limited - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - var limit = 512; - for (var i = 1; i < limit; ++i) - { - ctx.save(); - ctx.lineWidth = i; - } - for (var i = limit-1; i > 0; --i) - { - assert.strictEqual(ctx.lineWidth, i, "ctx.lineWidth", "i") - ctx.restore(); - } - }); - - it("2d.state.saverestore.underflow", function () { - // restore() with an empty stack has no effect - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - for (var i = 0; i < 16; ++i) - ctx.restore(); - ctx.lineWidth = 0.5; - ctx.restore(); - assert.strictEqual(ctx.lineWidth, 0.5, "ctx.lineWidth", "0.5") - }); + it("2d.state.saverestore.transformation", function () { + // save()/restore() affects the current transformation matrix + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.translate(200, 0); + ctx.restore(); + ctx.fillStyle = "#f00"; + ctx.fillRect(-200, 0, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.state.saverestore.clip", function () { + // save()/restore() affects the clipping path + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.rect(0, 0, 1, 1); + ctx.clip(); + ctx.restore(); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.state.saverestore.path", function () { + // save()/restore() does not affect the current path + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.rect(0, 0, 100, 50); + ctx.restore(); + ctx.fillStyle = "#0f0"; + ctx.fill(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.state.saverestore.bitmap", function () { + // save()/restore() does not affect the current bitmap + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.restore(); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.state.saverestore.stack", function () { + // save()/restore() can be nested as a stack + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.lineWidth = 1; + ctx.save(); + ctx.lineWidth = 2; + ctx.save(); + ctx.lineWidth = 3; + assert.strictEqual(ctx.lineWidth, 3, "ctx.lineWidth", "3"); + ctx.restore(); + assert.strictEqual(ctx.lineWidth, 2, "ctx.lineWidth", "2"); + ctx.restore(); + assert.strictEqual(ctx.lineWidth, 1, "ctx.lineWidth", "1"); + }); + + it("2d.state.saverestore.stackdepth", function () { + // save()/restore() stack depth is not unreasonably limited + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + var limit = 512; + for (var i = 1; i < limit; ++i) { + ctx.save(); + ctx.lineWidth = i; + } + for (var i = limit - 1; i > 0; --i) { + assert.strictEqual(ctx.lineWidth, i, "ctx.lineWidth", "i"); + ctx.restore(); + } + }); + + it("2d.state.saverestore.underflow", function () { + // restore() with an empty stack has no effect + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + for (var i = 0; i < 16; ++i) ctx.restore(); + ctx.lineWidth = 0.5; + ctx.restore(); + assert.strictEqual(ctx.lineWidth, 0.5, "ctx.lineWidth", "0.5"); + }); }); diff --git a/test/wpt/generated/transformations.js b/test/wpt/generated/transformations.js index a4b5f2fb6..4809aa5be 100644 --- a/test/wpt/generated/transformations.js +++ b/test/wpt/generated/transformations.js @@ -1,675 +1,751 @@ // THIS FILE WAS AUTO-GENERATED. DO NOT EDIT BY HAND. -const assert = require('assert'); -const path = require('path'); +const assert = require("assert"); +const path = require("path"); const { - createCanvas, - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - CanvasPattern, - CanvasGradient -} = require('../../..'); + createCanvas, + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + CanvasPattern, + CanvasGradient, +} = require("../../.."); const window = { - CanvasRenderingContext2D, - ImageData, - Image, - DOMMatrix, - DOMPoint, - Uint8ClampedArray, - CanvasPattern, - CanvasGradient + CanvasRenderingContext2D, + ImageData, + Image, + DOMMatrix, + DOMPoint, + Uint8ClampedArray, + CanvasPattern, + CanvasGradient, }; const document = { - createElement(type, ...args) { - if (type !== "canvas") - throw new Error(`createElement(${type}) not supported`); - return createCanvas(...args); - } + createElement(type, ...args) { + if (type !== "canvas") + throw new Error(`createElement(${type}) not supported`); + return createCanvas(...args); + }, }; function _getPixel(canvas, x, y) { - const ctx = canvas.getContext('2d'); - const imgdata = ctx.getImageData(x, y, 1, 1); - return [ imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3] ]; + const ctx = canvas.getContext("2d"); + const imgdata = ctx.getImageData(x, y, 1, 1); + return [imgdata.data[0], imgdata.data[1], imgdata.data[2], imgdata.data[3]]; } -function _assertApprox(actual, expected, epsilon=0, msg="") { - assert(typeof actual === "number", "actual should be a number but got a ${typeof type_actual}"); - - // The epsilon math below does not place nice with NaN and Infinity - // But in this case Infinity = Infinity and NaN = NaN - if (isFinite(actual) || isFinite(expected)) { - assert(Math.abs(actual - expected) <= epsilon, - `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}`); - } else { - assert.strictEqual(actual, expected); - } +function _assertApprox(actual, expected, epsilon = 0, msg = "") { + assert( + typeof actual === "number", + "actual should be a number but got a ${typeof type_actual}" + ); + + // The epsilon math below does not place nice with NaN and Infinity + // But in this case Infinity = Infinity and NaN = NaN + if (isFinite(actual) || isFinite(expected)) { + assert( + Math.abs(actual - expected) <= epsilon, + `expected ${actual} to equal ${expected} +/- ${epsilon}. ${msg}` + ); + } else { + assert.strictEqual(actual, expected); + } } function _assertPixel(canvas, x, y, r, g, b, a, pos, color) { - const c = _getPixel(canvas, x,y); - assert.strictEqual(c[0], r, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[1], g, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[2], b, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - assert.strictEqual(c[3], a, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + assert.strictEqual( + c[0], + r, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[1], + g, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[2], + b, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + assert.strictEqual( + c[3], + a, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function _assertPixelApprox(canvas, x, y, r, g, b, a, pos, color, tolerance) { - const c = _getPixel(canvas, x,y); - _assertApprox(c[0], r, tolerance, 'Red channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[1], g, tolerance, 'Green channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[2], b, tolerance, 'Blue channel of the pixel at (' + x + ', ' + y + ')'); - _assertApprox(c[3], a, tolerance, 'Alpha channel of the pixel at (' + x + ', ' + y + ')'); + const c = _getPixel(canvas, x, y); + _assertApprox( + c[0], + r, + tolerance, + "Red channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[1], + g, + tolerance, + "Green channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[2], + b, + tolerance, + "Blue channel of the pixel at (" + x + ", " + y + ")" + ); + _assertApprox( + c[3], + a, + tolerance, + "Alpha channel of the pixel at (" + x + ", " + y + ")" + ); } function assert_throws_js(Type, fn) { - assert.throws(fn, Type); + assert.throws(fn, Type); } // Used by font tests to allow fonts to load. function deferTest() {} class Test { - // Two cases of this in the tests, look unnecessary. - done() {} - // Used by font tests to allow fonts to load. - step_func_done(func) { func(); } - // Used for image onload callback. - step_func(func) { func(); } + // Two cases of this in the tests, look unnecessary. + done() {} + // Used by font tests to allow fonts to load. + step_func_done(func) { + func(); + } + // Used for image onload callback. + step_func(func) { + func(); + } } function step_timeout(result, time) { - // Nothing; code needs to be converted for this to work. + // Nothing; code needs to be converted for this to work. } describe("WPT: transformations", function () { - - it("2d.transformation.order", function () { - // Transformations are applied in the right order - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.scale(2, 1); - ctx.rotate(Math.PI / 2); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, -50, 50, 50); - _assertPixel(canvas, 75,25, 0,255,0,255); - }); - - it("2d.transformation.scale.basic", function () { - // scale() works - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.scale(2, 4); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 12.5); - _assertPixel(canvas, 90,40, 0,255,0,255); - }); - - it("2d.transformation.scale.zero", function () { - // scale() with a scale factor of zero works - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.save(); - ctx.translate(50, 0); - ctx.scale(0, 1); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.restore(); - - ctx.save(); - ctx.translate(0, 25); - ctx.scale(1, 0); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.restore(); - - canvas.toDataURL(); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.transformation.scale.negative", function () { - // scale() with negative scale factors works - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.save(); - ctx.scale(-1, 1); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-50, 0, 50, 50); - ctx.restore(); - - ctx.save(); - ctx.scale(1, -1); - ctx.fillStyle = '#0f0'; - ctx.fillRect(50, -50, 50, 50); - ctx.restore(); - _assertPixel(canvas, 25,25, 0,255,0,255); - _assertPixel(canvas, 75,25, 0,255,0,255); - }); - - it("2d.transformation.scale.large", function () { - // scale() with large scale factors works - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.scale(1e5, 1e5); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 1, 1); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.transformation.scale.nonfinite", function () { - // scale() with Infinity/NaN is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.translate(100, 10); - ctx.scale(Infinity, 0.1); - ctx.scale(-Infinity, 0.1); - ctx.scale(NaN, 0.1); - ctx.scale(0.1, Infinity); - ctx.scale(0.1, -Infinity); - ctx.scale(0.1, NaN); - ctx.scale(Infinity, Infinity); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.transformation.scale.multiple", function () { - // Multiple scale()s combine - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.scale(Math.sqrt(2), Math.sqrt(2)); - ctx.scale(Math.sqrt(2), Math.sqrt(2)); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 25); - _assertPixel(canvas, 90,40, 0,255,0,255); - }); - - it("2d.transformation.rotate.zero", function () { - // rotate() by 0 does nothing - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.rotate(0); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.transformation.rotate.radians", function () { - // rotate() uses radians - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -50, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.transformation.rotate.direction", function () { - // rotate() is clockwise - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.rotate(Math.PI / 2); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, -100, 50, 100); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.transformation.rotate.wrap", function () { - // rotate() wraps large positive values correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi) - // We need about pi +/- 0.001 in order to get correct-looking results - // 32-bit floats can store pi*4097 with precision 2^-10, so that should - // be safe enough on reasonable implementations - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -50, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 98,2, 0,255,0,255); - _assertPixel(canvas, 98,47, 0,255,0,255); - }); - - it("2d.transformation.rotate.wrapnegative", function () { - // rotate() wraps large negative values correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.rotate(-Math.PI * (1 + 4096)); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -50, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - _assertPixel(canvas, 98,2, 0,255,0,255); - _assertPixel(canvas, 98,47, 0,255,0,255); - }); - - it("2d.transformation.rotate.nonfinite", function () { - // rotate() with Infinity/NaN is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.translate(100, 10); - ctx.rotate(Infinity); - ctx.rotate(-Infinity); - ctx.rotate(NaN); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.transformation.translate.basic", function () { - // translate() works - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.translate(100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -50, 100, 50); - _assertPixel(canvas, 90,40, 0,255,0,255); - }); - - it("2d.transformation.translate.nonfinite", function () { - // translate() with Infinity/NaN is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.translate(100, 10); - ctx.translate(Infinity, 0.1); - ctx.translate(-Infinity, 0.1); - ctx.translate(NaN, 0.1); - ctx.translate(0.1, Infinity); - ctx.translate(0.1, -Infinity); - ctx.translate(0.1, NaN); - ctx.translate(Infinity, Infinity); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.transformation.transform.identity", function () { - // transform() with the identity matrix does nothing - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.transform(1,0, 0,1, 0,0); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.transformation.transform.skewed", function () { - // transform() with skewy matrix transforms correctly - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - // Create green with a red square ring inside it - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(20, 10, 60, 30); - ctx.fillStyle = '#0f0'; - ctx.fillRect(40, 20, 20, 10); - - // Draw a skewed shape to fill that gap, to make sure it is aligned correctly - ctx.transform(1,4, 2,3, 5,6); - // Post-transform coordinates: - // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; - // Hence pre-transform coordinates: - var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2], - [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2], - [-7.4,11.2]]; - ctx.beginPath(); - ctx.moveTo(pts[0][0], pts[0][1]); - for (var i = 0; i < pts.length; ++i) - ctx.lineTo(pts[i][0], pts[i][1]); - ctx.fill(); - _assertPixel(canvas, 21,11, 0,255,0,255); - _assertPixel(canvas, 79,11, 0,255,0,255); - _assertPixel(canvas, 21,39, 0,255,0,255); - _assertPixel(canvas, 79,39, 0,255,0,255); - _assertPixel(canvas, 39,19, 0,255,0,255); - _assertPixel(canvas, 61,19, 0,255,0,255); - _assertPixel(canvas, 39,31, 0,255,0,255); - _assertPixel(canvas, 61,31, 0,255,0,255); - }); - - it("2d.transformation.transform.multiply", function () { - // transform() multiplies the CTM - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.transform(1,2, 3,4, 5,6); - ctx.transform(-2,1, 3/2,-1/2, 1,-2); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.transformation.transform.nonfinite", function () { - // transform() with Infinity/NaN is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.translate(100, 10); - ctx.transform(Infinity, 0, 0, 0, 0, 0); - ctx.transform(-Infinity, 0, 0, 0, 0, 0); - ctx.transform(NaN, 0, 0, 0, 0, 0); - ctx.transform(0, Infinity, 0, 0, 0, 0); - ctx.transform(0, -Infinity, 0, 0, 0, 0); - ctx.transform(0, NaN, 0, 0, 0, 0); - ctx.transform(0, 0, Infinity, 0, 0, 0); - ctx.transform(0, 0, -Infinity, 0, 0, 0); - ctx.transform(0, 0, NaN, 0, 0, 0); - ctx.transform(0, 0, 0, Infinity, 0, 0); - ctx.transform(0, 0, 0, -Infinity, 0, 0); - ctx.transform(0, 0, 0, NaN, 0, 0); - ctx.transform(0, 0, 0, 0, Infinity, 0); - ctx.transform(0, 0, 0, 0, -Infinity, 0); - ctx.transform(0, 0, 0, 0, NaN, 0); - ctx.transform(0, 0, 0, 0, 0, Infinity); - ctx.transform(0, 0, 0, 0, 0, -Infinity); - ctx.transform(0, 0, 0, 0, 0, NaN); - ctx.transform(Infinity, Infinity, 0, 0, 0, 0); - ctx.transform(Infinity, Infinity, Infinity, 0, 0, 0); - ctx.transform(Infinity, Infinity, Infinity, Infinity, 0, 0); - ctx.transform(Infinity, Infinity, Infinity, Infinity, Infinity, 0); - ctx.transform(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); - ctx.transform(Infinity, Infinity, Infinity, Infinity, 0, Infinity); - ctx.transform(Infinity, Infinity, Infinity, 0, Infinity, 0); - ctx.transform(Infinity, Infinity, Infinity, 0, Infinity, Infinity); - ctx.transform(Infinity, Infinity, Infinity, 0, 0, Infinity); - ctx.transform(Infinity, Infinity, 0, Infinity, 0, 0); - ctx.transform(Infinity, Infinity, 0, Infinity, Infinity, 0); - ctx.transform(Infinity, Infinity, 0, Infinity, Infinity, Infinity); - ctx.transform(Infinity, Infinity, 0, Infinity, 0, Infinity); - ctx.transform(Infinity, Infinity, 0, 0, Infinity, 0); - ctx.transform(Infinity, Infinity, 0, 0, Infinity, Infinity); - ctx.transform(Infinity, Infinity, 0, 0, 0, Infinity); - ctx.transform(Infinity, 0, Infinity, 0, 0, 0); - ctx.transform(Infinity, 0, Infinity, Infinity, 0, 0); - ctx.transform(Infinity, 0, Infinity, Infinity, Infinity, 0); - ctx.transform(Infinity, 0, Infinity, Infinity, Infinity, Infinity); - ctx.transform(Infinity, 0, Infinity, Infinity, 0, Infinity); - ctx.transform(Infinity, 0, Infinity, 0, Infinity, 0); - ctx.transform(Infinity, 0, Infinity, 0, Infinity, Infinity); - ctx.transform(Infinity, 0, Infinity, 0, 0, Infinity); - ctx.transform(Infinity, 0, 0, Infinity, 0, 0); - ctx.transform(Infinity, 0, 0, Infinity, Infinity, 0); - ctx.transform(Infinity, 0, 0, Infinity, Infinity, Infinity); - ctx.transform(Infinity, 0, 0, Infinity, 0, Infinity); - ctx.transform(Infinity, 0, 0, 0, Infinity, 0); - ctx.transform(Infinity, 0, 0, 0, Infinity, Infinity); - ctx.transform(Infinity, 0, 0, 0, 0, Infinity); - ctx.transform(0, Infinity, Infinity, 0, 0, 0); - ctx.transform(0, Infinity, Infinity, Infinity, 0, 0); - ctx.transform(0, Infinity, Infinity, Infinity, Infinity, 0); - ctx.transform(0, Infinity, Infinity, Infinity, Infinity, Infinity); - ctx.transform(0, Infinity, Infinity, Infinity, 0, Infinity); - ctx.transform(0, Infinity, Infinity, 0, Infinity, 0); - ctx.transform(0, Infinity, Infinity, 0, Infinity, Infinity); - ctx.transform(0, Infinity, Infinity, 0, 0, Infinity); - ctx.transform(0, Infinity, 0, Infinity, 0, 0); - ctx.transform(0, Infinity, 0, Infinity, Infinity, 0); - ctx.transform(0, Infinity, 0, Infinity, Infinity, Infinity); - ctx.transform(0, Infinity, 0, Infinity, 0, Infinity); - ctx.transform(0, Infinity, 0, 0, Infinity, 0); - ctx.transform(0, Infinity, 0, 0, Infinity, Infinity); - ctx.transform(0, Infinity, 0, 0, 0, Infinity); - ctx.transform(0, 0, Infinity, Infinity, 0, 0); - ctx.transform(0, 0, Infinity, Infinity, Infinity, 0); - ctx.transform(0, 0, Infinity, Infinity, Infinity, Infinity); - ctx.transform(0, 0, Infinity, Infinity, 0, Infinity); - ctx.transform(0, 0, Infinity, 0, Infinity, 0); - ctx.transform(0, 0, Infinity, 0, Infinity, Infinity); - ctx.transform(0, 0, Infinity, 0, 0, Infinity); - ctx.transform(0, 0, 0, Infinity, Infinity, 0); - ctx.transform(0, 0, 0, Infinity, Infinity, Infinity); - ctx.transform(0, 0, 0, Infinity, 0, Infinity); - ctx.transform(0, 0, 0, 0, Infinity, Infinity); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); - - it("2d.transformation.setTransform.skewed", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - // Create green with a red square ring inside it - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(20, 10, 60, 30); - ctx.fillStyle = '#0f0'; - ctx.fillRect(40, 20, 20, 10); - - // Draw a skewed shape to fill that gap, to make sure it is aligned correctly - ctx.setTransform(1,4, 2,3, 5,6); - // Post-transform coordinates: - // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; - // Hence pre-transform coordinates: - var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2], - [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2], - [-7.4,11.2]]; - ctx.beginPath(); - ctx.moveTo(pts[0][0], pts[0][1]); - for (var i = 0; i < pts.length; ++i) - ctx.lineTo(pts[i][0], pts[i][1]); - ctx.fill(); - _assertPixel(canvas, 21,11, 0,255,0,255); - _assertPixel(canvas, 79,11, 0,255,0,255); - _assertPixel(canvas, 21,39, 0,255,0,255); - _assertPixel(canvas, 79,39, 0,255,0,255); - _assertPixel(canvas, 39,19, 0,255,0,255); - _assertPixel(canvas, 61,19, 0,255,0,255); - _assertPixel(canvas, 39,31, 0,255,0,255); - _assertPixel(canvas, 61,31, 0,255,0,255); - }); - - it("2d.transformation.setTransform.multiple", function () { - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.setTransform(1/2,0, 0,1/2, 0,0); - ctx.setTransform(); - ctx.setTransform(2,0, 0,2, 0,0); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 25); - _assertPixel(canvas, 75,35, 0,255,0,255); - }); - - it("2d.transformation.setTransform.nonfinite", function () { - // setTransform() with Infinity/NaN is ignored - const canvas = createCanvas(100, 50); - const ctx = canvas.getContext("2d"); - const t = new Test(); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.translate(100, 10); - ctx.setTransform(Infinity, 0, 0, 0, 0, 0); - ctx.setTransform(-Infinity, 0, 0, 0, 0, 0); - ctx.setTransform(NaN, 0, 0, 0, 0, 0); - ctx.setTransform(0, Infinity, 0, 0, 0, 0); - ctx.setTransform(0, -Infinity, 0, 0, 0, 0); - ctx.setTransform(0, NaN, 0, 0, 0, 0); - ctx.setTransform(0, 0, Infinity, 0, 0, 0); - ctx.setTransform(0, 0, -Infinity, 0, 0, 0); - ctx.setTransform(0, 0, NaN, 0, 0, 0); - ctx.setTransform(0, 0, 0, Infinity, 0, 0); - ctx.setTransform(0, 0, 0, -Infinity, 0, 0); - ctx.setTransform(0, 0, 0, NaN, 0, 0); - ctx.setTransform(0, 0, 0, 0, Infinity, 0); - ctx.setTransform(0, 0, 0, 0, -Infinity, 0); - ctx.setTransform(0, 0, 0, 0, NaN, 0); - ctx.setTransform(0, 0, 0, 0, 0, Infinity); - ctx.setTransform(0, 0, 0, 0, 0, -Infinity); - ctx.setTransform(0, 0, 0, 0, 0, NaN); - ctx.setTransform(Infinity, Infinity, 0, 0, 0, 0); - ctx.setTransform(Infinity, Infinity, Infinity, 0, 0, 0); - ctx.setTransform(Infinity, Infinity, Infinity, Infinity, 0, 0); - ctx.setTransform(Infinity, Infinity, Infinity, Infinity, Infinity, 0); - ctx.setTransform(Infinity, Infinity, Infinity, Infinity, Infinity, Infinity); - ctx.setTransform(Infinity, Infinity, Infinity, Infinity, 0, Infinity); - ctx.setTransform(Infinity, Infinity, Infinity, 0, Infinity, 0); - ctx.setTransform(Infinity, Infinity, Infinity, 0, Infinity, Infinity); - ctx.setTransform(Infinity, Infinity, Infinity, 0, 0, Infinity); - ctx.setTransform(Infinity, Infinity, 0, Infinity, 0, 0); - ctx.setTransform(Infinity, Infinity, 0, Infinity, Infinity, 0); - ctx.setTransform(Infinity, Infinity, 0, Infinity, Infinity, Infinity); - ctx.setTransform(Infinity, Infinity, 0, Infinity, 0, Infinity); - ctx.setTransform(Infinity, Infinity, 0, 0, Infinity, 0); - ctx.setTransform(Infinity, Infinity, 0, 0, Infinity, Infinity); - ctx.setTransform(Infinity, Infinity, 0, 0, 0, Infinity); - ctx.setTransform(Infinity, 0, Infinity, 0, 0, 0); - ctx.setTransform(Infinity, 0, Infinity, Infinity, 0, 0); - ctx.setTransform(Infinity, 0, Infinity, Infinity, Infinity, 0); - ctx.setTransform(Infinity, 0, Infinity, Infinity, Infinity, Infinity); - ctx.setTransform(Infinity, 0, Infinity, Infinity, 0, Infinity); - ctx.setTransform(Infinity, 0, Infinity, 0, Infinity, 0); - ctx.setTransform(Infinity, 0, Infinity, 0, Infinity, Infinity); - ctx.setTransform(Infinity, 0, Infinity, 0, 0, Infinity); - ctx.setTransform(Infinity, 0, 0, Infinity, 0, 0); - ctx.setTransform(Infinity, 0, 0, Infinity, Infinity, 0); - ctx.setTransform(Infinity, 0, 0, Infinity, Infinity, Infinity); - ctx.setTransform(Infinity, 0, 0, Infinity, 0, Infinity); - ctx.setTransform(Infinity, 0, 0, 0, Infinity, 0); - ctx.setTransform(Infinity, 0, 0, 0, Infinity, Infinity); - ctx.setTransform(Infinity, 0, 0, 0, 0, Infinity); - ctx.setTransform(0, Infinity, Infinity, 0, 0, 0); - ctx.setTransform(0, Infinity, Infinity, Infinity, 0, 0); - ctx.setTransform(0, Infinity, Infinity, Infinity, Infinity, 0); - ctx.setTransform(0, Infinity, Infinity, Infinity, Infinity, Infinity); - ctx.setTransform(0, Infinity, Infinity, Infinity, 0, Infinity); - ctx.setTransform(0, Infinity, Infinity, 0, Infinity, 0); - ctx.setTransform(0, Infinity, Infinity, 0, Infinity, Infinity); - ctx.setTransform(0, Infinity, Infinity, 0, 0, Infinity); - ctx.setTransform(0, Infinity, 0, Infinity, 0, 0); - ctx.setTransform(0, Infinity, 0, Infinity, Infinity, 0); - ctx.setTransform(0, Infinity, 0, Infinity, Infinity, Infinity); - ctx.setTransform(0, Infinity, 0, Infinity, 0, Infinity); - ctx.setTransform(0, Infinity, 0, 0, Infinity, 0); - ctx.setTransform(0, Infinity, 0, 0, Infinity, Infinity); - ctx.setTransform(0, Infinity, 0, 0, 0, Infinity); - ctx.setTransform(0, 0, Infinity, Infinity, 0, 0); - ctx.setTransform(0, 0, Infinity, Infinity, Infinity, 0); - ctx.setTransform(0, 0, Infinity, Infinity, Infinity, Infinity); - ctx.setTransform(0, 0, Infinity, Infinity, 0, Infinity); - ctx.setTransform(0, 0, Infinity, 0, Infinity, 0); - ctx.setTransform(0, 0, Infinity, 0, Infinity, Infinity); - ctx.setTransform(0, 0, Infinity, 0, 0, Infinity); - ctx.setTransform(0, 0, 0, Infinity, Infinity, 0); - ctx.setTransform(0, 0, 0, Infinity, Infinity, Infinity); - ctx.setTransform(0, 0, 0, Infinity, 0, Infinity); - ctx.setTransform(0, 0, 0, 0, Infinity, Infinity); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); - - _assertPixel(canvas, 50,25, 0,255,0,255); - }); + it("2d.transformation.order", function () { + // Transformations are applied in the right order + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.scale(2, 1); + ctx.rotate(Math.PI / 2); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, -50, 50, 50); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.transformation.scale.basic", function () { + // scale() works + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.scale(2, 4); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 50, 12.5); + _assertPixel(canvas, 90, 40, 0, 255, 0, 255); + }); + + it("2d.transformation.scale.zero", function () { + // scale() with a scale factor of zero works + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + + ctx.save(); + ctx.translate(50, 0); + ctx.scale(0, 1); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.restore(); + + ctx.save(); + ctx.translate(0, 25); + ctx.scale(1, 0); + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + ctx.restore(); + + canvas.toDataURL(); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.transformation.scale.negative", function () { + // scale() with negative scale factors works + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.save(); + ctx.scale(-1, 1); + ctx.fillStyle = "#0f0"; + ctx.fillRect(-50, 0, 50, 50); + ctx.restore(); + + ctx.save(); + ctx.scale(1, -1); + ctx.fillStyle = "#0f0"; + ctx.fillRect(50, -50, 50, 50); + ctx.restore(); + _assertPixel(canvas, 25, 25, 0, 255, 0, 255); + _assertPixel(canvas, 75, 25, 0, 255, 0, 255); + }); + + it("2d.transformation.scale.large", function () { + // scale() with large scale factors works + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.scale(1e5, 1e5); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 1, 1); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.transformation.scale.nonfinite", function () { + // scale() with Infinity/NaN is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.translate(100, 10); + ctx.scale(Infinity, 0.1); + ctx.scale(-Infinity, 0.1); + ctx.scale(NaN, 0.1); + ctx.scale(0.1, Infinity); + ctx.scale(0.1, -Infinity); + ctx.scale(0.1, NaN); + ctx.scale(Infinity, Infinity); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(-100, -10, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.transformation.scale.multiple", function () { + // Multiple scale()s combine + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.scale(Math.sqrt(2), Math.sqrt(2)); + ctx.scale(Math.sqrt(2), Math.sqrt(2)); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 50, 25); + _assertPixel(canvas, 90, 40, 0, 255, 0, 255); + }); + + it("2d.transformation.rotate.zero", function () { + // rotate() by 0 does nothing + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.rotate(0); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.transformation.rotate.radians", function () { + // rotate() uses radians + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees + ctx.fillStyle = "#0f0"; + ctx.fillRect(-100, -50, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.transformation.rotate.direction", function () { + // rotate() is clockwise + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.rotate(Math.PI / 2); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, -100, 50, 100); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.transformation.rotate.wrap", function () { + // rotate() wraps large positive values correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi) + // We need about pi +/- 0.001 in order to get correct-looking results + // 32-bit floats can store pi*4097 with precision 2^-10, so that should + // be safe enough on reasonable implementations + ctx.fillStyle = "#0f0"; + ctx.fillRect(-100, -50, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 98, 2, 0, 255, 0, 255); + _assertPixel(canvas, 98, 47, 0, 255, 0, 255); + }); + + it("2d.transformation.rotate.wrapnegative", function () { + // rotate() wraps large negative values correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.rotate(-Math.PI * (1 + 4096)); + ctx.fillStyle = "#0f0"; + ctx.fillRect(-100, -50, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + _assertPixel(canvas, 98, 2, 0, 255, 0, 255); + _assertPixel(canvas, 98, 47, 0, 255, 0, 255); + }); + + it("2d.transformation.rotate.nonfinite", function () { + // rotate() with Infinity/NaN is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.translate(100, 10); + ctx.rotate(Infinity); + ctx.rotate(-Infinity); + ctx.rotate(NaN); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(-100, -10, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.transformation.translate.basic", function () { + // translate() works + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.translate(100, 50); + ctx.fillStyle = "#0f0"; + ctx.fillRect(-100, -50, 100, 50); + _assertPixel(canvas, 90, 40, 0, 255, 0, 255); + }); + + it("2d.transformation.translate.nonfinite", function () { + // translate() with Infinity/NaN is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.translate(100, 10); + ctx.translate(Infinity, 0.1); + ctx.translate(-Infinity, 0.1); + ctx.translate(NaN, 0.1); + ctx.translate(0.1, Infinity); + ctx.translate(0.1, -Infinity); + ctx.translate(0.1, NaN); + ctx.translate(Infinity, Infinity); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(-100, -10, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.transformation.transform.identity", function () { + // transform() with the identity matrix does nothing + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.transform(1, 0, 0, 1, 0, 0); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.transformation.transform.skewed", function () { + // transform() with skewy matrix transforms correctly + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + // Create green with a red square ring inside it + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(20, 10, 60, 30); + ctx.fillStyle = "#0f0"; + ctx.fillRect(40, 20, 20, 10); + + // Draw a skewed shape to fill that gap, to make sure it is aligned correctly + ctx.transform(1, 4, 2, 3, 5, 6); + // Post-transform coordinates: + // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; + // Hence pre-transform coordinates: + var pts = [ + [-7.4, 11.2], + [-43.4, 59.2], + [-31.4, 53.2], + [4.6, 5.2], + [-7.4, 11.2], + [-15.4, 25.2], + [-11.4, 23.2], + [-23.4, 39.2], + [-27.4, 41.2], + [-15.4, 25.2], + [-7.4, 11.2], + ]; + ctx.beginPath(); + ctx.moveTo(pts[0][0], pts[0][1]); + for (var i = 0; i < pts.length; ++i) ctx.lineTo(pts[i][0], pts[i][1]); + ctx.fill(); + _assertPixel(canvas, 21, 11, 0, 255, 0, 255); + _assertPixel(canvas, 79, 11, 0, 255, 0, 255); + _assertPixel(canvas, 21, 39, 0, 255, 0, 255); + _assertPixel(canvas, 79, 39, 0, 255, 0, 255); + _assertPixel(canvas, 39, 19, 0, 255, 0, 255); + _assertPixel(canvas, 61, 19, 0, 255, 0, 255); + _assertPixel(canvas, 39, 31, 0, 255, 0, 255); + _assertPixel(canvas, 61, 31, 0, 255, 0, 255); + }); + + it("2d.transformation.transform.multiply", function () { + // transform() multiplies the CTM + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.transform(1, 2, 3, 4, 5, 6); + ctx.transform(-2, 1, 3 / 2, -1 / 2, 1, -2); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.transformation.transform.nonfinite", function () { + // transform() with Infinity/NaN is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.translate(100, 10); + ctx.transform(Infinity, 0, 0, 0, 0, 0); + ctx.transform(-Infinity, 0, 0, 0, 0, 0); + ctx.transform(NaN, 0, 0, 0, 0, 0); + ctx.transform(0, Infinity, 0, 0, 0, 0); + ctx.transform(0, -Infinity, 0, 0, 0, 0); + ctx.transform(0, NaN, 0, 0, 0, 0); + ctx.transform(0, 0, Infinity, 0, 0, 0); + ctx.transform(0, 0, -Infinity, 0, 0, 0); + ctx.transform(0, 0, NaN, 0, 0, 0); + ctx.transform(0, 0, 0, Infinity, 0, 0); + ctx.transform(0, 0, 0, -Infinity, 0, 0); + ctx.transform(0, 0, 0, NaN, 0, 0); + ctx.transform(0, 0, 0, 0, Infinity, 0); + ctx.transform(0, 0, 0, 0, -Infinity, 0); + ctx.transform(0, 0, 0, 0, NaN, 0); + ctx.transform(0, 0, 0, 0, 0, Infinity); + ctx.transform(0, 0, 0, 0, 0, -Infinity); + ctx.transform(0, 0, 0, 0, 0, NaN); + ctx.transform(Infinity, Infinity, 0, 0, 0, 0); + ctx.transform(Infinity, Infinity, Infinity, 0, 0, 0); + ctx.transform(Infinity, Infinity, Infinity, Infinity, 0, 0); + ctx.transform(Infinity, Infinity, Infinity, Infinity, Infinity, 0); + ctx.transform( + Infinity, + Infinity, + Infinity, + Infinity, + Infinity, + Infinity + ); + ctx.transform(Infinity, Infinity, Infinity, Infinity, 0, Infinity); + ctx.transform(Infinity, Infinity, Infinity, 0, Infinity, 0); + ctx.transform(Infinity, Infinity, Infinity, 0, Infinity, Infinity); + ctx.transform(Infinity, Infinity, Infinity, 0, 0, Infinity); + ctx.transform(Infinity, Infinity, 0, Infinity, 0, 0); + ctx.transform(Infinity, Infinity, 0, Infinity, Infinity, 0); + ctx.transform(Infinity, Infinity, 0, Infinity, Infinity, Infinity); + ctx.transform(Infinity, Infinity, 0, Infinity, 0, Infinity); + ctx.transform(Infinity, Infinity, 0, 0, Infinity, 0); + ctx.transform(Infinity, Infinity, 0, 0, Infinity, Infinity); + ctx.transform(Infinity, Infinity, 0, 0, 0, Infinity); + ctx.transform(Infinity, 0, Infinity, 0, 0, 0); + ctx.transform(Infinity, 0, Infinity, Infinity, 0, 0); + ctx.transform(Infinity, 0, Infinity, Infinity, Infinity, 0); + ctx.transform(Infinity, 0, Infinity, Infinity, Infinity, Infinity); + ctx.transform(Infinity, 0, Infinity, Infinity, 0, Infinity); + ctx.transform(Infinity, 0, Infinity, 0, Infinity, 0); + ctx.transform(Infinity, 0, Infinity, 0, Infinity, Infinity); + ctx.transform(Infinity, 0, Infinity, 0, 0, Infinity); + ctx.transform(Infinity, 0, 0, Infinity, 0, 0); + ctx.transform(Infinity, 0, 0, Infinity, Infinity, 0); + ctx.transform(Infinity, 0, 0, Infinity, Infinity, Infinity); + ctx.transform(Infinity, 0, 0, Infinity, 0, Infinity); + ctx.transform(Infinity, 0, 0, 0, Infinity, 0); + ctx.transform(Infinity, 0, 0, 0, Infinity, Infinity); + ctx.transform(Infinity, 0, 0, 0, 0, Infinity); + ctx.transform(0, Infinity, Infinity, 0, 0, 0); + ctx.transform(0, Infinity, Infinity, Infinity, 0, 0); + ctx.transform(0, Infinity, Infinity, Infinity, Infinity, 0); + ctx.transform(0, Infinity, Infinity, Infinity, Infinity, Infinity); + ctx.transform(0, Infinity, Infinity, Infinity, 0, Infinity); + ctx.transform(0, Infinity, Infinity, 0, Infinity, 0); + ctx.transform(0, Infinity, Infinity, 0, Infinity, Infinity); + ctx.transform(0, Infinity, Infinity, 0, 0, Infinity); + ctx.transform(0, Infinity, 0, Infinity, 0, 0); + ctx.transform(0, Infinity, 0, Infinity, Infinity, 0); + ctx.transform(0, Infinity, 0, Infinity, Infinity, Infinity); + ctx.transform(0, Infinity, 0, Infinity, 0, Infinity); + ctx.transform(0, Infinity, 0, 0, Infinity, 0); + ctx.transform(0, Infinity, 0, 0, Infinity, Infinity); + ctx.transform(0, Infinity, 0, 0, 0, Infinity); + ctx.transform(0, 0, Infinity, Infinity, 0, 0); + ctx.transform(0, 0, Infinity, Infinity, Infinity, 0); + ctx.transform(0, 0, Infinity, Infinity, Infinity, Infinity); + ctx.transform(0, 0, Infinity, Infinity, 0, Infinity); + ctx.transform(0, 0, Infinity, 0, Infinity, 0); + ctx.transform(0, 0, Infinity, 0, Infinity, Infinity); + ctx.transform(0, 0, Infinity, 0, 0, Infinity); + ctx.transform(0, 0, 0, Infinity, Infinity, 0); + ctx.transform(0, 0, 0, Infinity, Infinity, Infinity); + ctx.transform(0, 0, 0, Infinity, 0, Infinity); + ctx.transform(0, 0, 0, 0, Infinity, Infinity); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(-100, -10, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); + + it("2d.transformation.setTransform.skewed", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + // Create green with a red square ring inside it + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = "#f00"; + ctx.fillRect(20, 10, 60, 30); + ctx.fillStyle = "#0f0"; + ctx.fillRect(40, 20, 20, 10); + + // Draw a skewed shape to fill that gap, to make sure it is aligned correctly + ctx.setTransform(1, 4, 2, 3, 5, 6); + // Post-transform coordinates: + // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; + // Hence pre-transform coordinates: + var pts = [ + [-7.4, 11.2], + [-43.4, 59.2], + [-31.4, 53.2], + [4.6, 5.2], + [-7.4, 11.2], + [-15.4, 25.2], + [-11.4, 23.2], + [-23.4, 39.2], + [-27.4, 41.2], + [-15.4, 25.2], + [-7.4, 11.2], + ]; + ctx.beginPath(); + ctx.moveTo(pts[0][0], pts[0][1]); + for (var i = 0; i < pts.length; ++i) ctx.lineTo(pts[i][0], pts[i][1]); + ctx.fill(); + _assertPixel(canvas, 21, 11, 0, 255, 0, 255); + _assertPixel(canvas, 79, 11, 0, 255, 0, 255); + _assertPixel(canvas, 21, 39, 0, 255, 0, 255); + _assertPixel(canvas, 79, 39, 0, 255, 0, 255); + _assertPixel(canvas, 39, 19, 0, 255, 0, 255); + _assertPixel(canvas, 61, 19, 0, 255, 0, 255); + _assertPixel(canvas, 39, 31, 0, 255, 0, 255); + _assertPixel(canvas, 61, 31, 0, 255, 0, 255); + }); + + it("2d.transformation.setTransform.multiple", function () { + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.setTransform(1 / 2, 0, 0, 1 / 2, 0, 0); + ctx.setTransform(); + ctx.setTransform(2, 0, 0, 2, 0, 0); + ctx.fillStyle = "#0f0"; + ctx.fillRect(0, 0, 50, 25); + _assertPixel(canvas, 75, 35, 0, 255, 0, 255); + }); + + it("2d.transformation.setTransform.nonfinite", function () { + // setTransform() with Infinity/NaN is ignored + const canvas = createCanvas(100, 50); + const ctx = canvas.getContext("2d"); + const t = new Test(); + + ctx.fillStyle = "#f00"; + ctx.fillRect(0, 0, 100, 50); + + ctx.translate(100, 10); + ctx.setTransform(Infinity, 0, 0, 0, 0, 0); + ctx.setTransform(-Infinity, 0, 0, 0, 0, 0); + ctx.setTransform(NaN, 0, 0, 0, 0, 0); + ctx.setTransform(0, Infinity, 0, 0, 0, 0); + ctx.setTransform(0, -Infinity, 0, 0, 0, 0); + ctx.setTransform(0, NaN, 0, 0, 0, 0); + ctx.setTransform(0, 0, Infinity, 0, 0, 0); + ctx.setTransform(0, 0, -Infinity, 0, 0, 0); + ctx.setTransform(0, 0, NaN, 0, 0, 0); + ctx.setTransform(0, 0, 0, Infinity, 0, 0); + ctx.setTransform(0, 0, 0, -Infinity, 0, 0); + ctx.setTransform(0, 0, 0, NaN, 0, 0); + ctx.setTransform(0, 0, 0, 0, Infinity, 0); + ctx.setTransform(0, 0, 0, 0, -Infinity, 0); + ctx.setTransform(0, 0, 0, 0, NaN, 0); + ctx.setTransform(0, 0, 0, 0, 0, Infinity); + ctx.setTransform(0, 0, 0, 0, 0, -Infinity); + ctx.setTransform(0, 0, 0, 0, 0, NaN); + ctx.setTransform(Infinity, Infinity, 0, 0, 0, 0); + ctx.setTransform(Infinity, Infinity, Infinity, 0, 0, 0); + ctx.setTransform(Infinity, Infinity, Infinity, Infinity, 0, 0); + ctx.setTransform(Infinity, Infinity, Infinity, Infinity, Infinity, 0); + ctx.setTransform( + Infinity, + Infinity, + Infinity, + Infinity, + Infinity, + Infinity + ); + ctx.setTransform(Infinity, Infinity, Infinity, Infinity, 0, Infinity); + ctx.setTransform(Infinity, Infinity, Infinity, 0, Infinity, 0); + ctx.setTransform(Infinity, Infinity, Infinity, 0, Infinity, Infinity); + ctx.setTransform(Infinity, Infinity, Infinity, 0, 0, Infinity); + ctx.setTransform(Infinity, Infinity, 0, Infinity, 0, 0); + ctx.setTransform(Infinity, Infinity, 0, Infinity, Infinity, 0); + ctx.setTransform(Infinity, Infinity, 0, Infinity, Infinity, Infinity); + ctx.setTransform(Infinity, Infinity, 0, Infinity, 0, Infinity); + ctx.setTransform(Infinity, Infinity, 0, 0, Infinity, 0); + ctx.setTransform(Infinity, Infinity, 0, 0, Infinity, Infinity); + ctx.setTransform(Infinity, Infinity, 0, 0, 0, Infinity); + ctx.setTransform(Infinity, 0, Infinity, 0, 0, 0); + ctx.setTransform(Infinity, 0, Infinity, Infinity, 0, 0); + ctx.setTransform(Infinity, 0, Infinity, Infinity, Infinity, 0); + ctx.setTransform(Infinity, 0, Infinity, Infinity, Infinity, Infinity); + ctx.setTransform(Infinity, 0, Infinity, Infinity, 0, Infinity); + ctx.setTransform(Infinity, 0, Infinity, 0, Infinity, 0); + ctx.setTransform(Infinity, 0, Infinity, 0, Infinity, Infinity); + ctx.setTransform(Infinity, 0, Infinity, 0, 0, Infinity); + ctx.setTransform(Infinity, 0, 0, Infinity, 0, 0); + ctx.setTransform(Infinity, 0, 0, Infinity, Infinity, 0); + ctx.setTransform(Infinity, 0, 0, Infinity, Infinity, Infinity); + ctx.setTransform(Infinity, 0, 0, Infinity, 0, Infinity); + ctx.setTransform(Infinity, 0, 0, 0, Infinity, 0); + ctx.setTransform(Infinity, 0, 0, 0, Infinity, Infinity); + ctx.setTransform(Infinity, 0, 0, 0, 0, Infinity); + ctx.setTransform(0, Infinity, Infinity, 0, 0, 0); + ctx.setTransform(0, Infinity, Infinity, Infinity, 0, 0); + ctx.setTransform(0, Infinity, Infinity, Infinity, Infinity, 0); + ctx.setTransform(0, Infinity, Infinity, Infinity, Infinity, Infinity); + ctx.setTransform(0, Infinity, Infinity, Infinity, 0, Infinity); + ctx.setTransform(0, Infinity, Infinity, 0, Infinity, 0); + ctx.setTransform(0, Infinity, Infinity, 0, Infinity, Infinity); + ctx.setTransform(0, Infinity, Infinity, 0, 0, Infinity); + ctx.setTransform(0, Infinity, 0, Infinity, 0, 0); + ctx.setTransform(0, Infinity, 0, Infinity, Infinity, 0); + ctx.setTransform(0, Infinity, 0, Infinity, Infinity, Infinity); + ctx.setTransform(0, Infinity, 0, Infinity, 0, Infinity); + ctx.setTransform(0, Infinity, 0, 0, Infinity, 0); + ctx.setTransform(0, Infinity, 0, 0, Infinity, Infinity); + ctx.setTransform(0, Infinity, 0, 0, 0, Infinity); + ctx.setTransform(0, 0, Infinity, Infinity, 0, 0); + ctx.setTransform(0, 0, Infinity, Infinity, Infinity, 0); + ctx.setTransform(0, 0, Infinity, Infinity, Infinity, Infinity); + ctx.setTransform(0, 0, Infinity, Infinity, 0, Infinity); + ctx.setTransform(0, 0, Infinity, 0, Infinity, 0); + ctx.setTransform(0, 0, Infinity, 0, Infinity, Infinity); + ctx.setTransform(0, 0, Infinity, 0, 0, Infinity); + ctx.setTransform(0, 0, 0, Infinity, Infinity, 0); + ctx.setTransform(0, 0, 0, Infinity, Infinity, Infinity); + ctx.setTransform(0, 0, 0, Infinity, 0, Infinity); + ctx.setTransform(0, 0, 0, 0, Infinity, Infinity); + + ctx.fillStyle = "#0f0"; + ctx.fillRect(-100, -10, 100, 50); + + _assertPixel(canvas, 50, 25, 0, 255, 0, 255); + }); }); diff --git a/test/wpt/line-styles.yaml b/test/wpt/line-styles.yaml index e6dc3205e..12668895e 100644 --- a/test/wpt/line-styles.yaml +++ b/test/wpt/line-styles.yaml @@ -1,1017 +1,1012 @@ - name: 2d.line.defaults testing: - - 2d.lineWidth.default - - 2d.lineCap.default - - 2d.lineJoin.default - - 2d.miterLimit.default + - 2d.lineWidth.default + - 2d.lineCap.default + - 2d.lineJoin.default + - 2d.miterLimit.default code: | - @assert ctx.lineWidth === 1; - @assert ctx.lineCap === 'butt'; - @assert ctx.lineJoin === 'miter'; - @assert ctx.miterLimit === 10; + @assert ctx.lineWidth === 1; + @assert ctx.lineCap === 'butt'; + @assert ctx.lineJoin === 'miter'; + @assert ctx.miterLimit === 10; - name: 2d.line.width.basic desc: lineWidth determines the width of line strokes testing: - - 2d.lineWidth - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 20; - // Draw a green line over a red box, to check the line is not too small - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.fillRect(15, 15, 20, 20); - ctx.beginPath(); - ctx.moveTo(25, 15); - ctx.lineTo(25, 35); - ctx.stroke(); - - // Draw a green box over a red line, to check the line is not too large - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(75, 15); - ctx.lineTo(75, 35); - ctx.stroke(); - ctx.fillRect(65, 15, 20, 20); - - @assert pixel 14,25 == 0,255,0,255; - @assert pixel 15,25 == 0,255,0,255; - @assert pixel 16,25 == 0,255,0,255; - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 34,25 == 0,255,0,255; - @assert pixel 35,25 == 0,255,0,255; - @assert pixel 36,25 == 0,255,0,255; - - @assert pixel 64,25 == 0,255,0,255; - @assert pixel 65,25 == 0,255,0,255; - @assert pixel 66,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; - @assert pixel 84,25 == 0,255,0,255; - @assert pixel 85,25 == 0,255,0,255; - @assert pixel 86,25 == 0,255,0,255; + - 2d.lineWidth + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 20; + // Draw a green line over a red box, to check the line is not too small + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(15, 15, 20, 20); + ctx.beginPath(); + ctx.moveTo(25, 15); + ctx.lineTo(25, 35); + ctx.stroke(); + + // Draw a green box over a red line, to check the line is not too large + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(75, 15); + ctx.lineTo(75, 35); + ctx.stroke(); + ctx.fillRect(65, 15, 20, 20); + + @assert pixel 14,25 == 0,255,0,255; + @assert pixel 15,25 == 0,255,0,255; + @assert pixel 16,25 == 0,255,0,255; + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 34,25 == 0,255,0,255; + @assert pixel 35,25 == 0,255,0,255; + @assert pixel 36,25 == 0,255,0,255; + + @assert pixel 64,25 == 0,255,0,255; + @assert pixel 65,25 == 0,255,0,255; + @assert pixel 66,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + @assert pixel 84,25 == 0,255,0,255; + @assert pixel 85,25 == 0,255,0,255; + @assert pixel 86,25 == 0,255,0,255; expected: green - name: 2d.line.width.transformed desc: Line stroke widths are affected by scale transformations testing: - - 2d.lineWidth - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 4; - // Draw a green line over a red box, to check the line is not too small - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.fillRect(15, 15, 20, 20); - ctx.save(); - ctx.scale(5, 1); - ctx.beginPath(); - ctx.moveTo(5, 15); - ctx.lineTo(5, 35); - ctx.stroke(); - ctx.restore(); - - // Draw a green box over a red line, to check the line is not too large - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.save(); - ctx.scale(-5, 1); - ctx.beginPath(); - ctx.moveTo(-15, 15); - ctx.lineTo(-15, 35); - ctx.stroke(); - ctx.restore(); - ctx.fillRect(65, 15, 20, 20); - - @assert pixel 14,25 == 0,255,0,255; - @assert pixel 15,25 == 0,255,0,255; - @assert pixel 16,25 == 0,255,0,255; - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 34,25 == 0,255,0,255; - @assert pixel 35,25 == 0,255,0,255; - @assert pixel 36,25 == 0,255,0,255; - - @assert pixel 64,25 == 0,255,0,255; - @assert pixel 65,25 == 0,255,0,255; - @assert pixel 66,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; - @assert pixel 84,25 == 0,255,0,255; - @assert pixel 85,25 == 0,255,0,255; - @assert pixel 86,25 == 0,255,0,255; + - 2d.lineWidth + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 4; + // Draw a green line over a red box, to check the line is not too small + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(15, 15, 20, 20); + ctx.save(); + ctx.scale(5, 1); + ctx.beginPath(); + ctx.moveTo(5, 15); + ctx.lineTo(5, 35); + ctx.stroke(); + ctx.restore(); + + // Draw a green box over a red line, to check the line is not too large + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.save(); + ctx.scale(-5, 1); + ctx.beginPath(); + ctx.moveTo(-15, 15); + ctx.lineTo(-15, 35); + ctx.stroke(); + ctx.restore(); + ctx.fillRect(65, 15, 20, 20); + + @assert pixel 14,25 == 0,255,0,255; + @assert pixel 15,25 == 0,255,0,255; + @assert pixel 16,25 == 0,255,0,255; + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 34,25 == 0,255,0,255; + @assert pixel 35,25 == 0,255,0,255; + @assert pixel 36,25 == 0,255,0,255; + + @assert pixel 64,25 == 0,255,0,255; + @assert pixel 65,25 == 0,255,0,255; + @assert pixel 66,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + @assert pixel 84,25 == 0,255,0,255; + @assert pixel 85,25 == 0,255,0,255; + @assert pixel 86,25 == 0,255,0,255; expected: green - name: 2d.line.width.scaledefault desc: Default lineWidth strokes are affected by scale transformations testing: - - 2d.lineWidth - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.scale(50, 50); - ctx.strokeStyle = '#0f0'; - ctx.moveTo(0, 0.5); - ctx.lineTo(2, 0.5); - ctx.stroke(); - - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; - @assert pixel 50,5 == 0,255,0,255; - @assert pixel 50,45 == 0,255,0,255; + - 2d.lineWidth + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.scale(50, 50); + ctx.strokeStyle = '#0f0'; + ctx.moveTo(0, 0.5); + ctx.lineTo(2, 0.5); + ctx.stroke(); + + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + @assert pixel 50,5 == 0,255,0,255; + @assert pixel 50,45 == 0,255,0,255; expected: green - name: 2d.line.width.valid desc: Setting lineWidth to valid values works testing: - - 2d.lineWidth.set - - 2d.lineWidth.get + - 2d.lineWidth.set + - 2d.lineWidth.get code: | - ctx.lineWidth = 1.5; - @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + @assert ctx.lineWidth === 1.5; - ctx.lineWidth = "1e1"; - @assert ctx.lineWidth === 10; + ctx.lineWidth = "1e1"; + @assert ctx.lineWidth === 10; - ctx.lineWidth = 1/1024; - @assert ctx.lineWidth === 1/1024; + ctx.lineWidth = 1/1024; + @assert ctx.lineWidth === 1/1024; - ctx.lineWidth = 1000; - @assert ctx.lineWidth === 1000; + ctx.lineWidth = 1000; + @assert ctx.lineWidth === 1000; - name: 2d.line.width.invalid desc: Setting lineWidth to invalid values is ignored testing: - - 2d.lineWidth.invalid + - 2d.lineWidth.invalid code: | - ctx.lineWidth = 1.5; - @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + @assert ctx.lineWidth === 1.5; - ctx.lineWidth = 1.5; - ctx.lineWidth = 0; - @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + ctx.lineWidth = 0; + @assert ctx.lineWidth === 1.5; - ctx.lineWidth = 1.5; - ctx.lineWidth = -1; - @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + ctx.lineWidth = -1; + @assert ctx.lineWidth === 1.5; - ctx.lineWidth = 1.5; - ctx.lineWidth = Infinity; - @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + ctx.lineWidth = Infinity; + @assert ctx.lineWidth === 1.5; - ctx.lineWidth = 1.5; - ctx.lineWidth = -Infinity; - @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + ctx.lineWidth = -Infinity; + @assert ctx.lineWidth === 1.5; - ctx.lineWidth = 1.5; - ctx.lineWidth = NaN; - @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + ctx.lineWidth = NaN; + @assert ctx.lineWidth === 1.5; - ctx.lineWidth = 1.5; - ctx.lineWidth = 'string'; - @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + ctx.lineWidth = 'string'; + @assert ctx.lineWidth === 1.5; - ctx.lineWidth = 1.5; - ctx.lineWidth = true; - @assert ctx.lineWidth === 1; + ctx.lineWidth = 1.5; + ctx.lineWidth = true; + @assert ctx.lineWidth === 1; - ctx.lineWidth = 1.5; - ctx.lineWidth = false; - @assert ctx.lineWidth === 1.5; + ctx.lineWidth = 1.5; + ctx.lineWidth = false; + @assert ctx.lineWidth === 1.5; - name: 2d.line.cap.butt desc: lineCap 'butt' is rendered correctly testing: - - 2d.lineCap.butt - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineCap = 'butt'; - ctx.lineWidth = 20; - - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.fillRect(15, 15, 20, 20); - ctx.beginPath(); - ctx.moveTo(25, 15); - ctx.lineTo(25, 35); - ctx.stroke(); - - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(75, 15); - ctx.lineTo(75, 35); - ctx.stroke(); - ctx.fillRect(65, 15, 20, 20); - - @assert pixel 25,14 == 0,255,0,255; - @assert pixel 25,15 == 0,255,0,255; - @assert pixel 25,16 == 0,255,0,255; - @assert pixel 25,34 == 0,255,0,255; - @assert pixel 25,35 == 0,255,0,255; - @assert pixel 25,36 == 0,255,0,255; - - @assert pixel 75,14 == 0,255,0,255; - @assert pixel 75,15 == 0,255,0,255; - @assert pixel 75,16 == 0,255,0,255; - @assert pixel 75,34 == 0,255,0,255; - @assert pixel 75,35 == 0,255,0,255; - @assert pixel 75,36 == 0,255,0,255; + - 2d.lineCap.butt + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineCap = 'butt'; + ctx.lineWidth = 20; + + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(15, 15, 20, 20); + ctx.beginPath(); + ctx.moveTo(25, 15); + ctx.lineTo(25, 35); + ctx.stroke(); + + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(75, 15); + ctx.lineTo(75, 35); + ctx.stroke(); + ctx.fillRect(65, 15, 20, 20); + + @assert pixel 25,14 == 0,255,0,255; + @assert pixel 25,15 == 0,255,0,255; + @assert pixel 25,16 == 0,255,0,255; + @assert pixel 25,34 == 0,255,0,255; + @assert pixel 25,35 == 0,255,0,255; + @assert pixel 25,36 == 0,255,0,255; + + @assert pixel 75,14 == 0,255,0,255; + @assert pixel 75,15 == 0,255,0,255; + @assert pixel 75,16 == 0,255,0,255; + @assert pixel 75,34 == 0,255,0,255; + @assert pixel 75,35 == 0,255,0,255; + @assert pixel 75,36 == 0,255,0,255; expected: green - name: 2d.line.cap.round desc: lineCap 'round' is rendered correctly testing: - - 2d.lineCap.round + - 2d.lineCap.round code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - var tol = 1; // tolerance to avoid antialiasing artifacts + var tol = 1; // tolerance to avoid antialiasing artifacts - ctx.lineCap = 'round'; - ctx.lineWidth = 20; + ctx.lineCap = 'round'; + ctx.lineWidth = 20; - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(35-tol, 15); - ctx.arc(25, 15, 10-tol, 0, Math.PI, true); - ctx.arc(25, 35, 10-tol, Math.PI, 0, true); - ctx.fill(); + ctx.beginPath(); + ctx.moveTo(35-tol, 15); + ctx.arc(25, 15, 10-tol, 0, Math.PI, true); + ctx.arc(25, 35, 10-tol, Math.PI, 0, true); + ctx.fill(); - ctx.beginPath(); - ctx.moveTo(25, 15); - ctx.lineTo(25, 35); - ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(25, 15); + ctx.lineTo(25, 35); + ctx.stroke(); - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(75, 15); - ctx.lineTo(75, 35); - ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(75, 15); + ctx.lineTo(75, 35); + ctx.stroke(); - ctx.beginPath(); - ctx.moveTo(85+tol, 15); - ctx.arc(75, 15, 10+tol, 0, Math.PI, true); - ctx.arc(75, 35, 10+tol, Math.PI, 0, true); - ctx.fill(); + ctx.beginPath(); + ctx.moveTo(85+tol, 15); + ctx.arc(75, 15, 10+tol, 0, Math.PI, true); + ctx.arc(75, 35, 10+tol, Math.PI, 0, true); + ctx.fill(); - @assert pixel 17,6 == 0,255,0,255; - @assert pixel 25,6 == 0,255,0,255; - @assert pixel 32,6 == 0,255,0,255; - @assert pixel 17,43 == 0,255,0,255; - @assert pixel 25,43 == 0,255,0,255; - @assert pixel 32,43 == 0,255,0,255; + @assert pixel 17,6 == 0,255,0,255; + @assert pixel 25,6 == 0,255,0,255; + @assert pixel 32,6 == 0,255,0,255; + @assert pixel 17,43 == 0,255,0,255; + @assert pixel 25,43 == 0,255,0,255; + @assert pixel 32,43 == 0,255,0,255; - @assert pixel 67,6 == 0,255,0,255; - @assert pixel 75,6 == 0,255,0,255; - @assert pixel 82,6 == 0,255,0,255; - @assert pixel 67,43 == 0,255,0,255; - @assert pixel 75,43 == 0,255,0,255; - @assert pixel 82,43 == 0,255,0,255; + @assert pixel 67,6 == 0,255,0,255; + @assert pixel 75,6 == 0,255,0,255; + @assert pixel 82,6 == 0,255,0,255; + @assert pixel 67,43 == 0,255,0,255; + @assert pixel 75,43 == 0,255,0,255; + @assert pixel 82,43 == 0,255,0,255; expected: green - name: 2d.line.cap.square desc: lineCap 'square' is rendered correctly testing: - - 2d.lineCap.square - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineCap = 'square'; - ctx.lineWidth = 20; - - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.fillRect(15, 5, 20, 40); - ctx.beginPath(); - ctx.moveTo(25, 15); - ctx.lineTo(25, 35); - ctx.stroke(); - - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(75, 15); - ctx.lineTo(75, 35); - ctx.stroke(); - ctx.fillRect(65, 5, 20, 40); - - @assert pixel 25,4 == 0,255,0,255; - @assert pixel 25,5 == 0,255,0,255; - @assert pixel 25,6 == 0,255,0,255; - @assert pixel 25,44 == 0,255,0,255; - @assert pixel 25,45 == 0,255,0,255; - @assert pixel 25,46 == 0,255,0,255; - - @assert pixel 75,4 == 0,255,0,255; - @assert pixel 75,5 == 0,255,0,255; - @assert pixel 75,6 == 0,255,0,255; - @assert pixel 75,44 == 0,255,0,255; - @assert pixel 75,45 == 0,255,0,255; - @assert pixel 75,46 == 0,255,0,255; + - 2d.lineCap.square + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineCap = 'square'; + ctx.lineWidth = 20; + + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(15, 5, 20, 40); + ctx.beginPath(); + ctx.moveTo(25, 15); + ctx.lineTo(25, 35); + ctx.stroke(); + + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(75, 15); + ctx.lineTo(75, 35); + ctx.stroke(); + ctx.fillRect(65, 5, 20, 40); + + @assert pixel 25,4 == 0,255,0,255; + @assert pixel 25,5 == 0,255,0,255; + @assert pixel 25,6 == 0,255,0,255; + @assert pixel 25,44 == 0,255,0,255; + @assert pixel 25,45 == 0,255,0,255; + @assert pixel 25,46 == 0,255,0,255; + + @assert pixel 75,4 == 0,255,0,255; + @assert pixel 75,5 == 0,255,0,255; + @assert pixel 75,6 == 0,255,0,255; + @assert pixel 75,44 == 0,255,0,255; + @assert pixel 75,45 == 0,255,0,255; + @assert pixel 75,46 == 0,255,0,255; expected: green - name: 2d.line.cap.open desc: Line caps are drawn at the corners of an unclosed rectangle testing: - - 2d.lineCap.end - code: | - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineJoin = 'bevel'; - ctx.lineCap = 'square'; - ctx.lineWidth = 400; - - ctx.beginPath(); - ctx.moveTo(200, 200); - ctx.lineTo(200, 1000); - ctx.lineTo(1000, 1000); - ctx.lineTo(1000, 200); - ctx.lineTo(200, 200); - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + - 2d.lineCap.end + code: | + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineJoin = 'bevel'; + ctx.lineCap = 'square'; + ctx.lineWidth = 400; + + ctx.beginPath(); + ctx.moveTo(200, 200); + ctx.lineTo(200, 1000); + ctx.lineTo(1000, 1000); + ctx.lineTo(1000, 200); + ctx.lineTo(200, 200); + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; expected: green - name: 2d.line.cap.closed desc: Line caps are not drawn at the corners of an unclosed rectangle testing: - - 2d.lineCap.end - code: | - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineJoin = 'bevel'; - ctx.lineCap = 'square'; - ctx.lineWidth = 400; - - ctx.beginPath(); - ctx.moveTo(200, 200); - ctx.lineTo(200, 1000); - ctx.lineTo(1000, 1000); - ctx.lineTo(1000, 200); - ctx.closePath(); - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + - 2d.lineCap.end + code: | + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineJoin = 'bevel'; + ctx.lineCap = 'square'; + ctx.lineWidth = 400; + + ctx.beginPath(); + ctx.moveTo(200, 200); + ctx.lineTo(200, 1000); + ctx.lineTo(1000, 1000); + ctx.lineTo(1000, 200); + ctx.closePath(); + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; expected: green - name: 2d.line.cap.valid desc: Setting lineCap to valid values works testing: - - 2d.lineCap.set - - 2d.lineCap.get + - 2d.lineCap.set + - 2d.lineCap.get code: | - ctx.lineCap = 'butt' - @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt' + @assert ctx.lineCap === 'butt'; - ctx.lineCap = 'round'; - @assert ctx.lineCap === 'round'; + ctx.lineCap = 'round'; + @assert ctx.lineCap === 'round'; - ctx.lineCap = 'square'; - @assert ctx.lineCap === 'square'; + ctx.lineCap = 'square'; + @assert ctx.lineCap === 'square'; - name: 2d.line.cap.invalid desc: Setting lineCap to invalid values is ignored testing: - - 2d.lineCap.invalid + - 2d.lineCap.invalid code: | - ctx.lineCap = 'butt' - @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt' + @assert ctx.lineCap === 'butt'; - ctx.lineCap = 'butt'; - ctx.lineCap = 'invalid'; - @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt'; + ctx.lineCap = 'invalid'; + @assert ctx.lineCap === 'butt'; - ctx.lineCap = 'butt'; - ctx.lineCap = 'ROUND'; - @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt'; + ctx.lineCap = 'ROUND'; + @assert ctx.lineCap === 'butt'; - ctx.lineCap = 'butt'; - ctx.lineCap = 'round\0'; - @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt'; + ctx.lineCap = 'round\0'; + @assert ctx.lineCap === 'butt'; - ctx.lineCap = 'butt'; - ctx.lineCap = 'round '; - @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt'; + ctx.lineCap = 'round '; + @assert ctx.lineCap === 'butt'; - ctx.lineCap = 'butt'; - ctx.lineCap = ""; - @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt'; + ctx.lineCap = ""; + @assert ctx.lineCap === 'butt'; - ctx.lineCap = 'butt'; - ctx.lineCap = 'bevel'; - @assert ctx.lineCap === 'butt'; + ctx.lineCap = 'butt'; + ctx.lineCap = 'bevel'; + @assert ctx.lineCap === 'butt'; - name: 2d.line.join.bevel desc: lineJoin 'bevel' is rendered correctly testing: - - 2d.lineJoin.common - - 2d.lineJoin.bevel - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - var tol = 1; // tolerance to avoid antialiasing artifacts - - ctx.lineJoin = 'bevel'; - ctx.lineWidth = 20; - - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - - ctx.fillRect(10, 10, 20, 20); - ctx.fillRect(20, 20, 20, 20); - ctx.beginPath(); - ctx.moveTo(30, 20); - ctx.lineTo(40-tol, 20); - ctx.lineTo(30, 10+tol); - ctx.fill(); - - ctx.beginPath(); - ctx.moveTo(10, 20); - ctx.lineTo(30, 20); - ctx.lineTo(30, 40); - ctx.stroke(); - - - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - - ctx.beginPath(); - ctx.moveTo(60, 20); - ctx.lineTo(80, 20); - ctx.lineTo(80, 40); - ctx.stroke(); - - ctx.fillRect(60, 10, 20, 20); - ctx.fillRect(70, 20, 20, 20); - ctx.beginPath(); - ctx.moveTo(80, 20); - ctx.lineTo(90+tol, 20); - ctx.lineTo(80, 10-tol); - ctx.fill(); - - @assert pixel 34,16 == 0,255,0,255; - @assert pixel 34,15 == 0,255,0,255; - @assert pixel 35,15 == 0,255,0,255; - @assert pixel 36,15 == 0,255,0,255; - @assert pixel 36,14 == 0,255,0,255; - - @assert pixel 84,16 == 0,255,0,255; - @assert pixel 84,15 == 0,255,0,255; - @assert pixel 85,15 == 0,255,0,255; - @assert pixel 86,15 == 0,255,0,255; - @assert pixel 86,14 == 0,255,0,255; + - 2d.lineJoin.common + - 2d.lineJoin.bevel + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + var tol = 1; // tolerance to avoid antialiasing artifacts + + ctx.lineJoin = 'bevel'; + ctx.lineWidth = 20; + + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + + ctx.fillRect(10, 10, 20, 20); + ctx.fillRect(20, 20, 20, 20); + ctx.beginPath(); + ctx.moveTo(30, 20); + ctx.lineTo(40-tol, 20); + ctx.lineTo(30, 10+tol); + ctx.fill(); + + ctx.beginPath(); + ctx.moveTo(10, 20); + ctx.lineTo(30, 20); + ctx.lineTo(30, 40); + ctx.stroke(); + + + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + + ctx.beginPath(); + ctx.moveTo(60, 20); + ctx.lineTo(80, 20); + ctx.lineTo(80, 40); + ctx.stroke(); + + ctx.fillRect(60, 10, 20, 20); + ctx.fillRect(70, 20, 20, 20); + ctx.beginPath(); + ctx.moveTo(80, 20); + ctx.lineTo(90+tol, 20); + ctx.lineTo(80, 10-tol); + ctx.fill(); + + @assert pixel 34,16 == 0,255,0,255; + @assert pixel 34,15 == 0,255,0,255; + @assert pixel 35,15 == 0,255,0,255; + @assert pixel 36,15 == 0,255,0,255; + @assert pixel 36,14 == 0,255,0,255; + + @assert pixel 84,16 == 0,255,0,255; + @assert pixel 84,15 == 0,255,0,255; + @assert pixel 85,15 == 0,255,0,255; + @assert pixel 86,15 == 0,255,0,255; + @assert pixel 86,14 == 0,255,0,255; expected: green - name: 2d.line.join.round desc: lineJoin 'round' is rendered correctly testing: - - 2d.lineJoin.round - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - var tol = 1; // tolerance to avoid antialiasing artifacts - - ctx.lineJoin = 'round'; - ctx.lineWidth = 20; - - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - - ctx.fillRect(10, 10, 20, 20); - ctx.fillRect(20, 20, 20, 20); - ctx.beginPath(); - ctx.moveTo(30, 20); - ctx.arc(30, 20, 10-tol, 0, 2*Math.PI, true); - ctx.fill(); - - ctx.beginPath(); - ctx.moveTo(10, 20); - ctx.lineTo(30, 20); - ctx.lineTo(30, 40); - ctx.stroke(); - - - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - - ctx.beginPath(); - ctx.moveTo(60, 20); - ctx.lineTo(80, 20); - ctx.lineTo(80, 40); - ctx.stroke(); - - ctx.fillRect(60, 10, 20, 20); - ctx.fillRect(70, 20, 20, 20); - ctx.beginPath(); - ctx.moveTo(80, 20); - ctx.arc(80, 20, 10+tol, 0, 2*Math.PI, true); - ctx.fill(); - - @assert pixel 36,14 == 0,255,0,255; - @assert pixel 36,13 == 0,255,0,255; - @assert pixel 37,13 == 0,255,0,255; - @assert pixel 38,13 == 0,255,0,255; - @assert pixel 38,12 == 0,255,0,255; - - @assert pixel 86,14 == 0,255,0,255; - @assert pixel 86,13 == 0,255,0,255; - @assert pixel 87,13 == 0,255,0,255; - @assert pixel 88,13 == 0,255,0,255; - @assert pixel 88,12 == 0,255,0,255; + - 2d.lineJoin.round + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + var tol = 1; // tolerance to avoid antialiasing artifacts + + ctx.lineJoin = 'round'; + ctx.lineWidth = 20; + + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + + ctx.fillRect(10, 10, 20, 20); + ctx.fillRect(20, 20, 20, 20); + ctx.beginPath(); + ctx.moveTo(30, 20); + ctx.arc(30, 20, 10-tol, 0, 2*Math.PI, true); + ctx.fill(); + + ctx.beginPath(); + ctx.moveTo(10, 20); + ctx.lineTo(30, 20); + ctx.lineTo(30, 40); + ctx.stroke(); + + + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + + ctx.beginPath(); + ctx.moveTo(60, 20); + ctx.lineTo(80, 20); + ctx.lineTo(80, 40); + ctx.stroke(); + + ctx.fillRect(60, 10, 20, 20); + ctx.fillRect(70, 20, 20, 20); + ctx.beginPath(); + ctx.moveTo(80, 20); + ctx.arc(80, 20, 10+tol, 0, 2*Math.PI, true); + ctx.fill(); + + @assert pixel 36,14 == 0,255,0,255; + @assert pixel 36,13 == 0,255,0,255; + @assert pixel 37,13 == 0,255,0,255; + @assert pixel 38,13 == 0,255,0,255; + @assert pixel 38,12 == 0,255,0,255; + + @assert pixel 86,14 == 0,255,0,255; + @assert pixel 86,13 == 0,255,0,255; + @assert pixel 87,13 == 0,255,0,255; + @assert pixel 88,13 == 0,255,0,255; + @assert pixel 88,12 == 0,255,0,255; expected: green - name: 2d.line.join.miter desc: lineJoin 'miter' is rendered correctly testing: - - 2d.lineJoin.miter + - 2d.lineJoin.miter code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.lineJoin = 'miter'; - ctx.lineWidth = 20; + ctx.lineJoin = 'miter'; + ctx.lineWidth = 20; - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; - ctx.fillRect(10, 10, 30, 20); - ctx.fillRect(20, 10, 20, 30); + ctx.fillRect(10, 10, 30, 20); + ctx.fillRect(20, 10, 20, 30); - ctx.beginPath(); - ctx.moveTo(10, 20); - ctx.lineTo(30, 20); - ctx.lineTo(30, 40); - ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(10, 20); + ctx.lineTo(30, 20); + ctx.lineTo(30, 40); + ctx.stroke(); - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(60, 20); - ctx.lineTo(80, 20); - ctx.lineTo(80, 40); - ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(60, 20); + ctx.lineTo(80, 20); + ctx.lineTo(80, 40); + ctx.stroke(); - ctx.fillRect(60, 10, 30, 20); - ctx.fillRect(70, 10, 20, 30); + ctx.fillRect(60, 10, 30, 20); + ctx.fillRect(70, 10, 20, 30); - @assert pixel 38,12 == 0,255,0,255; - @assert pixel 39,11 == 0,255,0,255; - @assert pixel 40,10 == 0,255,0,255; - @assert pixel 41,9 == 0,255,0,255; - @assert pixel 42,8 == 0,255,0,255; + @assert pixel 38,12 == 0,255,0,255; + @assert pixel 39,11 == 0,255,0,255; + @assert pixel 40,10 == 0,255,0,255; + @assert pixel 41,9 == 0,255,0,255; + @assert pixel 42,8 == 0,255,0,255; - @assert pixel 88,12 == 0,255,0,255; - @assert pixel 89,11 == 0,255,0,255; - @assert pixel 90,10 == 0,255,0,255; - @assert pixel 91,9 == 0,255,0,255; - @assert pixel 92,8 == 0,255,0,255; + @assert pixel 88,12 == 0,255,0,255; + @assert pixel 89,11 == 0,255,0,255; + @assert pixel 90,10 == 0,255,0,255; + @assert pixel 91,9 == 0,255,0,255; + @assert pixel 92,8 == 0,255,0,255; expected: green - name: 2d.line.join.open desc: Line joins are not drawn at the corner of an unclosed rectangle testing: - - 2d.lineJoin.joins - code: | - ctx.fillStyle = '#0f0'; - ctx.strokeStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineJoin = 'miter'; - ctx.lineWidth = 200; - - ctx.beginPath(); - ctx.moveTo(100, 50); - ctx.lineTo(100, 1000); - ctx.lineTo(1000, 1000); - ctx.lineTo(1000, 50); - ctx.lineTo(100, 50); - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + - 2d.lineJoin.joins + code: | + ctx.fillStyle = '#0f0'; + ctx.strokeStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineJoin = 'miter'; + ctx.lineWidth = 200; + + ctx.beginPath(); + ctx.moveTo(100, 50); + ctx.lineTo(100, 1000); + ctx.lineTo(1000, 1000); + ctx.lineTo(1000, 50); + ctx.lineTo(100, 50); + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; expected: green - name: 2d.line.join.closed desc: Line joins are drawn at the corner of a closed rectangle testing: - - 2d.lineJoin.joinclosed - code: | - ctx.fillStyle = '#f00'; - ctx.strokeStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineJoin = 'miter'; - ctx.lineWidth = 200; - - ctx.beginPath(); - ctx.moveTo(100, 50); - ctx.lineTo(100, 1000); - ctx.lineTo(1000, 1000); - ctx.lineTo(1000, 50); - ctx.closePath(); - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + - 2d.lineJoin.joinclosed + code: | + ctx.fillStyle = '#f00'; + ctx.strokeStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineJoin = 'miter'; + ctx.lineWidth = 200; + + ctx.beginPath(); + ctx.moveTo(100, 50); + ctx.lineTo(100, 1000); + ctx.lineTo(1000, 1000); + ctx.lineTo(1000, 50); + ctx.closePath(); + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; expected: green - name: 2d.line.join.parallel desc: Line joins are drawn at 180-degree joins testing: - - 2d.lineJoin.joins - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 300; - ctx.lineJoin = 'round'; - ctx.beginPath(); - ctx.moveTo(-100, 25); - ctx.lineTo(0, 25); - ctx.lineTo(-100, 25); - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + - 2d.lineJoin.joins + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 300; + ctx.lineJoin = 'round'; + ctx.beginPath(); + ctx.moveTo(-100, 25); + ctx.lineTo(0, 25); + ctx.lineTo(-100, 25); + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; expected: green - name: 2d.line.join.valid desc: Setting lineJoin to valid values works testing: - - 2d.lineJoin.set - - 2d.lineJoin.get + - 2d.lineJoin.set + - 2d.lineJoin.get code: | - ctx.lineJoin = 'bevel' - @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel' + @assert ctx.lineJoin === 'bevel'; - ctx.lineJoin = 'round'; - @assert ctx.lineJoin === 'round'; + ctx.lineJoin = 'round'; + @assert ctx.lineJoin === 'round'; - ctx.lineJoin = 'miter'; - @assert ctx.lineJoin === 'miter'; + ctx.lineJoin = 'miter'; + @assert ctx.lineJoin === 'miter'; - name: 2d.line.join.invalid desc: Setting lineJoin to invalid values is ignored testing: - - 2d.lineJoin.invalid + - 2d.lineJoin.invalid code: | - ctx.lineJoin = 'bevel' - @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel' + @assert ctx.lineJoin === 'bevel'; - ctx.lineJoin = 'bevel'; - ctx.lineJoin = 'invalid'; - @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel'; + ctx.lineJoin = 'invalid'; + @assert ctx.lineJoin === 'bevel'; - ctx.lineJoin = 'bevel'; - ctx.lineJoin = 'ROUND'; - @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel'; + ctx.lineJoin = 'ROUND'; + @assert ctx.lineJoin === 'bevel'; - ctx.lineJoin = 'bevel'; - ctx.lineJoin = 'round\0'; - @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel'; + ctx.lineJoin = 'round\0'; + @assert ctx.lineJoin === 'bevel'; - ctx.lineJoin = 'bevel'; - ctx.lineJoin = 'round '; - @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel'; + ctx.lineJoin = 'round '; + @assert ctx.lineJoin === 'bevel'; - ctx.lineJoin = 'bevel'; - ctx.lineJoin = ""; - @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel'; + ctx.lineJoin = ""; + @assert ctx.lineJoin === 'bevel'; - ctx.lineJoin = 'bevel'; - ctx.lineJoin = 'butt'; - @assert ctx.lineJoin === 'bevel'; + ctx.lineJoin = 'bevel'; + ctx.lineJoin = 'butt'; + @assert ctx.lineJoin === 'bevel'; - name: 2d.line.miter.exceeded desc: Miter joins are not drawn when the miter limit is exceeded testing: - - 2d.lineJoin.miterLimit - - 2d.lineJoin.miter - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 400; - ctx.lineJoin = 'miter'; - - ctx.strokeStyle = '#f00'; - ctx.miterLimit = 1.414; - ctx.beginPath(); - ctx.moveTo(200, 1000); - ctx.lineTo(200, 200); - ctx.lineTo(1000, 201); // slightly non-right-angle to avoid being a special case - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + - 2d.lineJoin.miterLimit + - 2d.lineJoin.miter + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 400; + ctx.lineJoin = 'miter'; + + ctx.strokeStyle = '#f00'; + ctx.miterLimit = 1.414; + ctx.beginPath(); + ctx.moveTo(200, 1000); + ctx.lineTo(200, 200); + ctx.lineTo(1000, 201); // slightly non-right-angle to avoid being a special case + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; expected: green - name: 2d.line.miter.acute desc: Miter joins are drawn correctly with acute angles testing: - - 2d.lineJoin.miterLimit - - 2d.lineJoin.miter - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 200; - ctx.lineJoin = 'miter'; - - ctx.strokeStyle = '#0f0'; - ctx.miterLimit = 2.614; - ctx.beginPath(); - ctx.moveTo(100, 1000); - ctx.lineTo(100, 100); - ctx.lineTo(1000, 1000); - ctx.stroke(); - - ctx.strokeStyle = '#f00'; - ctx.miterLimit = 2.613; - ctx.beginPath(); - ctx.moveTo(100, 1000); - ctx.lineTo(100, 100); - ctx.lineTo(1000, 1000); - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + - 2d.lineJoin.miterLimit + - 2d.lineJoin.miter + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 200; + ctx.lineJoin = 'miter'; + + ctx.strokeStyle = '#0f0'; + ctx.miterLimit = 2.614; + ctx.beginPath(); + ctx.moveTo(100, 1000); + ctx.lineTo(100, 100); + ctx.lineTo(1000, 1000); + ctx.stroke(); + + ctx.strokeStyle = '#f00'; + ctx.miterLimit = 2.613; + ctx.beginPath(); + ctx.moveTo(100, 1000); + ctx.lineTo(100, 100); + ctx.lineTo(1000, 1000); + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; expected: green - name: 2d.line.miter.obtuse desc: Miter joins are drawn correctly with obtuse angles testing: - - 2d.lineJoin.miterLimit - - 2d.lineJoin.miter - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 1600; - ctx.lineJoin = 'miter'; - - ctx.strokeStyle = '#0f0'; - ctx.miterLimit = 1.083; - ctx.beginPath(); - ctx.moveTo(800, 10000); - ctx.lineTo(800, 300); - ctx.lineTo(10000, -8900); - ctx.stroke(); - - ctx.strokeStyle = '#f00'; - ctx.miterLimit = 1.082; - ctx.beginPath(); - ctx.moveTo(800, 10000); - ctx.lineTo(800, 300); - ctx.lineTo(10000, -8900); - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + - 2d.lineJoin.miterLimit + - 2d.lineJoin.miter + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 1600; + ctx.lineJoin = 'miter'; + + ctx.strokeStyle = '#0f0'; + ctx.miterLimit = 1.083; + ctx.beginPath(); + ctx.moveTo(800, 10000); + ctx.lineTo(800, 300); + ctx.lineTo(10000, -8900); + ctx.stroke(); + + ctx.strokeStyle = '#f00'; + ctx.miterLimit = 1.082; + ctx.beginPath(); + ctx.moveTo(800, 10000); + ctx.lineTo(800, 300); + ctx.lineTo(10000, -8900); + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; expected: green - name: 2d.line.miter.rightangle - desc: Miter joins are not drawn when the miter limit is exceeded, on exact right - angles + desc: + Miter joins are not drawn when the miter limit is exceeded, on exact right + angles testing: - - 2d.lineJoin.miter - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 400; - ctx.lineJoin = 'miter'; - - ctx.strokeStyle = '#f00'; - ctx.miterLimit = 1.414; - ctx.beginPath(); - ctx.moveTo(200, 1000); - ctx.lineTo(200, 200); - ctx.lineTo(1000, 200); - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + - 2d.lineJoin.miter + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 400; + ctx.lineJoin = 'miter'; + + ctx.strokeStyle = '#f00'; + ctx.miterLimit = 1.414; + ctx.beginPath(); + ctx.moveTo(200, 1000); + ctx.lineTo(200, 200); + ctx.lineTo(1000, 200); + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; expected: green - name: 2d.line.miter.lineedge - desc: Miter joins are not drawn when the miter limit is exceeded at the corners - of a zero-height rectangle + desc: + Miter joins are not drawn when the miter limit is exceeded at the corners + of a zero-height rectangle testing: - - 2d.lineJoin.miter + - 2d.lineJoin.miter code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 200; - ctx.lineJoin = 'miter'; + ctx.lineWidth = 200; + ctx.lineJoin = 'miter'; - ctx.strokeStyle = '#f00'; - ctx.miterLimit = 1.414; - ctx.beginPath(); - ctx.strokeRect(100, 25, 200, 0); + ctx.strokeStyle = '#f00'; + ctx.miterLimit = 1.414; + ctx.beginPath(); + ctx.strokeRect(100, 25, 200, 0); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; expected: green - name: 2d.line.miter.within desc: Miter joins are drawn when the miter limit is not quite exceeded testing: - - 2d.lineJoin.miter - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 400; - ctx.lineJoin = 'miter'; - - ctx.strokeStyle = '#0f0'; - ctx.miterLimit = 1.416; - ctx.beginPath(); - ctx.moveTo(200, 1000); - ctx.lineTo(200, 200); - ctx.lineTo(1000, 201); - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + - 2d.lineJoin.miter + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 400; + ctx.lineJoin = 'miter'; + + ctx.strokeStyle = '#0f0'; + ctx.miterLimit = 1.416; + ctx.beginPath(); + ctx.moveTo(200, 1000); + ctx.lineTo(200, 200); + ctx.lineTo(1000, 201); + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; expected: green - name: 2d.line.miter.valid desc: Setting miterLimit to valid values works testing: - - 2d.miterLimit.set - - 2d.miterLimit.get + - 2d.miterLimit.set + - 2d.miterLimit.get code: | - ctx.miterLimit = 1.5; - @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + @assert ctx.miterLimit === 1.5; - ctx.miterLimit = "1e1"; - @assert ctx.miterLimit === 10; + ctx.miterLimit = "1e1"; + @assert ctx.miterLimit === 10; - ctx.miterLimit = 1/1024; - @assert ctx.miterLimit === 1/1024; + ctx.miterLimit = 1/1024; + @assert ctx.miterLimit === 1/1024; - ctx.miterLimit = 1000; - @assert ctx.miterLimit === 1000; + ctx.miterLimit = 1000; + @assert ctx.miterLimit === 1000; - name: 2d.line.miter.invalid desc: Setting miterLimit to invalid values is ignored testing: - - 2d.miterLimit.invalid + - 2d.miterLimit.invalid code: | - ctx.miterLimit = 1.5; - @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + @assert ctx.miterLimit === 1.5; - ctx.miterLimit = 1.5; - ctx.miterLimit = 0; - @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + ctx.miterLimit = 0; + @assert ctx.miterLimit === 1.5; - ctx.miterLimit = 1.5; - ctx.miterLimit = -1; - @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + ctx.miterLimit = -1; + @assert ctx.miterLimit === 1.5; - ctx.miterLimit = 1.5; - ctx.miterLimit = Infinity; - @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + ctx.miterLimit = Infinity; + @assert ctx.miterLimit === 1.5; - ctx.miterLimit = 1.5; - ctx.miterLimit = -Infinity; - @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + ctx.miterLimit = -Infinity; + @assert ctx.miterLimit === 1.5; - ctx.miterLimit = 1.5; - ctx.miterLimit = NaN; - @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + ctx.miterLimit = NaN; + @assert ctx.miterLimit === 1.5; - ctx.miterLimit = 1.5; - ctx.miterLimit = 'string'; - @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + ctx.miterLimit = 'string'; + @assert ctx.miterLimit === 1.5; - ctx.miterLimit = 1.5; - ctx.miterLimit = true; - @assert ctx.miterLimit === 1; + ctx.miterLimit = 1.5; + ctx.miterLimit = true; + @assert ctx.miterLimit === 1; - ctx.miterLimit = 1.5; - ctx.miterLimit = false; - @assert ctx.miterLimit === 1.5; + ctx.miterLimit = 1.5; + ctx.miterLimit = false; + @assert ctx.miterLimit === 1.5; - name: 2d.line.cross code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 200; - ctx.lineJoin = 'bevel'; + ctx.lineWidth = 200; + ctx.lineJoin = 'bevel'; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(110, 50); - ctx.lineTo(110, 60); - ctx.lineTo(100, 60); - ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(110, 50); + ctx.lineTo(110, 60); + ctx.lineTo(100, 60); + ctx.stroke(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; expected: green - name: 2d.line.union code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 24); - ctx.lineTo(100, 25); - ctx.lineTo(0, 26); - ctx.closePath(); - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 25,1 == 0,255,0,255; - @assert pixel 48,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 25,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 24); + ctx.lineTo(100, 25); + ctx.lineTo(0, 26); + ctx.closePath(); + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 25,1 == 0,255,0,255; + @assert pixel 48,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 25,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; expected: green - - - - - - - name: 2d.line.invalid.strokestyle desc: Verify correct behavior of canvas on an invalid strokeStyle() testing: - - 2d.strokestyle.invalid - code: | - ctx.strokeStyle = 'rgb(0, 255, 0)'; - ctx.strokeStyle = 'nonsense'; - ctx.lineWidth = 200; - ctx.moveTo(0,100); - ctx.lineTo(200,100); - ctx.stroke(); - var imageData = ctx.getImageData(0, 0, 200, 200); - var imgdata = imageData.data; - @assert imgdata[4] == 0; - @assert imgdata[5] == 255; - @assert imgdata[6] == 0; - + - 2d.strokestyle.invalid + code: | + ctx.strokeStyle = 'rgb(0, 255, 0)'; + ctx.strokeStyle = 'nonsense'; + ctx.lineWidth = 200; + ctx.moveTo(0,100); + ctx.lineTo(200,100); + ctx.stroke(); + var imageData = ctx.getImageData(0, 0, 200, 200); + var imgdata = imageData.data; + @assert imgdata[4] == 0; + @assert imgdata[5] == 255; + @assert imgdata[6] == 0; diff --git a/test/wpt/meta.yaml b/test/wpt/meta.yaml index f6902d078..8fdfdc3ee 100644 --- a/test/wpt/meta.yaml +++ b/test/wpt/meta.yaml @@ -1,555 +1,555 @@ - meta: | - cases = [ - ("zero", "0", 0), - ("empty", "", None), - ("onlyspace", " ", None), - ("space", " 100", 100), - ("whitespace", "\r\n\t\f100", 100), - ("plus", "+100", 100), - ("minus", "-100", None), - ("octal", "0100", 100), - ("hex", "0x100", 0), - ("exp", "100e1", 100), - ("decimal", "100.999", 100), - ("percent", "100%", 100), - ("em", "100em", 100), - ("junk", "#!?", None), - ("trailingjunk", "100#!?", 100), - ] - def gen(name, string, exp, code): - testing = ["size.nonnegativeinteger"] - if exp is None: - testing.append("size.error") - code += "@assert canvas.width === 300;\n@assert canvas.height === 150;\n" - expected = "size 300 150" - else: - code += "@assert canvas.width === %s;\n@assert canvas.height === %s;\n" % (exp, exp) - expected = "size %s %s" % (exp, exp) + cases = [ + ("zero", "0", 0), + ("empty", "", None), + ("onlyspace", " ", None), + ("space", " 100", 100), + ("whitespace", "\r\n\t\f100", 100), + ("plus", "+100", 100), + ("minus", "-100", None), + ("octal", "0100", 100), + ("hex", "0x100", 0), + ("exp", "100e1", 100), + ("decimal", "100.999", 100), + ("percent", "100%", 100), + ("em", "100em", 100), + ("junk", "#!?", None), + ("trailingjunk", "100#!?", 100), + ] + def gen(name, string, exp, code): + testing = ["size.nonnegativeinteger"] + if exp is None: + testing.append("size.error") + code += "@assert canvas.width === 300;\n@assert canvas.height === 150;\n" + expected = "size 300 150" + else: + code += "@assert canvas.width === %s;\n@assert canvas.height === %s;\n" % (exp, exp) + expected = "size %s %s" % (exp, exp) - # With "100%", Opera gets canvas.width = 100 but renders at 100% of the frame width, - # so check the CSS display width - code += '@assert window.getComputedStyle(canvas, null).getPropertyValue("width") === "%spx";\n' % (exp, ) + # With "100%", Opera gets canvas.width = 100 but renders at 100% of the frame width, + # so check the CSS display width + code += '@assert window.getComputedStyle(canvas, null).getPropertyValue("width") === "%spx";\n' % (exp, ) - code += "@assert canvas.getAttribute('width') === %r;\n" % string - code += "@assert canvas.getAttribute('height') === %r;\n" % string + code += "@assert canvas.getAttribute('width') === %r;\n" % string + code += "@assert canvas.getAttribute('height') === %r;\n" % string - if exp == 0: - expected = None # can't generate zero-sized PNGs for the expected image + if exp == 0: + expected = None # can't generate zero-sized PNGs for the expected image - return code, testing, expected + return code, testing, expected - for name, string, exp in cases: - code = "" - code, testing, expected = gen(name, string, exp, code) - # We need to replace \r with because \r\n gets converted to \n in the HTML parser. - htmlString = string.replace('\r', ' ') - tests.append( { - "name": "size.attributes.parse.%s" % name, - "desc": "Parsing of non-negative integers", - "testing": testing, - "canvas": 'width="%s" height="%s"' % (htmlString, htmlString), - "code": code, - "expected": expected - } ) + for name, string, exp in cases: + code = "" + code, testing, expected = gen(name, string, exp, code) + # We need to replace \r with because \r\n gets converted to \n in the HTML parser. + htmlString = string.replace('\r', ' ') + tests.append( { + "name": "size.attributes.parse.%s" % name, + "desc": "Parsing of non-negative integers", + "testing": testing, + "canvas": 'width="%s" height="%s"' % (htmlString, htmlString), + "code": code, + "expected": expected + } ) - for name, string, exp in cases: - code = "canvas.setAttribute('width', %r);\ncanvas.setAttribute('height', %r);\n" % (string, string) - code, testing, expected = gen(name, string, exp, code) - tests.append( { - "name": "size.attributes.setAttribute.%s" % name, - "desc": "Parsing of non-negative integers in setAttribute", - "testing": testing, - "canvas": 'width="50" height="50"', - "code": code, - "expected": expected - } ) + for name, string, exp in cases: + code = "canvas.setAttribute('width', %r);\ncanvas.setAttribute('height', %r);\n" % (string, string) + code, testing, expected = gen(name, string, exp, code) + tests.append( { + "name": "size.attributes.setAttribute.%s" % name, + "desc": "Parsing of non-negative integers in setAttribute", + "testing": testing, + "canvas": 'width="50" height="50"', + "code": code, + "expected": expected + } ) - meta: | - state = [ # some non-default values to test with - ('strokeStyle', '"#ff0000"'), - ('fillStyle', '"#ff0000"'), - ('globalAlpha', 0.5), - ('lineWidth', 0.5), - ('lineCap', '"round"'), - ('lineJoin', '"round"'), - ('miterLimit', 0.5), - ('shadowOffsetX', 5), - ('shadowOffsetY', 5), - ('shadowBlur', 5), - ('shadowColor', '"#ff0000"'), - ('globalCompositeOperation', '"copy"'), - ('font', '"25px serif"'), - ('textAlign', '"center"'), - ('textBaseline', '"bottom"'), - ] - for key,value in state: - tests.append( { - 'name': '2d.state.saverestore.%s' % key, - 'desc': 'save()/restore() works for %s' % key, - 'testing': [ '2d.state.%s' % key ], - 'code': - """// Test that restore() undoes any modifications - var old = ctx.%(key)s; - ctx.save(); - ctx.%(key)s = %(value)s; - ctx.restore(); - @assert ctx.%(key)s === old; + state = [ # some non-default values to test with + ('strokeStyle', '"#ff0000"'), + ('fillStyle', '"#ff0000"'), + ('globalAlpha', 0.5), + ('lineWidth', 0.5), + ('lineCap', '"round"'), + ('lineJoin', '"round"'), + ('miterLimit', 0.5), + ('shadowOffsetX', 5), + ('shadowOffsetY', 5), + ('shadowBlur', 5), + ('shadowColor', '"#ff0000"'), + ('globalCompositeOperation', '"copy"'), + ('font', '"25px serif"'), + ('textAlign', '"center"'), + ('textBaseline', '"bottom"'), + ] + for key,value in state: + tests.append( { + 'name': '2d.state.saverestore.%s' % key, + 'desc': 'save()/restore() works for %s' % key, + 'testing': [ '2d.state.%s' % key ], + 'code': + """// Test that restore() undoes any modifications + var old = ctx.%(key)s; + ctx.save(); + ctx.%(key)s = %(value)s; + ctx.restore(); + @assert ctx.%(key)s === old; - // Also test that save() doesn't modify the values - ctx.%(key)s = %(value)s; - old = ctx.%(key)s; - // we're not interested in failures caused by get(set(x)) != x (e.g. - // from rounding), so compare against 'old' instead of against %(value)s - ctx.save(); - @assert ctx.%(key)s === old; - ctx.restore(); - """ % { 'key':key, 'value':value } - } ) + // Also test that save() doesn't modify the values + ctx.%(key)s = %(value)s; + old = ctx.%(key)s; + // we're not interested in failures caused by get(set(x)) != x (e.g. + // from rounding), so compare against 'old' instead of against %(value)s + ctx.save(); + @assert ctx.%(key)s === old; + ctx.restore(); + """ % { 'key':key, 'value':value } + } ) - tests.append( { - 'name': 'initial.reset.2dstate', - 'desc': 'Resetting the canvas state resets 2D state variables', - 'testing': [ 'initial.reset' ], - 'code': - """canvas.width = 100; - var default_val; - """ + "".join( - """ - default_val = ctx.%(key)s; - ctx.%(key)s = %(value)s; - canvas.width = 100; - @assert ctx.%(key)s === default_val; - """ % { 'key':key, 'value':value } - for key,value in state), - } ) + tests.append( { + 'name': 'initial.reset.2dstate', + 'desc': 'Resetting the canvas state resets 2D state variables', + 'testing': [ 'initial.reset' ], + 'code': + """canvas.width = 100; + var default_val; + """ + "".join( + """ + default_val = ctx.%(key)s; + ctx.%(key)s = %(value)s; + canvas.width = 100; + @assert ctx.%(key)s === default_val; + """ % { 'key':key, 'value':value } + for key,value in state), + } ) - meta: | - # Composite operation tests - # - ops = [ - # name FA FB - ('source-over', '1', '1-aA'), - ('destination-over', '1-aB', '1'), - ('source-in', 'aB', '0'), - ('destination-in', '0', 'aA'), - ('source-out', '1-aB', '0'), - ('destination-out', '0', '1-aA'), - ('source-atop', 'aB', '1-aA'), - ('destination-atop', '1-aB', 'aA'), - ('xor', '1-aB', '1-aA'), - ('copy', '1', '0'), - ('lighter', '1', '1'), - ] + # Composite operation tests + # + ops = [ + # name FA FB + ('source-over', '1', '1-aA'), + ('destination-over', '1-aB', '1'), + ('source-in', 'aB', '0'), + ('destination-in', '0', 'aA'), + ('source-out', '1-aB', '0'), + ('destination-out', '0', '1-aA'), + ('source-atop', 'aB', '1-aA'), + ('destination-atop', '1-aB', 'aA'), + ('xor', '1-aB', '1-aA'), + ('copy', '1', '0'), + ('lighter', '1', '1'), + ] - # The ones that change the output when src = (0,0,0,0): - ops_trans = [ 'source-in', 'destination-in', 'source-out', 'destination-atop', 'copy' ]; + # The ones that change the output when src = (0,0,0,0): + ops_trans = [ 'source-in', 'destination-in', 'source-out', 'destination-atop', 'copy' ]; - def calc_output(A, B, FA_code, FB_code): - (RA, GA, BA, aA) = A - (RB, GB, BB, aB) = B - rA, gA, bA = RA*aA, GA*aA, BA*aA - rB, gB, bB = RB*aB, GB*aB, BB*aB + def calc_output(A, B, FA_code, FB_code): + (RA, GA, BA, aA) = A + (RB, GB, BB, aB) = B + rA, gA, bA = RA*aA, GA*aA, BA*aA + rB, gB, bB = RB*aB, GB*aB, BB*aB - FA = eval(FA_code) - FB = eval(FB_code) + FA = eval(FA_code) + FB = eval(FB_code) - rO = rA*FA + rB*FB - gO = gA*FA + gB*FB - bO = bA*FA + bB*FB - aO = aA*FA + aB*FB + rO = rA*FA + rB*FB + gO = gA*FA + gB*FB + bO = bA*FA + bB*FB + aO = aA*FA + aB*FB - rO = min(255, rO) - gO = min(255, gO) - bO = min(255, bO) - aO = min(1, aO) + rO = min(255, rO) + gO = min(255, gO) + bO = min(255, bO) + aO = min(1, aO) - if aO: - RO = rO / aO - GO = gO / aO - BO = bO / aO - else: RO = GO = BO = 0 + if aO: + RO = rO / aO + GO = gO / aO + BO = bO / aO + else: RO = GO = BO = 0 - return (RO, GO, BO, aO) + return (RO, GO, BO, aO) - def to_test(color): - r, g, b, a = color - return '%d,%d,%d,%d' % (round(r), round(g), round(b), round(a*255)) - def to_cairo(color): - r, g, b, a = color - return '%f,%f,%f,%f' % (r/255., g/255., b/255., a) + def to_test(color): + r, g, b, a = color + return '%d,%d,%d,%d' % (round(r), round(g), round(b), round(a*255)) + def to_cairo(color): + r, g, b, a = color + return '%f,%f,%f,%f' % (r/255., g/255., b/255., a) - for (name, src, dest) in [ - ('solid', (255, 255, 0, 1.0), (0, 255, 255, 1.0)), - ('transparent', (0, 0, 255, 0.75), (0, 255, 0, 0.5)), - # catches the atop, xor and lighter bugs in Opera 9.10 - ]: - for op, FA_code, FB_code in ops: - expected = calc_output(src, dest, FA_code, FB_code) - tests.append( { - 'name': '2d.composite.%s.%s' % (name, op), - 'testing': [ '2d.composite.%s' % op ], - 'code': """ - ctx.fillStyle = 'rgba%s'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = '%s'; - ctx.fillStyle = 'rgba%s'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 ==~ %s +/- 5; - """ % (dest, op, src, to_test(expected)), - 'expected': """size 100 50 - cr.set_source_rgba(%s) - cr.rectangle(0, 0, 100, 50) - cr.fill() - """ % to_cairo(expected), - } ) + for (name, src, dest) in [ + ('solid', (255, 255, 0, 1.0), (0, 255, 255, 1.0)), + ('transparent', (0, 0, 255, 0.75), (0, 255, 0, 0.5)), + # catches the atop, xor and lighter bugs in Opera 9.10 + ]: + for op, FA_code, FB_code in ops: + expected = calc_output(src, dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'testing': [ '2d.composite.%s' % op ], + 'code': """ + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 ==~ %s +/- 5; + """ % (dest, op, src, to_test(expected)), + 'expected': """size 100 50 + cr.set_source_rgba(%s) + cr.rectangle(0, 0, 100, 50) + cr.fill() + """ % to_cairo(expected), + } ) - for (name, src, dest) in [ ('image', (255, 255, 0, 0.75), (0, 255, 255, 0.5)) ]: - for op, FA_code, FB_code in ops: - expected = calc_output(src, dest, FA_code, FB_code) - tests.append( { - 'name': '2d.composite.%s.%s' % (name, op), - 'testing': [ '2d.composite.%s' % op ], - 'images': [ 'yellow75.png' ], - 'code': """ - ctx.fillStyle = 'rgba%s'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = '%s'; - ctx.drawImage(document.getElementById('yellow75.png'), 0, 0); - @assert pixel 50,25 ==~ %s +/- 5; - """ % (dest, op, to_test(expected)), - 'expected': """size 100 50 - cr.set_source_rgba(%s) - cr.rectangle(0, 0, 100, 50) - cr.fill() - """ % to_cairo(expected), - } ) + for (name, src, dest) in [ ('image', (255, 255, 0, 0.75), (0, 255, 255, 0.5)) ]: + for op, FA_code, FB_code in ops: + expected = calc_output(src, dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'testing': [ '2d.composite.%s' % op ], + 'images': [ 'yellow75.png' ], + 'code': """ + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + ctx.drawImage(document.getElementById('yellow75.png'), 0, 0); + @assert pixel 50,25 ==~ %s +/- 5; + """ % (dest, op, to_test(expected)), + 'expected': """size 100 50 + cr.set_source_rgba(%s) + cr.rectangle(0, 0, 100, 50) + cr.fill() + """ % to_cairo(expected), + } ) - for (name, src, dest) in [ ('canvas', (255, 255, 0, 0.75), (0, 255, 255, 0.5)) ]: - for op, FA_code, FB_code in ops: - expected = calc_output(src, dest, FA_code, FB_code) - tests.append( { - 'name': '2d.composite.%s.%s' % (name, op), - 'testing': [ '2d.composite.%s' % op ], - 'images': [ 'yellow75.png' ], - 'code': """ - var canvas2 = document.createElement('canvas'); - canvas2.width = canvas.width; - canvas2.height = canvas.height; - var ctx2 = canvas2.getContext('2d'); - ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0); - ctx.fillStyle = 'rgba%s'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = '%s'; - ctx.drawImage(canvas2, 0, 0); - @assert pixel 50,25 ==~ %s +/- 5; - """ % (dest, op, to_test(expected)), - 'expected': """size 100 50 - cr.set_source_rgba(%s) - cr.rectangle(0, 0, 100, 50) - cr.fill() - """ % to_cairo(expected), - } ) + for (name, src, dest) in [ ('canvas', (255, 255, 0, 0.75), (0, 255, 255, 0.5)) ]: + for op, FA_code, FB_code in ops: + expected = calc_output(src, dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'testing': [ '2d.composite.%s' % op ], + 'images': [ 'yellow75.png' ], + 'code': """ + var canvas2 = document.createElement('canvas'); + canvas2.width = canvas.width; + canvas2.height = canvas.height; + var ctx2 = canvas2.getContext('2d'); + ctx2.drawImage(document.getElementById('yellow75.png'), 0, 0); + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + ctx.drawImage(canvas2, 0, 0); + @assert pixel 50,25 ==~ %s +/- 5; + """ % (dest, op, to_test(expected)), + 'expected': """size 100 50 + cr.set_source_rgba(%s) + cr.rectangle(0, 0, 100, 50) + cr.fill() + """ % to_cairo(expected), + } ) - for (name, src, dest) in [ ('uncovered.fill', (0, 0, 255, 0.75), (0, 255, 0, 0.5)) ]: - for op, FA_code, FB_code in ops: - if op not in ops_trans: continue - expected0 = calc_output((0,0,0,0.0), dest, FA_code, FB_code) - tests.append( { - 'name': '2d.composite.%s.%s' % (name, op), - 'desc': 'fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', - 'testing': [ '2d.composite.%s' % op ], - 'code': """ - ctx.fillStyle = 'rgba%s'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = '%s'; - ctx.fillStyle = 'rgba%s'; - ctx.translate(0, 25); - ctx.fillRect(0, 50, 100, 50); - @assert pixel 50,25 ==~ %s +/- 5; - """ % (dest, op, src, to_test(expected0)), - 'expected': """size 100 50 - cr.set_source_rgba(%s) - cr.rectangle(0, 0, 100, 50) - cr.fill() - """ % (to_cairo(expected0)), - } ) + for (name, src, dest) in [ ('uncovered.fill', (0, 0, 255, 0.75), (0, 255, 0, 0.5)) ]: + for op, FA_code, FB_code in ops: + if op not in ops_trans: continue + expected0 = calc_output((0,0,0,0.0), dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'desc': 'fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', + 'testing': [ '2d.composite.%s' % op ], + 'code': """ + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + ctx.fillStyle = 'rgba%s'; + ctx.translate(0, 25); + ctx.fillRect(0, 50, 100, 50); + @assert pixel 50,25 ==~ %s +/- 5; + """ % (dest, op, src, to_test(expected0)), + 'expected': """size 100 50 + cr.set_source_rgba(%s) + cr.rectangle(0, 0, 100, 50) + cr.fill() + """ % (to_cairo(expected0)), + } ) - for (name, src, dest) in [ ('uncovered.image', (255, 255, 0, 1.0), (0, 255, 255, 0.5)) ]: - for op, FA_code, FB_code in ops: - if op not in ops_trans: continue - expected0 = calc_output((0,0,0,0.0), dest, FA_code, FB_code) - tests.append( { - 'name': '2d.composite.%s.%s' % (name, op), - 'desc': 'drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', - 'testing': [ '2d.composite.%s' % op ], - 'images': [ 'yellow.png' ], - 'code': """ - ctx.fillStyle = 'rgba%s'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = '%s'; - ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10); - @assert pixel 15,15 ==~ %s +/- 5; - @assert pixel 50,25 ==~ %s +/- 5; - """ % (dest, op, to_test(expected0), to_test(expected0)), - 'expected': """size 100 50 - cr.set_source_rgba(%s) - cr.rectangle(0, 0, 100, 50) - cr.fill() - """ % (to_cairo(expected0)), - } ) + for (name, src, dest) in [ ('uncovered.image', (255, 255, 0, 1.0), (0, 255, 255, 0.5)) ]: + for op, FA_code, FB_code in ops: + if op not in ops_trans: continue + expected0 = calc_output((0,0,0,0.0), dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'desc': 'drawImage() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', + 'testing': [ '2d.composite.%s' % op ], + 'images': [ 'yellow.png' ], + 'code': """ + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + ctx.drawImage(document.getElementById('yellow.png'), 40, 40, 10, 10, 40, 50, 10, 10); + @assert pixel 15,15 ==~ %s +/- 5; + @assert pixel 50,25 ==~ %s +/- 5; + """ % (dest, op, to_test(expected0), to_test(expected0)), + 'expected': """size 100 50 + cr.set_source_rgba(%s) + cr.rectangle(0, 0, 100, 50) + cr.fill() + """ % (to_cairo(expected0)), + } ) - for (name, src, dest) in [ ('uncovered.nocontext', (255, 255, 0, 1.0), (0, 255, 255, 0.5)) ]: - for op, FA_code, FB_code in ops: - if op not in ops_trans: continue - expected0 = calc_output((0,0,0,0.0), dest, FA_code, FB_code) - tests.append( { - 'name': '2d.composite.%s.%s' % (name, op), - 'desc': 'drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.', - 'testing': [ '2d.composite.%s' % op ], - 'code': """ - ctx.fillStyle = 'rgba%s'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = '%s'; - var canvas2 = document.createElement('canvas'); - ctx.drawImage(canvas2, 0, 0); - @assert pixel 50,25 ==~ %s +/- 5; - """ % (dest, op, to_test(expected0)), - 'expected': """size 100 50 - cr.set_source_rgba(%s) - cr.rectangle(0, 0, 100, 50) - cr.fill() - """ % (to_cairo(expected0)), - } ) + for (name, src, dest) in [ ('uncovered.nocontext', (255, 255, 0, 1.0), (0, 255, 255, 0.5)) ]: + for op, FA_code, FB_code in ops: + if op not in ops_trans: continue + expected0 = calc_output((0,0,0,0.0), dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'desc': 'drawImage() of a canvas with no context draws pixels as (0,0,0,0), and does not leave the pixels unchanged.', + 'testing': [ '2d.composite.%s' % op ], + 'code': """ + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + var canvas2 = document.createElement('canvas'); + ctx.drawImage(canvas2, 0, 0); + @assert pixel 50,25 ==~ %s +/- 5; + """ % (dest, op, to_test(expected0)), + 'expected': """size 100 50 + cr.set_source_rgba(%s) + cr.rectangle(0, 0, 100, 50) + cr.fill() + """ % (to_cairo(expected0)), + } ) - for (name, src, dest) in [ ('uncovered.pattern', (255, 255, 0, 1.0), (0, 255, 255, 0.5)) ]: - for op, FA_code, FB_code in ops: - if op not in ops_trans: continue - expected0 = calc_output((0,0,0,0.0), dest, FA_code, FB_code) - tests.append( { - 'name': '2d.composite.%s.%s' % (name, op), - 'desc': 'Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', - 'testing': [ '2d.composite.%s' % op ], - 'images': [ 'yellow.png' ], - 'code': """ - ctx.fillStyle = 'rgba%s'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = '%s'; - ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat'); - ctx.fillRect(0, 50, 100, 50); - @assert pixel 50,25 ==~ %s +/- 5; - """ % (dest, op, to_test(expected0)), - 'expected': """size 100 50 - cr.set_source_rgba(%s) - cr.rectangle(0, 0, 100, 50) - cr.fill() - """ % (to_cairo(expected0)), - } ) + for (name, src, dest) in [ ('uncovered.pattern', (255, 255, 0, 1.0), (0, 255, 255, 0.5)) ]: + for op, FA_code, FB_code in ops: + if op not in ops_trans: continue + expected0 = calc_output((0,0,0,0.0), dest, FA_code, FB_code) + tests.append( { + 'name': '2d.composite.%s.%s' % (name, op), + 'desc': 'Pattern fill() draws pixels not covered by the source object as (0,0,0,0), and does not leave the pixels unchanged.', + 'testing': [ '2d.composite.%s' % op ], + 'images': [ 'yellow.png' ], + 'code': """ + ctx.fillStyle = 'rgba%s'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + ctx.fillStyle = ctx.createPattern(document.getElementById('yellow.png'), 'no-repeat'); + ctx.fillRect(0, 50, 100, 50); + @assert pixel 50,25 ==~ %s +/- 5; + """ % (dest, op, to_test(expected0)), + 'expected': """size 100 50 + cr.set_source_rgba(%s) + cr.rectangle(0, 0, 100, 50) + cr.fill() + """ % (to_cairo(expected0)), + } ) - for op, FA_code, FB_code in ops: - tests.append( { - 'name': '2d.composite.clip.%s' % (op), - 'desc': 'fill() does not affect pixels outside the clip region.', - 'testing': [ '2d.composite.%s' % op ], - 'code': """ - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = '%s'; - ctx.rect(-20, -20, 10, 10); - ctx.clip(); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 50, 50); - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; - """ % (op), - 'expected': 'green' - } ) + for op, FA_code, FB_code in ops: + tests.append( { + 'name': '2d.composite.clip.%s' % (op), + 'desc': 'fill() does not affect pixels outside the clip region.', + 'testing': [ '2d.composite.%s' % op ], + 'code': """ + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = '%s'; + ctx.rect(-20, -20, 10, 10); + ctx.clip(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; + """ % (op), + 'expected': 'green' + } ) - meta: | - # Color parsing tests + # Color parsing tests - # Try most of the CSS3 Color values - http://www.w3.org/TR/css3-color/#colorunits - big_float = '1' + ('0' * 39) - big_double = '1' + ('0' * 310) - for name, string, r,g,b,a, notes in [ - ('html4', 'limE', 0,255,0,255, ""), - ('hex3', '#0f0', 0,255,0,255, ""), - ('hex4', '#0f0f', 0,255,0,255, ""), - ('hex6', '#00fF00', 0,255,0,255, ""), - ('hex8', '#00ff00ff', 0,255,0,255, ""), - ('rgb-num', 'rgb(0,255,0)', 0,255,0,255, ""), - ('rgb-clamp-1', 'rgb(-1000, 1000, -1000)', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), - ('rgb-clamp-2', 'rgb(-200%, 200%, -200%)', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), - ('rgb-clamp-3', 'rgb(-2147483649, 4294967298, -18446744073709551619)', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), - ('rgb-clamp-4', 'rgb(-'+big_float+', '+big_float+', -'+big_float+')', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), - ('rgb-clamp-5', 'rgb(-'+big_double+', '+big_double+', -'+big_double+')', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), - ('rgb-percent', 'rgb(0% ,100% ,0%)', 0,255,0,255, 'CSS3 Color says "The integer value 255 corresponds to 100%". (In particular, it is not 254...)'), - ('rgb-eof', 'rgb(0, 255, 0', 0,255,0,255, ""), # see CSS2.1 4.2 "Unexpected end of style sheet" - ('rgba-solid-1', 'rgba( 0 , 255 , 0 , 1 )', 0,255,0,255, ""), - ('rgba-solid-2', 'rgba( 0 , 255 , 0 , 1.0 )', 0,255,0,255, ""), - ('rgba-solid-3', 'rgba( 0 , 255 , 0 , +1 )', 0,255,0,255, ""), - ('rgba-solid-4', 'rgba( -0 , 255 , +0 , 1 )', 0,255,0,255, ""), - ('rgba-num-1', 'rgba( 0 , 255 , 0 , .499 )', 0,255,0,127, ""), - ('rgba-num-2', 'rgba( 0 , 255 , 0 , 0.499 )', 0,255,0,127, ""), - ('rgba-percent', 'rgba(0%,100%,0%,0.499)', 0,255,0,127, ""), # 0.499*255 rounds to 127, both down and nearest, so it should be safe - ('rgba-clamp-1', 'rgba(0, 255, 0, -2)', 0,0,0,0, ""), - ('rgba-clamp-2', 'rgba(0, 255, 0, 2)', 0,255,0,255, ""), - ('rgba-eof', 'rgba(0, 255, 0, 1', 0,255,0,255, ""), - ('transparent-1', 'transparent', 0,0,0,0, ""), - ('transparent-2', 'TrAnSpArEnT', 0,0,0,0, ""), - ('hsl-1', 'hsl(120, 100%, 50%)', 0,255,0,255, ""), - ('hsl-2', 'hsl( -240 , 100% , 50% )', 0,255,0,255, ""), - ('hsl-3', 'hsl(360120, 100%, 50%)', 0,255,0,255, ""), - ('hsl-4', 'hsl(-360240, 100%, 50%)', 0,255,0,255, ""), - ('hsl-5', 'hsl(120.0, 100.0%, 50.0%)', 0,255,0,255, ""), - ('hsl-6', 'hsl(+120, +100%, +50%)', 0,255,0,255, ""), - ('hsl-clamp-1', 'hsl(120, 200%, 50%)', 0,255,0,255, ""), - ('hsl-clamp-2', 'hsl(120, -200%, 49.9%)', 127,127,127,255, ""), - ('hsl-clamp-3', 'hsl(120, 100%, 200%)', 255,255,255,255, ""), - ('hsl-clamp-4', 'hsl(120, 100%, -200%)', 0,0,0,255, ""), - ('hsla-1', 'hsla(120, 100%, 50%, 0.499)', 0,255,0,127, ""), - ('hsla-2', 'hsla( 120.0 , 100.0% , 50.0% , 1 )', 0,255,0,255, ""), - ('hsla-clamp-1', 'hsla(120, 200%, 50%, 1)', 0,255,0,255, ""), - ('hsla-clamp-2', 'hsla(120, -200%, 49.9%, 1)', 127,127,127,255, ""), - ('hsla-clamp-3', 'hsla(120, 100%, 200%, 1)', 255,255,255,255, ""), - ('hsla-clamp-4', 'hsla(120, 100%, -200%, 1)', 0,0,0,255, ""), - ('hsla-clamp-5', 'hsla(120, 100%, 50%, 2)', 0,255,0,255, ""), - ('hsla-clamp-6', 'hsla(120, 100%, 0%, -2)', 0,0,0,0, ""), - ('svg-1', 'gray', 128,128,128,255, ""), - ('svg-2', 'grey', 128,128,128,255, ""), - # css-color-4 rgb() color function - # https://drafts.csswg.org/css-color/#numeric-rgb - ('css-color-4-rgb-1', 'rgb(0, 255.0, 0)', 0,255,0,255, ""), - ('css-color-4-rgb-2', 'rgb(0, 255, 0, 0.2)', 0,255,0,51, ""), - ('css-color-4-rgb-3', 'rgb(0, 255, 0, 20%)', 0,255,0,51, ""), - ('css-color-4-rgb-4', 'rgb(0 255 0)', 0,255,0,255, ""), - ('css-color-4-rgb-5', 'rgb(0 255 0 / 0.2)', 0,255,0,51, ""), - ('css-color-4-rgb-6', 'rgb(0 255 0 / 20%)', 0,255,0,51, ""), - ('css-color-4-rgba-1', 'rgba(0, 255.0, 0)', 0,255,0,255, ""), - ('css-color-4-rgba-2', 'rgba(0, 255, 0, 0.2)', 0,255,0,51, ""), - ('css-color-4-rgba-3', 'rgba(0, 255, 0, 20%)', 0,255,0,51, ""), - ('css-color-4-rgba-4', 'rgba(0 255 0)', 0,255,0,255, ""), - ('css-color-4-rgba-5', 'rgba(0 255 0 / 0.2)', 0,255,0,51, ""), - ('css-color-4-rgba-6', 'rgba(0 255 0 / 20%)', 0,255,0,51, ""), - # css-color-4 hsl() color function - # https://drafts.csswg.org/css-color/#the-hsl-notation - ('css-color-4-hsl-1', 'hsl(120 100.0% 50.0%)', 0,255,0,255, ""), - ('css-color-4-hsl-2', 'hsl(120 100.0% 50.0% / 0.2)', 0,255,0,51, ""), - ('css-color-4-hsl-3', 'hsl(120.0, 100.0%, 50.0%, 0.2)', 0,255,0,51, ""), - ('css-color-4-hsl-4', 'hsl(120.0, 100.0%, 50.0%, 20%)', 0,255,0,51, ""), - ('css-color-4-hsl-5', 'hsl(120deg, 100.0%, 50.0%, 0.2)', 0,255,0,51, ""), - ('css-color-4-hsl-6', 'hsl(120deg, 100.0%, 50.0%)', 0,255,0,255, ""), - ('css-color-4-hsl-7', 'hsl(133.33333333grad, 100.0%, 50.0%)', 0,255,0,255, ""), - ('css-color-4-hsl-8', 'hsl(2.0943951024rad, 100.0%, 50.0%)', 0,255,0,255, ""), - ('css-color-4-hsl-9', 'hsl(0.3333333333turn, 100.0%, 50.0%)', 0,255,0,255, ""), - ('css-color-4-hsla-1', 'hsl(120 100.0% 50.0%)', 0,255,0,255, ""), - ('css-color-4-hsla-2', 'hsl(120 100.0% 50.0% / 0.2)', 0,255,0,51, ""), - ('css-color-4-hsla-3', 'hsl(120.0, 100.0%, 50.0%, 0.2)', 0,255,0,51, ""), - ('css-color-4-hsla-4', 'hsl(120.0, 100.0%, 50.0%, 20%)', 0,255,0,51, ""), - ('css-color-4-hsla-5', 'hsl(120deg, 100.0%, 50.0%, 0.2)', 0,255,0,51, ""), - ('css-color-4-hsla-6', 'hsl(120deg, 100.0%, 50.0%)', 0,255,0,255, ""), - ('css-color-4-hsla-7', 'hsl(133.33333333grad, 100.0%, 50.0%)', 0,255,0,255, ""), - ('css-color-4-hsla-8', 'hsl(2.0943951024rad, 100.0%, 50.0%)', 0,255,0,255, ""), - ('css-color-4-hsla-9', 'hsl(0.3333333333turn, 100.0%, 50.0%)', 0,255,0,255, ""), - # currentColor is handled later - ]: - # TODO: test by retrieving fillStyle, instead of actually drawing? - # TODO: test strokeStyle, shadowColor in the same way - test = { - 'name': '2d.fillStyle.parse.%s' % name, - 'testing': [ '2d.colors.parse' ], - 'notes': notes, - 'code': """ - ctx.fillStyle = '#f00'; - ctx.fillStyle = '%s'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == %d,%d,%d,%d; - """ % (string, r,g,b,a), - 'expected': """size 100 50 - cr.set_source_rgba(%f, %f, %f, %f) - cr.rectangle(0, 0, 100, 50) - cr.fill() - """ % (r/255., g/255., b/255., a/255.), - } - tests.append(test) + # Try most of the CSS3 Color values - http://www.w3.org/TR/css3-color/#colorunits + big_float = '1' + ('0' * 39) + big_double = '1' + ('0' * 310) + for name, string, r,g,b,a, notes in [ + ('html4', 'limE', 0,255,0,255, ""), + ('hex3', '#0f0', 0,255,0,255, ""), + ('hex4', '#0f0f', 0,255,0,255, ""), + ('hex6', '#00fF00', 0,255,0,255, ""), + ('hex8', '#00ff00ff', 0,255,0,255, ""), + ('rgb-num', 'rgb(0,255,0)', 0,255,0,255, ""), + ('rgb-clamp-1', 'rgb(-1000, 1000, -1000)', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), + ('rgb-clamp-2', 'rgb(-200%, 200%, -200%)', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), + ('rgb-clamp-3', 'rgb(-2147483649, 4294967298, -18446744073709551619)', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), + ('rgb-clamp-4', 'rgb(-'+big_float+', '+big_float+', -'+big_float+')', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), + ('rgb-clamp-5', 'rgb(-'+big_double+', '+big_double+', -'+big_double+')', 0,255,0,255, 'Assumes colors are clamped to [0,255].'), + ('rgb-percent', 'rgb(0% ,100% ,0%)', 0,255,0,255, 'CSS3 Color says "The integer value 255 corresponds to 100%". (In particular, it is not 254...)'), + ('rgb-eof', 'rgb(0, 255, 0', 0,255,0,255, ""), # see CSS2.1 4.2 "Unexpected end of style sheet" + ('rgba-solid-1', 'rgba( 0 , 255 , 0 , 1 )', 0,255,0,255, ""), + ('rgba-solid-2', 'rgba( 0 , 255 , 0 , 1.0 )', 0,255,0,255, ""), + ('rgba-solid-3', 'rgba( 0 , 255 , 0 , +1 )', 0,255,0,255, ""), + ('rgba-solid-4', 'rgba( -0 , 255 , +0 , 1 )', 0,255,0,255, ""), + ('rgba-num-1', 'rgba( 0 , 255 , 0 , .499 )', 0,255,0,127, ""), + ('rgba-num-2', 'rgba( 0 , 255 , 0 , 0.499 )', 0,255,0,127, ""), + ('rgba-percent', 'rgba(0%,100%,0%,0.499)', 0,255,0,127, ""), # 0.499*255 rounds to 127, both down and nearest, so it should be safe + ('rgba-clamp-1', 'rgba(0, 255, 0, -2)', 0,0,0,0, ""), + ('rgba-clamp-2', 'rgba(0, 255, 0, 2)', 0,255,0,255, ""), + ('rgba-eof', 'rgba(0, 255, 0, 1', 0,255,0,255, ""), + ('transparent-1', 'transparent', 0,0,0,0, ""), + ('transparent-2', 'TrAnSpArEnT', 0,0,0,0, ""), + ('hsl-1', 'hsl(120, 100%, 50%)', 0,255,0,255, ""), + ('hsl-2', 'hsl( -240 , 100% , 50% )', 0,255,0,255, ""), + ('hsl-3', 'hsl(360120, 100%, 50%)', 0,255,0,255, ""), + ('hsl-4', 'hsl(-360240, 100%, 50%)', 0,255,0,255, ""), + ('hsl-5', 'hsl(120.0, 100.0%, 50.0%)', 0,255,0,255, ""), + ('hsl-6', 'hsl(+120, +100%, +50%)', 0,255,0,255, ""), + ('hsl-clamp-1', 'hsl(120, 200%, 50%)', 0,255,0,255, ""), + ('hsl-clamp-2', 'hsl(120, -200%, 49.9%)', 127,127,127,255, ""), + ('hsl-clamp-3', 'hsl(120, 100%, 200%)', 255,255,255,255, ""), + ('hsl-clamp-4', 'hsl(120, 100%, -200%)', 0,0,0,255, ""), + ('hsla-1', 'hsla(120, 100%, 50%, 0.499)', 0,255,0,127, ""), + ('hsla-2', 'hsla( 120.0 , 100.0% , 50.0% , 1 )', 0,255,0,255, ""), + ('hsla-clamp-1', 'hsla(120, 200%, 50%, 1)', 0,255,0,255, ""), + ('hsla-clamp-2', 'hsla(120, -200%, 49.9%, 1)', 127,127,127,255, ""), + ('hsla-clamp-3', 'hsla(120, 100%, 200%, 1)', 255,255,255,255, ""), + ('hsla-clamp-4', 'hsla(120, 100%, -200%, 1)', 0,0,0,255, ""), + ('hsla-clamp-5', 'hsla(120, 100%, 50%, 2)', 0,255,0,255, ""), + ('hsla-clamp-6', 'hsla(120, 100%, 0%, -2)', 0,0,0,0, ""), + ('svg-1', 'gray', 128,128,128,255, ""), + ('svg-2', 'grey', 128,128,128,255, ""), + # css-color-4 rgb() color function + # https://drafts.csswg.org/css-color/#numeric-rgb + ('css-color-4-rgb-1', 'rgb(0, 255.0, 0)', 0,255,0,255, ""), + ('css-color-4-rgb-2', 'rgb(0, 255, 0, 0.2)', 0,255,0,51, ""), + ('css-color-4-rgb-3', 'rgb(0, 255, 0, 20%)', 0,255,0,51, ""), + ('css-color-4-rgb-4', 'rgb(0 255 0)', 0,255,0,255, ""), + ('css-color-4-rgb-5', 'rgb(0 255 0 / 0.2)', 0,255,0,51, ""), + ('css-color-4-rgb-6', 'rgb(0 255 0 / 20%)', 0,255,0,51, ""), + ('css-color-4-rgba-1', 'rgba(0, 255.0, 0)', 0,255,0,255, ""), + ('css-color-4-rgba-2', 'rgba(0, 255, 0, 0.2)', 0,255,0,51, ""), + ('css-color-4-rgba-3', 'rgba(0, 255, 0, 20%)', 0,255,0,51, ""), + ('css-color-4-rgba-4', 'rgba(0 255 0)', 0,255,0,255, ""), + ('css-color-4-rgba-5', 'rgba(0 255 0 / 0.2)', 0,255,0,51, ""), + ('css-color-4-rgba-6', 'rgba(0 255 0 / 20%)', 0,255,0,51, ""), + # css-color-4 hsl() color function + # https://drafts.csswg.org/css-color/#the-hsl-notation + ('css-color-4-hsl-1', 'hsl(120 100.0% 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsl-2', 'hsl(120 100.0% 50.0% / 0.2)', 0,255,0,51, ""), + ('css-color-4-hsl-3', 'hsl(120.0, 100.0%, 50.0%, 0.2)', 0,255,0,51, ""), + ('css-color-4-hsl-4', 'hsl(120.0, 100.0%, 50.0%, 20%)', 0,255,0,51, ""), + ('css-color-4-hsl-5', 'hsl(120deg, 100.0%, 50.0%, 0.2)', 0,255,0,51, ""), + ('css-color-4-hsl-6', 'hsl(120deg, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsl-7', 'hsl(133.33333333grad, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsl-8', 'hsl(2.0943951024rad, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsl-9', 'hsl(0.3333333333turn, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsla-1', 'hsl(120 100.0% 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsla-2', 'hsl(120 100.0% 50.0% / 0.2)', 0,255,0,51, ""), + ('css-color-4-hsla-3', 'hsl(120.0, 100.0%, 50.0%, 0.2)', 0,255,0,51, ""), + ('css-color-4-hsla-4', 'hsl(120.0, 100.0%, 50.0%, 20%)', 0,255,0,51, ""), + ('css-color-4-hsla-5', 'hsl(120deg, 100.0%, 50.0%, 0.2)', 0,255,0,51, ""), + ('css-color-4-hsla-6', 'hsl(120deg, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsla-7', 'hsl(133.33333333grad, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsla-8', 'hsl(2.0943951024rad, 100.0%, 50.0%)', 0,255,0,255, ""), + ('css-color-4-hsla-9', 'hsl(0.3333333333turn, 100.0%, 50.0%)', 0,255,0,255, ""), + # currentColor is handled later + ]: + # TODO: test by retrieving fillStyle, instead of actually drawing? + # TODO: test strokeStyle, shadowColor in the same way + test = { + 'name': '2d.fillStyle.parse.%s' % name, + 'testing': [ '2d.colors.parse' ], + 'notes': notes, + 'code': """ + ctx.fillStyle = '#f00'; + ctx.fillStyle = '%s'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == %d,%d,%d,%d; + """ % (string, r,g,b,a), + 'expected': """size 100 50 + cr.set_source_rgba(%f, %f, %f, %f) + cr.rectangle(0, 0, 100, 50) + cr.fill() + """ % (r/255., g/255., b/255., a/255.), + } + tests.append(test) - # Also test that invalid colors are ignored - for name, string in [ - ('hex1', '#f'), - ('hex2', '#f0'), - ('hex3', '#g00'), - ('hex4', '#fg00'), - ('hex5', '#ff000'), - ('hex6', '#fg0000'), - ('hex7', '#ff0000f'), - ('hex8', '#fg0000ff'), - ('rgb-1', 'rgb(255.0, 0, 0,)'), - ('rgb-2', 'rgb(100%, 0, 0)'), - ('rgb-3', 'rgb(255, - 1, 0)'), - ('rgba-1', 'rgba(100%, 0, 0, 1)'), - ('rgba-2', 'rgba(255, 0, 0, 1. 0)'), - ('rgba-3', 'rgba(255, 0, 0, 1.)'), - ('rgba-4', 'rgba(255, 0, 0, '), - ('rgba-5', 'rgba(255, 0, 0, 1,)'), - ('hsl-1', 'hsl(0%, 100%, 50%)'), - ('hsl-2', 'hsl(z, 100%, 50%)'), - ('hsl-3', 'hsl(0, 0, 50%)'), - ('hsl-4', 'hsl(0, 100%, 0)'), - ('hsl-5', 'hsl(0, 100.%, 50%)'), - ('hsl-6', 'hsl(0, 100%, 50%,)'), - ('hsla-1', 'hsla(0%, 100%, 50%, 1)'), - ('hsla-2', 'hsla(0, 0, 50%, 1)'), - ('hsla-3', 'hsla(0, 0, 50%, 1,)'), - ('name-1', 'darkbrown'), - ('name-2', 'firebrick1'), - ('name-3', 'red blue'), - ('name-4', '"red"'), - ('name-5', '"red'), - # css-color-4 color function - # comma and comma-less expressions should not mix together. - ('css-color-4-rgb-1', 'rgb(255, 0, 0 / 1)'), - ('css-color-4-rgb-2', 'rgb(255 0 0, 1)'), - ('css-color-4-rgb-3', 'rgb(255, 0 0)'), - ('css-color-4-rgba-1', 'rgba(255, 0, 0 / 1)'), - ('css-color-4-rgba-2', 'rgba(255 0 0, 1)'), - ('css-color-4-rgba-3', 'rgba(255, 0 0)'), - ('css-color-4-hsl-1', 'hsl(0, 100%, 50% / 1)'), - ('css-color-4-hsl-2', 'hsl(0 100% 50%, 1)'), - ('css-color-4-hsl-3', 'hsl(0, 100% 50%)'), - ('css-color-4-hsla-1', 'hsla(0, 100%, 50% / 1)'), - ('css-color-4-hsla-2', 'hsla(0 100% 50%, 1)'), - ('css-color-4-hsla-3', 'hsla(0, 100% 50%)'), - # trailing slash - ('css-color-4-rgb-4', 'rgb(0 0 0 /)'), - ('css-color-4-rgb-5', 'rgb(0, 0, 0 /)'), - ('css-color-4-hsl-4', 'hsl(0 100% 50% /)'), - ('css-color-4-hsl-5', 'hsl(0, 100%, 50% /)'), - ]: - test = { - 'name': '2d.fillStyle.parse.invalid.%s' % name, - 'testing': [ '2d.colors.parse' ], - 'code': """ - ctx.fillStyle = '#0f0'; - try { ctx.fillStyle = '%s'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - """ % string, - 'expected': 'green' - } - tests.append(test) + # Also test that invalid colors are ignored + for name, string in [ + ('hex1', '#f'), + ('hex2', '#f0'), + ('hex3', '#g00'), + ('hex4', '#fg00'), + ('hex5', '#ff000'), + ('hex6', '#fg0000'), + ('hex7', '#ff0000f'), + ('hex8', '#fg0000ff'), + ('rgb-1', 'rgb(255.0, 0, 0,)'), + ('rgb-2', 'rgb(100%, 0, 0)'), + ('rgb-3', 'rgb(255, - 1, 0)'), + ('rgba-1', 'rgba(100%, 0, 0, 1)'), + ('rgba-2', 'rgba(255, 0, 0, 1. 0)'), + ('rgba-3', 'rgba(255, 0, 0, 1.)'), + ('rgba-4', 'rgba(255, 0, 0, '), + ('rgba-5', 'rgba(255, 0, 0, 1,)'), + ('hsl-1', 'hsl(0%, 100%, 50%)'), + ('hsl-2', 'hsl(z, 100%, 50%)'), + ('hsl-3', 'hsl(0, 0, 50%)'), + ('hsl-4', 'hsl(0, 100%, 0)'), + ('hsl-5', 'hsl(0, 100.%, 50%)'), + ('hsl-6', 'hsl(0, 100%, 50%,)'), + ('hsla-1', 'hsla(0%, 100%, 50%, 1)'), + ('hsla-2', 'hsla(0, 0, 50%, 1)'), + ('hsla-3', 'hsla(0, 0, 50%, 1,)'), + ('name-1', 'darkbrown'), + ('name-2', 'firebrick1'), + ('name-3', 'red blue'), + ('name-4', '"red"'), + ('name-5', '"red'), + # css-color-4 color function + # comma and comma-less expressions should not mix together. + ('css-color-4-rgb-1', 'rgb(255, 0, 0 / 1)'), + ('css-color-4-rgb-2', 'rgb(255 0 0, 1)'), + ('css-color-4-rgb-3', 'rgb(255, 0 0)'), + ('css-color-4-rgba-1', 'rgba(255, 0, 0 / 1)'), + ('css-color-4-rgba-2', 'rgba(255 0 0, 1)'), + ('css-color-4-rgba-3', 'rgba(255, 0 0)'), + ('css-color-4-hsl-1', 'hsl(0, 100%, 50% / 1)'), + ('css-color-4-hsl-2', 'hsl(0 100% 50%, 1)'), + ('css-color-4-hsl-3', 'hsl(0, 100% 50%)'), + ('css-color-4-hsla-1', 'hsla(0, 100%, 50% / 1)'), + ('css-color-4-hsla-2', 'hsla(0 100% 50%, 1)'), + ('css-color-4-hsla-3', 'hsla(0, 100% 50%)'), + # trailing slash + ('css-color-4-rgb-4', 'rgb(0 0 0 /)'), + ('css-color-4-rgb-5', 'rgb(0, 0, 0 /)'), + ('css-color-4-hsl-4', 'hsl(0 100% 50% /)'), + ('css-color-4-hsl-5', 'hsl(0, 100%, 50% /)'), + ]: + test = { + 'name': '2d.fillStyle.parse.invalid.%s' % name, + 'testing': [ '2d.colors.parse' ], + 'code': """ + ctx.fillStyle = '#0f0'; + try { ctx.fillStyle = '%s'; } catch (e) { } // this shouldn't throw, but it shouldn't matter here if it does + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + """ % string, + 'expected': 'green' + } + tests.append(test) - # Some can't have positive tests, only negative tests, because we don't know what color they're meant to be - for name, string in [ - ('system', 'ThreeDDarkShadow'), - #('flavor', 'flavor'), # removed from latest CSS3 Color drafts - ]: - test = { - 'name': '2d.fillStyle.parse.%s' % name, - 'testing': [ '2d.colors.parse' ], - 'code': """ - ctx.fillStyle = '#f00'; - ctx.fillStyle = '%s'; - @assert ctx.fillStyle =~ /^#(?!(FF0000|ff0000|f00)$)/; // test that it's not red - """ % (string,), - } - tests.append(test) + # Some can't have positive tests, only negative tests, because we don't know what color they're meant to be + for name, string in [ + ('system', 'ThreeDDarkShadow'), + #('flavor', 'flavor'), # removed from latest CSS3 Color drafts + ]: + test = { + 'name': '2d.fillStyle.parse.%s' % name, + 'testing': [ '2d.colors.parse' ], + 'code': """ + ctx.fillStyle = '#f00'; + ctx.fillStyle = '%s'; + @assert ctx.fillStyle =~ /^#(?!(FF0000|ff0000|f00)$)/; // test that it's not red + """ % (string,), + } + tests.append(test) diff --git a/test/wpt/path-objects.yaml b/test/wpt/path-objects.yaml index 0ca97e762..106fe452a 100644 --- a/test/wpt/path-objects.yaml +++ b/test/wpt/path-objects.yaml @@ -1,3646 +1,3648 @@ - name: 2d.path.initial testing: - - 2d.path.initial + - 2d.path.initial #mozilla: { bug: TODO } code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.closePath(); - ctx.fillStyle = '#f00'; - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.closePath(); + ctx.fillStyle = '#f00'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.beginPath testing: - - 2d.path.beginPath + - 2d.path.beginPath code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.rect(0, 0, 100, 50); - ctx.beginPath(); - ctx.fillStyle = '#f00'; - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(0, 0, 100, 50); + ctx.beginPath(); + ctx.fillStyle = '#f00'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.moveTo.basic testing: - - 2d.path.moveTo + - 2d.path.moveTo code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.rect(0, 0, 10, 50); - ctx.moveTo(100, 0); - ctx.lineTo(10, 0); - ctx.lineTo(10, 50); - ctx.lineTo(100, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 90,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.rect(0, 0, 10, 50); + ctx.moveTo(100, 0); + ctx.lineTo(10, 0); + ctx.lineTo(10, 50); + ctx.lineTo(100, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 90,25 == 0,255,0,255; expected: green - name: 2d.path.moveTo.newsubpath testing: - - 2d.path.moveTo + - 2d.path.moveTo code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.moveTo(0, 0); - ctx.moveTo(100, 0); - ctx.moveTo(100, 50); - ctx.moveTo(0, 50); - ctx.fillStyle = '#f00'; - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.moveTo(100, 0); + ctx.moveTo(100, 50); + ctx.moveTo(0, 50); + ctx.fillStyle = '#f00'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.moveTo.multiple testing: - - 2d.path.moveTo + - 2d.path.moveTo code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.moveTo(0, 25); - ctx.moveTo(100, 25); - ctx.moveTo(0, 25); - ctx.lineTo(100, 25); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.moveTo(0, 25); + ctx.moveTo(100, 25); + ctx.moveTo(0, 25); + ctx.lineTo(100, 25); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.moveTo.nonfinite desc: moveTo() with Infinity/NaN is ignored testing: - - 2d.nonfinite + - 2d.nonfinite code: | - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - @nonfinite ctx.moveTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.moveTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.closePath.empty testing: - - 2d.path.closePath.empty + - 2d.path.closePath.empty code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.closePath(); - ctx.fillStyle = '#f00'; - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.closePath(); + ctx.fillStyle = '#f00'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.closePath.newline testing: - - 2d.path.closePath.nonempty + - 2d.path.closePath.nonempty code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.moveTo(-100, 25); - ctx.lineTo(-100, -100); - ctx.lineTo(200, -100); - ctx.lineTo(200, 25); - ctx.closePath(); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-100, -100); + ctx.lineTo(200, -100); + ctx.lineTo(200, 25); + ctx.closePath(); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.closePath.nextpoint testing: - - 2d.path.closePath.nonempty + - 2d.path.closePath.nonempty code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.moveTo(-100, 25); - ctx.lineTo(-100, -1000); - ctx.closePath(); - ctx.lineTo(1000, 25); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-100, -1000); + ctx.closePath(); + ctx.lineTo(1000, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.lineTo.ensuresubpath.1 desc: If there is no subpath, the point is added and nothing is drawn testing: - - 2d.path.lineTo.empty - - 2d.path.ensure + - 2d.path.lineTo.empty + - 2d.path.ensure code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.lineTo(100, 50); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.lineTo(100, 50); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.lineTo.ensuresubpath.2 desc: If there is no subpath, the point is added and used for subsequent drawing testing: - - 2d.path.lineTo.empty - - 2d.path.ensure + - 2d.path.lineTo.empty + - 2d.path.ensure code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.lineTo(0, 25); - ctx.lineTo(100, 25); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.lineTo(0, 25); + ctx.lineTo(100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.lineTo.basic testing: - - 2d.path.lineTo.nonempty + - 2d.path.lineTo.nonempty code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.lineTo(100, 25); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.lineTo(100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.lineTo.nextpoint testing: - - 2d.path.lineTo.nonempty + - 2d.path.lineTo.nonempty code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.moveTo(-100, -100); - ctx.lineTo(0, 25); - ctx.lineTo(100, 25); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(-100, -100); + ctx.lineTo(0, 25); + ctx.lineTo(100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.lineTo.nonfinite desc: lineTo() with Infinity/NaN is ignored testing: - - 2d.nonfinite + - 2d.nonfinite code: | - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - @nonfinite ctx.lineTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 90,45 == 0,255,0,255; + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.lineTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,45 == 0,255,0,255; expected: green - name: 2d.path.lineTo.nonfinite.details desc: lineTo() with Infinity/NaN for first arg still converts the second arg testing: - - 2d.nonfinite + - 2d.nonfinite code: | - for (var arg1 of [Infinity, -Infinity, NaN]) { - var converted = false; - ctx.lineTo(arg1, { valueOf: function() { converted = true; return 0; } }); - @assert converted; - } + for (var arg1 of [Infinity, -Infinity, NaN]) { + var converted = false; + ctx.lineTo(arg1, { valueOf: function() { converted = true; return 0; } }); + @assert converted; + } expected: clear - name: 2d.path.quadraticCurveTo.ensuresubpath.1 - desc: If there is no subpath, the first control point is added (and nothing is drawn - up to it) + desc: + If there is no subpath, the first control point is added (and nothing is drawn + up to it) testing: - - 2d.path.quadratic.empty - - 2d.path.ensure + - 2d.path.quadratic.empty + - 2d.path.ensure code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.quadraticCurveTo(100, 50, 200, 50); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 95,45 == 0,255,0,255; @moz-todo + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.quadraticCurveTo(100, 50, 200, 50); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 95,45 == 0,255,0,255; @moz-todo expected: green - name: 2d.path.quadraticCurveTo.ensuresubpath.2 desc: If there is no subpath, the first control point is added testing: - - 2d.path.quadratic.empty - - 2d.path.ensure + - 2d.path.quadratic.empty + - 2d.path.ensure code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.quadraticCurveTo(0, 25, 100, 25); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 5,45 == 0,255,0,255; @moz-todo + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.quadraticCurveTo(0, 25, 100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 5,45 == 0,255,0,255; @moz-todo expected: green - name: 2d.path.quadraticCurveTo.basic testing: - - 2d.path.quadratic.nonempty + - 2d.path.quadratic.nonempty code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.quadraticCurveTo(100, 25, 100, 25); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.quadraticCurveTo(100, 25, 100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.quadraticCurveTo.shape testing: - - 2d.path.quadratic.nonempty + - 2d.path.quadratic.nonempty code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 55; - ctx.beginPath(); - ctx.moveTo(-1000, 1050); - ctx.quadraticCurveTo(0, -1000, 1200, 1050); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 55; + ctx.beginPath(); + ctx.moveTo(-1000, 1050); + ctx.quadraticCurveTo(0, -1000, 1200, 1050); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.quadraticCurveTo.scaled testing: - - 2d.path.quadratic.nonempty + - 2d.path.quadratic.nonempty code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.scale(1000, 1000); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 0.055; - ctx.beginPath(); - ctx.moveTo(-1, 1.05); - ctx.quadraticCurveTo(0, -1, 1.2, 1.05); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(1000, 1000); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 0.055; + ctx.beginPath(); + ctx.moveTo(-1, 1.05); + ctx.quadraticCurveTo(0, -1, 1.2, 1.05); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.quadraticCurveTo.nonfinite desc: quadraticCurveTo() with Infinity/NaN is ignored testing: - - 2d.nonfinite + - 2d.nonfinite code: | - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - @nonfinite ctx.quadraticCurveTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 90,45 == 0,255,0,255; + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.quadraticCurveTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,45 == 0,255,0,255; expected: green - name: 2d.path.bezierCurveTo.ensuresubpath.1 - desc: If there is no subpath, the first control point is added (and nothing is drawn - up to it) + desc: + If there is no subpath, the first control point is added (and nothing is drawn + up to it) testing: - - 2d.path.bezier.empty - - 2d.path.ensure + - 2d.path.bezier.empty + - 2d.path.ensure code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.bezierCurveTo(100, 50, 200, 50, 200, 50); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 95,45 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.bezierCurveTo(100, 50, 200, 50, 200, 50); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 95,45 == 0,255,0,255; expected: green - name: 2d.path.bezierCurveTo.ensuresubpath.2 desc: If there is no subpath, the first control point is added testing: - - 2d.path.bezier.empty - - 2d.path.ensure + - 2d.path.bezier.empty + - 2d.path.ensure code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.bezierCurveTo(0, 25, 100, 25, 100, 25); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 5,45 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.bezierCurveTo(0, 25, 100, 25, 100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 5,45 == 0,255,0,255; expected: green - name: 2d.path.bezierCurveTo.basic testing: - - 2d.path.bezier.nonempty + - 2d.path.bezier.nonempty code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.bezierCurveTo(100, 25, 100, 25, 100, 25); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.bezierCurveTo(100, 25, 100, 25, 100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.bezierCurveTo.shape testing: - - 2d.path.bezier.nonempty + - 2d.path.bezier.nonempty code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 55; - ctx.beginPath(); - ctx.moveTo(-2000, 3100); - ctx.bezierCurveTo(-2000, -1000, 2100, -1000, 2100, 3100); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 55; + ctx.beginPath(); + ctx.moveTo(-2000, 3100); + ctx.bezierCurveTo(-2000, -1000, 2100, -1000, 2100, 3100); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.bezierCurveTo.scaled testing: - - 2d.path.bezier.nonempty + - 2d.path.bezier.nonempty code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.scale(1000, 1000); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 0.055; - ctx.beginPath(); - ctx.moveTo(-2, 3.1); - ctx.bezierCurveTo(-2, -1, 2.1, -1, 2.1, 3.1); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(1000, 1000); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 0.055; + ctx.beginPath(); + ctx.moveTo(-2, 3.1); + ctx.bezierCurveTo(-2, -1, 2.1, -1, 2.1, 3.1); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.bezierCurveTo.nonfinite desc: bezierCurveTo() with Infinity/NaN is ignored testing: - - 2d.nonfinite + - 2d.nonfinite code: | - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - @nonfinite ctx.bezierCurveTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 90,45 == 0,255,0,255; + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.bezierCurveTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,45 == 0,255,0,255; expected: green - name: 2d.path.arcTo.ensuresubpath.1 - desc: If there is no subpath, the first control point is added (and nothing is drawn - up to it) + desc: + If there is no subpath, the first control point is added (and nothing is drawn + up to it) testing: - - 2d.path.arcTo.empty - - 2d.path.ensure + - 2d.path.arcTo.empty + - 2d.path.ensure code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.arcTo(100, 50, 200, 50, 0.1); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.arcTo(100, 50, 200, 50, 0.1); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arcTo.ensuresubpath.2 desc: If there is no subpath, the first control point is added testing: - - 2d.path.arcTo.empty - - 2d.path.ensure + - 2d.path.arcTo.empty + - 2d.path.ensure code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.arcTo(0, 25, 50, 250, 0.1); // adds (x1,y1), draws nothing - ctx.lineTo(100, 25); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.arcTo(0, 25, 50, 250, 0.1); // adds (x1,y1), draws nothing + ctx.lineTo(100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arcTo.coincide.1 desc: arcTo() has no effect if P0 = P1 testing: - - 2d.path.arcTo.coincide.01 + - 2d.path.arcTo.coincide.01 code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(0, 25, 50, 1000, 1); - ctx.lineTo(100, 25); - ctx.stroke(); + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(0, 25, 50, 1000, 1); + ctx.lineTo(100, 25); + ctx.stroke(); - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.arcTo(50, 25, 100, 25, 1); - ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.arcTo(50, 25, 100, 25, 1); + ctx.stroke(); - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; expected: green - name: 2d.path.arcTo.coincide.2 desc: arcTo() draws a straight line to P1 if P1 = P2 testing: - - 2d.path.arcTo.coincide.12 + - 2d.path.arcTo.coincide.12 code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(100, 25, 100, 25, 1); - ctx.stroke(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, 100, 25, 1); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arcTo.collinear.1 - desc: arcTo() with all points on a line, and P1 between P0/P2, draws a straight - line to P1 + desc: + arcTo() with all points on a line, and P1 between P0/P2, draws a straight + line to P1 testing: - - 2d.path.arcTo.collinear + - 2d.path.arcTo.collinear code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(100, 25, 200, 25, 1); - ctx.stroke(); + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, 200, 25, 1); + ctx.stroke(); - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(-100, 25); - ctx.arcTo(0, 25, 100, 25, 1); - ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(-100, 25); + ctx.arcTo(0, 25, 100, 25, 1); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arcTo.collinear.2 - desc: arcTo() with all points on a line, and P2 between P0/P1, draws a straight - line to P1 + desc: + arcTo() with all points on a line, and P2 between P0/P1, draws a straight + line to P1 testing: - - 2d.path.arcTo.collinear + - 2d.path.arcTo.collinear code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(100, 25, 10, 25, 1); - ctx.stroke(); + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, 10, 25, 1); + ctx.stroke(); - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 25); - ctx.arcTo(200, 25, 110, 25, 1); - ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 25); + ctx.arcTo(200, 25, 110, 25, 1); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arcTo.collinear.3 - desc: arcTo() with all points on a line, and P0 between P1/P2, draws a straight - line to P1 + desc: + arcTo() with all points on a line, and P0 between P1/P2, draws a straight + line to P1 testing: - - 2d.path.arcTo.collinear + - 2d.path.arcTo.collinear code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(100, 25, -100, 25, 1); - ctx.stroke(); + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, -100, 25, 1); + ctx.stroke(); - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 25); - ctx.arcTo(200, 25, 0, 25, 1); - ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 25); + ctx.arcTo(200, 25, 0, 25, 1); + ctx.stroke(); - ctx.beginPath(); - ctx.moveTo(-100, 25); - ctx.arcTo(0, 25, -200, 25, 1); - ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(-100, 25); + ctx.arcTo(0, 25, -200, 25, 1); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arcTo.shape.curve1 desc: arcTo() curves in the right kind of shape testing: - - 2d.path.arcTo.shape - code: | - var tol = 1.5; // tolerance to avoid antialiasing artifacts - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 10; - ctx.beginPath(); - ctx.moveTo(10, 25); - ctx.arcTo(75, 25, 75, 60, 20); - ctx.stroke(); - - ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.rect(10, 20, 45, 10); - ctx.moveTo(80, 45); - ctx.arc(55, 45, 25+tol, 0, -Math.PI/2, true); - ctx.arc(55, 45, 15-tol, -Math.PI/2, 0, false); - ctx.fill(); - - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 55,19 == 0,255,0,255; - @assert pixel 55,20 == 0,255,0,255; - @assert pixel 55,21 == 0,255,0,255; - @assert pixel 64,22 == 0,255,0,255; - @assert pixel 65,21 == 0,255,0,255; - @assert pixel 72,28 == 0,255,0,255; - @assert pixel 73,27 == 0,255,0,255; - @assert pixel 78,36 == 0,255,0,255; - @assert pixel 79,35 == 0,255,0,255; - @assert pixel 80,44 == 0,255,0,255; - @assert pixel 80,45 == 0,255,0,255; - @assert pixel 80,46 == 0,255,0,255; - @assert pixel 65,45 == 0,255,0,255; + - 2d.path.arcTo.shape + code: | + var tol = 1.5; // tolerance to avoid antialiasing artifacts + + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 10; + ctx.beginPath(); + ctx.moveTo(10, 25); + ctx.arcTo(75, 25, 75, 60, 20); + ctx.stroke(); + + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.rect(10, 20, 45, 10); + ctx.moveTo(80, 45); + ctx.arc(55, 45, 25+tol, 0, -Math.PI/2, true); + ctx.arc(55, 45, 15-tol, -Math.PI/2, 0, false); + ctx.fill(); + + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 55,19 == 0,255,0,255; + @assert pixel 55,20 == 0,255,0,255; + @assert pixel 55,21 == 0,255,0,255; + @assert pixel 64,22 == 0,255,0,255; + @assert pixel 65,21 == 0,255,0,255; + @assert pixel 72,28 == 0,255,0,255; + @assert pixel 73,27 == 0,255,0,255; + @assert pixel 78,36 == 0,255,0,255; + @assert pixel 79,35 == 0,255,0,255; + @assert pixel 80,44 == 0,255,0,255; + @assert pixel 80,45 == 0,255,0,255; + @assert pixel 80,46 == 0,255,0,255; + @assert pixel 65,45 == 0,255,0,255; expected: green - name: 2d.path.arcTo.shape.curve2 desc: arcTo() curves in the right kind of shape testing: - - 2d.path.arcTo.shape - code: | - var tol = 1.5; // tolerance to avoid antialiasing artifacts - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.rect(10, 20, 45, 10); - ctx.moveTo(80, 45); - ctx.arc(55, 45, 25-tol, 0, -Math.PI/2, true); - ctx.arc(55, 45, 15+tol, -Math.PI/2, 0, false); - ctx.fill(); - - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 10; - ctx.beginPath(); - ctx.moveTo(10, 25); - ctx.arcTo(75, 25, 75, 60, 20); - ctx.stroke(); - - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 55,19 == 0,255,0,255; - @assert pixel 55,20 == 0,255,0,255; - @assert pixel 55,21 == 0,255,0,255; - @assert pixel 64,22 == 0,255,0,255; - @assert pixel 65,21 == 0,255,0,255; - @assert pixel 72,28 == 0,255,0,255; - @assert pixel 73,27 == 0,255,0,255; - @assert pixel 78,36 == 0,255,0,255; - @assert pixel 79,35 == 0,255,0,255; - @assert pixel 80,44 == 0,255,0,255; - @assert pixel 80,45 == 0,255,0,255; - @assert pixel 80,46 == 0,255,0,255; + - 2d.path.arcTo.shape + code: | + var tol = 1.5; // tolerance to avoid antialiasing artifacts + + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.rect(10, 20, 45, 10); + ctx.moveTo(80, 45); + ctx.arc(55, 45, 25-tol, 0, -Math.PI/2, true); + ctx.arc(55, 45, 15+tol, -Math.PI/2, 0, false); + ctx.fill(); + + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 10; + ctx.beginPath(); + ctx.moveTo(10, 25); + ctx.arcTo(75, 25, 75, 60, 20); + ctx.stroke(); + + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 55,19 == 0,255,0,255; + @assert pixel 55,20 == 0,255,0,255; + @assert pixel 55,21 == 0,255,0,255; + @assert pixel 64,22 == 0,255,0,255; + @assert pixel 65,21 == 0,255,0,255; + @assert pixel 72,28 == 0,255,0,255; + @assert pixel 73,27 == 0,255,0,255; + @assert pixel 78,36 == 0,255,0,255; + @assert pixel 79,35 == 0,255,0,255; + @assert pixel 80,44 == 0,255,0,255; + @assert pixel 80,45 == 0,255,0,255; + @assert pixel 80,46 == 0,255,0,255; expected: green - name: 2d.path.arcTo.shape.start desc: arcTo() draws a straight line from P0 to P1 testing: - - 2d.path.arcTo.shape + - 2d.path.arcTo.shape code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(200, 25, 200, 50, 10); - ctx.stroke(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(200, 25, 200, 50, 10); + ctx.stroke(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.arcTo.shape.end desc: arcTo() does not draw anything from P1 to P2 testing: - - 2d.path.arcTo.shape + - 2d.path.arcTo.shape code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.beginPath(); - ctx.moveTo(-100, -100); - ctx.arcTo(-100, 25, 200, 25, 10); - ctx.stroke(); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.beginPath(); + ctx.moveTo(-100, -100); + ctx.arcTo(-100, 25, 200, 25, 10); + ctx.stroke(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.arcTo.negative desc: arcTo() with negative radius throws an exception testing: - - 2d.path.arcTo.negative + - 2d.path.arcTo.negative code: | - @assert throws INDEX_SIZE_ERR ctx.arcTo(0, 0, 0, 0, -1); - var path = new Path2D(); - @assert throws INDEX_SIZE_ERR path.arcTo(10, 10, 20, 20, -5); + @assert throws INDEX_SIZE_ERR ctx.arcTo(0, 0, 0, 0, -1); + var path = new Path2D(); + @assert throws INDEX_SIZE_ERR path.arcTo(10, 10, 20, 20, -5); - name: 2d.path.arcTo.zero.1 desc: arcTo() with zero radius draws a straight line from P0 to P1 testing: - - 2d.path.arcTo.zeroradius + - 2d.path.arcTo.zeroradius code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(100, 25, 100, 100, 0); - ctx.stroke(); + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, 100, 100, 0); + ctx.stroke(); - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(0, -25); - ctx.arcTo(50, -25, 50, 50, 0); - ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(0, -25); + ctx.arcTo(50, -25, 50, 50, 0); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arcTo.zero.2 - desc: arcTo() with zero radius draws a straight line from P0 to P1, even when all - points are collinear + desc: + arcTo() with zero radius draws a straight line from P0 to P1, even when all + points are collinear testing: - - 2d.path.arcTo.zeroradius + - 2d.path.arcTo.zeroradius code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arcTo(100, 25, -100, 25, 0); - ctx.stroke(); + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arcTo(100, 25, -100, 25, 0); + ctx.stroke(); - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 25); - ctx.arcTo(200, 25, 50, 25, 0); - ctx.stroke(); + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 25); + ctx.arcTo(200, 25, 50, 25, 0); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arcTo.transformation desc: arcTo joins up to the last subpath point correctly code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 50); - ctx.translate(100, 0); - ctx.arcTo(50, 50, 50, 0, 50); - ctx.lineTo(-100, 0); - ctx.fill(); + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 50); + ctx.translate(100, 0); + ctx.arcTo(50, 50, 50, 0, 50); + ctx.lineTo(-100, 0); + ctx.fill(); - @assert pixel 0,0 == 0,255,0,255; - @assert pixel 50,0 == 0,255,0,255; - @assert pixel 99,0 == 0,255,0,255; - @assert pixel 0,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 99,25 == 0,255,0,255; - @assert pixel 0,49 == 0,255,0,255; - @assert pixel 50,49 == 0,255,0,255; - @assert pixel 99,49 == 0,255,0,255; + @assert pixel 0,0 == 0,255,0,255; + @assert pixel 50,0 == 0,255,0,255; + @assert pixel 99,0 == 0,255,0,255; + @assert pixel 0,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 99,25 == 0,255,0,255; + @assert pixel 0,49 == 0,255,0,255; + @assert pixel 50,49 == 0,255,0,255; + @assert pixel 99,49 == 0,255,0,255; expected: green - name: 2d.path.arcTo.scale desc: arcTo scales the curve, not just the control points code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 50); - ctx.translate(100, 0); - ctx.scale(0.1, 1); - ctx.arcTo(50, 50, 50, 0, 50); - ctx.lineTo(-1000, 0); - ctx.fill(); - - @assert pixel 0,0 == 0,255,0,255; - @assert pixel 50,0 == 0,255,0,255; - @assert pixel 99,0 == 0,255,0,255; - @assert pixel 0,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 99,25 == 0,255,0,255; - @assert pixel 0,49 == 0,255,0,255; - @assert pixel 50,49 == 0,255,0,255; - @assert pixel 99,49 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 50); + ctx.translate(100, 0); + ctx.scale(0.1, 1); + ctx.arcTo(50, 50, 50, 0, 50); + ctx.lineTo(-1000, 0); + ctx.fill(); + + @assert pixel 0,0 == 0,255,0,255; + @assert pixel 50,0 == 0,255,0,255; + @assert pixel 99,0 == 0,255,0,255; + @assert pixel 0,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 99,25 == 0,255,0,255; + @assert pixel 0,49 == 0,255,0,255; + @assert pixel 50,49 == 0,255,0,255; + @assert pixel 99,49 == 0,255,0,255; expected: green - name: 2d.path.arcTo.nonfinite desc: arcTo() with Infinity/NaN is ignored testing: - - 2d.nonfinite + - 2d.nonfinite code: | - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - @nonfinite ctx.arcTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 90,45 == 0,255,0,255; + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.arcTo(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,45 == 0,255,0,255; expected: green - - name: 2d.path.arc.empty desc: arc() with an empty path does not draw a straight line to the start point testing: - - 2d.path.arc.nonempty + - 2d.path.arc.nonempty code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.arc(200, 25, 5, 0, 2*Math.PI, true); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.arc(200, 25, 5, 0, 2*Math.PI, true); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arc.nonempty desc: arc() with a non-empty path does draw a straight line to the start point testing: - - 2d.path.arc.nonempty + - 2d.path.arc.nonempty code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arc(200, 25, 5, 0, 2*Math.PI, true); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arc(200, 25, 5, 0, 2*Math.PI, true); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arc.end desc: arc() adds the end point of the arc to the subpath testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(-100, 0); - ctx.arc(-100, 0, 25, -Math.PI/2, Math.PI/2, true); - ctx.lineTo(100, 25); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(-100, 0); + ctx.arc(-100, 0, 25, -Math.PI/2, Math.PI/2, true); + ctx.lineTo(100, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arc.default desc: arc() with missing last argument defaults to clockwise testing: - - 2d.path.arc.omitted + - 2d.path.arc.omitted code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 0); - ctx.arc(100, 0, 150, -Math.PI, Math.PI/2); - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc(100, 0, 150, -Math.PI, Math.PI/2); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arc.angle.1 desc: arc() draws pi/2 .. -pi anticlockwise correctly testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 0); - ctx.arc(100, 0, 150, Math.PI/2, -Math.PI, true); - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc(100, 0, 150, Math.PI/2, -Math.PI, true); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arc.angle.2 desc: arc() draws -3pi/2 .. -pi anticlockwise correctly testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 0); - ctx.arc(100, 0, 150, -3*Math.PI/2, -Math.PI, true); - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc(100, 0, 150, -3*Math.PI/2, -Math.PI, true); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arc.angle.3 desc: arc() wraps angles mod 2pi when anticlockwise and end > start+2pi testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 0); - ctx.arc(100, 0, 150, (512+1/2)*Math.PI, (1024-1)*Math.PI, true); - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc(100, 0, 150, (512+1/2)*Math.PI, (1024-1)*Math.PI, true); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arc.angle.4 desc: arc() draws a full circle when clockwise and end > start+2pi testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.arc(50, 25, 60, (512+1/2)*Math.PI, (1024-1)*Math.PI, false); - ctx.fill(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.arc(50, 25, 60, (512+1/2)*Math.PI, (1024-1)*Math.PI, false); + ctx.fill(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.arc.angle.5 desc: arc() wraps angles mod 2pi when clockwise and start > end+2pi testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(100, 0); - ctx.arc(100, 0, 150, (1024-1)*Math.PI, (512+1/2)*Math.PI, false); - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(100, 0); + ctx.arc(100, 0, 150, (1024-1)*Math.PI, (512+1/2)*Math.PI, false); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arc.angle.6 desc: arc() draws a full circle when anticlockwise and start > end+2pi testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.arc(50, 25, 60, (1024-1)*Math.PI, (512+1/2)*Math.PI, true); - ctx.fill(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.arc(50, 25, 60, (1024-1)*Math.PI, (512+1/2)*Math.PI, true); + ctx.fill(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.arc.zero.1 desc: arc() draws nothing when startAngle = endAngle and anticlockwise testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.arc(50, 25, 50, 0, 0, true); - ctx.stroke(); - @assert pixel 50,20 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 0, true); + ctx.stroke(); + @assert pixel 50,20 == 0,255,0,255; expected: green - name: 2d.path.arc.zero.2 desc: arc() draws nothing when startAngle = endAngle and clockwise testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.arc(50, 25, 50, 0, 0, false); - ctx.stroke(); - @assert pixel 50,20 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 0, false); + ctx.stroke(); + @assert pixel 50,20 == 0,255,0,255; expected: green - name: 2d.path.arc.twopie.1 desc: arc() draws nothing when end = start + 2pi-e and anticlockwise testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, true); - ctx.stroke(); - @assert pixel 50,20 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, true); + ctx.stroke(); + @assert pixel 50,20 == 0,255,0,255; expected: green - name: 2d.path.arc.twopie.2 desc: arc() draws a full circle when end = start + 2pi-e and clockwise testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, false); - ctx.stroke(); - @assert pixel 50,20 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 2*Math.PI - 1e-4, false); + ctx.stroke(); + @assert pixel 50,20 == 0,255,0,255; expected: green - name: 2d.path.arc.twopie.3 desc: arc() draws a full circle when end = start + 2pi+e and anticlockwise testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, true); - ctx.stroke(); - @assert pixel 50,20 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, true); + ctx.stroke(); + @assert pixel 50,20 == 0,255,0,255; expected: green - name: 2d.path.arc.twopie.4 desc: arc() draws nothing when end = start + 2pi+e and clockwise testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, false); - ctx.stroke(); - @assert pixel 50,20 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.arc(50, 25, 50, 0, 2*Math.PI + 1e-4, false); + ctx.stroke(); + @assert pixel 50,20 == 0,255,0,255; expected: green - name: 2d.path.arc.shape.1 desc: arc() from 0 to pi does not draw anything in the wrong half testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.arc(50, 50, 50, 0, Math.PI, false); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 20,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.arc(50, 50, 50, 0, Math.PI, false); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 20,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.arc.shape.2 desc: arc() from 0 to pi draws stuff in the right half testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 100; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.arc(50, 50, 50, 0, Math.PI, true); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 20,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 100; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.arc(50, 50, 50, 0, Math.PI, true); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 20,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.arc.shape.3 desc: arc() from 0 to -pi/2 does not draw anything in the wrong quadrant testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 100; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.arc(0, 50, 50, 0, -Math.PI/2, false); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; @moz-todo - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 100; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.arc(0, 50, 50, 0, -Math.PI/2, false); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; @moz-todo + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.arc.shape.4 desc: arc() from 0 to -pi/2 draws stuff in the right quadrant testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 150; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.arc(-50, 50, 100, 0, -Math.PI/2, true); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 150; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.arc(-50, 50, 100, 0, -Math.PI/2, true); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.arc.shape.5 desc: arc() from 0 to 5pi does not draw crazy things testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 200; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.arc(300, 0, 100, 0, 5*Math.PI, false); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 200; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.arc(300, 0, 100, 0, 5*Math.PI, false); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.arc.selfintersect.1 desc: arc() with lineWidth > 2*radius is drawn sensibly testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 200; - ctx.strokeStyle = '#f00'; - ctx.beginPath(); - ctx.arc(100, 50, 25, 0, -Math.PI/2, true); - ctx.stroke(); - ctx.beginPath(); - ctx.arc(0, 0, 25, 0, -Math.PI/2, true); - ctx.stroke(); - @assert pixel 1,1 == 0,255,0,255; @moz-todo - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 200; + ctx.strokeStyle = '#f00'; + ctx.beginPath(); + ctx.arc(100, 50, 25, 0, -Math.PI/2, true); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(0, 0, 25, 0, -Math.PI/2, true); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arc.selfintersect.2 desc: arc() with lineWidth > 2*radius is drawn sensibly testing: - - 2d.path.arc.draw - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 180; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.arc(-50, 50, 25, 0, -Math.PI/2, true); - ctx.stroke(); - ctx.beginPath(); - ctx.arc(100, 0, 25, 0, -Math.PI/2, true); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 90,10 == 0,255,0,255; - @assert pixel 97,1 == 0,255,0,255; - @assert pixel 97,2 == 0,255,0,255; - @assert pixel 97,3 == 0,255,0,255; - @assert pixel 2,48 == 0,255,0,255; + - 2d.path.arc.draw + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 180; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.arc(-50, 50, 25, 0, -Math.PI/2, true); + ctx.stroke(); + ctx.beginPath(); + ctx.arc(100, 0, 25, 0, -Math.PI/2, true); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,10 == 0,255,0,255; + @assert pixel 97,1 == 0,255,0,255; + @assert pixel 97,2 == 0,255,0,255; + @assert pixel 97,3 == 0,255,0,255; + @assert pixel 2,48 == 0,255,0,255; expected: green - name: 2d.path.arc.negative desc: arc() with negative radius throws INDEX_SIZE_ERR testing: - - 2d.path.arc.negative + - 2d.path.arc.negative code: | - @assert throws INDEX_SIZE_ERR ctx.arc(0, 0, -1, 0, 0, true); - var path = new Path2D(); - @assert throws INDEX_SIZE_ERR path.arc(10, 10, -5, 0, 1, false); + @assert throws INDEX_SIZE_ERR ctx.arc(0, 0, -1, 0, 0, true); + var path = new Path2D(); + @assert throws INDEX_SIZE_ERR path.arc(10, 10, -5, 0, 1, false); - name: 2d.path.arc.zeroradius desc: arc() with zero radius draws a line to the start point testing: - - 2d.path.arc.zero + - 2d.path.arc.zero code: | - ctx.fillStyle = '#f00' - ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.strokeStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 25); - ctx.arc(200, 25, 0, 0, Math.PI, true); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00' + ctx.fillRect(0, 0, 100, 50); + ctx.lineWidth = 50; + ctx.strokeStyle = '#0f0'; + ctx.beginPath(); + ctx.moveTo(0, 25); + ctx.arc(200, 25, 0, 0, Math.PI, true); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.arc.scale.1 desc: Non-uniformly scaled arcs are the right shape testing: - - 2d.path.transformation - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.scale(2, 0.5); - ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.arc(25, 50, 56, 0, 2*Math.PI, false); - ctx.fill(); - ctx.fillStyle = '#f00'; - ctx.beginPath(); - ctx.moveTo(-25, 50); - ctx.arc(-25, 50, 24, 0, 2*Math.PI, false); - ctx.moveTo(75, 50); - ctx.arc(75, 50, 24, 0, 2*Math.PI, false); - ctx.moveTo(25, -25); - ctx.arc(25, -25, 24, 0, 2*Math.PI, false); - ctx.moveTo(25, 125); - ctx.arc(25, 125, 24, 0, 2*Math.PI, false); - ctx.fill(); - - @assert pixel 0,0 == 0,255,0,255; - @assert pixel 50,0 == 0,255,0,255; - @assert pixel 99,0 == 0,255,0,255; - @assert pixel 0,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 99,25 == 0,255,0,255; - @assert pixel 0,49 == 0,255,0,255; - @assert pixel 50,49 == 0,255,0,255; - @assert pixel 99,49 == 0,255,0,255; + - 2d.path.transformation + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(2, 0.5); + ctx.fillStyle = '#0f0'; + ctx.beginPath(); + ctx.arc(25, 50, 56, 0, 2*Math.PI, false); + ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.beginPath(); + ctx.moveTo(-25, 50); + ctx.arc(-25, 50, 24, 0, 2*Math.PI, false); + ctx.moveTo(75, 50); + ctx.arc(75, 50, 24, 0, 2*Math.PI, false); + ctx.moveTo(25, -25); + ctx.arc(25, -25, 24, 0, 2*Math.PI, false); + ctx.moveTo(25, 125); + ctx.arc(25, 125, 24, 0, 2*Math.PI, false); + ctx.fill(); + + @assert pixel 0,0 == 0,255,0,255; + @assert pixel 50,0 == 0,255,0,255; + @assert pixel 99,0 == 0,255,0,255; + @assert pixel 0,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 99,25 == 0,255,0,255; + @assert pixel 0,49 == 0,255,0,255; + @assert pixel 50,49 == 0,255,0,255; + @assert pixel 99,49 == 0,255,0,255; expected: green - name: 2d.path.arc.scale.2 desc: Highly scaled arcs are the right shape testing: - - 2d.path.arc.draw + - 2d.path.arc.draw code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.scale(100, 100); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 1.2; - ctx.beginPath(); - ctx.arc(0, 0, 0.6, 0, Math.PI/2, false); - ctx.stroke(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.scale(100, 100); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 1.2; + ctx.beginPath(); + ctx.arc(0, 0, 0.6, 0, Math.PI/2, false); + ctx.stroke(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.arc.nonfinite desc: arc() with Infinity/NaN is ignored testing: - - 2d.nonfinite + - 2d.nonfinite code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - @nonfinite ctx.arc(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <2*Math.PI Infinity -Infinity NaN>, ); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 90,45 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.arc(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <2*Math.PI Infinity -Infinity NaN>, ); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,45 == 0,255,0,255; expected: green - - name: 2d.path.rect.basic testing: - - 2d.path.rect.subpath + - 2d.path.rect.subpath code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.rect(0, 0, 100, 50); - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.rect(0, 0, 100, 50); + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.rect.newsubpath testing: - - 2d.path.rect.subpath + - 2d.path.rect.subpath code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.moveTo(-100, 25); - ctx.lineTo(-50, 25); - ctx.rect(200, 25, 1, 1); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-50, 25); + ctx.rect(200, 25, 1, 1); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.rect.closed testing: - - 2d.path.rect.closed + - 2d.path.rect.closed code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 200; - ctx.lineJoin = 'miter'; - ctx.rect(100, 50, 100, 100); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 200; + ctx.lineJoin = 'miter'; + ctx.rect(100, 50, 100, 100); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.rect.end.1 testing: - - 2d.path.rect.newsubpath + - 2d.path.rect.newsubpath code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.rect(200, 100, 400, 1000); - ctx.lineTo(-2000, -1000); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.rect(200, 100, 400, 1000); + ctx.lineTo(-2000, -1000); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.rect.end.2 testing: - - 2d.path.rect.newsubpath + - 2d.path.rect.newsubpath code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 450; - ctx.lineCap = 'round'; - ctx.lineJoin = 'bevel'; - ctx.rect(150, 150, 2000, 2000); - ctx.lineTo(160, 160); - ctx.stroke(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 450; + ctx.lineCap = 'round'; + ctx.lineJoin = 'bevel'; + ctx.rect(150, 150, 2000, 2000); + ctx.lineTo(160, 160); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.rect.zero.1 testing: - - 2d.path.rect.subpath + - 2d.path.rect.subpath code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.rect(0, 50, 100, 0); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.rect(0, 50, 100, 0); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.rect.zero.2 testing: - - 2d.path.rect.subpath + - 2d.path.rect.subpath code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.rect(50, -100, 0, 250); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.rect(50, -100, 0, 250); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.rect.zero.3 testing: - - 2d.path.rect.subpath + - 2d.path.rect.subpath code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.rect(50, 25, 0, 0); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.rect(50, 25, 0, 0); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.rect.zero.4 testing: - - 2d.path.rect.subpath + - 2d.path.rect.subpath code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.rect(100, 25, 0, 0); - ctx.lineTo(0, 25); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.rect(100, 25, 0, 0); + ctx.lineTo(0, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.rect.zero.5 testing: - - 2d.path.rect.subpath + - 2d.path.rect.subpath code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.moveTo(0, 0); - ctx.rect(100, 25, 0, 0); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.moveTo(0, 0); + ctx.rect(100, 25, 0, 0); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.rect.zero.6 testing: - - 2d.path.rect.subpath + - 2d.path.rect.subpath #mozilla: { bug: TODO } code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineJoin = 'miter'; - ctx.miterLimit = 1.5; - ctx.lineWidth = 200; - ctx.beginPath(); - ctx.rect(100, 25, 1000, 0); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; @moz-todo + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineJoin = 'miter'; + ctx.miterLimit = 1.5; + ctx.lineWidth = 200; + ctx.beginPath(); + ctx.rect(100, 25, 1000, 0); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; @moz-todo expected: green - name: 2d.path.rect.negative testing: - - 2d.path.rect.subpath - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.fillStyle = '#0f0'; - ctx.rect(0, 0, 50, 25); - ctx.rect(100, 0, -50, 25); - ctx.rect(0, 50, 50, -25); - ctx.rect(100, 50, -50, -25); - ctx.fill(); - @assert pixel 25,12 == 0,255,0,255; - @assert pixel 75,12 == 0,255,0,255; - @assert pixel 25,37 == 0,255,0,255; - @assert pixel 75,37 == 0,255,0,255; + - 2d.path.rect.subpath + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.fillStyle = '#0f0'; + ctx.rect(0, 0, 50, 25); + ctx.rect(100, 0, -50, 25); + ctx.rect(0, 50, 50, -25); + ctx.rect(100, 50, -50, -25); + ctx.fill(); + @assert pixel 25,12 == 0,255,0,255; + @assert pixel 75,12 == 0,255,0,255; + @assert pixel 25,37 == 0,255,0,255; + @assert pixel 75,37 == 0,255,0,255; - name: 2d.path.rect.winding testing: - - 2d.path.rect.subpath - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.fillStyle = '#f00'; - ctx.rect(0, 0, 50, 50); - ctx.rect(100, 50, -50, -50); - ctx.rect(0, 25, 100, -25); - ctx.rect(100, 25, -100, 25); - ctx.fill(); - @assert pixel 25,12 == 0,255,0,255; - @assert pixel 75,12 == 0,255,0,255; - @assert pixel 25,37 == 0,255,0,255; - @assert pixel 75,37 == 0,255,0,255; + - 2d.path.rect.subpath + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.fillStyle = '#f00'; + ctx.rect(0, 0, 50, 50); + ctx.rect(100, 50, -50, -50); + ctx.rect(0, 25, 100, -25); + ctx.rect(100, 25, -100, 25); + ctx.fill(); + @assert pixel 25,12 == 0,255,0,255; + @assert pixel 75,12 == 0,255,0,255; + @assert pixel 25,37 == 0,255,0,255; + @assert pixel 75,37 == 0,255,0,255; - name: 2d.path.rect.selfintersect #mozilla: { bug: TODO } code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 90; - ctx.beginPath(); - ctx.rect(45, 20, 10, 10); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; @moz-todo + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 90; + ctx.beginPath(); + ctx.rect(45, 20, 10, 10); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; @moz-todo expected: green - name: 2d.path.rect.nonfinite desc: rect() with Infinity/NaN is ignored testing: - - 2d.nonfinite + - 2d.nonfinite code: | - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - @nonfinite ctx.rect(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 90,45 == 0,255,0,255; + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.rect(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,45 == 0,255,0,255; expected: green - name: 2d.path.roundrect.newsubpath code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.moveTo(-100, 25); - ctx.lineTo(-50, 25); - ctx.roundRect(200, 25, 1, 1, [0]); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-50, 25); + ctx.roundRect(200, 25, 1, 1, [0]); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.roundrect.closed code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 200; - ctx.lineJoin = 'miter'; - ctx.roundRect(100, 50, 100, 100, [0]); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 200; + ctx.lineJoin = 'miter'; + ctx.roundRect(100, 50, 100, 100, [0]); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.roundrect.end.1 code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.roundRect(200, 100, 400, 1000, [0]); - ctx.lineTo(-2000, -1000); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.roundRect(200, 100, 400, 1000, [0]); + ctx.lineTo(-2000, -1000); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.roundrect.end.2 code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 450; - ctx.lineCap = 'round'; - ctx.lineJoin = 'bevel'; - ctx.roundRect(150, 150, 2000, 2000, [0]); - ctx.lineTo(160, 160); - ctx.stroke(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 450; + ctx.lineCap = 'round'; + ctx.lineJoin = 'bevel'; + ctx.roundRect(150, 150, 2000, 2000, [0]); + ctx.lineTo(160, 160); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.roundrect.end.3 code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.roundRect(101, 51, 2000, 2000, [500, 500, 500, 500]); - ctx.lineTo(-1, -1); - ctx.stroke(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.roundRect(101, 51, 2000, 2000, [500, 500, 500, 500]); + ctx.lineTo(-1, -1); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.roundrect.end.4 code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 10; - ctx.roundRect(-1, -1, 2000, 2000, [1000, 1000, 1000, 1000]); - ctx.lineTo(-150, -150); - ctx.stroke(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 10; + ctx.roundRect(-1, -1, 2000, 2000, [1000, 1000, 1000, 1000]); + ctx.lineTo(-150, -150); + ctx.stroke(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.path.roundrect.zero.1 code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.roundRect(0, 50, 100, 0, [0]); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.roundRect(0, 50, 100, 0, [0]); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.roundrect.zero.2 code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.roundRect(50, -100, 0, 250, [0]); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.roundRect(50, -100, 0, 250, [0]); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.roundrect.zero.3 code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.beginPath(); - ctx.roundRect(50, 25, 0, 0, [0]); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.beginPath(); + ctx.roundRect(50, 25, 0, 0, [0]); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.roundrect.zero.4 code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 50; - ctx.roundRect(100, 25, 0, 0, [0]); - ctx.lineTo(0, 25); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 50; + ctx.roundRect(100, 25, 0, 0, [0]); + ctx.lineTo(0, 25); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.roundrect.zero.5 code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.moveTo(0, 0); - ctx.roundRect(100, 25, 0, 0, [0]); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.moveTo(0, 0); + ctx.roundRect(100, 25, 0, 0, [0]); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.roundrect.zero.6 code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineJoin = 'miter'; - ctx.miterLimit = 1.5; - ctx.lineWidth = 200; - ctx.beginPath(); - ctx.roundRect(100, 25, 1000, 0, [0]); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.lineJoin = 'miter'; + ctx.miterLimit = 1.5; + ctx.lineWidth = 200; + ctx.beginPath(); + ctx.roundRect(100, 25, 1000, 0, [0]); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.roundrect.negative code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.fillStyle = '#0f0'; - ctx.roundRect(0, 0, 50, 25, [10, 0, 0, 0]); - ctx.roundRect(100, 0, -50, 25, [10, 0, 0, 0]); - ctx.roundRect(0, 50, 50, -25, [10, 0, 0, 0]); - ctx.roundRect(100, 50, -50, -25, [10, 0, 0, 0]); - ctx.fill(); - // All rects drawn - @assert pixel 25,12 == 0,255,0,255; - @assert pixel 75,12 == 0,255,0,255; - @assert pixel 25,37 == 0,255,0,255; - @assert pixel 75,37 == 0,255,0,255; - // Correct corners are rounded. - @assert pixel 1,1 == 255,0,0,255; - @assert pixel 98,1 == 255,0,0,255; - @assert pixel 1,48 == 255,0,0,255; - @assert pixel 98,48 == 255,0,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.fillStyle = '#0f0'; + ctx.roundRect(0, 0, 50, 25, [10, 0, 0, 0]); + ctx.roundRect(100, 0, -50, 25, [10, 0, 0, 0]); + ctx.roundRect(0, 50, 50, -25, [10, 0, 0, 0]); + ctx.roundRect(100, 50, -50, -25, [10, 0, 0, 0]); + ctx.fill(); + // All rects drawn + @assert pixel 25,12 == 0,255,0,255; + @assert pixel 75,12 == 0,255,0,255; + @assert pixel 25,37 == 0,255,0,255; + @assert pixel 75,37 == 0,255,0,255; + // Correct corners are rounded. + @assert pixel 1,1 == 255,0,0,255; + @assert pixel 98,1 == 255,0,0,255; + @assert pixel 1,48 == 255,0,0,255; + @assert pixel 98,48 == 255,0,0,255; - name: 2d.path.roundrect.winding code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.fillStyle = '#f00'; - ctx.roundRect(0, 0, 50, 50, [0]); - ctx.roundRect(100, 50, -50, -50, [0]); - ctx.roundRect(0, 25, 100, -25, [0]); - ctx.roundRect(100, 25, -100, 25, [0]); - ctx.fill(); - @assert pixel 25,12 == 0,255,0,255; - @assert pixel 75,12 == 0,255,0,255; - @assert pixel 25,37 == 0,255,0,255; - @assert pixel 75,37 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.beginPath(); + ctx.fillStyle = '#f00'; + ctx.roundRect(0, 0, 50, 50, [0]); + ctx.roundRect(100, 50, -50, -50, [0]); + ctx.roundRect(0, 25, 100, -25, [0]); + ctx.roundRect(100, 25, -100, 25, [0]); + ctx.fill(); + @assert pixel 25,12 == 0,255,0,255; + @assert pixel 75,12 == 0,255,0,255; + @assert pixel 25,37 == 0,255,0,255; + @assert pixel 75,37 == 0,255,0,255; - name: 2d.path.roundrect.selfintersect code: | - ctx.fillStyle = '#f00'; - ctx.roundRect(0, 0, 100, 50, [0]); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 90; - ctx.beginPath(); - ctx.roundRect(45, 20, 10, 10, [0]); - ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.roundRect(0, 0, 100, 50, [0]); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 90; + ctx.beginPath(); + ctx.roundRect(45, 20, 10, 10, [0]); + ctx.stroke(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.roundrect.nonfinite desc: roundRect() with Infinity/NaN is ignored testing: - - 2d.nonfinite - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - @nonfinite ctx.roundRect(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <[0] [Infinity] [-Infinity] [NaN] [Infinity,0] [-Infinity,0] [NaN,0] [0,Infinity] [0,-Infinity] [0,NaN] [Infinity,0,0] [-Infinity,0,0] [NaN,0,0] [0,Infinity,0] [0,-Infinity,0] [0,NaN,0] [0,0,Infinity] [0,0,-Infinity] [0,0,NaN] [Infinity,0,0,0] [-Infinity,0,0,0] [NaN,0,0,0] [0,Infinity,0,0] [0,-Infinity,0,0] [0,NaN,0,0] [0,0,Infinity,0] [0,0,-Infinity,0] [0,0,NaN,0] [0,0,0,Infinity] [0,0,0,-Infinity] [0,0,0,NaN]>); - ctx.roundRect(0, 0, 100, 100, [new DOMPoint(10, Infinity)]); - ctx.roundRect(0, 0, 100, 100, [new DOMPoint(10, -Infinity)]); - ctx.roundRect(0, 0, 100, 100, [new DOMPoint(10, NaN)]); - ctx.roundRect(0, 0, 100, 100, [new DOMPoint(Infinity, 10)]); - ctx.roundRect(0, 0, 100, 100, [new DOMPoint(-Infinity, 10)]); - ctx.roundRect(0, 0, 100, 100, [new DOMPoint(NaN, 10)]); - ctx.roundRect(0, 0, 100, 100, [{x: 10, y: Infinity}]); - ctx.roundRect(0, 0, 100, 100, [{x: 10, y: -Infinity}]); - ctx.roundRect(0, 0, 100, 100, [{x: 10, y: NaN}]); - ctx.roundRect(0, 0, 100, 100, [{x: Infinity, y: 10}]); - ctx.roundRect(0, 0, 100, 100, [{x: -Infinity, y: 10}]); - ctx.roundRect(0, 0, 100, 100, [{x: NaN, y: 10}]); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 90,45 == 0,255,0,255; + - 2d.nonfinite + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + @nonfinite ctx.roundRect(<0 Infinity -Infinity NaN>, <50 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <1 Infinity -Infinity NaN>, <[0] [Infinity] [-Infinity] [NaN] [Infinity,0] [-Infinity,0] [NaN,0] [0,Infinity] [0,-Infinity] [0,NaN] [Infinity,0,0] [-Infinity,0,0] [NaN,0,0] [0,Infinity,0] [0,-Infinity,0] [0,NaN,0] [0,0,Infinity] [0,0,-Infinity] [0,0,NaN] [Infinity,0,0,0] [-Infinity,0,0,0] [NaN,0,0,0] [0,Infinity,0,0] [0,-Infinity,0,0] [0,NaN,0,0] [0,0,Infinity,0] [0,0,-Infinity,0] [0,0,NaN,0] [0,0,0,Infinity] [0,0,0,-Infinity] [0,0,0,NaN]>); + ctx.roundRect(0, 0, 100, 100, [new DOMPoint(10, Infinity)]); + ctx.roundRect(0, 0, 100, 100, [new DOMPoint(10, -Infinity)]); + ctx.roundRect(0, 0, 100, 100, [new DOMPoint(10, NaN)]); + ctx.roundRect(0, 0, 100, 100, [new DOMPoint(Infinity, 10)]); + ctx.roundRect(0, 0, 100, 100, [new DOMPoint(-Infinity, 10)]); + ctx.roundRect(0, 0, 100, 100, [new DOMPoint(NaN, 10)]); + ctx.roundRect(0, 0, 100, 100, [{x: 10, y: Infinity}]); + ctx.roundRect(0, 0, 100, 100, [{x: 10, y: -Infinity}]); + ctx.roundRect(0, 0, 100, 100, [{x: 10, y: NaN}]); + ctx.roundRect(0, 0, 100, 100, [{x: Infinity, y: 10}]); + ctx.roundRect(0, 0, 100, 100, [{x: -Infinity, y: 10}]); + ctx.roundRect(0, 0, 100, 100, [{x: NaN, y: 10}]); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 90,45 == 0,255,0,255; expected: green - name: 2d.path.roundrect.4.radii.1.double desc: Verify that when four radii are given to roundRect(), the first radius, specified as a double, applies to the top-left corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [20, 0, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 1,1 == 255,0,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [20, 0, 0, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 1,1 == 255,0,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.4.radii.1.dompoint desc: Verify that when four radii are given to roundRect(), the first radius, specified as a DOMPoint, applies to the top-left corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20), 0, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20), 0, 0, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // top-left corner - @assert pixel 20,1 == 255,0,0,255; - @assert pixel 41,1 == 0,255,0,255; - @assert pixel 1,10 == 255,0,0,255; - @assert pixel 1,21 == 0,255,0,255; + // top-left corner + @assert pixel 20,1 == 255,0,0,255; + @assert pixel 41,1 == 0,255,0,255; + @assert pixel 1,10 == 255,0,0,255; + @assert pixel 1,21 == 0,255,0,255; - // other corners - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + // other corners + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.4.radii.1.dompointinit desc: Verify that when four radii are given to roundRect(), the first radius, specified as a DOMPointInit, applies to the top-left corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [{x: 40, y: 20}, 0, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [{x: 40, y: 20}, 0, 0, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // top-left corner - @assert pixel 20,1 == 255,0,0,255; - @assert pixel 41,1 == 0,255,0,255; - @assert pixel 1,10 == 255,0,0,255; - @assert pixel 1,21 == 0,255,0,255; + // top-left corner + @assert pixel 20,1 == 255,0,0,255; + @assert pixel 41,1 == 0,255,0,255; + @assert pixel 1,10 == 255,0,0,255; + @assert pixel 1,21 == 0,255,0,255; - // other corners - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + // other corners + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.4.radii.2.double desc: Verify that when four radii are given to roundRect(), the second radius, specified as a double, applies to the top-right corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 20, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 255,0,0,255; - @assert pixel 98,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 20, 0, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 255,0,0,255; + @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.4.radii.2.dompoint desc: Verify that when four radii are given to roundRect(), the second radius, specified as a DOMPoint, applies to the top-right corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, new DOMPoint(40, 20), 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, new DOMPoint(40, 20), 0, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // top-right corner - @assert pixel 79,1 == 255,0,0,255; - @assert pixel 58,1 == 0,255,0,255; - @assert pixel 98,10 == 255,0,0,255; - @assert pixel 98,21 == 0,255,0,255; + // top-right corner + @assert pixel 79,1 == 255,0,0,255; + @assert pixel 58,1 == 0,255,0,255; + @assert pixel 98,10 == 255,0,0,255; + @assert pixel 98,21 == 0,255,0,255; - // other corners - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + // other corners + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.4.radii.2.dompointinit desc: Verify that when four radii are given to roundRect(), the second radius, specified as a DOMPointInit, applies to the top-right corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, {x: 40, y: 20}, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, {x: 40, y: 20}, 0, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // top-right corner - @assert pixel 79,1 == 255,0,0,255; - @assert pixel 58,1 == 0,255,0,255; - @assert pixel 98,10 == 255,0,0,255; - @assert pixel 98,21 == 0,255,0,255; + // top-right corner + @assert pixel 79,1 == 255,0,0,255; + @assert pixel 58,1 == 0,255,0,255; + @assert pixel 98,10 == 255,0,0,255; + @assert pixel 98,21 == 0,255,0,255; - // other corners - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + // other corners + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.4.radii.3.double desc: Verify that when four radii are given to roundRect(), the third radius, specified as a double, applies to the bottom-right corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, 20, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 255,0,0,255; - @assert pixel 1,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, 20, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 255,0,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.4.radii.3.dompoint desc: Verify that when four radii are given to roundRect(), the third radius, specified as a DOMPoint, applies to the bottom-right corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, new DOMPoint(40, 20), 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, new DOMPoint(40, 20), 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // bottom-right corner - @assert pixel 79,48 == 255,0,0,255; - @assert pixel 58,48 == 0,255,0,255; - @assert pixel 98,39 == 255,0,0,255; - @assert pixel 98,28 == 0,255,0,255; + // bottom-right corner + @assert pixel 79,48 == 255,0,0,255; + @assert pixel 58,48 == 0,255,0,255; + @assert pixel 98,39 == 255,0,0,255; + @assert pixel 98,28 == 0,255,0,255; - // other corners - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + // other corners + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.4.radii.3.dompointinit desc: Verify that when four radii are given to roundRect(), the third radius, specified as a DOMPointInit, applies to the bottom-right corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, {x: 40, y: 20}, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, {x: 40, y: 20}, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // bottom-right corner - @assert pixel 79,48 == 255,0,0,255; - @assert pixel 58,48 == 0,255,0,255; - @assert pixel 98,39 == 255,0,0,255; - @assert pixel 98,28 == 0,255,0,255; + // bottom-right corner + @assert pixel 79,48 == 255,0,0,255; + @assert pixel 58,48 == 0,255,0,255; + @assert pixel 98,39 == 255,0,0,255; + @assert pixel 98,28 == 0,255,0,255; - // other corners - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + // other corners + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.4.radii.4.double desc: Verify that when four radii are given to roundRect(), the fourth radius, specified as a double, applies to the bottom-left corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, 0, 20]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; - @assert pixel 1,48 == 255,0,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, 0, 20]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,48 == 255,0,0,255; - name: 2d.path.roundrect.4.radii.4.dompoint desc: Verify that when four radii are given to roundRect(), the fourth radius, specified as a DOMPoint, applies to the bottom-left corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, 0, new DOMPoint(40, 20)]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, 0, new DOMPoint(40, 20)]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // bottom-left corner - @assert pixel 20,48 == 255,0,0,255; - @assert pixel 41,48 == 0,255,0,255; - @assert pixel 1,39 == 255,0,0,255; - @assert pixel 1,28 == 0,255,0,255; + // bottom-left corner + @assert pixel 20,48 == 255,0,0,255; + @assert pixel 41,48 == 0,255,0,255; + @assert pixel 1,39 == 255,0,0,255; + @assert pixel 1,28 == 0,255,0,255; - // other corners - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + // other corners + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; - name: 2d.path.roundrect.4.radii.4.dompointinit desc: Verify that when four radii are given to roundRect(), the fourth radius, specified as a DOMPointInit, applies to the bottom-left corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, 0, {x: 40, y: 20}]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, 0, {x: 40, y: 20}]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // bottom-left corner - @assert pixel 20,48 == 255,0,0,255; - @assert pixel 41,48 == 0,255,0,255; - @assert pixel 1,39 == 255,0,0,255; - @assert pixel 1,28 == 0,255,0,255; + // bottom-left corner + @assert pixel 20,48 == 255,0,0,255; + @assert pixel 41,48 == 0,255,0,255; + @assert pixel 1,39 == 255,0,0,255; + @assert pixel 1,28 == 0,255,0,255; - // other corners - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + // other corners + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; - name: 2d.path.roundrect.3.radii.1.double desc: Verify that when three radii are given to roundRect(), the first radius, specified as a double, applies to the top-left corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [20, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 1,1 == 255,0,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [20, 0, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 1,1 == 255,0,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.3.radii.1.dompoint desc: Verify that when three radii are given to roundRect(), the first radius, specified as a DOMPoint, applies to the top-left corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20), 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20), 0, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // top-left corner - @assert pixel 20,1 == 255,0,0,255; - @assert pixel 41,1 == 0,255,0,255; - @assert pixel 1,10 == 255,0,0,255; - @assert pixel 1,21 == 0,255,0,255; + // top-left corner + @assert pixel 20,1 == 255,0,0,255; + @assert pixel 41,1 == 0,255,0,255; + @assert pixel 1,10 == 255,0,0,255; + @assert pixel 1,21 == 0,255,0,255; - // other corners - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + // other corners + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.3.radii.1.dompointinit desc: Verify that when three radii are given to roundRect(), the first radius, specified as a DOMPointInit, applies to the top-left corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [{x: 40, y: 20}, 0, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [{x: 40, y: 20}, 0, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // top-left corner - @assert pixel 20,1 == 255,0,0,255; - @assert pixel 41,1 == 0,255,0,255; - @assert pixel 1,10 == 255,0,0,255; - @assert pixel 1,21 == 0,255,0,255; + // top-left corner + @assert pixel 20,1 == 255,0,0,255; + @assert pixel 41,1 == 0,255,0,255; + @assert pixel 1,10 == 255,0,0,255; + @assert pixel 1,21 == 0,255,0,255; - // other corners - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + // other corners + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.3.radii.2.double desc: Verify that when three radii are given to roundRect(), the second radius, specified as a double, applies to the top-right and bottom-left corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 20, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 255,0,0,255; - @assert pixel 98,48 == 0,255,0,255; - @assert pixel 1,48 == 255,0,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 20, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 255,0,0,255; + @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,48 == 255,0,0,255; - name: 2d.path.roundrect.3.radii.2.dompoint desc: Verify that when three radii are given to roundRect(), the second radius, specified as a DOMPoint, applies to the top-right and bottom-left corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, new DOMPoint(40, 20), 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, new DOMPoint(40, 20), 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // top-right corner - @assert pixel 79,1 == 255,0,0,255; - @assert pixel 58,1 == 0,255,0,255; - @assert pixel 98,10 == 255,0,0,255; - @assert pixel 98,21 == 0,255,0,255; + // top-right corner + @assert pixel 79,1 == 255,0,0,255; + @assert pixel 58,1 == 0,255,0,255; + @assert pixel 98,10 == 255,0,0,255; + @assert pixel 98,21 == 0,255,0,255; - // bottom-left corner - @assert pixel 20,48 == 255,0,0,255; - @assert pixel 41,48 == 0,255,0,255; - @assert pixel 1,39 == 255,0,0,255; - @assert pixel 1,28 == 0,255,0,255; + // bottom-left corner + @assert pixel 20,48 == 255,0,0,255; + @assert pixel 41,48 == 0,255,0,255; + @assert pixel 1,39 == 255,0,0,255; + @assert pixel 1,28 == 0,255,0,255; - // other corners - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + // other corners + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; - name: 2d.path.roundrect.3.radii.2.dompointinit desc: Verify that when three radii are given to roundRect(), the second radius, specified as a DOMPoint, applies to the top-right and bottom-left corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, {x: 40, y: 20}, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, {x: 40, y: 20}, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // top-right corner - @assert pixel 79,1 == 255,0,0,255; - @assert pixel 58,1 == 0,255,0,255; - @assert pixel 98,10 == 255,0,0,255; - @assert pixel 98,21 == 0,255,0,255; + // top-right corner + @assert pixel 79,1 == 255,0,0,255; + @assert pixel 58,1 == 0,255,0,255; + @assert pixel 98,10 == 255,0,0,255; + @assert pixel 98,21 == 0,255,0,255; - // bottom-left corner - @assert pixel 20,48 == 255,0,0,255; - @assert pixel 41,48 == 0,255,0,255; - @assert pixel 1,39 == 255,0,0,255; - @assert pixel 1,28 == 0,255,0,255; + // bottom-left corner + @assert pixel 20,48 == 255,0,0,255; + @assert pixel 41,48 == 0,255,0,255; + @assert pixel 1,39 == 255,0,0,255; + @assert pixel 1,28 == 0,255,0,255; - // other corners - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + // other corners + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; - name: 2d.path.roundrect.3.radii.3.double desc: Verify that when three radii are given to roundRect(), the third radius, specified as a double, applies to the bottom-right corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, 20]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 255,0,0,255; - @assert pixel 1,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, 20]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 255,0,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.3.radii.3.dompoint desc: Verify that when three radii are given to roundRect(), the third radius, specified as a DOMPoint, applies to the bottom-right corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, new DOMPoint(40, 20)]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, new DOMPoint(40, 20)]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // bottom-right corner - @assert pixel 79,48 == 255,0,0,255; - @assert pixel 58,48 == 0,255,0,255; - @assert pixel 98,39 == 255,0,0,255; - @assert pixel 98,28 == 0,255,0,255; + // bottom-right corner + @assert pixel 79,48 == 255,0,0,255; + @assert pixel 58,48 == 0,255,0,255; + @assert pixel 98,39 == 255,0,0,255; + @assert pixel 98,28 == 0,255,0,255; - // other corners - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + // other corners + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.3.radii.3.dompointinit desc: Verify that when three radii are given to roundRect(), the third radius, specified as a DOMPointInit, applies to the bottom-right corner. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 0, {x: 40, y: 20}]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 0, {x: 40, y: 20}]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // bottom-right corner - @assert pixel 79,48 == 255,0,0,255; - @assert pixel 58,48 == 0,255,0,255; - @assert pixel 98,39 == 255,0,0,255; - @assert pixel 98,28 == 0,255,0,255; + // bottom-right corner + @assert pixel 79,48 == 255,0,0,255; + @assert pixel 58,48 == 0,255,0,255; + @assert pixel 98,39 == 255,0,0,255; + @assert pixel 98,28 == 0,255,0,255; - // other corners - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + // other corners + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.2.radii.1.double desc: Verify that when two radii are given to roundRect(), the first radius, specified as a double, applies to the top-left and bottom-right corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [20, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 1,1 == 255,0,0,255; - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 98,48 == 255,0,0,255; - @assert pixel 1,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [20, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 1,1 == 255,0,0,255; + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 98,48 == 255,0,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.2.radii.1.dompoint desc: Verify that when two radii are given to roundRect(), the first radius, specified as a DOMPoint, applies to the top-left and bottom-right corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20), 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20), 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // top-left corner - @assert pixel 20,1 == 255,0,0,255; - @assert pixel 41,1 == 0,255,0,255; - @assert pixel 1,10 == 255,0,0,255; - @assert pixel 1,21 == 0,255,0,255; + // top-left corner + @assert pixel 20,1 == 255,0,0,255; + @assert pixel 41,1 == 0,255,0,255; + @assert pixel 1,10 == 255,0,0,255; + @assert pixel 1,21 == 0,255,0,255; - // bottom-right corner - @assert pixel 79,48 == 255,0,0,255; - @assert pixel 58,48 == 0,255,0,255; - @assert pixel 98,39 == 255,0,0,255; - @assert pixel 98,28 == 0,255,0,255; + // bottom-right corner + @assert pixel 79,48 == 255,0,0,255; + @assert pixel 58,48 == 0,255,0,255; + @assert pixel 98,39 == 255,0,0,255; + @assert pixel 98,28 == 0,255,0,255; - // other corners - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + // other corners + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.2.radii.1.dompointinit desc: Verify that when two radii are given to roundRect(), the first radius, specified as a DOMPointInit, applies to the top-left and bottom-right corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [{x: 40, y: 20}, 0]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [{x: 40, y: 20}, 0]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // top-left corner - @assert pixel 20,1 == 255,0,0,255; - @assert pixel 41,1 == 0,255,0,255; - @assert pixel 1,10 == 255,0,0,255; - @assert pixel 1,21 == 0,255,0,255; + // top-left corner + @assert pixel 20,1 == 255,0,0,255; + @assert pixel 41,1 == 0,255,0,255; + @assert pixel 1,10 == 255,0,0,255; + @assert pixel 1,21 == 0,255,0,255; - // bottom-right corner - @assert pixel 79,48 == 255,0,0,255; - @assert pixel 58,48 == 0,255,0,255; - @assert pixel 98,39 == 255,0,0,255; - @assert pixel 98,28 == 0,255,0,255; + // bottom-right corner + @assert pixel 79,48 == 255,0,0,255; + @assert pixel 58,48 == 0,255,0,255; + @assert pixel 98,39 == 255,0,0,255; + @assert pixel 98,28 == 0,255,0,255; - // other corners - @assert pixel 98,1 == 0,255,0,255; - @assert pixel 1,48 == 0,255,0,255; + // other corners + @assert pixel 98,1 == 0,255,0,255; + @assert pixel 1,48 == 0,255,0,255; - name: 2d.path.roundrect.2.radii.2.double desc: Verify that when two radii are given to roundRect(), the second radius, specified as a double, applies to the top-right and bottom-left corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, 20]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,1 == 255,0,0,255; - @assert pixel 98,48 == 0,255,0,255; - @assert pixel 1,48 == 255,0,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, 20]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,1 == 255,0,0,255; + @assert pixel 98,48 == 0,255,0,255; + @assert pixel 1,48 == 255,0,0,255; - name: 2d.path.roundrect.2.radii.2.dompoint desc: Verify that when two radii are given to roundRect(), the second radius, specified as a DOMPoint, applies to the top-right and bottom-left corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, new DOMPoint(40, 20)]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, new DOMPoint(40, 20)]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // top-right corner - @assert pixel 79,1 == 255,0,0,255; - @assert pixel 58,1 == 0,255,0,255; - @assert pixel 98,10 == 255,0,0,255; - @assert pixel 98,21 == 0,255,0,255; + // top-right corner + @assert pixel 79,1 == 255,0,0,255; + @assert pixel 58,1 == 0,255,0,255; + @assert pixel 98,10 == 255,0,0,255; + @assert pixel 98,21 == 0,255,0,255; - // bottom-left corner - @assert pixel 20,48 == 255,0,0,255; - @assert pixel 41,48 == 0,255,0,255; - @assert pixel 1,39 == 255,0,0,255; - @assert pixel 1,28 == 0,255,0,255; + // bottom-left corner + @assert pixel 20,48 == 255,0,0,255; + @assert pixel 41,48 == 0,255,0,255; + @assert pixel 1,39 == 255,0,0,255; + @assert pixel 1,28 == 0,255,0,255; - // other corners - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + // other corners + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; - name: 2d.path.roundrect.2.radii.2.dompointinit desc: Verify that when two radii are given to roundRect(), the second radius, specified as a DOMPointInit, applies to the top-right and bottom-left corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [0, {x: 40, y: 20}]); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [0, {x: 40, y: 20}]); + ctx.fillStyle = '#0f0'; + ctx.fill(); - // top-right corner - @assert pixel 79,1 == 255,0,0,255; - @assert pixel 58,1 == 0,255,0,255; - @assert pixel 98,10 == 255,0,0,255; - @assert pixel 98,21 == 0,255,0,255; + // top-right corner + @assert pixel 79,1 == 255,0,0,255; + @assert pixel 58,1 == 0,255,0,255; + @assert pixel 98,10 == 255,0,0,255; + @assert pixel 98,21 == 0,255,0,255; - // bottom-left corner - @assert pixel 20,48 == 255,0,0,255; - @assert pixel 41,48 == 0,255,0,255; - @assert pixel 1,39 == 255,0,0,255; - @assert pixel 1,28 == 0,255,0,255; + // bottom-left corner + @assert pixel 20,48 == 255,0,0,255; + @assert pixel 41,48 == 0,255,0,255; + @assert pixel 1,39 == 255,0,0,255; + @assert pixel 1,28 == 0,255,0,255; - // other corners - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + // other corners + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; - name: 2d.path.roundrect.1.radius.double desc: Verify that when one radius is given to roundRect(), specified as a double, it applies to all corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [20]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 1,1 == 255,0,0,255; - @assert pixel 98,1 == 255,0,0,255; - @assert pixel 98,48 == 255,0,0,255; - @assert pixel 1,48 == 255,0,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [20]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 1,1 == 255,0,0,255; + @assert pixel 98,1 == 255,0,0,255; + @assert pixel 98,48 == 255,0,0,255; + @assert pixel 1,48 == 255,0,0,255; - name: 2d.path.roundrect.1.radius.double.single.argument desc: Verify that when one radius is given to roundRect() as a non-array argument, specified as a double, it applies to all corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, 20); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 1,1 == 255,0,0,255; - @assert pixel 98,1 == 255,0,0,255; - @assert pixel 98,48 == 255,0,0,255; - @assert pixel 1,48 == 255,0,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, 20); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 1,1 == 255,0,0,255; + @assert pixel 98,1 == 255,0,0,255; + @assert pixel 98,48 == 255,0,0,255; + @assert pixel 1,48 == 255,0,0,255; - name: 2d.path.roundrect.1.radius.dompoint desc: Verify that when one radius is given to roundRect(), specified as a DOMPoint, it applies to all corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20)]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - @assert pixel 20,1 == 255,0,0,255; - @assert pixel 41,1 == 0,255,0,255; - @assert pixel 1,10 == 255,0,0,255; - @assert pixel 1,21 == 0,255,0,255; - - // top-right corner - @assert pixel 79,1 == 255,0,0,255; - @assert pixel 58,1 == 0,255,0,255; - @assert pixel 98,10 == 255,0,0,255; - @assert pixel 98,21 == 0,255,0,255; - - // bottom-right corner - @assert pixel 79,48 == 255,0,0,255; - @assert pixel 58,48 == 0,255,0,255; - @assert pixel 98,39 == 255,0,0,255; - @assert pixel 98,28 == 0,255,0,255; - - // bottom-left corner - @assert pixel 20,48 == 255,0,0,255; - @assert pixel 41,48 == 0,255,0,255; - @assert pixel 1,39 == 255,0,0,255; - @assert pixel 1,28 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [new DOMPoint(40, 20)]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + + // top-left corner + @assert pixel 20,1 == 255,0,0,255; + @assert pixel 41,1 == 0,255,0,255; + @assert pixel 1,10 == 255,0,0,255; + @assert pixel 1,21 == 0,255,0,255; + + // top-right corner + @assert pixel 79,1 == 255,0,0,255; + @assert pixel 58,1 == 0,255,0,255; + @assert pixel 98,10 == 255,0,0,255; + @assert pixel 98,21 == 0,255,0,255; + + // bottom-right corner + @assert pixel 79,48 == 255,0,0,255; + @assert pixel 58,48 == 0,255,0,255; + @assert pixel 98,39 == 255,0,0,255; + @assert pixel 98,28 == 0,255,0,255; + + // bottom-left corner + @assert pixel 20,48 == 255,0,0,255; + @assert pixel 41,48 == 0,255,0,255; + @assert pixel 1,39 == 255,0,0,255; + @assert pixel 1,28 == 0,255,0,255; - name: 2d.path.roundrect.1.radius.dompoint.single argument desc: Verify that when one radius is given to roundRect() as a non-array argument, specified as a DOMPoint, it applies to all corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, new DOMPoint(40, 20)); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - @assert pixel 20,1 == 255,0,0,255; - @assert pixel 41,1 == 0,255,0,255; - @assert pixel 1,10 == 255,0,0,255; - @assert pixel 1,21 == 0,255,0,255; - - // top-right corner - @assert pixel 79,1 == 255,0,0,255; - @assert pixel 58,1 == 0,255,0,255; - @assert pixel 98,10 == 255,0,0,255; - @assert pixel 98,21 == 0,255,0,255; - - // bottom-right corner - @assert pixel 79,48 == 255,0,0,255; - @assert pixel 58,48 == 0,255,0,255; - @assert pixel 98,39 == 255,0,0,255; - @assert pixel 98,28 == 0,255,0,255; - - // bottom-left corner - @assert pixel 20,48 == 255,0,0,255; - @assert pixel 41,48 == 0,255,0,255; - @assert pixel 1,39 == 255,0,0,255; - @assert pixel 1,28 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, new DOMPoint(40, 20)); + ctx.fillStyle = '#0f0'; + ctx.fill(); + + // top-left corner + @assert pixel 20,1 == 255,0,0,255; + @assert pixel 41,1 == 0,255,0,255; + @assert pixel 1,10 == 255,0,0,255; + @assert pixel 1,21 == 0,255,0,255; + + // top-right corner + @assert pixel 79,1 == 255,0,0,255; + @assert pixel 58,1 == 0,255,0,255; + @assert pixel 98,10 == 255,0,0,255; + @assert pixel 98,21 == 0,255,0,255; + + // bottom-right corner + @assert pixel 79,48 == 255,0,0,255; + @assert pixel 58,48 == 0,255,0,255; + @assert pixel 98,39 == 255,0,0,255; + @assert pixel 98,28 == 0,255,0,255; + + // bottom-left corner + @assert pixel 20,48 == 255,0,0,255; + @assert pixel 41,48 == 0,255,0,255; + @assert pixel 1,39 == 255,0,0,255; + @assert pixel 1,28 == 0,255,0,255; - name: 2d.path.roundrect.1.radius.dompointinit desc: Verify that when one radius is given to roundRect(), specified as a DOMPointInit, applies to all corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [{x: 40, y: 20}]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - @assert pixel 20,1 == 255,0,0,255; - @assert pixel 41,1 == 0,255,0,255; - @assert pixel 1,10 == 255,0,0,255; - @assert pixel 1,21 == 0,255,0,255; - - // top-right corner - @assert pixel 79,1 == 255,0,0,255; - @assert pixel 58,1 == 0,255,0,255; - @assert pixel 98,10 == 255,0,0,255; - @assert pixel 98,21 == 0,255,0,255; - - // bottom-right corner - @assert pixel 79,48 == 255,0,0,255; - @assert pixel 58,48 == 0,255,0,255; - @assert pixel 98,39 == 255,0,0,255; - @assert pixel 98,28 == 0,255,0,255; - - // bottom-left corner - @assert pixel 20,48 == 255,0,0,255; - @assert pixel 41,48 == 0,255,0,255; - @assert pixel 1,39 == 255,0,0,255; - @assert pixel 1,28 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [{x: 40, y: 20}]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + + // top-left corner + @assert pixel 20,1 == 255,0,0,255; + @assert pixel 41,1 == 0,255,0,255; + @assert pixel 1,10 == 255,0,0,255; + @assert pixel 1,21 == 0,255,0,255; + + // top-right corner + @assert pixel 79,1 == 255,0,0,255; + @assert pixel 58,1 == 0,255,0,255; + @assert pixel 98,10 == 255,0,0,255; + @assert pixel 98,21 == 0,255,0,255; + + // bottom-right corner + @assert pixel 79,48 == 255,0,0,255; + @assert pixel 58,48 == 0,255,0,255; + @assert pixel 98,39 == 255,0,0,255; + @assert pixel 98,28 == 0,255,0,255; + + // bottom-left corner + @assert pixel 20,48 == 255,0,0,255; + @assert pixel 41,48 == 0,255,0,255; + @assert pixel 1,39 == 255,0,0,255; + @assert pixel 1,28 == 0,255,0,255; - name: 2d.path.roundrect.1.radius.dompointinit.single.argument desc: Verify that when one radius is given to roundRect() as a non-array argument, specified as a DOMPointInit, applies to all corners. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, {x: 40, y: 20}); - ctx.fillStyle = '#0f0'; - ctx.fill(); - - // top-left corner - @assert pixel 20,1 == 255,0,0,255; - @assert pixel 41,1 == 0,255,0,255; - @assert pixel 1,10 == 255,0,0,255; - @assert pixel 1,21 == 0,255,0,255; - - // top-right corner - @assert pixel 79,1 == 255,0,0,255; - @assert pixel 58,1 == 0,255,0,255; - @assert pixel 98,10 == 255,0,0,255; - @assert pixel 98,21 == 0,255,0,255; - - // bottom-right corner - @assert pixel 79,48 == 255,0,0,255; - @assert pixel 58,48 == 0,255,0,255; - @assert pixel 98,39 == 255,0,0,255; - @assert pixel 98,28 == 0,255,0,255; - - // bottom-left corner - @assert pixel 20,48 == 255,0,0,255; - @assert pixel 41,48 == 0,255,0,255; - @assert pixel 1,39 == 255,0,0,255; - @assert pixel 1,28 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, {x: 40, y: 20}); + ctx.fillStyle = '#0f0'; + ctx.fill(); + + // top-left corner + @assert pixel 20,1 == 255,0,0,255; + @assert pixel 41,1 == 0,255,0,255; + @assert pixel 1,10 == 255,0,0,255; + @assert pixel 1,21 == 0,255,0,255; + + // top-right corner + @assert pixel 79,1 == 255,0,0,255; + @assert pixel 58,1 == 0,255,0,255; + @assert pixel 98,10 == 255,0,0,255; + @assert pixel 98,21 == 0,255,0,255; + + // bottom-right corner + @assert pixel 79,48 == 255,0,0,255; + @assert pixel 58,48 == 0,255,0,255; + @assert pixel 98,39 == 255,0,0,255; + @assert pixel 98,28 == 0,255,0,255; + + // bottom-left corner + @assert pixel 20,48 == 255,0,0,255; + @assert pixel 41,48 == 0,255,0,255; + @assert pixel 1,39 == 255,0,0,255; + @assert pixel 1,28 == 0,255,0,255; - name: 2d.path.roundrect.radius.intersecting.1 desc: Check that roundRects with intersecting corner arcs are rendered correctly. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [40, 40, 40, 40]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 2,25 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 97,25 == 0,255,0,255; - @assert pixel 1,1 == 255,0,0,255; - @assert pixel 98,1 == 255,0,0,255; - @assert pixel 1,48 == 255,0,0,255; - @assert pixel 98,48 == 255,0,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [40, 40, 40, 40]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 2,25 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 97,25 == 0,255,0,255; + @assert pixel 1,1 == 255,0,0,255; + @assert pixel 98,1 == 255,0,0,255; + @assert pixel 1,48 == 255,0,0,255; + @assert pixel 98,48 == 255,0,0,255; - name: 2d.path.roundrect.radius.intersecting.2 desc: Check that roundRects with intersecting corner arcs are rendered correctly. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(0, 0, 100, 50, [1000, 1000, 1000, 1000]); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 2,25 == 0,255,0,255; - @assert pixel 50,1 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 50,48 == 0,255,0,255; - @assert pixel 97,25 == 0,255,0,255; - @assert pixel 1,1 == 255,0,0,255; - @assert pixel 98,1 == 255,0,0,255; - @assert pixel 1,48 == 255,0,0,255; - @assert pixel 98,48 == 255,0,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(0, 0, 100, 50, [1000, 1000, 1000, 1000]); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 2,25 == 0,255,0,255; + @assert pixel 50,1 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,48 == 0,255,0,255; + @assert pixel 97,25 == 0,255,0,255; + @assert pixel 1,1 == 255,0,0,255; + @assert pixel 98,1 == 255,0,0,255; + @assert pixel 1,48 == 255,0,0,255; + @assert pixel 98,48 == 255,0,0,255; - name: 2d.path.roundrect.radius.none desc: Check that roundRect throws an RangeError if radii is an empty array. code: | - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 100, 50, [])}); + assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 100, 50, [])}); - name: 2d.path.roundrect.radius.noargument desc: Check that roundRect draws a rectangle when no radii are provided. code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.roundRect(10, 10, 80, 30); - ctx.fillStyle = '#0f0'; - ctx.fill(); - // upper left corner (10, 10) - @assert pixel 10,9 == 255,0,0,255; - @assert pixel 9,10 == 255,0,0,255; - @assert pixel 10,10 == 0,255,0,255; - - // upper right corner (89, 10) - @assert pixel 90,10 == 255,0,0,255; - @assert pixel 89,9 == 255,0,0,255; - @assert pixel 89,10 == 0,255,0,255; - - // lower right corner (89, 39) - @assert pixel 89,40 == 255,0,0,255; - @assert pixel 90,39 == 255,0,0,255; - @assert pixel 89,39 == 0,255,0,255; - - // lower left corner (10, 30) - @assert pixel 9,39 == 255,0,0,255; - @assert pixel 10,40 == 255,0,0,255; - @assert pixel 10,39 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.roundRect(10, 10, 80, 30); + ctx.fillStyle = '#0f0'; + ctx.fill(); + // upper left corner (10, 10) + @assert pixel 10,9 == 255,0,0,255; + @assert pixel 9,10 == 255,0,0,255; + @assert pixel 10,10 == 0,255,0,255; + + // upper right corner (89, 10) + @assert pixel 90,10 == 255,0,0,255; + @assert pixel 89,9 == 255,0,0,255; + @assert pixel 89,10 == 0,255,0,255; + + // lower right corner (89, 39) + @assert pixel 89,40 == 255,0,0,255; + @assert pixel 90,39 == 255,0,0,255; + @assert pixel 89,39 == 0,255,0,255; + + // lower left corner (10, 30) + @assert pixel 9,39 == 255,0,0,255; + @assert pixel 10,40 == 255,0,0,255; + @assert pixel 10,39 == 0,255,0,255; - name: 2d.path.roundrect.radius.toomany desc: Check that roundRect throws an IndeSizeError if radii has more than four items. code: | - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 100, 50, [0, 0, 0, 0, 0])}); + assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 100, 50, [0, 0, 0, 0, 0])}); - name: 2d.path.roundrect.radius.negative desc: roundRect() with negative radius throws an exception code: | - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [-1])}); - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [1, -1])}); - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [new DOMPoint(-1, 1), 1])}); - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [new DOMPoint(1, -1)])}); - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [{x: -1, y: 1}, 1])}); - assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [{x: 1, y: -1}])}); + assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [-1])}); + assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [1, -1])}); + assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [new DOMPoint(-1, 1), 1])}); + assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [new DOMPoint(1, -1)])}); + assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [{x: -1, y: 1}, 1])}); + assert_throws_js(RangeError, () => { ctx.roundRect(0, 0, 0, 0, [{x: 1, y: -1}])}); - name: 2d.path.ellipse.basics desc: Verify canvas throws error when drawing ellipse with negative radii. testing: - - 2d.ellipse.basics + - 2d.ellipse.basics code: | - ctx.ellipse(10, 10, 10, 5, 0, 0, 1, false); - ctx.ellipse(10, 10, 10, 0, 0, 0, 1, false); - ctx.ellipse(10, 10, -0, 5, 0, 0, 1, false); - @assert throws INDEX_SIZE_ERR ctx.ellipse(10, 10, -2, 5, 0, 0, 1, false); - @assert throws INDEX_SIZE_ERR ctx.ellipse(10, 10, 0, -1.5, 0, 0, 1, false); - @assert throws INDEX_SIZE_ERR ctx.ellipse(10, 10, -2, -5, 0, 0, 1, false); - ctx.ellipse(80, 0, 10, 4294967277, Math.PI / -84, -Math.PI / 2147483436, false); + ctx.ellipse(10, 10, 10, 5, 0, 0, 1, false); + ctx.ellipse(10, 10, 10, 0, 0, 0, 1, false); + ctx.ellipse(10, 10, -0, 5, 0, 0, 1, false); + @assert throws INDEX_SIZE_ERR ctx.ellipse(10, 10, -2, 5, 0, 0, 1, false); + @assert throws INDEX_SIZE_ERR ctx.ellipse(10, 10, 0, -1.5, 0, 0, 1, false); + @assert throws INDEX_SIZE_ERR ctx.ellipse(10, 10, -2, -5, 0, 0, 1, false); + ctx.ellipse(80, 0, 10, 4294967277, Math.PI / -84, -Math.PI / 2147483436, false); - name: 2d.path.fill.overlap testing: - - 2d.path.fill.basic + - 2d.path.fill.basic code: | - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; - ctx.rect(0, 0, 100, 50); - ctx.closePath(); - ctx.rect(10, 10, 80, 30); - ctx.fill(); + ctx.fillStyle = 'rgba(0, 255, 0, 0.5)'; + ctx.rect(0, 0, 100, 50); + ctx.closePath(); + ctx.rect(10, 10, 80, 30); + ctx.fill(); - @assert pixel 50,25 ==~ 0,127,0,255 +/- 1; + @assert pixel 50,25 ==~ 0,127,0,255 +/- 1; expected: | - size 100 50 - cr.set_source_rgb(0, 0.5, 0) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + cr.set_source_rgb(0, 0.5, 0) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.path.fill.winding.add testing: - - 2d.path.fill.basic + - 2d.path.fill.basic code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.moveTo(-10, -10); - ctx.lineTo(110, -10); - ctx.lineTo(110, 60); - ctx.lineTo(-10, 60); - ctx.lineTo(-10, -10); - ctx.lineTo(0, 0); - ctx.lineTo(100, 0); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fill(); + ctx.fillStyle = '#0f0'; + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.lineTo(0, 0); + ctx.lineTo(100, 0); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.fill.winding.subtract.1 testing: - - 2d.path.fill.basic + - 2d.path.fill.basic code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.moveTo(-10, -10); - ctx.lineTo(110, -10); - ctx.lineTo(110, 60); - ctx.lineTo(-10, 60); - ctx.lineTo(-10, -10); - ctx.lineTo(0, 0); - ctx.lineTo(0, 50); - ctx.lineTo(100, 50); - ctx.lineTo(100, 0); - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.lineTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.fill.winding.subtract.2 testing: - - 2d.path.fill.basic + - 2d.path.fill.basic code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.moveTo(-10, -10); - ctx.lineTo(110, -10); - ctx.lineTo(110, 60); - ctx.lineTo(-10, 60); - ctx.moveTo(0, 0); - ctx.lineTo(0, 50); - ctx.lineTo(100, 50); - ctx.lineTo(100, 0); - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.moveTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.fill.winding.subtract.3 testing: - - 2d.path.fill.basic + - 2d.path.fill.basic code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.moveTo(-10, -10); - ctx.lineTo(110, -10); - ctx.lineTo(110, 60); - ctx.lineTo(-10, 60); - ctx.lineTo(-10, -10); - ctx.lineTo(-20, -20); - ctx.lineTo(120, -20); - ctx.lineTo(120, 70); - ctx.lineTo(-20, 70); - ctx.lineTo(-20, -20); - ctx.lineTo(0, 0); - ctx.lineTo(0, 50); - ctx.lineTo(100, 50); - ctx.lineTo(100, 0); - ctx.fill(); + ctx.fillStyle = '#0f0'; + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.lineTo(-20, -20); + ctx.lineTo(120, -20); + ctx.lineTo(120, 70); + ctx.lineTo(-20, 70); + ctx.lineTo(-20, -20); + ctx.lineTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.fill.closed.basic testing: - - 2d.path.fill.closed + - 2d.path.fill.closed code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - ctx.lineTo(100, 50); - ctx.lineTo(0, 50); - ctx.fill(); + ctx.fillStyle = '#0f0'; + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.lineTo(100, 50); + ctx.lineTo(0, 50); + ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.fill.closed.unaffected testing: - - 2d.path.fill.closed + - 2d.path.fill.closed code: | - ctx.fillStyle = '#00f'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#00f'; + ctx.fillRect(0, 0, 100, 50); - ctx.moveTo(0, 0); - ctx.lineTo(100, 0); - ctx.lineTo(100, 50); - ctx.fillStyle = '#f00'; - ctx.fill(); - ctx.lineTo(0, 50); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.moveTo(0, 0); + ctx.lineTo(100, 0); + ctx.lineTo(100, 50); + ctx.fillStyle = '#f00'; + ctx.fill(); + ctx.lineTo(0, 50); + ctx.fillStyle = '#0f0'; + ctx.fill(); - @assert pixel 90,10 == 0,255,0,255; - @assert pixel 10,40 == 0,255,0,255; + @assert pixel 90,10 == 0,255,0,255; + @assert pixel 10,40 == 0,255,0,255; expected: green - name: 2d.path.stroke.overlap desc: Stroked subpaths are combined before being drawn testing: - - 2d.path.stroke.basic + - 2d.path.stroke.basic code: | - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = 'rgba(0, 255, 0, 0.5)'; - ctx.lineWidth = 50; - ctx.moveTo(0, 20); - ctx.lineTo(100, 20); - ctx.moveTo(0, 30); - ctx.lineTo(100, 30); - ctx.stroke(); + ctx.strokeStyle = 'rgba(0, 255, 0, 0.5)'; + ctx.lineWidth = 50; + ctx.moveTo(0, 20); + ctx.lineTo(100, 20); + ctx.moveTo(0, 30); + ctx.lineTo(100, 30); + ctx.stroke(); - @assert pixel 50,25 ==~ 0,127,0,255 +/- 1; + @assert pixel 50,25 ==~ 0,127,0,255 +/- 1; expected: | - size 100 50 - cr.set_source_rgb(0, 0.5, 0) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + cr.set_source_rgb(0, 0.5, 0) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.path.stroke.union desc: Strokes in opposite directions are unioned, not subtracted testing: - - 2d.path.stroke.basic + - 2d.path.stroke.basic code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#0f0'; - ctx.lineWidth = 40; - ctx.moveTo(0, 10); - ctx.lineTo(100, 10); - ctx.moveTo(100, 40); - ctx.lineTo(0, 40); - ctx.stroke(); + ctx.strokeStyle = '#0f0'; + ctx.lineWidth = 40; + ctx.moveTo(0, 10); + ctx.lineTo(100, 10); + ctx.moveTo(100, 40); + ctx.lineTo(0, 40); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.stroke.unaffected desc: Stroking does not start a new path or subpath testing: - - 2d.path.stroke.basic + - 2d.path.stroke.basic code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.lineWidth = 50; - ctx.moveTo(-100, 25); - ctx.lineTo(-100, -100); - ctx.lineTo(200, -100); - ctx.lineTo(200, 25); - ctx.strokeStyle = '#f00'; - ctx.stroke(); + ctx.lineWidth = 50; + ctx.moveTo(-100, 25); + ctx.lineTo(-100, -100); + ctx.lineTo(200, -100); + ctx.lineTo(200, 25); + ctx.strokeStyle = '#f00'; + ctx.stroke(); - ctx.closePath(); - ctx.strokeStyle = '#0f0'; - ctx.stroke(); + ctx.closePath(); + ctx.strokeStyle = '#0f0'; + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.stroke.scale1 desc: Stroke line widths are scaled by the current transformation matrix testing: - - 2d.path.transformation - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.beginPath(); - ctx.rect(25, 12.5, 50, 25); - ctx.save(); - ctx.scale(50, 25); - ctx.strokeStyle = '#0f0'; - ctx.stroke(); - ctx.restore(); - - ctx.beginPath(); - ctx.rect(-25, -12.5, 150, 75); - ctx.save(); - ctx.scale(50, 25); - ctx.strokeStyle = '#f00'; - ctx.stroke(); - ctx.restore(); - - @assert pixel 0,0 == 0,255,0,255; - @assert pixel 50,0 == 0,255,0,255; - @assert pixel 99,0 == 0,255,0,255; - @assert pixel 0,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 99,25 == 0,255,0,255; - @assert pixel 0,49 == 0,255,0,255; - @assert pixel 50,49 == 0,255,0,255; - @assert pixel 99,49 == 0,255,0,255; + - 2d.path.transformation + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.beginPath(); + ctx.rect(25, 12.5, 50, 25); + ctx.save(); + ctx.scale(50, 25); + ctx.strokeStyle = '#0f0'; + ctx.stroke(); + ctx.restore(); + + ctx.beginPath(); + ctx.rect(-25, -12.5, 150, 75); + ctx.save(); + ctx.scale(50, 25); + ctx.strokeStyle = '#f00'; + ctx.stroke(); + ctx.restore(); + + @assert pixel 0,0 == 0,255,0,255; + @assert pixel 50,0 == 0,255,0,255; + @assert pixel 99,0 == 0,255,0,255; + @assert pixel 0,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 99,25 == 0,255,0,255; + @assert pixel 0,49 == 0,255,0,255; + @assert pixel 50,49 == 0,255,0,255; + @assert pixel 99,49 == 0,255,0,255; expected: green - name: 2d.path.stroke.scale2 desc: Stroke line widths are scaled by the current transformation matrix testing: - - 2d.path.transformation - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.beginPath(); - ctx.rect(25, 12.5, 50, 25); - ctx.save(); - ctx.rotate(Math.PI/2); - ctx.scale(25, 50); - ctx.strokeStyle = '#0f0'; - ctx.stroke(); - ctx.restore(); - - ctx.beginPath(); - ctx.rect(-25, -12.5, 150, 75); - ctx.save(); - ctx.rotate(Math.PI/2); - ctx.scale(25, 50); - ctx.strokeStyle = '#f00'; - ctx.stroke(); - ctx.restore(); - - @assert pixel 0,0 == 0,255,0,255; - @assert pixel 50,0 == 0,255,0,255; - @assert pixel 99,0 == 0,255,0,255; - @assert pixel 0,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 99,25 == 0,255,0,255; - @assert pixel 0,49 == 0,255,0,255; - @assert pixel 50,49 == 0,255,0,255; - @assert pixel 99,49 == 0,255,0,255; + - 2d.path.transformation + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.beginPath(); + ctx.rect(25, 12.5, 50, 25); + ctx.save(); + ctx.rotate(Math.PI/2); + ctx.scale(25, 50); + ctx.strokeStyle = '#0f0'; + ctx.stroke(); + ctx.restore(); + + ctx.beginPath(); + ctx.rect(-25, -12.5, 150, 75); + ctx.save(); + ctx.rotate(Math.PI/2); + ctx.scale(25, 50); + ctx.strokeStyle = '#f00'; + ctx.stroke(); + ctx.restore(); + + @assert pixel 0,0 == 0,255,0,255; + @assert pixel 50,0 == 0,255,0,255; + @assert pixel 99,0 == 0,255,0,255; + @assert pixel 0,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 99,25 == 0,255,0,255; + @assert pixel 0,49 == 0,255,0,255; + @assert pixel 50,49 == 0,255,0,255; + @assert pixel 99,49 == 0,255,0,255; expected: green - name: 2d.path.stroke.skew desc: Strokes lines are skewed by the current transformation matrix testing: - - 2d.path.transformation - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.save(); - ctx.beginPath(); - ctx.moveTo(49, -50); - ctx.lineTo(201, -50); - ctx.rotate(Math.PI/4); - ctx.scale(1, 283); - ctx.strokeStyle = '#0f0'; - ctx.stroke(); - ctx.restore(); - - ctx.save(); - ctx.beginPath(); - ctx.translate(-150, 0); - ctx.moveTo(49, -50); - ctx.lineTo(199, -50); - ctx.rotate(Math.PI/4); - ctx.scale(1, 142); - ctx.strokeStyle = '#f00'; - ctx.stroke(); - ctx.restore(); - - ctx.save(); - ctx.beginPath(); - ctx.translate(-150, 0); - ctx.moveTo(49, -50); - ctx.lineTo(199, -50); - ctx.rotate(Math.PI/4); - ctx.scale(1, 142); - ctx.strokeStyle = '#f00'; - ctx.stroke(); - ctx.restore(); - - @assert pixel 0,0 == 0,255,0,255; - @assert pixel 50,0 == 0,255,0,255; - @assert pixel 99,0 == 0,255,0,255; - @assert pixel 0,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 99,25 == 0,255,0,255; - @assert pixel 0,49 == 0,255,0,255; - @assert pixel 50,49 == 0,255,0,255; - @assert pixel 99,49 == 0,255,0,255; + - 2d.path.transformation + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.save(); + ctx.beginPath(); + ctx.moveTo(49, -50); + ctx.lineTo(201, -50); + ctx.rotate(Math.PI/4); + ctx.scale(1, 283); + ctx.strokeStyle = '#0f0'; + ctx.stroke(); + ctx.restore(); + + ctx.save(); + ctx.beginPath(); + ctx.translate(-150, 0); + ctx.moveTo(49, -50); + ctx.lineTo(199, -50); + ctx.rotate(Math.PI/4); + ctx.scale(1, 142); + ctx.strokeStyle = '#f00'; + ctx.stroke(); + ctx.restore(); + + ctx.save(); + ctx.beginPath(); + ctx.translate(-150, 0); + ctx.moveTo(49, -50); + ctx.lineTo(199, -50); + ctx.rotate(Math.PI/4); + ctx.scale(1, 142); + ctx.strokeStyle = '#f00'; + ctx.stroke(); + ctx.restore(); + + @assert pixel 0,0 == 0,255,0,255; + @assert pixel 50,0 == 0,255,0,255; + @assert pixel 99,0 == 0,255,0,255; + @assert pixel 0,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 99,25 == 0,255,0,255; + @assert pixel 0,49 == 0,255,0,255; + @assert pixel 50,49 == 0,255,0,255; + @assert pixel 99,49 == 0,255,0,255; expected: green - name: 2d.path.stroke.empty desc: Empty subpaths are not stroked testing: - - 2d.path.stroke.empty + - 2d.path.stroke.empty code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - ctx.lineJoin = 'round'; + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; - ctx.beginPath(); - ctx.moveTo(40, 25); - ctx.moveTo(60, 25); - ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(40, 25); + ctx.moveTo(60, 25); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.stroke.prune.line desc: Zero-length line segments from lineTo are removed before stroking testing: - - 2d.path.stroke.prune + - 2d.path.stroke.prune code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - ctx.lineJoin = 'round'; + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.lineTo(50, 25); - ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.lineTo(50, 25); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo expected: green - name: 2d.path.stroke.prune.closed desc: Zero-length line segments from closed paths are removed before stroking testing: - - 2d.path.stroke.prune + - 2d.path.stroke.prune code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - ctx.lineJoin = 'round'; + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.lineTo(50, 25); - ctx.closePath(); - ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.lineTo(50, 25); + ctx.closePath(); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo expected: green - name: 2d.path.stroke.prune.curve - desc: Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed - before stroking + desc: + Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed + before stroking testing: - - 2d.path.stroke.prune + - 2d.path.stroke.prune code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - ctx.lineJoin = 'round'; + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.quadraticCurveTo(50, 25, 50, 25); - ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.quadraticCurveTo(50, 25, 50, 25); + ctx.stroke(); - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.bezierCurveTo(50, 25, 50, 25, 50, 25); - ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.bezierCurveTo(50, 25, 50, 25, 50, 25); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo expected: green - name: 2d.path.stroke.prune.arc desc: Zero-length line segments from arcTo and arc are removed before stroking testing: - - 2d.path.stroke.prune + - 2d.path.stroke.prune code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - ctx.lineJoin = 'round'; + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; - ctx.beginPath(); - ctx.moveTo(50, 25); - ctx.arcTo(50, 25, 150, 25, 10); - ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(50, 25); + ctx.arcTo(50, 25, 150, 25, 10); + ctx.stroke(); - ctx.beginPath(); - ctx.moveTo(60, 25); - ctx.arc(50, 25, 10, 0, 0, false); - ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(60, 25); + ctx.arc(50, 25, 10, 0, 0, false); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo expected: green - name: 2d.path.stroke.prune.rect desc: Zero-length line segments from rect and strokeRect are removed before stroking testing: - - 2d.path.stroke.prune + - 2d.path.stroke.prune code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 100; - ctx.lineCap = 'round'; - ctx.lineJoin = 'round'; + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 100; + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; - ctx.beginPath(); - ctx.rect(50, 25, 0, 0); - ctx.stroke(); + ctx.beginPath(); + ctx.rect(50, 25, 0, 0); + ctx.stroke(); - ctx.strokeRect(50, 25, 0, 0); + ctx.strokeRect(50, 25, 0, 0); - @assert pixel 50,25 == 0,255,0,255; @moz-todo + @assert pixel 50,25 == 0,255,0,255; @moz-todo expected: green - name: 2d.path.stroke.prune.corner desc: Zero-length line segments are removed before stroking with miters testing: - - 2d.path.stroke.prune + - 2d.path.stroke.prune code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 400; - ctx.lineJoin = 'miter'; - ctx.miterLimit = 1.4; + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 400; + ctx.lineJoin = 'miter'; + ctx.miterLimit = 1.4; - ctx.beginPath(); - ctx.moveTo(-1000, 200); - ctx.lineTo(-100, 200); - ctx.lineTo(-100, 200); - ctx.lineTo(-100, 200); - ctx.lineTo(-100, 1000); - ctx.stroke(); + ctx.beginPath(); + ctx.moveTo(-1000, 200); + ctx.lineTo(-100, 200); + ctx.lineTo(-100, 200); + ctx.lineTo(-100, 200); + ctx.lineTo(-100, 1000); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - - name: 2d.path.transformation.basic testing: - - 2d.path.transformation + - 2d.path.transformation code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.translate(-100, 0); - ctx.rect(100, 0, 100, 50); - ctx.translate(0, -100); - ctx.fillStyle = '#0f0'; - ctx.fill(); + ctx.translate(-100, 0); + ctx.rect(100, 0, 100, 50); + ctx.translate(0, -100); + ctx.fillStyle = '#0f0'; + ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.transformation.multiple # TODO: change this name desc: Transformations are applied while building paths, not when drawing testing: - - 2d.path.transformation + - 2d.path.transformation code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.translate(-100, 0); - ctx.rect(0, 0, 100, 50); - ctx.fill(); - ctx.translate(100, 0); - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.translate(-100, 0); + ctx.rect(0, 0, 100, 50); + ctx.fill(); + ctx.translate(100, 0); + ctx.fill(); - ctx.beginPath(); - ctx.strokeStyle = '#f00'; - ctx.lineWidth = 50; - ctx.translate(0, -50); - ctx.moveTo(0, 25); - ctx.lineTo(100, 25); - ctx.stroke(); - ctx.translate(0, 50); - ctx.stroke(); + ctx.beginPath(); + ctx.strokeStyle = '#f00'; + ctx.lineWidth = 50; + ctx.translate(0, -50); + ctx.moveTo(0, 25); + ctx.lineTo(100, 25); + ctx.stroke(); + ctx.translate(0, 50); + ctx.stroke(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.transformation.changing desc: Transformations are applied while building paths, not when drawing testing: - - 2d.path.transformation + - 2d.path.transformation code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.moveTo(0, 0); - ctx.translate(100, 0); - ctx.lineTo(0, 0); - ctx.translate(0, 50); - ctx.lineTo(0, 0); - ctx.translate(-100, 0); - ctx.lineTo(0, 0); - ctx.translate(1000, 1000); - ctx.rotate(Math.PI/2); - ctx.scale(0.1, 0.1); - ctx.fill(); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.moveTo(0, 0); + ctx.translate(100, 0); + ctx.lineTo(0, 0); + ctx.translate(0, 50); + ctx.lineTo(0, 0); + ctx.translate(-100, 0); + ctx.lineTo(0, 0); + ctx.translate(1000, 1000); + ctx.rotate(Math.PI/2); + ctx.scale(0.1, 0.1); + ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - - name: 2d.path.clip.empty testing: - - 2d.path.clip.basic + - 2d.path.clip.basic code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.clip(); + ctx.beginPath(); + ctx.clip(); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.clip.basic.1 testing: - - 2d.path.clip.basic + - 2d.path.clip.basic code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.rect(0, 0, 100, 50); - ctx.clip(); + ctx.beginPath(); + ctx.rect(0, 0, 100, 50); + ctx.clip(); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.clip.basic.2 testing: - - 2d.path.clip.basic + - 2d.path.clip.basic code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.rect(-100, 0, 100, 50); - ctx.clip(); + ctx.beginPath(); + ctx.rect(-100, 0, 100, 50); + ctx.clip(); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.clip.intersect testing: - - 2d.path.clip.basic + - 2d.path.clip.basic code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.rect(0, 0, 50, 50); - ctx.clip(); - ctx.beginPath(); - ctx.rect(50, 0, 50, 50) - ctx.clip(); + ctx.beginPath(); + ctx.rect(0, 0, 50, 50); + ctx.clip(); + ctx.beginPath(); + ctx.rect(50, 0, 50, 50) + ctx.clip(); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.clip.winding.1 testing: - - 2d.path.clip.basic + - 2d.path.clip.basic code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.moveTo(-10, -10); - ctx.lineTo(110, -10); - ctx.lineTo(110, 60); - ctx.lineTo(-10, 60); - ctx.lineTo(-10, -10); - ctx.lineTo(0, 0); - ctx.lineTo(0, 50); - ctx.lineTo(100, 50); - ctx.lineTo(100, 0); - ctx.clip(); + ctx.beginPath(); + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.lineTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.clip(); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.clip.winding.2 testing: - - 2d.path.clip.basic + - 2d.path.clip.basic code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.beginPath(); - ctx.moveTo(-10, -10); - ctx.lineTo(110, -10); - ctx.lineTo(110, 60); - ctx.lineTo(-10, 60); - ctx.lineTo(-10, -10); - ctx.clip(); + ctx.beginPath(); + ctx.moveTo(-10, -10); + ctx.lineTo(110, -10); + ctx.lineTo(110, 60); + ctx.lineTo(-10, 60); + ctx.lineTo(-10, -10); + ctx.clip(); - ctx.beginPath(); - ctx.moveTo(0, 0); - ctx.lineTo(0, 50); - ctx.lineTo(100, 50); - ctx.lineTo(100, 0); - ctx.lineTo(0, 0); - ctx.clip(); + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.lineTo(0, 0); + ctx.clip(); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.path.clip.unaffected testing: - - 2d.path.clip.closed + - 2d.path.clip.closed code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; + ctx.fillStyle = '#0f0'; - ctx.beginPath(); - ctx.moveTo(0, 0); - ctx.lineTo(0, 50); - ctx.lineTo(100, 50); - ctx.lineTo(100, 0); - ctx.clip(); + ctx.beginPath(); + ctx.moveTo(0, 0); + ctx.lineTo(0, 50); + ctx.lineTo(100, 50); + ctx.lineTo(100, 0); + ctx.clip(); - ctx.lineTo(0, 0); - ctx.fill(); + ctx.lineTo(0, 0); + ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - - - name: 2d.path.isPointInPath.basic.1 desc: isPointInPath() detects whether the point is inside the path testing: - - 2d.path.isPointInPath + - 2d.path.isPointInPath code: | - ctx.rect(0, 0, 20, 20); - @assert ctx.isPointInPath(10, 10) === true; - @assert ctx.isPointInPath(30, 10) === false; + ctx.rect(0, 0, 20, 20); + @assert ctx.isPointInPath(10, 10) === true; + @assert ctx.isPointInPath(30, 10) === false; - name: 2d.path.isPointInPath.basic.2 desc: isPointInPath() detects whether the point is inside the path testing: - - 2d.path.isPointInPath + - 2d.path.isPointInPath code: | - ctx.rect(20, 0, 20, 20); - @assert ctx.isPointInPath(10, 10) === false; - @assert ctx.isPointInPath(30, 10) === true; + ctx.rect(20, 0, 20, 20); + @assert ctx.isPointInPath(10, 10) === false; + @assert ctx.isPointInPath(30, 10) === true; - name: 2d.path.isPointInPath.edge desc: isPointInPath() counts points on the path as being inside testing: - - 2d.path.isPointInPath.edge - code: | - ctx.rect(0, 0, 20, 20); - @assert ctx.isPointInPath(0, 0) === true; - @assert ctx.isPointInPath(10, 0) === true; - @assert ctx.isPointInPath(20, 0) === true; - @assert ctx.isPointInPath(20, 10) === true; - @assert ctx.isPointInPath(20, 20) === true; - @assert ctx.isPointInPath(10, 20) === true; - @assert ctx.isPointInPath(0, 20) === true; - @assert ctx.isPointInPath(0, 10) === true; - @assert ctx.isPointInPath(10, -0.01) === false; - @assert ctx.isPointInPath(10, 20.01) === false; - @assert ctx.isPointInPath(-0.01, 10) === false; - @assert ctx.isPointInPath(20.01, 10) === false; + - 2d.path.isPointInPath.edge + code: | + ctx.rect(0, 0, 20, 20); + @assert ctx.isPointInPath(0, 0) === true; + @assert ctx.isPointInPath(10, 0) === true; + @assert ctx.isPointInPath(20, 0) === true; + @assert ctx.isPointInPath(20, 10) === true; + @assert ctx.isPointInPath(20, 20) === true; + @assert ctx.isPointInPath(10, 20) === true; + @assert ctx.isPointInPath(0, 20) === true; + @assert ctx.isPointInPath(0, 10) === true; + @assert ctx.isPointInPath(10, -0.01) === false; + @assert ctx.isPointInPath(10, 20.01) === false; + @assert ctx.isPointInPath(-0.01, 10) === false; + @assert ctx.isPointInPath(20.01, 10) === false; - name: 2d.path.isPointInPath.empty desc: isPointInPath() works when there is no path testing: - - 2d.path.isPointInPath + - 2d.path.isPointInPath code: | - @assert ctx.isPointInPath(0, 0) === false; + @assert ctx.isPointInPath(0, 0) === false; - name: 2d.path.isPointInPath.subpath desc: isPointInPath() uses the current path, not just the subpath testing: - - 2d.path.isPointInPath + - 2d.path.isPointInPath code: | - ctx.rect(0, 0, 20, 20); - ctx.beginPath(); - ctx.rect(20, 0, 20, 20); - ctx.closePath(); - ctx.rect(40, 0, 20, 20); - @assert ctx.isPointInPath(10, 10) === false; - @assert ctx.isPointInPath(30, 10) === true; - @assert ctx.isPointInPath(50, 10) === true; + ctx.rect(0, 0, 20, 20); + ctx.beginPath(); + ctx.rect(20, 0, 20, 20); + ctx.closePath(); + ctx.rect(40, 0, 20, 20); + @assert ctx.isPointInPath(10, 10) === false; + @assert ctx.isPointInPath(30, 10) === true; + @assert ctx.isPointInPath(50, 10) === true; - name: 2d.path.isPointInPath.outside desc: isPointInPath() works on paths outside the canvas testing: - - 2d.path.isPointInPath + - 2d.path.isPointInPath code: | - ctx.rect(0, -100, 20, 20); - ctx.rect(20, -10, 20, 20); - @assert ctx.isPointInPath(10, -110) === false; - @assert ctx.isPointInPath(10, -90) === true; - @assert ctx.isPointInPath(10, -70) === false; - @assert ctx.isPointInPath(30, -20) === false; - @assert ctx.isPointInPath(30, 0) === true; - @assert ctx.isPointInPath(30, 20) === false; + ctx.rect(0, -100, 20, 20); + ctx.rect(20, -10, 20, 20); + @assert ctx.isPointInPath(10, -110) === false; + @assert ctx.isPointInPath(10, -90) === true; + @assert ctx.isPointInPath(10, -70) === false; + @assert ctx.isPointInPath(30, -20) === false; + @assert ctx.isPointInPath(30, 0) === true; + @assert ctx.isPointInPath(30, 20) === false; - name: 2d.path.isPointInPath.unclosed desc: isPointInPath() works on unclosed subpaths testing: - - 2d.path.isPointInPath + - 2d.path.isPointInPath code: | - ctx.moveTo(0, 0); - ctx.lineTo(20, 0); - ctx.lineTo(20, 20); - ctx.lineTo(0, 20); - @assert ctx.isPointInPath(10, 10) === true; - @assert ctx.isPointInPath(30, 10) === false; + ctx.moveTo(0, 0); + ctx.lineTo(20, 0); + ctx.lineTo(20, 20); + ctx.lineTo(0, 20); + @assert ctx.isPointInPath(10, 10) === true; + @assert ctx.isPointInPath(30, 10) === false; - name: 2d.path.isPointInPath.arc desc: isPointInPath() works on arcs testing: - - 2d.path.isPointInPath + - 2d.path.isPointInPath code: | - ctx.arc(50, 25, 10, 0, Math.PI, false); - @assert ctx.isPointInPath(50, 10) === false; - @assert ctx.isPointInPath(50, 20) === false; - @assert ctx.isPointInPath(50, 30) === true; - @assert ctx.isPointInPath(50, 40) === false; - @assert ctx.isPointInPath(30, 20) === false; - @assert ctx.isPointInPath(70, 20) === false; - @assert ctx.isPointInPath(30, 30) === false; - @assert ctx.isPointInPath(70, 30) === false; + ctx.arc(50, 25, 10, 0, Math.PI, false); + @assert ctx.isPointInPath(50, 10) === false; + @assert ctx.isPointInPath(50, 20) === false; + @assert ctx.isPointInPath(50, 30) === true; + @assert ctx.isPointInPath(50, 40) === false; + @assert ctx.isPointInPath(30, 20) === false; + @assert ctx.isPointInPath(70, 20) === false; + @assert ctx.isPointInPath(30, 30) === false; + @assert ctx.isPointInPath(70, 30) === false; - name: 2d.path.isPointInPath.bigarc desc: isPointInPath() works on unclosed arcs larger than 2pi - opera: {bug: 320937} + opera: { bug: 320937 } testing: - - 2d.path.isPointInPath + - 2d.path.isPointInPath code: | - ctx.arc(50, 25, 10, 0, 7, false); - @assert ctx.isPointInPath(50, 10) === false; - @assert ctx.isPointInPath(50, 20) === true; - @assert ctx.isPointInPath(50, 30) === true; - @assert ctx.isPointInPath(50, 40) === false; - @assert ctx.isPointInPath(30, 20) === false; - @assert ctx.isPointInPath(70, 20) === false; - @assert ctx.isPointInPath(30, 30) === false; - @assert ctx.isPointInPath(70, 30) === false; + ctx.arc(50, 25, 10, 0, 7, false); + @assert ctx.isPointInPath(50, 10) === false; + @assert ctx.isPointInPath(50, 20) === true; + @assert ctx.isPointInPath(50, 30) === true; + @assert ctx.isPointInPath(50, 40) === false; + @assert ctx.isPointInPath(30, 20) === false; + @assert ctx.isPointInPath(70, 20) === false; + @assert ctx.isPointInPath(30, 30) === false; + @assert ctx.isPointInPath(70, 30) === false; - name: 2d.path.isPointInPath.bezier desc: isPointInPath() works on Bezier curves testing: - - 2d.path.isPointInPath - code: | - ctx.moveTo(25, 25); - ctx.bezierCurveTo(50, -50, 50, 100, 75, 25); - @assert ctx.isPointInPath(25, 20) === false; - @assert ctx.isPointInPath(25, 30) === false; - @assert ctx.isPointInPath(30, 20) === true; - @assert ctx.isPointInPath(30, 30) === false; - @assert ctx.isPointInPath(40, 2) === false; - @assert ctx.isPointInPath(40, 20) === true; - @assert ctx.isPointInPath(40, 30) === false; - @assert ctx.isPointInPath(40, 47) === false; - @assert ctx.isPointInPath(45, 20) === true; - @assert ctx.isPointInPath(45, 30) === false; - @assert ctx.isPointInPath(55, 20) === false; - @assert ctx.isPointInPath(55, 30) === true; - @assert ctx.isPointInPath(60, 2) === false; - @assert ctx.isPointInPath(60, 20) === false; - @assert ctx.isPointInPath(60, 30) === true; - @assert ctx.isPointInPath(60, 47) === false; - @assert ctx.isPointInPath(70, 20) === false; - @assert ctx.isPointInPath(70, 30) === true; - @assert ctx.isPointInPath(75, 20) === false; - @assert ctx.isPointInPath(75, 30) === false; + - 2d.path.isPointInPath + code: | + ctx.moveTo(25, 25); + ctx.bezierCurveTo(50, -50, 50, 100, 75, 25); + @assert ctx.isPointInPath(25, 20) === false; + @assert ctx.isPointInPath(25, 30) === false; + @assert ctx.isPointInPath(30, 20) === true; + @assert ctx.isPointInPath(30, 30) === false; + @assert ctx.isPointInPath(40, 2) === false; + @assert ctx.isPointInPath(40, 20) === true; + @assert ctx.isPointInPath(40, 30) === false; + @assert ctx.isPointInPath(40, 47) === false; + @assert ctx.isPointInPath(45, 20) === true; + @assert ctx.isPointInPath(45, 30) === false; + @assert ctx.isPointInPath(55, 20) === false; + @assert ctx.isPointInPath(55, 30) === true; + @assert ctx.isPointInPath(60, 2) === false; + @assert ctx.isPointInPath(60, 20) === false; + @assert ctx.isPointInPath(60, 30) === true; + @assert ctx.isPointInPath(60, 47) === false; + @assert ctx.isPointInPath(70, 20) === false; + @assert ctx.isPointInPath(70, 30) === true; + @assert ctx.isPointInPath(75, 20) === false; + @assert ctx.isPointInPath(75, 30) === false; - name: 2d.path.isPointInPath.winding desc: isPointInPath() uses the non-zero winding number rule testing: - - 2d.path.isPointInPath - code: | - // Create a square ring, using opposite windings to make a hole in the centre - ctx.moveTo(0, 0); - ctx.lineTo(50, 0); - ctx.lineTo(50, 50); - ctx.lineTo(0, 50); - ctx.lineTo(0, 0); - ctx.lineTo(10, 10); - ctx.lineTo(10, 40); - ctx.lineTo(40, 40); - ctx.lineTo(40, 10); - ctx.lineTo(10, 10); - - @assert ctx.isPointInPath(5, 5) === true; - @assert ctx.isPointInPath(25, 5) === true; - @assert ctx.isPointInPath(45, 5) === true; - @assert ctx.isPointInPath(5, 25) === true; - @assert ctx.isPointInPath(25, 25) === false; - @assert ctx.isPointInPath(45, 25) === true; - @assert ctx.isPointInPath(5, 45) === true; - @assert ctx.isPointInPath(25, 45) === true; - @assert ctx.isPointInPath(45, 45) === true; + - 2d.path.isPointInPath + code: | + // Create a square ring, using opposite windings to make a hole in the centre + ctx.moveTo(0, 0); + ctx.lineTo(50, 0); + ctx.lineTo(50, 50); + ctx.lineTo(0, 50); + ctx.lineTo(0, 0); + ctx.lineTo(10, 10); + ctx.lineTo(10, 40); + ctx.lineTo(40, 40); + ctx.lineTo(40, 10); + ctx.lineTo(10, 10); + + @assert ctx.isPointInPath(5, 5) === true; + @assert ctx.isPointInPath(25, 5) === true; + @assert ctx.isPointInPath(45, 5) === true; + @assert ctx.isPointInPath(5, 25) === true; + @assert ctx.isPointInPath(25, 25) === false; + @assert ctx.isPointInPath(45, 25) === true; + @assert ctx.isPointInPath(5, 45) === true; + @assert ctx.isPointInPath(25, 45) === true; + @assert ctx.isPointInPath(45, 45) === true; - name: 2d.path.isPointInPath.transform.1 desc: isPointInPath() handles transformations correctly testing: - - 2d.path.isPointInPath + - 2d.path.isPointInPath code: | - ctx.translate(50, 0); - ctx.rect(0, 0, 20, 20); - @assert ctx.isPointInPath(-40, 10) === false; - @assert ctx.isPointInPath(10, 10) === false; - @assert ctx.isPointInPath(49, 10) === false; - @assert ctx.isPointInPath(51, 10) === true; - @assert ctx.isPointInPath(69, 10) === true; - @assert ctx.isPointInPath(71, 10) === false; + ctx.translate(50, 0); + ctx.rect(0, 0, 20, 20); + @assert ctx.isPointInPath(-40, 10) === false; + @assert ctx.isPointInPath(10, 10) === false; + @assert ctx.isPointInPath(49, 10) === false; + @assert ctx.isPointInPath(51, 10) === true; + @assert ctx.isPointInPath(69, 10) === true; + @assert ctx.isPointInPath(71, 10) === false; - name: 2d.path.isPointInPath.transform.2 desc: isPointInPath() handles transformations correctly testing: - - 2d.path.isPointInPath + - 2d.path.isPointInPath code: | - ctx.rect(50, 0, 20, 20); - ctx.translate(50, 0); - @assert ctx.isPointInPath(-40, 10) === false; - @assert ctx.isPointInPath(10, 10) === false; - @assert ctx.isPointInPath(49, 10) === false; - @assert ctx.isPointInPath(51, 10) === true; - @assert ctx.isPointInPath(69, 10) === true; - @assert ctx.isPointInPath(71, 10) === false; + ctx.rect(50, 0, 20, 20); + ctx.translate(50, 0); + @assert ctx.isPointInPath(-40, 10) === false; + @assert ctx.isPointInPath(10, 10) === false; + @assert ctx.isPointInPath(49, 10) === false; + @assert ctx.isPointInPath(51, 10) === true; + @assert ctx.isPointInPath(69, 10) === true; + @assert ctx.isPointInPath(71, 10) === false; - name: 2d.path.isPointInPath.transform.3 desc: isPointInPath() handles transformations correctly testing: - - 2d.path.isPointInPath + - 2d.path.isPointInPath code: | - ctx.scale(-1, 1); - ctx.rect(-70, 0, 20, 20); - @assert ctx.isPointInPath(-40, 10) === false; - @assert ctx.isPointInPath(10, 10) === false; - @assert ctx.isPointInPath(49, 10) === false; - @assert ctx.isPointInPath(51, 10) === true; - @assert ctx.isPointInPath(69, 10) === true; - @assert ctx.isPointInPath(71, 10) === false; + ctx.scale(-1, 1); + ctx.rect(-70, 0, 20, 20); + @assert ctx.isPointInPath(-40, 10) === false; + @assert ctx.isPointInPath(10, 10) === false; + @assert ctx.isPointInPath(49, 10) === false; + @assert ctx.isPointInPath(51, 10) === true; + @assert ctx.isPointInPath(69, 10) === true; + @assert ctx.isPointInPath(71, 10) === false; - name: 2d.path.isPointInPath.transform.4 desc: isPointInPath() handles transformations correctly testing: - - 2d.path.isPointInPath + - 2d.path.isPointInPath code: | - ctx.translate(50, 0); - ctx.rect(50, 0, 20, 20); - ctx.translate(0, 50); - @assert ctx.isPointInPath(60, 10) === false; - @assert ctx.isPointInPath(110, 10) === true; - @assert ctx.isPointInPath(110, 60) === false; + ctx.translate(50, 0); + ctx.rect(50, 0, 20, 20); + ctx.translate(0, 50); + @assert ctx.isPointInPath(60, 10) === false; + @assert ctx.isPointInPath(110, 10) === true; + @assert ctx.isPointInPath(110, 60) === false; - name: 2d.path.isPointInPath.nonfinite desc: isPointInPath() returns false for non-finite arguments testing: - - 2d.path.isPointInPath.nonfinite + - 2d.path.isPointInPath.nonfinite code: | - ctx.rect(-100, -50, 200, 100); - @assert ctx.isPointInPath(Infinity, 0) === false; - @assert ctx.isPointInPath(-Infinity, 0) === false; - @assert ctx.isPointInPath(NaN, 0) === false; - @assert ctx.isPointInPath(0, Infinity) === false; - @assert ctx.isPointInPath(0, -Infinity) === false; - @assert ctx.isPointInPath(0, NaN) === false; - @assert ctx.isPointInPath(NaN, NaN) === false; - + ctx.rect(-100, -50, 200, 100); + @assert ctx.isPointInPath(Infinity, 0) === false; + @assert ctx.isPointInPath(-Infinity, 0) === false; + @assert ctx.isPointInPath(NaN, 0) === false; + @assert ctx.isPointInPath(0, Infinity) === false; + @assert ctx.isPointInPath(0, -Infinity) === false; + @assert ctx.isPointInPath(0, NaN) === false; + @assert ctx.isPointInPath(NaN, NaN) === false; - name: 2d.path.isPointInStroke.scaleddashes - desc: isPointInStroke() should return correct results on dashed paths at high scale - factors - testing: - - 2d.path.isPointInStroke - code: | - var scale = 20; - ctx.setLineDash([10, 21.4159]); // dash from t=0 to t=10 along the circle - ctx.scale(scale, scale); - ctx.ellipse(6, 10, 5, 5, 0, 2*Math.PI, false); - ctx.stroke(); - - // hit-test the beginning of the dash (t=0) - @assert ctx.isPointInStroke(11*scale, 10*scale) === true; - // hit-test the middle of the dash (t=5) - @assert ctx.isPointInStroke(8.70*scale, 14.21*scale) === true; - // hit-test the end of the dash (t=9.8) - @assert ctx.isPointInStroke(4.10*scale, 14.63*scale) === true; - // hit-test past the end of the dash (t=10.2) - @assert ctx.isPointInStroke(3.74*scale, 14.46*scale) === false; + desc: + isPointInStroke() should return correct results on dashed paths at high scale + factors + testing: + - 2d.path.isPointInStroke + code: | + var scale = 20; + ctx.setLineDash([10, 21.4159]); // dash from t=0 to t=10 along the circle + ctx.scale(scale, scale); + ctx.ellipse(6, 10, 5, 5, 0, 2*Math.PI, false); + ctx.stroke(); + + // hit-test the beginning of the dash (t=0) + @assert ctx.isPointInStroke(11*scale, 10*scale) === true; + // hit-test the middle of the dash (t=5) + @assert ctx.isPointInStroke(8.70*scale, 14.21*scale) === true; + // hit-test the end of the dash (t=9.8) + @assert ctx.isPointInStroke(4.10*scale, 14.63*scale) === true; + // hit-test past the end of the dash (t=10.2) + @assert ctx.isPointInStroke(3.74*scale, 14.46*scale) === false; - name: 2d.path.isPointInPath.basic desc: Verify the winding rule in isPointInPath works for for rect path. testing: - - 2d.isPointInPath.basic - code: | - canvas.width = 200; - canvas.height = 200; - - // Testing default isPointInPath - ctx.beginPath(); - ctx.rect(0, 0, 100, 100); - ctx.rect(25, 25, 50, 50); - @assert ctx.isPointInPath(50, 50) === true; - @assert ctx.isPointInPath(NaN, 50) === false; - @assert ctx.isPointInPath(50, NaN) === false; - - // Testing nonzero isPointInPath - ctx.beginPath(); - ctx.rect(0, 0, 100, 100); - ctx.rect(25, 25, 50, 50); - @assert ctx.isPointInPath(50, 50, 'nonzero') === true; - - // Testing evenodd isPointInPath - ctx.beginPath(); - ctx.rect(0, 0, 100, 100); - ctx.rect(25, 25, 50, 50); - @assert ctx.isPointInPath(50, 50, 'evenodd') === false; - - // Testing extremely large scale - ctx.save(); - ctx.scale(Number.MAX_VALUE, Number.MAX_VALUE); - ctx.beginPath(); - ctx.rect(-10, -10, 20, 20); - @assert ctx.isPointInPath(0, 0, 'nonzero') === true; - @assert ctx.isPointInPath(0, 0, 'evenodd') === true; - ctx.restore(); - - // Check with non-invertible ctm. - ctx.save(); - ctx.scale(0, 0); - ctx.beginPath(); - ctx.rect(-10, -10, 20, 20); - @assert ctx.isPointInPath(0, 0, 'nonzero') === false; - @assert ctx.isPointInPath(0, 0, 'evenodd') === false; - ctx.restore(); + - 2d.isPointInPath.basic + code: | + canvas.width = 200; + canvas.height = 200; + + // Testing default isPointInPath + ctx.beginPath(); + ctx.rect(0, 0, 100, 100); + ctx.rect(25, 25, 50, 50); + @assert ctx.isPointInPath(50, 50) === true; + @assert ctx.isPointInPath(NaN, 50) === false; + @assert ctx.isPointInPath(50, NaN) === false; + + // Testing nonzero isPointInPath + ctx.beginPath(); + ctx.rect(0, 0, 100, 100); + ctx.rect(25, 25, 50, 50); + @assert ctx.isPointInPath(50, 50, 'nonzero') === true; + + // Testing evenodd isPointInPath + ctx.beginPath(); + ctx.rect(0, 0, 100, 100); + ctx.rect(25, 25, 50, 50); + @assert ctx.isPointInPath(50, 50, 'evenodd') === false; + + // Testing extremely large scale + ctx.save(); + ctx.scale(Number.MAX_VALUE, Number.MAX_VALUE); + ctx.beginPath(); + ctx.rect(-10, -10, 20, 20); + @assert ctx.isPointInPath(0, 0, 'nonzero') === true; + @assert ctx.isPointInPath(0, 0, 'evenodd') === true; + ctx.restore(); + + // Check with non-invertible ctm. + ctx.save(); + ctx.scale(0, 0); + ctx.beginPath(); + ctx.rect(-10, -10, 20, 20); + @assert ctx.isPointInPath(0, 0, 'nonzero') === false; + @assert ctx.isPointInPath(0, 0, 'evenodd') === false; + ctx.restore(); - name: 2d.path.isPointInpath.multi.path desc: Verify the winding rule in isPointInPath works for path object. testing: - - 2d.isPointInPath.basic + - 2d.isPointInPath.basic code: | - canvas.width = 200; - canvas.height = 200; + canvas.width = 200; + canvas.height = 200; - // Testing default isPointInPath with Path object'); - path = new Path2D(); - path.rect(0, 0, 100, 100); - path.rect(25, 25, 50, 50); - @assert ctx.isPointInPath(path, 50, 50) === true; - @assert ctx.isPointInPath(path, 50, 50, undefined) === true; - @assert ctx.isPointInPath(path, NaN, 50) === false; - @assert ctx.isPointInPath(path, 50, NaN) === false; + // Testing default isPointInPath with Path object'); + path = new Path2D(); + path.rect(0, 0, 100, 100); + path.rect(25, 25, 50, 50); + @assert ctx.isPointInPath(path, 50, 50) === true; + @assert ctx.isPointInPath(path, 50, 50, undefined) === true; + @assert ctx.isPointInPath(path, NaN, 50) === false; + @assert ctx.isPointInPath(path, 50, NaN) === false; - // Testing nonzero isPointInPath with Path object'); - path = new Path2D(); - path.rect(0, 0, 100, 100); - path.rect(25, 25, 50, 50); - @assert ctx.isPointInPath(path, 50, 50, 'nonzero') === true; + // Testing nonzero isPointInPath with Path object'); + path = new Path2D(); + path.rect(0, 0, 100, 100); + path.rect(25, 25, 50, 50); + @assert ctx.isPointInPath(path, 50, 50, 'nonzero') === true; - // Testing evenodd isPointInPath with Path object'); - path = new Path2D(); - path.rect(0, 0, 100, 100); - path.rect(25, 25, 50, 50); - assert_false(ctx.isPointInPath(path, 50, 50, 'evenodd')); + // Testing evenodd isPointInPath with Path object'); + path = new Path2D(); + path.rect(0, 0, 100, 100); + path.rect(25, 25, 50, 50); + assert_false(ctx.isPointInPath(path, 50, 50, 'evenodd')); - name: 2d.path.isPointInpath.invalid desc: Verify isPointInPath throws exceptions with invalid inputs. testing: - - 2d.isPointInPath.basic - code: | - canvas.width = 200; - canvas.height = 200; - path = new Path2D(); - path.rect(0, 0, 100, 100); - path.rect(25, 25, 50, 50); - // Testing invalid enumeration isPointInPath (w/ and w/o Path object'); - @assert throws TypeError ctx.isPointInPath(path, 50, 50, 'gazonk'); - @assert throws TypeError ctx.isPointInPath(50, 50, 'gazonk'); - - // Testing invalid type isPointInPath with Path object'); - @assert throws TypeError ctx.isPointInPath(null, 50, 50); - @assert throws TypeError ctx.isPointInPath(null, 50, 50, 'nonzero'); - @assert throws TypeError ctx.isPointInPath(null, 50, 50, 'evenodd'); - @assert throws TypeError ctx.isPointInPath(null, 50, 50, null); - @assert throws TypeError ctx.isPointInPath(path, 50, 50, null); - @assert throws TypeError ctx.isPointInPath(undefined, 50, 50); - @assert throws TypeError ctx.isPointInPath(undefined, 50, 50, 'nonzero'); - @assert throws TypeError ctx.isPointInPath(undefined, 50, 50, 'evenodd'); - @assert throws TypeError ctx.isPointInPath(undefined, 50, 50, undefined); - @assert throws TypeError ctx.isPointInPath([], 50, 50); - @assert throws TypeError ctx.isPointInPath([], 50, 50, 'nonzero'); - @assert throws TypeError ctx.isPointInPath([], 50, 50, 'evenodd'); - @assert throws TypeError ctx.isPointInPath({}, 50, 50); - @assert throws TypeError ctx.isPointInPath({}, 50, 50, 'nonzero'); - @assert throws TypeError ctx.isPointInPath({}, 50, 50, 'evenodd'); + - 2d.isPointInPath.basic + code: | + canvas.width = 200; + canvas.height = 200; + path = new Path2D(); + path.rect(0, 0, 100, 100); + path.rect(25, 25, 50, 50); + // Testing invalid enumeration isPointInPath (w/ and w/o Path object'); + @assert throws TypeError ctx.isPointInPath(path, 50, 50, 'gazonk'); + @assert throws TypeError ctx.isPointInPath(50, 50, 'gazonk'); + + // Testing invalid type isPointInPath with Path object'); + @assert throws TypeError ctx.isPointInPath(null, 50, 50); + @assert throws TypeError ctx.isPointInPath(null, 50, 50, 'nonzero'); + @assert throws TypeError ctx.isPointInPath(null, 50, 50, 'evenodd'); + @assert throws TypeError ctx.isPointInPath(null, 50, 50, null); + @assert throws TypeError ctx.isPointInPath(path, 50, 50, null); + @assert throws TypeError ctx.isPointInPath(undefined, 50, 50); + @assert throws TypeError ctx.isPointInPath(undefined, 50, 50, 'nonzero'); + @assert throws TypeError ctx.isPointInPath(undefined, 50, 50, 'evenodd'); + @assert throws TypeError ctx.isPointInPath(undefined, 50, 50, undefined); + @assert throws TypeError ctx.isPointInPath([], 50, 50); + @assert throws TypeError ctx.isPointInPath([], 50, 50, 'nonzero'); + @assert throws TypeError ctx.isPointInPath([], 50, 50, 'evenodd'); + @assert throws TypeError ctx.isPointInPath({}, 50, 50); + @assert throws TypeError ctx.isPointInPath({}, 50, 50, 'nonzero'); + @assert throws TypeError ctx.isPointInPath({}, 50, 50, 'evenodd'); diff --git a/test/wpt/pixel-manipulation.yaml b/test/wpt/pixel-manipulation.yaml index ddacaf441..84e8975ea 100644 --- a/test/wpt/pixel-manipulation.yaml +++ b/test/wpt/pixel-manipulation.yaml @@ -1,1145 +1,1148 @@ - name: 2d.imageData.create2.basic desc: createImageData(sw, sh) exists and returns something testing: - - 2d.imageData.create2.object + - 2d.imageData.create2.object code: | - @assert ctx.createImageData(1, 1) !== null; + @assert ctx.createImageData(1, 1) !== null; - name: 2d.imageData.create1.basic desc: createImageData(imgdata) exists and returns something testing: - - 2d.imageData.create1.object + - 2d.imageData.create1.object code: | - @assert ctx.createImageData(ctx.createImageData(1, 1)) !== null; + @assert ctx.createImageData(ctx.createImageData(1, 1)) !== null; - name: 2d.imageData.create2.type - desc: createImageData(sw, sh) returns an ImageData object containing a Uint8ClampedArray - object + desc: + createImageData(sw, sh) returns an ImageData object containing a Uint8ClampedArray + object testing: - - 2d.imageData.create2.object + - 2d.imageData.create2.object code: | - @assert window.ImageData !== undefined; - @assert window.Uint8ClampedArray !== undefined; - window.ImageData.prototype.thisImplementsImageData = true; - window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; - var imgdata = ctx.createImageData(1, 1); - @assert imgdata.thisImplementsImageData; - @assert imgdata.data.thisImplementsUint8ClampedArray; + @assert window.ImageData !== undefined; + @assert window.Uint8ClampedArray !== undefined; + window.ImageData.prototype.thisImplementsImageData = true; + window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; + var imgdata = ctx.createImageData(1, 1); + @assert imgdata.thisImplementsImageData; + @assert imgdata.data.thisImplementsUint8ClampedArray; - name: 2d.imageData.create1.type - desc: createImageData(imgdata) returns an ImageData object containing a Uint8ClampedArray - object + desc: + createImageData(imgdata) returns an ImageData object containing a Uint8ClampedArray + object testing: - - 2d.imageData.create1.object + - 2d.imageData.create1.object code: | - @assert window.ImageData !== undefined; - @assert window.Uint8ClampedArray !== undefined; - window.ImageData.prototype.thisImplementsImageData = true; - window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; - var imgdata = ctx.createImageData(ctx.createImageData(1, 1)); - @assert imgdata.thisImplementsImageData; - @assert imgdata.data.thisImplementsUint8ClampedArray; + @assert window.ImageData !== undefined; + @assert window.Uint8ClampedArray !== undefined; + window.ImageData.prototype.thisImplementsImageData = true; + window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; + var imgdata = ctx.createImageData(ctx.createImageData(1, 1)); + @assert imgdata.thisImplementsImageData; + @assert imgdata.data.thisImplementsUint8ClampedArray; - name: 2d.imageData.create2.this desc: createImageData(sw, sh) should throw when called with the wrong |this| notes: &bindings Defined in "Web IDL" (draft) testing: - - 2d.imageData.create2.object + - 2d.imageData.create2.object code: | - @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call(null, 1, 1); @moz-todo - @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call(undefined, 1, 1); @moz-todo - @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call({}, 1, 1); @moz-todo + @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call(null, 1, 1); @moz-todo + @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call(undefined, 1, 1); @moz-todo + @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call({}, 1, 1); @moz-todo - name: 2d.imageData.create1.this desc: createImageData(imgdata) should throw when called with the wrong |this| notes: *bindings testing: - - 2d.imageData.create2.object + - 2d.imageData.create2.object code: | - var imgdata = ctx.createImageData(1, 1); - @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call(null, imgdata); @moz-todo - @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call(undefined, imgdata); @moz-todo - @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call({}, imgdata); @moz-todo + var imgdata = ctx.createImageData(1, 1); + @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call(null, imgdata); @moz-todo + @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call(undefined, imgdata); @moz-todo + @assert throws TypeError CanvasRenderingContext2D.prototype.createImageData.call({}, imgdata); @moz-todo - name: 2d.imageData.create2.initial desc: createImageData(sw, sh) returns transparent black data of the right size testing: - - 2d.imageData.create2.size - - 2d.imageData.create.initial - - 2d.imageData.initial + - 2d.imageData.create2.size + - 2d.imageData.create.initial + - 2d.imageData.initial code: | - var imgdata = ctx.createImageData(10, 20); - @assert imgdata.data.length === imgdata.width*imgdata.height*4; - @assert imgdata.width < imgdata.height; - @assert imgdata.width > 0; - var isTransparentBlack = true; - for (var i = 0; i < imgdata.data.length; ++i) - if (imgdata.data[i] !== 0) - isTransparentBlack = false; - @assert isTransparentBlack; + var imgdata = ctx.createImageData(10, 20); + @assert imgdata.data.length === imgdata.width*imgdata.height*4; + @assert imgdata.width < imgdata.height; + @assert imgdata.width > 0; + var isTransparentBlack = true; + for (var i = 0; i < imgdata.data.length; ++i) + if (imgdata.data[i] !== 0) + isTransparentBlack = false; + @assert isTransparentBlack; - name: 2d.imageData.create1.initial desc: createImageData(imgdata) returns transparent black data of the right size testing: - - 2d.imageData.create1.size - - 2d.imageData.create.initial - - 2d.imageData.initial - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - var imgdata1 = ctx.getImageData(0, 0, 10, 20); - var imgdata2 = ctx.createImageData(imgdata1); - @assert imgdata2.data.length === imgdata1.data.length; - @assert imgdata2.width === imgdata1.width; - @assert imgdata2.height === imgdata1.height; - var isTransparentBlack = true; - for (var i = 0; i < imgdata2.data.length; ++i) - if (imgdata2.data[i] !== 0) - isTransparentBlack = false; - @assert isTransparentBlack; + - 2d.imageData.create1.size + - 2d.imageData.create.initial + - 2d.imageData.initial + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + var imgdata1 = ctx.getImageData(0, 0, 10, 20); + var imgdata2 = ctx.createImageData(imgdata1); + @assert imgdata2.data.length === imgdata1.data.length; + @assert imgdata2.width === imgdata1.width; + @assert imgdata2.height === imgdata1.height; + var isTransparentBlack = true; + for (var i = 0; i < imgdata2.data.length; ++i) + if (imgdata2.data[i] !== 0) + isTransparentBlack = false; + @assert isTransparentBlack; - name: 2d.imageData.create2.large desc: createImageData(sw, sh) works for sizes much larger than the canvas testing: - - 2d.imageData.create2.size + - 2d.imageData.create2.size code: | - var imgdata = ctx.createImageData(1000, 2000); - @assert imgdata.data.length === imgdata.width*imgdata.height*4; - @assert imgdata.width < imgdata.height; - @assert imgdata.width > 0; - var isTransparentBlack = true; - for (var i = 0; i < imgdata.data.length; i += 7813) // check ~1024 points (assuming normal scaling) - if (imgdata.data[i] !== 0) - isTransparentBlack = false; - @assert isTransparentBlack; + var imgdata = ctx.createImageData(1000, 2000); + @assert imgdata.data.length === imgdata.width*imgdata.height*4; + @assert imgdata.width < imgdata.height; + @assert imgdata.width > 0; + var isTransparentBlack = true; + for (var i = 0; i < imgdata.data.length; i += 7813) // check ~1024 points (assuming normal scaling) + if (imgdata.data[i] !== 0) + isTransparentBlack = false; + @assert isTransparentBlack; - name: 2d.imageData.create2.negative desc: createImageData(sw, sh) takes the absolute magnitude of the size arguments testing: - - 2d.imageData.create2.size + - 2d.imageData.create2.size code: | - var imgdata1 = ctx.createImageData(10, 20); - var imgdata2 = ctx.createImageData(-10, 20); - var imgdata3 = ctx.createImageData(10, -20); - var imgdata4 = ctx.createImageData(-10, -20); - @assert imgdata1.data.length === imgdata2.data.length; - @assert imgdata2.data.length === imgdata3.data.length; - @assert imgdata3.data.length === imgdata4.data.length; + var imgdata1 = ctx.createImageData(10, 20); + var imgdata2 = ctx.createImageData(-10, 20); + var imgdata3 = ctx.createImageData(10, -20); + var imgdata4 = ctx.createImageData(-10, -20); + @assert imgdata1.data.length === imgdata2.data.length; + @assert imgdata2.data.length === imgdata3.data.length; + @assert imgdata3.data.length === imgdata4.data.length; - name: 2d.imageData.create2.zero desc: createImageData(sw, sh) throws INDEX_SIZE_ERR if size is zero testing: - - 2d.imageData.getcreate.zero + - 2d.imageData.getcreate.zero code: | - @assert throws INDEX_SIZE_ERR ctx.createImageData(10, 0); - @assert throws INDEX_SIZE_ERR ctx.createImageData(0, 10); - @assert throws INDEX_SIZE_ERR ctx.createImageData(0, 0); - @assert throws INDEX_SIZE_ERR ctx.createImageData(0.99, 10); - @assert throws INDEX_SIZE_ERR ctx.createImageData(10, 0.1); + @assert throws INDEX_SIZE_ERR ctx.createImageData(10, 0); + @assert throws INDEX_SIZE_ERR ctx.createImageData(0, 10); + @assert throws INDEX_SIZE_ERR ctx.createImageData(0, 0); + @assert throws INDEX_SIZE_ERR ctx.createImageData(0.99, 10); + @assert throws INDEX_SIZE_ERR ctx.createImageData(10, 0.1); - name: 2d.imageData.create2.nonfinite desc: createImageData() throws TypeError if arguments are not finite notes: *bindings testing: - - 2d.imageData.getcreate.nonfinite + - 2d.imageData.getcreate.nonfinite code: | - @nonfinite @assert throws TypeError ctx.createImageData(<10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); - var posinfobj = { valueOf: function() { return Infinity; } }, - neginfobj = { valueOf: function() { return -Infinity; } }, - nanobj = { valueOf: function() { return -Infinity; } }; - @nonfinite @assert throws TypeError ctx.createImageData(<10 posinfobj neginfobj nanobj>, <10 posinfobj neginfobj nanobj>); + @nonfinite @assert throws TypeError ctx.createImageData(<10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); + var posinfobj = { valueOf: function() { return Infinity; } }, + neginfobj = { valueOf: function() { return -Infinity; } }, + nanobj = { valueOf: function() { return -Infinity; } }; + @nonfinite @assert throws TypeError ctx.createImageData(<10 posinfobj neginfobj nanobj>, <10 posinfobj neginfobj nanobj>); - name: 2d.imageData.create1.zero desc: createImageData(null) throws TypeError testing: - - 2d.imageData.create.null + - 2d.imageData.create.null code: | - @assert throws TypeError ctx.createImageData(null); + @assert throws TypeError ctx.createImageData(null); - name: 2d.imageData.create2.double desc: createImageData(w, h) double is converted to long testing: - - 2d.imageData.create2.size + - 2d.imageData.create2.size code: | - var imgdata1 = ctx.createImageData(10.01, 10.99); - var imgdata2 = ctx.createImageData(-10.01, -10.99); - @assert imgdata1.width === 10; - @assert imgdata1.height === 10; - @assert imgdata2.width === 10; - @assert imgdata2.height === 10; + var imgdata1 = ctx.createImageData(10.01, 10.99); + var imgdata2 = ctx.createImageData(-10.01, -10.99); + @assert imgdata1.width === 10; + @assert imgdata1.height === 10; + @assert imgdata2.width === 10; + @assert imgdata2.height === 10; - name: 2d.imageData.create.and.resize desc: Verify no crash when resizing an image bitmap to zero. testing: - - 2d.imageData.resize + - 2d.imageData.resize images: - - red.png + - red.png code: | - var image = new Image(); - image.onload = t.step_func(function() { - var options = { resizeHeight: 0 }; - var p1 = createImageBitmap(image, options); - p1.catch(function(error){}); - t.done(); - }); - image.src = 'red.png'; + var image = new Image(); + image.onload = t.step_func(function() { + var options = { resizeHeight: 0 }; + var p1 = createImageBitmap(image, options); + p1.catch(function(error){}); + t.done(); + }); + image.src = 'red.png'; - name: 2d.imageData.get.basic desc: getImageData() exists and returns something testing: - - 2d.imageData.get.basic + - 2d.imageData.get.basic code: | - @assert ctx.getImageData(0, 0, 100, 50) !== null; + @assert ctx.getImageData(0, 0, 100, 50) !== null; - name: 2d.imageData.get.type - desc: getImageData() returns an ImageData object containing a Uint8ClampedArray - object + desc: + getImageData() returns an ImageData object containing a Uint8ClampedArray + object testing: - - 2d.imageData.get.object + - 2d.imageData.get.object code: | - @assert window.ImageData !== undefined; - @assert window.Uint8ClampedArray !== undefined; - window.ImageData.prototype.thisImplementsImageData = true; - window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; - var imgdata = ctx.getImageData(0, 0, 1, 1); - @assert imgdata.thisImplementsImageData; - @assert imgdata.data.thisImplementsUint8ClampedArray; + @assert window.ImageData !== undefined; + @assert window.Uint8ClampedArray !== undefined; + window.ImageData.prototype.thisImplementsImageData = true; + window.Uint8ClampedArray.prototype.thisImplementsUint8ClampedArray = true; + var imgdata = ctx.getImageData(0, 0, 1, 1); + @assert imgdata.thisImplementsImageData; + @assert imgdata.data.thisImplementsUint8ClampedArray; - name: 2d.imageData.get.zero desc: getImageData() throws INDEX_SIZE_ERR if size is zero testing: - - 2d.imageData.getcreate.zero + - 2d.imageData.getcreate.zero code: | - @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 10, 0); - @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 0, 10); - @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 0, 0); - @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 0.1, 10); - @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 10, 0.99); - @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, -0.1, 10); - @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 10, -0.99); + @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 10, 0); + @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 0, 10); + @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 0, 0); + @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 0.1, 10); + @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 10, 0.99); + @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, -0.1, 10); + @assert throws INDEX_SIZE_ERR ctx.getImageData(1, 1, 10, -0.99); - name: 2d.imageData.get.nonfinite desc: getImageData() throws TypeError if arguments are not finite notes: *bindings testing: - - 2d.imageData.getcreate.nonfinite + - 2d.imageData.getcreate.nonfinite code: | - @nonfinite @assert throws TypeError ctx.getImageData(<10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); - var posinfobj = { valueOf: function() { return Infinity; } }, - neginfobj = { valueOf: function() { return -Infinity; } }, - nanobj = { valueOf: function() { return -Infinity; } }; - @nonfinite @assert throws TypeError ctx.getImageData(<10 posinfobj neginfobj nanobj>, <10 posinfobj neginfobj nanobj>, <10 posinfobj neginfobj nanobj>, <10 posinfobj neginfobj nanobj>); + @nonfinite @assert throws TypeError ctx.getImageData(<10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); + var posinfobj = { valueOf: function() { return Infinity; } }, + neginfobj = { valueOf: function() { return -Infinity; } }, + nanobj = { valueOf: function() { return -Infinity; } }; + @nonfinite @assert throws TypeError ctx.getImageData(<10 posinfobj neginfobj nanobj>, <10 posinfobj neginfobj nanobj>, <10 posinfobj neginfobj nanobj>, <10 posinfobj neginfobj nanobj>); - name: 2d.imageData.get.source.outside desc: getImageData() returns transparent black outside the canvas testing: - - 2d.imageData.get.basic - - 2d.imageData.get.outside - code: | - ctx.fillStyle = '#08f'; - ctx.fillRect(0, 0, 100, 50); - - var imgdata1 = ctx.getImageData(-10, 5, 1, 1); - @assert imgdata1.data[0] === 0; - @assert imgdata1.data[1] === 0; - @assert imgdata1.data[2] === 0; - @assert imgdata1.data[3] === 0; - - var imgdata2 = ctx.getImageData(10, -5, 1, 1); - @assert imgdata2.data[0] === 0; - @assert imgdata2.data[1] === 0; - @assert imgdata2.data[2] === 0; - @assert imgdata2.data[3] === 0; - - var imgdata3 = ctx.getImageData(200, 5, 1, 1); - @assert imgdata3.data[0] === 0; - @assert imgdata3.data[1] === 0; - @assert imgdata3.data[2] === 0; - @assert imgdata3.data[3] === 0; - - var imgdata4 = ctx.getImageData(10, 60, 1, 1); - @assert imgdata4.data[0] === 0; - @assert imgdata4.data[1] === 0; - @assert imgdata4.data[2] === 0; - @assert imgdata4.data[3] === 0; - - var imgdata5 = ctx.getImageData(100, 10, 1, 1); - @assert imgdata5.data[0] === 0; - @assert imgdata5.data[1] === 0; - @assert imgdata5.data[2] === 0; - @assert imgdata5.data[3] === 0; - - var imgdata6 = ctx.getImageData(0, 10, 1, 1); - @assert imgdata6.data[0] === 0; - @assert imgdata6.data[1] === 136; - @assert imgdata6.data[2] === 255; - @assert imgdata6.data[3] === 255; - - var imgdata7 = ctx.getImageData(-10, 10, 20, 20); - @assert imgdata7.data[ 0*4+0] === 0; - @assert imgdata7.data[ 0*4+1] === 0; - @assert imgdata7.data[ 0*4+2] === 0; - @assert imgdata7.data[ 0*4+3] === 0; - @assert imgdata7.data[ 9*4+0] === 0; - @assert imgdata7.data[ 9*4+1] === 0; - @assert imgdata7.data[ 9*4+2] === 0; - @assert imgdata7.data[ 9*4+3] === 0; - @assert imgdata7.data[10*4+0] === 0; - @assert imgdata7.data[10*4+1] === 136; - @assert imgdata7.data[10*4+2] === 255; - @assert imgdata7.data[10*4+3] === 255; - @assert imgdata7.data[19*4+0] === 0; - @assert imgdata7.data[19*4+1] === 136; - @assert imgdata7.data[19*4+2] === 255; - @assert imgdata7.data[19*4+3] === 255; - @assert imgdata7.data[20*4+0] === 0; - @assert imgdata7.data[20*4+1] === 0; - @assert imgdata7.data[20*4+2] === 0; - @assert imgdata7.data[20*4+3] === 0; + - 2d.imageData.get.basic + - 2d.imageData.get.outside + code: | + ctx.fillStyle = '#08f'; + ctx.fillRect(0, 0, 100, 50); + + var imgdata1 = ctx.getImageData(-10, 5, 1, 1); + @assert imgdata1.data[0] === 0; + @assert imgdata1.data[1] === 0; + @assert imgdata1.data[2] === 0; + @assert imgdata1.data[3] === 0; + + var imgdata2 = ctx.getImageData(10, -5, 1, 1); + @assert imgdata2.data[0] === 0; + @assert imgdata2.data[1] === 0; + @assert imgdata2.data[2] === 0; + @assert imgdata2.data[3] === 0; + + var imgdata3 = ctx.getImageData(200, 5, 1, 1); + @assert imgdata3.data[0] === 0; + @assert imgdata3.data[1] === 0; + @assert imgdata3.data[2] === 0; + @assert imgdata3.data[3] === 0; + + var imgdata4 = ctx.getImageData(10, 60, 1, 1); + @assert imgdata4.data[0] === 0; + @assert imgdata4.data[1] === 0; + @assert imgdata4.data[2] === 0; + @assert imgdata4.data[3] === 0; + + var imgdata5 = ctx.getImageData(100, 10, 1, 1); + @assert imgdata5.data[0] === 0; + @assert imgdata5.data[1] === 0; + @assert imgdata5.data[2] === 0; + @assert imgdata5.data[3] === 0; + + var imgdata6 = ctx.getImageData(0, 10, 1, 1); + @assert imgdata6.data[0] === 0; + @assert imgdata6.data[1] === 136; + @assert imgdata6.data[2] === 255; + @assert imgdata6.data[3] === 255; + + var imgdata7 = ctx.getImageData(-10, 10, 20, 20); + @assert imgdata7.data[ 0*4+0] === 0; + @assert imgdata7.data[ 0*4+1] === 0; + @assert imgdata7.data[ 0*4+2] === 0; + @assert imgdata7.data[ 0*4+3] === 0; + @assert imgdata7.data[ 9*4+0] === 0; + @assert imgdata7.data[ 9*4+1] === 0; + @assert imgdata7.data[ 9*4+2] === 0; + @assert imgdata7.data[ 9*4+3] === 0; + @assert imgdata7.data[10*4+0] === 0; + @assert imgdata7.data[10*4+1] === 136; + @assert imgdata7.data[10*4+2] === 255; + @assert imgdata7.data[10*4+3] === 255; + @assert imgdata7.data[19*4+0] === 0; + @assert imgdata7.data[19*4+1] === 136; + @assert imgdata7.data[19*4+2] === 255; + @assert imgdata7.data[19*4+3] === 255; + @assert imgdata7.data[20*4+0] === 0; + @assert imgdata7.data[20*4+1] === 0; + @assert imgdata7.data[20*4+2] === 0; + @assert imgdata7.data[20*4+3] === 0; - name: 2d.imageData.get.source.negative - desc: getImageData() works with negative width and height, and returns top-to-bottom - left-to-right - testing: - - 2d.imageData.get.basic - - 2d.pixelarray.order - code: | - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#fff'; - ctx.fillRect(20, 10, 60, 10); - - var imgdata1 = ctx.getImageData(85, 25, -10, -10); - @assert imgdata1.data[0] === 255; - @assert imgdata1.data[1] === 255; - @assert imgdata1.data[2] === 255; - @assert imgdata1.data[3] === 255; - @assert imgdata1.data[imgdata1.data.length-4+0] === 0; - @assert imgdata1.data[imgdata1.data.length-4+1] === 0; - @assert imgdata1.data[imgdata1.data.length-4+2] === 0; - @assert imgdata1.data[imgdata1.data.length-4+3] === 255; - - var imgdata2 = ctx.getImageData(0, 0, -1, -1); - @assert imgdata2.data[0] === 0; - @assert imgdata2.data[1] === 0; - @assert imgdata2.data[2] === 0; - @assert imgdata2.data[3] === 0; + desc: + getImageData() works with negative width and height, and returns top-to-bottom + left-to-right + testing: + - 2d.imageData.get.basic + - 2d.pixelarray.order + code: | + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#fff'; + ctx.fillRect(20, 10, 60, 10); + + var imgdata1 = ctx.getImageData(85, 25, -10, -10); + @assert imgdata1.data[0] === 255; + @assert imgdata1.data[1] === 255; + @assert imgdata1.data[2] === 255; + @assert imgdata1.data[3] === 255; + @assert imgdata1.data[imgdata1.data.length-4+0] === 0; + @assert imgdata1.data[imgdata1.data.length-4+1] === 0; + @assert imgdata1.data[imgdata1.data.length-4+2] === 0; + @assert imgdata1.data[imgdata1.data.length-4+3] === 255; + + var imgdata2 = ctx.getImageData(0, 0, -1, -1); + @assert imgdata2.data[0] === 0; + @assert imgdata2.data[1] === 0; + @assert imgdata2.data[2] === 0; + @assert imgdata2.data[3] === 0; - name: 2d.imageData.get.source.size desc: getImageData() returns bigger ImageData for bigger source rectangle testing: - - 2d.imageData.get.basic + - 2d.imageData.get.basic code: | - var imgdata1 = ctx.getImageData(0, 0, 10, 10); - var imgdata2 = ctx.getImageData(0, 0, 20, 20); - @assert imgdata2.width > imgdata1.width; - @assert imgdata2.height > imgdata1.height; + var imgdata1 = ctx.getImageData(0, 0, 10, 10); + var imgdata2 = ctx.getImageData(0, 0, 20, 20); + @assert imgdata2.width > imgdata1.width; + @assert imgdata2.height > imgdata1.height; - name: 2d.imageData.get.double desc: createImageData(w, h) double is converted to long testing: - - 2d.imageData.get.basic + - 2d.imageData.get.basic code: | - var imgdata1 = ctx.getImageData(0, 0, 10.01, 10.99); - var imgdata2 = ctx.getImageData(0, 0, -10.01, -10.99); - @assert imgdata1.width === 10; - @assert imgdata1.height === 10; - @assert imgdata2.width === 10; - @assert imgdata2.height === 10; + var imgdata1 = ctx.getImageData(0, 0, 10.01, 10.99); + var imgdata2 = ctx.getImageData(0, 0, -10.01, -10.99); + @assert imgdata1.width === 10; + @assert imgdata1.height === 10; + @assert imgdata2.width === 10; + @assert imgdata2.height === 10; - name: 2d.imageData.get.nonpremul desc: getImageData() returns non-premultiplied colors testing: - - 2d.imageData.get.premul + - 2d.imageData.get.premul code: | - ctx.fillStyle = 'rgba(255, 255, 255, 0.5)'; - ctx.fillRect(0, 0, 100, 50); - var imgdata = ctx.getImageData(10, 10, 10, 10); - @assert imgdata.data[0] > 200; - @assert imgdata.data[1] > 200; - @assert imgdata.data[2] > 200; - @assert imgdata.data[3] > 100; - @assert imgdata.data[3] < 200; + ctx.fillStyle = 'rgba(255, 255, 255, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(10, 10, 10, 10); + @assert imgdata.data[0] > 200; + @assert imgdata.data[1] > 200; + @assert imgdata.data[2] > 200; + @assert imgdata.data[3] > 100; + @assert imgdata.data[3] < 200; - name: 2d.imageData.get.range desc: getImageData() returns values in the range [0, 255] testing: - - 2d.pixelarray.range - - 2d.pixelarray.retrieve + - 2d.pixelarray.range + - 2d.pixelarray.retrieve code: | - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#fff'; - ctx.fillRect(20, 10, 60, 10); - var imgdata1 = ctx.getImageData(10, 5, 1, 1); - @assert imgdata1.data[0] === 0; - var imgdata2 = ctx.getImageData(30, 15, 1, 1); - @assert imgdata2.data[0] === 255; + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#fff'; + ctx.fillRect(20, 10, 60, 10); + var imgdata1 = ctx.getImageData(10, 5, 1, 1); + @assert imgdata1.data[0] === 0; + var imgdata2 = ctx.getImageData(30, 15, 1, 1); + @assert imgdata2.data[0] === 255; - name: 2d.imageData.get.clamp desc: getImageData() clamps colors to the range [0, 255] testing: - - 2d.pixelarray.range - code: | - ctx.fillStyle = 'rgb(-100, -200, -300)'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = 'rgb(256, 300, 400)'; - ctx.fillRect(20, 10, 60, 10); - var imgdata1 = ctx.getImageData(10, 5, 1, 1); - @assert imgdata1.data[0] === 0; - @assert imgdata1.data[1] === 0; - @assert imgdata1.data[2] === 0; - var imgdata2 = ctx.getImageData(30, 15, 1, 1); - @assert imgdata2.data[0] === 255; - @assert imgdata2.data[1] === 255; - @assert imgdata2.data[2] === 255; + - 2d.pixelarray.range + code: | + ctx.fillStyle = 'rgb(-100, -200, -300)'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = 'rgb(256, 300, 400)'; + ctx.fillRect(20, 10, 60, 10); + var imgdata1 = ctx.getImageData(10, 5, 1, 1); + @assert imgdata1.data[0] === 0; + @assert imgdata1.data[1] === 0; + @assert imgdata1.data[2] === 0; + var imgdata2 = ctx.getImageData(30, 15, 1, 1); + @assert imgdata2.data[0] === 255; + @assert imgdata2.data[1] === 255; + @assert imgdata2.data[2] === 255; - name: 2d.imageData.get.length desc: getImageData() returns a correctly-sized Uint8ClampedArray testing: - - 2d.pixelarray.length + - 2d.pixelarray.length code: | - var imgdata = ctx.getImageData(0, 0, 10, 10); - @assert imgdata.data.length === imgdata.width*imgdata.height*4; + var imgdata = ctx.getImageData(0, 0, 10, 10); + @assert imgdata.data.length === imgdata.width*imgdata.height*4; - name: 2d.imageData.get.order.cols desc: getImageData() returns leftmost columns first testing: - - 2d.pixelarray.order + - 2d.pixelarray.order code: | - ctx.fillStyle = '#fff'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 2, 50); - var imgdata = ctx.getImageData(0, 0, 10, 10); - @assert imgdata.data[0] === 0; - @assert imgdata.data[Math.round(imgdata.width/2*4)] === 255; - @assert imgdata.data[Math.round((imgdata.height/2)*imgdata.width*4)] === 0; + ctx.fillStyle = '#fff'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 2, 50); + var imgdata = ctx.getImageData(0, 0, 10, 10); + @assert imgdata.data[0] === 0; + @assert imgdata.data[Math.round(imgdata.width/2*4)] === 255; + @assert imgdata.data[Math.round((imgdata.height/2)*imgdata.width*4)] === 0; - name: 2d.imageData.get.order.rows desc: getImageData() returns topmost rows first testing: - - 2d.pixelarray.order + - 2d.pixelarray.order code: | - ctx.fillStyle = '#fff'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 100, 2); - var imgdata = ctx.getImageData(0, 0, 10, 10); - @assert imgdata.data[0] === 0; - @assert imgdata.data[Math.floor(imgdata.width/2*4)] === 0; - @assert imgdata.data[(imgdata.height/2)*imgdata.width*4] === 255; + ctx.fillStyle = '#fff'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#000'; + ctx.fillRect(0, 0, 100, 2); + var imgdata = ctx.getImageData(0, 0, 10, 10); + @assert imgdata.data[0] === 0; + @assert imgdata.data[Math.floor(imgdata.width/2*4)] === 0; + @assert imgdata.data[(imgdata.height/2)*imgdata.width*4] === 255; - name: 2d.imageData.get.order.rgb desc: getImageData() returns R then G then B testing: - - 2d.pixelarray.order - - 2d.pixelarray.indexes - code: | - ctx.fillStyle = '#48c'; - ctx.fillRect(0, 0, 100, 50); - var imgdata = ctx.getImageData(0, 0, 10, 10); - @assert imgdata.data[0] === 0x44; - @assert imgdata.data[1] === 0x88; - @assert imgdata.data[2] === 0xCC; - @assert imgdata.data[3] === 255; - @assert imgdata.data[4] === 0x44; - @assert imgdata.data[5] === 0x88; - @assert imgdata.data[6] === 0xCC; - @assert imgdata.data[7] === 255; + - 2d.pixelarray.order + - 2d.pixelarray.indexes + code: | + ctx.fillStyle = '#48c'; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 10, 10); + @assert imgdata.data[0] === 0x44; + @assert imgdata.data[1] === 0x88; + @assert imgdata.data[2] === 0xCC; + @assert imgdata.data[3] === 255; + @assert imgdata.data[4] === 0x44; + @assert imgdata.data[5] === 0x88; + @assert imgdata.data[6] === 0xCC; + @assert imgdata.data[7] === 255; - name: 2d.imageData.get.order.alpha desc: getImageData() returns A in the fourth component testing: - - 2d.pixelarray.order + - 2d.pixelarray.order code: | - ctx.fillStyle = 'rgba(0, 0, 0, 0.5)'; - ctx.fillRect(0, 0, 100, 50); - var imgdata = ctx.getImageData(0, 0, 10, 10); - @assert imgdata.data[3] < 200; - @assert imgdata.data[3] > 100; + ctx.fillStyle = 'rgba(0, 0, 0, 0.5)'; + ctx.fillRect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 10, 10); + @assert imgdata.data[3] < 200; + @assert imgdata.data[3] > 100; - name: 2d.imageData.get.unaffected desc: getImageData() is not affected by context state testing: - - 2d.imageData.unaffected - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 50) - ctx.fillStyle = '#f00'; - ctx.fillRect(50, 0, 50, 50) - ctx.save(); - ctx.translate(50, 0); - ctx.globalAlpha = 0.1; - ctx.globalCompositeOperation = 'destination-atop'; - ctx.shadowColor = '#f00'; - ctx.rect(0, 0, 5, 5); - ctx.clip(); - var imgdata = ctx.getImageData(0, 0, 50, 50); - ctx.restore(); - ctx.putImageData(imgdata, 50, 0); - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; + - 2d.imageData.unaffected + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50) + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50) + ctx.save(); + ctx.translate(50, 0); + ctx.globalAlpha = 0.1; + ctx.globalCompositeOperation = 'destination-atop'; + ctx.shadowColor = '#f00'; + ctx.rect(0, 0, 5, 5); + ctx.clip(); + var imgdata = ctx.getImageData(0, 0, 50, 50); + ctx.restore(); + ctx.putImageData(imgdata, 50, 0); + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; expected: green - - name: 2d.imageData.get.large.crash desc: Test that canvas crash when image data cannot be allocated. testing: - - 2d.getImageData + - 2d.getImageData code: | - @assert throws TypeError ctx.getImageData(10, 0xffffffff, 2147483647, 10); + @assert throws TypeError ctx.getImageData(10, 0xffffffff, 2147483647, 10); - name: 2d.imageData.get.rounding desc: Test the handling of non-integer source coordinates in getImageData(). testing: - - 2d.getImageData + - 2d.getImageData code: | - function testDimensions(sx, sy, sw, sh, width, height) - { - imageData = ctx.getImageData(sx, sy, sw, sh); - @assert imageData.width == width; - @assert imageData.height == height; - } + function testDimensions(sx, sy, sw, sh, width, height) + { + imageData = ctx.getImageData(sx, sy, sw, sh); + @assert imageData.width == width; + @assert imageData.height == height; + } - testDimensions(0, 0, 20, 10, 20, 10); + testDimensions(0, 0, 20, 10, 20, 10); - testDimensions(.1, .2, 20, 10, 20, 10); - testDimensions(.9, .8, 20, 10, 20, 10); + testDimensions(.1, .2, 20, 10, 20, 10); + testDimensions(.9, .8, 20, 10, 20, 10); - testDimensions(0, 0, 20.9, 10.9, 20, 10); - testDimensions(0, 0, 20.1, 10.1, 20, 10); + testDimensions(0, 0, 20.9, 10.9, 20, 10); + testDimensions(0, 0, 20.1, 10.1, 20, 10); - testDimensions(-1, -1, 20, 10, 20, 10); + testDimensions(-1, -1, 20, 10, 20, 10); - testDimensions(-1.1, 0, 20, 10, 20, 10); - testDimensions(-1.9, 0, 20, 10, 20, 10); + testDimensions(-1.1, 0, 20, 10, 20, 10); + testDimensions(-1.9, 0, 20, 10, 20, 10); - name: 2d.imageData.get.invalid desc: Verify getImageData() behavior in invalid cases. testing: - - 2d.imageData.get.invalid - code: | - imageData = ctx.getImageData(0,0,2,2); - var testValues = [NaN, true, false, "\"garbage\"", "-1", - "0", "1", "2", Infinity, -Infinity, - -5, -0.5, 0, 0.5, 5, - 5.4, 255, 256, null, undefined]; - var testResults = [0, 1, 0, 0, 0, - 0, 1, 2, 255, 0, - 0, 0, 0, 0, 5, - 5, 255, 255, 0, 0]; - for (var i = 0; i < testValues.length; i++) { - imageData.data[0] = testValues[i]; - @assert imageData.data[0] == testResults[i]; - } - imageData.data['foo']='garbage'; - @assert imageData.data['foo'] == 'garbage'; - imageData.data[-1]='garbage'; - @assert imageData.data[-1] == undefined; - imageData.data[17]='garbage'; - @assert imageData.data[17] == undefined; + - 2d.imageData.get.invalid + code: | + imageData = ctx.getImageData(0,0,2,2); + var testValues = [NaN, true, false, "\"garbage\"", "-1", + "0", "1", "2", Infinity, -Infinity, + -5, -0.5, 0, 0.5, 5, + 5.4, 255, 256, null, undefined]; + var testResults = [0, 1, 0, 0, 0, + 0, 1, 2, 255, 0, + 0, 0, 0, 0, 5, + 5, 255, 255, 0, 0]; + for (var i = 0; i < testValues.length; i++) { + imageData.data[0] = testValues[i]; + @assert imageData.data[0] == testResults[i]; + } + imageData.data['foo']='garbage'; + @assert imageData.data['foo'] == 'garbage'; + imageData.data[-1]='garbage'; + @assert imageData.data[-1] == undefined; + imageData.data[17]='garbage'; + @assert imageData.data[17] == undefined; - name: 2d.imageData.object.properties desc: ImageData objects have the right properties testing: - - 2d.imageData.type + - 2d.imageData.type code: | - var imgdata = ctx.getImageData(0, 0, 10, 10); - @assert typeof(imgdata.width) === 'number'; - @assert typeof(imgdata.height) === 'number'; - @assert typeof(imgdata.data) === 'object'; + var imgdata = ctx.getImageData(0, 0, 10, 10); + @assert typeof(imgdata.width) === 'number'; + @assert typeof(imgdata.height) === 'number'; + @assert typeof(imgdata.data) === 'object'; - name: 2d.imageData.object.readonly desc: ImageData objects properties are read-only testing: - - 2d.imageData.type - code: | - var imgdata = ctx.getImageData(0, 0, 10, 10); - var w = imgdata.width; - var h = imgdata.height; - var d = imgdata.data; - imgdata.width = 123; - imgdata.height = 123; - imgdata.data = [100,100,100,100]; - @assert imgdata.width === w; - @assert imgdata.height === h; - @assert imgdata.data === d; - @assert imgdata.data[0] === 0; - @assert imgdata.data[1] === 0; - @assert imgdata.data[2] === 0; - @assert imgdata.data[3] === 0; + - 2d.imageData.type + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + var w = imgdata.width; + var h = imgdata.height; + var d = imgdata.data; + imgdata.width = 123; + imgdata.height = 123; + imgdata.data = [100,100,100,100]; + @assert imgdata.width === w; + @assert imgdata.height === h; + @assert imgdata.data === d; + @assert imgdata.data[0] === 0; + @assert imgdata.data[1] === 0; + @assert imgdata.data[2] === 0; + @assert imgdata.data[3] === 0; - name: 2d.imageData.object.ctor.size desc: ImageData has a usable constructor testing: - - 2d.imageData.type + - 2d.imageData.type code: | - @assert window.ImageData !== undefined; + @assert window.ImageData !== undefined; - var imgdata = new window.ImageData(2, 3); - @assert imgdata.width === 2; - @assert imgdata.height === 3; - @assert imgdata.data.length === 2 * 3 * 4; - for (var i = 0; i < imgdata.data.length; ++i) { - @assert imgdata.data[i] === 0; - } + var imgdata = new window.ImageData(2, 3); + @assert imgdata.width === 2; + @assert imgdata.height === 3; + @assert imgdata.data.length === 2 * 3 * 4; + for (var i = 0; i < imgdata.data.length; ++i) { + @assert imgdata.data[i] === 0; + } - name: 2d.imageData.object.ctor.basics desc: Testing different type of ImageData constructor testing: - - 2d.imageData.type - code: | - function setRGBA(imageData, i, rgba) - { - var s = i * 4; - imageData[s] = rgba[0]; - imageData[s + 1] = rgba[1]; - imageData[s + 2] = rgba[2]; - imageData[s + 3] = rgba[3]; - } - - function getRGBA(imageData, i) - { - var result = []; - var s = i * 4; - for (var j = 0; j < 4; j++) { - result[j] = imageData[s + j]; - } - return result; - } - - function assertArrayEquals(actual, expected) - { - @assert typeof actual === "object"; - @assert actual !== null; - @assert "length" in actual === true; - @assert actual.length === expected.length; - for (var i = 0; i < actual.length; i++) { - @assert actual.hasOwnProperty(i) === expected.hasOwnProperty(i); - @assert actual[i] === expected[i]; - } - } - - @assert ImageData !== undefined; - imageData = new ImageData(100, 50); - - @assert imageData !== null; - @assert imageData.data !== null; - @assert imageData.width === 100; - @assert imageData.height === 50; - assertArrayEquals(getRGBA(imageData.data, 4), [0, 0, 0, 0]); - - var testColor = [0, 255, 255, 128]; - setRGBA(imageData.data, 4, testColor); - assertArrayEquals(getRGBA(imageData.data, 4), testColor); - - @assert throws TypeError new ImageData(10); - @assert throws INDEX_SIZE_ERR new ImageData(0, 10); - @assert throws INDEX_SIZE_ERR new ImageData(10, 0); - @assert throws INDEX_SIZE_ERR new ImageData('width', 'height'); - @assert throws INDEX_SIZE_ERR new ImageData(1 << 31, 1 << 31); - @assert throws TypeError new ImageData(new Uint8ClampedArray(0)); - @assert throws INDEX_SIZE_ERR new ImageData(new Uint8Array(100), 25); - @assert throws INVALID_STATE_ERR new ImageData(new Uint8ClampedArray(27), 2); - @assert throws INDEX_SIZE_ERR new ImageData(new Uint8ClampedArray(28), 7, 0); - @assert throws INDEX_SIZE_ERR new ImageData(new Uint8ClampedArray(104), 14); - @assert throws INDEX_SIZE_ERR new ImageData(new Uint8ClampedArray([12, 34, 168, 65328]), 1, 151); - @assert throws TypeError new ImageData(self, 4, 4); - @assert throws TypeError new ImageData(null, 4, 4); - @assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 0); - @assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 13); - @assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 1 << 31); - @assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 'biggish'); - @assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 1 << 24, 1 << 31); - @assert new ImageData(new Uint8ClampedArray(28), 7).height === 1; - - imageDataFromData = new ImageData(imageData.data, 100); - @assert imageDataFromData.width === 100; - @assert imageDataFromData.height === 50; - @assert imageDataFromData.data === imageData.data; - assertArrayEquals(getRGBA(imageDataFromData.data, 10), getRGBA(imageData.data, 10)); - setRGBA(imageData.data, 10, testColor); - assertArrayEquals(getRGBA(imageDataFromData.data, 10), getRGBA(imageData.data, 10)); - - var data = new Uint8ClampedArray(400); - data[22] = 129; - imageDataFromData = new ImageData(data, 20, 5); - @assert imageDataFromData.width === 20; - @assert imageDataFromData.height === 5; - @assert imageDataFromData.data === data; - assertArrayEquals(getRGBA(imageDataFromData.data, 2), getRGBA(data, 2)); - setRGBA(imageDataFromData.data, 2, testColor); - assertArrayEquals(getRGBA(imageDataFromData.data, 2), getRGBA(data, 2)); - - if (window.SharedArrayBuffer) { - @assert throws TypeError new ImageData(new Uint16Array(new SharedArrayBuffer(32)), 4, 2); - } + - 2d.imageData.type + code: | + function setRGBA(imageData, i, rgba) + { + var s = i * 4; + imageData[s] = rgba[0]; + imageData[s + 1] = rgba[1]; + imageData[s + 2] = rgba[2]; + imageData[s + 3] = rgba[3]; + } + + function getRGBA(imageData, i) + { + var result = []; + var s = i * 4; + for (var j = 0; j < 4; j++) { + result[j] = imageData[s + j]; + } + return result; + } + + function assertArrayEquals(actual, expected) + { + @assert typeof actual === "object"; + @assert actual !== null; + @assert "length" in actual === true; + @assert actual.length === expected.length; + for (var i = 0; i < actual.length; i++) { + @assert actual.hasOwnProperty(i) === expected.hasOwnProperty(i); + @assert actual[i] === expected[i]; + } + } + + @assert ImageData !== undefined; + imageData = new ImageData(100, 50); + + @assert imageData !== null; + @assert imageData.data !== null; + @assert imageData.width === 100; + @assert imageData.height === 50; + assertArrayEquals(getRGBA(imageData.data, 4), [0, 0, 0, 0]); + + var testColor = [0, 255, 255, 128]; + setRGBA(imageData.data, 4, testColor); + assertArrayEquals(getRGBA(imageData.data, 4), testColor); + + @assert throws TypeError new ImageData(10); + @assert throws INDEX_SIZE_ERR new ImageData(0, 10); + @assert throws INDEX_SIZE_ERR new ImageData(10, 0); + @assert throws INDEX_SIZE_ERR new ImageData('width', 'height'); + @assert throws INDEX_SIZE_ERR new ImageData(1 << 31, 1 << 31); + @assert throws TypeError new ImageData(new Uint8ClampedArray(0)); + @assert throws INDEX_SIZE_ERR new ImageData(new Uint8Array(100), 25); + @assert throws INVALID_STATE_ERR new ImageData(new Uint8ClampedArray(27), 2); + @assert throws INDEX_SIZE_ERR new ImageData(new Uint8ClampedArray(28), 7, 0); + @assert throws INDEX_SIZE_ERR new ImageData(new Uint8ClampedArray(104), 14); + @assert throws INDEX_SIZE_ERR new ImageData(new Uint8ClampedArray([12, 34, 168, 65328]), 1, 151); + @assert throws TypeError new ImageData(self, 4, 4); + @assert throws TypeError new ImageData(null, 4, 4); + @assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 0); + @assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 13); + @assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 1 << 31); + @assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 'biggish'); + @assert throws INDEX_SIZE_ERR new ImageData(imageData.data, 1 << 24, 1 << 31); + @assert new ImageData(new Uint8ClampedArray(28), 7).height === 1; + + imageDataFromData = new ImageData(imageData.data, 100); + @assert imageDataFromData.width === 100; + @assert imageDataFromData.height === 50; + @assert imageDataFromData.data === imageData.data; + assertArrayEquals(getRGBA(imageDataFromData.data, 10), getRGBA(imageData.data, 10)); + setRGBA(imageData.data, 10, testColor); + assertArrayEquals(getRGBA(imageDataFromData.data, 10), getRGBA(imageData.data, 10)); + + var data = new Uint8ClampedArray(400); + data[22] = 129; + imageDataFromData = new ImageData(data, 20, 5); + @assert imageDataFromData.width === 20; + @assert imageDataFromData.height === 5; + @assert imageDataFromData.data === data; + assertArrayEquals(getRGBA(imageDataFromData.data, 2), getRGBA(data, 2)); + setRGBA(imageDataFromData.data, 2, testColor); + assertArrayEquals(getRGBA(imageDataFromData.data, 2), getRGBA(data, 2)); + + if (window.SharedArrayBuffer) { + @assert throws TypeError new ImageData(new Uint16Array(new SharedArrayBuffer(32)), 4, 2); + } - name: 2d.imageData.object.ctor.array desc: ImageData has a usable constructor testing: - - 2d.imageData.type + - 2d.imageData.type code: | - @assert window.ImageData !== undefined; + @assert window.ImageData !== undefined; - var array = new Uint8ClampedArray(8); - var imgdata = new window.ImageData(array, 1, 2); - @assert imgdata.width === 1; - @assert imgdata.height === 2; - @assert imgdata.data === array; + var array = new Uint8ClampedArray(8); + var imgdata = new window.ImageData(array, 1, 2); + @assert imgdata.width === 1; + @assert imgdata.height === 2; + @assert imgdata.data === array; - name: 2d.imageData.object.ctor.array.bounds desc: ImageData has a usable constructor testing: - - 2d.imageData.type + - 2d.imageData.type code: | - @assert window.ImageData !== undefined; + @assert window.ImageData !== undefined; - @assert throws INVALID_STATE_ERR new ImageData(new Uint8ClampedArray(0), 1); - @assert throws INVALID_STATE_ERR new ImageData(new Uint8ClampedArray(3), 1); - @assert throws INDEX_SIZE_ERR new ImageData(new Uint8ClampedArray(4), 0); - @assert throws INDEX_SIZE_ERR new ImageData(new Uint8ClampedArray(4), 1, 2); - @assert throws TypeError new ImageData(new Uint8Array(8), 1, 2); - @assert throws TypeError new ImageData(new Int8Array(8), 1, 2); + @assert throws INVALID_STATE_ERR new ImageData(new Uint8ClampedArray(0), 1); + @assert throws INVALID_STATE_ERR new ImageData(new Uint8ClampedArray(3), 1); + @assert throws INDEX_SIZE_ERR new ImageData(new Uint8ClampedArray(4), 0); + @assert throws INDEX_SIZE_ERR new ImageData(new Uint8ClampedArray(4), 1, 2); + @assert throws TypeError new ImageData(new Uint8Array(8), 1, 2); + @assert throws TypeError new ImageData(new Int8Array(8), 1, 2); - name: 2d.imageData.object.set desc: ImageData.data can be modified testing: - - 2d.pixelarray.modify + - 2d.pixelarray.modify code: | - var imgdata = ctx.getImageData(0, 0, 10, 10); - imgdata.data[0] = 100; - @assert imgdata.data[0] === 100; - imgdata.data[0] = 200; - @assert imgdata.data[0] === 200; + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 100; + @assert imgdata.data[0] === 100; + imgdata.data[0] = 200; + @assert imgdata.data[0] === 200; - name: 2d.imageData.object.undefined desc: ImageData.data converts undefined to 0 testing: - - 2d.pixelarray.modify + - 2d.pixelarray.modify webidl: - - es-octet + - es-octet code: | - var imgdata = ctx.getImageData(0, 0, 10, 10); - imgdata.data[0] = 100; - imgdata.data[0] = undefined; - @assert imgdata.data[0] === 0; + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 100; + imgdata.data[0] = undefined; + @assert imgdata.data[0] === 0; - name: 2d.imageData.object.nan desc: ImageData.data converts NaN to 0 testing: - - 2d.pixelarray.modify + - 2d.pixelarray.modify webidl: - - es-octet + - es-octet code: | - var imgdata = ctx.getImageData(0, 0, 10, 10); - imgdata.data[0] = 100; - imgdata.data[0] = NaN; - @assert imgdata.data[0] === 0; - imgdata.data[0] = 100; - imgdata.data[0] = "cheese"; - @assert imgdata.data[0] === 0; + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 100; + imgdata.data[0] = NaN; + @assert imgdata.data[0] === 0; + imgdata.data[0] = 100; + imgdata.data[0] = "cheese"; + @assert imgdata.data[0] === 0; - name: 2d.imageData.object.string desc: ImageData.data converts strings to numbers with ToNumber testing: - - 2d.pixelarray.modify + - 2d.pixelarray.modify webidl: - - es-octet - code: | - var imgdata = ctx.getImageData(0, 0, 10, 10); - imgdata.data[0] = 100; - imgdata.data[0] = "110"; - @assert imgdata.data[0] === 110; - imgdata.data[0] = 100; - imgdata.data[0] = "0x78"; - @assert imgdata.data[0] === 120; - imgdata.data[0] = 100; - imgdata.data[0] = " +130e0 "; - @assert imgdata.data[0] === 130; + - es-octet + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 100; + imgdata.data[0] = "110"; + @assert imgdata.data[0] === 110; + imgdata.data[0] = 100; + imgdata.data[0] = "0x78"; + @assert imgdata.data[0] === 120; + imgdata.data[0] = 100; + imgdata.data[0] = " +130e0 "; + @assert imgdata.data[0] === 130; - name: 2d.imageData.object.clamp desc: ImageData.data clamps numbers to [0, 255] testing: - - 2d.pixelarray.modify + - 2d.pixelarray.modify webidl: - - es-octet - code: | - var imgdata = ctx.getImageData(0, 0, 10, 10); - - imgdata.data[0] = 100; - imgdata.data[0] = 300; - @assert imgdata.data[0] === 255; - imgdata.data[0] = 100; - imgdata.data[0] = -100; - @assert imgdata.data[0] === 0; - - imgdata.data[0] = 100; - imgdata.data[0] = 200+Math.pow(2, 32); - @assert imgdata.data[0] === 255; - imgdata.data[0] = 100; - imgdata.data[0] = -200-Math.pow(2, 32); - @assert imgdata.data[0] === 0; - - imgdata.data[0] = 100; - imgdata.data[0] = Math.pow(10, 39); - @assert imgdata.data[0] === 255; - imgdata.data[0] = 100; - imgdata.data[0] = -Math.pow(10, 39); - @assert imgdata.data[0] === 0; - - imgdata.data[0] = 100; - imgdata.data[0] = -Infinity; - @assert imgdata.data[0] === 0; - imgdata.data[0] = 100; - imgdata.data[0] = Infinity; - @assert imgdata.data[0] === 255; + - es-octet + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + + imgdata.data[0] = 100; + imgdata.data[0] = 300; + @assert imgdata.data[0] === 255; + imgdata.data[0] = 100; + imgdata.data[0] = -100; + @assert imgdata.data[0] === 0; + + imgdata.data[0] = 100; + imgdata.data[0] = 200+Math.pow(2, 32); + @assert imgdata.data[0] === 255; + imgdata.data[0] = 100; + imgdata.data[0] = -200-Math.pow(2, 32); + @assert imgdata.data[0] === 0; + + imgdata.data[0] = 100; + imgdata.data[0] = Math.pow(10, 39); + @assert imgdata.data[0] === 255; + imgdata.data[0] = 100; + imgdata.data[0] = -Math.pow(10, 39); + @assert imgdata.data[0] === 0; + + imgdata.data[0] = 100; + imgdata.data[0] = -Infinity; + @assert imgdata.data[0] === 0; + imgdata.data[0] = 100; + imgdata.data[0] = Infinity; + @assert imgdata.data[0] === 255; - name: 2d.imageData.object.round desc: ImageData.data rounds numbers with round-to-zero testing: - - 2d.pixelarray.modify + - 2d.pixelarray.modify webidl: - - es-octet - code: | - var imgdata = ctx.getImageData(0, 0, 10, 10); - imgdata.data[0] = 0.499; - @assert imgdata.data[0] === 0; - imgdata.data[0] = 0.5; - @assert imgdata.data[0] === 0; - imgdata.data[0] = 0.501; - @assert imgdata.data[0] === 1; - imgdata.data[0] = 1.499; - @assert imgdata.data[0] === 1; - imgdata.data[0] = 1.5; - @assert imgdata.data[0] === 2; - imgdata.data[0] = 1.501; - @assert imgdata.data[0] === 2; - imgdata.data[0] = 2.5; - @assert imgdata.data[0] === 2; - imgdata.data[0] = 3.5; - @assert imgdata.data[0] === 4; - imgdata.data[0] = 252.5; - @assert imgdata.data[0] === 252; - imgdata.data[0] = 253.5; - @assert imgdata.data[0] === 254; - imgdata.data[0] = 254.5; - @assert imgdata.data[0] === 254; - imgdata.data[0] = 256.5; - @assert imgdata.data[0] === 255; - imgdata.data[0] = -0.5; - @assert imgdata.data[0] === 0; - imgdata.data[0] = -1.5; - @assert imgdata.data[0] === 0; - - + - es-octet + code: | + var imgdata = ctx.getImageData(0, 0, 10, 10); + imgdata.data[0] = 0.499; + @assert imgdata.data[0] === 0; + imgdata.data[0] = 0.5; + @assert imgdata.data[0] === 0; + imgdata.data[0] = 0.501; + @assert imgdata.data[0] === 1; + imgdata.data[0] = 1.499; + @assert imgdata.data[0] === 1; + imgdata.data[0] = 1.5; + @assert imgdata.data[0] === 2; + imgdata.data[0] = 1.501; + @assert imgdata.data[0] === 2; + imgdata.data[0] = 2.5; + @assert imgdata.data[0] === 2; + imgdata.data[0] = 3.5; + @assert imgdata.data[0] === 4; + imgdata.data[0] = 252.5; + @assert imgdata.data[0] === 252; + imgdata.data[0] = 253.5; + @assert imgdata.data[0] === 254; + imgdata.data[0] = 254.5; + @assert imgdata.data[0] === 254; + imgdata.data[0] = 256.5; + @assert imgdata.data[0] === 255; + imgdata.data[0] = -0.5; + @assert imgdata.data[0] === 0; + imgdata.data[0] = -1.5; + @assert imgdata.data[0] === 0; - name: 2d.imageData.put.null desc: putImageData() with null imagedata throws TypeError testing: - - 2d.imageData.put.wrongtype + - 2d.imageData.put.wrongtype code: | - @assert throws TypeError ctx.putImageData(null, 0, 0); + @assert throws TypeError ctx.putImageData(null, 0, 0); - name: 2d.imageData.put.nonfinite desc: putImageData() throws TypeError if arguments are not finite notes: *bindings testing: - - 2d.imageData.put.nonfinite + - 2d.imageData.put.nonfinite code: | - var imgdata = ctx.getImageData(0, 0, 10, 10); - @nonfinite @assert throws TypeError ctx.putImageData(, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); - @nonfinite @assert throws TypeError ctx.putImageData(, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); + var imgdata = ctx.getImageData(0, 0, 10, 10); + @nonfinite @assert throws TypeError ctx.putImageData(, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); + @nonfinite @assert throws TypeError ctx.putImageData(, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>, <10 Infinity -Infinity NaN>); - name: 2d.imageData.put.basic desc: putImageData() puts image data from getImageData() onto the canvas testing: - - 2d.imageData.put.normal - - 2d.imageData.put.3arg + - 2d.imageData.put.normal + - 2d.imageData.put.3arg code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.putImageData(imgdata, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.putImageData(imgdata, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; expected: green - name: 2d.imageData.put.created desc: putImageData() puts image data from createImageData() onto the canvas testing: - - 2d.imageData.put.normal - code: | - var imgdata = ctx.createImageData(100, 50); - for (var i = 0; i < imgdata.data.length; i += 4) { - imgdata.data[i] = 0; - imgdata.data[i+1] = 255; - imgdata.data[i+2] = 0; - imgdata.data[i+3] = 255; - } - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.putImageData(imgdata, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; + - 2d.imageData.put.normal + code: | + var imgdata = ctx.createImageData(100, 50); + for (var i = 0; i < imgdata.data.length; i += 4) { + imgdata.data[i] = 0; + imgdata.data[i+1] = 255; + imgdata.data[i+2] = 0; + imgdata.data[i+3] = 255; + } + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.putImageData(imgdata, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; expected: green - name: 2d.imageData.put.wrongtype desc: putImageData() does not accept non-ImageData objects testing: - - 2d.imageData.put.wrongtype + - 2d.imageData.put.wrongtype code: | - var imgdata = { width: 1, height: 1, data: [255, 0, 0, 255] }; - @assert throws TypeError ctx.putImageData(imgdata, 0, 0); - @assert throws TypeError ctx.putImageData("cheese", 0, 0); - @assert throws TypeError ctx.putImageData(42, 0, 0); + var imgdata = { width: 1, height: 1, data: [255, 0, 0, 255] }; + @assert throws TypeError ctx.putImageData(imgdata, 0, 0); + @assert throws TypeError ctx.putImageData("cheese", 0, 0); + @assert throws TypeError ctx.putImageData(42, 0, 0); expected: green - name: 2d.imageData.put.cross desc: putImageData() accepts image data got from a different canvas testing: - - 2d.imageData.put.normal - code: | - var canvas2 = document.createElement('canvas'); - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = '#0f0'; - ctx2.fillRect(0, 0, 100, 50) - var imgdata = ctx2.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.putImageData(imgdata, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; + - 2d.imageData.put.normal + code: | + var canvas2 = document.createElement('canvas'); + var ctx2 = canvas2.getContext('2d'); + ctx2.fillStyle = '#0f0'; + ctx2.fillRect(0, 0, 100, 50) + var imgdata = ctx2.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.putImageData(imgdata, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; expected: green - name: 2d.imageData.put.alpha desc: putImageData() puts non-solid image data correctly testing: - - 2d.imageData.put.normal + - 2d.imageData.put.normal code: | - ctx.fillStyle = 'rgba(0, 255, 0, 0.25)'; - ctx.fillRect(0, 0, 100, 50) - var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.putImageData(imgdata, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,64; + ctx.fillStyle = 'rgba(0, 255, 0, 0.25)'; + ctx.fillRect(0, 0, 100, 50) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.putImageData(imgdata, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,64; expected: | - size 100 50 - cr.set_source_rgba(0, 1, 0, 0.25) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + cr.set_source_rgba(0, 1, 0, 0.25) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.imageData.put.modified desc: putImageData() puts modified image data correctly testing: - - 2d.imageData.put.normal - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#f00'; - ctx.fillRect(45, 20, 10, 10) - var imgdata = ctx.getImageData(45, 20, 10, 10); - for (var i = 0, len = imgdata.width*imgdata.height*4; i < len; i += 4) - { - imgdata.data[i] = 0; - imgdata.data[i+1] = 255; - } - ctx.putImageData(imgdata, 45, 20); - @assert pixel 50,25 ==~ 0,255,0,255; + - 2d.imageData.put.normal + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#f00'; + ctx.fillRect(45, 20, 10, 10) + var imgdata = ctx.getImageData(45, 20, 10, 10); + for (var i = 0, len = imgdata.width*imgdata.height*4; i < len; i += 4) + { + imgdata.data[i] = 0; + imgdata.data[i+1] = 255; + } + ctx.putImageData(imgdata, 45, 20); + @assert pixel 50,25 ==~ 0,255,0,255; expected: green - name: 2d.imageData.put.dirty.zero desc: putImageData() with zero-sized dirty rectangle puts nothing testing: - - 2d.imageData.put.normal + - 2d.imageData.put.normal code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - ctx.putImageData(imgdata, 0, 0, 0, 0, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + ctx.putImageData(imgdata, 0, 0, 0, 0, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; expected: green - name: 2d.imageData.put.dirty.rect1 - desc: putImageData() only modifies areas inside the dirty rectangle, using width - and height - testing: - - 2d.imageData.put.normal - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 20, 20) - - var imgdata = ctx.getImageData(0, 0, 100, 50); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#f00'; - ctx.fillRect(40, 20, 20, 20) - ctx.putImageData(imgdata, 40, 20, 0, 0, 20, 20); - - @assert pixel 50,25 ==~ 0,255,0,255; - @assert pixel 35,25 ==~ 0,255,0,255; - @assert pixel 65,25 ==~ 0,255,0,255; - @assert pixel 50,15 ==~ 0,255,0,255; - @assert pixel 50,45 ==~ 0,255,0,255; + desc: + putImageData() only modifies areas inside the dirty rectangle, using width + and height + testing: + - 2d.imageData.put.normal + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 20, 20) + + var imgdata = ctx.getImageData(0, 0, 100, 50); + + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#f00'; + ctx.fillRect(40, 20, 20, 20) + ctx.putImageData(imgdata, 40, 20, 0, 0, 20, 20); + + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 35,25 ==~ 0,255,0,255; + @assert pixel 65,25 ==~ 0,255,0,255; + @assert pixel 50,15 ==~ 0,255,0,255; + @assert pixel 50,45 ==~ 0,255,0,255; expected: green - name: 2d.imageData.put.dirty.rect2 - desc: putImageData() only modifies areas inside the dirty rectangle, using x and - y - testing: - - 2d.imageData.put.normal - code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#0f0'; - ctx.fillRect(60, 30, 20, 20) - - var imgdata = ctx.getImageData(0, 0, 100, 50); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#f00'; - ctx.fillRect(40, 20, 20, 20) - ctx.putImageData(imgdata, -20, -10, 60, 30, 20, 20); - - @assert pixel 50,25 ==~ 0,255,0,255; - @assert pixel 35,25 ==~ 0,255,0,255; - @assert pixel 65,25 ==~ 0,255,0,255; - @assert pixel 50,15 ==~ 0,255,0,255; - @assert pixel 50,45 ==~ 0,255,0,255; + desc: + putImageData() only modifies areas inside the dirty rectangle, using x and + y + testing: + - 2d.imageData.put.normal + code: | + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#0f0'; + ctx.fillRect(60, 30, 20, 20) + + var imgdata = ctx.getImageData(0, 0, 100, 50); + + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#f00'; + ctx.fillRect(40, 20, 20, 20) + ctx.putImageData(imgdata, -20, -10, 60, 30, 20, 20); + + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 35,25 ==~ 0,255,0,255; + @assert pixel 65,25 ==~ 0,255,0,255; + @assert pixel 50,15 ==~ 0,255,0,255; + @assert pixel 50,45 ==~ 0,255,0,255; expected: green - name: 2d.imageData.put.dirty.negative desc: putImageData() handles negative-sized dirty rectangles correctly testing: - - 2d.imageData.put.normal + - 2d.imageData.put.normal code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 20, 20) + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 20, 20) - var imgdata = ctx.getImageData(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - ctx.fillStyle = '#f00'; - ctx.fillRect(40, 20, 20, 20) - ctx.putImageData(imgdata, 40, 20, 20, 20, -20, -20); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#f00'; + ctx.fillRect(40, 20, 20, 20) + ctx.putImageData(imgdata, 40, 20, 20, 20, -20, -20); - @assert pixel 50,25 ==~ 0,255,0,255; - @assert pixel 35,25 ==~ 0,255,0,255; - @assert pixel 65,25 ==~ 0,255,0,255; - @assert pixel 50,15 ==~ 0,255,0,255; - @assert pixel 50,45 ==~ 0,255,0,255; + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 35,25 ==~ 0,255,0,255; + @assert pixel 65,25 ==~ 0,255,0,255; + @assert pixel 50,15 ==~ 0,255,0,255; + @assert pixel 50,45 ==~ 0,255,0,255; expected: green - name: 2d.imageData.put.dirty.outside desc: putImageData() handles dirty rectangles outside the canvas correctly testing: - - 2d.imageData.put.normal + - 2d.imageData.put.normal code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) - var imgdata = ctx.getImageData(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) - ctx.putImageData(imgdata, 100, 20, 20, 20, -20, -20); - ctx.putImageData(imgdata, 200, 200, 0, 0, 100, 50); - ctx.putImageData(imgdata, 40, 20, -30, -20, 30, 20); - ctx.putImageData(imgdata, -30, 20, 0, 0, 30, 20); + ctx.putImageData(imgdata, 100, 20, 20, 20, -20, -20); + ctx.putImageData(imgdata, 200, 200, 0, 0, 100, 50); + ctx.putImageData(imgdata, 40, 20, -30, -20, 30, 20); + ctx.putImageData(imgdata, -30, 20, 0, 0, 30, 20); - @assert pixel 50,25 ==~ 0,255,0,255; - @assert pixel 98,15 ==~ 0,255,0,255; - @assert pixel 98,25 ==~ 0,255,0,255; - @assert pixel 98,45 ==~ 0,255,0,255; - @assert pixel 1,5 ==~ 0,255,0,255; - @assert pixel 1,25 ==~ 0,255,0,255; - @assert pixel 1,45 ==~ 0,255,0,255; + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 98,15 ==~ 0,255,0,255; + @assert pixel 98,25 ==~ 0,255,0,255; + @assert pixel 98,45 ==~ 0,255,0,255; + @assert pixel 1,5 ==~ 0,255,0,255; + @assert pixel 1,25 ==~ 0,255,0,255; + @assert pixel 1,45 ==~ 0,255,0,255; expected: green - name: 2d.imageData.put.unchanged desc: putImageData(getImageData(...), ...) has no effect testing: - - 2d.imageData.unchanged + - 2d.imageData.unchanged code: | - var i = 0; - for (var y = 0; y < 16; ++y) { - for (var x = 0; x < 16; ++x, ++i) { - ctx.fillStyle = 'rgba(' + i + ',' + (Math.floor(i*1.5) % 256) + ',' + (Math.floor(i*23.3) % 256) + ',' + (i/256) + ')'; - ctx.fillRect(x, y, 1, 1); - } - } - var imgdata1 = ctx.getImageData(0.1, 0.2, 15.8, 15.9); - var olddata = []; - for (var i = 0; i < imgdata1.data.length; ++i) - olddata[i] = imgdata1.data[i]; + var i = 0; + for (var y = 0; y < 16; ++y) { + for (var x = 0; x < 16; ++x, ++i) { + ctx.fillStyle = 'rgba(' + i + ',' + (Math.floor(i*1.5) % 256) + ',' + (Math.floor(i*23.3) % 256) + ',' + (i/256) + ')'; + ctx.fillRect(x, y, 1, 1); + } + } + var imgdata1 = ctx.getImageData(0.1, 0.2, 15.8, 15.9); + var olddata = []; + for (var i = 0; i < imgdata1.data.length; ++i) + olddata[i] = imgdata1.data[i]; - ctx.putImageData(imgdata1, 0.1, 0.2); + ctx.putImageData(imgdata1, 0.1, 0.2); - var imgdata2 = ctx.getImageData(0.1, 0.2, 15.8, 15.9); - for (var i = 0; i < imgdata2.data.length; ++i) { - @assert olddata[i] === imgdata2.data[i]; - } + var imgdata2 = ctx.getImageData(0.1, 0.2, 15.8, 15.9); + for (var i = 0; i < imgdata2.data.length; ++i) { + @assert olddata[i] === imgdata2.data[i]; + } - name: 2d.imageData.put.unaffected desc: putImageData() is not affected by context state testing: - - 2d.imageData.unaffected - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.globalAlpha = 0.1; - ctx.globalCompositeOperation = 'destination-atop'; - ctx.shadowColor = '#f00'; - ctx.shadowBlur = 1; - ctx.translate(100, 50); - ctx.scale(0.1, 0.1); - ctx.putImageData(imgdata, 0, 0); - @assert pixel 50,25 ==~ 0,255,0,255; + - 2d.imageData.unaffected + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.globalAlpha = 0.1; + ctx.globalCompositeOperation = 'destination-atop'; + ctx.shadowColor = '#f00'; + ctx.shadowBlur = 1; + ctx.translate(100, 50); + ctx.scale(0.1, 0.1); + ctx.putImageData(imgdata, 0, 0); + @assert pixel 50,25 ==~ 0,255,0,255; expected: green - name: 2d.imageData.put.clip desc: putImageData() is not affected by clipping regions testing: - - 2d.imageData.unaffected - code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50) - var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.beginPath(); - ctx.rect(0, 0, 50, 50); - ctx.clip(); - ctx.putImageData(imgdata, 0, 0); - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; + - 2d.imageData.unaffected + code: | + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50) + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.beginPath(); + ctx.rect(0, 0, 50, 50); + ctx.clip(); + ctx.putImageData(imgdata, 0, 0); + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; expected: green - name: 2d.imageData.put.path desc: putImageData() does not affect the current path testing: - - 2d.imageData.put.normal + - 2d.imageData.put.normal code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50) - ctx.rect(0, 0, 100, 50); - var imgdata = ctx.getImageData(0, 0, 100, 50); - ctx.putImageData(imgdata, 0, 0); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 50,25 ==~ 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50) + ctx.rect(0, 0, 100, 50); + var imgdata = ctx.getImageData(0, 0, 100, 50); + ctx.putImageData(imgdata, 0, 0); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 ==~ 0,255,0,255; expected: green diff --git a/test/wpt/shadows.yaml b/test/wpt/shadows.yaml index 1d8da0ede..035cdec55 100644 --- a/test/wpt/shadows.yaml +++ b/test/wpt/shadows.yaml @@ -1,1150 +1,1151 @@ - name: 2d.shadow.attributes.shadowBlur.initial testing: - - 2d.shadow.blur.get - - 2d.shadow.blur.initial + - 2d.shadow.blur.get + - 2d.shadow.blur.initial code: | - @assert ctx.shadowBlur === 0; + @assert ctx.shadowBlur === 0; - name: 2d.shadow.attributes.shadowBlur.valid testing: - - 2d.shadow.blur.get - - 2d.shadow.blur.set + - 2d.shadow.blur.get + - 2d.shadow.blur.set code: | - ctx.shadowBlur = 1; - @assert ctx.shadowBlur === 1; + ctx.shadowBlur = 1; + @assert ctx.shadowBlur === 1; - ctx.shadowBlur = 0.5; - @assert ctx.shadowBlur === 0.5; + ctx.shadowBlur = 0.5; + @assert ctx.shadowBlur === 0.5; - ctx.shadowBlur = 1e6; - @assert ctx.shadowBlur === 1e6; + ctx.shadowBlur = 1e6; + @assert ctx.shadowBlur === 1e6; - ctx.shadowBlur = 0; - @assert ctx.shadowBlur === 0; + ctx.shadowBlur = 0; + @assert ctx.shadowBlur === 0; - name: 2d.shadow.attributes.shadowBlur.invalid testing: - - 2d.shadow.blur.invalid + - 2d.shadow.blur.invalid code: | - ctx.shadowBlur = 1; - ctx.shadowBlur = -2; - @assert ctx.shadowBlur === 1; + ctx.shadowBlur = 1; + ctx.shadowBlur = -2; + @assert ctx.shadowBlur === 1; - ctx.shadowBlur = 1; - ctx.shadowBlur = Infinity; - @assert ctx.shadowBlur === 1; + ctx.shadowBlur = 1; + ctx.shadowBlur = Infinity; + @assert ctx.shadowBlur === 1; - ctx.shadowBlur = 1; - ctx.shadowBlur = -Infinity; - @assert ctx.shadowBlur === 1; + ctx.shadowBlur = 1; + ctx.shadowBlur = -Infinity; + @assert ctx.shadowBlur === 1; - ctx.shadowBlur = 1; - ctx.shadowBlur = NaN; - @assert ctx.shadowBlur === 1; + ctx.shadowBlur = 1; + ctx.shadowBlur = NaN; + @assert ctx.shadowBlur === 1; - ctx.shadowBlur = 1; - ctx.shadowBlur = 'string'; - @assert ctx.shadowBlur === 1; + ctx.shadowBlur = 1; + ctx.shadowBlur = 'string'; + @assert ctx.shadowBlur === 1; - ctx.shadowBlur = 1; - ctx.shadowBlur = true; - @assert ctx.shadowBlur === 1; + ctx.shadowBlur = 1; + ctx.shadowBlur = true; + @assert ctx.shadowBlur === 1; - ctx.shadowBlur = 1; - ctx.shadowBlur = false; - @assert ctx.shadowBlur === 0; + ctx.shadowBlur = 1; + ctx.shadowBlur = false; + @assert ctx.shadowBlur === 0; - name: 2d.shadow.attributes.shadowOffset.initial testing: - - 2d.shadow.offset.initial + - 2d.shadow.offset.initial code: | - @assert ctx.shadowOffsetX === 0; - @assert ctx.shadowOffsetY === 0; + @assert ctx.shadowOffsetX === 0; + @assert ctx.shadowOffsetY === 0; - name: 2d.shadow.attributes.shadowOffset.valid testing: - - 2d.shadow.offset.get - - 2d.shadow.offset.set + - 2d.shadow.offset.get + - 2d.shadow.offset.set code: | - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - @assert ctx.shadowOffsetX === 1; - @assert ctx.shadowOffsetY === 2; - - ctx.shadowOffsetX = 0.5; - ctx.shadowOffsetY = 0.25; - @assert ctx.shadowOffsetX === 0.5; - @assert ctx.shadowOffsetY === 0.25; - - ctx.shadowOffsetX = -0.5; - ctx.shadowOffsetY = -0.25; - @assert ctx.shadowOffsetX === -0.5; - @assert ctx.shadowOffsetY === -0.25; - - ctx.shadowOffsetX = 0; - ctx.shadowOffsetY = 0; - @assert ctx.shadowOffsetX === 0; - @assert ctx.shadowOffsetY === 0; - - ctx.shadowOffsetX = 1e6; - ctx.shadowOffsetY = 1e6; - @assert ctx.shadowOffsetX === 1e6; - @assert ctx.shadowOffsetY === 1e6; + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + @assert ctx.shadowOffsetX === 1; + @assert ctx.shadowOffsetY === 2; + + ctx.shadowOffsetX = 0.5; + ctx.shadowOffsetY = 0.25; + @assert ctx.shadowOffsetX === 0.5; + @assert ctx.shadowOffsetY === 0.25; + + ctx.shadowOffsetX = -0.5; + ctx.shadowOffsetY = -0.25; + @assert ctx.shadowOffsetX === -0.5; + @assert ctx.shadowOffsetY === -0.25; + + ctx.shadowOffsetX = 0; + ctx.shadowOffsetY = 0; + @assert ctx.shadowOffsetX === 0; + @assert ctx.shadowOffsetY === 0; + + ctx.shadowOffsetX = 1e6; + ctx.shadowOffsetY = 1e6; + @assert ctx.shadowOffsetX === 1e6; + @assert ctx.shadowOffsetY === 1e6; - name: 2d.shadow.attributes.shadowOffset.invalid testing: - - 2d.shadow.offset.invalid + - 2d.shadow.offset.invalid code: | - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - ctx.shadowOffsetX = Infinity; - ctx.shadowOffsetY = Infinity; - @assert ctx.shadowOffsetX === 1; - @assert ctx.shadowOffsetY === 2; - - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - ctx.shadowOffsetX = -Infinity; - ctx.shadowOffsetY = -Infinity; - @assert ctx.shadowOffsetX === 1; - @assert ctx.shadowOffsetY === 2; - - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - ctx.shadowOffsetX = NaN; - ctx.shadowOffsetY = NaN; - @assert ctx.shadowOffsetX === 1; - @assert ctx.shadowOffsetY === 2; - - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - ctx.shadowOffsetX = 'string'; - ctx.shadowOffsetY = 'string'; - @assert ctx.shadowOffsetX === 1; - @assert ctx.shadowOffsetY === 2; - - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - ctx.shadowOffsetX = true; - ctx.shadowOffsetY = true; - @assert ctx.shadowOffsetX === 1; - @assert ctx.shadowOffsetY === 1; - - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 2; - ctx.shadowOffsetX = false; - ctx.shadowOffsetY = false; - @assert ctx.shadowOffsetX === 0; - @assert ctx.shadowOffsetY === 0; + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = Infinity; + ctx.shadowOffsetY = Infinity; + @assert ctx.shadowOffsetX === 1; + @assert ctx.shadowOffsetY === 2; + + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = -Infinity; + ctx.shadowOffsetY = -Infinity; + @assert ctx.shadowOffsetX === 1; + @assert ctx.shadowOffsetY === 2; + + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = NaN; + ctx.shadowOffsetY = NaN; + @assert ctx.shadowOffsetX === 1; + @assert ctx.shadowOffsetY === 2; + + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = 'string'; + ctx.shadowOffsetY = 'string'; + @assert ctx.shadowOffsetX === 1; + @assert ctx.shadowOffsetY === 2; + + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = true; + ctx.shadowOffsetY = true; + @assert ctx.shadowOffsetX === 1; + @assert ctx.shadowOffsetY === 1; + + ctx.shadowOffsetX = 1; + ctx.shadowOffsetY = 2; + ctx.shadowOffsetX = false; + ctx.shadowOffsetY = false; + @assert ctx.shadowOffsetX === 0; + @assert ctx.shadowOffsetY === 0; - name: 2d.shadow.attributes.shadowColor.initial testing: - - 2d.shadow.color.initial + - 2d.shadow.color.initial code: | - @assert ctx.shadowColor === 'rgba(0, 0, 0, 0)'; + @assert ctx.shadowColor === 'rgba(0, 0, 0, 0)'; - name: 2d.shadow.attributes.shadowColor.valid testing: - - 2d.shadow.color.get - - 2d.shadow.color.set + - 2d.shadow.color.get + - 2d.shadow.color.set code: | - ctx.shadowColor = 'lime'; - @assert ctx.shadowColor === '#00ff00'; + ctx.shadowColor = 'lime'; + @assert ctx.shadowColor === '#00ff00'; - ctx.shadowColor = 'RGBA(0,255, 0,0)'; - @assert ctx.shadowColor === 'rgba(0, 255, 0, 0)'; + ctx.shadowColor = 'RGBA(0,255, 0,0)'; + @assert ctx.shadowColor === 'rgba(0, 255, 0, 0)'; - name: 2d.shadow.attributes.shadowColor.invalid testing: - - 2d.shadow.color.invalid + - 2d.shadow.color.invalid code: | - ctx.shadowColor = '#00ff00'; - ctx.shadowColor = 'bogus'; - @assert ctx.shadowColor === '#00ff00'; + ctx.shadowColor = '#00ff00'; + ctx.shadowColor = 'bogus'; + @assert ctx.shadowColor === '#00ff00'; - ctx.shadowColor = '#00ff00'; - ctx.shadowColor = 'red bogus'; - @assert ctx.shadowColor === '#00ff00'; + ctx.shadowColor = '#00ff00'; + ctx.shadowColor = 'red bogus'; + @assert ctx.shadowColor === '#00ff00'; - ctx.shadowColor = '#00ff00'; - ctx.shadowColor = ctx; - @assert ctx.shadowColor === '#00ff00'; + ctx.shadowColor = '#00ff00'; + ctx.shadowColor = ctx; + @assert ctx.shadowColor === '#00ff00'; - ctx.shadowColor = '#00ff00'; - ctx.shadowColor = undefined; - @assert ctx.shadowColor === '#00ff00'; + ctx.shadowColor = '#00ff00'; + ctx.shadowColor = undefined; + @assert ctx.shadowColor === '#00ff00'; - name: 2d.shadow.enable.off.1 desc: Shadows are not drawn when only shadowColor is set testing: - - 2d.shadow.enable - - 2d.shadow.render + - 2d.shadow.enable + - 2d.shadow.render code: | - ctx.shadowColor = '#f00'; - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + ctx.shadowColor = '#f00'; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.enable.off.2 desc: Shadows are not drawn when only shadowColor is set testing: - - 2d.shadow.enable - - 2d.shadow.render + - 2d.shadow.enable + - 2d.shadow.render code: | - ctx.globalCompositeOperation = 'destination-atop'; - ctx.shadowColor = '#f00'; - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + ctx.globalCompositeOperation = 'destination-atop'; + ctx.shadowColor = '#f00'; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.enable.blur desc: Shadows are drawn if shadowBlur is set testing: - - 2d.shadow.enable - - 2d.shadow.render + - 2d.shadow.enable + - 2d.shadow.render code: | - ctx.globalCompositeOperation = 'destination-atop'; - ctx.shadowColor = '#0f0'; - ctx.shadowBlur = 0.1; - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + ctx.globalCompositeOperation = 'destination-atop'; + ctx.shadowColor = '#0f0'; + ctx.shadowBlur = 0.1; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.enable.x desc: Shadows are drawn if shadowOffsetX is set testing: - - 2d.shadow.enable - - 2d.shadow.render + - 2d.shadow.enable + - 2d.shadow.render code: | - ctx.globalCompositeOperation = 'destination-atop'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = 0.1; - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + ctx.globalCompositeOperation = 'destination-atop'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = 0.1; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.enable.y desc: Shadows are drawn if shadowOffsetY is set testing: - - 2d.shadow.enable - - 2d.shadow.render + - 2d.shadow.enable + - 2d.shadow.render code: | - ctx.globalCompositeOperation = 'destination-atop'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 0.1; - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + ctx.globalCompositeOperation = 'destination-atop'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 0.1; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.offset.positiveX desc: Shadows can be offset with positive x testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = 50; - ctx.fillRect(0, 0, 50, 50); - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = 50; + ctx.fillRect(0, 0, 50, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.shadow.offset.negativeX desc: Shadows can be offset with negative x testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = -50; - ctx.fillRect(50, 0, 50, 50); - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = -50; + ctx.fillRect(50, 0, 50, 50); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.shadow.offset.positiveY desc: Shadows can be offset with positive y testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 25; - ctx.fillRect(0, 0, 100, 25); - @assert pixel 50,12 == 0,255,0,255; - @assert pixel 50,37 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 25; + ctx.fillRect(0, 0, 100, 25); + @assert pixel 50,12 == 0,255,0,255; + @assert pixel 50,37 == 0,255,0,255; expected: green - name: 2d.shadow.offset.negativeY desc: Shadows can be offset with negative y testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = -25; - ctx.fillRect(0, 25, 100, 25); - @assert pixel 50,12 == 0,255,0,255; - @assert pixel 50,37 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = -25; + ctx.fillRect(0, 25, 100, 25); + @assert pixel 50,12 == 0,255,0,255; + @assert pixel 50,37 == 0,255,0,255; expected: green - name: 2d.shadow.outside - desc: Shadows of shapes outside the visible area can be offset onto the visible - area + desc: + Shadows of shapes outside the visible area can be offset onto the visible + area testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = 100; - ctx.fillRect(-100, 0, 25, 50); - ctx.shadowOffsetX = -100; - ctx.fillRect(175, 0, 25, 50); - ctx.shadowOffsetX = 0; - ctx.shadowOffsetY = 100; - ctx.fillRect(25, -100, 50, 25); - ctx.shadowOffsetY = -100; - ctx.fillRect(25, 125, 50, 25); - @assert pixel 12,25 == 0,255,0,255; - @assert pixel 87,25 == 0,255,0,255; - @assert pixel 50,12 == 0,255,0,255; - @assert pixel 50,37 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = 100; + ctx.fillRect(-100, 0, 25, 50); + ctx.shadowOffsetX = -100; + ctx.fillRect(175, 0, 25, 50); + ctx.shadowOffsetX = 0; + ctx.shadowOffsetY = 100; + ctx.fillRect(25, -100, 50, 25); + ctx.shadowOffsetY = -100; + ctx.fillRect(25, 125, 50, 25); + @assert pixel 12,25 == 0,255,0,255; + @assert pixel 87,25 == 0,255,0,255; + @assert pixel 50,12 == 0,255,0,255; + @assert pixel 50,37 == 0,255,0,255; expected: green - name: 2d.shadow.clip.1 desc: Shadows of clipped shapes are still drawn within the clipping region testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(50, 0, 50, 50); - - ctx.save(); - ctx.beginPath(); - ctx.rect(50, 0, 50, 50); - ctx.clip(); - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = 50; - ctx.fillRect(0, 0, 50, 50); - ctx.restore(); - - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50); + + ctx.save(); + ctx.beginPath(); + ctx.rect(50, 0, 50, 50); + ctx.clip(); + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = 50; + ctx.fillRect(0, 0, 50, 50); + ctx.restore(); + + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.shadow.clip.2 desc: Shadows are not drawn outside the clipping region testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(50, 0, 50, 50); - - ctx.save(); - ctx.beginPath(); - ctx.rect(0, 0, 50, 50); - ctx.clip(); - ctx.shadowColor = '#f00'; - ctx.shadowOffsetX = 50; - ctx.fillRect(0, 0, 50, 50); - ctx.restore(); - - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(50, 0, 50, 50); + + ctx.save(); + ctx.beginPath(); + ctx.rect(0, 0, 50, 50); + ctx.clip(); + ctx.shadowColor = '#f00'; + ctx.shadowOffsetX = 50; + ctx.fillRect(0, 0, 50, 50); + ctx.restore(); + + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.shadow.clip.3 desc: Shadows of clipped shapes are still drawn within the clipping region testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(50, 0, 50, 50); - - ctx.save(); - ctx.beginPath(); - ctx.rect(0, 0, 50, 50); - ctx.clip(); - ctx.fillStyle = '#f00'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = 50; - ctx.fillRect(-50, 0, 50, 50); - ctx.restore(); - - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(50, 0, 50, 50); + + ctx.save(); + ctx.beginPath(); + ctx.rect(0, 0, 50, 50); + ctx.clip(); + ctx.fillStyle = '#f00'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = 50; + ctx.fillRect(-50, 0, 50, 50); + ctx.restore(); + + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.shadow.stroke.basic desc: Shadows are drawn for strokes testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 50; - ctx.beginPath(); - ctx.lineWidth = 50; - ctx.moveTo(0, -25); - ctx.lineTo(100, -25); - ctx.stroke(); - - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 50; + ctx.beginPath(); + ctx.lineWidth = 50; + ctx.moveTo(0, -25); + ctx.lineTo(100, -25); + ctx.stroke(); + + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; expected: green - name: 2d.shadow.stroke.cap.1 desc: Shadows are not drawn for areas outside stroke caps testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.shadowColor = '#f00'; - ctx.shadowOffsetY = 50; - ctx.beginPath(); - ctx.lineWidth = 50; - ctx.lineCap = 'butt'; - ctx.moveTo(-50, -25); - ctx.lineTo(0, -25); - ctx.moveTo(100, -25); - ctx.lineTo(150, -25); - ctx.stroke(); - - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.shadowColor = '#f00'; + ctx.shadowOffsetY = 50; + ctx.beginPath(); + ctx.lineWidth = 50; + ctx.lineCap = 'butt'; + ctx.moveTo(-50, -25); + ctx.lineTo(0, -25); + ctx.moveTo(100, -25); + ctx.lineTo(150, -25); + ctx.stroke(); + + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; expected: green - name: 2d.shadow.stroke.cap.2 desc: Shadows are drawn for stroke caps testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 50; - ctx.beginPath(); - ctx.lineWidth = 50; - ctx.lineCap = 'square'; - ctx.moveTo(25, -25); - ctx.lineTo(75, -25); - ctx.stroke(); - - @assert pixel 1,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 50; + ctx.beginPath(); + ctx.lineWidth = 50; + ctx.lineCap = 'square'; + ctx.moveTo(25, -25); + ctx.lineTo(75, -25); + ctx.stroke(); + + @assert pixel 1,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,25 == 0,255,0,255; expected: green - name: 2d.shadow.stroke.join.1 desc: Shadows are not drawn for areas outside stroke joins testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.shadowColor = '#f00'; - ctx.shadowOffsetX = 100; - ctx.lineWidth = 200; - ctx.lineJoin = 'bevel'; - ctx.beginPath(); - ctx.moveTo(-200, -50); - ctx.lineTo(-150, -50); - ctx.lineTo(-151, -100); - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.shadowColor = '#f00'; + ctx.shadowOffsetX = 100; + ctx.lineWidth = 200; + ctx.lineJoin = 'bevel'; + ctx.beginPath(); + ctx.moveTo(-200, -50); + ctx.lineTo(-150, -50); + ctx.lineTo(-151, -100); + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.shadow.stroke.join.2 desc: Shadows are drawn for stroke joins testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(50, 0, 50, 50); - ctx.strokeStyle = '#f00'; - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetX = 100; - ctx.lineWidth = 200; - ctx.lineJoin = 'miter'; - ctx.beginPath(); - ctx.moveTo(-200, -50); - ctx.lineTo(-150, -50); - ctx.lineTo(-151, -100); - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(50, 0, 50, 50); + ctx.strokeStyle = '#f00'; + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetX = 100; + ctx.lineWidth = 200; + ctx.lineJoin = 'miter'; + ctx.beginPath(); + ctx.moveTo(-200, -50); + ctx.lineTo(-150, -50); + ctx.lineTo(-151, -100); + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.shadow.stroke.join.3 desc: Shadows are drawn for stroke joins respecting miter limit testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.strokeStyle = '#f00'; - ctx.shadowColor = '#f00'; - ctx.shadowOffsetX = 100; - ctx.lineWidth = 200; - ctx.lineJoin = 'miter'; - ctx.miterLimit = 0.1; - ctx.beginPath(); - ctx.moveTo(-200, -50); - ctx.lineTo(-150, -50); - ctx.lineTo(-151, -100); // (not an exact right angle, to avoid some other bug in Firefox 3) - ctx.stroke(); - - @assert pixel 1,1 == 0,255,0,255; - @assert pixel 48,48 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,48 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.strokeStyle = '#f00'; + ctx.shadowColor = '#f00'; + ctx.shadowOffsetX = 100; + ctx.lineWidth = 200; + ctx.lineJoin = 'miter'; + ctx.miterLimit = 0.1; + ctx.beginPath(); + ctx.moveTo(-200, -50); + ctx.lineTo(-150, -50); + ctx.lineTo(-151, -100); // (not an exact right angle, to avoid some other bug in Firefox 3) + ctx.stroke(); + + @assert pixel 1,1 == 0,255,0,255; + @assert pixel 48,48 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,48 == 0,255,0,255; expected: green - name: 2d.shadow.image.basic desc: Shadows are drawn for images testing: - - 2d.shadow.render + - 2d.shadow.render images: - - red.png + - red.png code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 50; - ctx.drawImage(document.getElementById('red.png'), 0, -50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 50; + ctx.drawImage(document.getElementById('red.png'), 0, -50); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.image.transparent.1 desc: Shadows are not drawn for transparent images testing: - - 2d.shadow.render + - 2d.shadow.render images: - - transparent.png + - transparent.png code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#f00'; - ctx.shadowOffsetY = 50; - ctx.drawImage(document.getElementById('transparent.png'), 0, -50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#f00'; + ctx.shadowOffsetY = 50; + ctx.drawImage(document.getElementById('transparent.png'), 0, -50); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.image.transparent.2 desc: Shadows are not drawn for transparent parts of images testing: - - 2d.shadow.render + - 2d.shadow.render images: - - redtransparent.png + - redtransparent.png code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(50, 0, 50, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.drawImage(document.getElementById('redtransparent.png'), 50, -50); - ctx.shadowColor = '#f00'; - ctx.drawImage(document.getElementById('redtransparent.png'), -50, -50); - - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + ctx.drawImage(document.getElementById('redtransparent.png'), 50, -50); + ctx.shadowColor = '#f00'; + ctx.drawImage(document.getElementById('redtransparent.png'), -50, -50); + + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.shadow.image.alpha desc: Shadows are drawn correctly for partially-transparent images testing: - - 2d.shadow.render + - 2d.shadow.render images: - - transparent50.png + - transparent50.png code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#00f'; - ctx.drawImage(document.getElementById('transparent50.png'), 0, -50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#00f'; + ctx.drawImage(document.getElementById('transparent50.png'), 0, -50); - @assert pixel 50,25 ==~ 127,0,127,255; + @assert pixel 50,25 ==~ 127,0,127,255; expected: | - size 100 50 - cr.set_source_rgb(0.5, 0, 0.5) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + cr.set_source_rgb(0.5, 0, 0.5) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.shadow.image.section desc: Shadows are not drawn for areas outside image source rectangles testing: - - 2d.shadow.render + - 2d.shadow.render images: - - redtransparent.png + - redtransparent.png code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#f00'; - ctx.drawImage(document.getElementById('redtransparent.png'), 50, 0, 50, 50, 0, -50, 50, 50); - - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 50,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#f00'; + ctx.drawImage(document.getElementById('redtransparent.png'), 50, 0, 50, 50, 0, -50, 50, 50); + + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; expected: green - name: 2d.shadow.image.scale desc: Shadows are drawn correctly for scaled images testing: - - 2d.shadow.render + - 2d.shadow.render images: - - redtransparent.png + - redtransparent.png code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.drawImage(document.getElementById('redtransparent.png'), 0, 0, 100, 50, -10, -50, 240, 50); - - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 50,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + ctx.drawImage(document.getElementById('redtransparent.png'), 0, 0, 100, 50, -10, -50, 240, 50); + + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 50,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; expected: green - name: 2d.shadow.canvas.basic desc: Shadows are drawn for canvases testing: - - 2d.shadow.render + - 2d.shadow.render code: | - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = '#f00'; - ctx2.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 50; - ctx.drawImage(canvas2, 0, -50); - - @assert pixel 50,25 == 0,255,0,255; + var canvas2 = document.createElement('canvas'); + canvas2.width = 100; + canvas2.height = 50; + var ctx2 = canvas2.getContext('2d'); + ctx2.fillStyle = '#f00'; + ctx2.fillRect(0, 0, 100, 50); + + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 50; + ctx.drawImage(canvas2, 0, -50); + + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.canvas.transparent.1 desc: Shadows are not drawn for transparent canvases testing: - - 2d.shadow.render + - 2d.shadow.render code: | - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var ctx2 = canvas2.getContext('2d'); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#f00'; - ctx.shadowOffsetY = 50; - ctx.drawImage(canvas2, 0, -50); - - @assert pixel 50,25 == 0,255,0,255; + var canvas2 = document.createElement('canvas'); + canvas2.width = 100; + canvas2.height = 50; + var ctx2 = canvas2.getContext('2d'); + + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#f00'; + ctx.shadowOffsetY = 50; + ctx.drawImage(canvas2, 0, -50); + + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.canvas.transparent.2 desc: Shadows are not drawn for transparent parts of canvases testing: - - 2d.shadow.render + - 2d.shadow.render code: | - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = '#f00'; - ctx2.fillRect(0, 0, 50, 50); - - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(50, 0, 50, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.drawImage(canvas2, 50, -50); - ctx.shadowColor = '#f00'; - ctx.drawImage(canvas2, -50, -50); - - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + var canvas2 = document.createElement('canvas'); + canvas2.width = 100; + canvas2.height = 50; + var ctx2 = canvas2.getContext('2d'); + ctx2.fillStyle = '#f00'; + ctx2.fillRect(0, 0, 50, 50); + + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(50, 0, 50, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + ctx.drawImage(canvas2, 50, -50); + ctx.shadowColor = '#f00'; + ctx.drawImage(canvas2, -50, -50); + + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.shadow.canvas.alpha desc: Shadows are drawn correctly for partially-transparent canvases testing: - - 2d.shadow.render + - 2d.shadow.render images: - - transparent50.png + - transparent50.png code: | - var canvas2 = document.createElement('canvas'); - canvas2.width = 100; - canvas2.height = 50; - var ctx2 = canvas2.getContext('2d'); - ctx2.fillStyle = 'rgba(255, 0, 0, 0.5)'; - ctx2.fillRect(0, 0, 100, 50); - - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#00f'; - ctx.drawImage(canvas2, 0, -50); - - @assert pixel 50,25 ==~ 127,0,127,255; + var canvas2 = document.createElement('canvas'); + canvas2.width = 100; + canvas2.height = 50; + var ctx2 = canvas2.getContext('2d'); + ctx2.fillStyle = 'rgba(255, 0, 0, 0.5)'; + ctx2.fillRect(0, 0, 100, 50); + + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#00f'; + ctx.drawImage(canvas2, 0, -50); + + @assert pixel 50,25 ==~ 127,0,127,255; expected: | - size 100 50 - cr.set_source_rgb(0.5, 0, 0.5) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + cr.set_source_rgb(0.5, 0, 0.5) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.shadow.pattern.basic desc: Shadows are drawn for fill patterns testing: - - 2d.shadow.render + - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 images: - - red.png + - red.png code: | - var pattern = ctx.createPattern(document.getElementById('red.png'), 'repeat'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 50; - ctx.fillStyle = pattern; - ctx.fillRect(0, -50, 100, 50); - - @assert pixel 50,25 == 0,255,0,255; + var pattern = ctx.createPattern(document.getElementById('red.png'), 'repeat'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 50; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.pattern.transparent.1 desc: Shadows are not drawn for transparent fill patterns testing: - - 2d.shadow.render + - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 images: - - transparent.png + - transparent.png code: | - var pattern = ctx.createPattern(document.getElementById('transparent.png'), 'repeat'); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#f00'; - ctx.shadowOffsetY = 50; - ctx.fillStyle = pattern; - ctx.fillRect(0, -50, 100, 50); - - @assert pixel 50,25 == 0,255,0,255; + var pattern = ctx.createPattern(document.getElementById('transparent.png'), 'repeat'); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#f00'; + ctx.shadowOffsetY = 50; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.pattern.transparent.2 desc: Shadows are not drawn for transparent parts of fill patterns testing: - - 2d.shadow.render + - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 images: - - redtransparent.png + - redtransparent.png code: | - var pattern = ctx.createPattern(document.getElementById('redtransparent.png'), 'repeat'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(50, 0, 50, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.fillStyle = pattern; - ctx.fillRect(0, -50, 100, 50); - - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + var pattern = ctx.createPattern(document.getElementById('redtransparent.png'), 'repeat'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(50, 0, 50, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.shadow.pattern.alpha desc: Shadows are drawn correctly for partially-transparent fill patterns testing: - - 2d.shadow.render + - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 images: - - transparent50.png + - transparent50.png code: | - var pattern = ctx.createPattern(document.getElementById('transparent50.png'), 'repeat'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#00f'; - ctx.fillStyle = pattern; - ctx.fillRect(0, -50, 100, 50); - - @assert pixel 50,25 ==~ 127,0,127,255; + var pattern = ctx.createPattern(document.getElementById('transparent50.png'), 'repeat'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#00f'; + ctx.fillStyle = pattern; + ctx.fillRect(0, -50, 100, 50); + + @assert pixel 50,25 ==~ 127,0,127,255; expected: | - size 100 50 - cr.set_source_rgb(0.5, 0, 0.5) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + cr.set_source_rgb(0.5, 0, 0.5) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.shadow.gradient.basic desc: Shadows are drawn for gradient fills testing: - - 2d.shadow.render + - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 code: | - var gradient = ctx.createLinearGradient(0, 0, 100, 0); - gradient.addColorStop(0, '#f00'); - gradient.addColorStop(1, '#f00'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#0f0'; - ctx.shadowOffsetY = 50; - ctx.fillStyle = gradient; - ctx.fillRect(0, -50, 100, 50); - - @assert pixel 50,25 == 0,255,0,255; + var gradient = ctx.createLinearGradient(0, 0, 100, 0); + gradient.addColorStop(0, '#f00'); + gradient.addColorStop(1, '#f00'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#0f0'; + ctx.shadowOffsetY = 50; + ctx.fillStyle = gradient; + ctx.fillRect(0, -50, 100, 50); + + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.gradient.transparent.1 desc: Shadows are not drawn for transparent gradient fills testing: - - 2d.shadow.render + - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 code: | - var gradient = ctx.createLinearGradient(0, 0, 100, 0); - gradient.addColorStop(0, 'rgba(0,0,0,0)'); - gradient.addColorStop(1, 'rgba(0,0,0,0)'); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#f00'; - ctx.shadowOffsetY = 50; - ctx.fillStyle = gradient; - ctx.fillRect(0, -50, 100, 50); - - @assert pixel 50,25 == 0,255,0,255; + var gradient = ctx.createLinearGradient(0, 0, 100, 0); + gradient.addColorStop(0, 'rgba(0,0,0,0)'); + gradient.addColorStop(1, 'rgba(0,0,0,0)'); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#f00'; + ctx.shadowOffsetY = 50; + ctx.fillStyle = gradient; + ctx.fillRect(0, -50, 100, 50); + + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.gradient.transparent.2 desc: Shadows are not drawn for transparent parts of gradient fills testing: - - 2d.shadow.render + - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 code: | - var gradient = ctx.createLinearGradient(0, 0, 100, 0); - gradient.addColorStop(0, '#f00'); - gradient.addColorStop(0.499, '#f00'); - gradient.addColorStop(0.5, 'rgba(0,0,0,0)'); - gradient.addColorStop(1, 'rgba(0,0,0,0)'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 50, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(50, 0, 50, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.fillStyle = gradient; - ctx.fillRect(0, -50, 100, 50); - - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + var gradient = ctx.createLinearGradient(0, 0, 100, 0); + gradient.addColorStop(0, '#f00'); + gradient.addColorStop(0.499, '#f00'); + gradient.addColorStop(0.5, 'rgba(0,0,0,0)'); + gradient.addColorStop(1, 'rgba(0,0,0,0)'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 50, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(50, 0, 50, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + ctx.fillStyle = gradient; + ctx.fillRect(0, -50, 100, 50); + + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.shadow.gradient.alpha desc: Shadows are drawn correctly for partially-transparent gradient fills testing: - - 2d.shadow.render + - 2d.shadow.render # http://bugs.webkit.org/show_bug.cgi?id=15266 code: | - var gradient = ctx.createLinearGradient(0, 0, 100, 0); - gradient.addColorStop(0, 'rgba(255,0,0,0.5)'); - gradient.addColorStop(1, 'rgba(255,0,0,0.5)'); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#00f'; - ctx.fillStyle = gradient; - ctx.fillRect(0, -50, 100, 50); - - @assert pixel 50,25 ==~ 127,0,127,255; + var gradient = ctx.createLinearGradient(0, 0, 100, 0); + gradient.addColorStop(0, 'rgba(255,0,0,0.5)'); + gradient.addColorStop(1, 'rgba(255,0,0,0.5)'); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#00f'; + ctx.fillStyle = gradient; + ctx.fillRect(0, -50, 100, 50); + + @assert pixel 50,25 ==~ 127,0,127,255; expected: | - size 100 50 - cr.set_source_rgb(0.5, 0, 0.5) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + cr.set_source_rgb(0.5, 0, 0.5) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.shadow.transform.1 desc: Shadows take account of transformations testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.translate(100, 100); - ctx.fillRect(-100, -150, 100, 50); - - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + ctx.translate(100, 100); + ctx.fillRect(-100, -150, 100, 50); + + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.transform.2 desc: Shadow offsets are not affected by transformations testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowOffsetY = 50; - ctx.shadowColor = '#0f0'; - ctx.rotate(Math.PI) - ctx.fillRect(-100, 0, 100, 50); - - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowOffsetY = 50; + ctx.shadowColor = '#0f0'; + ctx.rotate(Math.PI) + ctx.fillRect(-100, 0, 100, 50); + + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.shadow.blur.low desc: Shadows look correct for small blurs manual: testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#ff0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#00f'; - ctx.shadowOffsetY = 25; - for (var x = 0; x < 100; ++x) { - ctx.save(); - ctx.beginPath(); - ctx.rect(x, 0, 1, 50); - ctx.clip(); - ctx.shadowBlur = x; - ctx.fillRect(-200, -200, 500, 200); - ctx.restore(); - } + ctx.fillStyle = '#ff0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#00f'; + ctx.shadowOffsetY = 25; + for (var x = 0; x < 100; ++x) { + ctx.save(); + ctx.beginPath(); + ctx.rect(x, 0, 1, 50); + ctx.clip(); + ctx.shadowBlur = x; + ctx.fillRect(-200, -200, 500, 200); + ctx.restore(); + } expected: | - size 100 50 - import math - cr.set_source_rgb(0, 0, 1) - cr.rectangle(0, 0, 1, 25) - cr.fill() - cr.set_source_rgb(1, 1, 0) - cr.rectangle(0, 25, 1, 25) - cr.fill() - for x in range(1, 100): - sigma = x/2.0 - filter = [] - for i in range(-24, 26): - filter.append(math.exp(-i*i / (2*sigma*sigma)) / (math.sqrt(2*math.pi)*sigma)) - accum = [0] - for f in filter: - accum.append(accum[-1] + f) - for y in range(0, 50): - cr.set_source_rgb(accum[y], accum[y], 1-accum[y]) - cr.rectangle(x, y, 1, 1) - cr.fill() + size 100 50 + import math + cr.set_source_rgb(0, 0, 1) + cr.rectangle(0, 0, 1, 25) + cr.fill() + cr.set_source_rgb(1, 1, 0) + cr.rectangle(0, 25, 1, 25) + cr.fill() + for x in range(1, 100): + sigma = x/2.0 + filter = [] + for i in range(-24, 26): + filter.append(math.exp(-i*i / (2*sigma*sigma)) / (math.sqrt(2*math.pi)*sigma)) + accum = [0] + for f in filter: + accum.append(accum[-1] + f) + for y in range(0, 50): + cr.set_source_rgb(accum[y], accum[y], 1-accum[y]) + cr.rectangle(x, y, 1, 1) + cr.fill() - name: 2d.shadow.blur.high desc: Shadows look correct for large blurs manual: testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#ff0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = '#00f'; - ctx.shadowOffsetY = 0; - ctx.shadowBlur = 100; - ctx.fillRect(-200, -200, 200, 400); + ctx.fillStyle = '#ff0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = '#00f'; + ctx.shadowOffsetY = 0; + ctx.shadowBlur = 100; + ctx.fillRect(-200, -200, 200, 400); expected: | - size 100 50 - import math - sigma = 100.0/2 - filter = [] - for i in range(-200, 100): - filter.append(math.exp(-i*i / (2*sigma*sigma)) / (math.sqrt(2*math.pi)*sigma)) - accum = [0] - for f in filter: - accum.append(accum[-1] + f) - for x in range(0, 100): - cr.set_source_rgb(accum[x+200], accum[x+200], 1-accum[x+200]) - cr.rectangle(x, 0, 1, 50) - cr.fill() + size 100 50 + import math + sigma = 100.0/2 + filter = [] + for i in range(-200, 100): + filter.append(math.exp(-i*i / (2*sigma*sigma)) / (math.sqrt(2*math.pi)*sigma)) + accum = [0] + for f in filter: + accum.append(accum[-1] + f) + for x in range(0, 100): + cr.set_source_rgb(accum[x+200], accum[x+200], 1-accum[x+200]) + cr.rectangle(x, 0, 1, 50) + cr.fill() - name: 2d.shadow.alpha.1 desc: Shadow color alpha components are used testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = 'rgba(255, 0, 0, 0.01)'; - ctx.shadowOffsetY = 50; - ctx.fillRect(0, -50, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = 'rgba(255, 0, 0, 0.01)'; + ctx.shadowOffsetY = 50; + ctx.fillRect(0, -50, 100, 50); - @assert pixel 50,25 ==~ 0,255,0,255 +/- 4; + @assert pixel 50,25 ==~ 0,255,0,255 +/- 4; expected: green - name: 2d.shadow.alpha.2 desc: Shadow color alpha components are used testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.shadowColor = 'rgba(0, 0, 255, 0.5)'; - ctx.shadowOffsetY = 50; - ctx.fillRect(0, -50, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.shadowColor = 'rgba(0, 0, 255, 0.5)'; + ctx.shadowOffsetY = 50; + ctx.fillRect(0, -50, 100, 50); - @assert pixel 50,25 ==~ 127,0,127,255; + @assert pixel 50,25 ==~ 127,0,127,255; expected: | - size 100 50 - cr.set_source_rgb(0.5, 0, 0.5) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + cr.set_source_rgb(0.5, 0, 0.5) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.shadow.alpha.3 desc: Shadows are affected by globalAlpha testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching) - ctx.shadowColor = '#00f'; - ctx.shadowOffsetY = 50; - ctx.globalAlpha = 0.5; - ctx.fillRect(0, -50, 100, 50); - - @assert pixel 50,25 ==~ 127,0,127,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching) + ctx.shadowColor = '#00f'; + ctx.shadowOffsetY = 50; + ctx.globalAlpha = 0.5; + ctx.fillRect(0, -50, 100, 50); + + @assert pixel 50,25 ==~ 127,0,127,255; expected: | - size 100 50 - cr.set_source_rgb(0.5, 0, 0.5) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + cr.set_source_rgb(0.5, 0, 0.5) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.shadow.alpha.4 desc: Shadows with alpha components are correctly affected by globalAlpha testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching) - ctx.shadowColor = 'rgba(0, 0, 255, 0.707)'; - ctx.shadowOffsetY = 50; - ctx.globalAlpha = 0.707; - ctx.fillRect(0, -50, 100, 50); - - @assert pixel 50,25 ==~ 127,0,127,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; // (work around broken Firefox globalAlpha caching) + ctx.shadowColor = 'rgba(0, 0, 255, 0.707)'; + ctx.shadowOffsetY = 50; + ctx.globalAlpha = 0.707; + ctx.fillRect(0, -50, 100, 50); + + @assert pixel 50,25 ==~ 127,0,127,255; expected: | - size 100 50 - cr.set_source_rgb(0.5, 0, 0.5) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + cr.set_source_rgb(0.5, 0, 0.5) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.shadow.alpha.5 desc: Shadows of shapes with alpha components are drawn correctly testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = 'rgba(64, 0, 0, 0.5)'; - ctx.shadowColor = '#00f'; - ctx.shadowOffsetY = 50; - ctx.fillRect(0, -50, 100, 50); - - @assert pixel 50,25 ==~ 127,0,127,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = 'rgba(64, 0, 0, 0.5)'; + ctx.shadowColor = '#00f'; + ctx.shadowOffsetY = 50; + ctx.fillRect(0, -50, 100, 50); + + @assert pixel 50,25 ==~ 127,0,127,255; expected: | - size 100 50 - cr.set_source_rgb(0.5, 0, 0.5) - cr.rectangle(0, 0, 100, 50) - cr.fill() + size 100 50 + cr.set_source_rgb(0.5, 0, 0.5) + cr.rectangle(0, 0, 100, 50) + cr.fill() - name: 2d.shadow.composite.1 desc: Shadows are drawn using globalCompositeOperation testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = 'xor'; - ctx.shadowColor = '#f00'; - ctx.shadowOffsetX = 100; - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, 0, 200, 50); - - @assert pixel 50,25 ==~ 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'xor'; + ctx.shadowColor = '#f00'; + ctx.shadowOffsetX = 100; + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, 0, 200, 50); + + @assert pixel 50,25 ==~ 0,255,0,255; expected: green - name: 2d.shadow.composite.2 desc: Shadows are drawn using globalCompositeOperation testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = 'xor'; - ctx.shadowColor = '#f00'; - ctx.shadowBlur = 1; - ctx.fillStyle = '#0f0'; - ctx.fillRect(-10, -10, 120, 70); - - @assert pixel 50,25 ==~ 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'xor'; + ctx.shadowColor = '#f00'; + ctx.shadowBlur = 1; + ctx.fillStyle = '#0f0'; + ctx.fillRect(-10, -10, 120, 70); + + @assert pixel 50,25 ==~ 0,255,0,255; expected: green - name: 2d.shadow.composite.3 desc: Areas outside shadows are drawn correctly with destination-out testing: - - 2d.shadow.render + - 2d.shadow.render code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.globalCompositeOperation = 'destination-out'; - ctx.shadowColor = '#f00'; - ctx.shadowBlur = 10; - ctx.fillStyle = '#f00'; - ctx.fillRect(200, 0, 100, 50); - - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 50,25 ==~ 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.globalCompositeOperation = 'destination-out'; + ctx.shadowColor = '#f00'; + ctx.shadowBlur = 10; + ctx.fillStyle = '#f00'; + ctx.fillRect(200, 0, 100, 50); + + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 50,25 ==~ 0,255,0,255; expected: green diff --git a/test/wpt/text-styles.yaml b/test/wpt/text-styles.yaml index c4d2caf00..718afcbd4 100644 --- a/test/wpt/text-styles.yaml +++ b/test/wpt/text-styles.yaml @@ -1,39 +1,39 @@ - name: 2d.text.font.parse.basic testing: - - 2d.text.font.parse - - 2d.text.font.get + - 2d.text.font.parse + - 2d.text.font.get code: | - ctx.font = '20px serif'; - @assert ctx.font === '20px serif'; + ctx.font = '20px serif'; + @assert ctx.font === '20px serif'; - ctx.font = '20PX SERIF'; - @assert ctx.font === '20px serif'; @moz-todo + ctx.font = '20PX SERIF'; + @assert ctx.font === '20px serif'; @moz-todo - name: 2d.text.font.parse.tiny testing: - - 2d.text.font.parse - - 2d.text.font.get + - 2d.text.font.parse + - 2d.text.font.get code: | - ctx.font = '1px sans-serif'; - @assert ctx.font === '1px sans-serif'; + ctx.font = '1px sans-serif'; + @assert ctx.font === '1px sans-serif'; - name: 2d.text.font.parse.complex testing: - - 2d.text.font.parse - - 2d.text.font.get - - 2d.text.font.lineheight + - 2d.text.font.parse + - 2d.text.font.get + - 2d.text.font.lineheight code: | - ctx.font = 'small-caps italic 400 12px/2 Unknown Font, sans-serif'; - @assert ctx.font === 'italic small-caps 12px "Unknown Font", sans-serif'; @moz-todo + ctx.font = 'small-caps italic 400 12px/2 Unknown Font, sans-serif'; + @assert ctx.font === 'italic small-caps 12px "Unknown Font", sans-serif'; @moz-todo - name: 2d.text.font.parse.family testing: - - 2d.text.font.parse - - 2d.text.font.get - - 2d.text.font.lineheight + - 2d.text.font.parse + - 2d.text.font.get + - 2d.text.font.lineheight code: | - ctx.font = '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","'; - @assert ctx.font === '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","'; + ctx.font = '20px cursive,fantasy,monospace,sans-serif,serif,UnquotedFont,"QuotedFont\\\\\\","'; + @assert ctx.font === '20px cursive, fantasy, monospace, sans-serif, serif, UnquotedFont, "QuotedFont\\\\\\","'; # TODO: # 2d.text.font.parse.size.absolute @@ -47,479 +47,473 @@ - name: 2d.text.font.parse.size.percentage testing: - - 2d.text.font.parse - - 2d.text.font.get - - 2d.text.font.fontsize - - 2d.text.font.size + - 2d.text.font.parse + - 2d.text.font.get + - 2d.text.font.fontsize + - 2d.text.font.size canvas: 'style="font-size: 144px" width="100" height="50"' code: | - ctx.font = '50% serif'; - @assert ctx.font === '72px serif'; @moz-todo - canvas.setAttribute('style', 'font-size: 100px'); - @assert ctx.font === '72px serif'; @moz-todo + ctx.font = '50% serif'; + @assert ctx.font === '72px serif'; @moz-todo + canvas.setAttribute('style', 'font-size: 100px'); + @assert ctx.font === '72px serif'; @moz-todo - name: 2d.text.font.parse.size.percentage.default testing: - - 2d.text.font.undefined + - 2d.text.font.undefined code: | - var canvas2 = document.createElement('canvas'); - var ctx2 = canvas2.getContext('2d'); - ctx2.font = '1000% serif'; - @assert ctx2.font === '100px serif'; @moz-todo + var canvas2 = document.createElement('canvas'); + var ctx2 = canvas2.getContext('2d'); + ctx2.font = '1000% serif'; + @assert ctx2.font === '100px serif'; @moz-todo - name: 2d.text.font.parse.system desc: System fonts must be computed to explicit values testing: - - 2d.text.font.parse - - 2d.text.font.get - - 2d.text.font.systemfonts + - 2d.text.font.parse + - 2d.text.font.get + - 2d.text.font.systemfonts code: | - ctx.font = 'message-box'; - @assert ctx.font !== 'message-box'; + ctx.font = 'message-box'; + @assert ctx.font !== 'message-box'; - name: 2d.text.font.parse.invalid testing: - - 2d.text.font.invalid + - 2d.text.font.invalid code: | - ctx.font = '20px serif'; - @assert ctx.font === '20px serif'; + ctx.font = '20px serif'; + @assert ctx.font === '20px serif'; - ctx.font = '20px serif'; - ctx.font = ''; - @assert ctx.font === '20px serif'; + ctx.font = '20px serif'; + ctx.font = ''; + @assert ctx.font === '20px serif'; - ctx.font = '20px serif'; - ctx.font = 'bogus'; - @assert ctx.font === '20px serif'; + ctx.font = '20px serif'; + ctx.font = 'bogus'; + @assert ctx.font === '20px serif'; - ctx.font = '20px serif'; - ctx.font = 'inherit'; - @assert ctx.font === '20px serif'; + ctx.font = '20px serif'; + ctx.font = 'inherit'; + @assert ctx.font === '20px serif'; - ctx.font = '20px serif'; - ctx.font = '10px {bogus}'; - @assert ctx.font === '20px serif'; + ctx.font = '20px serif'; + ctx.font = '10px {bogus}'; + @assert ctx.font === '20px serif'; - ctx.font = '20px serif'; - ctx.font = '10px initial'; - @assert ctx.font === '20px serif'; @moz-todo + ctx.font = '20px serif'; + ctx.font = '10px initial'; + @assert ctx.font === '20px serif'; @moz-todo - ctx.font = '20px serif'; - ctx.font = '10px default'; - @assert ctx.font === '20px serif'; @moz-todo + ctx.font = '20px serif'; + ctx.font = '10px default'; + @assert ctx.font === '20px serif'; @moz-todo - ctx.font = '20px serif'; - ctx.font = '10px inherit'; - @assert ctx.font === '20px serif'; + ctx.font = '20px serif'; + ctx.font = '10px inherit'; + @assert ctx.font === '20px serif'; - ctx.font = '20px serif'; - ctx.font = '10px revert'; - @assert ctx.font === '20px serif'; + ctx.font = '20px serif'; + ctx.font = '10px revert'; + @assert ctx.font === '20px serif'; - ctx.font = '20px serif'; - ctx.font = 'var(--x)'; - @assert ctx.font === '20px serif'; + ctx.font = '20px serif'; + ctx.font = 'var(--x)'; + @assert ctx.font === '20px serif'; - ctx.font = '20px serif'; - ctx.font = 'var(--x, 10px serif)'; - @assert ctx.font === '20px serif'; + ctx.font = '20px serif'; + ctx.font = 'var(--x, 10px serif)'; + @assert ctx.font === '20px serif'; - ctx.font = '20px serif'; - ctx.font = '1em serif; background: green; margin: 10px'; - @assert ctx.font === '20px serif'; + ctx.font = '20px serif'; + ctx.font = '1em serif; background: green; margin: 10px'; + @assert ctx.font === '20px serif'; - name: 2d.text.font.default testing: - - 2d.text.font.default + - 2d.text.font.default code: | - @assert ctx.font === '10px sans-serif'; + @assert ctx.font === '10px sans-serif'; - name: 2d.text.font.relative_size testing: - - 2d.text.font.relative_size + - 2d.text.font.relative_size code: | - var canvas2 = document.createElement('canvas'); - var ctx2 = canvas2.getContext('2d'); - ctx2.font = '1em sans-serif'; - @assert ctx2.font === '10px sans-serif'; + var canvas2 = document.createElement('canvas'); + var ctx2 = canvas2.getContext('2d'); + ctx2.font = '1em sans-serif'; + @assert ctx2.font === '10px sans-serif'; - name: 2d.text.align.valid testing: - - 2d.text.align.get - - 2d.text.align.set + - 2d.text.align.get + - 2d.text.align.set code: | - ctx.textAlign = 'start'; - @assert ctx.textAlign === 'start'; + ctx.textAlign = 'start'; + @assert ctx.textAlign === 'start'; - ctx.textAlign = 'end'; - @assert ctx.textAlign === 'end'; + ctx.textAlign = 'end'; + @assert ctx.textAlign === 'end'; - ctx.textAlign = 'left'; - @assert ctx.textAlign === 'left'; + ctx.textAlign = 'left'; + @assert ctx.textAlign === 'left'; - ctx.textAlign = 'right'; - @assert ctx.textAlign === 'right'; + ctx.textAlign = 'right'; + @assert ctx.textAlign === 'right'; - ctx.textAlign = 'center'; - @assert ctx.textAlign === 'center'; + ctx.textAlign = 'center'; + @assert ctx.textAlign === 'center'; - name: 2d.text.align.invalid testing: - - 2d.text.align.invalid + - 2d.text.align.invalid code: | - ctx.textAlign = 'start'; - ctx.textAlign = 'bogus'; - @assert ctx.textAlign === 'start'; + ctx.textAlign = 'start'; + ctx.textAlign = 'bogus'; + @assert ctx.textAlign === 'start'; - ctx.textAlign = 'start'; - ctx.textAlign = 'END'; - @assert ctx.textAlign === 'start'; + ctx.textAlign = 'start'; + ctx.textAlign = 'END'; + @assert ctx.textAlign === 'start'; - ctx.textAlign = 'start'; - ctx.textAlign = 'end '; - @assert ctx.textAlign === 'start'; + ctx.textAlign = 'start'; + ctx.textAlign = 'end '; + @assert ctx.textAlign === 'start'; - ctx.textAlign = 'start'; - ctx.textAlign = 'end\0'; - @assert ctx.textAlign === 'start'; + ctx.textAlign = 'start'; + ctx.textAlign = 'end\0'; + @assert ctx.textAlign === 'start'; - name: 2d.text.align.default testing: - - 2d.text.align.default + - 2d.text.align.default code: | - @assert ctx.textAlign === 'start'; - + @assert ctx.textAlign === 'start'; - name: 2d.text.baseline.valid testing: - - 2d.text.baseline.get - - 2d.text.baseline.set + - 2d.text.baseline.get + - 2d.text.baseline.set code: | - ctx.textBaseline = 'top'; - @assert ctx.textBaseline === 'top'; + ctx.textBaseline = 'top'; + @assert ctx.textBaseline === 'top'; - ctx.textBaseline = 'hanging'; - @assert ctx.textBaseline === 'hanging'; + ctx.textBaseline = 'hanging'; + @assert ctx.textBaseline === 'hanging'; - ctx.textBaseline = 'middle'; - @assert ctx.textBaseline === 'middle'; + ctx.textBaseline = 'middle'; + @assert ctx.textBaseline === 'middle'; - ctx.textBaseline = 'alphabetic'; - @assert ctx.textBaseline === 'alphabetic'; + ctx.textBaseline = 'alphabetic'; + @assert ctx.textBaseline === 'alphabetic'; - ctx.textBaseline = 'ideographic'; - @assert ctx.textBaseline === 'ideographic'; + ctx.textBaseline = 'ideographic'; + @assert ctx.textBaseline === 'ideographic'; - ctx.textBaseline = 'bottom'; - @assert ctx.textBaseline === 'bottom'; + ctx.textBaseline = 'bottom'; + @assert ctx.textBaseline === 'bottom'; - name: 2d.text.baseline.invalid testing: - - 2d.text.baseline.invalid + - 2d.text.baseline.invalid code: | - ctx.textBaseline = 'top'; - ctx.textBaseline = 'bogus'; - @assert ctx.textBaseline === 'top'; + ctx.textBaseline = 'top'; + ctx.textBaseline = 'bogus'; + @assert ctx.textBaseline === 'top'; - ctx.textBaseline = 'top'; - ctx.textBaseline = 'MIDDLE'; - @assert ctx.textBaseline === 'top'; + ctx.textBaseline = 'top'; + ctx.textBaseline = 'MIDDLE'; + @assert ctx.textBaseline === 'top'; - ctx.textBaseline = 'top'; - ctx.textBaseline = 'middle '; - @assert ctx.textBaseline === 'top'; + ctx.textBaseline = 'top'; + ctx.textBaseline = 'middle '; + @assert ctx.textBaseline === 'top'; - ctx.textBaseline = 'top'; - ctx.textBaseline = 'middle\0'; - @assert ctx.textBaseline === 'top'; + ctx.textBaseline = 'top'; + ctx.textBaseline = 'middle\0'; + @assert ctx.textBaseline === 'top'; - name: 2d.text.baseline.default testing: - - 2d.text.baseline.default + - 2d.text.baseline.default code: | - @assert ctx.textBaseline === 'alphabetic'; - - - - + @assert ctx.textBaseline === 'alphabetic'; - name: 2d.text.draw.baseline.top desc: textBaseline top is the top of the em square (not the bounding box) testing: - - 2d.text.baseline.top + - 2d.text.baseline.top fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textBaseline = 'top'; - ctx.fillText('CC', 0, 0); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - @assert pixel 5,45 ==~ 0,255,0,255; - @assert pixel 95,45 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textBaseline = 'top'; + ctx.fillText('CC', 0, 0); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + @assert pixel 5,45 ==~ 0,255,0,255; + @assert pixel 95,45 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.baseline.bottom desc: textBaseline bottom is the bottom of the em square (not the bounding box) testing: - - 2d.text.baseline.bottom + - 2d.text.baseline.bottom fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textBaseline = 'bottom'; - ctx.fillText('CC', 0, 50); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - @assert pixel 5,45 ==~ 0,255,0,255; - @assert pixel 95,45 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textBaseline = 'bottom'; + ctx.fillText('CC', 0, 50); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + @assert pixel 5,45 ==~ 0,255,0,255; + @assert pixel 95,45 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.baseline.middle desc: textBaseline middle is the middle of the em square (not the bounding box) testing: - - 2d.text.baseline.middle + - 2d.text.baseline.middle fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textBaseline = 'middle'; - ctx.fillText('CC', 0, 25); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - @assert pixel 5,45 ==~ 0,255,0,255; - @assert pixel 95,45 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textBaseline = 'middle'; + ctx.fillText('CC', 0, 25); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + @assert pixel 5,45 ==~ 0,255,0,255; + @assert pixel 95,45 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.baseline.alphabetic testing: - - 2d.text.baseline.alphabetic + - 2d.text.baseline.alphabetic fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textBaseline = 'alphabetic'; - ctx.fillText('CC', 0, 37.5); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - @assert pixel 5,45 ==~ 0,255,0,255; - @assert pixel 95,45 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textBaseline = 'alphabetic'; + ctx.fillText('CC', 0, 37.5); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + @assert pixel 5,45 ==~ 0,255,0,255; + @assert pixel 95,45 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.baseline.ideographic testing: - - 2d.text.baseline.ideographic + - 2d.text.baseline.ideographic fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textBaseline = 'ideographic'; - ctx.fillText('CC', 0, 31.25); - @assert pixel 5,5 ==~ 0,255,0,255; - @assert pixel 95,5 ==~ 0,255,0,255; - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - @assert pixel 5,45 ==~ 0,255,0,255; @moz-todo - @assert pixel 95,45 ==~ 0,255,0,255; @moz-todo - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textBaseline = 'ideographic'; + ctx.fillText('CC', 0, 31.25); + @assert pixel 5,5 ==~ 0,255,0,255; + @assert pixel 95,5 ==~ 0,255,0,255; + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + @assert pixel 5,45 ==~ 0,255,0,255; @moz-todo + @assert pixel 95,45 ==~ 0,255,0,255; @moz-todo + }), 500); expected: green - name: 2d.text.draw.baseline.hanging testing: - - 2d.text.baseline.hanging + - 2d.text.baseline.hanging fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textBaseline = 'hanging'; - ctx.fillText('CC', 0, 12.5); - @assert pixel 5,5 ==~ 0,255,0,255; @moz-todo - @assert pixel 95,5 ==~ 0,255,0,255; @moz-todo - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; - @assert pixel 5,45 ==~ 0,255,0,255; - @assert pixel 95,45 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textBaseline = 'hanging'; + ctx.fillText('CC', 0, 12.5); + @assert pixel 5,5 ==~ 0,255,0,255; @moz-todo + @assert pixel 95,5 ==~ 0,255,0,255; @moz-todo + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; + @assert pixel 5,45 ==~ 0,255,0,255; + @assert pixel 95,45 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.space.collapse.space desc: Space characters are converted to U+0020, and collapsed (per CSS) testing: - - 2d.text.draw.spaces + - 2d.text.draw.spaces fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('E EE', -100, 37.5); - @assert pixel 25,25 ==~ 0,255,0,255; @moz-todo - @assert pixel 75,25 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillText('E EE', -100, 37.5); + @assert pixel 25,25 ==~ 0,255,0,255; @moz-todo + @assert pixel 75,25 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.space.collapse.other desc: Space characters are converted to U+0020, and collapsed (per CSS) testing: - - 2d.text.draw.spaces + - 2d.text.draw.spaces fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText('E \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dEE', -100, 37.5); - @assert pixel 25,25 ==~ 0,255,0,255; @moz-todo - @assert pixel 75,25 ==~ 0,255,0,255; @moz-todo - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillText('E \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dEE', -100, 37.5); + @assert pixel 25,25 ==~ 0,255,0,255; @moz-todo + @assert pixel 75,25 ==~ 0,255,0,255; @moz-todo + }), 500); expected: green - name: 2d.text.draw.space.collapse.start desc: Space characters at the start of a line are collapsed (per CSS) testing: - - 2d.text.draw.spaces + - 2d.text.draw.spaces fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillText(' EE', 0, 37.5); - @assert pixel 25,25 ==~ 0,255,0,255; @moz-todo - @assert pixel 75,25 ==~ 0,255,0,255; - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillText(' EE', 0, 37.5); + @assert pixel 25,25 ==~ 0,255,0,255; @moz-todo + @assert pixel 75,25 ==~ 0,255,0,255; + }), 500); expected: green - name: 2d.text.draw.space.collapse.end desc: Space characters at the end of a line are collapsed (per CSS) testing: - - 2d.text.draw.spaces + - 2d.text.draw.spaces fonts: - - CanvasTest + - CanvasTest code: | - ctx.font = '50px CanvasTest'; - deferTest(); - step_timeout(t.step_func_done(function () { - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#0f0'; - ctx.textAlign = 'right'; - ctx.fillText('EE ', 100, 37.5); - @assert pixel 25,25 ==~ 0,255,0,255; - @assert pixel 75,25 ==~ 0,255,0,255; @moz-todo - }), 500); + ctx.font = '50px CanvasTest'; + deferTest(); + step_timeout(t.step_func_done(function () { + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.textAlign = 'right'; + ctx.fillText('EE ', 100, 37.5); + @assert pixel 25,25 ==~ 0,255,0,255; + @assert pixel 75,25 ==~ 0,255,0,255; @moz-todo + }), 500); expected: green - - name: 2d.text.measure.width.space desc: Space characters are converted to U+0020 and collapsed (per CSS) testing: - - 2d.text.measure.spaces + - 2d.text.measure.spaces fonts: - - CanvasTest + - CanvasTest code: | - deferTest(); - var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); - document.fonts.add(f); - document.fonts.ready.then(() => { - step_timeout(t.step_func_done(function () { - ctx.font = '50px CanvasTest'; - @assert ctx.measureText('A B').width === 150; - @assert ctx.measureText('A B').width === 200; - @assert ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width === 150; @moz-todo - @assert ctx.measureText('A \x0b B').width >= 200; - - @assert ctx.measureText(' AB').width === 100; @moz-todo - @assert ctx.measureText('AB ').width === 100; @moz-todo - }), 500); - }); + deferTest(); + var f = new FontFace("CanvasTest", "/fonts/CanvasTest.ttf"); + document.fonts.add(f); + document.fonts.ready.then(() => { + step_timeout(t.step_func_done(function () { + ctx.font = '50px CanvasTest'; + @assert ctx.measureText('A B').width === 150; + @assert ctx.measureText('A B').width === 200; + @assert ctx.measureText('A \x09\x0a\x0c\x0d \x09\x0a\x0c\x0dB').width === 150; @moz-todo + @assert ctx.measureText('A \x0b B').width >= 200; + + @assert ctx.measureText(' AB').width === 100; @moz-todo + @assert ctx.measureText('AB ').width === 100; @moz-todo + }), 500); + }); - name: 2d.text.measure.rtl.text desc: Measurement should follow canvas direction instead text direction testing: - - 2d.text.measure.rtl.text + - 2d.text.measure.rtl.text fonts: - - CanvasTest + - CanvasTest code: | - metrics = ctx.measureText('اَلْعَرَبِيَّةُ'); - @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight; + metrics = ctx.measureText('اَلْعَرَبِيَّةُ'); + @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight; - metrics = ctx.measureText('hello'); - @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight; + metrics = ctx.measureText('hello'); + @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight; - name: 2d.text.measure.boundingBox.textAlign desc: Measurement should be related to textAlignment testing: - - 2d.text.measure.boundingBox.textAlign + - 2d.text.measure.boundingBox.textAlign code: | - ctx.textAlign = "right"; - metrics = ctx.measureText('hello'); - @assert metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight; + ctx.textAlign = "right"; + metrics = ctx.measureText('hello'); + @assert metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight; - ctx.textAlign = "left" - metrics = ctx.measureText('hello'); - @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight; + ctx.textAlign = "left" + metrics = ctx.measureText('hello'); + @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight; - name: 2d.text.measure.boundingBox.direction desc: Measurement should follow text direction testing: - - 2d.text.measure.boundingBox.direction + - 2d.text.measure.boundingBox.direction code: | - ctx.direction = "ltr"; - metrics = ctx.measureText('hello'); - @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight; + ctx.direction = "ltr"; + metrics = ctx.measureText('hello'); + @assert metrics.actualBoundingBoxLeft < metrics.actualBoundingBoxRight; - ctx.direction = "rtl"; - metrics = ctx.measureText('hello'); - @assert metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight; + ctx.direction = "rtl"; + metrics = ctx.measureText('hello'); + @assert metrics.actualBoundingBoxLeft > metrics.actualBoundingBoxRight; diff --git a/test/wpt/the-canvas-element.yaml b/test/wpt/the-canvas-element.yaml index 5abee0300..4a1aaa88c 100644 --- a/test/wpt/the-canvas-element.yaml +++ b/test/wpt/the-canvas-element.yaml @@ -1,125 +1,126 @@ - name: 2d.getcontext.exists desc: The 2D context is implemented testing: - - context.2d + - context.2d code: | - @assert canvas.getContext('2d') !== null; + @assert canvas.getContext('2d') !== null; - name: 2d.getcontext.invalid.args desc: Calling getContext with invalid arguments. testing: - - context.2d + - context.2d code: | - @assert canvas.getContext('') === null; - @assert canvas.getContext('2d#') === null; - @assert canvas.getContext('This is clearly not a valid context name.') === null; - @assert canvas.getContext('2d\0') === null; - @assert canvas.getContext('2\uFF44') === null; - @assert canvas.getContext('2D') === null; - @assert throws TypeError canvas.getContext(); - @assert canvas.getContext('null') === null; - @assert canvas.getContext('undefined') === null; + @assert canvas.getContext('') === null; + @assert canvas.getContext('2d#') === null; + @assert canvas.getContext('This is clearly not a valid context name.') === null; + @assert canvas.getContext('2d\0') === null; + @assert canvas.getContext('2\uFF44') === null; + @assert canvas.getContext('2D') === null; + @assert throws TypeError canvas.getContext(); + @assert canvas.getContext('null') === null; + @assert canvas.getContext('undefined') === null; - name: 2d.getcontext.extraargs.create desc: The 2D context doesn't throw with extra getContext arguments (new context) testing: - - context.2d.extraargs + - context.2d.extraargs code: | - @assert document.createElement("canvas").getContext('2d', false, {}, [], 1, "2") !== null; - @assert document.createElement("canvas").getContext('2d', 123) !== null; - @assert document.createElement("canvas").getContext('2d', "test") !== null; - @assert document.createElement("canvas").getContext('2d', undefined) !== null; - @assert document.createElement("canvas").getContext('2d', null) !== null; - @assert document.createElement("canvas").getContext('2d', Symbol.hasInstance) !== null; + @assert document.createElement("canvas").getContext('2d', false, {}, [], 1, "2") !== null; + @assert document.createElement("canvas").getContext('2d', 123) !== null; + @assert document.createElement("canvas").getContext('2d', "test") !== null; + @assert document.createElement("canvas").getContext('2d', undefined) !== null; + @assert document.createElement("canvas").getContext('2d', null) !== null; + @assert document.createElement("canvas").getContext('2d', Symbol.hasInstance) !== null; - name: 2d.getcontext.extraargs.cache desc: The 2D context doesn't throw with extra getContext arguments (cached) testing: - - context.2d.extraargs + - context.2d.extraargs code: | - @assert canvas.getContext('2d', false, {}, [], 1, "2") !== null; - @assert canvas.getContext('2d', 123) !== null; - @assert canvas.getContext('2d', "test") !== null; - @assert canvas.getContext('2d', undefined) !== null; - @assert canvas.getContext('2d', null) !== null; - @assert canvas.getContext('2d', Symbol.hasInstance) !== null; + @assert canvas.getContext('2d', false, {}, [], 1, "2") !== null; + @assert canvas.getContext('2d', 123) !== null; + @assert canvas.getContext('2d', "test") !== null; + @assert canvas.getContext('2d', undefined) !== null; + @assert canvas.getContext('2d', null) !== null; + @assert canvas.getContext('2d', Symbol.hasInstance) !== null; - name: 2d.type.exists desc: The 2D context interface is a property of 'window' notes: &bindings Defined in "Web IDL" (draft) testing: - - context.2d.type + - context.2d.type code: | - @assert window.CanvasRenderingContext2D; + @assert window.CanvasRenderingContext2D; - name: 2d.type.prototype - desc: window.CanvasRenderingContext2D.prototype are not [[Writable]] and not [[Configurable]], - and its methods are [[Configurable]]. + desc: + window.CanvasRenderingContext2D.prototype are not [[Writable]] and not [[Configurable]], + and its methods are [[Configurable]]. notes: *bindings testing: - - context.2d.type + - context.2d.type code: | - @assert window.CanvasRenderingContext2D.prototype; - @assert window.CanvasRenderingContext2D.prototype.fill; - window.CanvasRenderingContext2D.prototype = null; - @assert window.CanvasRenderingContext2D.prototype; - delete window.CanvasRenderingContext2D.prototype; - @assert window.CanvasRenderingContext2D.prototype; - window.CanvasRenderingContext2D.prototype.fill = 1; - @assert window.CanvasRenderingContext2D.prototype.fill === 1; - delete window.CanvasRenderingContext2D.prototype.fill; - @assert window.CanvasRenderingContext2D.prototype.fill === undefined; + @assert window.CanvasRenderingContext2D.prototype; + @assert window.CanvasRenderingContext2D.prototype.fill; + window.CanvasRenderingContext2D.prototype = null; + @assert window.CanvasRenderingContext2D.prototype; + delete window.CanvasRenderingContext2D.prototype; + @assert window.CanvasRenderingContext2D.prototype; + window.CanvasRenderingContext2D.prototype.fill = 1; + @assert window.CanvasRenderingContext2D.prototype.fill === 1; + delete window.CanvasRenderingContext2D.prototype.fill; + @assert window.CanvasRenderingContext2D.prototype.fill === undefined; - name: 2d.type.replace desc: Interface methods can be overridden notes: *bindings testing: - - context.2d.type + - context.2d.type code: | - var fillRect = window.CanvasRenderingContext2D.prototype.fillRect; - window.CanvasRenderingContext2D.prototype.fillRect = function (x, y, w, h) - { - this.fillStyle = '#0f0'; - fillRect.call(this, x, y, w, h); - }; - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + var fillRect = window.CanvasRenderingContext2D.prototype.fillRect; + window.CanvasRenderingContext2D.prototype.fillRect = function (x, y, w, h) + { + this.fillStyle = '#0f0'; + fillRect.call(this, x, y, w, h); + }; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.type.extend desc: Interface methods can be added notes: *bindings testing: - - context.2d.type + - context.2d.type code: | - window.CanvasRenderingContext2D.prototype.fillRectGreen = function (x, y, w, h) - { - this.fillStyle = '#0f0'; - this.fillRect(x, y, w, h); - }; - ctx.fillStyle = '#f00'; - ctx.fillRectGreen(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + window.CanvasRenderingContext2D.prototype.fillRectGreen = function (x, y, w, h) + { + this.fillStyle = '#0f0'; + this.fillRect(x, y, w, h); + }; + ctx.fillStyle = '#f00'; + ctx.fillRectGreen(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.getcontext.unique desc: getContext('2d') returns the same object testing: - - context.unique + - context.unique code: | - @assert canvas.getContext('2d') === canvas.getContext('2d'); + @assert canvas.getContext('2d') === canvas.getContext('2d'); - name: 2d.getcontext.shared desc: getContext('2d') returns objects which share canvas state testing: - - context.unique + - context.unique code: | - var ctx2 = canvas.getContext('2d'); - ctx.fillStyle = '#f00'; - ctx2.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + var ctx2 = canvas.getContext('2d'); + ctx.fillStyle = '#f00'; + ctx2.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.scaled @@ -127,43 +128,42 @@ canvas: 'width="50" height="25" style="width: 100px; height: 50px"' manual: code: | - ctx.fillStyle = '#00f'; - ctx.fillRect(0, 0, 50, 25); - ctx.fillStyle = '#0ff'; - ctx.fillRect(0, 0, 25, 10); + ctx.fillStyle = '#00f'; + ctx.fillRect(0, 0, 50, 25); + ctx.fillStyle = '#0ff'; + ctx.fillRect(0, 0, 25, 10); expected: | - size 100 50 - cr.set_source_rgb(0, 0, 1) - cr.rectangle(0, 0, 100, 50) - cr.fill() - cr.set_source_rgb(0, 1, 1) - cr.rectangle(0, 0, 50, 20) - cr.fill() + size 100 50 + cr.set_source_rgb(0, 0, 1) + cr.rectangle(0, 0, 100, 50) + cr.fill() + cr.set_source_rgb(0, 1, 1) + cr.rectangle(0, 0, 50, 20) + cr.fill() - name: 2d.canvas.reference desc: CanvasRenderingContext2D.canvas refers back to its canvas testing: - - 2d.canvas + - 2d.canvas code: | - @assert ctx.canvas === canvas; + @assert ctx.canvas === canvas; - name: 2d.canvas.readonly desc: CanvasRenderingContext2D.canvas is readonly testing: - - 2d.canvas.attribute + - 2d.canvas.attribute code: | - var c = document.createElement('canvas'); - var d = ctx.canvas; - @assert c !== d; - ctx.canvas = c; - @assert ctx.canvas === d; + var c = document.createElement('canvas'); + var d = ctx.canvas; + @assert c !== d; + ctx.canvas = c; + @assert ctx.canvas === d; - name: 2d.canvas.context desc: checks CanvasRenderingContext2D prototype testing: - - 2d.path.contexttypexxx.basic + - 2d.path.contexttypexxx.basic code: | - @assert Object.getPrototypeOf(CanvasRenderingContext2D.prototype) === Object.prototype; - @assert Object.getPrototypeOf(ctx) === CanvasRenderingContext2D.prototype; - t.done(); - + @assert Object.getPrototypeOf(CanvasRenderingContext2D.prototype) === Object.prototype; + @assert Object.getPrototypeOf(ctx) === CanvasRenderingContext2D.prototype; + t.done(); diff --git a/test/wpt/the-canvas-state.yaml b/test/wpt/the-canvas-state.yaml index dda6dc314..492bea4d1 100644 --- a/test/wpt/the-canvas-state.yaml +++ b/test/wpt/the-canvas-state.yaml @@ -1,107 +1,105 @@ - name: 2d.state.saverestore.transformation desc: save()/restore() affects the current transformation matrix testing: - - 2d.state.transformation + - 2d.state.transformation code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.save(); - ctx.translate(200, 0); - ctx.restore(); - ctx.fillStyle = '#f00'; - ctx.fillRect(-200, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.translate(200, 0); + ctx.restore(); + ctx.fillStyle = '#f00'; + ctx.fillRect(-200, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.state.saverestore.clip desc: save()/restore() affects the clipping path testing: - - 2d.state.clip + - 2d.state.clip code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.save(); - ctx.rect(0, 0, 1, 1); - ctx.clip(); - ctx.restore(); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.rect(0, 0, 1, 1); + ctx.clip(); + ctx.restore(); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.state.saverestore.path desc: save()/restore() does not affect the current path testing: - - 2d.state.path + - 2d.state.path code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.save(); - ctx.rect(0, 0, 100, 50); - ctx.restore(); - ctx.fillStyle = '#0f0'; - ctx.fill(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.rect(0, 0, 100, 50); + ctx.restore(); + ctx.fillStyle = '#0f0'; + ctx.fill(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.state.saverestore.bitmap desc: save()/restore() does not affect the current bitmap testing: - - 2d.state.bitmap + - 2d.state.bitmap code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.save(); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.restore(); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.save(); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.restore(); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.state.saverestore.stack desc: save()/restore() can be nested as a stack testing: - - 2d.state.save - - 2d.state.restore + - 2d.state.save + - 2d.state.restore code: | - ctx.lineWidth = 1; - ctx.save(); - ctx.lineWidth = 2; - ctx.save(); - ctx.lineWidth = 3; - @assert ctx.lineWidth === 3; - ctx.restore(); - @assert ctx.lineWidth === 2; - ctx.restore(); - @assert ctx.lineWidth === 1; + ctx.lineWidth = 1; + ctx.save(); + ctx.lineWidth = 2; + ctx.save(); + ctx.lineWidth = 3; + @assert ctx.lineWidth === 3; + ctx.restore(); + @assert ctx.lineWidth === 2; + ctx.restore(); + @assert ctx.lineWidth === 1; - name: 2d.state.saverestore.stackdepth desc: save()/restore() stack depth is not unreasonably limited testing: - - 2d.state.save - - 2d.state.restore + - 2d.state.save + - 2d.state.restore code: | - var limit = 512; - for (var i = 1; i < limit; ++i) - { - ctx.save(); - ctx.lineWidth = i; - } - for (var i = limit-1; i > 0; --i) - { - @assert ctx.lineWidth === i; - ctx.restore(); - } + var limit = 512; + for (var i = 1; i < limit; ++i) + { + ctx.save(); + ctx.lineWidth = i; + } + for (var i = limit-1; i > 0; --i) + { + @assert ctx.lineWidth === i; + ctx.restore(); + } - name: 2d.state.saverestore.underflow desc: restore() with an empty stack has no effect testing: - - 2d.state.restore.underflow + - 2d.state.restore.underflow code: | - for (var i = 0; i < 16; ++i) - ctx.restore(); - ctx.lineWidth = 0.5; - ctx.restore(); - @assert ctx.lineWidth === 0.5; - - + for (var i = 0; i < 16; ++i) + ctx.restore(); + ctx.lineWidth = 0.5; + ctx.restore(); + @assert ctx.lineWidth === 0.5; diff --git a/test/wpt/transformations.yaml b/test/wpt/transformations.yaml index b6aaec73c..37e9741a7 100644 --- a/test/wpt/transformations.yaml +++ b/test/wpt/transformations.yaml @@ -1,402 +1,399 @@ - name: 2d.transformation.order desc: Transformations are applied in the right order testing: - - 2d.transformation.order + - 2d.transformation.order code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.scale(2, 1); - ctx.rotate(Math.PI / 2); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, -50, 50, 50); - @assert pixel 75,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.scale(2, 1); + ctx.rotate(Math.PI / 2); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, -50, 50, 50); + @assert pixel 75,25 == 0,255,0,255; expected: green - - name: 2d.transformation.scale.basic desc: scale() works testing: - - 2d.transformation.scale + - 2d.transformation.scale code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.scale(2, 4); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 12.5); - @assert pixel 90,40 == 0,255,0,255; + ctx.scale(2, 4); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 12.5); + @assert pixel 90,40 == 0,255,0,255; expected: green - name: 2d.transformation.scale.zero desc: scale() with a scale factor of zero works testing: - - 2d.transformation.scale + - 2d.transformation.scale code: | - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - - ctx.save(); - ctx.translate(50, 0); - ctx.scale(0, 1); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.restore(); - - ctx.save(); - ctx.translate(0, 25); - ctx.scale(1, 0); - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - ctx.restore(); - - canvas.toDataURL(); - - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + + ctx.save(); + ctx.translate(50, 0); + ctx.scale(0, 1); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.restore(); + + ctx.save(); + ctx.translate(0, 25); + ctx.scale(1, 0); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + ctx.restore(); + + canvas.toDataURL(); + + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.transformation.scale.negative desc: scale() with negative scale factors works testing: - - 2d.transformation.scale + - 2d.transformation.scale code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.save(); - ctx.scale(-1, 1); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-50, 0, 50, 50); - ctx.restore(); - - ctx.save(); - ctx.scale(1, -1); - ctx.fillStyle = '#0f0'; - ctx.fillRect(50, -50, 50, 50); - ctx.restore(); - @assert pixel 25,25 == 0,255,0,255; - @assert pixel 75,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.save(); + ctx.scale(-1, 1); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-50, 0, 50, 50); + ctx.restore(); + + ctx.save(); + ctx.scale(1, -1); + ctx.fillStyle = '#0f0'; + ctx.fillRect(50, -50, 50, 50); + ctx.restore(); + @assert pixel 25,25 == 0,255,0,255; + @assert pixel 75,25 == 0,255,0,255; expected: green - name: 2d.transformation.scale.large desc: scale() with large scale factors works notes: Not really that large at all, but it hits the limits in Firefox. testing: - - 2d.transformation.scale + - 2d.transformation.scale code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.scale(1e5, 1e5); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 1, 1); - @assert pixel 50,25 == 0,255,0,255; + ctx.scale(1e5, 1e5); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 1, 1); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.transformation.scale.nonfinite desc: scale() with Infinity/NaN is ignored testing: - - 2d.nonfinite + - 2d.nonfinite code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 10); - @nonfinite ctx.scale(<0.1 Infinity -Infinity NaN>, <0.1 Infinity -Infinity NaN>); + ctx.translate(100, 10); + @nonfinite ctx.scale(<0.1 Infinity -Infinity NaN>, <0.1 Infinity -Infinity NaN>); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -10, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.transformation.scale.multiple desc: Multiple scale()s combine testing: - - 2d.transformation.scale.multiple + - 2d.transformation.scale.multiple code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.scale(Math.sqrt(2), Math.sqrt(2)); - ctx.scale(Math.sqrt(2), Math.sqrt(2)); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 25); - @assert pixel 90,40 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.scale(Math.sqrt(2), Math.sqrt(2)); + ctx.scale(Math.sqrt(2), Math.sqrt(2)); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 25); + @assert pixel 90,40 == 0,255,0,255; expected: green - - name: 2d.transformation.rotate.zero desc: rotate() by 0 does nothing testing: - - 2d.transformation.rotate + - 2d.transformation.rotate code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.rotate(0); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + ctx.rotate(0); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.transformation.rotate.radians desc: rotate() uses radians testing: - - 2d.transformation.rotate.radians + - 2d.transformation.rotate.radians code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -50, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + ctx.rotate(Math.PI); // should fail obviously if this is 3.1 degrees + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -50, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.transformation.rotate.direction desc: rotate() is clockwise testing: - - 2d.transformation.rotate.direction + - 2d.transformation.rotate.direction code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.rotate(Math.PI / 2); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, -100, 50, 100); - @assert pixel 50,25 == 0,255,0,255; + ctx.rotate(Math.PI / 2); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, -100, 50, 100); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.transformation.rotate.wrap desc: rotate() wraps large positive values correctly testing: - - 2d.transformation.rotate + - 2d.transformation.rotate code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi) - // We need about pi +/- 0.001 in order to get correct-looking results - // 32-bit floats can store pi*4097 with precision 2^-10, so that should - // be safe enough on reasonable implementations - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -50, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,2 == 0,255,0,255; - @assert pixel 98,47 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.rotate(Math.PI * (1 + 4096)); // == pi (mod 2*pi) + // We need about pi +/- 0.001 in order to get correct-looking results + // 32-bit floats can store pi*4097 with precision 2^-10, so that should + // be safe enough on reasonable implementations + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -50, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,2 == 0,255,0,255; + @assert pixel 98,47 == 0,255,0,255; expected: green - name: 2d.transformation.rotate.wrapnegative desc: rotate() wraps large negative values correctly testing: - - 2d.transformation.rotate + - 2d.transformation.rotate code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.rotate(-Math.PI * (1 + 4096)); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -50, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - @assert pixel 98,2 == 0,255,0,255; - @assert pixel 98,47 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.rotate(-Math.PI * (1 + 4096)); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -50, 100, 50); + @assert pixel 50,25 == 0,255,0,255; + @assert pixel 98,2 == 0,255,0,255; + @assert pixel 98,47 == 0,255,0,255; expected: green - name: 2d.transformation.rotate.nonfinite desc: rotate() with Infinity/NaN is ignored testing: - - 2d.nonfinite + - 2d.nonfinite code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 10); - @nonfinite ctx.rotate(<0.1 Infinity -Infinity NaN>); + ctx.translate(100, 10); + @nonfinite ctx.rotate(<0.1 Infinity -Infinity NaN>); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -10, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.transformation.translate.basic desc: translate() works testing: - - 2d.transformation.translate + - 2d.transformation.translate code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 50); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -50, 100, 50); - @assert pixel 90,40 == 0,255,0,255; + ctx.translate(100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -50, 100, 50); + @assert pixel 90,40 == 0,255,0,255; expected: green - name: 2d.transformation.translate.nonfinite desc: translate() with Infinity/NaN is ignored testing: - - 2d.nonfinite + - 2d.nonfinite code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 10); - @nonfinite ctx.translate(<0.1 Infinity -Infinity NaN>, <0.1 Infinity -Infinity NaN>); + ctx.translate(100, 10); + @nonfinite ctx.translate(<0.1 Infinity -Infinity NaN>, <0.1 Infinity -Infinity NaN>); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -10, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - - name: 2d.transformation.transform.identity desc: transform() with the identity matrix does nothing testing: - - 2d.transformation.transform + - 2d.transformation.transform code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.transform(1,0, 0,1, 0,0); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + ctx.transform(1,0, 0,1, 0,0); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.transformation.transform.skewed desc: transform() with skewy matrix transforms correctly testing: - - 2d.transformation.transform + - 2d.transformation.transform code: | - // Create green with a red square ring inside it - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(20, 10, 60, 30); - ctx.fillStyle = '#0f0'; - ctx.fillRect(40, 20, 20, 10); - - // Draw a skewed shape to fill that gap, to make sure it is aligned correctly - ctx.transform(1,4, 2,3, 5,6); - // Post-transform coordinates: - // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; - // Hence pre-transform coordinates: - var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2], - [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2], - [-7.4,11.2]]; - ctx.beginPath(); - ctx.moveTo(pts[0][0], pts[0][1]); - for (var i = 0; i < pts.length; ++i) - ctx.lineTo(pts[i][0], pts[i][1]); - ctx.fill(); - @assert pixel 21,11 == 0,255,0,255; - @assert pixel 79,11 == 0,255,0,255; - @assert pixel 21,39 == 0,255,0,255; - @assert pixel 79,39 == 0,255,0,255; - @assert pixel 39,19 == 0,255,0,255; - @assert pixel 61,19 == 0,255,0,255; - @assert pixel 39,31 == 0,255,0,255; - @assert pixel 61,31 == 0,255,0,255; + // Create green with a red square ring inside it + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(20, 10, 60, 30); + ctx.fillStyle = '#0f0'; + ctx.fillRect(40, 20, 20, 10); + + // Draw a skewed shape to fill that gap, to make sure it is aligned correctly + ctx.transform(1,4, 2,3, 5,6); + // Post-transform coordinates: + // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; + // Hence pre-transform coordinates: + var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2], + [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2], + [-7.4,11.2]]; + ctx.beginPath(); + ctx.moveTo(pts[0][0], pts[0][1]); + for (var i = 0; i < pts.length; ++i) + ctx.lineTo(pts[i][0], pts[i][1]); + ctx.fill(); + @assert pixel 21,11 == 0,255,0,255; + @assert pixel 79,11 == 0,255,0,255; + @assert pixel 21,39 == 0,255,0,255; + @assert pixel 79,39 == 0,255,0,255; + @assert pixel 39,19 == 0,255,0,255; + @assert pixel 61,19 == 0,255,0,255; + @assert pixel 39,31 == 0,255,0,255; + @assert pixel 61,31 == 0,255,0,255; expected: green - name: 2d.transformation.transform.multiply desc: transform() multiplies the CTM testing: - - 2d.transformation.transform.multiply + - 2d.transformation.transform.multiply code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.transform(1,2, 3,4, 5,6); - ctx.transform(-2,1, 3/2,-1/2, 1,-2); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.transform(1,2, 3,4, 5,6); + ctx.transform(-2,1, 3/2,-1/2, 1,-2); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.transformation.transform.nonfinite desc: transform() with Infinity/NaN is ignored testing: - - 2d.nonfinite + - 2d.nonfinite code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 10); - @nonfinite ctx.transform(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); + ctx.translate(100, 10); + @nonfinite ctx.transform(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -10, 100, 50); - @assert pixel 50,25 == 0,255,0,255; + @assert pixel 50,25 == 0,255,0,255; expected: green - name: 2d.transformation.setTransform.skewed testing: - - 2d.transformation.setTransform + - 2d.transformation.setTransform code: | - // Create green with a red square ring inside it - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 100, 50); - ctx.fillStyle = '#f00'; - ctx.fillRect(20, 10, 60, 30); - ctx.fillStyle = '#0f0'; - ctx.fillRect(40, 20, 20, 10); - - // Draw a skewed shape to fill that gap, to make sure it is aligned correctly - ctx.setTransform(1,4, 2,3, 5,6); - // Post-transform coordinates: - // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; - // Hence pre-transform coordinates: - var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2], - [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2], - [-7.4,11.2]]; - ctx.beginPath(); - ctx.moveTo(pts[0][0], pts[0][1]); - for (var i = 0; i < pts.length; ++i) - ctx.lineTo(pts[i][0], pts[i][1]); - ctx.fill(); - @assert pixel 21,11 == 0,255,0,255; - @assert pixel 79,11 == 0,255,0,255; - @assert pixel 21,39 == 0,255,0,255; - @assert pixel 79,39 == 0,255,0,255; - @assert pixel 39,19 == 0,255,0,255; - @assert pixel 61,19 == 0,255,0,255; - @assert pixel 39,31 == 0,255,0,255; - @assert pixel 61,31 == 0,255,0,255; + // Create green with a red square ring inside it + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(20, 10, 60, 30); + ctx.fillStyle = '#0f0'; + ctx.fillRect(40, 20, 20, 10); + + // Draw a skewed shape to fill that gap, to make sure it is aligned correctly + ctx.setTransform(1,4, 2,3, 5,6); + // Post-transform coordinates: + // [[20,10],[80,10],[80,40],[20,40],[20,10],[40,20],[40,30],[60,30],[60,20],[40,20],[20,10]]; + // Hence pre-transform coordinates: + var pts=[[-7.4,11.2],[-43.4,59.2],[-31.4,53.2],[4.6,5.2],[-7.4,11.2], + [-15.4,25.2],[-11.4,23.2],[-23.4,39.2],[-27.4,41.2],[-15.4,25.2], + [-7.4,11.2]]; + ctx.beginPath(); + ctx.moveTo(pts[0][0], pts[0][1]); + for (var i = 0; i < pts.length; ++i) + ctx.lineTo(pts[i][0], pts[i][1]); + ctx.fill(); + @assert pixel 21,11 == 0,255,0,255; + @assert pixel 79,11 == 0,255,0,255; + @assert pixel 21,39 == 0,255,0,255; + @assert pixel 79,39 == 0,255,0,255; + @assert pixel 39,19 == 0,255,0,255; + @assert pixel 61,19 == 0,255,0,255; + @assert pixel 39,31 == 0,255,0,255; + @assert pixel 61,31 == 0,255,0,255; expected: green - name: 2d.transformation.setTransform.multiple testing: - - 2d.transformation.setTransform.identity + - 2d.transformation.setTransform.identity code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); - - ctx.setTransform(1/2,0, 0,1/2, 0,0); - ctx.setTransform(); - ctx.setTransform(2,0, 0,2, 0,0); - ctx.fillStyle = '#0f0'; - ctx.fillRect(0, 0, 50, 25); - @assert pixel 75,35 == 0,255,0,255; + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); + + ctx.setTransform(1/2,0, 0,1/2, 0,0); + ctx.setTransform(); + ctx.setTransform(2,0, 0,2, 0,0); + ctx.fillStyle = '#0f0'; + ctx.fillRect(0, 0, 50, 25); + @assert pixel 75,35 == 0,255,0,255; expected: green - name: 2d.transformation.setTransform.nonfinite desc: setTransform() with Infinity/NaN is ignored testing: - - 2d.nonfinite + - 2d.nonfinite code: | - ctx.fillStyle = '#f00'; - ctx.fillRect(0, 0, 100, 50); + ctx.fillStyle = '#f00'; + ctx.fillRect(0, 0, 100, 50); - ctx.translate(100, 10); - @nonfinite ctx.setTransform(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); + ctx.translate(100, 10); + @nonfinite ctx.setTransform(<0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>, <0 Infinity -Infinity NaN>); - ctx.fillStyle = '#0f0'; - ctx.fillRect(-100, -10, 100, 50); + ctx.fillStyle = '#0f0'; + ctx.fillRect(-100, -10, 100, 50); - @assert pixel 50,25 == 0,255,0,255; - expected: green \ No newline at end of file + @assert pixel 50,25 == 0,255,0,255; + expected: green diff --git a/types/Readme.md b/types/Readme.md deleted file mode 100644 index 4beb7f528..000000000 --- a/types/Readme.md +++ /dev/null @@ -1,3 +0,0 @@ -Notes: - -* `"unified-signatures": false` because of https://github.com/Microsoft/dtslint/issues/183 diff --git a/types/index.d.ts b/types/index.d.ts deleted file mode 100644 index 8bcfd105e..000000000 --- a/types/index.d.ts +++ /dev/null @@ -1,484 +0,0 @@ -// TypeScript Version: 3.0 - -import { Readable } from 'stream' - -export interface PngConfig { - /** Specifies the ZLIB compression level. Defaults to 6. */ - compressionLevel?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 - /** - * Any bitwise combination of `PNG_FILTER_NONE`, `PNG_FILTER_SUB`, - * `PNG_FILTER_UP`, `PNG_FILTER_AVG` and `PNG_FILTER_PATETH`; or one of - * `PNG_ALL_FILTERS` or `PNG_NO_FILTERS` (all are properties of the canvas - * instance). These specify which filters *may* be used by libpng. During - * encoding, libpng will select the best filter from this list of allowed - * filters. Defaults to `canvas.PNG_ALL_FILTERS`. - */ - filters?: number - /** - * _For creating indexed PNGs._ The palette of colors. Entries should be in - * RGBA order. - */ - palette?: Uint8ClampedArray - /** - * _For creating indexed PNGs._ The index of the background color. Defaults - * to 0. - */ - backgroundIndex?: number - /** pixels per inch */ - resolution?: number -} - -export interface JpegConfig { - /** Specifies the quality, between 0 and 1. Defaults to 0.75. */ - quality?: number - /** Enables progressive encoding. Defaults to `false`. */ - progressive?: boolean - /** Enables 2x2 chroma subsampling. Defaults to `true`. */ - chromaSubsampling?: boolean -} - -export interface PdfConfig { - title?: string - author?: string - subject?: string - keywords?: string - creator?: string - creationDate?: Date - modDate?: Date -} - -export interface NodeCanvasRenderingContext2DSettings { - alpha?: boolean - pixelFormat?: 'RGBA32' | 'RGB24' | 'A8' | 'RGB16_565' | 'A1' | 'RGB30' -} - -export class Canvas { - width: number - height: number - - /** _Non standard._ The type of the canvas. */ - readonly type: 'image'|'pdf'|'svg' - - /** _Non standard._ Getter. The stride used by the canvas. */ - readonly stride: number; - - /** Constant used in PNG encoding methods. */ - readonly PNG_NO_FILTERS: number - /** Constant used in PNG encoding methods. */ - readonly PNG_ALL_FILTERS: number - /** Constant used in PNG encoding methods. */ - readonly PNG_FILTER_NONE: number - /** Constant used in PNG encoding methods. */ - readonly PNG_FILTER_SUB: number - /** Constant used in PNG encoding methods. */ - readonly PNG_FILTER_UP: number - /** Constant used in PNG encoding methods. */ - readonly PNG_FILTER_AVG: number - /** Constant used in PNG encoding methods. */ - readonly PNG_FILTER_PAETH: number - - constructor(width: number, height: number, type?: 'image'|'pdf'|'svg') - - getContext(contextId: '2d', contextAttributes?: NodeCanvasRenderingContext2DSettings): CanvasRenderingContext2D - - /** - * For image canvases, encodes the canvas as a PNG. For PDF canvases, - * encodes the canvas as a PDF. For SVG canvases, encodes the canvas as an - * SVG. - */ - toBuffer(cb: (err: Error|null, result: Buffer) => void): void - toBuffer(cb: (err: Error|null, result: Buffer) => void, mimeType: 'image/png', config?: PngConfig): void - toBuffer(cb: (err: Error|null, result: Buffer) => void, mimeType: 'image/jpeg', config?: JpegConfig): void - - /** - * For image canvases, encodes the canvas as a PNG. For PDF canvases, - * encodes the canvas as a PDF. For SVG canvases, encodes the canvas as an - * SVG. - */ - toBuffer(): Buffer - toBuffer(mimeType: 'image/png', config?: PngConfig): Buffer - toBuffer(mimeType: 'image/jpeg', config?: JpegConfig): Buffer - toBuffer(mimeType: 'application/pdf', config?: PdfConfig): Buffer - - /** - * Returns the unencoded pixel data, top-to-bottom. On little-endian (most) - * systems, the array will be ordered BGRA; on big-endian systems, it will - * be ARGB. - */ - toBuffer(mimeType: 'raw'): Buffer - - createPNGStream(config?: PngConfig): PNGStream - createJPEGStream(config?: JpegConfig): JPEGStream - createPDFStream(config?: PdfConfig): PDFStream - - /** Defaults to PNG image. */ - toDataURL(): string - toDataURL(mimeType: 'image/png'): string - toDataURL(mimeType: 'image/jpeg', quality?: number): string - /** _Non-standard._ Defaults to PNG image. */ - toDataURL(cb: (err: Error|null, result: string) => void): void - /** _Non-standard._ */ - toDataURL(mimeType: 'image/png', cb: (err: Error|null, result: string) => void): void - /** _Non-standard._ */ - toDataURL(mimeType: 'image/jpeg', cb: (err: Error|null, result: string) => void): void - /** _Non-standard._ */ - toDataURL(mimeType: 'image/jpeg', config: JpegConfig, cb: (err: Error|null, result: string) => void): void - /** _Non-standard._ */ - toDataURL(mimeType: 'image/jpeg', quality: number, cb: (err: Error|null, result: string) => void): void -} - -export interface TextMetrics { - readonly actualBoundingBoxAscent: number; - readonly actualBoundingBoxDescent: number; - readonly actualBoundingBoxLeft: number; - readonly actualBoundingBoxRight: number; - readonly fontBoundingBoxAscent: number; - readonly fontBoundingBoxDescent: number; - readonly width: number; -} - -export type CanvasFillRule = 'evenodd' | 'nonzero'; - -export type GlobalCompositeOperation = - | 'clear' - | 'copy' - | 'destination' - | 'source-over' - | 'destination-over' - | 'source-in' - | 'destination-in' - | 'source-out' - | 'destination-out' - | 'source-atop' - | 'destination-atop' - | 'xor' - | 'lighter' - | 'normal' - | 'multiply' - | 'screen' - | 'overlay' - | 'darken' - | 'lighten' - | 'color-dodge' - | 'color-burn' - | 'hard-light' - | 'soft-light' - | 'difference' - | 'exclusion' - | 'hue' - | 'saturation' - | 'color' - | 'luminosity' - | 'saturate'; - -export type CanvasLineCap = 'butt' | 'round' | 'square'; - -export type CanvasLineJoin = 'bevel' | 'miter' | 'round'; - -export type CanvasTextBaseline = 'alphabetic' | 'bottom' | 'hanging' | 'ideographic' | 'middle' | 'top'; - -export type CanvasTextAlign = 'center' | 'end' | 'left' | 'right' | 'start'; - -export class CanvasRenderingContext2D { - drawImage(image: Canvas|Image, dx: number, dy: number): void - drawImage(image: Canvas|Image, dx: number, dy: number, dw: number, dh: number): void - drawImage(image: Canvas|Image, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void - putImageData(imagedata: ImageData, dx: number, dy: number): void; - putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void; - getImageData(sx: number, sy: number, sw: number, sh: number): ImageData; - createImageData(sw: number, sh: number): ImageData; - createImageData(imagedata: ImageData): ImageData; - /** - * For PDF canvases, adds another page. If width and/or height are omitted, - * the canvas's initial size is used. - */ - addPage(width?: number, height?: number): void - save(): void; - restore(): void; - rotate(angle: number): void; - translate(x: number, y: number): void; - transform(a: number, b: number, c: number, d: number, e: number, f: number): void; - getTransform(): DOMMatrix; - resetTransform(): void; - setTransform(transform?: DOMMatrix): void; - isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean; - scale(x: number, y: number): void; - clip(fillRule?: CanvasFillRule): void; - fill(fillRule?: CanvasFillRule): void; - stroke(): void; - fillText(text: string, x: number, y: number, maxWidth?: number): void; - strokeText(text: string, x: number, y: number, maxWidth?: number): void; - fillRect(x: number, y: number, w: number, h: number): void; - strokeRect(x: number, y: number, w: number, h: number): void; - clearRect(x: number, y: number, w: number, h: number): void; - rect(x: number, y: number, w: number, h: number): void; - roundRect(x: number, y: number, w: number, h: number, radii?: number | number[]): void; - measureText(text: string): TextMetrics; - moveTo(x: number, y: number): void; - lineTo(x: number, y: number): void; - bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; - quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; - beginPath(): void; - closePath(): void; - arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void; - arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; - ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void; - setLineDash(segments: number[]): void; - getLineDash(): number[]; - createPattern(image: Canvas|Image, repetition: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat' | '' | null): CanvasPattern - createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient; - createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient; - /** - * _Non-standard_. Defaults to 'good'. Affects pattern (gradient, image, - * etc.) rendering quality. - */ - patternQuality: 'fast' | 'good' | 'best' | 'nearest' | 'bilinear' - imageSmoothingEnabled: boolean; - globalCompositeOperation: GlobalCompositeOperation; - globalAlpha: number; - shadowColor: string; - miterLimit: number; - lineWidth: number; - lineCap: CanvasLineCap; - lineJoin: CanvasLineJoin; - lineDashOffset: number; - shadowOffsetX: number; - shadowOffsetY: number; - shadowBlur: number; - /** _Non-standard_. Sets the antialiasing mode. */ - antialias: 'default' | 'gray' | 'none' | 'subpixel' - /** - * Defaults to 'path'. The effect depends on the canvas type: - * - * * **Standard (image)** `'glyph'` and `'path'` both result in rasterized - * text. Glyph mode is faster than path, but may result in lower-quality - * text, especially when rotated or translated. - * - * * **PDF** `'glyph'` will embed text instead of paths into the PDF. This - * is faster to encode, faster to open with PDF viewers, yields a smaller - * file size and makes the text selectable. The subset of the font needed - * to render the glyphs will be embedded in the PDF. This is usually the - * mode you want to use with PDF canvases. - * - * * **SVG** glyph does not cause `` elements to be produced as one - * might expect ([cairo bug](https://gitlab.freedesktop.org/cairo/cairo/issues/253)). - * Rather, glyph will create a `` section with a `` for each - * glyph, then those glyphs be reused via `` elements. `'path'` mode - * creates a `` element for each text string. glyph mode is faster - * and yields a smaller file size. - * - * In glyph mode, `ctx.strokeText()` and `ctx.fillText()` behave the same - * (aside from using the stroke and fill style, respectively). - */ - textDrawingMode: 'path' | 'glyph' - /** - * _Non-standard_. Defaults to 'good'. Like `patternQuality`, but applies to - * transformations affecting more than just patterns. - */ - quality: 'fast' | 'good' | 'best' | 'nearest' | 'bilinear' - /** Returns or sets a `DOMMatrix` for the current transformation matrix. */ - currentTransform: DOMMatrix - fillStyle: string | CanvasGradient | CanvasPattern; - strokeStyle: string | CanvasGradient | CanvasPattern; - font: string; - textBaseline: CanvasTextBaseline; - textAlign: CanvasTextAlign; - canvas: Canvas; -} - -export class CanvasGradient { - addColorStop(offset: number, color: string): void; -} - -export class CanvasPattern { - setTransform(transform?: DOMMatrix): void; -} - -// This does not extend HTMLImageElement because there are dozens of inherited -// methods and properties that we do not provide. -export class Image { - /** Track image data */ - static readonly MODE_IMAGE: number - /** Track MIME data */ - static readonly MODE_MIME: number - - /** - * The URL, `data:` URI or local file path of the image to be loaded, or a - * Buffer instance containing an encoded image. - */ - src: string | Buffer - /** Retrieves whether the object is fully loaded. */ - readonly complete: boolean - /** Sets or retrieves the height of the image. */ - height: number - /** Sets or retrieves the width of the image. */ - width: number - - /** The original height of the image resource before sizing. */ - readonly naturalHeight: number - /** The original width of the image resource before sizing. */ - readonly naturalWidth: number - /** - * Applies to JPEG images drawn to PDF canvases only. Setting - * `img.dataMode = Image.MODE_MIME` or `Image.MODE_MIME|Image.MODE_IMAGE` - * enables image MIME data tracking. When MIME data is tracked, PDF canvases - * can embed JPEGs directly into the output, rather than re-encoding into - * PNG. This can drastically reduce filesize and speed up rendering. - */ - dataMode: number - - onload: (() => void) | null; - onerror: ((err: Error) => void) | null; -} - -/** - * Creates a Canvas instance. This function works in both Node.js and Web - * browsers, where there is no Canvas constructor. - * @param type Optionally specify to create a PDF or SVG canvas. Defaults to an - * image canvas. - */ -export function createCanvas(width: number, height: number, type?: 'pdf'|'svg'): Canvas - -/** - * Creates an ImageData instance. This function works in both Node.js and Web - * browsers. - * @param data An array containing the pixel representation of the image. - * @param height If omitted, the height is calculated based on the array's size - * and `width`. - */ -export function createImageData(data: Uint8ClampedArray, width: number, height?: number): ImageData -/** - * _Non-standard._ Creates an ImageData instance for an alternative pixel - * format, such as RGB16_565 - * @param data An array containing the pixel representation of the image. - * @param height If omitted, the height is calculated based on the array's size - * and `width`. - */ -export function createImageData(data: Uint16Array, width: number, height?: number): ImageData -/** - * Creates an ImageData instance. This function works in both Node.js and Web - * browsers. - */ -export function createImageData(width: number, height: number): ImageData - -/** - * Convenience function for loading an image with a Promise interface. This - * function works in both Node.js and Web browsers; however, the `src` must be - * a string in Web browsers (it can only be a Buffer in Node.js). - * @param src URL, `data: ` URI or (Node.js only) a local file path or Buffer - * instance. - */ -export function loadImage(src: string|Buffer, options?: any): Promise - -/** - * Registers a font that is not installed as a system font. This must be used - * before creating Canvas instances. - * @param path Path to local font file. - * @param fontFace Description of the font face, corresponding to CSS properties - * used in `@font-face` rules. - */ -export function registerFont(path: string, fontFace: {family: string, weight?: string, style?: string}): void - -/** - * Unloads all fonts - */ -export function deregisterAllFonts(): void; - -/** This class must not be constructed directly; use `canvas.createPNGStream()`. */ -export class PNGStream extends Readable {} -/** This class must not be constructed directly; use `canvas.createJPEGStream()`. */ -export class JPEGStream extends Readable {} -/** This class must not be constructed directly; use `canvas.createPDFStream()`. */ -export class PDFStream extends Readable {} - -export class DOMPoint { - w: number; - x: number; - y: number; - z: number; -} - -export class DOMMatrix { - constructor(init: string | number[]); - toString(): string; - multiply(other?: DOMMatrix): DOMMatrix; - multiplySelf(other?: DOMMatrix): DOMMatrix; - preMultiplySelf(other?: DOMMatrix): DOMMatrix; - translate(tx?: number, ty?: number, tz?: number): DOMMatrix; - translateSelf(tx?: number, ty?: number, tz?: number): DOMMatrix; - scale(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix; - scale3d(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix; - scale3dSelf(scale?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix; - scaleSelf(scaleX?: number, scaleY?: number, scaleZ?: number, originX?: number, originY?: number, originZ?: number): DOMMatrix; - rotateFromVector(x?: number, y?: number): DOMMatrix; - rotateFromVectorSelf(x?: number, y?: number): DOMMatrix; - rotate(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix; - rotateSelf(rotX?: number, rotY?: number, rotZ?: number): DOMMatrix; - rotateAxisAngle(x?: number, y?: number, z?: number, angle?: number): DOMMatrix; - rotateAxisAngleSelf(x?: number, y?: number, z?: number, angle?: number): DOMMatrix; - skewX(sx?: number): DOMMatrix; - skewXSelf(sx?: number): DOMMatrix; - skewY(sy?: number): DOMMatrix; - skewYSelf(sy?: number): DOMMatrix; - flipX(): DOMMatrix; - flipY(): DOMMatrix; - inverse(): DOMMatrix; - invertSelf(): DOMMatrix; - setMatrixValue(transformList: string): DOMMatrix; - transformPoint(point?: DOMPoint): DOMPoint; - toFloat32Array(): Float32Array; - toFloat64Array(): Float64Array; - readonly is2D: boolean; - readonly isIdentity: boolean; - a: number; - b: number; - c: number; - d: number; - e: number; - f: number; - m11: number; - m12: number; - m13: number; - m14: number; - m21: number; - m22: number; - m23: number; - m24: number; - m31: number; - m32: number; - m33: number; - m34: number; - m41: number; - m42: number; - m43: number; - m44: number; - static fromMatrix(other: DOMMatrix): DOMMatrix; - static fromFloat32Array(a: Float32Array): DOMMatrix; - static fromFloat64Array(a: Float64Array): DOMMatrix; -} - -export class ImageData { - constructor(sw: number, sh: number); - constructor(data: Uint8ClampedArray, sw: number, sh?: number); - readonly data: Uint8ClampedArray; - readonly height: number; - readonly width: number; -} - -// This is marked private, but is exported... -// export function parseFont(description: string): object - -// Not documented: backends - -/** Library version. */ -export const version: string -/** Cairo version. */ -export const cairoVersion: string -/** jpeglib version, if built with JPEG support. */ -export const jpegVersion: string | undefined -/** giflib version, if built with GIF support. */ -export const gifVersion: string | undefined -/** freetype version. */ -export const freetypeVersion: string -/** rsvg version. */ -export const rsvgVersion: string | undefined diff --git a/types/test.ts b/types/test.ts deleted file mode 100644 index b48c78011..000000000 --- a/types/test.ts +++ /dev/null @@ -1,46 +0,0 @@ -import * as Canvas from 'canvas' -import * as path from "path"; - -Canvas.registerFont(path.join(__dirname, '../pfennigFont/Pfennig.ttf'), {family: 'pfennigFont'}) - -Canvas.createCanvas(5, 10) -Canvas.createCanvas(200, 200, 'pdf') -Canvas.createCanvas(150, 150, 'svg') - -const canv = Canvas.createCanvas(10, 10) -const ctx = canv.getContext('2d') -canv.getContext('2d', {alpha: false}) - -// LHS is ImageData, not Canvas.ImageData -const id = ctx.getImageData(0, 0, 10, 10) -const h: number = id.height - -ctx.currentTransform = ctx.getTransform() - -ctx.quality = 'best' -ctx.textDrawingMode = 'glyph' - -const grad: Canvas.CanvasGradient = ctx.createLinearGradient(0, 1, 2, 3) -grad.addColorStop(0.1, 'red') - -const dm = new Canvas.DOMMatrix([1, 2, 3, 4, 5, 6]) -const a: number = dm.a - -const b1: Buffer = canv.toBuffer() -canv.toBuffer("application/pdf") -canv.toBuffer((err, data) => {}, "image/png") -canv.createJPEGStream({quality: 0.5}) -canv.createPDFStream({author: "octocat"}) -canv.toDataURL() - -const img = new Canvas.Image() -img.src = Buffer.alloc(0) -img.dataMode = Canvas.Image.MODE_IMAGE | Canvas.Image.MODE_MIME -img.onload = () => {} -img.onload = null; - -const id2: Canvas.ImageData = Canvas.createImageData(new Uint16Array(4), 1) - -ctx.drawImage(canv, 0, 0) - -Canvas.deregisterAllFonts(); diff --git a/types/tsconfig.json b/types/tsconfig.json deleted file mode 100644 index 226482c23..000000000 --- a/types/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "lib": ["es6"], - "noImplicitAny": true, - "noImplicitThis": true, - "strictNullChecks": true, - "strictFunctionTypes": true, - "noEmit": true, - "baseUrl": ".", - "paths": { "canvas": ["."] } - } -} diff --git a/types/tslint.json b/types/tslint.json deleted file mode 100644 index 64e2a316f..000000000 --- a/types/tslint.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "dtslint/dtslint.json", - "rules": { - "semicolon": false, - "unified-signatures": false - } -} diff --git a/util/has_lib.js b/util/has_lib.js deleted file mode 100644 index 02d709064..000000000 --- a/util/has_lib.js +++ /dev/null @@ -1,119 +0,0 @@ -const query = process.argv[2] -const fs = require('fs') -const childProcess = require('child_process') - -const SYSTEM_PATHS = [ - '/lib', - '/usr/lib', - '/usr/lib64', - '/usr/local/lib', - '/opt/local/lib', - '/opt/homebrew/lib', - '/usr/lib/x86_64-linux-gnu', - '/usr/lib/i386-linux-gnu', - '/usr/lib/arm-linux-gnueabihf', - '/usr/lib/arm-linux-gnueabi', - '/usr/lib/aarch64-linux-gnu' -] - -/** - * Checks for lib using ldconfig if present, or searching SYSTEM_PATHS - * otherwise. - * @param {string} lib - library name, e.g. 'jpeg' in 'libjpeg64.so' (see first line) - * @return {boolean} exists - */ -function hasSystemLib (lib) { - const libName = 'lib' + lib + '.+(so|dylib)' - const libNameRegex = new RegExp(libName) - - // Try using ldconfig on linux systems - if (hasLdconfig()) { - try { - if (childProcess.execSync('ldconfig -p 2>/dev/null | grep -E "' + libName + '"').length) { - return true - } - } catch (err) { - // noop -- proceed to other search methods - } - } - - // Try checking common library locations - return SYSTEM_PATHS.some(function (systemPath) { - try { - const dirListing = fs.readdirSync(systemPath) - return dirListing.some(function (file) { - return libNameRegex.test(file) - }) - } catch (err) { - return false - } - }) -} - -/** - * Checks for ldconfig on the path and /sbin - * @return {boolean} exists - */ -function hasLdconfig () { - try { - // Add /sbin to path as ldconfig is located there on some systems -- e.g. - // Debian (and it can still be used by unprivileged users): - childProcess.execSync('export PATH="$PATH:/sbin"') - process.env.PATH = '...' - // execSync throws on nonzero exit - childProcess.execSync('hash ldconfig 2>/dev/null') - return true - } catch (err) { - return false - } -} - -/** - * Checks for freetype2 with --cflags-only-I - * @return Boolean exists - */ -function hasFreetype () { - try { - if (childProcess.execSync('pkg-config cairo --cflags-only-I 2>/dev/null | grep freetype2').length) { - return true - } - } catch (err) { - // noop - } - return false -} - -/** - * Checks for lib using pkg-config. - * @param {string} lib - library name - * @return {boolean} exists - */ -function hasPkgconfigLib (lib) { - try { - // execSync throws on nonzero exit - childProcess.execSync('pkg-config --exists "' + lib + '" 2>/dev/null') - return true - } catch (err) { - return false - } -} - -function main (query) { - switch (query) { - case 'gif': - case 'cairo': - return hasSystemLib(query) - case 'pango': - return hasPkgconfigLib(query) - case 'freetype': - return hasFreetype() - case 'jpeg': - return hasPkgconfigLib('libjpeg') - case 'rsvg': - return hasPkgconfigLib('librsvg-2.0') - default: - throw new Error('Unknown library: ' + query) - } -} - -process.stdout.write(main(query).toString()) diff --git a/util/win_jpeg_lookup.js b/util/win_jpeg_lookup.js deleted file mode 100644 index 79815f650..000000000 --- a/util/win_jpeg_lookup.js +++ /dev/null @@ -1,21 +0,0 @@ -const fs = require('fs') -const paths = ['C:/libjpeg-turbo'] - -if (process.arch === 'x64') { - paths.unshift('C:/libjpeg-turbo64') -} - -paths.forEach(function (path) { - if (exists(path)) { - process.stdout.write(path) - process.exit() - } -}) - -function exists (path) { - try { - return fs.lstatSync(path).isDirectory() - } catch (e) { - return false - } -}