mirror of
https://github.com/openjdk/jdk18u.git
synced 2025-12-11 11:52:44 -06:00
Merge
This commit is contained in:
commit
34ec27376f
164
.github/workflows/submit.yml
vendored
164
.github/workflows/submit.yml
vendored
@ -56,7 +56,7 @@ jobs:
|
|||||||
if: steps.check_submit.outputs.should_run != 'false'
|
if: steps.check_submit.outputs.should_run != 'false'
|
||||||
|
|
||||||
- name: Checkout the source
|
- name: Checkout the source
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
path: jdk
|
path: jdk
|
||||||
if: steps.check_submit.outputs.should_run != 'false'
|
if: steps.check_submit.outputs.should_run != 'false'
|
||||||
@ -94,14 +94,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Check if a jtreg image is present in the cache
|
- name: Check if a jtreg image is present in the cache
|
||||||
id: jtreg
|
id: jtreg
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
key: jtreg-${{ env.JTREG_REF }}-v1
|
key: jtreg-${{ env.JTREG_REF }}-v1
|
||||||
if: steps.check_submit.outputs.should_run != 'false'
|
if: steps.check_submit.outputs.should_run != 'false'
|
||||||
|
|
||||||
- name: Checkout the jtreg source
|
- name: Checkout the jtreg source
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
repository: "openjdk/jtreg"
|
repository: "openjdk/jtreg"
|
||||||
ref: ${{ env.JTREG_REF }}
|
ref: ${{ env.JTREG_REF }}
|
||||||
@ -119,7 +119,7 @@ jobs:
|
|||||||
if: steps.check_submit.outputs.should_run != 'false' && steps.jtreg.outputs.cache-hit != 'true'
|
if: steps.check_submit.outputs.should_run != 'false' && steps.jtreg.outputs.cache-hit != 'true'
|
||||||
|
|
||||||
- name: Store jtreg for use by later steps
|
- name: Store jtreg for use by later steps
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ steps.check_bundle_id.outputs.bundle_id }}
|
name: transient_jtreg_${{ steps.check_bundle_id.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
@ -151,13 +151,13 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the source
|
- name: Checkout the source
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
path: jdk
|
path: jdk
|
||||||
|
|
||||||
- name: Restore boot JDK from cache
|
- name: Restore boot JDK from cache
|
||||||
id: bootjdk
|
id: bootjdk
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
||||||
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
||||||
@ -173,21 +173,21 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore jtreg artifact
|
- name: Restore jtreg artifact
|
||||||
id: jtreg_restore
|
id: jtreg_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore jtreg artifact (retry)
|
- name: Restore jtreg artifact (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
if: steps.jtreg_restore.outcome == 'failure'
|
if: steps.jtreg_restore.outcome == 'failure'
|
||||||
|
|
||||||
- name: Checkout gtest sources
|
- name: Checkout gtest sources
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
repository: "google/googletest"
|
repository: "google/googletest"
|
||||||
ref: "release-${{ fromJson(needs.prerequisites.outputs.dependencies).GTEST_VERSION }}"
|
ref: "release-${{ fromJson(needs.prerequisites.outputs.dependencies).GTEST_VERSION }}"
|
||||||
@ -219,7 +219,7 @@ jobs:
|
|||||||
working-directory: jdk
|
working-directory: jdk
|
||||||
|
|
||||||
- name: Persist test bundles
|
- name: Persist test bundles
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-linux-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-linux-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: |
|
path: |
|
||||||
@ -280,11 +280,11 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the source
|
- name: Checkout the source
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Restore boot JDK from cache
|
- name: Restore boot JDK from cache
|
||||||
id: bootjdk
|
id: bootjdk
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
||||||
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
||||||
@ -300,14 +300,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore jtreg artifact
|
- name: Restore jtreg artifact
|
||||||
id: jtreg_restore
|
id: jtreg_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore jtreg artifact (retry)
|
- name: Restore jtreg artifact (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
@ -315,14 +315,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore build artifacts
|
- name: Restore build artifacts
|
||||||
id: build_restore
|
id: build_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-linux-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-linux-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jdk-linux-x64${{ matrix.artifact }}
|
path: ~/jdk-linux-x64${{ matrix.artifact }}
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore build artifacts (retry)
|
- name: Restore build artifacts (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-linux-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-linux-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jdk-linux-x64${{ matrix.artifact }}
|
path: ~/jdk-linux-x64${{ matrix.artifact }}
|
||||||
@ -395,14 +395,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Persist test results
|
- name: Persist test results
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
path: ~/linux-x64${{ matrix.artifact }}_testresults_${{ env.logsuffix }}.zip
|
path: ~/linux-x64${{ matrix.artifact }}_testresults_${{ env.logsuffix }}.zip
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Persist test outputs
|
- name: Persist test outputs
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
path: ~/linux-x64${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip
|
path: ~/linux-x64${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
@ -463,13 +463,13 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the source
|
- name: Checkout the source
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
path: jdk
|
path: jdk
|
||||||
|
|
||||||
- name: Restore boot JDK from cache
|
- name: Restore boot JDK from cache
|
||||||
id: bootjdk
|
id: bootjdk
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
||||||
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
||||||
@ -485,14 +485,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore build JDK
|
- name: Restore build JDK
|
||||||
id: build_restore
|
id: build_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-linux-x64_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-linux-x64_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jdk-linux-x64
|
path: ~/jdk-linux-x64
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore build JDK (retry)
|
- name: Restore build JDK (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-linux-x64_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-linux-x64_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jdk-linux-x64
|
path: ~/jdk-linux-x64
|
||||||
@ -523,7 +523,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Cache sysroot
|
- name: Cache sysroot
|
||||||
id: cache-sysroot
|
id: cache-sysroot
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/sysroot-${{ matrix.debian-arch }}/
|
path: ~/sysroot-${{ matrix.debian-arch }}/
|
||||||
key: sysroot-${{ matrix.debian-arch }}-${{ hashFiles('jdk/.github/workflows/submit.yml') }}
|
key: sysroot-${{ matrix.debian-arch }}-${{ hashFiles('jdk/.github/workflows/submit.yml') }}
|
||||||
@ -611,13 +611,13 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the source
|
- name: Checkout the source
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
path: jdk
|
path: jdk
|
||||||
|
|
||||||
- name: Restore boot JDK from cache
|
- name: Restore boot JDK from cache
|
||||||
id: bootjdk
|
id: bootjdk
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
||||||
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
||||||
@ -633,21 +633,21 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore jtreg artifact
|
- name: Restore jtreg artifact
|
||||||
id: jtreg_restore
|
id: jtreg_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore jtreg artifact (retry)
|
- name: Restore jtreg artifact (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
if: steps.jtreg_restore.outcome == 'failure'
|
if: steps.jtreg_restore.outcome == 'failure'
|
||||||
|
|
||||||
- name: Checkout gtest sources
|
- name: Checkout gtest sources
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
repository: "google/googletest"
|
repository: "google/googletest"
|
||||||
ref: "release-${{ fromJson(needs.prerequisites.outputs.dependencies).GTEST_VERSION }}"
|
ref: "release-${{ fromJson(needs.prerequisites.outputs.dependencies).GTEST_VERSION }}"
|
||||||
@ -686,7 +686,7 @@ jobs:
|
|||||||
working-directory: jdk
|
working-directory: jdk
|
||||||
|
|
||||||
- name: Persist test bundles
|
- name: Persist test bundles
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-linux-x86${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-linux-x86${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: |
|
path: |
|
||||||
@ -748,11 +748,11 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the source
|
- name: Checkout the source
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Restore boot JDK from cache
|
- name: Restore boot JDK from cache
|
||||||
id: bootjdk
|
id: bootjdk
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
||||||
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
||||||
@ -768,14 +768,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore jtreg artifact
|
- name: Restore jtreg artifact
|
||||||
id: jtreg_restore
|
id: jtreg_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore jtreg artifact (retry)
|
- name: Restore jtreg artifact (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
@ -783,14 +783,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore build artifacts
|
- name: Restore build artifacts
|
||||||
id: build_restore
|
id: build_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-linux-x86${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-linux-x86${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jdk-linux-x86${{ matrix.artifact }}
|
path: ~/jdk-linux-x86${{ matrix.artifact }}
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore build artifacts (retry)
|
- name: Restore build artifacts (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-linux-x86${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-linux-x86${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jdk-linux-x86${{ matrix.artifact }}
|
path: ~/jdk-linux-x86${{ matrix.artifact }}
|
||||||
@ -863,14 +863,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Persist test results
|
- name: Persist test results
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
path: ~/linux-x86${{ matrix.artifact }}_testresults_${{ env.logsuffix }}.zip
|
path: ~/linux-x86${{ matrix.artifact }}_testresults_${{ env.logsuffix }}.zip
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Persist test outputs
|
- name: Persist test outputs
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
path: ~/linux-x86${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip
|
path: ~/linux-x86${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
@ -901,7 +901,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Restore cygwin installer from cache
|
- name: Restore cygwin installer from cache
|
||||||
id: cygwin-installer
|
id: cygwin-installer
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/cygwin/setup-x86_64.exe
|
path: ~/cygwin/setup-x86_64.exe
|
||||||
key: cygwin-installer
|
key: cygwin-installer
|
||||||
@ -914,7 +914,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore cygwin packages from cache
|
- name: Restore cygwin packages from cache
|
||||||
id: cygwin
|
id: cygwin
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/cygwin/packages
|
path: ~/cygwin/packages
|
||||||
key: cygwin-packages-${{ runner.os }}-v1
|
key: cygwin-packages-${{ runner.os }}-v1
|
||||||
@ -924,13 +924,13 @@ jobs:
|
|||||||
Start-Process -FilePath "$HOME\cygwin\setup-x86_64.exe" -ArgumentList "--quiet-mode --packages cygwin=3.2.0-1,autoconf,make,zip,unzip --root $HOME\cygwin\cygwin64 --local-package-dir $HOME\cygwin\packages --site http://mirrors.kernel.org/sourceware/cygwin --no-desktop --no-shortcuts --no-startmenu --no-admin" -Wait -NoNewWindow
|
Start-Process -FilePath "$HOME\cygwin\setup-x86_64.exe" -ArgumentList "--quiet-mode --packages cygwin=3.2.0-1,autoconf,make,zip,unzip --root $HOME\cygwin\cygwin64 --local-package-dir $HOME\cygwin\packages --site http://mirrors.kernel.org/sourceware/cygwin --no-desktop --no-shortcuts --no-startmenu --no-admin" -Wait -NoNewWindow
|
||||||
|
|
||||||
- name: Checkout the source
|
- name: Checkout the source
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
path: jdk
|
path: jdk
|
||||||
|
|
||||||
- name: Restore boot JDK from cache
|
- name: Restore boot JDK from cache
|
||||||
id: bootjdk
|
id: bootjdk
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
||||||
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
||||||
@ -1001,7 +1001,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Restore cygwin installer from cache
|
- name: Restore cygwin installer from cache
|
||||||
id: cygwin-installer
|
id: cygwin-installer
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/cygwin/setup-x86_64.exe
|
path: ~/cygwin/setup-x86_64.exe
|
||||||
key: cygwin-installer
|
key: cygwin-installer
|
||||||
@ -1014,7 +1014,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore cygwin packages from cache
|
- name: Restore cygwin packages from cache
|
||||||
id: cygwin
|
id: cygwin
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/cygwin/packages
|
path: ~/cygwin/packages
|
||||||
key: cygwin-packages-${{ runner.os }}-v1
|
key: cygwin-packages-${{ runner.os }}-v1
|
||||||
@ -1024,13 +1024,13 @@ jobs:
|
|||||||
Start-Process -FilePath "$HOME\cygwin\setup-x86_64.exe" -ArgumentList "--quiet-mode --packages cygwin=3.2.0-1,autoconf,make,zip,unzip --root $HOME\cygwin\cygwin64 --local-package-dir $HOME\cygwin\packages --site http://mirrors.kernel.org/sourceware/cygwin --no-desktop --no-shortcuts --no-startmenu --no-admin" -Wait -NoNewWindow
|
Start-Process -FilePath "$HOME\cygwin\setup-x86_64.exe" -ArgumentList "--quiet-mode --packages cygwin=3.2.0-1,autoconf,make,zip,unzip --root $HOME\cygwin\cygwin64 --local-package-dir $HOME\cygwin\packages --site http://mirrors.kernel.org/sourceware/cygwin --no-desktop --no-shortcuts --no-startmenu --no-admin" -Wait -NoNewWindow
|
||||||
|
|
||||||
- name: Checkout the source
|
- name: Checkout the source
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
path: jdk
|
path: jdk
|
||||||
|
|
||||||
- name: Restore boot JDK from cache
|
- name: Restore boot JDK from cache
|
||||||
id: bootjdk
|
id: bootjdk
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
||||||
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
||||||
@ -1046,7 +1046,7 @@ jobs:
|
|||||||
if: steps.bootjdk.outputs.cache-hit != 'true'
|
if: steps.bootjdk.outputs.cache-hit != 'true'
|
||||||
|
|
||||||
- name: Checkout gtest sources
|
- name: Checkout gtest sources
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
repository: "google/googletest"
|
repository: "google/googletest"
|
||||||
ref: "release-${{ fromJson(needs.prerequisites.outputs.dependencies).GTEST_VERSION }}"
|
ref: "release-${{ fromJson(needs.prerequisites.outputs.dependencies).GTEST_VERSION }}"
|
||||||
@ -1054,14 +1054,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore jtreg artifact
|
- name: Restore jtreg artifact
|
||||||
id: jtreg_restore
|
id: jtreg_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore jtreg artifact (retry)
|
- name: Restore jtreg artifact (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
@ -1101,7 +1101,7 @@ jobs:
|
|||||||
working-directory: jdk
|
working-directory: jdk
|
||||||
|
|
||||||
- name: Persist test bundles
|
- name: Persist test bundles
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-windows-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-windows-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: |
|
path: |
|
||||||
@ -1163,11 +1163,11 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the source
|
- name: Checkout the source
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Restore boot JDK from cache
|
- name: Restore boot JDK from cache
|
||||||
id: bootjdk
|
id: bootjdk
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
||||||
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
||||||
@ -1184,7 +1184,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore cygwin installer from cache
|
- name: Restore cygwin installer from cache
|
||||||
id: cygwin-installer
|
id: cygwin-installer
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/cygwin/setup-x86_64.exe
|
path: ~/cygwin/setup-x86_64.exe
|
||||||
key: cygwin-installer
|
key: cygwin-installer
|
||||||
@ -1197,7 +1197,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore cygwin packages from cache
|
- name: Restore cygwin packages from cache
|
||||||
id: cygwin
|
id: cygwin
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/cygwin/packages
|
path: ~/cygwin/packages
|
||||||
key: cygwin-packages-${{ runner.os }}-v1
|
key: cygwin-packages-${{ runner.os }}-v1
|
||||||
@ -1208,14 +1208,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore jtreg artifact
|
- name: Restore jtreg artifact
|
||||||
id: jtreg_restore
|
id: jtreg_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore jtreg artifact (retry)
|
- name: Restore jtreg artifact (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
@ -1223,14 +1223,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore build artifacts
|
- name: Restore build artifacts
|
||||||
id: build_restore
|
id: build_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-windows-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-windows-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jdk-windows-x64${{ matrix.artifact }}
|
path: ~/jdk-windows-x64${{ matrix.artifact }}
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore build artifacts (retry)
|
- name: Restore build artifacts (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-windows-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-windows-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jdk-windows-x64${{ matrix.artifact }}
|
path: ~/jdk-windows-x64${{ matrix.artifact }}
|
||||||
@ -1311,14 +1311,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Persist test results
|
- name: Persist test results
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
path: ~/windows-x64${{ matrix.artifact }}_testresults_${{ env.logsuffix }}.zip
|
path: ~/windows-x64${{ matrix.artifact }}_testresults_${{ env.logsuffix }}.zip
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Persist test outputs
|
- name: Persist test outputs
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
path: ~/windows-x64${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip
|
path: ~/windows-x64${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
@ -1350,13 +1350,13 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the source
|
- name: Checkout the source
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
path: jdk
|
path: jdk
|
||||||
|
|
||||||
- name: Restore boot JDK from cache
|
- name: Restore boot JDK from cache
|
||||||
id: bootjdk
|
id: bootjdk
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
||||||
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
||||||
@ -1372,21 +1372,21 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore jtreg artifact
|
- name: Restore jtreg artifact
|
||||||
id: jtreg_restore
|
id: jtreg_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore jtreg artifact (retry)
|
- name: Restore jtreg artifact (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
if: steps.jtreg_restore.outcome == 'failure'
|
if: steps.jtreg_restore.outcome == 'failure'
|
||||||
|
|
||||||
- name: Checkout gtest sources
|
- name: Checkout gtest sources
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
repository: "google/googletest"
|
repository: "google/googletest"
|
||||||
ref: "release-${{ fromJson(needs.prerequisites.outputs.dependencies).GTEST_VERSION }}"
|
ref: "release-${{ fromJson(needs.prerequisites.outputs.dependencies).GTEST_VERSION }}"
|
||||||
@ -1418,7 +1418,7 @@ jobs:
|
|||||||
working-directory: jdk
|
working-directory: jdk
|
||||||
|
|
||||||
- name: Persist test bundles
|
- name: Persist test bundles
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-macos-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-macos-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: |
|
path: |
|
||||||
@ -1452,13 +1452,13 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the source
|
- name: Checkout the source
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
path: jdk
|
path: jdk
|
||||||
|
|
||||||
- name: Restore boot JDK from cache
|
- name: Restore boot JDK from cache
|
||||||
id: bootjdk
|
id: bootjdk
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
||||||
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
||||||
@ -1474,21 +1474,21 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore jtreg artifact
|
- name: Restore jtreg artifact
|
||||||
id: jtreg_restore
|
id: jtreg_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore jtreg artifact (retry)
|
- name: Restore jtreg artifact (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
if: steps.jtreg_restore.outcome == 'failure'
|
if: steps.jtreg_restore.outcome == 'failure'
|
||||||
|
|
||||||
- name: Checkout gtest sources
|
- name: Checkout gtest sources
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
repository: "google/googletest"
|
repository: "google/googletest"
|
||||||
ref: "release-${{ fromJson(needs.prerequisites.outputs.dependencies).GTEST_VERSION }}"
|
ref: "release-${{ fromJson(needs.prerequisites.outputs.dependencies).GTEST_VERSION }}"
|
||||||
@ -1521,7 +1521,7 @@ jobs:
|
|||||||
working-directory: jdk
|
working-directory: jdk
|
||||||
|
|
||||||
- name: Persist test bundles
|
- name: Persist test bundles
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-macos-aarch64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-macos-aarch64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: |
|
path: |
|
||||||
@ -1583,11 +1583,11 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the source
|
- name: Checkout the source
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Restore boot JDK from cache
|
- name: Restore boot JDK from cache
|
||||||
id: bootjdk
|
id: bootjdk
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v3
|
||||||
with:
|
with:
|
||||||
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
path: ~/bootjdk/${{ env.BOOT_JDK_VERSION }}
|
||||||
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
key: bootjdk-${{ runner.os }}-${{ env.BOOT_JDK_VERSION }}-${{ env.BOOT_JDK_SHA256 }}-v1
|
||||||
@ -1603,14 +1603,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore jtreg artifact
|
- name: Restore jtreg artifact
|
||||||
id: jtreg_restore
|
id: jtreg_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore jtreg artifact (retry)
|
- name: Restore jtreg artifact (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jtreg_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jtreg/
|
path: ~/jtreg/
|
||||||
@ -1618,14 +1618,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Restore build artifacts
|
- name: Restore build artifacts
|
||||||
id: build_restore
|
id: build_restore
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-macos-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-macos-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jdk-macos-x64${{ matrix.artifact }}
|
path: ~/jdk-macos-x64${{ matrix.artifact }}
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Restore build artifacts (retry)
|
- name: Restore build artifacts (retry)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: transient_jdk-macos-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
name: transient_jdk-macos-x64${{ matrix.artifact }}_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: ~/jdk-macos-x64${{ matrix.artifact }}
|
path: ~/jdk-macos-x64${{ matrix.artifact }}
|
||||||
@ -1704,14 +1704,14 @@ jobs:
|
|||||||
|
|
||||||
- name: Persist test results
|
- name: Persist test results
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
path: ~/macos-x64${{ matrix.artifact }}_testresults_${{ env.logsuffix }}.zip
|
path: ~/macos-x64${{ matrix.artifact }}_testresults_${{ env.logsuffix }}.zip
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Persist test outputs
|
- name: Persist test outputs
|
||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
path: ~/macos-x64${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip
|
path: ~/macos-x64${{ matrix.artifact }}_testsupport_${{ env.logsuffix }}.zip
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
@ -1734,7 +1734,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Determine current artifacts endpoint
|
- name: Determine current artifacts endpoint
|
||||||
id: actions_runtime
|
id: actions_runtime
|
||||||
uses: actions/github-script@v3
|
uses: actions/github-script@v6
|
||||||
with:
|
with:
|
||||||
script: "return { url: process.env['ACTIONS_RUNTIME_URL'], token: process.env['ACTIONS_RUNTIME_TOKEN'] }"
|
script: "return { url: process.env['ACTIONS_RUNTIME_URL'], token: process.env['ACTIONS_RUNTIME_TOKEN'] }"
|
||||||
|
|
||||||
@ -1757,7 +1757,7 @@ jobs:
|
|||||||
done
|
done
|
||||||
|
|
||||||
- name: Fetch remaining artifacts (test results)
|
- name: Fetch remaining artifacts (test results)
|
||||||
uses: actions/download-artifact@v2
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
path: test-results
|
path: test-results
|
||||||
|
|
||||||
@ -1774,7 +1774,7 @@ jobs:
|
|||||||
done
|
done
|
||||||
|
|
||||||
- name: Upload a combined test results artifact
|
- name: Upload a combined test results artifact
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: test-results_${{ needs.prerequisites.outputs.bundle_id }}
|
name: test-results_${{ needs.prerequisites.outputs.bundle_id }}
|
||||||
path: test-results
|
path: test-results
|
||||||
|
|||||||
@ -129,8 +129,17 @@ static inline uint32_t uimm(uint32_t val, int hi, int lo)
|
|||||||
|
|
||||||
uint64_t replicate(uint64_t bits, int nbits, int count)
|
uint64_t replicate(uint64_t bits, int nbits, int count)
|
||||||
{
|
{
|
||||||
|
assert(count > 0, "must be");
|
||||||
|
assert(nbits > 0, "must be");
|
||||||
|
assert(count * nbits <= 64, "must be");
|
||||||
|
|
||||||
|
// Special case nbits == 64 since the shift below with that nbits value
|
||||||
|
// would result in undefined behavior.
|
||||||
|
if (nbits == 64) {
|
||||||
|
return bits;
|
||||||
|
}
|
||||||
|
|
||||||
uint64_t result = 0;
|
uint64_t result = 0;
|
||||||
// nbits may be 64 in which case we want mask to be -1
|
|
||||||
uint64_t mask = ones(nbits);
|
uint64_t mask = ones(nbits);
|
||||||
for (int i = 0; i < count ; i++) {
|
for (int i = 0; i < count ; i++) {
|
||||||
result <<= nbits;
|
result <<= nbits;
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -133,11 +133,10 @@ CodeBuffer::~CodeBuffer() {
|
|||||||
// Previous incarnations of this buffer are held live, so that internal
|
// Previous incarnations of this buffer are held live, so that internal
|
||||||
// addresses constructed before expansions will not be confused.
|
// addresses constructed before expansions will not be confused.
|
||||||
cb->free_blob();
|
cb->free_blob();
|
||||||
|
// free any overflow storage
|
||||||
|
delete cb->_overflow_arena;
|
||||||
}
|
}
|
||||||
|
|
||||||
// free any overflow storage
|
|
||||||
delete _overflow_arena;
|
|
||||||
|
|
||||||
NOT_PRODUCT(clear_strings());
|
NOT_PRODUCT(clear_strings());
|
||||||
|
|
||||||
assert(_default_oop_recorder.allocated_on_stack_or_embedded(), "should be embedded object");
|
assert(_default_oop_recorder.allocated_on_stack_or_embedded(), "should be embedded object");
|
||||||
@ -932,6 +931,7 @@ void CodeBuffer::take_over_code_from(CodeBuffer* cb) {
|
|||||||
this_sect->take_over_code_from(cb_sect);
|
this_sect->take_over_code_from(cb_sect);
|
||||||
}
|
}
|
||||||
_overflow_arena = cb->_overflow_arena;
|
_overflow_arena = cb->_overflow_arena;
|
||||||
|
cb->_overflow_arena = NULL;
|
||||||
// Make sure the old cb won't try to use it or free it.
|
// Make sure the old cb won't try to use it or free it.
|
||||||
DEBUG_ONLY(cb->_blob = (BufferBlob*)badAddress);
|
DEBUG_ONLY(cb->_blob = (BufferBlob*)badAddress);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -82,7 +82,6 @@ ciMethod::ciMethod(const methodHandle& h_m, ciInstanceKlass* holder) :
|
|||||||
_max_stack = h_m->max_stack();
|
_max_stack = h_m->max_stack();
|
||||||
_max_locals = h_m->max_locals();
|
_max_locals = h_m->max_locals();
|
||||||
_code_size = h_m->code_size();
|
_code_size = h_m->code_size();
|
||||||
_intrinsic_id = h_m->intrinsic_id();
|
|
||||||
_handler_count = h_m->exception_table_length();
|
_handler_count = h_m->exception_table_length();
|
||||||
_size_of_parameters = h_m->size_of_parameters();
|
_size_of_parameters = h_m->size_of_parameters();
|
||||||
_uses_monitors = h_m->access_flags().has_monitor_bytecodes();
|
_uses_monitors = h_m->access_flags().has_monitor_bytecodes();
|
||||||
@ -102,6 +101,10 @@ ciMethod::ciMethod(const methodHandle& h_m, ciInstanceKlass* holder) :
|
|||||||
_bcea = NULL;
|
_bcea = NULL;
|
||||||
#endif // COMPILER2
|
#endif // COMPILER2
|
||||||
|
|
||||||
|
// Check for blackhole intrinsic and then populate the intrinsic ID.
|
||||||
|
CompilerOracle::tag_blackhole_if_possible(h_m);
|
||||||
|
_intrinsic_id = h_m->intrinsic_id();
|
||||||
|
|
||||||
ciEnv *env = CURRENT_ENV;
|
ciEnv *env = CURRENT_ENV;
|
||||||
if (env->jvmti_can_hotswap_or_post_breakpoint()) {
|
if (env->jvmti_can_hotswap_or_post_breakpoint()) {
|
||||||
// 6328518 check hotswap conditions under the right lock.
|
// 6328518 check hotswap conditions under the right lock.
|
||||||
@ -157,8 +160,6 @@ ciMethod::ciMethod(const methodHandle& h_m, ciInstanceKlass* holder) :
|
|||||||
ciReplay::initialize(this);
|
ciReplay::initialize(this);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
CompilerOracle::tag_blackhole_if_possible(h_m);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright (c) 2018, 2019 SAP SE. All rights reserved.
|
* Copyright (c) 2018, 2019 SAP SE. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
@ -756,18 +756,17 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, size_t granular
|
|||||||
CodeBlob* cb = (CodeBlob*)heap->find_start(h);
|
CodeBlob* cb = (CodeBlob*)heap->find_start(h);
|
||||||
cbType = get_cbType(cb); // Will check for cb == NULL and other safety things.
|
cbType = get_cbType(cb); // Will check for cb == NULL and other safety things.
|
||||||
if (cbType != noType) {
|
if (cbType != noType) {
|
||||||
const char* blob_name = os::strdup(cb->name());
|
const char* blob_name = nullptr;
|
||||||
unsigned int nm_size = 0;
|
unsigned int nm_size = 0;
|
||||||
int temperature = 0;
|
int temperature = 0;
|
||||||
nmethod* nm = cb->as_nmethod_or_null();
|
nmethod* nm = cb->as_nmethod_or_null();
|
||||||
if (nm != NULL) { // no is_readable check required, nm = (nmethod*)cb.
|
if (nm != NULL) { // no is_readable check required, nm = (nmethod*)cb.
|
||||||
ResourceMark rm;
|
ResourceMark rm;
|
||||||
Method* method = nm->method();
|
Method* method = nm->method();
|
||||||
if (nm->is_in_use()) {
|
if (nm->is_in_use() || nm->is_not_entrant()) {
|
||||||
blob_name = os::strdup(method->name_and_sig_as_C_string());
|
|
||||||
}
|
|
||||||
if (nm->is_not_entrant()) {
|
|
||||||
blob_name = os::strdup(method->name_and_sig_as_C_string());
|
blob_name = os::strdup(method->name_and_sig_as_C_string());
|
||||||
|
} else {
|
||||||
|
blob_name = os::strdup(cb->name());
|
||||||
}
|
}
|
||||||
|
|
||||||
nm_size = nm->total_size();
|
nm_size = nm->total_size();
|
||||||
@ -815,6 +814,8 @@ void CodeHeapState::aggregate(outputStream* out, CodeHeap* heap, size_t granular
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
blob_name = os::strdup(cb->name());
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------
|
//------------------------------------------
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014, 2021, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -29,6 +29,17 @@ BitSet::BitMapFragment::BitMapFragment(uintptr_t granule, BitMapFragment* next)
|
|||||||
_next(next) {
|
_next(next) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BitSet::BitMapFragmentTable::~BitMapFragmentTable() {
|
||||||
|
for (int index = 0; index < table_size(); index ++) {
|
||||||
|
Entry* e = bucket(index);
|
||||||
|
while (e != nullptr) {
|
||||||
|
Entry* tmp = e;
|
||||||
|
e = e->next();
|
||||||
|
free_entry(tmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BitSet::BitSet() :
|
BitSet::BitSet() :
|
||||||
_bitmap_fragments(32),
|
_bitmap_fragments(32),
|
||||||
_fragment_list(NULL),
|
_fragment_list(NULL),
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -68,6 +68,7 @@ class BitSet : public CHeapObj<mtTracing> {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
BitMapFragmentTable(int table_size) : BasicHashtable<mtTracing>(table_size, sizeof(Entry)) {}
|
BitMapFragmentTable(int table_size) : BasicHashtable<mtTracing>(table_size, sizeof(Entry)) {}
|
||||||
|
~BitMapFragmentTable();
|
||||||
void add(uintptr_t key, CHeapBitMap* value);
|
void add(uintptr_t key, CHeapBitMap* value);
|
||||||
CHeapBitMap** lookup(uintptr_t key);
|
CHeapBitMap** lookup(uintptr_t key);
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -612,11 +612,11 @@ ObjectSampleWriter::ObjectSampleWriter(JfrCheckpointWriter& writer, EdgeStore* s
|
|||||||
assert(store != NULL, "invariant");
|
assert(store != NULL, "invariant");
|
||||||
assert(!store->is_empty(), "invariant");
|
assert(!store->is_empty(), "invariant");
|
||||||
register_serializers();
|
register_serializers();
|
||||||
sample_infos = NULL;
|
assert(field_infos == NULL, "Invariant");
|
||||||
ref_infos = NULL;
|
assert(sample_infos == NULL, "Invariant");
|
||||||
array_infos = NULL;
|
assert(ref_infos == NULL, "Invariant");
|
||||||
field_infos = NULL;
|
assert(array_infos == NULL, "Invariant");
|
||||||
root_infos = NULL;
|
assert(root_infos == NULL, "Invariant");
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjectSampleWriter::~ObjectSampleWriter() {
|
ObjectSampleWriter::~ObjectSampleWriter() {
|
||||||
@ -625,6 +625,16 @@ ObjectSampleWriter::~ObjectSampleWriter() {
|
|||||||
write_array_infos(_writer);
|
write_array_infos(_writer);
|
||||||
write_field_infos(_writer);
|
write_field_infos(_writer);
|
||||||
write_root_descriptors(_writer);
|
write_root_descriptors(_writer);
|
||||||
|
|
||||||
|
// Followings are RA allocated, memory will be released automatically.
|
||||||
|
if (field_infos != NULL) {
|
||||||
|
field_infos->~FieldTable();
|
||||||
|
field_infos = NULL;
|
||||||
|
}
|
||||||
|
sample_infos = NULL;
|
||||||
|
ref_infos = NULL;
|
||||||
|
array_infos = NULL;
|
||||||
|
root_infos = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ObjectSampleWriter::operator()(StoredEdge& e) {
|
bool ObjectSampleWriter::operator()(StoredEdge& e) {
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -334,6 +334,11 @@ void LogOutput::update_config_string(const size_t on_level[LogLevel::Count]) {
|
|||||||
|
|
||||||
assert(n_deviates < deviating_tagsets, "deviating tag set array overflow");
|
assert(n_deviates < deviating_tagsets, "deviating tag set array overflow");
|
||||||
assert(prev_deviates > n_deviates, "number of deviating tag sets must never grow");
|
assert(prev_deviates > n_deviates, "number of deviating tag sets must never grow");
|
||||||
|
|
||||||
|
if (n_deviates == 1 && n_selections == 0) {
|
||||||
|
// we're done as we couldn't reduce things any further
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
FREE_C_HEAP_ARRAY(LogTagSet*, deviates);
|
FREE_C_HEAP_ARRAY(LogTagSet*, deviates);
|
||||||
FREE_C_HEAP_ARRAY(Selection, selections);
|
FREE_C_HEAP_ARRAY(Selection, selections);
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 1996, 2021, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1996, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -3210,16 +3210,18 @@ public class DecimalFormat extends NumberFormat {
|
|||||||
for (i = digitCount; i > 0; --i) {
|
for (i = digitCount; i > 0; --i) {
|
||||||
if (i != digitCount && isGroupingUsed() && groupingSize != 0 &&
|
if (i != digitCount && isGroupingUsed() && groupingSize != 0 &&
|
||||||
i % groupingSize == 0) {
|
i % groupingSize == 0) {
|
||||||
result.append(localized ? symbols.getGroupingSeparator() :
|
result.append(localized ?
|
||||||
PATTERN_GROUPING_SEPARATOR);
|
(isCurrencyFormat ? symbols.getMonetaryGroupingSeparator() : symbols.getGroupingSeparator()) :
|
||||||
|
PATTERN_GROUPING_SEPARATOR);
|
||||||
}
|
}
|
||||||
result.append(i <= getMinimumIntegerDigits()
|
result.append(i <= getMinimumIntegerDigits()
|
||||||
? (localized ? symbols.getZeroDigit() : PATTERN_ZERO_DIGIT)
|
? (localized ? symbols.getZeroDigit() : PATTERN_ZERO_DIGIT)
|
||||||
: (localized ? symbols.getDigit() : PATTERN_DIGIT));
|
: (localized ? symbols.getDigit() : PATTERN_DIGIT));
|
||||||
}
|
}
|
||||||
if (getMaximumFractionDigits() > 0 || decimalSeparatorAlwaysShown)
|
if (getMaximumFractionDigits() > 0 || decimalSeparatorAlwaysShown)
|
||||||
result.append(localized ? symbols.getDecimalSeparator() :
|
result.append(localized ?
|
||||||
PATTERN_DECIMAL_SEPARATOR);
|
(isCurrencyFormat ? symbols.getMonetaryDecimalSeparator() : symbols.getDecimalSeparator()) :
|
||||||
|
PATTERN_DECIMAL_SEPARATOR);
|
||||||
for (i = 0; i < getMaximumFractionDigits(); ++i) {
|
for (i = 0; i < getMaximumFractionDigits(); ++i) {
|
||||||
if (i < getMinimumFractionDigits()) {
|
if (i < getMinimumFractionDigits()) {
|
||||||
result.append(localized ? symbols.getZeroDigit() :
|
result.append(localized ? symbols.getZeroDigit() :
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -5,7 +5,9 @@
|
|||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
* under the terms of the GNU General Public License version 2 only, as
|
* under the terms of the GNU General Public License version 2 only, as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation. Oracle designates this
|
||||||
|
* particular file as subject to the "Classpath" exception as provided
|
||||||
|
* by Oracle in the LICENSE file that accompanied this code.
|
||||||
*
|
*
|
||||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
## The FreeType Project: Freetype v2.10.4
|
## The FreeType Project: Freetype v2.12.0
|
||||||
|
|
||||||
|
|
||||||
### FreeType Notice
|
### FreeType Notice
|
||||||
|
|||||||
@ -30,6 +30,6 @@ src/java.desktop/share/legal/freetype.md
|
|||||||
|
|
||||||
When updating specify --with-freetype=bundled to test builds to
|
When updating specify --with-freetype=bundled to test builds to
|
||||||
expose build issues.
|
expose build issues.
|
||||||
This is important because presently on Linux and Solaris the build
|
This is important because presently on Linux the build
|
||||||
defaults to linking against the system library and does not attempt
|
defaults to linking against the system library and does not attempt
|
||||||
to compile the sources.
|
to compile the sources.
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* ANSI-specific configuration file (specification only).
|
* ANSI-specific configuration file (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Build macros of the FreeType 2 library.
|
* Build macros of the FreeType 2 library.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -777,6 +777,18 @@
|
|||||||
#define FT_COLOR_H <freetype/ftcolor.h>
|
#define FT_COLOR_H <freetype/ftcolor.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @macro:
|
||||||
|
* FT_OTSVG_H
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A macro used in `#include` statements to name the file containing the
|
||||||
|
* FreeType~2 API which handles the OpenType 'SVG~' glyphs.
|
||||||
|
*/
|
||||||
|
#define FT_OTSVG_H <freetype/otsvg.h>
|
||||||
|
|
||||||
|
|
||||||
/* */
|
/* */
|
||||||
|
|
||||||
/* These header files don't need to be included by the user. */
|
/* These header files don't need to be included by the user. */
|
||||||
|
|||||||
@ -19,12 +19,15 @@ FT_USE_MODULE( FT_Driver_ClassRec, t1cid_driver_class )
|
|||||||
// FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class )
|
// FT_USE_MODULE( FT_Driver_ClassRec, t42_driver_class )
|
||||||
// FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class )
|
// FT_USE_MODULE( FT_Driver_ClassRec, winfnt_driver_class )
|
||||||
// FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class )
|
// FT_USE_MODULE( FT_Driver_ClassRec, pcf_driver_class )
|
||||||
|
// FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class )
|
||||||
FT_USE_MODULE( FT_Module_Class, psaux_module_class )
|
FT_USE_MODULE( FT_Module_Class, psaux_module_class )
|
||||||
FT_USE_MODULE( FT_Module_Class, psnames_module_class )
|
FT_USE_MODULE( FT_Module_Class, psnames_module_class )
|
||||||
FT_USE_MODULE( FT_Module_Class, pshinter_module_class )
|
FT_USE_MODULE( FT_Module_Class, pshinter_module_class )
|
||||||
FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class )
|
|
||||||
FT_USE_MODULE( FT_Module_Class, sfnt_module_class )
|
FT_USE_MODULE( FT_Module_Class, sfnt_module_class )
|
||||||
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class )
|
FT_USE_MODULE( FT_Renderer_Class, ft_smooth_renderer_class )
|
||||||
// FT_USE_MODULE( FT_Driver_ClassRec, bdf_driver_class )
|
FT_USE_MODULE( FT_Renderer_Class, ft_raster1_renderer_class )
|
||||||
|
// FT_USE_MODULE( FT_Renderer_Class, ft_sdf_renderer_class )
|
||||||
|
// FT_USE_MODULE( FT_Renderer_Class, ft_bitmap_sdf_renderer_class )
|
||||||
|
// FT_USE_MODULE( FT_Renderer_Class, ft_svg_renderer_class )
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* User-selectable configuration macros (specification only).
|
* User-selectable configuration macros (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -105,8 +105,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* ```
|
* ```
|
||||||
* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
|
* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
|
||||||
* cff:no-stem-darkening=1 \
|
* cff:no-stem-darkening=1
|
||||||
* autofitter:warping=1
|
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@ -220,6 +219,10 @@ FT_BEGIN_HEADER
|
|||||||
* If you use a build system like cmake or the `configure` script,
|
* If you use a build system like cmake or the `configure` script,
|
||||||
* options set by those programs have precedence, overwriting the value
|
* options set by those programs have precedence, overwriting the value
|
||||||
* here with the configured one.
|
* here with the configured one.
|
||||||
|
*
|
||||||
|
* If you use the GNU make build system directly (that is, without the
|
||||||
|
* `configure` script) and you define this macro, you also have to pass
|
||||||
|
* `SYSTEM_ZLIB=yes` as an argument to make.
|
||||||
*/
|
*/
|
||||||
/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
|
/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
|
||||||
|
|
||||||
@ -431,6 +434,23 @@ FT_BEGIN_HEADER
|
|||||||
/* #define FT_DEBUG_LEVEL_TRACE */
|
/* #define FT_DEBUG_LEVEL_TRACE */
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Logging
|
||||||
|
*
|
||||||
|
* Compiling FreeType in debug or trace mode makes FreeType write error
|
||||||
|
* and trace log messages to `stderr`. Enabling this macro
|
||||||
|
* automatically forces the `FT_DEBUG_LEVEL_ERROR` and
|
||||||
|
* `FT_DEBUG_LEVEL_TRACE` macros and allows FreeType to write error and
|
||||||
|
* trace log messages to a file instead of `stderr`. For writing logs
|
||||||
|
* to a file, FreeType uses an the external `dlg` library (the source
|
||||||
|
* code is in `src/dlg`).
|
||||||
|
*
|
||||||
|
* This option needs a C99 compiler.
|
||||||
|
*/
|
||||||
|
/* #define FT_DEBUG_LOGGING */
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* Autofitter debugging
|
* Autofitter debugging
|
||||||
@ -507,6 +527,20 @@ FT_BEGIN_HEADER
|
|||||||
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
|
#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* OpenType SVG Glyph Support
|
||||||
|
*
|
||||||
|
* Setting this macro enables support for OpenType SVG glyphs. By
|
||||||
|
* default, FreeType can only fetch SVG documents. However, it can also
|
||||||
|
* render them if external rendering hook functions are plugged in at
|
||||||
|
* runtime.
|
||||||
|
*
|
||||||
|
* More details on the hooks can be found in file `otsvg.h`.
|
||||||
|
*/
|
||||||
|
/* #define FT_CONFIG_OPTION_SVG */
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* Error Strings
|
* Error Strings
|
||||||
@ -892,24 +926,6 @@ FT_BEGIN_HEADER
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* Compile 'autofit' module with warp hinting. The idea of the warping
|
|
||||||
* code is to slightly scale and shift a glyph within a single dimension so
|
|
||||||
* that as much of its segments are aligned (more or less) on the grid. To
|
|
||||||
* find out the optimal scaling and shifting value, various parameter
|
|
||||||
* combinations are tried and scored.
|
|
||||||
*
|
|
||||||
* You can switch warping on and off with the `warping` property of the
|
|
||||||
* auto-hinter (see file `ftdriver.h` for more information; by default it
|
|
||||||
* is switched off).
|
|
||||||
*
|
|
||||||
* This experimental option is not active if the rendering mode is
|
|
||||||
* `FT_RENDER_MODE_LIGHT`.
|
|
||||||
*/
|
|
||||||
#define AF_CONFIG_OPTION_USE_WARPER
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* Use TrueType-like size metrics for 'light' auto-hinting.
|
* Use TrueType-like size metrics for 'light' auto-hinting.
|
||||||
@ -961,6 +977,21 @@ FT_BEGIN_HEADER
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The TT_SUPPORT_COLRV1 macro is defined to indicate to clients that this
|
||||||
|
* version of FreeType has support for 'COLR' v1 API. This definition is
|
||||||
|
* useful to FreeType clients that want to build in support for 'COLR' v1
|
||||||
|
* depending on a tip-of-tree checkout before it is officially released in
|
||||||
|
* FreeType, and while the feature cannot yet be tested against using
|
||||||
|
* version macros. Don't change this macro. This may be removed once the
|
||||||
|
* feature is in a FreeType release version and version macros can be used
|
||||||
|
* to test for availability.
|
||||||
|
*/
|
||||||
|
#ifdef TT_CONFIG_OPTION_COLOR_LAYERS
|
||||||
|
#define TT_SUPPORT_COLRV1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check CFF darkening parameters. The checks are the same as in function
|
* Check CFF darkening parameters. The checks are the same as in function
|
||||||
* `cff_property_set` in file `cffdrivr.c`.
|
* `cff_property_set` in file `cffdrivr.c`.
|
||||||
@ -989,8 +1020,8 @@ FT_BEGIN_HEADER
|
|||||||
#error "Invalid CFF darkening parameters!"
|
#error "Invalid CFF darkening parameters!"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
FT_END_HEADER
|
|
||||||
|
|
||||||
|
FT_END_HEADER
|
||||||
|
|
||||||
#endif /* FTOPTION_H_ */
|
#endif /* FTOPTION_H_ */
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
* ANSI-specific library and header configuration file (specification
|
* ANSI-specific library and header configuration file (specification
|
||||||
* only).
|
* only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2020 by
|
* Copyright (C) 2002-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -43,7 +43,8 @@
|
|||||||
*
|
*
|
||||||
* `UINT_MAX` and `ULONG_MAX` are used to automatically compute the size of
|
* `UINT_MAX` and `ULONG_MAX` are used to automatically compute the size of
|
||||||
* `int` and `long` in bytes at compile-time. So far, this works for all
|
* `int` and `long` in bytes at compile-time. So far, this works for all
|
||||||
* platforms the library has been tested on.
|
* platforms the library has been tested on. We also check `ULLONG_MAX`
|
||||||
|
* to see whether we can use 64-bit `long long` later on.
|
||||||
*
|
*
|
||||||
* Note that on the extremely rare platforms that do not provide integer
|
* Note that on the extremely rare platforms that do not provide integer
|
||||||
* types that are _exactly_ 16 and 32~bits wide (e.g., some old Crays where
|
* types that are _exactly_ 16 and 32~bits wide (e.g., some old Crays where
|
||||||
@ -66,6 +67,15 @@
|
|||||||
#define FT_LONG_MIN LONG_MIN
|
#define FT_LONG_MIN LONG_MIN
|
||||||
#define FT_LONG_MAX LONG_MAX
|
#define FT_LONG_MAX LONG_MAX
|
||||||
#define FT_ULONG_MAX ULONG_MAX
|
#define FT_ULONG_MAX ULONG_MAX
|
||||||
|
#ifdef LLONG_MAX
|
||||||
|
#define FT_LLONG_MAX LLONG_MAX
|
||||||
|
#endif
|
||||||
|
#ifdef LLONG_MIN
|
||||||
|
#define FT_LLONG_MIN LLONG_MIN
|
||||||
|
#endif
|
||||||
|
#ifdef ULLONG_MAX
|
||||||
|
#define FT_ULLONG_MAX ULLONG_MAX
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType integer types definitions.
|
* FreeType integer types definitions.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -60,6 +60,18 @@
|
|||||||
|
|
||||||
#endif /* !defined(FT_SIZEOF_LONG) */
|
#endif /* !defined(FT_SIZEOF_LONG) */
|
||||||
|
|
||||||
|
#ifndef FT_SIZEOF_LONG_LONG
|
||||||
|
|
||||||
|
/* The size of a `long long` type if available */
|
||||||
|
#if defined( FT_ULLONG_MAX ) && FT_ULLONG_MAX >= 0xFFFFFFFFFFFFFFFFULL
|
||||||
|
#define FT_SIZEOF_LONG_LONG ( 64 / FT_CHAR_BIT )
|
||||||
|
#else
|
||||||
|
#define FT_SIZEOF_LONG_LONG 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !defined(FT_SIZEOF_LONG_LONG) */
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @section:
|
* @section:
|
||||||
@ -174,15 +186,17 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* determine whether we have a 64-bit `int` type for platforms without */
|
/* determine whether we have a 64-bit integer type */
|
||||||
/* Autoconf */
|
|
||||||
#if FT_SIZEOF_LONG == ( 64 / FT_CHAR_BIT )
|
#if FT_SIZEOF_LONG == ( 64 / FT_CHAR_BIT )
|
||||||
|
|
||||||
/* `FT_LONG64` must be defined if a 64-bit type is available */
|
|
||||||
#define FT_LONG64
|
|
||||||
#define FT_INT64 long
|
#define FT_INT64 long
|
||||||
#define FT_UINT64 unsigned long
|
#define FT_UINT64 unsigned long
|
||||||
|
|
||||||
|
#elif FT_SIZEOF_LONG_LONG >= ( 64 / FT_CHAR_BIT )
|
||||||
|
|
||||||
|
#define FT_INT64 long long int
|
||||||
|
#define FT_UINT64 unsigned long long int
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* A 64-bit data type may create compilation problems if you compile in
|
* A 64-bit data type may create compilation problems if you compile in
|
||||||
@ -192,16 +206,9 @@
|
|||||||
*/
|
*/
|
||||||
#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
|
#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
|
||||||
|
|
||||||
#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L
|
#if defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
|
||||||
|
|
||||||
#define FT_LONG64
|
|
||||||
#define FT_INT64 long long int
|
|
||||||
#define FT_UINT64 unsigned long long int
|
|
||||||
|
|
||||||
#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
|
|
||||||
|
|
||||||
/* this compiler provides the `__int64` type */
|
/* this compiler provides the `__int64` type */
|
||||||
#define FT_LONG64
|
|
||||||
#define FT_INT64 __int64
|
#define FT_INT64 __int64
|
||||||
#define FT_UINT64 unsigned __int64
|
#define FT_UINT64 unsigned __int64
|
||||||
|
|
||||||
@ -211,32 +218,30 @@
|
|||||||
/* to test the compiler version. */
|
/* to test the compiler version. */
|
||||||
|
|
||||||
/* this compiler provides the `__int64` type */
|
/* this compiler provides the `__int64` type */
|
||||||
#define FT_LONG64
|
|
||||||
#define FT_INT64 __int64
|
#define FT_INT64 __int64
|
||||||
#define FT_UINT64 unsigned __int64
|
#define FT_UINT64 unsigned __int64
|
||||||
|
|
||||||
#elif defined( __WATCOMC__ ) /* Watcom C++ */
|
#elif defined( __WATCOMC__ ) && __WATCOMC__ >= 1100 /* Watcom C++ */
|
||||||
|
|
||||||
/* Watcom doesn't provide 64-bit data types */
|
#define FT_INT64 long long int
|
||||||
|
#define FT_UINT64 unsigned long long int
|
||||||
|
|
||||||
#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */
|
#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */
|
||||||
|
|
||||||
#define FT_LONG64
|
|
||||||
#define FT_INT64 long long int
|
#define FT_INT64 long long int
|
||||||
#define FT_UINT64 unsigned long long int
|
#define FT_UINT64 unsigned long long int
|
||||||
|
|
||||||
#elif defined( __GNUC__ )
|
#elif defined( __GNUC__ )
|
||||||
|
|
||||||
/* GCC provides the `long long` type */
|
/* GCC provides the `long long` type */
|
||||||
#define FT_LONG64
|
|
||||||
#define FT_INT64 long long int
|
#define FT_INT64 long long int
|
||||||
#define FT_UINT64 unsigned long long int
|
#define FT_UINT64 unsigned long long int
|
||||||
|
|
||||||
#endif /* __STDC_VERSION__ >= 199901L */
|
#endif /* !__STDC__ */
|
||||||
|
|
||||||
#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */
|
#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */
|
||||||
|
|
||||||
#ifdef FT_LONG64
|
#ifdef FT_INT64
|
||||||
typedef FT_INT64 FT_Int64;
|
typedef FT_INT64 FT_Int64;
|
||||||
typedef FT_UINT64 FT_UInt64;
|
typedef FT_UINT64 FT_UInt64;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Mac/OS X support configuration header.
|
* Mac/OS X support configuration header.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Define a set of compiler macros used in public FreeType headers.
|
* Define a set of compiler macros used in public FreeType headers.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020 by
|
* Copyright (C) 2020-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -103,6 +103,7 @@ FT_BEGIN_HEADER
|
|||||||
*/
|
*/
|
||||||
#define FT_EXPORT( x ) FT_PUBLIC_FUNCTION_ATTRIBUTE extern x
|
#define FT_EXPORT( x ) FT_PUBLIC_FUNCTION_ATTRIBUTE extern x
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* `FT_UNUSED` indicates that a given parameter is not used -- this is
|
* `FT_UNUSED` indicates that a given parameter is not used -- this is
|
||||||
* only used to get rid of unpleasant compiler warnings.
|
* only used to get rid of unpleasant compiler warnings.
|
||||||
@ -115,6 +116,23 @@ FT_BEGIN_HEADER
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Support for casts in both C and C++.
|
||||||
|
*/
|
||||||
|
#ifdef __cplusplus
|
||||||
|
#define FT_STATIC_CAST( type, var ) static_cast<type>(var)
|
||||||
|
#define FT_REINTERPRET_CAST( type, var ) reinterpret_cast<type>(var)
|
||||||
|
|
||||||
|
#define FT_STATIC_BYTE_CAST( type, var ) \
|
||||||
|
static_cast<type>( static_cast<unsigned char>( var ) )
|
||||||
|
#else
|
||||||
|
#define FT_STATIC_CAST( type, var ) (type)(var)
|
||||||
|
#define FT_REINTERPRET_CAST( type, var ) (type)(var)
|
||||||
|
|
||||||
|
#define FT_STATIC_BYTE_CAST( type, var ) (type)(unsigned char)(var)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
FT_END_HEADER
|
||||||
|
|
||||||
#endif /* FREETYPE_CONFIG_PUBLIC_MACROS_H_ */
|
#endif /* FREETYPE_CONFIG_PUBLIC_MACROS_H_ */
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType high-level API and common types (specification only).
|
* FreeType high-level API and common types (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -30,6 +30,34 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @section:
|
||||||
|
* preamble
|
||||||
|
*
|
||||||
|
* @title:
|
||||||
|
* Preamble
|
||||||
|
*
|
||||||
|
* @abstract:
|
||||||
|
* What FreeType is and isn't
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* FreeType is a library that provides access to glyphs in font files. It
|
||||||
|
* scales the glyph images and their metrics to a requested size, and it
|
||||||
|
* rasterizes the glyph images to produce pixel or subpixel alpha coverage
|
||||||
|
* bitmaps.
|
||||||
|
*
|
||||||
|
* Note that FreeType is _not_ a text layout engine. You have to use
|
||||||
|
* higher-level libraries like HarfBuzz, Pango, or ICU for that.
|
||||||
|
*
|
||||||
|
* Note also that FreeType does _not_ perform alpha blending or
|
||||||
|
* compositing the resulting bitmaps or pixmaps by itself. Use your
|
||||||
|
* favourite graphics library (for example, Cairo or Skia) to further
|
||||||
|
* process FreeType's output.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @section:
|
* @section:
|
||||||
@ -125,6 +153,9 @@ FT_BEGIN_HEADER
|
|||||||
* FT_FACE_FLAG_GLYPH_NAMES
|
* FT_FACE_FLAG_GLYPH_NAMES
|
||||||
* FT_FACE_FLAG_EXTERNAL_STREAM
|
* FT_FACE_FLAG_EXTERNAL_STREAM
|
||||||
* FT_FACE_FLAG_HINTER
|
* FT_FACE_FLAG_HINTER
|
||||||
|
* FT_FACE_FLAG_SVG
|
||||||
|
* FT_FACE_FLAG_SBIX
|
||||||
|
* FT_FACE_FLAG_SBIX_OVERLAY
|
||||||
*
|
*
|
||||||
* FT_HAS_HORIZONTAL
|
* FT_HAS_HORIZONTAL
|
||||||
* FT_HAS_VERTICAL
|
* FT_HAS_VERTICAL
|
||||||
@ -133,6 +164,9 @@ FT_BEGIN_HEADER
|
|||||||
* FT_HAS_GLYPH_NAMES
|
* FT_HAS_GLYPH_NAMES
|
||||||
* FT_HAS_COLOR
|
* FT_HAS_COLOR
|
||||||
* FT_HAS_MULTIPLE_MASTERS
|
* FT_HAS_MULTIPLE_MASTERS
|
||||||
|
* FT_HAS_SVG
|
||||||
|
* FT_HAS_SBIX
|
||||||
|
* FT_HAS_SBIX_OVERLAY
|
||||||
*
|
*
|
||||||
* FT_IS_SFNT
|
* FT_IS_SFNT
|
||||||
* FT_IS_SCALABLE
|
* FT_IS_SCALABLE
|
||||||
@ -176,6 +210,7 @@ FT_BEGIN_HEADER
|
|||||||
* FT_Size_RequestRec
|
* FT_Size_RequestRec
|
||||||
* FT_Size_Request
|
* FT_Size_Request
|
||||||
* FT_Set_Transform
|
* FT_Set_Transform
|
||||||
|
* FT_Get_Transform
|
||||||
* FT_Load_Glyph
|
* FT_Load_Glyph
|
||||||
* FT_Get_Char_Index
|
* FT_Get_Char_Index
|
||||||
* FT_Get_First_Char
|
* FT_Get_First_Char
|
||||||
@ -196,6 +231,7 @@ FT_BEGIN_HEADER
|
|||||||
* FT_LOAD_NO_SCALE
|
* FT_LOAD_NO_SCALE
|
||||||
* FT_LOAD_NO_HINTING
|
* FT_LOAD_NO_HINTING
|
||||||
* FT_LOAD_NO_BITMAP
|
* FT_LOAD_NO_BITMAP
|
||||||
|
* FT_LOAD_SBITS_ONLY
|
||||||
* FT_LOAD_NO_AUTOHINT
|
* FT_LOAD_NO_AUTOHINT
|
||||||
* FT_LOAD_COLOR
|
* FT_LOAD_COLOR
|
||||||
*
|
*
|
||||||
@ -493,13 +529,15 @@ FT_BEGIN_HEADER
|
|||||||
* size.
|
* size.
|
||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* An @FT_Face has one _active_ @FT_Size object that is used by functions
|
* An @FT_Face has one _active_ `FT_Size` object that is used by
|
||||||
* like @FT_Load_Glyph to determine the scaling transformation that in
|
* functions like @FT_Load_Glyph to determine the scaling transformation
|
||||||
* turn is used to load and hint glyphs and metrics.
|
* that in turn is used to load and hint glyphs and metrics.
|
||||||
*
|
*
|
||||||
* You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, @FT_Request_Size
|
* A newly created `FT_Size` object contains only meaningless zero values.
|
||||||
|
* You must use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, @FT_Request_Size
|
||||||
* or even @FT_Select_Size to change the content (i.e., the scaling
|
* or even @FT_Select_Size to change the content (i.e., the scaling
|
||||||
* values) of the active @FT_Size.
|
* values) of the active `FT_Size`. Otherwise, the scaling and hinting
|
||||||
|
* will not be performed.
|
||||||
*
|
*
|
||||||
* You can use @FT_New_Size to create additional size objects for a given
|
* You can use @FT_New_Size to create additional size objects for a given
|
||||||
* @FT_Face, but they won't be used by other functions until you activate
|
* @FT_Face, but they won't be used by other functions until you activate
|
||||||
@ -587,11 +625,12 @@ FT_BEGIN_HEADER
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef FT_ENC_TAG
|
#ifndef FT_ENC_TAG
|
||||||
#define FT_ENC_TAG( value, a, b, c, d ) \
|
|
||||||
value = ( ( (FT_UInt32)(a) << 24 ) | \
|
#define FT_ENC_TAG( value, a, b, c, d ) \
|
||||||
( (FT_UInt32)(b) << 16 ) | \
|
value = ( ( FT_STATIC_BYTE_CAST( FT_UInt32, a ) << 24 ) | \
|
||||||
( (FT_UInt32)(c) << 8 ) | \
|
( FT_STATIC_BYTE_CAST( FT_UInt32, b ) << 16 ) | \
|
||||||
(FT_UInt32)(d) )
|
( FT_STATIC_BYTE_CAST( FT_UInt32, c ) << 8 ) | \
|
||||||
|
FT_STATIC_BYTE_CAST( FT_UInt32, d ) )
|
||||||
|
|
||||||
#endif /* FT_ENC_TAG */
|
#endif /* FT_ENC_TAG */
|
||||||
|
|
||||||
@ -701,11 +740,16 @@ FT_BEGIN_HEADER
|
|||||||
* Same as FT_ENCODING_JOHAB. Deprecated.
|
* Same as FT_ENCODING_JOHAB. Deprecated.
|
||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* By default, FreeType enables a Unicode charmap and tags it with
|
* When loading a font, FreeType makes a Unicode charmap active if
|
||||||
* `FT_ENCODING_UNICODE` when it is either provided or can be generated
|
* possible (either if the font provides such a charmap, or if FreeType
|
||||||
* from PostScript glyph name dictionaries in the font file. All other
|
* can synthesize one from PostScript glyph name dictionaries; in either
|
||||||
* encodings are considered legacy and tagged only if explicitly defined
|
* case, the charmap is tagged with `FT_ENCODING_UNICODE`). If such a
|
||||||
* in the font file. Otherwise, `FT_ENCODING_NONE` is used.
|
* charmap is synthesized, it is placed at the first position of the
|
||||||
|
* charmap array.
|
||||||
|
*
|
||||||
|
* All other encodings are considered legacy and tagged only if
|
||||||
|
* explicitly defined in the font file. Otherwise, `FT_ENCODING_NONE` is
|
||||||
|
* used.
|
||||||
*
|
*
|
||||||
* `FT_ENCODING_NONE` is set by the BDF and PCF drivers if the charmap is
|
* `FT_ENCODING_NONE` is set by the BDF and PCF drivers if the charmap is
|
||||||
* neither Unicode nor ISO-8859-1 (otherwise it is set to
|
* neither Unicode nor ISO-8859-1 (otherwise it is set to
|
||||||
@ -1193,6 +1237,19 @@ FT_BEGIN_HEADER
|
|||||||
* altered with @FT_Set_MM_Design_Coordinates,
|
* altered with @FT_Set_MM_Design_Coordinates,
|
||||||
* @FT_Set_Var_Design_Coordinates, or @FT_Set_Var_Blend_Coordinates.
|
* @FT_Set_Var_Design_Coordinates, or @FT_Set_Var_Blend_Coordinates.
|
||||||
* This flag is unset by a call to @FT_Set_Named_Instance.
|
* This flag is unset by a call to @FT_Set_Named_Instance.
|
||||||
|
*
|
||||||
|
* FT_FACE_FLAG_SVG ::
|
||||||
|
* [Since 2.12] The face has an 'SVG~' OpenType table.
|
||||||
|
*
|
||||||
|
* FT_FACE_FLAG_SBIX ::
|
||||||
|
* [Since 2.12] The face has an 'sbix' OpenType table *and* outlines.
|
||||||
|
* For such fonts, @FT_FACE_FLAG_SCALABLE is not set by default to
|
||||||
|
* retain backward compatibility.
|
||||||
|
*
|
||||||
|
* FT_FACE_FLAG_SBIX_OVERLAY ::
|
||||||
|
* [Since 2.12] The face has an 'sbix' OpenType table where outlines
|
||||||
|
* should be drawn on top of bitmap strikes.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
#define FT_FACE_FLAG_SCALABLE ( 1L << 0 )
|
#define FT_FACE_FLAG_SCALABLE ( 1L << 0 )
|
||||||
#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 )
|
#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 )
|
||||||
@ -1210,6 +1267,9 @@ FT_BEGIN_HEADER
|
|||||||
#define FT_FACE_FLAG_TRICKY ( 1L << 13 )
|
#define FT_FACE_FLAG_TRICKY ( 1L << 13 )
|
||||||
#define FT_FACE_FLAG_COLOR ( 1L << 14 )
|
#define FT_FACE_FLAG_COLOR ( 1L << 14 )
|
||||||
#define FT_FACE_FLAG_VARIATION ( 1L << 15 )
|
#define FT_FACE_FLAG_VARIATION ( 1L << 15 )
|
||||||
|
#define FT_FACE_FLAG_SVG ( 1L << 16 )
|
||||||
|
#define FT_FACE_FLAG_SBIX ( 1L << 17 )
|
||||||
|
#define FT_FACE_FLAG_SBIX_OVERLAY ( 1L << 18 )
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
@ -1450,6 +1510,124 @@ FT_BEGIN_HEADER
|
|||||||
( !!( (face)->face_flags & FT_FACE_FLAG_COLOR ) )
|
( !!( (face)->face_flags & FT_FACE_FLAG_COLOR ) )
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @macro:
|
||||||
|
* FT_HAS_SVG
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A macro that returns true whenever a face object contains an 'SVG~'
|
||||||
|
* OpenType table.
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.12
|
||||||
|
*/
|
||||||
|
#define FT_HAS_SVG( face ) \
|
||||||
|
( !!( (face)->face_flags & FT_FACE_FLAG_SVG ) )
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @macro:
|
||||||
|
* FT_HAS_SBIX
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A macro that returns true whenever a face object contains an 'sbix'
|
||||||
|
* OpenType table *and* outline glyphs.
|
||||||
|
*
|
||||||
|
* Currently, FreeType only supports bitmap glyphs in PNG format for this
|
||||||
|
* table (i.e., JPEG and TIFF formats are unsupported, as are
|
||||||
|
* Apple-specific formats not part of the OpenType specification).
|
||||||
|
*
|
||||||
|
* @note:
|
||||||
|
* For backward compatibility, a font with an 'sbix' table is treated as
|
||||||
|
* a bitmap-only face. Using @FT_Open_Face with
|
||||||
|
* @FT_PARAM_TAG_IGNORE_SBIX, an application can switch off 'sbix'
|
||||||
|
* handling so that the face is treated as an ordinary outline font with
|
||||||
|
* scalable outlines.
|
||||||
|
*
|
||||||
|
* Here is some pseudo code that roughly illustrates how to implement
|
||||||
|
* 'sbix' handling according to the OpenType specification.
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* if ( FT_HAS_SBIX( face ) )
|
||||||
|
* {
|
||||||
|
* // open font as a scalable one without sbix handling
|
||||||
|
* FT_Face face2;
|
||||||
|
* FT_Parameter param = { FT_PARAM_TAG_IGNORE_SBIX, NULL };
|
||||||
|
* FT_Open_Args args = { FT_OPEN_PARAMS | ...,
|
||||||
|
* ...,
|
||||||
|
* 1, ¶m };
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* FT_Open_Face( library, &args, 0, &face2 );
|
||||||
|
*
|
||||||
|
* <sort `face->available_size` as necessary into
|
||||||
|
* `preferred_sizes`[*]>
|
||||||
|
*
|
||||||
|
* for ( i = 0; i < face->num_fixed_sizes; i++ )
|
||||||
|
* {
|
||||||
|
* size = preferred_sizes[i].size;
|
||||||
|
*
|
||||||
|
* error = FT_Set_Pixel_Sizes( face, size, size );
|
||||||
|
* <error handling omitted>
|
||||||
|
*
|
||||||
|
* // check whether we have a glyph in a bitmap strike
|
||||||
|
* error = FT_Load_Glyph( face,
|
||||||
|
* glyph_index,
|
||||||
|
* FT_LOAD_SBITS_ONLY |
|
||||||
|
* FT_LOAD_BITMAP_METRICS_ONLY );
|
||||||
|
* if ( error == FT_Err_Invalid_Argument )
|
||||||
|
* continue;
|
||||||
|
* else if ( error )
|
||||||
|
* <other error handling omitted>
|
||||||
|
* else
|
||||||
|
* break;
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* if ( i != face->num_fixed_sizes )
|
||||||
|
* <load embedded bitmap with `FT_Load_Glyph`,
|
||||||
|
* scale it, display it, etc.>
|
||||||
|
*
|
||||||
|
* if ( i == face->num_fixed_sizes ||
|
||||||
|
* FT_HAS_SBIX_OVERLAY( face ) )
|
||||||
|
* <use `face2` to load outline glyph with `FT_Load_Glyph`,
|
||||||
|
* scale it, display it on top of the bitmap, etc.>
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* [*] Assuming a target value of 400dpi and available strike sizes 100,
|
||||||
|
* 200, 300, and 400dpi, a possible order might be [400, 200, 300, 100]:
|
||||||
|
* scaling 200dpi to 400dpi usually gives better results than scaling
|
||||||
|
* 300dpi to 400dpi; it is also much faster. However, scaling 100dpi to
|
||||||
|
* 400dpi can yield a too pixelated result, thus the preference might be
|
||||||
|
* 300dpi over 100dpi.
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.12
|
||||||
|
*/
|
||||||
|
#define FT_HAS_SBIX( face ) \
|
||||||
|
( !!( (face)->face_flags & FT_FACE_FLAG_SBIX ) )
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @macro:
|
||||||
|
* FT_HAS_SBIX_OVERLAY
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A macro that returns true whenever a face object contains an 'sbix'
|
||||||
|
* OpenType table with bit~1 in its `flags` field set, instructing the
|
||||||
|
* application to overlay the bitmap strike with the corresponding
|
||||||
|
* outline glyph. See @FT_HAS_SBIX for pseudo code how to use it.
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.12
|
||||||
|
*/
|
||||||
|
#define FT_HAS_SBIX_OVERLAY( face ) \
|
||||||
|
( !!( (face)->face_flags & FT_FACE_FLAG_SBIX_OVERLAY ) )
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @enum:
|
* @enum:
|
||||||
@ -2065,7 +2243,8 @@ FT_BEGIN_HEADER
|
|||||||
* The size in bytes of the file in memory.
|
* The size in bytes of the file in memory.
|
||||||
*
|
*
|
||||||
* pathname ::
|
* pathname ::
|
||||||
* A pointer to an 8-bit file pathname. The pointer is not owned by
|
* A pointer to an 8-bit file pathname, which must be a C~string (i.e.,
|
||||||
|
* no null bytes except at the very end). The pointer is not owned by
|
||||||
* FreeType.
|
* FreeType.
|
||||||
*
|
*
|
||||||
* stream ::
|
* stream ::
|
||||||
@ -2084,8 +2263,7 @@ FT_BEGIN_HEADER
|
|||||||
* Extra parameters passed to the font driver when opening a new face.
|
* Extra parameters passed to the font driver when opening a new face.
|
||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* The stream type is determined by the contents of `flags` that are
|
* The stream type is determined by the contents of `flags`:
|
||||||
* tested in the following order by @FT_Open_Face:
|
|
||||||
*
|
*
|
||||||
* If the @FT_OPEN_MEMORY bit is set, assume that this is a memory file
|
* If the @FT_OPEN_MEMORY bit is set, assume that this is a memory file
|
||||||
* of `memory_size` bytes, located at `memory_address`. The data are not
|
* of `memory_size` bytes, located at `memory_address`. The data are not
|
||||||
@ -2098,6 +2276,9 @@ FT_BEGIN_HEADER
|
|||||||
* Otherwise, if the @FT_OPEN_PATHNAME bit is set, assume that this is a
|
* Otherwise, if the @FT_OPEN_PATHNAME bit is set, assume that this is a
|
||||||
* normal file and use `pathname` to open it.
|
* normal file and use `pathname` to open it.
|
||||||
*
|
*
|
||||||
|
* If none of the above bits are set or if multiple are set at the same
|
||||||
|
* time, the flags are invalid and @FT_Open_Face fails.
|
||||||
|
*
|
||||||
* If the @FT_OPEN_DRIVER bit is set, @FT_Open_Face only tries to open
|
* If the @FT_OPEN_DRIVER bit is set, @FT_Open_Face only tries to open
|
||||||
* the file with the driver whose handler is in `driver`.
|
* the file with the driver whose handler is in `driver`.
|
||||||
*
|
*
|
||||||
@ -2150,6 +2331,13 @@ FT_BEGIN_HEADER
|
|||||||
* FreeType error code. 0~means success.
|
* FreeType error code. 0~means success.
|
||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
|
* The `pathname` string should be recognizable as such by a standard
|
||||||
|
* `fopen` call on your system; in particular, this means that `pathname`
|
||||||
|
* must not contain null bytes. If that is not sufficient to address all
|
||||||
|
* file name possibilities (for example, to handle wide character file
|
||||||
|
* names on Windows in UTF-16 encoding) you might use @FT_Open_Face to
|
||||||
|
* pass a memory array or a stream object instead.
|
||||||
|
*
|
||||||
* Use @FT_Done_Face to destroy the created @FT_Face object (along with
|
* Use @FT_Done_Face to destroy the created @FT_Face object (along with
|
||||||
* its slot and sizes).
|
* its slot and sizes).
|
||||||
*/
|
*/
|
||||||
@ -2270,6 +2458,10 @@ FT_BEGIN_HEADER
|
|||||||
* See the discussion of reference counters in the description of
|
* See the discussion of reference counters in the description of
|
||||||
* @FT_Reference_Face.
|
* @FT_Reference_Face.
|
||||||
*
|
*
|
||||||
|
* If `FT_OPEN_STREAM` is set in `args->flags`, the stream in
|
||||||
|
* `args->stream` is automatically closed before this function returns
|
||||||
|
* any error (including `FT_Err_Invalid_Argument`).
|
||||||
|
*
|
||||||
* @example:
|
* @example:
|
||||||
* To loop over all faces, use code similar to the following snippet
|
* To loop over all faces, use code similar to the following snippet
|
||||||
* (omitting the error handling).
|
* (omitting the error handling).
|
||||||
@ -2428,6 +2620,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @since:
|
* @since:
|
||||||
* 2.4.2
|
* 2.4.2
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( FT_Error )
|
FT_EXPORT( FT_Error )
|
||||||
FT_Reference_Face( FT_Face face );
|
FT_Reference_Face( FT_Face face );
|
||||||
@ -2652,8 +2845,8 @@ FT_BEGIN_HEADER
|
|||||||
* 'https://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html'.
|
* 'https://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html'.
|
||||||
*
|
*
|
||||||
* Contrary to @FT_Set_Char_Size, this function doesn't have special code
|
* Contrary to @FT_Set_Char_Size, this function doesn't have special code
|
||||||
* to normalize zero-valued widths, heights, or resolutions (which lead
|
* to normalize zero-valued widths, heights, or resolutions, which are
|
||||||
* to errors in most cases).
|
* treated as @FT_LOAD_NO_SCALE.
|
||||||
*
|
*
|
||||||
* Don't use this function if you are using the FreeType cache API.
|
* Don't use this function if you are using the FreeType cache API.
|
||||||
*/
|
*/
|
||||||
@ -2769,7 +2962,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* load_flags ::
|
* load_flags ::
|
||||||
* A flag indicating what to load for this glyph. The @FT_LOAD_XXX
|
* A flag indicating what to load for this glyph. The @FT_LOAD_XXX
|
||||||
* constants can be used to control the glyph loading process (e.g.,
|
* flags can be used to control the glyph loading process (e.g.,
|
||||||
* whether the outline should be scaled, whether to load bitmaps or
|
* whether the outline should be scaled, whether to load bitmaps or
|
||||||
* not, whether to hint the outline, etc).
|
* not, whether to hint the outline, etc).
|
||||||
*
|
*
|
||||||
@ -2777,8 +2970,10 @@ FT_BEGIN_HEADER
|
|||||||
* FreeType error code. 0~means success.
|
* FreeType error code. 0~means success.
|
||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* The loaded glyph may be transformed. See @FT_Set_Transform for the
|
* For proper scaling and hinting, the active @FT_Size object owned by
|
||||||
* details.
|
* the face has to be meaningfully initialized by calling
|
||||||
|
* @FT_Set_Char_Size before this function, for example. The loaded
|
||||||
|
* glyph may be transformed. See @FT_Set_Transform for the details.
|
||||||
*
|
*
|
||||||
* For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument` is returned
|
* For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument` is returned
|
||||||
* for invalid CID values (this is, for CID values that don't have a
|
* for invalid CID values (this is, for CID values that don't have a
|
||||||
@ -2868,6 +3063,8 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* FT_LOAD_NO_SCALE ::
|
* FT_LOAD_NO_SCALE ::
|
||||||
* Don't scale the loaded outline glyph but keep it in font units.
|
* Don't scale the loaded outline glyph but keep it in font units.
|
||||||
|
* This flag is also assumed if @FT_Size owned by the face was not
|
||||||
|
* properly initialized.
|
||||||
*
|
*
|
||||||
* This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and
|
* This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and
|
||||||
* unsets @FT_LOAD_RENDER.
|
* unsets @FT_LOAD_RENDER.
|
||||||
@ -2898,6 +3095,15 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @FT_LOAD_NO_SCALE always sets this flag.
|
* @FT_LOAD_NO_SCALE always sets this flag.
|
||||||
*
|
*
|
||||||
|
* FT_LOAD_SBITS_ONLY ::
|
||||||
|
* [Since 2.12] This is the opposite of @FT_LOAD_NO_BITMAP, more or
|
||||||
|
* less: @FT_Load_Glyph returns `FT_Err_Invalid_Argument` if the face
|
||||||
|
* contains a bitmap strike for the given size (or the strike selected
|
||||||
|
* by @FT_Select_Size) but there is no glyph in the strike.
|
||||||
|
*
|
||||||
|
* Note that this load flag was part of FreeType since version 2.0.6
|
||||||
|
* but previously tagged as internal.
|
||||||
|
*
|
||||||
* FT_LOAD_VERTICAL_LAYOUT ::
|
* FT_LOAD_VERTICAL_LAYOUT ::
|
||||||
* Load the glyph for vertical text layout. In particular, the
|
* Load the glyph for vertical text layout. In particular, the
|
||||||
* `advance` value in the @FT_GlyphSlotRec structure is set to the
|
* `advance` value in the @FT_GlyphSlotRec structure is set to the
|
||||||
@ -2954,21 +3160,31 @@ FT_BEGIN_HEADER
|
|||||||
* Disable the auto-hinter. See also the note below.
|
* Disable the auto-hinter. See also the note below.
|
||||||
*
|
*
|
||||||
* FT_LOAD_COLOR ::
|
* FT_LOAD_COLOR ::
|
||||||
* Load colored glyphs. There are slight differences depending on the
|
* Load colored glyphs. FreeType searches in the following order;
|
||||||
* font format.
|
* there are slight differences depending on the font format.
|
||||||
*
|
*
|
||||||
* [Since 2.5] Load embedded color bitmap images. The resulting color
|
* [Since 2.5] Load embedded color bitmap images (provided
|
||||||
* bitmaps, if available, will have the @FT_PIXEL_MODE_BGRA format,
|
* @FT_LOAD_NO_BITMAP is not set). The resulting color bitmaps, if
|
||||||
* with pre-multiplied color channels. If the flag is not set and
|
* available, have the @FT_PIXEL_MODE_BGRA format, with pre-multiplied
|
||||||
* color bitmaps are found, they are converted to 256-level gray
|
* color channels. If the flag is not set and color bitmaps are found,
|
||||||
* bitmaps, using the @FT_PIXEL_MODE_GRAY format.
|
* they are converted to 256-level gray bitmaps, using the
|
||||||
|
* @FT_PIXEL_MODE_GRAY format.
|
||||||
*
|
*
|
||||||
* [Since 2.10, experimental] If the glyph index contains an entry in
|
* [Since 2.12] If the glyph index maps to an entry in the face's
|
||||||
|
* 'SVG~' table, load the associated SVG document from this table and
|
||||||
|
* set the `format` field of @FT_GlyphSlotRec to @FT_GLYPH_FORMAT_SVG.
|
||||||
|
* Note that FreeType itself can't render SVG documents; however, the
|
||||||
|
* library provides hooks to seamlessly integrate an external renderer.
|
||||||
|
* See sections @ot_svg_driver and @svg_fonts for more.
|
||||||
|
*
|
||||||
|
* [Since 2.10, experimental] If the glyph index maps to an entry in
|
||||||
* the face's 'COLR' table with a 'CPAL' palette table (as defined in
|
* the face's 'COLR' table with a 'CPAL' palette table (as defined in
|
||||||
* the OpenType specification), make @FT_Render_Glyph provide a default
|
* the OpenType specification), make @FT_Render_Glyph provide a default
|
||||||
* blending of the color glyph layers associated with the glyph index,
|
* blending of the color glyph layers associated with the glyph index,
|
||||||
* using the same bitmap format as embedded color bitmap images. This
|
* using the same bitmap format as embedded color bitmap images. This
|
||||||
* is mainly for convenience; for full control of color layers use
|
* is mainly for convenience and works only for glyphs in 'COLR' v0
|
||||||
|
* tables (or glyphs in 'COLR' v1 tables that exclusively use v0
|
||||||
|
* features). For full control of color layers use
|
||||||
* @FT_Get_Color_Glyph_Layer and FreeType's color functions like
|
* @FT_Get_Color_Glyph_Layer and FreeType's color functions like
|
||||||
* @FT_Palette_Select instead of setting @FT_LOAD_COLOR for rendering
|
* @FT_Palette_Select instead of setting @FT_LOAD_COLOR for rendering
|
||||||
* so that the client application can handle blending by itself.
|
* so that the client application can handle blending by itself.
|
||||||
@ -3019,19 +3235,20 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#define FT_LOAD_DEFAULT 0x0
|
#define FT_LOAD_DEFAULT 0x0
|
||||||
#define FT_LOAD_NO_SCALE ( 1L << 0 )
|
#define FT_LOAD_NO_SCALE ( 1L << 0 )
|
||||||
#define FT_LOAD_NO_HINTING ( 1L << 1 )
|
#define FT_LOAD_NO_HINTING ( 1L << 1 )
|
||||||
#define FT_LOAD_RENDER ( 1L << 2 )
|
#define FT_LOAD_RENDER ( 1L << 2 )
|
||||||
#define FT_LOAD_NO_BITMAP ( 1L << 3 )
|
#define FT_LOAD_NO_BITMAP ( 1L << 3 )
|
||||||
#define FT_LOAD_VERTICAL_LAYOUT ( 1L << 4 )
|
#define FT_LOAD_VERTICAL_LAYOUT ( 1L << 4 )
|
||||||
#define FT_LOAD_FORCE_AUTOHINT ( 1L << 5 )
|
#define FT_LOAD_FORCE_AUTOHINT ( 1L << 5 )
|
||||||
#define FT_LOAD_CROP_BITMAP ( 1L << 6 )
|
#define FT_LOAD_CROP_BITMAP ( 1L << 6 )
|
||||||
#define FT_LOAD_PEDANTIC ( 1L << 7 )
|
#define FT_LOAD_PEDANTIC ( 1L << 7 )
|
||||||
#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ( 1L << 9 )
|
#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ( 1L << 9 )
|
||||||
#define FT_LOAD_NO_RECURSE ( 1L << 10 )
|
#define FT_LOAD_NO_RECURSE ( 1L << 10 )
|
||||||
#define FT_LOAD_IGNORE_TRANSFORM ( 1L << 11 )
|
#define FT_LOAD_IGNORE_TRANSFORM ( 1L << 11 )
|
||||||
#define FT_LOAD_MONOCHROME ( 1L << 12 )
|
#define FT_LOAD_MONOCHROME ( 1L << 12 )
|
||||||
#define FT_LOAD_LINEAR_DESIGN ( 1L << 13 )
|
#define FT_LOAD_LINEAR_DESIGN ( 1L << 13 )
|
||||||
|
#define FT_LOAD_SBITS_ONLY ( 1L << 14 )
|
||||||
#define FT_LOAD_NO_AUTOHINT ( 1L << 15 )
|
#define FT_LOAD_NO_AUTOHINT ( 1L << 15 )
|
||||||
/* Bits 16-19 are used by `FT_LOAD_TARGET_` */
|
/* Bits 16-19 are used by `FT_LOAD_TARGET_` */
|
||||||
#define FT_LOAD_COLOR ( 1L << 20 )
|
#define FT_LOAD_COLOR ( 1L << 20 )
|
||||||
@ -3041,8 +3258,8 @@ FT_BEGIN_HEADER
|
|||||||
/* */
|
/* */
|
||||||
|
|
||||||
/* used internally only by certain font drivers */
|
/* used internally only by certain font drivers */
|
||||||
#define FT_LOAD_ADVANCE_ONLY ( 1L << 8 )
|
#define FT_LOAD_ADVANCE_ONLY ( 1L << 8 )
|
||||||
#define FT_LOAD_SBITS_ONLY ( 1L << 14 )
|
#define FT_LOAD_SVG_ONLY ( 1L << 23 )
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
@ -3132,7 +3349,7 @@ FT_BEGIN_HEADER
|
|||||||
* necessary to empty the cache after a mode switch to avoid false hits.
|
* necessary to empty the cache after a mode switch to avoid false hits.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 )
|
#define FT_LOAD_TARGET_( x ) ( FT_STATIC_CAST( FT_Int32, (x) & 15 ) << 16 )
|
||||||
|
|
||||||
#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL )
|
#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL )
|
||||||
#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT )
|
#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT )
|
||||||
@ -3151,7 +3368,8 @@ FT_BEGIN_HEADER
|
|||||||
* @FT_LOAD_TARGET_XXX value.
|
* @FT_LOAD_TARGET_XXX value.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) )
|
#define FT_LOAD_TARGET_MODE( x ) \
|
||||||
|
FT_STATIC_CAST( FT_Render_Mode, ( (x) >> 16 ) & 15 )
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
@ -3172,11 +3390,12 @@ FT_BEGIN_HEADER
|
|||||||
* A pointer to the transformation's 2x2 matrix. Use `NULL` for the
|
* A pointer to the transformation's 2x2 matrix. Use `NULL` for the
|
||||||
* identity matrix.
|
* identity matrix.
|
||||||
* delta ::
|
* delta ::
|
||||||
* A pointer to the translation vector. Use `NULL` for the null vector.
|
* A pointer to the translation vector. Use `NULL` for the null
|
||||||
|
* vector.
|
||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* This function is provided as a convenience, but keep in mind that
|
* This function is provided as a convenience, but keep in mind that
|
||||||
* @FT_Matrix coefficients are only 16.16 fixed point values, which can
|
* @FT_Matrix coefficients are only 16.16 fixed-point values, which can
|
||||||
* limit the accuracy of the results. Using floating-point computations
|
* limit the accuracy of the results. Using floating-point computations
|
||||||
* to perform the transform directly in client code instead will always
|
* to perform the transform directly in client code instead will always
|
||||||
* yield better numbers.
|
* yield better numbers.
|
||||||
@ -3195,6 +3414,39 @@ FT_BEGIN_HEADER
|
|||||||
FT_Vector* delta );
|
FT_Vector* delta );
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @function:
|
||||||
|
* FT_Get_Transform
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* Return the transformation that is applied to glyph images when they
|
||||||
|
* are loaded into a glyph slot through @FT_Load_Glyph. See
|
||||||
|
* @FT_Set_Transform for more details.
|
||||||
|
*
|
||||||
|
* @input:
|
||||||
|
* face ::
|
||||||
|
* A handle to the source face object.
|
||||||
|
*
|
||||||
|
* @output:
|
||||||
|
* matrix ::
|
||||||
|
* A pointer to a transformation's 2x2 matrix. Set this to NULL if you
|
||||||
|
* are not interested in the value.
|
||||||
|
*
|
||||||
|
* delta ::
|
||||||
|
* A pointer a translation vector. Set this to NULL if you are not
|
||||||
|
* interested in the value.
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.11
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
FT_EXPORT( void )
|
||||||
|
FT_Get_Transform( FT_Face face,
|
||||||
|
FT_Matrix* matrix,
|
||||||
|
FT_Vector* delta );
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @enum:
|
* @enum:
|
||||||
@ -3213,6 +3465,10 @@ FT_BEGIN_HEADER
|
|||||||
* correction to correctly render non-monochrome glyph bitmaps onto a
|
* correction to correctly render non-monochrome glyph bitmaps onto a
|
||||||
* surface; see @FT_Render_Glyph.
|
* surface; see @FT_Render_Glyph.
|
||||||
*
|
*
|
||||||
|
* The @FT_RENDER_MODE_SDF is a special render mode that uses up to 256
|
||||||
|
* distance values, indicating the signed distance from the grid position
|
||||||
|
* to the nearest outline.
|
||||||
|
*
|
||||||
* @values:
|
* @values:
|
||||||
* FT_RENDER_MODE_NORMAL ::
|
* FT_RENDER_MODE_NORMAL ::
|
||||||
* Default render mode; it corresponds to 8-bit anti-aliased bitmaps.
|
* Default render mode; it corresponds to 8-bit anti-aliased bitmaps.
|
||||||
@ -3238,11 +3494,87 @@ FT_BEGIN_HEADER
|
|||||||
* bitmaps that are 3~times the height of the original glyph outline in
|
* bitmaps that are 3~times the height of the original glyph outline in
|
||||||
* pixels and use the @FT_PIXEL_MODE_LCD_V mode.
|
* pixels and use the @FT_PIXEL_MODE_LCD_V mode.
|
||||||
*
|
*
|
||||||
|
* FT_RENDER_MODE_SDF ::
|
||||||
|
* This mode corresponds to 8-bit, single-channel signed distance field
|
||||||
|
* (SDF) bitmaps. Each pixel in the SDF grid is the value from the
|
||||||
|
* pixel's position to the nearest glyph's outline. The distances are
|
||||||
|
* calculated from the center of the pixel and are positive if they are
|
||||||
|
* filled by the outline (i.e., inside the outline) and negative
|
||||||
|
* otherwise. Check the note below on how to convert the output values
|
||||||
|
* to usable data.
|
||||||
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* The selected render mode only affects vector glyphs of a font.
|
* The selected render mode only affects vector glyphs of a font.
|
||||||
* Embedded bitmaps often have a different pixel mode like
|
* Embedded bitmaps often have a different pixel mode like
|
||||||
* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform them
|
* @FT_PIXEL_MODE_MONO. You can use @FT_Bitmap_Convert to transform them
|
||||||
* into 8-bit pixmaps.
|
* into 8-bit pixmaps.
|
||||||
|
*
|
||||||
|
* For @FT_RENDER_MODE_SDF the output bitmap buffer contains normalized
|
||||||
|
* distances that are packed into unsigned 8-bit values. To get pixel
|
||||||
|
* values in floating point representation use the following pseudo-C
|
||||||
|
* code for the conversion.
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* // Load glyph and render using FT_RENDER_MODE_SDF,
|
||||||
|
* // then use the output buffer as follows.
|
||||||
|
*
|
||||||
|
* ...
|
||||||
|
* FT_Byte buffer = glyph->bitmap->buffer;
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* for pixel in buffer
|
||||||
|
* {
|
||||||
|
* // `sd` is the signed distance and `spread` is the current spread;
|
||||||
|
* // the default spread is 2 and can be changed.
|
||||||
|
*
|
||||||
|
* float sd = (float)pixel - 128.0f;
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* // Convert to pixel values.
|
||||||
|
* sd = ( sd / 128.0f ) * spread;
|
||||||
|
*
|
||||||
|
* // Store `sd` in a buffer or use as required.
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* FreeType has two rasterizers for generating SDF, namely:
|
||||||
|
*
|
||||||
|
* 1. `sdf` for generating SDF directly from glyph's outline, and
|
||||||
|
*
|
||||||
|
* 2. `bsdf` for generating SDF from rasterized bitmaps.
|
||||||
|
*
|
||||||
|
* Depending on the glyph type (i.e., outline or bitmap), one of the two
|
||||||
|
* rasterizers is chosen at runtime and used for generating SDFs. To
|
||||||
|
* force the use of `bsdf` you should render the glyph with any of the
|
||||||
|
* FreeType's other rendering modes (e.g., `FT_RENDER_MODE_NORMAL`) and
|
||||||
|
* then re-render with `FT_RENDER_MODE_SDF`.
|
||||||
|
*
|
||||||
|
* There are some issues with stability and possible failures of the SDF
|
||||||
|
* renderers (specifically `sdf`).
|
||||||
|
*
|
||||||
|
* 1. The `sdf` rasterizer is sensitive to really small features (e.g.,
|
||||||
|
* sharp turns that are less than 1~pixel) and imperfections in the
|
||||||
|
* glyph's outline, causing artifacts in the final output.
|
||||||
|
*
|
||||||
|
* 2. The `sdf` rasterizer has limited support for handling intersecting
|
||||||
|
* contours and *cannot* handle self-intersecting contours whatsoever.
|
||||||
|
* Self-intersection happens when a single connected contour intersect
|
||||||
|
* itself at some point; having these in your font definitely pose a
|
||||||
|
* problem to the rasterizer and cause artifacts, too.
|
||||||
|
*
|
||||||
|
* 3. Generating SDF for really small glyphs may result in undesirable
|
||||||
|
* output; the pixel grid (which stores distance information) becomes
|
||||||
|
* too coarse.
|
||||||
|
*
|
||||||
|
* 4. Since the output buffer is normalized, precision at smaller spreads
|
||||||
|
* is greater than precision at larger spread values because the
|
||||||
|
* output range of [0..255] gets mapped to a smaller SDF range. A
|
||||||
|
* spread of~2 should be sufficient in most cases.
|
||||||
|
*
|
||||||
|
* Points (1) and (2) can be avoided by using the `bsdf` rasterizer,
|
||||||
|
* which is more stable than the `sdf` rasterizer in general.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
typedef enum FT_Render_Mode_
|
typedef enum FT_Render_Mode_
|
||||||
{
|
{
|
||||||
@ -3251,6 +3583,7 @@ FT_BEGIN_HEADER
|
|||||||
FT_RENDER_MODE_MONO,
|
FT_RENDER_MODE_MONO,
|
||||||
FT_RENDER_MODE_LCD,
|
FT_RENDER_MODE_LCD,
|
||||||
FT_RENDER_MODE_LCD_V,
|
FT_RENDER_MODE_LCD_V,
|
||||||
|
FT_RENDER_MODE_SDF,
|
||||||
|
|
||||||
FT_RENDER_MODE_MAX
|
FT_RENDER_MODE_MAX
|
||||||
|
|
||||||
@ -3282,7 +3615,7 @@ FT_BEGIN_HEADER
|
|||||||
* @FT_Render_Mode for a list of possible values.
|
* @FT_Render_Mode for a list of possible values.
|
||||||
*
|
*
|
||||||
* If @FT_RENDER_MODE_NORMAL is used, a previous call of @FT_Load_Glyph
|
* If @FT_RENDER_MODE_NORMAL is used, a previous call of @FT_Load_Glyph
|
||||||
* with flag @FT_LOAD_COLOR makes FT_Render_Glyph provide a default
|
* with flag @FT_LOAD_COLOR makes `FT_Render_Glyph` provide a default
|
||||||
* blending of colored glyph layers associated with the current glyph
|
* blending of colored glyph layers associated with the current glyph
|
||||||
* slot (provided the font contains such layers) instead of rendering
|
* slot (provided the font contains such layers) instead of rendering
|
||||||
* the glyph slot's outline. This is an experimental feature; see
|
* the glyph slot's outline. This is an experimental feature; see
|
||||||
@ -3292,9 +3625,6 @@ FT_BEGIN_HEADER
|
|||||||
* FreeType error code. 0~means success.
|
* FreeType error code. 0~means success.
|
||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* To get meaningful results, font scaling values must be set with
|
|
||||||
* functions like @FT_Set_Char_Size before calling `FT_Render_Glyph`.
|
|
||||||
*
|
|
||||||
* When FreeType outputs a bitmap of a glyph, it really outputs an alpha
|
* When FreeType outputs a bitmap of a glyph, it really outputs an alpha
|
||||||
* coverage map. If a pixel is completely covered by a filled-in
|
* coverage map. If a pixel is completely covered by a filled-in
|
||||||
* outline, the bitmap contains 0xFF at that pixel, meaning that
|
* outline, the bitmap contains 0xFF at that pixel, meaning that
|
||||||
@ -3338,7 +3668,8 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* which is known as the OVER operator.
|
* which is known as the OVER operator.
|
||||||
*
|
*
|
||||||
* To correctly composite an antialiased pixel of a glyph onto a surface,
|
* To correctly composite an anti-aliased pixel of a glyph onto a
|
||||||
|
* surface,
|
||||||
*
|
*
|
||||||
* 1. take the foreground and background colors (e.g., in sRGB space)
|
* 1. take the foreground and background colors (e.g., in sRGB space)
|
||||||
* and apply gamma to get them in a linear space,
|
* and apply gamma to get them in a linear space,
|
||||||
@ -4015,168 +4346,6 @@ FT_BEGIN_HEADER
|
|||||||
FT_Matrix *p_transform );
|
FT_Matrix *p_transform );
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @section:
|
|
||||||
* layer_management
|
|
||||||
*
|
|
||||||
* @title:
|
|
||||||
* Glyph Layer Management
|
|
||||||
*
|
|
||||||
* @abstract:
|
|
||||||
* Retrieving and manipulating OpenType's 'COLR' table data.
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* The functions described here allow access of colored glyph layer data
|
|
||||||
* in OpenType's 'COLR' tables.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @struct:
|
|
||||||
* FT_LayerIterator
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* This iterator object is needed for @FT_Get_Color_Glyph_Layer.
|
|
||||||
*
|
|
||||||
* @fields:
|
|
||||||
* num_layers ::
|
|
||||||
* The number of glyph layers for the requested glyph index. Will be
|
|
||||||
* set by @FT_Get_Color_Glyph_Layer.
|
|
||||||
*
|
|
||||||
* layer ::
|
|
||||||
* The current layer. Will be set by @FT_Get_Color_Glyph_Layer.
|
|
||||||
*
|
|
||||||
* p ::
|
|
||||||
* An opaque pointer into 'COLR' table data. The caller must set this
|
|
||||||
* to `NULL` before the first call of @FT_Get_Color_Glyph_Layer.
|
|
||||||
*/
|
|
||||||
typedef struct FT_LayerIterator_
|
|
||||||
{
|
|
||||||
FT_UInt num_layers;
|
|
||||||
FT_UInt layer;
|
|
||||||
FT_Byte* p;
|
|
||||||
|
|
||||||
} FT_LayerIterator;
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @function:
|
|
||||||
* FT_Get_Color_Glyph_Layer
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* This is an interface to the 'COLR' table in OpenType fonts to
|
|
||||||
* iteratively retrieve the colored glyph layers associated with the
|
|
||||||
* current glyph slot.
|
|
||||||
*
|
|
||||||
* https://docs.microsoft.com/en-us/typography/opentype/spec/colr
|
|
||||||
*
|
|
||||||
* The glyph layer data for a given glyph index, if present, provides an
|
|
||||||
* alternative, multi-color glyph representation: Instead of rendering
|
|
||||||
* the outline or bitmap with the given glyph index, glyphs with the
|
|
||||||
* indices and colors returned by this function are rendered layer by
|
|
||||||
* layer.
|
|
||||||
*
|
|
||||||
* The returned elements are ordered in the z~direction from bottom to
|
|
||||||
* top; the 'n'th element should be rendered with the associated palette
|
|
||||||
* color and blended on top of the already rendered layers (elements 0,
|
|
||||||
* 1, ..., n-1).
|
|
||||||
*
|
|
||||||
* @input:
|
|
||||||
* face ::
|
|
||||||
* A handle to the parent face object.
|
|
||||||
*
|
|
||||||
* base_glyph ::
|
|
||||||
* The glyph index the colored glyph layers are associated with.
|
|
||||||
*
|
|
||||||
* @inout:
|
|
||||||
* iterator ::
|
|
||||||
* An @FT_LayerIterator object. For the first call you should set
|
|
||||||
* `iterator->p` to `NULL`. For all following calls, simply use the
|
|
||||||
* same object again.
|
|
||||||
*
|
|
||||||
* @output:
|
|
||||||
* aglyph_index ::
|
|
||||||
* The glyph index of the current layer.
|
|
||||||
*
|
|
||||||
* acolor_index ::
|
|
||||||
* The color index into the font face's color palette of the current
|
|
||||||
* layer. The value 0xFFFF is special; it doesn't reference a palette
|
|
||||||
* entry but indicates that the text foreground color should be used
|
|
||||||
* instead (to be set up by the application outside of FreeType).
|
|
||||||
*
|
|
||||||
* The color palette can be retrieved with @FT_Palette_Select.
|
|
||||||
*
|
|
||||||
* @return:
|
|
||||||
* Value~1 if everything is OK. If there are no more layers (or if there
|
|
||||||
* are no layers at all), value~0 gets returned. In case of an error,
|
|
||||||
* value~0 is returned also.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This function is necessary if you want to handle glyph layers by
|
|
||||||
* yourself. In particular, functions that operate with @FT_GlyphRec
|
|
||||||
* objects (like @FT_Get_Glyph or @FT_Glyph_To_Bitmap) don't have access
|
|
||||||
* to this information.
|
|
||||||
*
|
|
||||||
* Note that @FT_Render_Glyph is able to handle colored glyph layers
|
|
||||||
* automatically if the @FT_LOAD_COLOR flag is passed to a previous call
|
|
||||||
* to @FT_Load_Glyph. [This is an experimental feature.]
|
|
||||||
*
|
|
||||||
* @example:
|
|
||||||
* ```
|
|
||||||
* FT_Color* palette;
|
|
||||||
* FT_LayerIterator iterator;
|
|
||||||
*
|
|
||||||
* FT_Bool have_layers;
|
|
||||||
* FT_UInt layer_glyph_index;
|
|
||||||
* FT_UInt layer_color_index;
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* error = FT_Palette_Select( face, palette_index, &palette );
|
|
||||||
* if ( error )
|
|
||||||
* palette = NULL;
|
|
||||||
*
|
|
||||||
* iterator.p = NULL;
|
|
||||||
* have_layers = FT_Get_Color_Glyph_Layer( face,
|
|
||||||
* glyph_index,
|
|
||||||
* &layer_glyph_index,
|
|
||||||
* &layer_color_index,
|
|
||||||
* &iterator );
|
|
||||||
*
|
|
||||||
* if ( palette && have_layers )
|
|
||||||
* {
|
|
||||||
* do
|
|
||||||
* {
|
|
||||||
* FT_Color layer_color;
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* if ( layer_color_index == 0xFFFF )
|
|
||||||
* layer_color = text_foreground_color;
|
|
||||||
* else
|
|
||||||
* layer_color = palette[layer_color_index];
|
|
||||||
*
|
|
||||||
* // Load and render glyph `layer_glyph_index', then
|
|
||||||
* // blend resulting pixmap (using color `layer_color')
|
|
||||||
* // with previously created pixmaps.
|
|
||||||
*
|
|
||||||
* } while ( FT_Get_Color_Glyph_Layer( face,
|
|
||||||
* glyph_index,
|
|
||||||
* &layer_glyph_index,
|
|
||||||
* &layer_color_index,
|
|
||||||
* &iterator ) );
|
|
||||||
* }
|
|
||||||
* ```
|
|
||||||
*/
|
|
||||||
FT_EXPORT( FT_Bool )
|
|
||||||
FT_Get_Color_Glyph_Layer( FT_Face face,
|
|
||||||
FT_UInt base_glyph,
|
|
||||||
FT_UInt *aglyph_index,
|
|
||||||
FT_UInt *acolor_index,
|
|
||||||
FT_LayerIterator* iterator );
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @section:
|
* @section:
|
||||||
@ -4267,6 +4436,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @since:
|
* @since:
|
||||||
* 2.3.8
|
* 2.3.8
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( FT_UShort )
|
FT_EXPORT( FT_UShort )
|
||||||
FT_Get_FSType_Flags( FT_Face face );
|
FT_Get_FSType_Flags( FT_Face face );
|
||||||
@ -4360,6 +4530,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @since:
|
* @since:
|
||||||
* 2.3.6
|
* 2.3.6
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( FT_UInt )
|
FT_EXPORT( FT_UInt )
|
||||||
FT_Face_GetCharVariantIndex( FT_Face face,
|
FT_Face_GetCharVariantIndex( FT_Face face,
|
||||||
@ -4396,6 +4567,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @since:
|
* @since:
|
||||||
* 2.3.6
|
* 2.3.6
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( FT_Int )
|
FT_EXPORT( FT_Int )
|
||||||
FT_Face_GetCharVariantIsDefault( FT_Face face,
|
FT_Face_GetCharVariantIsDefault( FT_Face face,
|
||||||
@ -4427,6 +4599,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @since:
|
* @since:
|
||||||
* 2.3.6
|
* 2.3.6
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( FT_UInt32* )
|
FT_EXPORT( FT_UInt32* )
|
||||||
FT_Face_GetVariantSelectors( FT_Face face );
|
FT_Face_GetVariantSelectors( FT_Face face );
|
||||||
@ -4460,6 +4633,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @since:
|
* @since:
|
||||||
* 2.3.6
|
* 2.3.6
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( FT_UInt32* )
|
FT_EXPORT( FT_UInt32* )
|
||||||
FT_Face_GetVariantsOfChar( FT_Face face,
|
FT_Face_GetVariantsOfChar( FT_Face face,
|
||||||
@ -4494,6 +4668,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @since:
|
* @since:
|
||||||
* 2.3.6
|
* 2.3.6
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( FT_UInt32* )
|
FT_EXPORT( FT_UInt32* )
|
||||||
FT_Face_GetCharsOfVariant( FT_Face face,
|
FT_Face_GetCharsOfVariant( FT_Face face,
|
||||||
@ -4766,8 +4941,8 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#define FREETYPE_MAJOR 2
|
#define FREETYPE_MAJOR 2
|
||||||
#define FREETYPE_MINOR 10
|
#define FREETYPE_MINOR 12
|
||||||
#define FREETYPE_PATCH 4
|
#define FREETYPE_PATCH 0
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
@ -4829,6 +5004,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @since:
|
* @since:
|
||||||
* 2.3.5
|
* 2.3.5
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( FT_Bool )
|
FT_EXPORT( FT_Bool )
|
||||||
FT_Face_CheckTrueTypePatents( FT_Face face );
|
FT_Face_CheckTrueTypePatents( FT_Face face );
|
||||||
@ -4857,6 +5033,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @since:
|
* @since:
|
||||||
* 2.3.5
|
* 2.3.5
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( FT_Bool )
|
FT_EXPORT( FT_Bool )
|
||||||
FT_Face_SetUnpatentedHinting( FT_Face face,
|
FT_Face_SetUnpatentedHinting( FT_Face face,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Quick computation of advance widths (specification only).
|
* Quick computation of advance widths (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2008-2020 by
|
* Copyright (C) 2008-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType exact bbox computation (specification).
|
* FreeType exact bbox computation (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType API for accessing BDF-specific strings (specification).
|
* FreeType API for accessing BDF-specific strings (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2020 by
|
* Copyright (C) 2002-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType utility functions for bitmaps (specification).
|
* FreeType utility functions for bitmaps (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2004-2020 by
|
* Copyright (C) 2004-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -15,6 +15,7 @@
|
|||||||
* General Remarks
|
* General Remarks
|
||||||
*
|
*
|
||||||
* @sections:
|
* @sections:
|
||||||
|
* preamble
|
||||||
* header_inclusion
|
* header_inclusion
|
||||||
* user_allocation
|
* user_allocation
|
||||||
*
|
*
|
||||||
@ -61,6 +62,7 @@
|
|||||||
* cid_fonts
|
* cid_fonts
|
||||||
* pfr_fonts
|
* pfr_fonts
|
||||||
* winfnt_fonts
|
* winfnt_fonts
|
||||||
|
* svg_fonts
|
||||||
* font_formats
|
* font_formats
|
||||||
* gasp_table
|
* gasp_table
|
||||||
*
|
*
|
||||||
@ -81,6 +83,7 @@
|
|||||||
* t1_cid_driver
|
* t1_cid_driver
|
||||||
* tt_driver
|
* tt_driver
|
||||||
* pcf_driver
|
* pcf_driver
|
||||||
|
* ot_svg_driver
|
||||||
* properties
|
* properties
|
||||||
* parameter_tags
|
* parameter_tags
|
||||||
* lcd_rendering
|
* lcd_rendering
|
||||||
@ -123,6 +126,7 @@
|
|||||||
* gzip
|
* gzip
|
||||||
* lzw
|
* lzw
|
||||||
* bzip2
|
* bzip2
|
||||||
|
* debugging_apis
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType API for accessing CID font information (specification).
|
* FreeType API for accessing CID font information (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2020 by
|
* Copyright (C) 2007-2022 by
|
||||||
* Dereg Clegg and Michael Toftdal.
|
* Dereg Clegg and Michael Toftdal.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType API for controlling driver modules (specification only).
|
* FreeType API for controlling driver modules (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2017-2020 by
|
* Copyright (C) 2017-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -53,10 +53,10 @@ FT_BEGIN_HEADER
|
|||||||
* reasons.
|
* reasons.
|
||||||
*
|
*
|
||||||
* Available properties are @increase-x-height, @no-stem-darkening
|
* Available properties are @increase-x-height, @no-stem-darkening
|
||||||
* (experimental), @darkening-parameters (experimental), @warping
|
* (experimental), @darkening-parameters (experimental),
|
||||||
* (experimental), @glyph-to-script-map (experimental), @fallback-script
|
* @glyph-to-script-map (experimental), @fallback-script (experimental),
|
||||||
* (experimental), and @default-script (experimental), as documented in
|
* and @default-script (experimental), as documented in the @properties
|
||||||
* the @properties section.
|
* section.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -84,15 +84,15 @@ FT_BEGIN_HEADER
|
|||||||
* @properties section.
|
* @properties section.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* **Hinting and antialiasing principles of the new engine**
|
* **Hinting and anti-aliasing principles of the new engine**
|
||||||
*
|
*
|
||||||
* The rasterizer is positioning horizontal features (e.g., ascender
|
* The rasterizer is positioning horizontal features (e.g., ascender
|
||||||
* height & x-height, or crossbars) on the pixel grid and minimizing the
|
* height & x-height, or crossbars) on the pixel grid and minimizing the
|
||||||
* amount of antialiasing applied to them, while placing vertical
|
* amount of anti-aliasing applied to them, while placing vertical
|
||||||
* features (vertical stems) on the pixel grid without hinting, thus
|
* features (vertical stems) on the pixel grid without hinting, thus
|
||||||
* representing the stem position and weight accurately. Sometimes the
|
* representing the stem position and weight accurately. Sometimes the
|
||||||
* vertical stems may be only partially black. In this context,
|
* vertical stems may be only partially black. In this context,
|
||||||
* 'antialiasing' means that stems are not positioned exactly on pixel
|
* 'anti-aliasing' means that stems are not positioned exactly on pixel
|
||||||
* borders, causing a fuzzy appearance.
|
* borders, causing a fuzzy appearance.
|
||||||
*
|
*
|
||||||
* There are two principles behind this approach.
|
* There are two principles behind this approach.
|
||||||
@ -108,7 +108,7 @@ FT_BEGIN_HEADER
|
|||||||
* sizes are comparable to kerning values and thus would be noticeable
|
* sizes are comparable to kerning values and thus would be noticeable
|
||||||
* (and distracting) while reading if hinting were applied.
|
* (and distracting) while reading if hinting were applied.
|
||||||
*
|
*
|
||||||
* One of the reasons to not hint horizontally is antialiasing for LCD
|
* One of the reasons to not hint horizontally is anti-aliasing for LCD
|
||||||
* screens: The pixel geometry of modern displays supplies three vertical
|
* screens: The pixel geometry of modern displays supplies three vertical
|
||||||
* subpixels as the eye moves horizontally across each visible pixel. On
|
* subpixels as the eye moves horizontally across each visible pixel. On
|
||||||
* devices where we can be certain this characteristic is present a
|
* devices where we can be certain this characteristic is present a
|
||||||
@ -116,7 +116,7 @@ FT_BEGIN_HEADER
|
|||||||
* weight. In Western writing systems this turns out to be the more
|
* weight. In Western writing systems this turns out to be the more
|
||||||
* critical direction anyway; the weights and spacing of vertical stems
|
* critical direction anyway; the weights and spacing of vertical stems
|
||||||
* (see above) are central to Armenian, Cyrillic, Greek, and Latin type
|
* (see above) are central to Armenian, Cyrillic, Greek, and Latin type
|
||||||
* designs. Even when the rasterizer uses greyscale antialiasing instead
|
* designs. Even when the rasterizer uses greyscale anti-aliasing instead
|
||||||
* of color (a necessary compromise when one doesn't know the screen
|
* of color (a necessary compromise when one doesn't know the screen
|
||||||
* characteristics), the unhinted vertical features preserve the design's
|
* characteristics), the unhinted vertical features preserve the design's
|
||||||
* weight and spacing much better than aliased type would.
|
* weight and spacing much better than aliased type would.
|
||||||
@ -212,16 +212,14 @@ FT_BEGIN_HEADER
|
|||||||
* @description:
|
* @description:
|
||||||
* While FreeType's TrueType driver doesn't expose API functions by
|
* While FreeType's TrueType driver doesn't expose API functions by
|
||||||
* itself, it is possible to control its behaviour with @FT_Property_Set
|
* itself, it is possible to control its behaviour with @FT_Property_Set
|
||||||
* and @FT_Property_Get. The following lists the available properties
|
* and @FT_Property_Get.
|
||||||
* together with the necessary macros and structures.
|
|
||||||
*
|
*
|
||||||
* The TrueType driver's module name is 'truetype'.
|
* The TrueType driver's module name is 'truetype'; a single property
|
||||||
|
* @interpreter-version is available, as documented in the @properties
|
||||||
|
* section.
|
||||||
*
|
*
|
||||||
* A single property @interpreter-version is available, as documented in
|
* To help understand the differences between interpreter versions, we
|
||||||
* the @properties section.
|
* introduce a list of definitions, kindly provided by Greg Hitchcock.
|
||||||
*
|
|
||||||
* We start with a list of definitions, kindly provided by Greg
|
|
||||||
* Hitchcock.
|
|
||||||
*
|
*
|
||||||
* _Bi-Level Rendering_
|
* _Bi-Level Rendering_
|
||||||
*
|
*
|
||||||
@ -300,6 +298,31 @@ FT_BEGIN_HEADER
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @section:
|
||||||
|
* ot_svg_driver
|
||||||
|
*
|
||||||
|
* @title:
|
||||||
|
* The SVG driver
|
||||||
|
*
|
||||||
|
* @abstract:
|
||||||
|
* Controlling the external rendering of OT-SVG glyphs.
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* By default, FreeType can only load the 'SVG~' table of OpenType fonts
|
||||||
|
* if configuration macro `FT_CONFIG_OPTION_SVG` is defined. To make it
|
||||||
|
* render SVG glyphs, an external SVG rendering library is needed. All
|
||||||
|
* details on the interface between FreeType and the external library
|
||||||
|
* via function hooks can be found in section @svg_fonts.
|
||||||
|
*
|
||||||
|
* The OT-SVG driver's module name is 'ot-svg'; it supports a single
|
||||||
|
* property called @svg-hooks, documented below in the @properties
|
||||||
|
* section.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @section:
|
* @section:
|
||||||
@ -362,12 +385,8 @@ FT_BEGIN_HEADER
|
|||||||
* The same holds for the Type~1 and CID modules if compiled with
|
* The same holds for the Type~1 and CID modules if compiled with
|
||||||
* `T1_CONFIG_OPTION_OLD_ENGINE`.
|
* `T1_CONFIG_OPTION_OLD_ENGINE`.
|
||||||
*
|
*
|
||||||
* For the 'cff' module, the default engine is 'freetype' if
|
* For the 'cff' module, the default engine is 'adobe'. For both the
|
||||||
* `CFF_CONFIG_OPTION_OLD_ENGINE` is defined, and 'adobe' otherwise.
|
* 'type1' and 't1cid' modules, the default engine is 'adobe', too.
|
||||||
*
|
|
||||||
* For both the 'type1' and 't1cid' modules, the default engine is
|
|
||||||
* 'freetype' if `T1_CONFIG_OPTION_OLD_ENGINE` is defined, and 'adobe'
|
|
||||||
* otherwise.
|
|
||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* This property can be used with @FT_Property_Get also.
|
* This property can be used with @FT_Property_Get also.
|
||||||
@ -802,6 +821,40 @@ FT_BEGIN_HEADER
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @property:
|
||||||
|
* svg-hooks
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* Set up the interface between FreeType and an extern SVG rendering
|
||||||
|
* library like 'librsvg'. All details on the function hooks can be
|
||||||
|
* found in section @svg_fonts.
|
||||||
|
*
|
||||||
|
* @example:
|
||||||
|
* The following example code expects that the four hook functions
|
||||||
|
* `svg_*` are defined elsewhere. Error handling is omitted, too.
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* FT_Library library;
|
||||||
|
* SVG_RendererHooks hooks = {
|
||||||
|
* (SVG_Lib_Init_Func)svg_init,
|
||||||
|
* (SVG_Lib_Free_Func)svg_free,
|
||||||
|
* (SVG_Lib_Render_Func)svg_render,
|
||||||
|
* (SVG_Lib_Preset_Slot_Func)svg_preset_slot };
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* FT_Init_FreeType( &library );
|
||||||
|
*
|
||||||
|
* FT_Property_Set( library, "ot-svg",
|
||||||
|
* "svg-hooks", &hooks );
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.12
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @property:
|
* @property:
|
||||||
@ -1166,48 +1219,18 @@ FT_BEGIN_HEADER
|
|||||||
* warping
|
* warping
|
||||||
*
|
*
|
||||||
* @description:
|
* @description:
|
||||||
* **Experimental only**
|
* **Obsolete**
|
||||||
*
|
*
|
||||||
* If FreeType gets compiled with option `AF_CONFIG_OPTION_USE_WARPER` to
|
* This property was always experimental and probably never worked
|
||||||
* activate the warp hinting code in the auto-hinter, this property
|
* correctly. It was entirely removed from the FreeType~2 sources. This
|
||||||
* switches warping on and off.
|
* entry is only here for historical reference.
|
||||||
*
|
*
|
||||||
* Warping only works in 'normal' auto-hinting mode replacing it. The
|
* Warping only worked in 'normal' auto-hinting mode replacing it. The
|
||||||
* idea of the code is to slightly scale and shift a glyph along the
|
* idea of the code was to slightly scale and shift a glyph along the
|
||||||
* non-hinted dimension (which is usually the horizontal axis) so that as
|
* non-hinted dimension (which is usually the horizontal axis) so that as
|
||||||
* much of its segments are aligned (more or less) to the grid. To find
|
* much of its segments were aligned (more or less) to the grid. To find
|
||||||
* out a glyph's optimal scaling and shifting value, various parameter
|
* out a glyph's optimal scaling and shifting value, various parameter
|
||||||
* combinations are tried and scored.
|
* combinations were tried and scored.
|
||||||
*
|
|
||||||
* By default, warping is off.
|
|
||||||
*
|
|
||||||
* @note:
|
|
||||||
* This property can be used with @FT_Property_Get also.
|
|
||||||
*
|
|
||||||
* This property can be set via the `FREETYPE_PROPERTIES` environment
|
|
||||||
* variable (using values 1 and 0 for 'on' and 'off', respectively).
|
|
||||||
*
|
|
||||||
* The warping code can also change advance widths. Have a look at the
|
|
||||||
* `lsb_delta` and `rsb_delta` fields in the @FT_GlyphSlotRec structure
|
|
||||||
* for details on improving inter-glyph distances while rendering.
|
|
||||||
*
|
|
||||||
* Since warping is a global property of the auto-hinter it is best to
|
|
||||||
* change its value before rendering any face. Otherwise, you should
|
|
||||||
* reload all faces that get auto-hinted in 'normal' hinting mode.
|
|
||||||
*
|
|
||||||
* @example:
|
|
||||||
* This example shows how to switch on warping (omitting the error
|
|
||||||
* handling).
|
|
||||||
*
|
|
||||||
* ```
|
|
||||||
* FT_Library library;
|
|
||||||
* FT_Bool warping = 1;
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* FT_Init_FreeType( &library );
|
|
||||||
*
|
|
||||||
* FT_Property_Set( library, "autofitter", "warping", &warping );
|
|
||||||
* ```
|
|
||||||
*
|
*
|
||||||
* @since:
|
* @since:
|
||||||
* 2.6
|
* 2.6
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType error codes (specification).
|
* FreeType error codes (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2020 by
|
* Copyright (C) 2002-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -101,6 +101,8 @@
|
|||||||
"too many hints" )
|
"too many hints" )
|
||||||
FT_ERRORDEF_( Invalid_Pixel_Size, 0x17,
|
FT_ERRORDEF_( Invalid_Pixel_Size, 0x17,
|
||||||
"invalid pixel size" )
|
"invalid pixel size" )
|
||||||
|
FT_ERRORDEF_( Invalid_SVG_Document, 0x18,
|
||||||
|
"invalid SVG document" )
|
||||||
|
|
||||||
/* handle errors */
|
/* handle errors */
|
||||||
|
|
||||||
@ -234,6 +236,8 @@
|
|||||||
"found FDEF or IDEF opcode in glyf bytecode" )
|
"found FDEF or IDEF opcode in glyf bytecode" )
|
||||||
FT_ERRORDEF_( Missing_Bitmap, 0x9D,
|
FT_ERRORDEF_( Missing_Bitmap, 0x9D,
|
||||||
"missing bitmap in strike" )
|
"missing bitmap in strike" )
|
||||||
|
FT_ERRORDEF_( Missing_SVG_Hooks, 0x9E,
|
||||||
|
"SVG hooks have not been set" )
|
||||||
|
|
||||||
/* CFF, CID, and Type 1 errors */
|
/* CFF, CID, and Type 1 errors */
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType error code handling (specification).
|
* FreeType error code handling (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -281,6 +281,8 @@ FT_BEGIN_HEADER
|
|||||||
FT_EXPORT( const char* )
|
FT_EXPORT( const char* )
|
||||||
FT_Error_String( FT_Error error_code );
|
FT_Error_String( FT_Error error_code );
|
||||||
|
|
||||||
|
/* */
|
||||||
|
|
||||||
FT_END_HEADER
|
FT_END_HEADER
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Support functions for font formats.
|
* Support functions for font formats.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2020 by
|
* Copyright (C) 2002-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Access of TrueType's 'gasp' table (specification).
|
* Access of TrueType's 'gasp' table (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2020 by
|
* Copyright (C) 2007-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType convenience functions to handle glyphs (specification).
|
* FreeType convenience functions to handle glyphs (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -126,7 +126,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @description:
|
* @description:
|
||||||
* A handle to an object used to model a bitmap glyph image. This is a
|
* A handle to an object used to model a bitmap glyph image. This is a
|
||||||
* sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec.
|
* 'sub-class' of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec.
|
||||||
*/
|
*/
|
||||||
typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph;
|
typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph;
|
||||||
|
|
||||||
@ -142,7 +142,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @fields:
|
* @fields:
|
||||||
* root ::
|
* root ::
|
||||||
* The root @FT_Glyph fields.
|
* The root fields of @FT_Glyph.
|
||||||
*
|
*
|
||||||
* left ::
|
* left ::
|
||||||
* The left-side bearing, i.e., the horizontal distance from the
|
* The left-side bearing, i.e., the horizontal distance from the
|
||||||
@ -181,7 +181,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @description:
|
* @description:
|
||||||
* A handle to an object used to model an outline glyph image. This is a
|
* A handle to an object used to model an outline glyph image. This is a
|
||||||
* sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec.
|
* 'sub-class' of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec.
|
||||||
*/
|
*/
|
||||||
typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph;
|
typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph;
|
||||||
|
|
||||||
@ -222,6 +222,92 @@ FT_BEGIN_HEADER
|
|||||||
} FT_OutlineGlyphRec;
|
} FT_OutlineGlyphRec;
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @type:
|
||||||
|
* FT_SvgGlyph
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A handle to an object used to model an SVG glyph. This is a
|
||||||
|
* 'sub-class' of @FT_Glyph, and a pointer to @FT_SvgGlyphRec.
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.12
|
||||||
|
*/
|
||||||
|
typedef struct FT_SvgGlyphRec_* FT_SvgGlyph;
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @struct:
|
||||||
|
* FT_SvgGlyphRec
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A structure used for OT-SVG glyphs. This is a 'sub-class' of
|
||||||
|
* @FT_GlyphRec.
|
||||||
|
*
|
||||||
|
* @fields:
|
||||||
|
* root ::
|
||||||
|
* The root @FT_GlyphRec fields.
|
||||||
|
*
|
||||||
|
* svg_document ::
|
||||||
|
* A pointer to the SVG document.
|
||||||
|
*
|
||||||
|
* svg_document_length ::
|
||||||
|
* The length of `svg_document`.
|
||||||
|
*
|
||||||
|
* glyph_index ::
|
||||||
|
* The index of the glyph to be rendered.
|
||||||
|
*
|
||||||
|
* metrics ::
|
||||||
|
* A metrics object storing the size information.
|
||||||
|
*
|
||||||
|
* units_per_EM ::
|
||||||
|
* The size of the EM square.
|
||||||
|
*
|
||||||
|
* start_glyph_id ::
|
||||||
|
* The first glyph ID in the glyph range covered by this document.
|
||||||
|
*
|
||||||
|
* end_glyph_id ::
|
||||||
|
* The last glyph ID in the glyph range covered by this document.
|
||||||
|
*
|
||||||
|
* transform ::
|
||||||
|
* A 2x2 transformation matrix to apply to the glyph while rendering
|
||||||
|
* it.
|
||||||
|
*
|
||||||
|
* delta ::
|
||||||
|
* Translation to apply to the glyph while rendering.
|
||||||
|
*
|
||||||
|
* @note:
|
||||||
|
* The Glyph Management API requires @FT_Glyph or its 'sub-class' to have
|
||||||
|
* all the information needed to completely define the glyph's rendering.
|
||||||
|
* Outline-based glyphs can directly apply transformations to the outline
|
||||||
|
* but this is not possible for an SVG document that hasn't been parsed.
|
||||||
|
* Therefore, the transformation is stored along with the document. In
|
||||||
|
* the absence of a 'ViewBox' or 'Width'/'Height' attribute, the size of
|
||||||
|
* the ViewPort should be assumed to be 'units_per_EM'.
|
||||||
|
*/
|
||||||
|
typedef struct FT_SvgGlyphRec_
|
||||||
|
{
|
||||||
|
FT_GlyphRec root;
|
||||||
|
|
||||||
|
FT_Byte* svg_document;
|
||||||
|
FT_ULong svg_document_length;
|
||||||
|
|
||||||
|
FT_UInt glyph_index;
|
||||||
|
|
||||||
|
FT_Size_Metrics metrics;
|
||||||
|
FT_UShort units_per_EM;
|
||||||
|
|
||||||
|
FT_UShort start_glyph_id;
|
||||||
|
FT_UShort end_glyph_id;
|
||||||
|
|
||||||
|
FT_Matrix transform;
|
||||||
|
FT_Vector delta;
|
||||||
|
|
||||||
|
} FT_SvgGlyphRec;
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @function:
|
* @function:
|
||||||
@ -337,9 +423,9 @@ FT_BEGIN_HEADER
|
|||||||
* vector.
|
* vector.
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( FT_Error )
|
FT_EXPORT( FT_Error )
|
||||||
FT_Glyph_Transform( FT_Glyph glyph,
|
FT_Glyph_Transform( FT_Glyph glyph,
|
||||||
FT_Matrix* matrix,
|
const FT_Matrix* matrix,
|
||||||
FT_Vector* delta );
|
const FT_Vector* delta );
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
@ -498,9 +584,9 @@ FT_BEGIN_HEADER
|
|||||||
* The glyph image is translated with the `origin` vector before
|
* The glyph image is translated with the `origin` vector before
|
||||||
* rendering.
|
* rendering.
|
||||||
*
|
*
|
||||||
* The first parameter is a pointer to an @FT_Glyph handle, that will be
|
* The first parameter is a pointer to an @FT_Glyph handle that will be
|
||||||
* _replaced_ by this function (with newly allocated data). Typically,
|
* _replaced_ by this function (with newly allocated data). Typically,
|
||||||
* you would use (omitting error handling):
|
* you would do something like the following (omitting error handling).
|
||||||
*
|
*
|
||||||
* ```
|
* ```
|
||||||
* FT_Glyph glyph;
|
* FT_Glyph glyph;
|
||||||
@ -517,7 +603,7 @@ FT_BEGIN_HEADER
|
|||||||
* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP )
|
* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP )
|
||||||
* {
|
* {
|
||||||
* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL,
|
* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL,
|
||||||
* 0, 1 );
|
* 0, 1 );
|
||||||
* if ( error ) // `glyph' unchanged
|
* if ( error ) // `glyph' unchanged
|
||||||
* ...
|
* ...
|
||||||
* }
|
* }
|
||||||
@ -532,7 +618,7 @@ FT_BEGIN_HEADER
|
|||||||
* FT_Done_Glyph( glyph );
|
* FT_Done_Glyph( glyph );
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* Here is another example, again without error handling:
|
* Here is another example, again without error handling.
|
||||||
*
|
*
|
||||||
* ```
|
* ```
|
||||||
* FT_Glyph glyphs[MAX_GLYPHS]
|
* FT_Glyph glyphs[MAX_GLYPHS]
|
||||||
@ -569,10 +655,10 @@ FT_BEGIN_HEADER
|
|||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
FT_EXPORT( FT_Error )
|
FT_EXPORT( FT_Error )
|
||||||
FT_Glyph_To_Bitmap( FT_Glyph* the_glyph,
|
FT_Glyph_To_Bitmap( FT_Glyph* the_glyph,
|
||||||
FT_Render_Mode render_mode,
|
FT_Render_Mode render_mode,
|
||||||
FT_Vector* origin,
|
const FT_Vector* origin,
|
||||||
FT_Bool destroy );
|
FT_Bool destroy );
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Gzip-compressed stream support.
|
* Gzip-compressed stream support.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2020 by
|
* Copyright (C) 2002-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
* FreeType glyph image formats and default raster interface
|
* FreeType glyph image formats and default raster interface
|
||||||
* (specification).
|
* (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -28,11 +28,6 @@
|
|||||||
#define FTIMAGE_H_
|
#define FTIMAGE_H_
|
||||||
|
|
||||||
|
|
||||||
/* STANDALONE_ is from ftgrays.c */
|
|
||||||
#ifndef STANDALONE_
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
FT_BEGIN_HEADER
|
||||||
|
|
||||||
|
|
||||||
@ -201,6 +196,11 @@ FT_BEGIN_HEADER
|
|||||||
#define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2
|
#define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2
|
||||||
#define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4
|
#define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4
|
||||||
|
|
||||||
|
/* */
|
||||||
|
|
||||||
|
/* For debugging, the @FT_Pixel_Mode enumeration must stay in sync */
|
||||||
|
/* with the `pixel_modes` array in file `ftobjs.c`. */
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
@ -401,11 +401,11 @@ FT_BEGIN_HEADER
|
|||||||
* information.
|
* information.
|
||||||
*
|
*
|
||||||
* FT_OUTLINE_OVERLAP ::
|
* FT_OUTLINE_OVERLAP ::
|
||||||
* This flag indicates that this outline contains overlapping contrours
|
* [Since 2.10.3] This flag indicates that this outline contains
|
||||||
* and the anti-aliased renderer should perform oversampling to
|
* overlapping contours and the anti-aliased renderer should perform
|
||||||
* mitigate possible artifacts. This flag should _not_ be set for
|
* oversampling to mitigate possible artifacts. This flag should _not_
|
||||||
* well designed glyphs without overlaps because it quadruples the
|
* be set for well designed glyphs without overlaps because it quadruples
|
||||||
* rendering time.
|
* the rendering time.
|
||||||
*
|
*
|
||||||
* FT_OUTLINE_HIGH_PRECISION ::
|
* FT_OUTLINE_HIGH_PRECISION ::
|
||||||
* This flag indicates that the scan-line converter should try to
|
* This flag indicates that the scan-line converter should try to
|
||||||
@ -695,11 +695,13 @@ FT_BEGIN_HEADER
|
|||||||
* to get a simple enumeration without assigning special numbers.
|
* to get a simple enumeration without assigning special numbers.
|
||||||
*/
|
*/
|
||||||
#ifndef FT_IMAGE_TAG
|
#ifndef FT_IMAGE_TAG
|
||||||
#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \
|
|
||||||
value = ( ( (unsigned long)_x1 << 24 ) | \
|
#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \
|
||||||
( (unsigned long)_x2 << 16 ) | \
|
value = ( ( FT_STATIC_BYTE_CAST( unsigned long, _x1 ) << 24 ) | \
|
||||||
( (unsigned long)_x3 << 8 ) | \
|
( FT_STATIC_BYTE_CAST( unsigned long, _x2 ) << 16 ) | \
|
||||||
(unsigned long)_x4 )
|
( FT_STATIC_BYTE_CAST( unsigned long, _x3 ) << 8 ) | \
|
||||||
|
FT_STATIC_BYTE_CAST( unsigned long, _x4 ) )
|
||||||
|
|
||||||
#endif /* FT_IMAGE_TAG */
|
#endif /* FT_IMAGE_TAG */
|
||||||
|
|
||||||
|
|
||||||
@ -739,6 +741,10 @@ FT_BEGIN_HEADER
|
|||||||
* contours. Some Type~1 fonts, like those in the Hershey family,
|
* contours. Some Type~1 fonts, like those in the Hershey family,
|
||||||
* contain glyphs in this format. These are described as @FT_Outline,
|
* contain glyphs in this format. These are described as @FT_Outline,
|
||||||
* but FreeType isn't currently capable of rendering them correctly.
|
* but FreeType isn't currently capable of rendering them correctly.
|
||||||
|
*
|
||||||
|
* FT_GLYPH_FORMAT_SVG ::
|
||||||
|
* [Since 2.12] The glyph is represented by an SVG document in the
|
||||||
|
* 'SVG~' table.
|
||||||
*/
|
*/
|
||||||
typedef enum FT_Glyph_Format_
|
typedef enum FT_Glyph_Format_
|
||||||
{
|
{
|
||||||
@ -747,7 +753,8 @@ FT_BEGIN_HEADER
|
|||||||
FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ),
|
FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ),
|
||||||
FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ),
|
FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ),
|
||||||
FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ),
|
FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ),
|
||||||
FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' )
|
FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ),
|
||||||
|
FT_IMAGE_TAG( FT_GLYPH_FORMAT_SVG, 'S', 'V', 'G', ' ' )
|
||||||
|
|
||||||
} FT_Glyph_Format;
|
} FT_Glyph_Format;
|
||||||
|
|
||||||
@ -772,17 +779,6 @@ FT_BEGIN_HEADER
|
|||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* A raster is a scan converter, in charge of rendering an outline into a
|
|
||||||
* bitmap. This section contains the public API for rasters.
|
|
||||||
*
|
|
||||||
* Note that in FreeType 2, all rasters are now encapsulated within
|
|
||||||
* specific modules called 'renderers'. See `ftrender.h` for more details
|
|
||||||
* on renderers.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
@ -796,16 +792,35 @@ FT_BEGIN_HEADER
|
|||||||
* How vectorial outlines are converted into bitmaps and pixmaps.
|
* How vectorial outlines are converted into bitmaps and pixmaps.
|
||||||
*
|
*
|
||||||
* @description:
|
* @description:
|
||||||
* This section contains technical definitions.
|
* A raster or a rasterizer is a scan converter in charge of producing a
|
||||||
|
* pixel coverage bitmap that can be used as an alpha channel when
|
||||||
|
* compositing a glyph with a background. FreeType comes with two
|
||||||
|
* rasterizers: bilevel `raster1` and anti-aliased `smooth` are two
|
||||||
|
* separate modules. They are usually called from the high-level
|
||||||
|
* @FT_Load_Glyph or @FT_Render_Glyph functions and produce the entire
|
||||||
|
* coverage bitmap at once, while staying largely invisible to users.
|
||||||
|
*
|
||||||
|
* Instead of working with complete coverage bitmaps, it is also possible
|
||||||
|
* to intercept consecutive pixel runs on the same scanline with the same
|
||||||
|
* coverage, called _spans_, and process them individually. Only the
|
||||||
|
* `smooth` rasterizer permits this when calling @FT_Outline_Render with
|
||||||
|
* @FT_Raster_Params as described below.
|
||||||
|
*
|
||||||
|
* Working with either complete bitmaps or spans it is important to think
|
||||||
|
* of them as colorless coverage objects suitable as alpha channels to
|
||||||
|
* blend arbitrary colors with a background. For best results, it is
|
||||||
|
* recommended to use gamma correction, too.
|
||||||
|
*
|
||||||
|
* This section also describes the public API needed to set up alternative
|
||||||
|
* @FT_Renderer modules.
|
||||||
*
|
*
|
||||||
* @order:
|
* @order:
|
||||||
* FT_Raster
|
|
||||||
* FT_Span
|
* FT_Span
|
||||||
* FT_SpanFunc
|
* FT_SpanFunc
|
||||||
*
|
|
||||||
* FT_Raster_Params
|
* FT_Raster_Params
|
||||||
* FT_RASTER_FLAG_XXX
|
* FT_RASTER_FLAG_XXX
|
||||||
*
|
*
|
||||||
|
* FT_Raster
|
||||||
* FT_Raster_NewFunc
|
* FT_Raster_NewFunc
|
||||||
* FT_Raster_DoneFunc
|
* FT_Raster_DoneFunc
|
||||||
* FT_Raster_ResetFunc
|
* FT_Raster_ResetFunc
|
||||||
@ -816,26 +831,14 @@ FT_BEGIN_HEADER
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* @type:
|
|
||||||
* FT_Raster
|
|
||||||
*
|
|
||||||
* @description:
|
|
||||||
* An opaque handle (pointer) to a raster object. Each object can be
|
|
||||||
* used independently to convert an outline into a bitmap or pixmap.
|
|
||||||
*/
|
|
||||||
typedef struct FT_RasterRec_* FT_Raster;
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @struct:
|
* @struct:
|
||||||
* FT_Span
|
* FT_Span
|
||||||
*
|
*
|
||||||
* @description:
|
* @description:
|
||||||
* A structure used to model a single span of gray pixels when rendering
|
* A structure to model a single span of consecutive pixels when
|
||||||
* an anti-aliased bitmap.
|
* rendering an anti-aliased bitmap.
|
||||||
*
|
*
|
||||||
* @fields:
|
* @fields:
|
||||||
* x ::
|
* x ::
|
||||||
@ -852,8 +855,8 @@ FT_BEGIN_HEADER
|
|||||||
* This structure is used by the span drawing callback type named
|
* This structure is used by the span drawing callback type named
|
||||||
* @FT_SpanFunc that takes the y~coordinate of the span as a parameter.
|
* @FT_SpanFunc that takes the y~coordinate of the span as a parameter.
|
||||||
*
|
*
|
||||||
* The coverage value is always between 0 and 255. If you want less gray
|
* The anti-aliased rasterizer produces coverage values from 0 to 255,
|
||||||
* values, the callback function has to reduce them.
|
* this is, from completely transparent to completely opaque.
|
||||||
*/
|
*/
|
||||||
typedef struct FT_Span_
|
typedef struct FT_Span_
|
||||||
{
|
{
|
||||||
@ -871,8 +874,8 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @description:
|
* @description:
|
||||||
* A function used as a call-back by the anti-aliased renderer in order
|
* A function used as a call-back by the anti-aliased renderer in order
|
||||||
* to let client applications draw themselves the gray pixel spans on
|
* to let client applications draw themselves the pixel spans on each
|
||||||
* each scan line.
|
* scan line.
|
||||||
*
|
*
|
||||||
* @input:
|
* @input:
|
||||||
* y ::
|
* y ::
|
||||||
@ -888,11 +891,12 @@ FT_BEGIN_HEADER
|
|||||||
* User-supplied data that is passed to the callback.
|
* User-supplied data that is passed to the callback.
|
||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* This callback allows client applications to directly render the gray
|
* This callback allows client applications to directly render the spans
|
||||||
* spans of the anti-aliased bitmap to any kind of surfaces.
|
* of the anti-aliased bitmap to any kind of surfaces.
|
||||||
*
|
*
|
||||||
* This can be used to write anti-aliased outlines directly to a given
|
* This can be used to write anti-aliased outlines directly to a given
|
||||||
* background bitmap, and even perform translucency.
|
* background bitmap using alpha compositing. It can also be used for
|
||||||
|
* oversampling and averaging.
|
||||||
*/
|
*/
|
||||||
typedef void
|
typedef void
|
||||||
(*FT_SpanFunc)( int y,
|
(*FT_SpanFunc)( int y,
|
||||||
@ -962,11 +966,17 @@ FT_BEGIN_HEADER
|
|||||||
* will be clipped to a box specified in the `clip_box` field of the
|
* will be clipped to a box specified in the `clip_box` field of the
|
||||||
* @FT_Raster_Params structure. Otherwise, the `clip_box` is
|
* @FT_Raster_Params structure. Otherwise, the `clip_box` is
|
||||||
* effectively set to the bounding box and all spans are generated.
|
* effectively set to the bounding box and all spans are generated.
|
||||||
|
*
|
||||||
|
* FT_RASTER_FLAG_SDF ::
|
||||||
|
* This flag is set to indicate that a signed distance field glyph
|
||||||
|
* image should be generated. This is only used while rendering with
|
||||||
|
* the @FT_RENDER_MODE_SDF render mode.
|
||||||
*/
|
*/
|
||||||
#define FT_RASTER_FLAG_DEFAULT 0x0
|
#define FT_RASTER_FLAG_DEFAULT 0x0
|
||||||
#define FT_RASTER_FLAG_AA 0x1
|
#define FT_RASTER_FLAG_AA 0x1
|
||||||
#define FT_RASTER_FLAG_DIRECT 0x2
|
#define FT_RASTER_FLAG_DIRECT 0x2
|
||||||
#define FT_RASTER_FLAG_CLIP 0x4
|
#define FT_RASTER_FLAG_CLIP 0x4
|
||||||
|
#define FT_RASTER_FLAG_SDF 0x8
|
||||||
|
|
||||||
/* these constants are deprecated; use the corresponding */
|
/* these constants are deprecated; use the corresponding */
|
||||||
/* `FT_RASTER_FLAG_XXX` values instead */
|
/* `FT_RASTER_FLAG_XXX` values instead */
|
||||||
@ -1047,6 +1057,23 @@ FT_BEGIN_HEADER
|
|||||||
} FT_Raster_Params;
|
} FT_Raster_Params;
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @type:
|
||||||
|
* FT_Raster
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* An opaque handle (pointer) to a raster object. Each object can be
|
||||||
|
* used independently to convert an outline into a bitmap or pixmap.
|
||||||
|
*
|
||||||
|
* @note:
|
||||||
|
* In FreeType 2, all rasters are now encapsulated within specific
|
||||||
|
* @FT_Renderer modules and only used in their context.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
typedef struct FT_RasterRec_* FT_Raster;
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @functype:
|
* @functype:
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType incremental loading (specification).
|
* FreeType incremental loading (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2020 by
|
* Copyright (C) 2002-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -213,9 +213,14 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @description:
|
* @description:
|
||||||
* A function used to retrieve the basic metrics of a given glyph index
|
* A function used to retrieve the basic metrics of a given glyph index
|
||||||
* before accessing its data. This is necessary because, in certain
|
* before accessing its data. This allows for handling font types such
|
||||||
* formats like TrueType, the metrics are stored in a different place
|
* as PCL~XL Format~1, Class~2 downloaded TrueType fonts, where the glyph
|
||||||
* from the glyph images proper.
|
* metrics (`hmtx` and `vmtx` tables) are permitted to be omitted from
|
||||||
|
* the font, and the relevant metrics included in the header of the glyph
|
||||||
|
* outline data. Importantly, this is not intended to allow custom glyph
|
||||||
|
* metrics (for example, Postscript Metrics dictionaries), because that
|
||||||
|
* conflicts with the requirements of outline hinting. Such custom
|
||||||
|
* metrics must be handled separately, by the calling application.
|
||||||
*
|
*
|
||||||
* @input:
|
* @input:
|
||||||
* incremental ::
|
* incremental ::
|
||||||
@ -235,7 +240,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @output:
|
* @output:
|
||||||
* ametrics ::
|
* ametrics ::
|
||||||
* The replacement glyph metrics in font units.
|
* The glyph metrics in font units.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
typedef FT_Error
|
typedef FT_Error
|
||||||
@ -264,7 +269,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* get_glyph_metrics ::
|
* get_glyph_metrics ::
|
||||||
* The function to get glyph metrics. May be null if the font does not
|
* The function to get glyph metrics. May be null if the font does not
|
||||||
* provide overriding glyph metrics.
|
* require it.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
typedef struct FT_Incremental_FuncsRec_
|
typedef struct FT_Incremental_FuncsRec_
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
* FreeType API for color filtering of subpixel bitmap glyphs
|
* FreeType API for color filtering of subpixel bitmap glyphs
|
||||||
* (specification).
|
* (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006-2020 by
|
* Copyright (C) 2006-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -55,13 +55,12 @@ FT_BEGIN_HEADER
|
|||||||
* ClearType-style LCD rendering exploits the color-striped structure of
|
* ClearType-style LCD rendering exploits the color-striped structure of
|
||||||
* LCD pixels, increasing the available resolution in the direction of
|
* LCD pixels, increasing the available resolution in the direction of
|
||||||
* the stripe (usually horizontal RGB) by a factor of~3. Using the
|
* the stripe (usually horizontal RGB) by a factor of~3. Using the
|
||||||
* subpixels coverages unfiltered can create severe color fringes
|
* subpixel coverages unfiltered can create severe color fringes
|
||||||
* especially when rendering thin features. Indeed, to produce
|
* especially when rendering thin features. Indeed, to produce
|
||||||
* black-on-white text, the nearby color subpixels must be dimmed
|
* black-on-white text, the nearby color subpixels must be dimmed
|
||||||
* equally.
|
* evenly. Therefore, an equalizing 5-tap FIR filter should be applied
|
||||||
*
|
* to subpixel coverages regardless of pixel boundaries and should have
|
||||||
* A good 5-tap FIR filter should be applied to subpixel coverages
|
* these properties:
|
||||||
* regardless of pixel boundaries and should have these properties:
|
|
||||||
*
|
*
|
||||||
* 1. It should be symmetrical, like {~a, b, c, b, a~}, to avoid
|
* 1. It should be symmetrical, like {~a, b, c, b, a~}, to avoid
|
||||||
* any shifts in appearance.
|
* any shifts in appearance.
|
||||||
@ -84,7 +83,7 @@ FT_BEGIN_HEADER
|
|||||||
* Harmony LCD rendering is suitable to panels with any regular subpixel
|
* Harmony LCD rendering is suitable to panels with any regular subpixel
|
||||||
* structure, not just monitors with 3 color striped subpixels, as long
|
* structure, not just monitors with 3 color striped subpixels, as long
|
||||||
* as the color subpixels have fixed positions relative to the pixel
|
* as the color subpixels have fixed positions relative to the pixel
|
||||||
* center. In this case, each color channel is then rendered separately
|
* center. In this case, each color channel can be rendered separately
|
||||||
* after shifting the outline opposite to the subpixel shift so that the
|
* after shifting the outline opposite to the subpixel shift so that the
|
||||||
* coverage maps are aligned. This method is immune to color fringes
|
* coverage maps are aligned. This method is immune to color fringes
|
||||||
* because the shifts do not change integral coverage.
|
* because the shifts do not change integral coverage.
|
||||||
@ -101,9 +100,9 @@ FT_BEGIN_HEADER
|
|||||||
* clockwise. Harmony with default LCD geometry is equivalent to
|
* clockwise. Harmony with default LCD geometry is equivalent to
|
||||||
* ClearType with light filter.
|
* ClearType with light filter.
|
||||||
*
|
*
|
||||||
* As a result of ClearType filtering or Harmony rendering, the
|
* As a result of ClearType filtering or Harmony shifts, the resulting
|
||||||
* dimensions of LCD bitmaps can be either wider or taller than the
|
* dimensions of LCD bitmaps can be slightly wider or taller than the
|
||||||
* dimensions of the corresponding outline with regard to the pixel grid.
|
* dimensions the original outline with regard to the pixel grid.
|
||||||
* For example, for @FT_RENDER_MODE_LCD, the filter adds 2~subpixels to
|
* For example, for @FT_RENDER_MODE_LCD, the filter adds 2~subpixels to
|
||||||
* the left, and 2~subpixels to the right. The bitmap offset values are
|
* the left, and 2~subpixels to the right. The bitmap offset values are
|
||||||
* adjusted accordingly, so clients shouldn't need to modify their layout
|
* adjusted accordingly, so clients shouldn't need to modify their layout
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Generic list support for FreeType (specification).
|
* Generic list support for FreeType (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -0,0 +1,184 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* ftlogging.h
|
||||||
|
*
|
||||||
|
* Additional debugging APIs.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2020-2022 by
|
||||||
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
|
*
|
||||||
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
* modified, and distributed under the terms of the FreeType project
|
||||||
|
* license, LICENSE.TXT. By continuing to use, modify, or distribute
|
||||||
|
* this file you indicate that you have read the license and
|
||||||
|
* understand and accept it fully.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef FTLOGGING_H_
|
||||||
|
#define FTLOGGING_H_
|
||||||
|
|
||||||
|
|
||||||
|
#include <ft2build.h>
|
||||||
|
#include FT_CONFIG_CONFIG_H
|
||||||
|
|
||||||
|
|
||||||
|
FT_BEGIN_HEADER
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @section:
|
||||||
|
* debugging_apis
|
||||||
|
*
|
||||||
|
* @title:
|
||||||
|
* External Debugging APIs
|
||||||
|
*
|
||||||
|
* @abstract:
|
||||||
|
* Public APIs to control the `FT_DEBUG_LOGGING` macro.
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* This section contains the declarations of public functions that
|
||||||
|
* enables fine control of what the `FT_DEBUG_LOGGING` macro outputs.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @function:
|
||||||
|
* FT_Trace_Set_Level
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* Change the levels of tracing components of FreeType at run time.
|
||||||
|
*
|
||||||
|
* @input:
|
||||||
|
* tracing_level ::
|
||||||
|
* New tracing value.
|
||||||
|
*
|
||||||
|
* @example:
|
||||||
|
* The following call makes FreeType trace everything but the 'memory'
|
||||||
|
* component.
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* FT_Trace_Set_Level( "any:7 memory:0 );
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* @note:
|
||||||
|
* This function does nothing if compilation option `FT_DEBUG_LOGGING`
|
||||||
|
* isn't set.
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.11
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
FT_EXPORT( void )
|
||||||
|
FT_Trace_Set_Level( const char* tracing_level );
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @function:
|
||||||
|
* FT_Trace_Set_Default_Level
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* Reset tracing value of FreeType's components to the default value
|
||||||
|
* (i.e., to the value of the `FT2_DEBUG` environment value or to NULL
|
||||||
|
* if `FT2_DEBUG` is not set).
|
||||||
|
*
|
||||||
|
* @note:
|
||||||
|
* This function does nothing if compilation option `FT_DEBUG_LOGGING`
|
||||||
|
* isn't set.
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.11
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
FT_EXPORT( void )
|
||||||
|
FT_Trace_Set_Default_Level( void );
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @functype:
|
||||||
|
* FT_Custom_Log_Handler
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A function typedef that is used to handle the logging of tracing and
|
||||||
|
* debug messages on a file system.
|
||||||
|
*
|
||||||
|
* @input:
|
||||||
|
* ft_component ::
|
||||||
|
* The name of `FT_COMPONENT` from which the current debug or error
|
||||||
|
* message is produced.
|
||||||
|
*
|
||||||
|
* fmt ::
|
||||||
|
* Actual debug or tracing message.
|
||||||
|
*
|
||||||
|
* args::
|
||||||
|
* Arguments of debug or tracing messages.
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.11
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
typedef void
|
||||||
|
(*FT_Custom_Log_Handler)( const char* ft_component,
|
||||||
|
const char* fmt,
|
||||||
|
va_list args );
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @function:
|
||||||
|
* FT_Set_Log_Handler
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A function to set a custom log handler.
|
||||||
|
*
|
||||||
|
* @input:
|
||||||
|
* handler ::
|
||||||
|
* New logging function.
|
||||||
|
*
|
||||||
|
* @note:
|
||||||
|
* This function does nothing if compilation option `FT_DEBUG_LOGGING`
|
||||||
|
* isn't set.
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.11
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
FT_EXPORT( void )
|
||||||
|
FT_Set_Log_Handler( FT_Custom_Log_Handler handler );
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @function:
|
||||||
|
* FT_Set_Default_Log_Handler
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A function to undo the effect of @FT_Set_Log_Handler, resetting the
|
||||||
|
* log handler to FreeType's built-in version.
|
||||||
|
*
|
||||||
|
* @note:
|
||||||
|
* This function does nothing if compilation option `FT_DEBUG_LOGGING`
|
||||||
|
* isn't set.
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.11
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
FT_EXPORT( void )
|
||||||
|
FT_Set_Default_Log_Handler( void );
|
||||||
|
|
||||||
|
/* */
|
||||||
|
|
||||||
|
|
||||||
|
FT_END_HEADER
|
||||||
|
|
||||||
|
#endif /* FTLOGGING_H_ */
|
||||||
|
|
||||||
|
|
||||||
|
/* END */
|
||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Additional Mac-specific API.
|
* Additional Mac-specific API.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
|
* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType Multiple Master font interface (specification).
|
* FreeType Multiple Master font interface (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -47,6 +47,9 @@ FT_BEGIN_HEADER
|
|||||||
* MM fonts, others will work with all three types. They are similar
|
* MM fonts, others will work with all three types. They are similar
|
||||||
* enough that a consistent interface makes sense.
|
* enough that a consistent interface makes sense.
|
||||||
*
|
*
|
||||||
|
* For Adobe MM fonts, macro @FT_IS_SFNT returns false. For GX and
|
||||||
|
* OpenType variation fonts, it returns true.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType modules public interface (specification).
|
* FreeType modules public interface (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -45,10 +45,12 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @description:
|
* @description:
|
||||||
* The definitions below are used to manage modules within FreeType.
|
* The definitions below are used to manage modules within FreeType.
|
||||||
* Modules can be added, upgraded, and removed at runtime. Additionally,
|
* Internal and external modules can be added, upgraded, and removed at
|
||||||
* some module properties can be controlled also.
|
* runtime. For example, an alternative renderer or proprietary font
|
||||||
|
* driver can be registered and prioritized. Additionally, some module
|
||||||
|
* properties can also be controlled.
|
||||||
*
|
*
|
||||||
* Here is a list of possible values of the `module_name` field in the
|
* Here is a list of existing values of the `module_name` field in the
|
||||||
* @FT_Module_Class structure.
|
* @FT_Module_Class structure.
|
||||||
*
|
*
|
||||||
* ```
|
* ```
|
||||||
@ -86,6 +88,7 @@ FT_BEGIN_HEADER
|
|||||||
* FT_Remove_Module
|
* FT_Remove_Module
|
||||||
* FT_Add_Default_Modules
|
* FT_Add_Default_Modules
|
||||||
*
|
*
|
||||||
|
* FT_FACE_DRIVER_NAME
|
||||||
* FT_Property_Set
|
* FT_Property_Set
|
||||||
* FT_Property_Get
|
* FT_Property_Get
|
||||||
* FT_Set_Default_Properties
|
* FT_Set_Default_Properties
|
||||||
@ -328,6 +331,27 @@ FT_BEGIN_HEADER
|
|||||||
FT_Module module );
|
FT_Module module );
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @macro:
|
||||||
|
* FT_FACE_DRIVER_NAME
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A macro that retrieves the name of a font driver from a face object.
|
||||||
|
*
|
||||||
|
* @note:
|
||||||
|
* The font driver name is a valid `module_name` for @FT_Property_Set
|
||||||
|
* and @FT_Property_Get. This is not the same as @FT_Get_Font_Format.
|
||||||
|
*
|
||||||
|
* @since:
|
||||||
|
* 2.11
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define FT_FACE_DRIVER_NAME( face ) \
|
||||||
|
( ( *FT_REINTERPRET_CAST( FT_Module_Class**, \
|
||||||
|
( face )->driver ) )->module_name )
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @function:
|
* @function:
|
||||||
@ -485,8 +509,7 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* ```
|
* ```
|
||||||
* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
|
* FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
|
||||||
* cff:no-stem-darkening=0 \
|
* cff:no-stem-darkening=0
|
||||||
* autofitter:warping=1
|
|
||||||
* ```
|
* ```
|
||||||
*
|
*
|
||||||
* @inout:
|
* @inout:
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType module error offsets (specification).
|
* FreeType module error offsets (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2001-2020 by
|
* Copyright (C) 2001-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -171,6 +171,7 @@
|
|||||||
FT_MODERRDEF( Type42, 0x1400, "Type 42 module" )
|
FT_MODERRDEF( Type42, 0x1400, "Type 42 module" )
|
||||||
FT_MODERRDEF( Winfonts, 0x1500, "Windows FON/FNT module" )
|
FT_MODERRDEF( Winfonts, 0x1500, "Windows FON/FNT module" )
|
||||||
FT_MODERRDEF( GXvalid, 0x1600, "GX validation module" )
|
FT_MODERRDEF( GXvalid, 0x1600, "GX validation module" )
|
||||||
|
FT_MODERRDEF( Sdf, 0x1700, "Signed distance field raster module" )
|
||||||
|
|
||||||
|
|
||||||
#ifdef FT_MODERR_END_LIST
|
#ifdef FT_MODERR_END_LIST
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
* Support for the FT_Outline type used to store glyph shapes of
|
* Support for the FT_Outline type used to store glyph shapes of
|
||||||
* most scalable font formats (specification).
|
* most scalable font formats (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -109,11 +109,13 @@ FT_BEGIN_HEADER
|
|||||||
* FreeType error code. 0~means success.
|
* FreeType error code. 0~means success.
|
||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* A contour that contains a single point only is represented by a 'move
|
* Degenerate contours, segments, and Bezier arcs may be reported. In
|
||||||
* to' operation followed by 'line to' to the same point. In most cases,
|
* most cases, it is best to filter these out before using the outline
|
||||||
* it is best to filter this out before using the outline for stroking
|
* for stroking or other path modification purposes (which may cause
|
||||||
* purposes (otherwise it would result in a visible dot when round caps
|
* degenerate segments to become non-degenrate and visible, like when
|
||||||
* are used).
|
* stroke caps are used or the path is otherwise outset). Some glyph
|
||||||
|
* outlines may contain deliberate degenerate single points for mark
|
||||||
|
* attachement.
|
||||||
*
|
*
|
||||||
* Similarly, the function returns success for an empty outline also
|
* Similarly, the function returns success for an empty outline also
|
||||||
* (doing nothing, this is, not calling any emitter); if necessary, you
|
* (doing nothing, this is, not calling any emitter); if necessary, you
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType API for possible FT_Parameter tags (specification only).
|
* FreeType API for possible FT_Parameter tags (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2017-2020 by
|
* Copyright (C) 2017-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -112,6 +112,21 @@ FT_BEGIN_HEADER
|
|||||||
FT_MAKE_TAG( 'i', 'n', 'c', 'r' )
|
FT_MAKE_TAG( 'i', 'n', 'c', 'r' )
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @enum:
|
||||||
|
* FT_PARAM_TAG_IGNORE_SBIX
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* A tag for @FT_Parameter to make @FT_Open_Face ignore an 'sbix' table
|
||||||
|
* while loading a font. Use this if @FT_FACE_FLAG_SBIX is set and you
|
||||||
|
* want to access the outline glyphs in the font.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#define FT_PARAM_TAG_IGNORE_SBIX \
|
||||||
|
FT_MAKE_TAG( 'i', 's', 'b', 'x' )
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @enum:
|
* @enum:
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType renderer modules public interface (specification).
|
* FreeType renderer modules public interface (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType size objects management (specification).
|
* FreeType size objects management (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
* This is _not_ used to retrieve glyph names!
|
* This is _not_ used to retrieve glyph names!
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType path stroker (specification).
|
* FreeType path stroker (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2020 by
|
* Copyright (C) 2002-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
* FreeType synthesizing code for emboldening and slanting
|
* FreeType synthesizing code for emboldening and slanting
|
||||||
* (specification).
|
* (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2000-2020 by
|
* Copyright (C) 2000-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType low-level system interface definition (specification).
|
* FreeType low-level system interface definition (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType trigonometric functions (specification).
|
* FreeType trigonometric functions (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2001-2020 by
|
* Copyright (C) 2001-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType simple types definitions (specification only).
|
* FreeType simple types definitions (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -413,7 +413,7 @@ FT_BEGIN_HEADER
|
|||||||
typedef struct FT_Data_
|
typedef struct FT_Data_
|
||||||
{
|
{
|
||||||
const FT_Byte* pointer;
|
const FT_Byte* pointer;
|
||||||
FT_Int length;
|
FT_UInt length;
|
||||||
|
|
||||||
} FT_Data;
|
} FT_Data;
|
||||||
|
|
||||||
@ -479,18 +479,17 @@ FT_BEGIN_HEADER
|
|||||||
*
|
*
|
||||||
* @description:
|
* @description:
|
||||||
* This macro converts four-letter tags that are used to label TrueType
|
* This macro converts four-letter tags that are used to label TrueType
|
||||||
* tables into an unsigned long, to be used within FreeType.
|
* tables into an `FT_Tag` type, to be used within FreeType.
|
||||||
*
|
*
|
||||||
* @note:
|
* @note:
|
||||||
* The produced values **must** be 32-bit integers. Don't redefine this
|
* The produced values **must** be 32-bit integers. Don't redefine this
|
||||||
* macro.
|
* macro.
|
||||||
*/
|
*/
|
||||||
#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
|
#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
|
||||||
(FT_Tag) \
|
( ( FT_STATIC_BYTE_CAST( FT_Tag, _x1 ) << 24 ) | \
|
||||||
( ( (FT_ULong)_x1 << 24 ) | \
|
( FT_STATIC_BYTE_CAST( FT_Tag, _x2 ) << 16 ) | \
|
||||||
( (FT_ULong)_x2 << 16 ) | \
|
( FT_STATIC_BYTE_CAST( FT_Tag, _x3 ) << 8 ) | \
|
||||||
( (FT_ULong)_x3 << 8 ) | \
|
FT_STATIC_BYTE_CAST( FT_Tag, _x4 ) )
|
||||||
(FT_ULong)_x4 )
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
@ -588,7 +587,7 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
|
|
||||||
#define FT_IS_EMPTY( list ) ( (list).head == 0 )
|
#define FT_IS_EMPTY( list ) ( (list).head == 0 )
|
||||||
#define FT_BOOL( x ) ( (FT_Bool)( (x) != 0 ) )
|
#define FT_BOOL( x ) FT_STATIC_CAST( FT_Bool, (x) != 0 )
|
||||||
|
|
||||||
/* concatenate C tokens */
|
/* concatenate C tokens */
|
||||||
#define FT_ERR_XCAT( x, y ) x ## y
|
#define FT_ERR_XCAT( x, y ) x ## y
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* High-level 'autohint' module-specific interface (specification).
|
* High-level 'autohint' module-specific interface (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Basic OpenType/CFF object type definitions (specification).
|
* Basic OpenType/CFF object type definitions (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2017-2020 by
|
* Copyright (C) 2017-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
* Basic OpenType/CFF type definitions and interface (specification
|
* Basic OpenType/CFF type definitions and interface (specification
|
||||||
* only).
|
* only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Compiler-specific macro definitions used internally by FreeType.
|
* Compiler-specific macro definitions used internally by FreeType.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020 by
|
* Copyright (C) 2020-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -71,12 +71,18 @@ FT_BEGIN_HEADER
|
|||||||
*/
|
*/
|
||||||
#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT
|
#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT
|
||||||
|
|
||||||
#ifdef _WIN64
|
#ifdef __UINTPTR_TYPE__
|
||||||
|
/*
|
||||||
|
* GCC and Clang both provide a `__UINTPTR_TYPE__` that can be used to
|
||||||
|
* avoid a dependency on `stdint.h`.
|
||||||
|
*/
|
||||||
|
# define FT_UINT_TO_POINTER( x ) (void *)(__UINTPTR_TYPE__)(x)
|
||||||
|
#elif defined( _WIN64 )
|
||||||
/* only 64bit Windows uses the LLP64 data model, i.e., */
|
/* only 64bit Windows uses the LLP64 data model, i.e., */
|
||||||
/* 32-bit integers, 64-bit pointers. */
|
/* 32-bit integers, 64-bit pointers. */
|
||||||
#define FT_UINT_TO_POINTER( x ) (void *)(unsigned __int64)(x)
|
# define FT_UINT_TO_POINTER( x ) (void *)(unsigned __int64)(x)
|
||||||
#else
|
#else
|
||||||
#define FT_UINT_TO_POINTER( x ) (void *)(unsigned long)(x)
|
# define FT_UINT_TO_POINTER( x ) (void *)(unsigned long)(x)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -216,79 +222,93 @@ FT_BEGIN_HEADER
|
|||||||
#define FT_EXPORT_VAR( x ) FT_FUNCTION_DECLARATION( x )
|
#define FT_EXPORT_VAR( x ) FT_FUNCTION_DECLARATION( x )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* When compiling FreeType as a DLL or DSO with hidden visibility, */
|
/*
|
||||||
/* some systems/compilers need a special attribute in front OR after */
|
* When compiling FreeType as a DLL or DSO with hidden visibility,
|
||||||
/* the return type of function declarations. */
|
* some systems/compilers need a special attribute in front OR after
|
||||||
/* */
|
* the return type of function declarations.
|
||||||
/* Two macros are used within the FreeType source code to define */
|
*
|
||||||
/* exported library functions: `FT_EXPORT` and `FT_EXPORT_DEF`. */
|
* Two macros are used within the FreeType source code to define
|
||||||
/* */
|
* exported library functions: `FT_EXPORT` and `FT_EXPORT_DEF`.
|
||||||
/* - `FT_EXPORT( return_type )` */
|
*
|
||||||
/* */
|
* - `FT_EXPORT( return_type )`
|
||||||
/* is used in a function declaration, as in */
|
*
|
||||||
/* */
|
* is used in a function declaration, as in
|
||||||
/* ``` */
|
*
|
||||||
/* FT_EXPORT( FT_Error ) */
|
* ```
|
||||||
/* FT_Init_FreeType( FT_Library* alibrary ); */
|
* FT_EXPORT( FT_Error )
|
||||||
/* ``` */
|
* FT_Init_FreeType( FT_Library* alibrary );
|
||||||
/* */
|
* ```
|
||||||
/* - `FT_EXPORT_DEF( return_type )` */
|
*
|
||||||
/* */
|
* - `FT_EXPORT_DEF( return_type )`
|
||||||
/* is used in a function definition, as in */
|
*
|
||||||
/* */
|
* is used in a function definition, as in
|
||||||
/* ``` */
|
*
|
||||||
/* FT_EXPORT_DEF( FT_Error ) */
|
* ```
|
||||||
/* FT_Init_FreeType( FT_Library* alibrary ) */
|
* FT_EXPORT_DEF( FT_Error )
|
||||||
/* { */
|
* FT_Init_FreeType( FT_Library* alibrary )
|
||||||
/* ... some code ... */
|
* {
|
||||||
/* return FT_Err_Ok; */
|
* ... some code ...
|
||||||
/* } */
|
* return FT_Err_Ok;
|
||||||
/* ``` */
|
* }
|
||||||
/* */
|
* ```
|
||||||
/* You can provide your own implementation of `FT_EXPORT` and */
|
*
|
||||||
/* `FT_EXPORT_DEF` here if you want. */
|
* You can provide your own implementation of `FT_EXPORT` and
|
||||||
/* */
|
* `FT_EXPORT_DEF` here if you want.
|
||||||
/* To export a variable, use `FT_EXPORT_VAR`. */
|
*
|
||||||
/* */
|
* To export a variable, use `FT_EXPORT_VAR`.
|
||||||
|
*/
|
||||||
|
|
||||||
/* See `freetype/config/compiler_macros.h` for the `FT_EXPORT` definition */
|
/* See `freetype/config/compiler_macros.h` for the `FT_EXPORT` definition */
|
||||||
#define FT_EXPORT_DEF( x ) FT_FUNCTION_DEFINITION( x )
|
#define FT_EXPORT_DEF( x ) FT_FUNCTION_DEFINITION( x )
|
||||||
|
|
||||||
/* The following macros are needed to compile the library with a */
|
/*
|
||||||
/* C++ compiler and with 16bit compilers. */
|
* The following macros are needed to compile the library with a
|
||||||
/* */
|
* C++ compiler and with 16bit compilers.
|
||||||
|
*/
|
||||||
|
|
||||||
/* This is special. Within C++, you must specify `extern "C"` for */
|
/*
|
||||||
/* functions which are used via function pointers, and you also */
|
* This is special. Within C++, you must specify `extern "C"` for
|
||||||
/* must do that for structures which contain function pointers to */
|
* functions which are used via function pointers, and you also
|
||||||
/* assure C linkage -- it's not possible to have (local) anonymous */
|
* must do that for structures which contain function pointers to
|
||||||
/* functions which are accessed by (global) function pointers. */
|
* assure C linkage -- it's not possible to have (local) anonymous
|
||||||
/* */
|
* functions which are accessed by (global) function pointers.
|
||||||
/* */
|
*
|
||||||
/* FT_CALLBACK_DEF is used to _define_ a callback function, */
|
*
|
||||||
/* located in the same source code file as the structure that uses */
|
* FT_CALLBACK_DEF is used to _define_ a callback function,
|
||||||
/* it. */
|
* located in the same source code file as the structure that uses
|
||||||
/* */
|
* it. FT_COMPARE_DEF, in addition, ensures the `cdecl` calling
|
||||||
/* FT_BASE_CALLBACK and FT_BASE_CALLBACK_DEF are used to declare */
|
* convention on x86, required by the C library function `qsort`.
|
||||||
/* and define a callback function, respectively, in a similar way */
|
*
|
||||||
/* as FT_BASE and FT_BASE_DEF work. */
|
* FT_BASE_CALLBACK and FT_BASE_CALLBACK_DEF are used to declare
|
||||||
/* */
|
* and define a callback function, respectively, in a similar way
|
||||||
/* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */
|
* as FT_BASE and FT_BASE_DEF work.
|
||||||
/* contains pointers to callback functions. */
|
*
|
||||||
/* */
|
* FT_CALLBACK_TABLE is used to _declare_ a constant variable that
|
||||||
/* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */
|
* contains pointers to callback functions.
|
||||||
/* that contains pointers to callback functions. */
|
*
|
||||||
/* */
|
* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable
|
||||||
/* */
|
* that contains pointers to callback functions.
|
||||||
/* Some 16bit compilers have to redefine these macros to insert */
|
*
|
||||||
/* the infamous `_cdecl` or `__fastcall` declarations. */
|
*
|
||||||
/* */
|
* Some 16bit compilers have to redefine these macros to insert
|
||||||
|
* the infamous `_cdecl` or `__fastcall` declarations.
|
||||||
|
*/
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
#define FT_CALLBACK_DEF( x ) extern "C" x
|
#define FT_CALLBACK_DEF( x ) extern "C" x
|
||||||
#else
|
#else
|
||||||
#define FT_CALLBACK_DEF( x ) static x
|
#define FT_CALLBACK_DEF( x ) static x
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined( __GNUC__ ) && defined( __i386__ )
|
||||||
|
#define FT_COMPARE_DEF( x ) FT_CALLBACK_DEF( x ) __attribute__(( cdecl ))
|
||||||
|
#elif defined( _MSC_VER ) && defined( _M_IX86 )
|
||||||
|
#define FT_COMPARE_DEF( x ) FT_CALLBACK_DEF( x ) __cdecl
|
||||||
|
#elif defined( __WATCOMC__ ) && __WATCOMC__ >= 1240
|
||||||
|
#define FT_COMPARE_DEF( x ) FT_CALLBACK_DEF( x ) __watcall
|
||||||
|
#else
|
||||||
|
#define FT_COMPARE_DEF( x ) FT_CALLBACK_DEF( x )
|
||||||
|
#endif
|
||||||
|
|
||||||
#define FT_BASE_CALLBACK( x ) FT_FUNCTION_DECLARATION( x )
|
#define FT_BASE_CALLBACK( x ) FT_FUNCTION_DECLARATION( x )
|
||||||
#define FT_BASE_CALLBACK_DEF( x ) FT_FUNCTION_DEFINITION( x )
|
#define FT_BASE_CALLBACK_DEF( x ) FT_FUNCTION_DEFINITION( x )
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Arithmetic computations (specification).
|
* Arithmetic computations (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -359,8 +359,8 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER
|
#ifndef FT_CONFIG_OPTION_NO_ASSEMBLER
|
||||||
|
|
||||||
#if defined( __GNUC__ ) && \
|
#if defined( __clang__ ) || ( defined( __GNUC__ ) && \
|
||||||
( __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 4 ) )
|
( __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 4 ) ) )
|
||||||
|
|
||||||
#if FT_SIZEOF_INT == 4
|
#if FT_SIZEOF_INT == 4
|
||||||
|
|
||||||
@ -370,12 +370,25 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
#define FT_MSB( x ) ( 31 - __builtin_clzl( x ) )
|
#define FT_MSB( x ) ( 31 - __builtin_clzl( x ) )
|
||||||
|
|
||||||
#endif /* __GNUC__ */
|
#endif
|
||||||
|
|
||||||
|
#elif defined( _MSC_VER ) && _MSC_VER >= 1400
|
||||||
|
|
||||||
#elif defined( _MSC_VER ) && ( _MSC_VER >= 1400 )
|
#if defined( _WIN32_WCE )
|
||||||
|
|
||||||
#if FT_SIZEOF_INT == 4
|
#include <cmnintrin.h>
|
||||||
|
#pragma intrinsic( _CountLeadingZeros )
|
||||||
|
|
||||||
|
#define FT_MSB( x ) ( 31 - _CountLeadingZeros( x ) )
|
||||||
|
|
||||||
|
#elif defined( _M_ARM64 ) || defined( _M_ARM )
|
||||||
|
|
||||||
|
#include <intrin.h>
|
||||||
|
#pragma intrinsic( _CountLeadingZeros )
|
||||||
|
|
||||||
|
#define FT_MSB( x ) ( 31 - _CountLeadingZeros( x ) )
|
||||||
|
|
||||||
|
#elif defined( _M_IX86 ) || defined( _M_AMD64 ) || defined( _M_IA64 )
|
||||||
|
|
||||||
#include <intrin.h>
|
#include <intrin.h>
|
||||||
#pragma intrinsic( _BitScanReverse )
|
#pragma intrinsic( _BitScanReverse )
|
||||||
@ -391,15 +404,40 @@ FT_BEGIN_HEADER
|
|||||||
return (FT_Int32)where;
|
return (FT_Int32)where;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define FT_MSB( x ) ( FT_MSB_i386( x ) )
|
#define FT_MSB( x ) FT_MSB_i386( x )
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _MSC_VER */
|
#elif defined( __WATCOMC__ ) && defined( __386__ )
|
||||||
|
|
||||||
|
extern __inline FT_Int32
|
||||||
|
FT_MSB_i386( FT_UInt32 x );
|
||||||
|
|
||||||
|
#pragma aux FT_MSB_i386 = \
|
||||||
|
"bsr eax, eax" \
|
||||||
|
parm [eax] nomemory \
|
||||||
|
value [eax] \
|
||||||
|
modify exact [eax] nomemory;
|
||||||
|
|
||||||
|
#define FT_MSB( x ) FT_MSB_i386( x )
|
||||||
|
|
||||||
|
#elif defined( __DECC ) || defined( __DECCXX )
|
||||||
|
|
||||||
|
#include <builtins.h>
|
||||||
|
|
||||||
|
#define FT_MSB( x ) (FT_Int)( 63 - _leadz( x ) )
|
||||||
|
|
||||||
|
#elif defined( _CRAYC )
|
||||||
|
|
||||||
|
#include <intrinsics.h>
|
||||||
|
|
||||||
|
#define FT_MSB( x ) (FT_Int)( 31 - _leadz32( x ) )
|
||||||
|
|
||||||
|
#endif /* FT_MSB macro definitions */
|
||||||
|
|
||||||
#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */
|
#endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */
|
||||||
|
|
||||||
|
|
||||||
#ifndef FT_MSB
|
#ifndef FT_MSB
|
||||||
|
|
||||||
FT_BASE( FT_Int )
|
FT_BASE( FT_Int )
|
||||||
@ -487,7 +525,7 @@ FT_BEGIN_HEADER
|
|||||||
#define NEG_INT32( a ) \
|
#define NEG_INT32( a ) \
|
||||||
(FT_Int32)( (FT_UInt32)0 - (FT_UInt32)(a) )
|
(FT_Int32)( (FT_UInt32)0 - (FT_UInt32)(a) )
|
||||||
|
|
||||||
#ifdef FT_LONG64
|
#ifdef FT_INT64
|
||||||
|
|
||||||
#define ADD_INT64( a, b ) \
|
#define ADD_INT64( a, b ) \
|
||||||
(FT_Int64)( (FT_UInt64)(a) + (FT_UInt64)(b) )
|
(FT_Int64)( (FT_UInt64)(a) + (FT_UInt64)(b) )
|
||||||
@ -498,7 +536,7 @@ FT_BEGIN_HEADER
|
|||||||
#define NEG_INT64( a ) \
|
#define NEG_INT64( a ) \
|
||||||
(FT_Int64)( (FT_UInt64)0 - (FT_UInt64)(a) )
|
(FT_Int64)( (FT_UInt64)0 - (FT_UInt64)(a) )
|
||||||
|
|
||||||
#endif /* FT_LONG64 */
|
#endif /* FT_INT64 */
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
FT_END_HEADER
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Debugging and logging component (specification).
|
* Debugging and logging component (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -31,9 +31,24 @@
|
|||||||
|
|
||||||
#include "compiler-macros.h"
|
#include "compiler-macros.h"
|
||||||
|
|
||||||
|
#ifdef FT_DEBUG_LOGGING
|
||||||
|
#define DLG_STATIC
|
||||||
|
#include <dlg/output.h>
|
||||||
|
#include <dlg/dlg.h>
|
||||||
|
|
||||||
|
#include <freetype/ftlogging.h>
|
||||||
|
#endif /* FT_DEBUG_LOGGING */
|
||||||
|
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
FT_BEGIN_HEADER
|
||||||
|
|
||||||
|
/* force the definition of FT_DEBUG_LEVEL_TRACE if FT_DEBUG_LOGGING is */
|
||||||
|
/* already defined. */
|
||||||
|
/* */
|
||||||
|
#ifdef FT_DEBUG_LOGGING
|
||||||
|
#undef FT_DEBUG_LEVEL_TRACE
|
||||||
|
#define FT_DEBUG_LEVEL_TRACE
|
||||||
|
#endif
|
||||||
|
|
||||||
/* force the definition of FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE */
|
/* force the definition of FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE */
|
||||||
/* is already defined; this simplifies the following #ifdefs */
|
/* is already defined; this simplifies the following #ifdefs */
|
||||||
@ -82,20 +97,66 @@ FT_BEGIN_HEADER
|
|||||||
* Each component must define the macro FT_COMPONENT to a valid FT_Trace
|
* Each component must define the macro FT_COMPONENT to a valid FT_Trace
|
||||||
* value before using any TRACE macro.
|
* value before using any TRACE macro.
|
||||||
*
|
*
|
||||||
|
* To get consistent logging output, there should be no newline character
|
||||||
|
* (i.e., '\n') or a single trailing one in the message string of
|
||||||
|
* `FT_TRACEx` and `FT_ERROR`.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************
|
||||||
|
*
|
||||||
|
* If FT_DEBUG_LOGGING is enabled, tracing messages are sent to dlg's API.
|
||||||
|
* If FT_DEBUG_LOGGING is disabled, tracing messages are sent to
|
||||||
|
* `FT_Message` (defined in ftdebug.c).
|
||||||
|
*/
|
||||||
|
#ifdef FT_DEBUG_LOGGING
|
||||||
|
|
||||||
|
/* we need two macros to convert the names of `FT_COMPONENT` to a string */
|
||||||
|
#define FT_LOGGING_TAG( x ) FT_LOGGING_TAG_( x )
|
||||||
|
#define FT_LOGGING_TAG_( x ) #x
|
||||||
|
|
||||||
|
/* we need two macros to convert the component and the trace level */
|
||||||
|
/* to a string that combines them */
|
||||||
|
#define FT_LOGGING_TAGX( x, y ) FT_LOGGING_TAGX_( x, y )
|
||||||
|
#define FT_LOGGING_TAGX_( x, y ) #x ":" #y
|
||||||
|
|
||||||
|
|
||||||
|
#define FT_LOG( level, varformat ) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
const char* dlg_tag = FT_LOGGING_TAGX( FT_COMPONENT, level ); \
|
||||||
|
\
|
||||||
|
\
|
||||||
|
ft_add_tag( dlg_tag ); \
|
||||||
|
if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] >= level ) \
|
||||||
|
{ \
|
||||||
|
if ( custom_output_handler != NULL ) \
|
||||||
|
FT_Logging_Callback varformat; \
|
||||||
|
else \
|
||||||
|
dlg_trace varformat; \
|
||||||
|
} \
|
||||||
|
ft_remove_tag( dlg_tag ); \
|
||||||
|
} while( 0 )
|
||||||
|
|
||||||
|
#else /* !FT_DEBUG_LOGGING */
|
||||||
|
|
||||||
|
#define FT_LOG( level, varformat ) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] >= level ) \
|
||||||
|
FT_Message varformat; \
|
||||||
|
} while ( 0 )
|
||||||
|
|
||||||
|
#endif /* !FT_DEBUG_LOGGING */
|
||||||
|
|
||||||
|
|
||||||
#ifdef FT_DEBUG_LEVEL_TRACE
|
#ifdef FT_DEBUG_LEVEL_TRACE
|
||||||
|
|
||||||
/* we need two macros here to make cpp expand `FT_COMPONENT' */
|
/* we need two macros here to make cpp expand `FT_COMPONENT' */
|
||||||
#define FT_TRACE_COMP( x ) FT_TRACE_COMP_( x )
|
#define FT_TRACE_COMP( x ) FT_TRACE_COMP_( x )
|
||||||
#define FT_TRACE_COMP_( x ) trace_ ## x
|
#define FT_TRACE_COMP_( x ) trace_ ## x
|
||||||
|
|
||||||
#define FT_TRACE( level, varformat ) \
|
#define FT_TRACE( level, varformat ) FT_LOG( level, varformat )
|
||||||
do \
|
|
||||||
{ \
|
|
||||||
if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] >= level ) \
|
|
||||||
FT_Message varformat; \
|
|
||||||
} while ( 0 )
|
|
||||||
|
|
||||||
#else /* !FT_DEBUG_LEVEL_TRACE */
|
#else /* !FT_DEBUG_LEVEL_TRACE */
|
||||||
|
|
||||||
@ -204,7 +265,32 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
#ifdef FT_DEBUG_LEVEL_ERROR
|
#ifdef FT_DEBUG_LEVEL_ERROR
|
||||||
|
|
||||||
#define FT_ERROR( varformat ) FT_Message varformat
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* If FT_DEBUG_LOGGING is enabled, error messages are sent to dlg's API.
|
||||||
|
* If FT_DEBUG_LOGGING is disabled, error messages are sent to `FT_Message`
|
||||||
|
* (defined in ftdebug.c).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#ifdef FT_DEBUG_LOGGING
|
||||||
|
|
||||||
|
#define FT_ERROR( varformat ) \
|
||||||
|
do \
|
||||||
|
{ \
|
||||||
|
const char* dlg_tag = FT_LOGGING_TAG( FT_COMPONENT ); \
|
||||||
|
\
|
||||||
|
\
|
||||||
|
ft_add_tag( dlg_tag ); \
|
||||||
|
dlg_trace varformat; \
|
||||||
|
ft_remove_tag( dlg_tag ); \
|
||||||
|
} while ( 0 )
|
||||||
|
|
||||||
|
#else /* !FT_DEBUG_LOGGING */
|
||||||
|
|
||||||
|
#define FT_ERROR( varformat ) FT_Message varformat
|
||||||
|
|
||||||
|
#endif /* !FT_DEBUG_LOGGING */
|
||||||
|
|
||||||
|
|
||||||
#else /* !FT_DEBUG_LEVEL_ERROR */
|
#else /* !FT_DEBUG_LEVEL_ERROR */
|
||||||
|
|
||||||
@ -277,6 +363,77 @@ FT_BEGIN_HEADER
|
|||||||
FT_BASE( void )
|
FT_BASE( void )
|
||||||
ft_debug_init( void );
|
ft_debug_init( void );
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef FT_DEBUG_LOGGING
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* 'dlg' uses output handlers to control how and where log messages are
|
||||||
|
* printed. Therefore we need to define a default output handler for
|
||||||
|
* FreeType.
|
||||||
|
*/
|
||||||
|
FT_BASE( void )
|
||||||
|
ft_log_handler( const struct dlg_origin* origin,
|
||||||
|
const char* string,
|
||||||
|
void* data );
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* 1. `ft_default_log_handler` stores the function pointer that is used
|
||||||
|
* internally by FreeType to print logs to a file.
|
||||||
|
*
|
||||||
|
* 2. `custom_output_handler` stores the function pointer to the callback
|
||||||
|
* function provided by the user.
|
||||||
|
*
|
||||||
|
* It is defined in `ftdebug.c`.
|
||||||
|
*/
|
||||||
|
extern dlg_handler ft_default_log_handler;
|
||||||
|
extern FT_Custom_Log_Handler custom_output_handler;
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* If FT_DEBUG_LOGGING macro is enabled, FreeType needs to initialize and
|
||||||
|
* un-initialize `FILE*`.
|
||||||
|
*
|
||||||
|
* These functions are defined in `ftdebug.c`.
|
||||||
|
*/
|
||||||
|
FT_BASE( void )
|
||||||
|
ft_logging_init( void );
|
||||||
|
|
||||||
|
FT_BASE( void )
|
||||||
|
ft_logging_deinit( void );
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* For printing the name of `FT_COMPONENT` along with the actual log we
|
||||||
|
* need to add a tag with the name of `FT_COMPONENT`.
|
||||||
|
*
|
||||||
|
* These functions are defined in `ftdebug.c`.
|
||||||
|
*/
|
||||||
|
FT_BASE( void )
|
||||||
|
ft_add_tag( const char* tag );
|
||||||
|
|
||||||
|
FT_BASE( void )
|
||||||
|
ft_remove_tag( const char* tag );
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* A function to print log data using a custom callback logging function
|
||||||
|
* (which is set using `FT_Set_Log_Handler`).
|
||||||
|
*
|
||||||
|
* This function is defined in `ftdebug.c`.
|
||||||
|
*/
|
||||||
|
FT_BASE( void )
|
||||||
|
FT_Logging_Callback( const char* fmt,
|
||||||
|
... );
|
||||||
|
|
||||||
|
#endif /* FT_DEBUG_LOGGING */
|
||||||
|
|
||||||
|
|
||||||
FT_END_HEADER
|
FT_END_HEADER
|
||||||
|
|
||||||
#endif /* FTDEBUG_H_ */
|
#endif /* FTDEBUG_H_ */
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType internal font driver interface (specification).
|
* FreeType internal font driver interface (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* The FreeType glyph loader (specification).
|
* The FreeType glyph loader (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2020 by
|
* Copyright (C) 2002-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg
|
* David Turner, Robert Wilhelm, and Werner Lemberg
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include <freetype/freetype.h>
|
#include <freetype/freetype.h>
|
||||||
|
|
||||||
|
#include "compiler-macros.h"
|
||||||
|
|
||||||
FT_BEGIN_HEADER
|
FT_BEGIN_HEADER
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* The FreeType memory management macros (specification).
|
* The FreeType memory management macros (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg
|
* David Turner, Robert Wilhelm, and Werner Lemberg
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -344,14 +344,13 @@ extern "C++"
|
|||||||
#define FT_RENEW_ARRAY( ptr, curcnt, newcnt ) \
|
#define FT_RENEW_ARRAY( ptr, curcnt, newcnt ) \
|
||||||
FT_MEM_SET_ERROR( FT_MEM_RENEW_ARRAY( ptr, curcnt, newcnt ) )
|
FT_MEM_SET_ERROR( FT_MEM_RENEW_ARRAY( ptr, curcnt, newcnt ) )
|
||||||
|
|
||||||
#define FT_QNEW( ptr ) \
|
#define FT_QNEW( ptr ) FT_MEM_SET_ERROR( FT_MEM_QNEW( ptr ) )
|
||||||
FT_MEM_SET_ERROR( FT_MEM_QNEW( ptr ) )
|
|
||||||
|
|
||||||
#define FT_QNEW_ARRAY( ptr, count ) \
|
#define FT_QNEW_ARRAY( ptr, count ) \
|
||||||
FT_MEM_SET_ERROR( FT_MEM_NEW_ARRAY( ptr, count ) )
|
FT_MEM_SET_ERROR( FT_MEM_QNEW_ARRAY( ptr, count ) )
|
||||||
|
|
||||||
#define FT_QRENEW_ARRAY( ptr, curcnt, newcnt ) \
|
#define FT_QRENEW_ARRAY( ptr, curcnt, newcnt ) \
|
||||||
FT_MEM_SET_ERROR( FT_MEM_RENEW_ARRAY( ptr, curcnt, newcnt ) )
|
FT_MEM_SET_ERROR( FT_MEM_QRENEW_ARRAY( ptr, curcnt, newcnt ) )
|
||||||
|
|
||||||
|
|
||||||
FT_BASE( FT_Pointer )
|
FT_BASE( FT_Pointer )
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* The FreeType private base classes (specification).
|
* The FreeType private base classes (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -418,7 +418,8 @@ FT_BEGIN_HEADER
|
|||||||
* initializing the glyph slot.
|
* initializing the glyph slot.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define FT_GLYPH_OWN_BITMAP 0x1U
|
#define FT_GLYPH_OWN_BITMAP 0x1U
|
||||||
|
#define FT_GLYPH_OWN_GZIP_SVG 0x2U
|
||||||
|
|
||||||
typedef struct FT_Slot_InternalRec_
|
typedef struct FT_Slot_InternalRec_
|
||||||
{
|
{
|
||||||
@ -673,7 +674,7 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
|
|
||||||
/* Set the metrics according to a size request. */
|
/* Set the metrics according to a size request. */
|
||||||
FT_BASE( void )
|
FT_BASE( FT_Error )
|
||||||
FT_Request_Metrics( FT_Face face,
|
FT_Request_Metrics( FT_Face face,
|
||||||
FT_Size_Request req );
|
FT_Size_Request req );
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Get and set properties of PostScript drivers (specification).
|
* Get and set properties of PostScript drivers (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2017-2020 by
|
* Copyright (C) 2017-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Embedded resource forks accessor (specification).
|
* Embedded resource forks accessor (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2004-2020 by
|
* Copyright (C) 2004-2022 by
|
||||||
* Masatake YAMATO and Redhat K.K.
|
* Masatake YAMATO and Redhat K.K.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* The FreeType services (specification only).
|
* The FreeType services (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2003-2020 by
|
* Copyright (C) 2003-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Stream handling (specification).
|
* Stream handling (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -196,9 +196,9 @@ FT_BEGIN_HEADER
|
|||||||
FT_BYTE_U32( p, 2, 8 ) | \
|
FT_BYTE_U32( p, 2, 8 ) | \
|
||||||
FT_BYTE_U32( p, 3, 0 ) )
|
FT_BYTE_U32( p, 3, 0 ) )
|
||||||
|
|
||||||
#define FT_PEEK_OFF3( p ) FT_INT32( FT_BYTE_U32( p, 0, 16 ) | \
|
#define FT_PEEK_OFF3( p ) ( FT_INT32( FT_BYTE_U32( p, 0, 24 ) | \
|
||||||
FT_BYTE_U32( p, 1, 8 ) | \
|
FT_BYTE_U32( p, 1, 16 ) | \
|
||||||
FT_BYTE_U32( p, 2, 0 ) )
|
FT_BYTE_U32( p, 2, 8 ) ) >> 8 )
|
||||||
|
|
||||||
#define FT_PEEK_UOFF3( p ) FT_UINT32( FT_BYTE_U32( p, 0, 16 ) | \
|
#define FT_PEEK_UOFF3( p ) FT_UINT32( FT_BYTE_U32( p, 0, 16 ) | \
|
||||||
FT_BYTE_U32( p, 1, 8 ) | \
|
FT_BYTE_U32( p, 1, 8 ) | \
|
||||||
@ -220,9 +220,9 @@ FT_BEGIN_HEADER
|
|||||||
FT_BYTE_U32( p, 1, 8 ) | \
|
FT_BYTE_U32( p, 1, 8 ) | \
|
||||||
FT_BYTE_U32( p, 0, 0 ) )
|
FT_BYTE_U32( p, 0, 0 ) )
|
||||||
|
|
||||||
#define FT_PEEK_OFF3_LE( p ) FT_INT32( FT_BYTE_U32( p, 2, 16 ) | \
|
#define FT_PEEK_OFF3_LE( p ) ( FT_INT32( FT_BYTE_U32( p, 2, 24 ) | \
|
||||||
FT_BYTE_U32( p, 1, 8 ) | \
|
FT_BYTE_U32( p, 1, 16 ) | \
|
||||||
FT_BYTE_U32( p, 0, 0 ) )
|
FT_BYTE_U32( p, 0, 8 ) ) >> 8 )
|
||||||
|
|
||||||
#define FT_PEEK_UOFF3_LE( p ) FT_UINT32( FT_BYTE_U32( p, 2, 16 ) | \
|
#define FT_PEEK_UOFF3_LE( p ) FT_UINT32( FT_BYTE_U32( p, 2, 16 ) | \
|
||||||
FT_BYTE_U32( p, 1, 8 ) | \
|
FT_BYTE_U32( p, 1, 8 ) | \
|
||||||
@ -305,11 +305,10 @@ FT_BEGIN_HEADER
|
|||||||
#else
|
#else
|
||||||
#define FT_GET_MACRO( func, type ) ( (type)func( stream ) )
|
#define FT_GET_MACRO( func, type ) ( (type)func( stream ) )
|
||||||
|
|
||||||
#define FT_GET_CHAR() FT_GET_MACRO( FT_Stream_GetChar, FT_Char )
|
#define FT_GET_CHAR() FT_GET_MACRO( FT_Stream_GetByte, FT_Char )
|
||||||
#define FT_GET_BYTE() FT_GET_MACRO( FT_Stream_GetChar, FT_Byte )
|
#define FT_GET_BYTE() FT_GET_MACRO( FT_Stream_GetByte, FT_Byte )
|
||||||
#define FT_GET_SHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_Short )
|
#define FT_GET_SHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_Short )
|
||||||
#define FT_GET_USHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_UShort )
|
#define FT_GET_USHORT() FT_GET_MACRO( FT_Stream_GetUShort, FT_UShort )
|
||||||
#define FT_GET_OFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_Long )
|
|
||||||
#define FT_GET_UOFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_ULong )
|
#define FT_GET_UOFF3() FT_GET_MACRO( FT_Stream_GetUOffset, FT_ULong )
|
||||||
#define FT_GET_LONG() FT_GET_MACRO( FT_Stream_GetULong, FT_Long )
|
#define FT_GET_LONG() FT_GET_MACRO( FT_Stream_GetULong, FT_Long )
|
||||||
#define FT_GET_ULONG() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong )
|
#define FT_GET_ULONG() FT_GET_MACRO( FT_Stream_GetULong, FT_ULong )
|
||||||
@ -333,11 +332,10 @@ FT_BEGIN_HEADER
|
|||||||
* `FT_STREAM_POS'. They use the full machinery to check whether a read is
|
* `FT_STREAM_POS'. They use the full machinery to check whether a read is
|
||||||
* valid.
|
* valid.
|
||||||
*/
|
*/
|
||||||
#define FT_READ_BYTE( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Byte, var )
|
#define FT_READ_BYTE( var ) FT_READ_MACRO( FT_Stream_ReadByte, FT_Byte, var )
|
||||||
#define FT_READ_CHAR( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Char, var )
|
#define FT_READ_CHAR( var ) FT_READ_MACRO( FT_Stream_ReadByte, FT_Char, var )
|
||||||
#define FT_READ_SHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_Short, var )
|
#define FT_READ_SHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_Short, var )
|
||||||
#define FT_READ_USHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_UShort, var )
|
#define FT_READ_USHORT( var ) FT_READ_MACRO( FT_Stream_ReadUShort, FT_UShort, var )
|
||||||
#define FT_READ_OFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_Long, var )
|
|
||||||
#define FT_READ_UOFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_ULong, var )
|
#define FT_READ_UOFF3( var ) FT_READ_MACRO( FT_Stream_ReadUOffset, FT_ULong, var )
|
||||||
#define FT_READ_LONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_Long, var )
|
#define FT_READ_LONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_Long, var )
|
||||||
#define FT_READ_ULONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_ULong, var )
|
#define FT_READ_ULONG( var ) FT_READ_MACRO( FT_Stream_ReadULong, FT_ULong, var )
|
||||||
@ -457,8 +455,8 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
|
|
||||||
/* read a byte from an entered frame */
|
/* read a byte from an entered frame */
|
||||||
FT_BASE( FT_Char )
|
FT_BASE( FT_Byte )
|
||||||
FT_Stream_GetChar( FT_Stream stream );
|
FT_Stream_GetByte( FT_Stream stream );
|
||||||
|
|
||||||
/* read a 16-bit big-endian unsigned integer from an entered frame */
|
/* read a 16-bit big-endian unsigned integer from an entered frame */
|
||||||
FT_BASE( FT_UShort )
|
FT_BASE( FT_UShort )
|
||||||
@ -482,8 +480,8 @@ FT_BEGIN_HEADER
|
|||||||
|
|
||||||
|
|
||||||
/* read a byte from a stream */
|
/* read a byte from a stream */
|
||||||
FT_BASE( FT_Char )
|
FT_BASE( FT_Byte )
|
||||||
FT_Stream_ReadChar( FT_Stream stream,
|
FT_Stream_ReadByte( FT_Stream stream,
|
||||||
FT_Error* error );
|
FT_Error* error );
|
||||||
|
|
||||||
/* read a 16-bit big-endian unsigned integer from a stream */
|
/* read a 16-bit big-endian unsigned integer from a stream */
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Tracing handling (specification only).
|
* Tracing handling (specification only).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002-2020 by
|
* Copyright (C) 2002-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
@ -18,6 +18,11 @@
|
|||||||
|
|
||||||
/* definitions of trace levels for FreeType 2 */
|
/* definitions of trace levels for FreeType 2 */
|
||||||
|
|
||||||
|
/* the maximum string length (if the argument to `FT_TRACE_DEF` */
|
||||||
|
/* gets used as a string) plus one charachter for ':' plus */
|
||||||
|
/* another one for the trace level */
|
||||||
|
#define FT_MAX_TRACE_LEVEL_LENGTH (9 + 1 + 1)
|
||||||
|
|
||||||
/* the first level must always be `trace_any' */
|
/* the first level must always be `trace_any' */
|
||||||
FT_TRACE_DEF( any )
|
FT_TRACE_DEF( any )
|
||||||
|
|
||||||
@ -38,12 +43,17 @@ FT_TRACE_DEF( checksum ) /* bitmap checksum (ftobjs.c) */
|
|||||||
FT_TRACE_DEF( mm ) /* MM interface (ftmm.c) */
|
FT_TRACE_DEF( mm ) /* MM interface (ftmm.c) */
|
||||||
FT_TRACE_DEF( psprops ) /* PS driver properties (ftpsprop.c) */
|
FT_TRACE_DEF( psprops ) /* PS driver properties (ftpsprop.c) */
|
||||||
FT_TRACE_DEF( raccess ) /* resource fork accessor (ftrfork.c) */
|
FT_TRACE_DEF( raccess ) /* resource fork accessor (ftrfork.c) */
|
||||||
FT_TRACE_DEF( raster ) /* monochrome rasterizer (ftraster.c) */
|
|
||||||
FT_TRACE_DEF( smooth ) /* anti-aliasing raster (ftgrays.c) */
|
|
||||||
FT_TRACE_DEF( synth ) /* bold/slant synthesizer (ftsynth.c) */
|
FT_TRACE_DEF( synth ) /* bold/slant synthesizer (ftsynth.c) */
|
||||||
|
|
||||||
/* Cache sub-system */
|
/* rasterizers */
|
||||||
FT_TRACE_DEF( cache ) /* cache sub-system (ftcache.c, etc.) */
|
FT_TRACE_DEF( raster ) /* monochrome rasterizer (ftraster.c) */
|
||||||
|
FT_TRACE_DEF( smooth ) /* anti-aliasing raster (ftgrays.c) */
|
||||||
|
|
||||||
|
/* ot-svg module */
|
||||||
|
FT_TRACE_DEF( otsvg ) /* OT-SVG renderer (ftsvg.c) */
|
||||||
|
|
||||||
|
/* cache sub-system */
|
||||||
|
FT_TRACE_DEF( cache ) /* cache sub-system (ftcache.c, etc.) */
|
||||||
|
|
||||||
/* SFNT driver components */
|
/* SFNT driver components */
|
||||||
FT_TRACE_DEF( sfdriver ) /* SFNT font driver (sfdriver.c) */
|
FT_TRACE_DEF( sfdriver ) /* SFNT font driver (sfdriver.c) */
|
||||||
@ -54,6 +64,7 @@ FT_TRACE_DEF( ttbdf ) /* TrueType embedded BDF (ttbdf.c) */
|
|||||||
FT_TRACE_DEF( ttcmap ) /* charmap handler (ttcmap.c) */
|
FT_TRACE_DEF( ttcmap ) /* charmap handler (ttcmap.c) */
|
||||||
FT_TRACE_DEF( ttcolr ) /* glyph layer table (ttcolr.c) */
|
FT_TRACE_DEF( ttcolr ) /* glyph layer table (ttcolr.c) */
|
||||||
FT_TRACE_DEF( ttcpal ) /* color palette table (ttcpal.c) */
|
FT_TRACE_DEF( ttcpal ) /* color palette table (ttcpal.c) */
|
||||||
|
FT_TRACE_DEF( ttsvg ) /* OpenType SVG table (ttsvg.c) */
|
||||||
FT_TRACE_DEF( ttkern ) /* kerning handler (ttkern.c) */
|
FT_TRACE_DEF( ttkern ) /* kerning handler (ttkern.c) */
|
||||||
FT_TRACE_DEF( ttload ) /* basic TrueType tables (ttload.c) */
|
FT_TRACE_DEF( ttload ) /* basic TrueType tables (ttload.c) */
|
||||||
FT_TRACE_DEF( ttmtx ) /* metrics-related tables (ttmtx.c) */
|
FT_TRACE_DEF( ttmtx ) /* metrics-related tables (ttmtx.c) */
|
||||||
@ -77,6 +88,7 @@ FT_TRACE_DEF( t1objs )
|
|||||||
FT_TRACE_DEF( t1parse )
|
FT_TRACE_DEF( t1parse )
|
||||||
|
|
||||||
/* PostScript helper module `psaux' */
|
/* PostScript helper module `psaux' */
|
||||||
|
FT_TRACE_DEF( afmparse )
|
||||||
FT_TRACE_DEF( cffdecode )
|
FT_TRACE_DEF( cffdecode )
|
||||||
FT_TRACE_DEF( psconv )
|
FT_TRACE_DEF( psconv )
|
||||||
FT_TRACE_DEF( psobjs )
|
FT_TRACE_DEF( psobjs )
|
||||||
@ -151,8 +163,10 @@ FT_TRACE_DEF( afglobal )
|
|||||||
FT_TRACE_DEF( afhints )
|
FT_TRACE_DEF( afhints )
|
||||||
FT_TRACE_DEF( afmodule )
|
FT_TRACE_DEF( afmodule )
|
||||||
FT_TRACE_DEF( aflatin )
|
FT_TRACE_DEF( aflatin )
|
||||||
FT_TRACE_DEF( aflatin2 )
|
|
||||||
FT_TRACE_DEF( afshaper )
|
FT_TRACE_DEF( afshaper )
|
||||||
FT_TRACE_DEF( afwarp )
|
|
||||||
|
/* SDF components */
|
||||||
|
FT_TRACE_DEF( sdf ) /* signed distance raster for outlines (ftsdf.c) */
|
||||||
|
FT_TRACE_DEF( bsdf ) /* signed distance raster for bitmaps (ftbsdf.c) */
|
||||||
|
|
||||||
/* END */
|
/* END */
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* FreeType validation support (specification).
|
* FreeType validation support (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2004-2020 by
|
* Copyright (C) 2004-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
* Auxiliary functions and data structures related to PostScript fonts
|
* Auxiliary functions and data structures related to PostScript fonts
|
||||||
* (specification).
|
* (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 1996-2020 by
|
* Copyright (C) 1996-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
* recorders (specification only). These are used to support native
|
* recorders (specification only). These are used to support native
|
||||||
* T1/T2 hints in the 'type1', 'cid', and 'cff' font drivers.
|
* T1/T2 hints in the 'type1', 'cid', and 'cff' font drivers.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2001-2020 by
|
* Copyright (C) 2001-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* The FreeType BDF services (specification).
|
* The FreeType BDF services (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2003-2020 by
|
* Copyright (C) 2003-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* The FreeType CFF tables loader service (specification).
|
* The FreeType CFF tables loader service (specification).
|
||||||
*
|
*
|
||||||
* Copyright (C) 2017-2020 by
|
* Copyright (C) 2017-2022 by
|
||||||
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
* David Turner, Robert Wilhelm, and Werner Lemberg.
|
||||||
*
|
*
|
||||||
* This file is part of the FreeType project, and may only be used,
|
* This file is part of the FreeType project, and may only be used,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user