├── .github └── workflows │ ├── msbuild.yml │ └── py_ext_main.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── NOTICE.txt ├── README.md ├── SECURITY.md ├── SUPPORT.md ├── doc ├── Extending_Typeman_Talk │ ├── Extending Typeman Talk.docx │ └── Extending_Typeman_Talk.md ├── Res_Hints_Implementation_Guide │ ├── Res hints implementation guide.docx │ └── ResHints_Implementation_Guide.md ├── VTT Language Reference │ ├── doc-print.css │ ├── doc.css │ ├── vttdoc-images │ │ ├── vttlang-1.png │ │ ├── vttlang-2.png │ │ ├── vttlang-3.png │ │ ├── vttlang-4.png │ │ ├── vttlang-5.png │ │ ├── vttlang-GRAB_HERE_IN_X.png │ │ ├── vttlang-ISTROKE-1.png │ │ ├── vttlang-ISTROKE-2.png │ │ ├── vttlang-SERIF.png │ │ ├── vttlang-STROKE.png │ │ ├── vttlang-VACUFORMLIMIT.png │ │ ├── vttlang-XROUND.png │ │ ├── vttlang-X_DOUBLE_GRID.png │ │ ├── vttlang-X_DOWN_TO_GRID.png │ │ ├── vttlang-X_HALF_GRID.png │ │ ├── vttlang-X_UP_TO_GRID.png │ │ ├── vttlang-YROUND.png │ │ └── vttlang-Y_HALF_GRID.png │ ├── vttlang.html │ └── vttlang.md ├── VTT_Control_Program │ ├── VTT Control Program.docx │ └── VTTControlProgram.md └── help │ ├── Index.hhk │ ├── README.md │ ├── css │ └── styles.css │ ├── html │ ├── 01-01-IntroVTT.htm │ ├── 01-02-Tool4Users.htm │ ├── 01-03-OtherResources.htm │ ├── 02-01-SettingPrefs.htm │ ├── 02-02-01-PreparingFont.htm │ ├── 02-02-OpenCloseFont.htm │ ├── 02-03-SetDevResolution.htm │ ├── 02-04-CompilingResults.htm │ ├── 02-05-Printing.htm │ ├── 02-06-GASP.htm │ ├── 02-07-MemoryReqts.htm │ ├── 02-08-Saving.htm │ ├── 02-09-Prep4Ship.htm │ ├── 03-00-MainWindow.htm │ ├── 03-01-Toolbar.htm │ ├── 03-02-MovingAround.htm │ ├── 03-02-Resizing.htm │ ├── 03-04-ChgPointSize.htm │ ├── 03-05-DiffGlyph.htm │ ├── 03-06-Measuring.htm │ ├── 03-07-00-OtherWindows.htm │ ├── 03-07-01-GlyphWindow.htm │ ├── 03-07-02-SnapShotWindow.htm │ ├── 04-01-00-HintingBasics.htm │ ├── 04-01-01-00-HintingOverview.htm │ ├── 04-01-01-01-HintingWkflow.htm │ ├── 04-01-01-02-HintingStrategies.htm │ ├── 04-01-01-03-VisualHinting.htm │ ├── 04-01-02-00-UsingCVT.htm │ ├── 04-01-02-01-ReadingCVT.htm │ ├── 04-01-02-02-SettingInitialCVT.htm │ ├── 04-01-02-03-HintingWithCVTVals.htm │ ├── 04-01-02-04-ChangingChrGrp.htm │ ├── 04-01-03-00-RefiningGlyphOutline.htm │ ├── 04-01-03-01-OnOffCurvePts.htm │ ├── 04-01-03-02-NumberingCPts.htm │ ├── 04-01-03-03-EditingMetrics.htm │ ├── 04-01-04-00-RoundingCPts.htm │ ├── 04-01-04-01-SixMethods.htm │ ├── 04-01-04-02-Ex1-Rounding.htm │ ├── 04-01-04-03-Ex2-Limitations.htm │ ├── 04-01-05-00-WorkingWithAnchors.htm │ ├── 04-01-05-01-AnchoringWithCVT.htm │ ├── 04-01-05-02-Example.htm │ ├── 04-01-05-03-FontErrorWindow.htm │ ├── 04-02-00-ControllingDistances.htm │ ├── 04-02-01-00-CreatingLinks.htm │ ├── 04-02-01-01-Ex1-CreatingLinks.htm │ ├── 04-02-01-02-Ex2-CreatingLinks.htm │ ├── 04-02-02-00-LinkingWithCVT.htm │ ├── 04-02-02-01-DistanceOrLink.htm │ ├── 04-02-02-02-ReviewCVTs.htm │ ├── 04-02-02-03-AssignCVTCategory.htm │ ├── 04-02-02-04-ChangingCVTVal.htm │ ├── 04-02-02-05-Example.htm │ ├── 04-02-03-ShiftingCPts.htm │ ├── 04-03-00-ControllingProportions.htm │ ├── 04-03-01-00-CreatingInterpolations.htm │ ├── 04-03-01-01-Ex1-InterVsLink.htm │ ├── 04-03-01-02-Ex2-AlignBowls.htm │ ├── 04-03-01-03-Ex3-AddSizes.htm │ ├── 04-04-01-00-HintingDiagonals.htm │ ├── 04-04-01-01-CreatingStrokes.htm │ ├── 04-04-01-02-AligningCPts.htm │ ├── 04-04-02-00-HintingItalics.htm │ ├── 04-04-02-01-SettingAngle.htm │ ├── 04-04-02-02-RoundCPtsItalics.htm │ ├── 05-00-RefiningPixelPatterns.htm │ ├── 05-01-PreparingMainWindow.htm │ ├── 05-02-CreatingException.htm │ ├── 05-03-Example.htm │ ├── 06-00-AdvancedHinting.htm │ ├── 06-01-00-TextBasedTables.htm │ ├── 06-01-01-EditingText.htm │ ├── 06-01-02-FindingText.htm │ ├── 06-01-03-GotoLine.htm │ ├── 06-01-04-ImportingText.htm │ ├── 06-01-05-ExportingText.htm │ ├── 06-01-06-ExportAll.htm │ ├── 06-01-07-00-ModifyingCVT.htm │ ├── 06-01-07-01-AddingNewCVT.htm │ ├── 06-01-07-02-ChangeCutIn.htm │ ├── 06-01-08-Composites.htm │ ├── 06-01-09-ImportingGlyph.htm │ ├── 06-01-10-VTTalkWindow.htm │ ├── 07-00-KeyboardShortcuts.htm │ ├── 08-00-Autohinting.htm │ ├── 08-01-Autohinting.htm │ ├── 08-02-EAAutohinting.htm │ ├── 08-03-CVTOnly.htm │ ├── 08-04-VariationFontEditingOverview.htm │ └── 08-05-VariationCVTEditing.htm │ ├── images │ ├── Anchors-HO-13ppem.gif │ ├── Anchors-HO-14ppem.gif │ ├── Anchors-HO-15ppem.gif │ ├── Anchors-O-CVT.gif │ ├── Anchors-O-NoCVT.gif │ ├── CVTlist.gif │ ├── CVTlist.png │ ├── Cursor-Align.png │ ├── Cursor-Angle.png │ ├── Cursor-Measure.png │ ├── Cursor-Navigate.png │ ├── Cursor-PtDelete.png │ ├── Cursor-PtInsert.png │ ├── Cursor-PtMove.png │ ├── Cursor-PtSwap.png │ ├── Cursor-Stroke.png │ ├── Cursor-XDelta.png │ ├── Cursor-XInterpolate.png │ ├── Cursor-XLink.png │ ├── Cursor-XMove.png │ ├── Cursor-XShift.png │ ├── Cursor-YDelta.png │ ├── Cursor-YInterpolate.png │ ├── Cursor-YLink.png │ ├── Cursor-YMove.png │ ├── Cursor-YShift.png │ ├── Cursor-ZoomIn.png │ ├── Cursor-ZoomOut.png │ ├── Defaultinstance.png │ ├── Display-Size-Other.png │ ├── DisplayOptions-Color.png │ ├── DisplayOptions-Glyph.png │ ├── DisplayOptions-Resolution.png │ ├── DisplayVariationView.png │ ├── EAAutohinter.png │ ├── Edit-CVTAttributes.png │ ├── Edit-GotoLine.png │ ├── Edit-Metrics.png │ ├── Edit.png │ ├── EditGasp.png │ ├── EditGotoGlyph.png │ ├── Error-CircularDependency.png │ ├── Error-Extrapolation.png │ ├── FileOpen.png │ ├── FileSaveAs.png │ ├── Find.png │ ├── Followgasp.png │ ├── Hinting-Outlines.gif │ ├── Hinting-Pixels.gif │ ├── IndicateCTAA.png │ ├── IndicateGS.png │ ├── Intermediate.png │ ├── LatinAuto.png │ ├── Main-MeasureTool.png │ ├── MainWindow.png │ ├── MeasureTool-Use.png │ ├── Minus.png │ ├── MinusOne.png │ ├── Options-Appearance.png │ ├── Options-File Locations.png │ ├── Options-Settings.png │ ├── Plusminusedit.png │ ├── Print.png │ ├── Rounding-1.gif │ ├── Rounding-2.gif │ ├── Rounding-3.gif │ ├── Rounding-4.gif │ ├── Rounding-5.gif │ ├── Rounding-6.gif │ ├── Rounding-X.gif │ ├── Rounding-Y.gif │ ├── RoundingEx1-1.gif │ ├── RoundingEx1-2.gif │ ├── RoundingEx1-3.gif │ ├── RoundingEx1-4.gif │ ├── RoundingEx1-5.gif │ ├── RoundingEx1-6.gif │ ├── RoundingEx2-1.gif │ ├── RoundingEx2-2.gif │ ├── RoundingEx2-3.gif │ ├── Steps.png │ ├── ToolBarPlusMinus.png │ ├── Toolbar-Align.png │ ├── Toolbar-Changer.png │ ├── Toolbar-Measure.png │ ├── Toolbar-Navigate.png │ ├── Toolbar-PtAngle.png │ ├── Toolbar-PtDelete.png │ ├── Toolbar-PtInsert.png │ ├── Toolbar-PtMove.png │ ├── Toolbar-PtSwap.png │ ├── Toolbar-SizeRun.png │ ├── Toolbar-Snapshot.png │ ├── Toolbar-Stroke.png │ ├── Toolbar-XDelta.png │ ├── Toolbar-XInter.png │ ├── Toolbar-XLink.png │ ├── Toolbar-XMove.png │ ├── Toolbar-XShift.png │ ├── Toolbar-YDelta.png │ ├── Toolbar-YInter.png │ ├── Toolbar-YLink.png │ ├── Toolbar-YMove.png │ ├── Toolbar-YShift.png │ ├── Toolbar-ZoomIn.png │ ├── Toolbar-ZoomOut.png │ ├── Toolbar.png │ ├── ToolbarButtons.psd │ ├── ToolsPrepare.png │ ├── ToolsPrepareConfirm.png │ ├── ToolsShip.png │ ├── VFMainWindow.png │ ├── VFWindowSetup.png │ ├── VarPlus.png │ ├── VariationView.png │ ├── bm100.gif │ ├── bm102.gif │ ├── bm103.gif │ ├── bm104.gif │ ├── bm105.gif │ ├── bm114.gif │ ├── bm115.gif │ ├── bm116.gif │ ├── bm117.gif │ ├── bm118.gif │ ├── bm119.gif │ ├── bm120.gif │ ├── bm121.gif │ ├── bm122.gif │ ├── bm123.gif │ ├── bm124.gif │ ├── bm125.gif │ ├── bm126.gif │ ├── bm127.gif │ ├── bm129.gif │ ├── bm130.gif │ ├── bm131.gif │ ├── bm132.gif │ ├── bm133.gif │ ├── bm134.gif │ ├── bm135.gif │ ├── bm138.gif │ ├── bm141.gif │ ├── bm144.gif │ ├── bm146.gif │ ├── bm147.gif │ ├── bm156.gif │ ├── bm157.gif │ ├── bm158.gif │ ├── bm159.gif │ ├── bm160.gif │ ├── bm3.gif │ ├── bm30.gif │ ├── bm31.gif │ ├── bm32.gif │ ├── bm33.gif │ ├── bm34.gif │ ├── bm35.gif │ ├── bm36.gif │ ├── bm37.gif │ ├── bm38.gif │ ├── bm39.gif │ ├── bm4.gif │ ├── bm40.gif │ ├── bm41.gif │ ├── bm42.gif │ ├── bm43.gif │ ├── bm44.gif │ ├── bm45.gif │ ├── bm46.gif │ ├── bm47.gif │ ├── bm48.gif │ ├── bm49.gif │ ├── bm5.gif │ ├── bm50.gif │ ├── bm51.gif │ ├── bm52.gif │ ├── bm53.gif │ ├── bm54.gif │ ├── bm55.gif │ ├── bm56.gif │ ├── bm57.gif │ ├── bm58.gif │ ├── bm59.gif │ ├── bm6.gif │ ├── bm60.gif │ ├── bm61.gif │ ├── bm62.gif │ ├── bm63.gif │ ├── bm64.gif │ ├── bm65.gif │ ├── bm66.gif │ ├── bm67.gif │ ├── bm68.gif │ ├── bm69.gif │ ├── bm7.gif │ ├── bm70.gif │ ├── bm71.gif │ ├── bm72.gif │ ├── bm73.gif │ ├── bm74.gif │ ├── bm75.gif │ ├── bm76.gif │ ├── bm77.gif │ ├── bm78.gif │ ├── bm79.gif │ ├── bm8.gif │ ├── bm80.gif │ ├── bm81.gif │ ├── bm82.gif │ ├── bm83.gif │ ├── bm84.gif │ ├── bm85.gif │ ├── bm86.gif │ ├── bm87.gif │ ├── bm88.gif │ ├── bm89.gif │ ├── bm9.gif │ ├── bm90.gif │ ├── bm91.gif │ ├── bm92.gif │ ├── bm93.gif │ ├── bm94.gif │ ├── bm95.gif │ ├── bm96.gif │ ├── bm97.gif │ ├── bm98.gif │ ├── bm99.gif │ ├── cvtonly.png │ └── placeholder.png │ ├── vtt.chm │ ├── vtt.chw │ ├── vtt.hhc │ └── vtt.hhp ├── pypi.md ├── pyproject.toml ├── requirements-dev.txt ├── setup.cfg ├── setup.py ├── src ├── .clang-format ├── CvtManager.cpp ├── CvtManager.h ├── File.cpp ├── File.h ├── FixedMath.h ├── GUIDecorations.h ├── List.cpp ├── List.h ├── Makefile ├── MathUtils.cpp ├── MathUtils.h ├── Memory.cpp ├── Memory.h ├── Platform.cpp ├── Platform.h ├── TMTParser.cpp ├── TMTParser.h ├── TTAssembler.cpp ├── TTAssembler.h ├── TTEngine.cpp ├── TTEngine.h ├── TTFont.cpp ├── TTFont.h ├── TTGenerator.cpp ├── TTGenerator.h ├── TextBuffer.cpp ├── TextBuffer.h ├── Variation.cpp ├── Variation.h ├── VariationInstance.cpp ├── VariationInstance.h ├── VariationModels.cpp ├── VariationModels.h ├── application.cpp ├── application.h ├── getopt.h ├── opentypedefs.h ├── pch.h ├── ttiua.cpp ├── ttiua.h ├── vttcompile.cpp └── vttcompile.h ├── templates ├── chargrp.txt ├── cvttmpl.txt ├── fpgmtmpl.txt └── preptmpl.txt ├── tests ├── data │ ├── LICENSE.txt │ ├── Selawik-README.md │ └── Selawik-variable.ttf └── test_vttcompile.py ├── vttcompile ├── CMakeLists.txt ├── vttcompile.sln ├── vttcompile.vcxproj ├── vttcompile.vcxproj.filters └── vttcompile.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ └── IDEWorkspaceChecks.plist └── vttcompilepy ├── __init__.py ├── __main__.py ├── _version.py ├── cvttcompilepy.pxd ├── quit_to_glyphs.py └── vttcompilepy.pyx /.github/workflows/msbuild.yml: -------------------------------------------------------------------------------- 1 | name: MSBuild 2 | 3 | on: [push] 4 | 5 | env: 6 | # Path to the solution file relative to the root of the project. 7 | SOLUTION_FILE_PATH: .\vttcompile\vttcompile.sln 8 | 9 | # Configuration type to build. 10 | # You can convert this to a build matrix if you need coverage of multiple configuration types. 11 | # https://docs.github.com/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix 12 | BUILD_CONFIGURATION: Release 13 | 14 | jobs: 15 | build: 16 | runs-on: windows-latest 17 | 18 | steps: 19 | - uses: actions/checkout@v2 20 | 21 | - name: Add MSBuild to PATH 22 | uses: microsoft/setup-msbuild@v1.0.2 23 | 24 | - name: Restore NuGet packages 25 | working-directory: ${{env.GITHUB_WORKSPACE}} 26 | run: nuget restore ${{env.SOLUTION_FILE_PATH}} 27 | 28 | - name: Build 29 | working-directory: ${{env.GITHUB_WORKSPACE}} 30 | # Add additional options to the MSBuild command line here (like platform or verbosity level). 31 | # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference 32 | run: msbuild /m /p:Configuration=${{env.BUILD_CONFIGURATION}} ${{env.SOLUTION_FILE_PATH}} 33 | 34 | - name: Upload a Build Artifact 35 | uses: actions/upload-artifact@v4 36 | with: 37 | name: release_binary 38 | path: ./vttcompile/x64/release/*.exe 39 | 40 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Microsoft Open Source Code of Conduct 2 | 3 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). 4 | 5 | Resources: 6 | 7 | - [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) 8 | - [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) 9 | - Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Microsoft Corporation. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE 22 | -------------------------------------------------------------------------------- /NOTICE.txt: -------------------------------------------------------------------------------- 1 | NOTICES 2 | 3 | This repository incorporates material as listed below or described in the code. 4 | 5 | --------------------------------------------------------- 6 | 7 | fonttools/fonttools 8 | https://github.com/fonttools/fonttools 9 | 10 | MIT License 11 | 12 | Copyright (c) 2017 Just van Rossum 13 | 14 | Permission is hereby granted, free of charge, to any person obtaining a copy 15 | of this software and associated documentation files (the "Software"), to deal 16 | in the Software without restriction, including without limitation the rights 17 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 18 | copies of the Software, and to permit persons to whom the Software is 19 | furnished to do so, subject to the following conditions: 20 | 21 | The above copyright notice and this permission notice shall be included in all 22 | copies or substantial portions of the Software. 23 | 24 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 25 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 26 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 27 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 28 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 29 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 30 | SOFTWARE. -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Security 4 | 5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). 6 | 7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below. 8 | 9 | ## Reporting Security Issues 10 | 11 | **Please do not report security vulnerabilities through public GitHub issues.** 12 | 13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report). 14 | 15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc). 16 | 17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc). 18 | 19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: 20 | 21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) 22 | * Full paths of source file(s) related to the manifestation of the issue 23 | * The location of the affected source code (tag/branch/commit or direct URL) 24 | * Any special configuration required to reproduce the issue 25 | * Step-by-step instructions to reproduce the issue 26 | * Proof-of-concept or exploit code (if possible) 27 | * Impact of the issue, including how an attacker might exploit the issue 28 | 29 | This information will help us triage your report more quickly. 30 | 31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs. 32 | 33 | ## Preferred Languages 34 | 35 | We prefer all communications to be in English. 36 | 37 | ## Policy 38 | 39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd). 40 | 41 | -------------------------------------------------------------------------------- /SUPPORT.md: -------------------------------------------------------------------------------- 1 | # Support 2 | 3 | ## How to file issues and get help 4 | 5 | This project uses GitHub Issues to track bugs and feature requests. Please search the existing 6 | issues before filing new issues to avoid duplicates. For new issues, file your bug or 7 | feature request as a new Issue. 8 | 9 | ## Microsoft Support Policy 10 | 11 | Support for this **PROJECT or PRODUCT** is limited to the resources listed above. 12 | -------------------------------------------------------------------------------- /doc/Extending_Typeman_Talk/Extending Typeman Talk.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/Extending_Typeman_Talk/Extending Typeman Talk.docx -------------------------------------------------------------------------------- /doc/Res_Hints_Implementation_Guide/Res hints implementation guide.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/Res_Hints_Implementation_Guide/Res hints implementation guide.docx -------------------------------------------------------------------------------- /doc/VTT Language Reference/doc-print.css: -------------------------------------------------------------------------------- 1 | body { 2 | /* font-family: "Century Schoolbook"; */ 3 | font-size: 9pt; 4 | padding: 2cm 1cm 1.5cm 2cm; 5 | line-height: 1.45em; 6 | } 7 | 8 | p { 9 | margin: 0 0 1.45em 0; 10 | } 11 | 12 | table { 13 | font-size: 7.5pt; 14 | border-top: 1px solid #000; 15 | border-bottom: 1px solid #000; 16 | } 17 | 18 | td, th { 19 | text-align: left; 20 | vertical-align: top; 21 | padding: 0.15em 1.5em 0.15em 0; 22 | } 23 | 24 | th { 25 | border-bottom: 1px solid #000; 26 | } 27 | 28 | td p, th p { 29 | margin: 0; 30 | line-height: 1.35em; 31 | } 32 | 33 | a:link, a:visited { 34 | text-decoration: none; 35 | color: #000; 36 | } 37 | 38 | .hint-caps { 39 | letter-spacing: 0.05em; 40 | } 41 | -------------------------------------------------------------------------------- /doc/VTT Language Reference/doc.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: "Cambria"; 3 | padding: 2em; 4 | line-height: 1.45em; 5 | background: #fff; 6 | color: #000; 7 | } 8 | 9 | p { 10 | hyphens: auto; 11 | max-width: 42em; 12 | margin: 0 0 1.45em 0; 13 | } 14 | 15 | table { 16 | border-collapse: collapse; 17 | font-size: 0.9em; 18 | border-top: 1px solid #000; 19 | border-bottom: 1px solid #000; 20 | margin: 2em 0; 21 | } 22 | 23 | td, th { 24 | text-align: left; 25 | vertical-align: top; 26 | padding: 0.2em 1.5em 0.2em 0; 27 | } 28 | 29 | th { 30 | border-bottom: 1px solid #888; 31 | } 32 | 33 | th.v { 34 | border-bottom: none; 35 | } 36 | 37 | td p, th p { 38 | margin: 0; 39 | } 40 | 41 | div { 42 | margin-top: 6em; 43 | padding-left: 4em; 44 | } 45 | 46 | h1, h2, h3 { 47 | margin-top: 2em; 48 | } 49 | 50 | h1 { 51 | margin-top: 0; 52 | } 53 | 54 | div h3 { 55 | margin-left: -3.5em; 56 | } 57 | 58 | a:link, a:visited { 59 | text-decoration: none; 60 | color: #cd0000; 61 | } 62 | 63 | a:hover { 64 | text-decoration: underline; 65 | } 66 | 67 | ol { 68 | max-width: 36em; 69 | } 70 | 71 | ul { 72 | margin: 0; 73 | padding: 0 0 0 1.25em; 74 | } 75 | 76 | section { 77 | margin-top: 4em; 78 | } 79 | 80 | .hint-caps { 81 | letter-spacing: 0.05em; 82 | } 83 | 84 | .num { 85 | text-align: right; 86 | } -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-1.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-2.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-3.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-4.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-5.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-GRAB_HERE_IN_X.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-GRAB_HERE_IN_X.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-ISTROKE-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-ISTROKE-1.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-ISTROKE-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-ISTROKE-2.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-SERIF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-SERIF.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-STROKE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-STROKE.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-VACUFORMLIMIT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-VACUFORMLIMIT.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-XROUND.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-XROUND.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-X_DOUBLE_GRID.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-X_DOUBLE_GRID.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-X_DOWN_TO_GRID.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-X_DOWN_TO_GRID.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-X_HALF_GRID.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-X_HALF_GRID.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-X_UP_TO_GRID.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-X_UP_TO_GRID.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-YROUND.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-YROUND.png -------------------------------------------------------------------------------- /doc/VTT Language Reference/vttdoc-images/vttlang-Y_HALF_GRID.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT Language Reference/vttdoc-images/vttlang-Y_HALF_GRID.png -------------------------------------------------------------------------------- /doc/VTT_Control_Program/VTT Control Program.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/VTT_Control_Program/VTT Control Program.docx -------------------------------------------------------------------------------- /doc/help/Index.hhk: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /doc/help/README.md: -------------------------------------------------------------------------------- 1 | # Visual TrueType Help Source 2 | 3 | This directory contains source for the help file that accompanies the Visual TrueType download. 4 | -------------------------------------------------------------------------------- /doc/help/html/01-01-IntroVTT.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Introducing Visual TrueType 5 | 6 | 7 | 8 | 9 | 10 | 11 |

Introducing Visual TrueType

12 | 13 |

Microsoft Visual TrueType is a software tool for viewing, editing, and 14 | adding instructions, or hints, to the outlines of TrueType and OpenType/TTF fonts. 15 | You use Visual TrueType after creating a font with an outline editor or after 16 | converting an existing font to the TrueType format.

17 | 18 |

Hints make the individual glyphs in a font look better at small point sizes, 19 | especially on low-resolution screens, printers, and other devices with fewer 20 | dots, or pixels for accurately and legibly matching the glyph outline. The 21 | lower the device resolution and the smaller the point size, the more hinting 22 | improves the accuracy and legibility of the outline. Hinting matters most for 23 | displaying TrueType fonts on screens (72-120 dpi, or dots per inch). It also 24 | improves text on high resolution screens and consumer printers (150-600dpi). 25 | However, hinting has minimal effect on high-resolution (1,200+ dpi) devices. 26 | Hints can also assemble component-based strokes, and match existing bitmap 27 | glyphs.

28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /doc/help/html/01-02-Tool4Users.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | A Tool for New and Advanced Users 7 | 8 | 9 | 10 | 11 |

A Tool for New and Advanced Users

12 | 13 |

Visual TrueType shows relationships between points, connected by arrows. At 14 | a glance, you’ll know characteristics of those relationships by studying:

15 | 16 |

·       The 18 | color of the arrows (green for Y direction links, red for X direction links, grey 19 | for flexible interpolations, black for shifts and strokes, and blue for strokes).

20 | 21 |

·       Orientation 23 | of the arrowheads (X, Y, or any direction).

24 | 25 |

·       Shape 27 | of the arrowheads (identifying the most frequent control value categories of 28 | straight stem, round stem, and any distance).

29 | 30 |

·       Control 32 | points and their rounding methods (none, to grid, to half-grid, to double-grid, 33 | down-to-grid, and up-to-grid).

34 | 35 |

·       Other 37 | symbols represent the presence or absence of an anchored point, a control value 38 | table (‘cvt’), or an override for a minimum distance.

39 | 40 |

You use your mouse to drag and drop arrows until the on-screen character 41 | looks its best at different sizes. For example, you can drag arrows, 42 | arrowheads, and arrow tails to change the relationships between points. By 43 | displaying pop-up menus, you can change or remove attributes such as ‘cvt’ 44 | category, ‘cvt’ number, rounding methods, and freedom vectors. Alternatively, 45 | you can add or adjust any of these relationships by typing the relevant 46 | commands in the VTT Talk window.

47 | 48 |

Note Visual TrueType also can edit the GASP font table as well as 49 | low-level hinting instructions.

50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /doc/help/html/01-03-OtherResources.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Other Resources 7 | 8 | 9 | 10 | 11 |

Other Resources

12 | 13 |

Microsoft Typography offers a variety of tutorials, documents, and TrueType 14 | tools on its web site: http://www.microsoft.com/typography. 15 | Available documents include:

16 | 17 |

·       OpenType Font 20 | File Specification, which describes the TrueType font file, 21 | embedded bitmaps, low-level TrueType instructions, and table definitions.

22 | 23 |

·       Hinting Tutorial, 26 | by Vincent Connare.

27 | 28 |

 

29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /doc/help/html/02-07-MemoryReqts.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Reducing Memory Requirements 7 | 8 | 9 | 10 | 11 |

Reducing Memory Requirements

12 | 13 |

Every font comes with a table that is a collection of maximum possible 14 | (‘maxp’) values for the computer memory required by each glyph. As you hint the 15 | font, Visual TrueType automatically updates the ‘maxp’ table if the hinted 16 | glyph requires more memory. This is necessary so the rasterizer can display the 17 | glyph correctly.

18 | 19 |

Visual TrueType only keeps track of maximum values. If subsequent changes to 20 | the hinting reduce the amount of memory needed, Visual TrueType doesn’t update 21 | the ‘maxp’ table. As a result, by the time you finish hinting the font, some 22 | glyphs might need less than the maximum.

23 | 24 |

The final version of your font should require only as much memory as 25 | necessary. Before you save your font for the last time, you can have Visual 26 | TrueType recalculate values for the ‘maxp’ table based on the memory actually 27 | required by each glyph. The calculations take a while, depending on the font 28 | size and the complexity of the hinting, but they reduce the memory requirements 29 | for the font.

30 | 31 |

 

32 | 33 |

Be sure to recalculate the ‘maxp’ table before you prepare the font for 34 | shipping, which strips out private tables needed for this calculation (see 35 | “Preparing to Ship Your Font”).

36 | 37 |

To reduce the memory required by the font

38 | 39 |

1.       40 | On the Tools menu, click Recalc ‘Maxp’ Table.

41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /doc/help/html/02-08-Saving.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Saving the Font File 7 | 8 | 9 | 10 | 11 |

Saving the Font File

12 | 13 |

As you work with Visual TrueType, you should periodically save your changes 14 | with the Save command on the File menu. The changes you save update internal 15 | source data for the open font.

16 | 17 |

Note Saving the font updates the source data 18 | but does not compile the changes in the usable font. To compile the font, see 19 | “Compiling Your Results”.

20 | 21 |

If you want to save the font file with a new name (for example, you are saving 22 | different versions or want to make a backup copy), use the Save As command on 23 | the File menu.

24 | 25 |

 

26 | 27 |

Save font dialog

29 | 30 |

Use the Save As command on the File menu to rename the font file or store 31 | it in a new location.

32 | 33 |

To update an existing file

34 | 35 |

1.       36 | On the File menu, click Save, or press Ctrl + S.

37 | 38 |

To save the font as a new file

39 | 40 |

1.       41 | On the File menu, click Save As.

42 | 43 |

2.      44 | Specify where you want to save the new file.

45 | 46 |

3.      47 | In the Save As text box, type a new file name.

48 | 49 |

4.     50 | Click Save.

51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /doc/help/html/03-01-Toolbar.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | What’s in the Toolbar 7 | 8 | 9 | 10 | 11 |

What’s in the Toolbar

12 | 13 |

The toolbar on the left edge of the main window contains 24 tools. If your 14 | screen cannot display all the tools at one time, you can scroll up or down the 15 | toolbar by clicking scroll arrows at its top. The tools fall into four 16 | categories:

17 | 18 |

·       Viewing 20 | tools (Panning, Measuring, Zoom-in, Zoom-out)

21 | 22 |

·       Control 24 | point tools (Move Point, Swap Point, Delete Point, Add Point)

25 | 26 |

·       Hinting 28 | tools (Angle, XLink, YLink, XShift, YShift, XInter, YInter, Stroke, Align, 29 | XDelta, YDelta, XMove, YMove)

30 | 31 |

·       Display 33 | tools (Camera, Jump Back, and Size Run)

34 | 35 |

To select a tool, click it or press the associated function key. The mouse 36 | cursor will change to indicate the selected tool.

37 | 38 |

Not all tools will be available at all times. For example, the X tools will 39 | be dimmed unless Show X Direction is checked in the Display options. Similarly, 40 | the Y tools will be dimmed unless Show Y Direction option is set. For details, 41 | see “Setting Options Useful for Hinting”.

42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /doc/help/html/03-02-MovingAround.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Moving Around in the Window 7 | 8 | 9 | 10 | 11 |

Moving Around in the Window

12 | 13 |

All Visual TrueType windows have standard Windows scroll bars that you can 14 | use to move the current glyph up and down, left and right in the window. You 15 | also can use the Home, End, and—with or without the Shift key—Page Up and Page 16 | Down keys.

17 | 18 |

To move in any direction and with more control over the precise distance, 19 | use the Navigate tool to drag the glyph as if it were on a sheet of paper 20 | behind the window. The Navigate tool looks like a hand:

21 | 22 |

Navigate tool icon

24 | 25 |

So does the pointer when you select the tool:

26 | 27 |

Navigate tool cursor

29 | 30 |

The Navigate tool is so commonly used that it has two keyboard shortcuts 31 | (the Shift key, or space bar) for panning while another tool is still selected. 32 | When the glyph is where you want it, release the keyboard shortcut to resume 33 | work with the previous tool.

34 | 35 |

To move horizontally or vertically

36 | 37 |

1.       38 | Use the scroll bars.

39 | 40 |

OR

41 | 42 |

1.       43 | Press Home, End, Page Up, Page Down, Shift + Page Up, or Shift + Page 44 | Down.

45 | 46 |

To pan the window

47 | 48 |

1.       49 | Select the Navigate tool by pressing its button in the toolbar.

50 | 51 |

2.      52 | Point where you want to start panning, and drag in any direction.

53 | 54 |

OR

55 | 56 |

1.       57 | Hold down the Control key or the space bar.

58 | 59 |

2.      60 | Point where you want to start panning, and drag in any direction.

61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /doc/help/html/03-04-ChgPointSize.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Changing the Point Size of the Glyph 7 | 8 | 9 | 10 | 11 |

Changing the Point Size of the Glyph

12 | 13 |

The main window displays only one glyph at a time. When hinting, you review 14 | and adjust the same glyph outline at many sizes, so you will change sizes often 15 | before you finish hinting a particular glyph. When you change sizes, the 16 | outline shows any hinting already applied to the glyph.

17 | 18 |

Visual TrueType offers several ways to change the point size of the glyph. 19 | You can use the size run, the keyboard, or commands from the Size submenu of 20 | the Display menu.

21 | 22 |

The Size menu lists the most common sizes for hinting. You can use the Other 23 | Point Size command to specify any other size between 4 points and 255 points.

24 | 25 |

 

26 | 27 |

Glyph size dialog

29 | 30 |

If the Size menu doesn’t list the size you want,  use the Other Point 31 | Size command.

32 | 33 |

To change the point size of the current glyph

34 | 35 |

1.       36 | If the size run is displayed, click any number or glyph shown there.

37 | 38 |

OR

39 | 40 |

1.       41 | To change size by one point, press the up arrow key (increase) or down 42 | arrow key (decrease).

43 | 44 |

OR

45 | 46 |

1.       47 | To change size by 10 points, hold down the Shift key, and press the up 48 | arrow key (increase) or down arrow key (decrease).

49 | 50 |

OR

51 | 52 |

1.       53 | On the Size menu, click any size.

54 | 55 |

OR

56 | 57 |

1.       58 | On the Size menu, click Other Point Size (Ctrl + =).

59 | 60 |

2.      61 | After Point Size, type a new value.

62 | 63 |

3.      64 | Click Set.

65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /doc/help/html/03-07-00-OtherWindows.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Working with Other Windows 7 | 8 | 9 | 10 | 11 |

Working with Other Windows

12 | 13 |

Although you can hint only one glyph at a time in the main window, you can 14 | open two other graphical windows that might be useful for visual hinting: the 15 | Character/Glyph Set Window and Snap Shot of Main Window. All three graphical 16 | windows are available as commands on the View menu with keyboard shortcuts: 17 | Main Window (Ctrl + 1), Character Set (Ctrl + 9), or Snap 18 | Shot of Main (Ctrl + 0).

19 | 20 |

From the View menu, you can open several text-based windows that enable you 21 | to edit font data. All users will need to open and edit the Control Program 22 | window, which is a text window of source data for the control value table, or 23 | ‘cvt’ (see “Using the Control Value Table”). More for advanced users who need 24 | access to the technical data behind Visual TrueType. For details about other 25 | text-based windows, see “Advanced Hinting.”

26 | 27 |

Only one window can be active at a time. Use standard Windows techniques to 28 | select, position, and size these windows conveniently for you.

29 | 30 |

Closing the main window also closes the font. For details, see “Opening and 31 | Closing a Font”.

32 | 33 |

To open a window

34 | 35 |

1.       36 | On the View menu, click the window you want. All windows have a shortcut 37 | key of Ctrl pressed with a numeral. See the Keyboard Shortcuts section for a reference.

38 | 39 |

To close a window

40 | 41 |

1.       42 | Click its close box.

43 | 44 |

OR

45 | 46 |

1.       47 | On the File menu, click Close, or press Ctrl + W.

48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /doc/help/html/03-07-01-GlyphWindow.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Using the Character/Glyph Set Window 7 | 8 | 9 | 10 |

Using the Character/Glyph Set Window

11 | 12 |

The Character/Glyph Set window contains every glyph included in the open 13 | font. Clicking a character in the Character/Glyph Set window displays that 14 | character in the main window.

15 | 16 |

Selecting the Refresh Char Set with Main Window option as a preference 17 | synchronizes the Character/Glyph Set window and the main window. Both windows 18 | will display at the same point size (as selected in the Size menu) and 19 | resolution (as selected in the Resolution menu). Other synchronized options 20 | include grid fitting, gray scaling, sbit on or off, and MS Rasterizer.

21 | 22 |

Similarly, glyphs are displayed by glyph index or character code (Unicode), 23 | depending on whether Access Characters by Glyph Index is selected as a 24 | preference. If by character code, glyphs follow the Cmap chosen in the 25 | Preferences dialog box.

26 | 27 |

For details, see “Setting Preferences”

28 | 29 |

To open the Character/Glyph Set window

30 | 31 |

1.       32 | On the View menu, click Character/Glyph Set, or press Ctrl + 9.

33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /doc/help/html/03-07-02-SnapShotWindow.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Using the Snap Shot of Main Window 7 | 8 | 9 | 10 | 11 |

Using the Snap Shot of Main Window

12 | 13 |

Opening the Snap Shot of Main Window creates a copy of the main window. If 14 | you make additional changes to the glyph in the main window, Visual TrueType 15 | does not update the snapshot to reflect those changes.

16 | 17 |

You can take a snapshot two ways. Click the Snap Shot of Main command on the 18 | View menu, or click the Camera tool in the toolbar:

19 | 20 |

Camera tool icon

22 | 23 |

You can size and position the snapshot window next to the main window. This 24 | side-by-side view can be handy if, for example, you finish hinting a glyph and 25 | want to refer to that hinting as you work on a similar glyph (such as E and F 26 | or C and Ç).

27 | 28 |

You can’t change anything in the Snap Shot of Main Window. However, you can 29 | change views with the Panning tool, Zoom-in tool, and Zoom-out tool. In 30 | addition, you can use the Measuring tool.

31 | 32 |

The Snap Shot of Main Window remains open until you either take a new 33 | snapshot or close the window.

34 | 35 |

To take a snapshot of the main window

36 | 37 |

1.       38 | On the View menu, click Snapshot of Main, or press Ctrl + 0.

39 | 40 |

OR

41 | 42 |

1.       43 | In the toolbar, click the Camera tool.

44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /doc/help/html/04-01-00-HintingBasics.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Hinting Basics 7 | 8 | 9 | 10 | 11 |

Hinting Basics

12 | 13 |

Designers of PostScript fonts provided “hints,” or general guidelines that 14 | the PostScript interpreter could use to decide which pixels to turn on. Later, 15 | TrueType took hinting a step further because font designers could add detailed instructions—essentially 16 | programming code—that tell the rasterizer exactly what to do to optimize the 17 | appearance of the font.

18 | 19 |

This user guide won’t teach you how to hint—it assumes you already know how 20 | to do that. This chapter gives a brief overview of hinting, explains tasks you 21 | can do before you start hinting, and describes some basic features of hinting 22 | with Visual TrueType.

23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /doc/help/html/04-01-01-01-HintingWkflow.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Hinting with Visual TrueType: A General Workflow 7 | 8 | 9 | 10 | 11 |

Hinting with Visual TrueType: A General Workflow

12 | 13 |

Hinting is a subjective and complex art. You’ve developed your own approach 14 | to hinting, work habits that you can continue with Visual TrueType. This user 15 | guide introduces hinting tasks in a typical order that you can follow or not, 16 | based on your experience and the font itself. In general, you should:

17 | 18 |

·       Review 20 | the glyph and, if necessary, add, remove, and adjust existing control points. 21 | Hinting is about controlling points on the glyph outline. You control points in 22 | relation to points already hinted or in relation to some absolute X or Y value 23 | from the origin.

24 | 25 |

·       Hint 27 | in the Y direction, then hint in the X direction. The X and Y axes are 28 | independent for hinting except for diagonals and italics. Visual TrueType can 29 | limit its display to only Y hints or only X hints, so you don’t become 30 | confused.

31 | 32 |

·       Link 34 | control points before you interpolate between them. Linking creates 35 | relationships between two or more points. Interpolating maintains the relative 36 | position of one or more linked points between the first and last points in the 37 | same link.

38 | 39 |

·       Do 41 | all global hinting before adding local hints to create exceptions. These local 42 | hints fine-tune hinting on a glyph by moving a single control point by a 43 | specific distance at a single ppem size.

44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /doc/help/html/04-01-01-02-HintingStrategies.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Hinting Strategies 7 | 8 | 9 | 10 |

Hinting Strategies

11 | 12 |

In general, the more detailed hinting you do to a font, the better the 13 | quality of the font. Some outline editors automatically hint a font for you. 14 | Although auto-hinting sometimes is better than none at all, Visual TrueType 15 | offers more sophisticated controls for those people interested in crafting 16 | high-quality fonts that will display and print reliably on all devices. For 17 | this reason, Visual TrueType can strip all auto-hinting from your font so you 18 | add more and better hints. For details, see “Preparing the Open Font” in 19 | Chapter 3, “Using Visual TrueType: The Basics.”

20 | 21 |

You hint all glyphs in a font, one glyph at a time. Hints applied to a glyph 22 | apply to all sizes of that glyph. Consequently, you need to visually inspect a 23 | range of sizes, both smaller and larger, to verify that the hinting makes all 24 | sizes look good.

25 | 26 |

When hinting, staying true to the outline becomes less important than 27 | producing a clear bitmap at smaller point sizes, particularly on low-resolution 28 | output devices. Your main concerns are choosing key features to maintain in the 29 | glyphs and ensuring that features similar or identical on different glyphs 30 | remain so at different sizes. You should try to:

31 | 32 |

·       Maintain 34 | consistent heights (cap height, x-height, ascenders, descenders, and so on).

35 | 36 |

·       Keep 38 | stroke weights consistent.

39 | 40 |

·       Prevent 42 | rounding variations that would cause inappropriate differences at small point 43 | sizes (for example, rounding one stroke to two pixels while rounding a similar 44 | stroke to one pixel).

45 | 46 |

·       Create 48 | even “stepping” patterns and consistent widths for diagonal strokes.

49 | 50 |

·       Keep 52 | counters open at small sizes.

53 | 54 |

·       Control 56 | side bearings so glyphs don’t touch.

57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /doc/help/html/04-01-01-03-VisualHinting.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Visual Hinting at a Glance 7 | 8 | 9 | 10 | 11 |

Visual Hinting at a Glance

12 | 13 |

The application used to create a TrueType font produces glyph outlines, as 14 | well as a ‘glyf’ table of binary TrueType data. Hinting with Visual TrueType 15 | basically replaces that ‘glyf’ table with one produced by Visual TrueType. All 16 | this happens behind the scenes as you drag and drop hints on screen.

17 | 18 |

Visual TrueType includes Visual TrueType Talk (VTT), a program that produces 19 | source code from your on-screen hinting. Its own ‘glyf’ program turns that VTT 20 | source into TrueType source code. In turn, Visual TrueType converts that 21 | TrueType source code to TrueType binary data, which replaces the ‘glyf’ table 22 | that came with the font. Together, the new ‘glyf’ table from Visual TrueType 23 | and the glyph outline—as produced with the font program and possibly modified 24 | with Visual TrueType—result in a hinted TrueType font.

25 | 26 |

To simplify hinting, Visual TrueType displays glyph characteristics and 27 | hinting in distinctive ways so you can easily identify all parts of the glyph 28 | and all its hints. What you see depends on which commands are selected in the 29 | Visual TrueType menu (these same choices are available as check boxes in the 30 | dialog box for the Display Options command, which is on the Display menu). 31 | Selecting a Visual TrueType command or option displays the corresponding 32 | feature in the main window. See the “Configuring Main window display options” 33 | section for details on these options.

34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/help/html/04-01-02-00-UsingCVT.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Using the Control Value Table 7 | 8 | 9 | 10 | 11 |

Using the Control Value Table

12 | 13 |

Every TrueType font uses a control value table (‘cvt’) of key values in the 14 | font. Each entry in the table gives the value for the dominant width, length, 15 | or angle of a group of features, such as the stem width or the serif length. 16 | Some control values are specific to certain glyphs, but others apply to the 17 | entire font.

18 | 19 |

To ensure consistency, your hints—anchors, links, and strokes—can refer to 20 | these key values. If you later change a value entered in the ‘cvt’ table, 21 | Visual TrueType updates all anchors, links, and strokes that refer to that 22 | ‘cvt’ entry.

23 | 24 |

The text-based control value table displays in its own window. When you 25 | prepare the font, the window opens automatically (see “Preparing the Open 26 | Font”). Before hinting, you need to fill in a template provided by Visual 27 | TrueType, described next.

28 | 29 |

After filling in the template, you may want to leave the window open. 30 | Otherwise, close it and open it again as needed. For example, you need to 31 | update a ‘cvt’ entry for italic glyphs (see the “Hinting diagonal strokes,” and 32 | “Hinting italic glyphs sections”). In addition, advanced users might want to 33 | review the ‘cvt’ entries to determine which values would be most appropriate 34 | for the anchors, links, and strokes. In addition, you might want to add other 35 | ‘cvt’ entries (for details, see “Modifying the ‘Cvt’ Table”).

36 | 37 |

To open the control value table

38 | 39 |

1.       40 | On the Views menu, click Control Values, or press Ctrl + 4.

41 | 42 |

To close the control value table

43 | 44 |

1.       45 | Select the control value table by clicking on the window or pressing 46 | Ctrl + 4.

47 | 48 |

2.      49 | On the File menu, click Close. OR double-click the window’s close box.

50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /doc/help/html/04-01-02-01-ReadingCVT.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Reading Cvt Entries 7 | 8 | 9 | 10 | 11 |

Reading ‘Cvt’ Entries

12 | 13 |

All control values have an identification number, as well as a comment that 14 | provides information about the type of glyph or feature to which it applies. A 15 | typical entry in the ‘cvt’ table looks like this:

16 | 17 |

66: 192 0xa41

18 | 19 |

where

20 | 21 |

·       The 23 | control value number (here, 66) is the sequential number identifying the entry 24 | in the table. Links, anchors, and strokes can refer to this number. Some of 25 | these are reserved. For example, line 36 always is the italic size run.

26 | 27 |

·       A 29 | colon separates the first two numbers.

30 | 31 |

·       A 33 | control value (here, 192) gives the dominant length or width of a feature, 34 | measured in font units (F-units) scaled to the ppem height of the device grid.

35 | 36 |

Any feature that needs to be controlled can be assigned a value and 37 | reference number in the ‘cvt’ table. Typically, a ‘cvt’ table includes entries 38 | for common heights (for example, baseline, cap height, and x-height), 39 | representative side-bearing points, common uppercase and lowercase stem widths 40 | (both X and Y directions), uppercase and lowercase serif thickness and length, 41 | and any italic angle.

42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /doc/help/html/04-01-02-04-ChangingChrGrp.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Changing a Glyph’s Character Group 7 | 8 | 9 | 10 | 11 |

Changing a Glyph’s Character Group

12 | 13 |

The CharGrp.txt file for the font assigns each glyph to a character group: 14 | uppercase, lowercase, figure, or other. The character group tells Visual 15 | TrueType which group of values to use from the control value table (‘cvt’) for 16 | the glyph.

17 | 18 |

Occasionally, you might want to use the ‘cvt’ values from a different group. 19 | For example, the font designer may have classified a dollar sign ($) as a 20 | figure. However, while hinting it, you decide that the glyph looks more like an 21 | uppercase “S.”

22 | 23 |

Changing the glyph’s character group won’t affect ‘cvt’ values already 24 | applied to the glyph. However for subsequent ‘cvt’ values you assign, Visual 25 | TrueType will use the new character group.

26 | 27 |

Tip Change the character group, if necessary, before assigning any 28 | ‘cvt’ values.

29 | 30 |

Sometimes typographers turn on the sample text at the top of the main 31 | window (on the Display menu, click Show Text String) and cycle through all the 32 | character groups to check glyph spacing. The first part of the sample text 33 | displays the current glyph between two glyphs typical for the current character 34 | group, followed by extra text (see “Setting Preferences”).

35 | 36 |

For instance, if the current glyph is A, the text string starts with 37 | HHAHOHOAOOAAA. If you change the character group to lowercase, the text string 38 | starts with nnAnonoAooAA, which shows how the A spaces with those characters.

39 | 40 |

You make this change with the Change Char Group command from the Edit menu. 41 | Each time you choose the command, Visual TrueType changes the character group 42 | displayed in the status bar. Just keep choosing the command until the status 43 | bar displays the character group you want for the glyph in the main window.

44 | 45 |

To change the character group of the current glyph

46 | 47 |

1.       48 | On the Edit menu, click Change Char Group, or press Ctrl + U.

49 | 50 |

2.      51 | If necessary, repeat until the status bar displays the correct character 52 | group.

53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /doc/help/html/04-01-03-01-OnOffCurvePts.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Working with On-Curve and Off-Curve Points 7 | 8 | 9 | 10 |

Working with On-Curve and Off-Curve Points

11 | 12 |

Control points can be on or off the glyph outline (“on curve” or “off curve”):

13 | 14 |

·       The 16 | blue “on curve” points form joints in the outline. Moving one of these points 17 | creates an angle on the glyph outline, changing the direction of the outline.

18 | 19 |

·       The 21 | white “off curve” points affect the glyph outline less directly, changing the curve 22 | of the outline as you drag the point.

23 | 24 |

At any time, you can “swap” a control point that’s on the curve to off the 25 | curve and vice versa. However, to see, add, move, or delete off-curve control 26 | points, Show Fewer Points must not be selected on the Display menu (or in the 27 | dialog box for the Options command from the Display menu). Otherwise, Visual 28 | TrueType shows only on-curve control points.

29 | 30 |

To work with both on-curve and off-curve points

31 | 32 |

1.       33 | Set the Show Fewer Points option in the Display Options dialog.

34 | 35 |

To swap a control point

36 | 37 |

1.       38 | Set the Show Fewer Points option in the Display Options dialog.

39 | 40 |

2.      41 | In the toolbar, click the Swap Point tool.

42 | 43 |

3.      44 | Click the control point you want to swap. The black on-curve point turns 45 | white, a white off-curve point turns black.

46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /doc/help/html/04-01-03-02-NumberingCPts.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Numbering Control Points 7 | 8 | 9 | 10 | 11 |

Numbering Control Points

12 | 13 |

The ‘cvt’ table and other text-based windows refer to control points by 14 | numbers that come from the glyph outline description. To determine the number 15 | of a point, you can display these numbers, which Visual TrueType uses to keep 16 | track of the points. Numbering continues clockwise on the outer contours of a 17 | glyph and counter-clockwise on the inner contours.

18 | 19 |

Each time you add or delete a point, Visual TrueType renumbers all the 20 | points and updates the point numbers in the text-based tables. These numbers 21 | are useful for advanced users who want to edit source data right in a 22 | text-based window. Otherwise, you can hide the numbers until needed.

23 | 24 |

To show or hide control point numbers

25 | 26 |

1.       27 | Set the Point Numbers option in the Display Options dialog.

28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /doc/help/html/04-01-03-03-EditingMetrics.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Editing Metrics 7 | 8 | 9 | 10 | 11 |

Editing Metrics

12 | 13 |

Each glyph has two side-bearing control points: one on the left and one on 14 | the right. The right side bearing point also determines the advance width of 15 | the glyph, measured from the left side bearing point.

16 | 17 |

Links and other hints often start or end at side bearing points. By default, 18 | Visual TrueType rounds the side bearing points to the grid. You can’t change 19 | the rounding method.

20 | 21 |

You usually don’t move the side bearing points either. However, sometimes 22 | you may need to adjust them. For example, the font might have some rounding 23 | errors incurred in the conversion from a Fontographer file (where the font 24 | height is 1,000 units) into a TrueType file (where font height is 2,048 units).

25 | 26 |

Or the side-bearing points might be very close to other control points, so 27 | distinguishing the points becomes difficult, even at enlarged views. If that 28 | happens, you might move the problematic side-bearing point an easy-to-remember 29 | distance (say, 100 units), finish hinting the adjacent control points, and then 30 | restore the side-bearing point to its original location.

31 | 32 |

Edit metrics dialog

34 | 35 |

Use the Edit Metrics command to move the left side-bearing point or the 36 | advance width, which moves the right side-bearing point.

37 | 38 |

Editing the metrics of composite characters involves additional 39 | considerations. For details, see “Composite Characters: Using the ‘Glyf’ 40 | Table”.

41 | 42 |

To move a side-bearing point

43 | 44 |

1.       45 | On the Edit menu, click Edit Metrics.

46 | 47 |

2.      48 | If you want, type a new value after Left Side Bearing.

49 | 50 |

3.      51 | If you want, type a new value after Advance Width.

52 | 53 |

4.     54 | Click OK.

55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /doc/help/html/04-01-04-00-RoundingCPts.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Rounding Control Points 7 | 8 | 9 | 10 | 11 |

Rounding Control Points

12 | 13 |

Telling the computer how to round control points seems like a logical first 14 | step in hinting. However, because rounding itself seldom produces satisfactory 15 | results, Visual TrueType makes it a task you typically do in conjunction with 16 | other hinting techniques. Visual TrueType will automatically do rounding when 17 | appropriate, such as when you create links.

18 | 19 |

You can round pixels while using one of the linking (XLink and YLink), 20 | interpolating (XInter and YInter), or shift (XShift and YShift) tools. With a 21 | hinting tool select, just hold down the right mouse button as you right-click 22 | on the head of a link, and Visual TrueType displays a menu of rounding options 23 | in the same direction as the tool. When you’ve chosen a method, release the mouse 24 | button. To change the rounding type with the keyboard, edit the VTT Talk 25 | commands directly (Ctrl + 5) and recompile (Ctrl + R).

26 | 27 |

To set the rounding type while using hinting tools

28 | 29 |

1.       30 | Point to the control point you want to round.

31 | 32 |

2.      33 | Hold down the right mouse button to display a menu of rounding options 34 | and select the appropriate option.

35 | 36 |

3.      37 | Drag to the option you want.

38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /doc/help/html/04-01-04-02-Ex1-Rounding.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Example 1: Rounding 7 | 8 | 9 | 10 | 11 |

Example 1: Rounding

12 | 13 |

The same point, rounded two different ways, shows how rounding can affect 14 | grid-fitting at different point sizes. The first example uses the 15 | round-to-half-grid method, and the second uses the round-to-double-grid method: 16 |

17 | 18 | 20 | 21 | 26 | 31 | 36 | 37 | 38 | 43 | 49 | 55 | 56 |
23 |

Half-grid rounding, outline

25 |
28 |

Half-grid rounding, size 1

30 |
33 |

Half-grid rounding, size 1

35 |
40 |

Double-grid rounding, outline

42 |
46 |

Double-grid rounding, size 1

48 |
52 |

Double-grid rounding, size 1

54 |
57 | 58 |

Two point sizes using rounded to the half-grid (top) and double grid 59 | (bottom).

60 | 61 |

In this example, the round-to-half-grid method always gets the control point 62 | at the crotch on the center of the pixel, but it doesn’t always get it in the 63 | middle of the stroke in-between. For a stroke that is one pixel wide, the exact 64 | middle is on the pixel center, while the center of a stroke that is two pixels 65 | wide falls between the two pixels. Conversely, round-to-double-grid always gets 66 | the control point at the crotch in the exact middle, but the pixel pattern 67 | might not be optimal.

68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /doc/help/html/04-01-04-03-Ex2-Limitations.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Example 2: Rounding Limitations 7 | 8 | 9 | 10 | 11 |

Example 2: Rounding Limitations

12 | 13 |

The following example illustrates the limitations of rounding by itself. 14 | Assume that the 12-point Times New Roman “m” shown earlier in this chapter has 15 | hints telling the rasterizer to position certain control points on the nearest 16 | grid line and to let the other points follow accordingly. A short bar marks 17 | each hinted point that controls vertical strokes:

18 | 19 |

Rounding indicators for vertical control points

21 | 22 |

Short bars show rounding methods on vertical control points.

23 | 24 |

For the horizontal strokes, a short bar marks each hinted control point:

25 | 26 |

Rounding indicators for vertical control points

28 | 29 |

Short bars show rounding methods on horizontal control points.

30 | 31 |

After Visual TrueType compiles the hints, the resulting glyph looks better. 32 | Even so, the left stem is still twice as wide as the other two, and the serifs 33 | are now missing altogether:

34 | 35 |

Bitmap of 12-point Times New Roman m after rounding

37 | 38 |

The bitmap of a 12-point Times New Roman “m” after rounding.

39 | 40 |

Hinting just the control points improved the appearance of the font, but the 41 | outline needs more hints to look good. Visual TrueType encourages you to go 42 | beyond this basic approach by making rounding part of the links that you create 43 | and interpolate to hint control points. For more information, see “Controlling 44 | Distances,” and “Controlling Proportions.”

45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /doc/help/html/04-01-05-02-Example.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Example: Anchoring a Height 7 | 8 | 9 | 10 | 11 |

Example: Anchoring a Height

12 | 13 |

In general, you should specify the ‘cvt’ values for heights before 14 | specifying ‘cvt’ values for links and interpolates in the Y direction. You’ll 15 | anchor the height of this Times New Roman “O.” In this example, Anchors is 16 | selected and Links And Dists de-selected in the Visual TrueType menu:

17 | 18 |

Capital O with anchors

19 | 20 |

The “O” with anchors.

21 | 22 |

Only the two Y anchors have highway signs. The signs are blank because the 23 | ‘cvt’ values for heights don’t come with a ‘cvt’ attribute, which the computer 24 | needs to determine which height a ‘cvt’ value refers to. You must enter the 25 | ‘cvt’ value.

26 | 27 |

For this example, the top anchor refers to ‘cvt’ entry 3 and the bottom 28 | anchor to ‘cvt’ entry 9, even though these entries specify only the overshoots 29 | (31 and -31, respectively), not the actual heights (1536 and 0). The computer 30 | knows how to handle this because the first ‘cvt’ entries are reserved for the 31 | heights.

32 | 33 |

Capital O with anchors and CVT values

34 | 35 |

The “O” with anchors and ‘cvt’ values.

36 | 37 |

For the “H,” the ‘cvt’ entries would be 2 and 8 instead, because the glyph 38 | has no overshoots. This solves the alignment problem.

39 | 40 |

The Aligned HO at 15 pointsThe Aligned HO at 14 pointsThe Aligned HO at 13 points

43 | 44 |

The aligned “HO” at 15, 14, and 13 points and 96 dpi.

45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /doc/help/html/04-02-00-ControllingDistances.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Controlling Distances 7 | 8 | 9 | 10 | 11 |

Controlling Distances

12 | 13 |

Most of your hinting will be done to control distances between points. You 14 | can control distances two ways:

15 | 16 |

·       Links 18 | maintain a flexible relationship between two points. Usually, the link will 19 | refer to an entry in the control value table (‘cvt’) to determine the position 20 | of one point in relation to the other. If it doesn’t, the link is called a 21 | distance.

22 | 23 |

·       Shifts 25 | maintain a rigid relationship between two points. What affects one point 26 | equally affects the other.

27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /doc/help/html/04-02-01-02-Ex2-CreatingLinks.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Example 2: Creating Links 7 | 8 | 9 | 10 | 11 |

Example 2: Creating Links

12 | 13 |

Visual TrueType keeps track of your links so that you cannot do something 14 | that won’t work. For example, a chain of links can be useful to control the 15 | curve of the serif:

16 | 17 |

Vertical links 1Vertical links 2Vertical links 3

20 | 21 |

A chain of three vertical links.

22 | 23 |

Adding a fourth link might seem like a good idea to assure that the stem is 24 | identical to other such stems in the same font:

25 | 26 |

Vertical links 4

27 | 28 |

Adding a fourth link.

29 | 30 |

However, this is one link too many. A link specifies which part of the 31 | character must not give way upon fitting the outline to the grid. This implies 32 | that something else must give way. But if the last link in the chain links back 33 | to the starting point, nothing can give way. Visual TrueType will display a 34 | message like:

35 | 36 |

Circular dependency error

38 | 39 |

A chain of links cannot begin and end at the same control point.

40 | 41 |

The last link must not link back to a control point used earlier in the 42 | chain. Visual TrueType alerts you so you can delete a link from the 43 | chain or forego the last link you tried to create.

44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /doc/help/html/04-02-02-00-LinkingWithCVT.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Linking with Cvt Values 7 | 8 | 9 | 10 | 11 |

Linking with ‘Cvt’ Values

12 | 13 |

A font should have certain constant relationships between glyphs. For 14 | example, the dominant weight of the stems should apply to round stems, as well 15 | as straight stems, and certain control points should fall on the baseline. You can 16 | achieve this control over relationships by having links refer to entries in the 17 | control value table (‘cvt’).

18 | 19 |

By default, Visual TrueType assumes that every link should refer to a ‘cvt’ 20 | value. That value specifies how far, in whole pixels rounded to the grid at the 21 | current ppem size, the child point is from the parent point.

22 | 23 |

Several links can refer to the same control value. This helps control 24 | consistency throughout the font at different point sizes and device 25 | resolutions.

26 | 27 |

Only unique distances unrelated to any other distance don’t require a ‘cvt’ 28 | value. A link without a ‘cvt’ value is called a distance.

29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /doc/help/html/04-02-02-02-ReviewCVTs.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Reviewing Cvt Values for Links 7 | 8 | 9 | 10 | 11 |

Reviewing ‘Cvt’ Values for Links

12 | 13 |

Every link has what looks like a highway sign. When you want to review or 14 | change the ‘cvt’ value assigned to a link, you should display those signs. 15 | Otherwise, hiding them makes the links and other on-screen hinting easier to 16 | see.

17 | 18 |

The X links of a Times New Roman “B” with highway signs showing ‘ cvt’
19 | values

21 | 22 |

The X links of a Times New Roman “B” with highway signs showing ‘ cvt’ 23 | values.

24 | 25 |

You can display large highway signs that include the sequential line number 26 | of the ‘cvt’ value used by each link, or you can turn on smaller, unnumbered 27 | signs. For details, see “Hinting with ‘Cvt’ Values”

28 | 29 |

Note A distance will not display a highway sign.

30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /doc/help/html/04-03-00-ControllingProportions.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Controlling Proportions 7 | 8 | 9 | 10 | 11 |

Controlling Proportions

12 | 13 |

An interpolation controls the proportions of a glyph by maintaining the 14 | relative position (in either the X or Y direction) of one or more “child” 15 | points that fall between two other “parent” points. The key word is 16 | “between”—the child point(s) cannot be further in the X or Y direction than 17 | either parent or on the same X or Y coordinate.

18 | 19 |

Interpolating is useful when a central feature of a glyph is not controlled, 20 | but other features have been because of known heights (Y direction) or side 21 | bearings (X direction). Y interpolations are common for these glyphs: 3, 4, 5, 22 | 6, 8, 9, A, B, E, F, G, H. K, P, R, X, Y, a, e, g, k, x, y, &, and *. X 23 | interpolations are common for 8, A, B, E, G, K, M, R, W, X, Y, k, m, v, w, x, 24 | y, &, *.

25 | 26 |

The simplest interpolation controls a single control point for a vertex 27 | relative to other points. For example, interpolating the vertex in the middle 28 | of the right side of a “B” can control it in the Y direction relative to the 29 | top and bottom of the center stem.

30 | 31 |

However, choices for interpolating can be more complicated. Consider the 32 | same center stem of the “B.” You’ll have to decide whether to interpolate the 33 | top or bottom of that stem relative to the top and bottom of the glyph. Either 34 | choice will result in problems at certain sizes that you can fix with exception 35 | hints (for details, see “Refining Pixel Patterns”). However, the better your 36 | choice, the fewer exception hints you’ll need to create, which reduces your 37 | work and the disk space required by the font.

38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /doc/help/html/04-03-01-02-Ex2-AlignBowls.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Example 2: Interpolating to Align Bowls 7 | 8 | 9 | 10 | 11 |

Example 2: Interpolating to Align Bowls

12 | 13 |

By design, the bottom bowl of a Times New Roman “B” is wider than the top 14 | bowl. With the previous interpolation, this design subtlety is apparent at 12 15 | points. However, the bowls appear equal at 10 points, staggered again at 8 16 | points, and aligned again at 6 points.

17 | 18 |

Additional instructions can make the bowls fall on the grid properly. First, 19 | links from the side-bearing points control the placement of the left stroke and 20 | the bottom round stroke. Next, interpolating between those links places the top 21 | round stroke in proportion to the left (straight) stroke and the bottom round 22 | stroke, like this:

23 | 24 |

Interpolating to align the bowls

26 | 27 |

Interpolating to align the bowls.

28 | 29 |

These hints align the bowls at the three smaller sizes:

30 | 31 |

Aligned bowls at 10 pointAligned bowls at 8 pointAligned bowls at 6 point

35 | 36 |

Aligned bowls at 10, 8, and 6 points and 96 dpi.

37 | 38 |

This example showed just one of many ways to align the bowls. Another 39 | approach might be to link the two round strokes. However, you cannot 40 | interpolate the bottom round stroke because it is not actually between 41 | “between” the left straight stroke and the top round stroke:

42 | 43 |

Incorrect attempt to interpolate a child point not between the parent
44 | points

46 | 47 |

Incorrect attempt to interpolate a child point not between the parent 48 | points.

49 | 50 |

Attempting this interpolation creates a circular dependency, which Visual 51 | TrueType won’t allow. A message will tell you what’s wrong, in this case 52 | interpolating between parent points:

53 | 54 |

Interpolation error dialog

56 | 57 |

Visual TrueType explains the interpolation error.

58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /doc/help/html/04-03-01-03-Ex3-AddSizes.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Example 3: Interpolating at Additional Sizes 7 | 8 | 9 | 10 | 11 |

Example 3: Interpolating at Additional Sizes

12 | 13 |

The interpolations in Example 1 and Example 2 have made a Times New Roman 14 | “B” that looks good at 12, 10, 8, and 6 points. However, you still must review 15 | the “B” at other sizes to see if the results are acceptable. In this case, the 16 | 7-point “B” doesn’t look as good as the adjacent sizes:

17 | 18 |

Times New Roman B at 8 pointTimes New Roman B at 7 pointTimes New Roman B at 6 point

22 | 23 |

Times New Roman “B” at 8, 7, and 6 points and 96 dpi.

24 | 25 |

Note the control point at the crotch of the two bowls. The interpolation 26 | moves the middle stroke up or down a little bit, and this point follows 27 | “accordingly.” At the even sizes (8 and 6 points), the control point hovers 28 | around the center of the pixel. At 7 points, however, “accordingly” positions 29 | the control point near the bottom of the pixel.

30 | 31 |

Correcting this requires more hinting to define “accordingly.” You can do 32 | that by interpolating the control point between the top and the bottom edge of 33 | the middle stroke:

34 | 35 |

Controlling more and more details

37 | 38 |

Controlling more and more details...

39 | 40 |

For clarity, the above illustration shows the interpolations with pixels 41 | turned off, but grid-fitting still on. Turning the pixels back on shows that 42 | the new interpolation has produced the desired results:

43 | 44 |

Revised B at 8 pointsRevised B at 7 pointsRevised B at 6 points

48 | 49 |

...for increasingly better results.

50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /doc/help/html/04-04-01-00-HintingDiagonals.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Hinting Diagonal Strokes 7 | 8 | 9 | 10 | 11 |

Hinting Diagonal Strokes

12 | 13 |

To hint diagonal strokes, you use the Stroke tool to define the width of 14 | each diagonal. Then, because other hinting might change the position of control 15 | points that are supposed to be aligned along the diagonal, you can assure their 16 | alignment.

17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /doc/help/html/04-04-02-00-HintingItalics.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Hinting Italic Glyphs 7 | 8 | 9 | 10 | 11 |

Hinting Italic Glyphs

12 | 13 |

Before adding links, interpolations, and other hinting to an italic font, 14 | you must do three tasks:

15 | 16 |

·       Enter 18 | the italic size run in the ‘cvt’ table (for the entire font).

19 | 20 |

·       Set 22 | the angle of the stroke (for each glyph).

23 | 24 |

·       Minimize 26 | stair-stepping pixels by changing the rounding method on control points.

27 | 28 |

The section describes those tasks. When you’ve finished, continue with 29 | conventional hinting.

30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /doc/help/html/04-04-02-02-RoundCPtsItalics.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Rounding Control Points on Italics 7 | 8 | 9 | 10 | 11 |

Rounding Control Points on Italics

12 | 13 |

When the control point has to give way (to comply with the rounding), you 14 | may want it to do so not in parallel to the grid line, but parallel (Y 15 | direction) or perpendicular (X direction) to the main stroke angle of the 16 | italic glyph you’re hinting. You can do so by changing the rounding methods on 17 | the control points of the italic glyphs.

18 | 19 |

You can change the rounding method of any control point while linking, interpolating, 20 | or shifting it. Just hold down the Shift key as you click the control point 21 | with the hinting tool. Visual TrueType displays the menu for rounding methods 22 | (for details, see Rounding Control 23 | Points).

24 | 25 |

For italics, you choose rounding methods from the middle and bottom rows of 26 | the menu:

27 | 28 |

·       The 30 | middle row specifies rounding in relation to the main stroke angle you measured 31 | for the glyph:
32 | Middle row of rounding methods

34 | 35 |

·       The 37 | bottom row specifies rounding in relation to the adjusted italic angle, which 38 | is the main stroke angle but adjusted to cross the baseline and the cap height 39 | at a pixel boundary:
40 | Middle row of rounding methods

42 | 43 |

Use this row when the diagonal strokes of the italic glyphs have an 44 | unattractive and distracting stair-step pattern.

45 | 46 |

However, rounding may not offer the subtle adjustments you need to correct 47 | every stair-step pattern. Sometimes, you may want to use the XMove and YMove 48 | tools. Both tools can move control points slightly off the grid (for example, 49 | one-fourth pixel), which isn’t possible by simple rounding. For details about 50 | using the XMove and YMove tools, see “Refining Pixel Patterns.”

51 | 52 |

Note The move tools shift a control point a set number of pixels, and 53 | the adjustment applies to all sizes of the glyph.

54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /doc/help/html/05-01-PreparingMainWindow.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Preparing the Main Window 7 | 8 | 9 | 10 | 11 |

Preparing the Main Window

12 | 13 |

Before you create a delta or move, you need to set up the main window 14 | correctly. Open the Display Options dialog and configure options as follows:

15 | 16 |

Set the Grid Fit option so that you can see the effects of your work at each 17 | ppem size. Exceptions apply only to a particular grid-fitted ppem size.

18 | 19 |

Set the Pixels option so the pixels immediately show the results of the 20 | exception.

21 | 22 |

Clear the Show Fewer Points option to display the off-curve points. 23 | Exceptions apply only to on-curve and off-curve control points, not to pixels. 24 | More control points mean more ways to tweak the outline, forcing the computer 25 | to choose different pixels, adding and removing to correct the problem.

26 | 27 |

Set the Grid Lines and Pixel Centers options so you can see if the exception 28 | extends the outline over a pixel center, causing Visual TrueType to turn a 29 | particular pixel on or off.

30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /doc/help/html/05-03-Example.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Example: Adding a Delta 7 | 8 | 9 | 10 | 11 |

Example: Adding a Delta

12 | 13 |

Consider this Times New Roman “O.” Despite links and anchors to align the 14 | symmetrical shape, the results need improvement:

15 | 16 |

After grid fitting, the “O” still has two “knees”

18 | 19 |

After grid fitting, the “O” still has two “knees.”

20 | 21 |

A delta of 1/8 pixel to the left eliminates the top knee:

22 | 23 |

After a 1/8-pixel delta at the top right

25 | 26 |

After a 1/8-pixel delta at the top right.

27 | 28 |

A second delta of 1/8-pixel to the right corrects the second knee:

29 | 30 |

After a second 1/8 pixel at the bottom left

32 | 33 |

After a second 1/8 pixel at the bottom left.

34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /doc/help/html/06-00-AdvancedHinting.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Advanced Hinting 7 | 8 | 9 | 10 | 11 |

Advanced Hinting

12 | 13 |

The graphical interface in Visual TrueType handles most hinting 14 | requirements. However, if you’re an advanced user or otherwise familiar with 15 | TrueType tables, you have more options. You can:

16 | 17 |

·       Make 19 | additional changes to the control value table (‘cvt’), as well as the ‘prep and 20 | ‘glyf’ tables used by Visual TrueType.

21 | 22 |

·       Import 24 | a glyph from another font to take advantage of hinting already done to it.

25 | 26 |

·       Do 28 | additional hinting in the VTT Talk window by entering text-based commands.

29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /doc/help/html/06-01-01-EditingText.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Editing Text 7 | 8 | 9 | 10 | 11 |

Editing Text

12 | 13 |

Some tables, such as the ‘cvt’ table, need more information from you, or you 14 | might insert commands to do hinting inherently not possible with Visual 15 | TrueType, such as function calls. If you have typography and TrueType 16 | expertise, you can edit the text.

17 | 18 |

To select text, use standard Windows techniques.

19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /doc/help/html/06-01-02-FindingText.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Finding Text 7 | 8 | 9 | 10 | 11 |

Finding Text

12 | 13 |

The fastest way to find a specific string of text is to search for it using 14 | the Find (Ctrl + F) and Find Again (F3) commands on the Edit menu.

15 | 16 |

Using the Find command, you can search the entire font. Or, if you want to 17 | narrow the search, you can limit it by clicking one or both check boxes:

18 | 19 |

Search All Glyphs/Characters searches all glyphs or characters, based on 20 | glyph index or character code specified with the Preferences command on the 21 | File menu (see “Setting Preferences”).

22 | 23 |

Case Sensitive specifies text whose uppercase and lowercase glyphs match 24 | what you type for Which Text.

25 | 26 |

Find text dialog

28 | 29 |

Type the text you want to find and, optionally, limit the search.

30 | 31 |

To look for another occurrence of the text last specified with the Find 32 | command, use the Find Next command.

33 | 34 |

To search for specific text

35 | 36 |

1.       On 38 | the Edit menu, select Find, or press Ctrl + F.

39 | 40 |

2.      Type 42 | the text you’re looking for.

43 | 44 |

3.      To 46 | search the entire font, click Search All Glyphs/Characters.
47 | If you select Find in the VTT Talk window, the search looks at the VTT Talk of 48 | each glyph. In the Glyph Program window, the search looks at the TrueType of 49 | each glyph. This option isn’t available in other text-based windows because the 50 | font has only one of each (there are only one each of the ‘cvt,’ ‘fpgm,’ and 51 | ‘prep’ tables) for all glyphs.
52 | If the text must match the capitalization in the Which Text text box, click 53 | Case Sensitive.

54 | 55 |

4.     Click 57 | Find.

58 | 59 |

To repeat the search

60 | 61 |

1.       62 | On the Edit menu, select Find Next, or press F3.

63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /doc/help/html/06-01-03-GotoLine.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Going to a Line 7 | 8 | 9 | 10 | 11 |

Going to a Line

12 | 13 |

Sometimes you will want to go to a particular line or entry. For example, the 14 | Font Error window may give the line number of an error in an OpenType table.

15 | 16 |

If you know the line number with the data you want to review or modify, this 17 | direct approach can be faster than scrolling through a lengthy table or data 18 | file.

19 | 20 |

Goto Line dialog

22 | 23 |

Type a line number from the selected text-based window.

24 | 25 |

If the compiler finds an error in the VTT Talk, TrueType, control value, 26 | font program, or pre-program window, Visual TrueType displays an error message, 27 | then opens the problem window and highlights the line cited in the error 28 | message.

29 | 30 |

To go to a line

31 | 32 |

1.       33 | On the Edit menu, select the Go To submenu and choose Line, or press 34 | Ctrl + L.

35 | 36 |

2.      37 | Type the line number to go to.

38 | 39 |

3.      40 | Click OK.

41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /doc/help/html/06-01-04-ImportingText.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Importing Text 7 | 8 | 9 | 10 | 11 |

Importing Text

12 | 13 |

You can import text into any text-based table, which saves time if the text 14 | already exists elsewhere.

15 | 16 |

For example, if most of the data in a ‘cvt’ table you completed for another 17 | font applies to the open font, you may want to use that ‘cvt’ table to replace 18 | the ‘cvt’ template that Visual TrueType imported when you prepared the font.

19 | 20 |

Note When another font has data you can use “as is” or with minor 21 | modification, export it as a text file (see “Exporting Text” next) and then 22 | import it into the font where it’s needed.

23 | 24 |

The imported text replaces everything in the selected window. Be sure this 25 | is what you want to do so you don’t lose data you want to keep.

26 | 27 |

Get in the habit of saving your font just before importing text. That way, 28 | if you import the text but change your mind, you can close your font—but when 29 | prompted, don’t save the version with the imported text. Then you can open the 30 | font again and resume with the saved version.

31 | 32 |

To replace the contents of a text-based window

33 | 34 |

1.       35 | Save your work by clicking Save on the File menu, or pressing Ctrl + S.

36 | 37 |

2.      38 | Select the window you want to replace with imported text by clicking on 39 | the window, choosing it in the View menu, or pressing its associated keyboard 40 | shortcut.

41 | 42 |

3.      43 | From the Import submenu of the File menu, click Text.

44 | 45 |

4.     46 | Locate and click the text file you want to import.

47 | 48 |

5.      49 | Click Open.

50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /doc/help/html/06-01-05-ExportingText.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Exporting Text 7 | 8 | 9 | 10 | 11 |

Exporting Text

12 | 13 |

You can export the contents of a text-based window and save it as a text 14 | file. Later, you can import that text file into another font or edit it with 15 | any text editor or word-processing software, such as WordPad or Microsoft Word. 16 |

17 | 18 |

This is handy, for example, if you want to export the Font Error window and 19 | then send that text file as an e-mail attachment to another typographer. Or you 20 | may want to save your completed ‘cvt’ table—you could use it with other fonts 21 | in the same family, or you could name it CvtTmpl.txt and save it in the Visual 22 | TrueType folder as a template.

23 | 24 |

To export a text-based window

25 | 26 |

1.       27 | Select the window you want to export by clicking on the window, choosing 28 | it in the View menu, or pressing its associated keyboard shortcut.

29 | 30 |

2.      31 | From the Export submenu of the File menu, click “Text from window”.

32 | 33 |

3.      34 | Specify where you want to save the new file.

35 | 36 |

4.     37 | Type the file name for the exported file.

38 | 39 |

5.      40 | Click Save.

41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /doc/help/html/06-01-07-00-ModifyingCVT.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Modifying the Cvt Table 7 | 8 | 9 | 10 | 11 |

Modifying the ‘Cvt’ Table

12 | 13 |

The control value table (‘cvt’) contains values defining lengths, widths, 14 | and angles of glyph features. Some values are specific to certain glyphs. Other 15 | values apply to the entire font or a group of glyphs, such as all uppercase 16 | characters. All control values have an identification (ID) number, as well as 17 | an attribute providing information about the type of glyph or feature to which 18 | it pertains (for details, see “Reading ‘Cvt’ Entries”).

19 | 20 |

Visual TrueType imports a template for the ‘cvt’ table when you prepare the 21 | font (see “Preparing the Open Font”). At any time, you can choose Control 22 | Values on theViews menu and modify the contents of that table three ways:

23 | 24 |

Fill in the control values indicated in the template, then add your own ‘cvt’ 25 | entries starting with the next available ID number.

26 | 27 |

Create the ‘cvt’ table from scratch by opening the Control Value window and 28 | replacing the template with entries you type (see “Editing Text”).

29 | 30 |

Import a ‘cvt’ table from another font to replace the contents of the 31 | Control Value window (see “Importing Text”).

32 | 33 |

All control values are in F-units scaled to the ppem height of the grid in 34 | use by the rasterizer.

35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /doc/help/html/06-01-07-01-AddingNewCVT.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Adding a New Cvt Entry 7 | 8 | 9 | 10 | 11 |

Adding a New ‘Cvt’ Entry

12 | 13 |

At any time, you can add a new entry to the ‘cvt’ table. You not only add 14 | the entry in the Control Value window, you also must define its ‘cvt’ 15 | attributes.

16 | 17 |

Each ‘cvt’ entry has an identification (ID) number, which roughly 18 | corresponds to its line number in the table. You can add the new entry at the 19 | end of the table, starting with the next available ID number, or you add it 20 | between any non-consecutive ID numbers.

21 | 22 |

You will have to type the ID number, the colon, the actual value in F-units, 23 | followed by the ‘cvt’ attribute (for details, see “Reading ‘Cvt’ Entries”). A 24 | typical entry would be:

25 | 26 |

157: 0

27 | 28 |

To add an entry to the ‘cvt’ table

29 | 30 |

1.       31 | Select the Control Program window by choosing it from the Views menu or 32 | by pressing Ctrl + 4.

33 | 34 |

2.      35 | In the Control Value window, click where you want to add the entry.

36 | 37 |

3.      38 | Type the entry.

39 | 40 |

4.     41 | Recompile the Control program by selecting CVT from the Compile submenu 42 | on the Tools menu, or press Ctrl + R.

43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /doc/help/html/06-01-07-02-ChangeCutIn.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Changing the Control Value Cut-In 7 | 8 | 9 | 10 | 11 |

Changing the Control Value Cut-In

12 | 13 |

Only advanced users highly experienced with TrueType should consider 14 | changing the control value cut-in and similar settings in the pre-program 15 | table. If you don’t have considerable experience with TrueType, leave those 16 | settings intact.

17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /doc/help/html/06-01-08-Composites.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Composite Characters: Using the glyf Table 7 | 8 | 9 | 10 | 11 |

Composite Characters: Using the ‘Glyf’ Table

12 | 13 |

If the ‘glyf’ table (that is, ‘glyf’ program) for a composite character like 14 | Å says “use my metrics,” you cannot use the Edit Metrics command (Ctrl + M) 15 | on the Edit menu to make changes. Instead, you must choose Glyph Program on the 16 | Views menu to display the ‘glyf’ table. There you can see which character the 17 | composite refers to. Then you can go to that character in the main window and 18 | edit its metrics.

19 | 20 |

If the composite doesn’t say “use my metrics,” you can use the Edit Metrics 21 | command—but only to edit the advance width. Visual TrueType calculates the left 22 | side-bearing based on the way it puts together the composite.

23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /doc/help/html/06-01-09-ImportingGlyph.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Importing a Glyph 7 | 8 | 9 | 10 | 11 |

Importing a Glyph

12 | 13 |

Importing a glyph or character replaces the current glyph with the outline 14 | of a glyph from another font, plus all its hinting (its current VTT Talk and 15 | the TrueType tables).

16 | 17 |

For example, you may want to start over on a particular glyph in a font. If 18 | you have a copy of an earlier version of the font, you can retrieve individual 19 | glyphs as needed.

20 | 21 |

Or, you may not be sure whether to hint a certain character as a composite 22 | glyph or as individual glyphs. For example, the font designer may have used 23 | Fontographer to created the glyph as a composite, but you find that you can’t 24 | hint it correctly. You can go back to Fontographer and create the character as 25 | an individual glyph and import it into the font for hinting.

26 | 27 |

Note If you import a composite character from a different font, the 28 | only change in the main window will be re-arrangement of the individual glyphs 29 | (that is, the components of the composite) according to the arrangement in the 30 | imported font.

31 | 32 |

You can import any glyph from any font, as long as you know the correct 33 | glyph index number.

34 | 35 |

To import a glyph or character

36 | 37 |

1.       38 | In the main window (Ctrl + 1), go to the glyph you want to 39 | replace with a new glyph or character.

40 | 41 |

2.      42 | Select import submenu of the File menu and choose Glyph, or press Ctrl + T.

43 | 44 |

3.      45 | Locate and click the font that contains the glyph or character you want 46 | to import.

47 | 48 |

4.     49 | In the Glyph Index text box, type the index number of the glyph.

50 | 51 |

5.      52 | Click Import.

53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /doc/help/html/06-01-10-VTTalkWindow.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Hinting in the VTT Talk Window 7 | 8 | 9 | 10 | 11 |

Hinting in the VTT Talk Window

12 | 13 |

The graphical interface does not offer all the commands of VTT Talk, either 14 | because the respective VTT Talk commands were seldom used or defy a graphical 15 | representation. For example, you can call a function from the Font Program, 16 | though there is no visual hinting command for this.

17 | 18 |

Because these instructions can change the state of the rasterizer, VTT will 19 | lock down the visual hinting tools in the main window whenever you use 20 | instructions that cannot be represented by visual hints. However, VTT will 21 | still display graphical representations of all supported VTT Talk commands. In 22 | addition, you still can compile the VTT Talk window and print the hinted font 23 | to see the results of your work.

24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /doc/help/html/08-01-Autohinting.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Introducing Visual TrueType 5 | 6 | 7 | 8 | 9 | 10 | 11 |

Light Latin Autohint

12 | 13 |

About

14 | 15 |

VTT includes an Autohinter for Latin fonts. This Autohinter makes use of a new lightweight hinting strategy that focuses on fitting common heights, such as x-height, Cap Height, Ascender, Descender to CVT heights. This strategy, takes advantage of Windows symmetric rendering modes and anchors these key heights to the grid, thereby maintaining consistency in heights across a font family. This method of grid-fitting also helps to reduce blur, and minimizes distortion.

16 | 17 |

Follow these steps to Autohint a Latin font:

18 | 19 |

 

20 | 21 |

Autohint Latin

23 | 24 |

1.       25 | Start Visual True Type.

26 | 27 |

2.      28 | File > Open. Navigate to font file you would like to Autohint.

29 | 30 |

3.      31 | Select Font File and Open.

32 | 33 |

4.     34 | From the Tools menu, select Autohint > Light Latin Autohint.

35 | 36 |

5.     37 | When Autohinting is complete choose Save from File Menu

38 | 39 | 40 |

Note No Autohinter, including this one, is perfect; the intent is that this Autohinter works well enough for most glyphs. Autohinting for all glyphs in the font should be carefully checked and proofed, and certain glyphs may need to be re-hinted manually, either by using the Visual Hinting tools, or by editing the VTT talk. Please see the sample font VTTDemo.ttf, that ships with VTT as a reference on best practices for hinting.

41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /doc/help/html/08-02-EAAutohinting.htm: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Introducing Visual TrueType 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |

East Asian Autohinter

13 | 14 |

About

15 | 16 |

VTT includes an Autohinter for East Asian fonts. This Autohinter makes use of a new lightweight hinting strategy that focuses on the horizontal strokes common in East Asian scripts. This strategy, takes advantage of Windows symmetric rendering modes and locks the bottom of strokes to the pixel grid while letting the top of strokes float, by using a ‘Shift’ command. This strategy balances edge contrast vs. blur and produces a good distribution of strokes with balanced counters. 17 |

18 | 19 |

Note: When the East Asian autohinter is run, on an EA font, the Latin portion of the font will be automatically hinted using the same hinting stragety as used by the Light Latin Autohinter.

20 |

Follow these steps to Autohint an East Asian font:

21 | 22 |

 

23 | 24 |

Autohint Latin

26 | 27 |

1.       28 | Start Visual True Type.

29 | 30 |

2.      31 | File > Open. Navigate to font file you would like to Autohint.

32 | 33 |

3.      34 | Select Font File and Open.

35 | 36 |

4.     37 | From the Tools menu, select Autohint > East Asian AutoHint.

38 | 39 |

5.     40 | When Autohinting is complete choose Save from File Menu

41 | 42 | 43 |

Note: This simpler automatically generated instruction set will allow for easier editing by a typographer. The intent is that the Autohinter works well enough for most glyphs, leaving a smaller percentage that will need manual touch-up. These fixes might include changes to fix symmetry or proportion issues. No Autohinter, method can produce perfect results. Extensive Proofing of the Automatically generated hints, is highly recommended before shipping a font file.

44 | 45 |

Note: On complex fonts, the progress indictor may stop updating and the Autohinter may appear to have hung. Generally, the Autohinter is still running and will complete in just a few moments. As a time reference, Autohinting a 28,000 glyph Asian font on an average laptop takes just under one minute.

46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /doc/help/images/Anchors-HO-13ppem.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Anchors-HO-13ppem.gif -------------------------------------------------------------------------------- /doc/help/images/Anchors-HO-14ppem.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Anchors-HO-14ppem.gif -------------------------------------------------------------------------------- /doc/help/images/Anchors-HO-15ppem.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Anchors-HO-15ppem.gif -------------------------------------------------------------------------------- /doc/help/images/Anchors-O-CVT.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Anchors-O-CVT.gif -------------------------------------------------------------------------------- /doc/help/images/Anchors-O-NoCVT.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Anchors-O-NoCVT.gif -------------------------------------------------------------------------------- /doc/help/images/CVTlist.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/CVTlist.gif -------------------------------------------------------------------------------- /doc/help/images/CVTlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/CVTlist.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-Align.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-Align.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-Angle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-Angle.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-Measure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-Measure.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-Navigate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-Navigate.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-PtDelete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-PtDelete.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-PtInsert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-PtInsert.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-PtMove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-PtMove.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-PtSwap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-PtSwap.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-Stroke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-Stroke.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-XDelta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-XDelta.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-XInterpolate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-XInterpolate.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-XLink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-XLink.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-XMove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-XMove.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-XShift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-XShift.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-YDelta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-YDelta.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-YInterpolate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-YInterpolate.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-YLink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-YLink.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-YMove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-YMove.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-YShift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-YShift.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-ZoomIn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-ZoomIn.png -------------------------------------------------------------------------------- /doc/help/images/Cursor-ZoomOut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Cursor-ZoomOut.png -------------------------------------------------------------------------------- /doc/help/images/Defaultinstance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Defaultinstance.png -------------------------------------------------------------------------------- /doc/help/images/Display-Size-Other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Display-Size-Other.png -------------------------------------------------------------------------------- /doc/help/images/DisplayOptions-Color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/DisplayOptions-Color.png -------------------------------------------------------------------------------- /doc/help/images/DisplayOptions-Glyph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/DisplayOptions-Glyph.png -------------------------------------------------------------------------------- /doc/help/images/DisplayOptions-Resolution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/DisplayOptions-Resolution.png -------------------------------------------------------------------------------- /doc/help/images/DisplayVariationView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/DisplayVariationView.png -------------------------------------------------------------------------------- /doc/help/images/EAAutohinter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/EAAutohinter.png -------------------------------------------------------------------------------- /doc/help/images/Edit-CVTAttributes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Edit-CVTAttributes.png -------------------------------------------------------------------------------- /doc/help/images/Edit-GotoLine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Edit-GotoLine.png -------------------------------------------------------------------------------- /doc/help/images/Edit-Metrics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Edit-Metrics.png -------------------------------------------------------------------------------- /doc/help/images/Edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Edit.png -------------------------------------------------------------------------------- /doc/help/images/EditGasp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/EditGasp.png -------------------------------------------------------------------------------- /doc/help/images/EditGotoGlyph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/EditGotoGlyph.png -------------------------------------------------------------------------------- /doc/help/images/Error-CircularDependency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Error-CircularDependency.png -------------------------------------------------------------------------------- /doc/help/images/Error-Extrapolation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Error-Extrapolation.png -------------------------------------------------------------------------------- /doc/help/images/FileOpen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/FileOpen.png -------------------------------------------------------------------------------- /doc/help/images/FileSaveAs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/FileSaveAs.png -------------------------------------------------------------------------------- /doc/help/images/Find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Find.png -------------------------------------------------------------------------------- /doc/help/images/Followgasp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Followgasp.png -------------------------------------------------------------------------------- /doc/help/images/Hinting-Outlines.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Hinting-Outlines.gif -------------------------------------------------------------------------------- /doc/help/images/Hinting-Pixels.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Hinting-Pixels.gif -------------------------------------------------------------------------------- /doc/help/images/IndicateCTAA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/IndicateCTAA.png -------------------------------------------------------------------------------- /doc/help/images/IndicateGS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/IndicateGS.png -------------------------------------------------------------------------------- /doc/help/images/Intermediate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Intermediate.png -------------------------------------------------------------------------------- /doc/help/images/LatinAuto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/LatinAuto.png -------------------------------------------------------------------------------- /doc/help/images/Main-MeasureTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Main-MeasureTool.png -------------------------------------------------------------------------------- /doc/help/images/MainWindow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/MainWindow.png -------------------------------------------------------------------------------- /doc/help/images/MeasureTool-Use.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/MeasureTool-Use.png -------------------------------------------------------------------------------- /doc/help/images/Minus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Minus.png -------------------------------------------------------------------------------- /doc/help/images/MinusOne.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/MinusOne.png -------------------------------------------------------------------------------- /doc/help/images/Options-Appearance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Options-Appearance.png -------------------------------------------------------------------------------- /doc/help/images/Options-File Locations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Options-File Locations.png -------------------------------------------------------------------------------- /doc/help/images/Options-Settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Options-Settings.png -------------------------------------------------------------------------------- /doc/help/images/Plusminusedit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Plusminusedit.png -------------------------------------------------------------------------------- /doc/help/images/Print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Print.png -------------------------------------------------------------------------------- /doc/help/images/Rounding-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Rounding-1.gif -------------------------------------------------------------------------------- /doc/help/images/Rounding-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Rounding-2.gif -------------------------------------------------------------------------------- /doc/help/images/Rounding-3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Rounding-3.gif -------------------------------------------------------------------------------- /doc/help/images/Rounding-4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Rounding-4.gif -------------------------------------------------------------------------------- /doc/help/images/Rounding-5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Rounding-5.gif -------------------------------------------------------------------------------- /doc/help/images/Rounding-6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Rounding-6.gif -------------------------------------------------------------------------------- /doc/help/images/Rounding-X.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Rounding-X.gif -------------------------------------------------------------------------------- /doc/help/images/Rounding-Y.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Rounding-Y.gif -------------------------------------------------------------------------------- /doc/help/images/RoundingEx1-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/RoundingEx1-1.gif -------------------------------------------------------------------------------- /doc/help/images/RoundingEx1-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/RoundingEx1-2.gif -------------------------------------------------------------------------------- /doc/help/images/RoundingEx1-3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/RoundingEx1-3.gif -------------------------------------------------------------------------------- /doc/help/images/RoundingEx1-4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/RoundingEx1-4.gif -------------------------------------------------------------------------------- /doc/help/images/RoundingEx1-5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/RoundingEx1-5.gif -------------------------------------------------------------------------------- /doc/help/images/RoundingEx1-6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/RoundingEx1-6.gif -------------------------------------------------------------------------------- /doc/help/images/RoundingEx2-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/RoundingEx2-1.gif -------------------------------------------------------------------------------- /doc/help/images/RoundingEx2-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/RoundingEx2-2.gif -------------------------------------------------------------------------------- /doc/help/images/RoundingEx2-3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/RoundingEx2-3.gif -------------------------------------------------------------------------------- /doc/help/images/Steps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Steps.png -------------------------------------------------------------------------------- /doc/help/images/ToolBarPlusMinus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/ToolBarPlusMinus.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-Align.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-Align.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-Changer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-Changer.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-Measure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-Measure.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-Navigate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-Navigate.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-PtAngle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-PtAngle.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-PtDelete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-PtDelete.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-PtInsert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-PtInsert.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-PtMove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-PtMove.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-PtSwap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-PtSwap.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-SizeRun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-SizeRun.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-Snapshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-Snapshot.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-Stroke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-Stroke.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-XDelta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-XDelta.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-XInter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-XInter.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-XLink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-XLink.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-XMove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-XMove.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-XShift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-XShift.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-YDelta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-YDelta.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-YInter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-YInter.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-YLink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-YLink.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-YMove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-YMove.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-YShift.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-YShift.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-ZoomIn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-ZoomIn.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar-ZoomOut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar-ZoomOut.png -------------------------------------------------------------------------------- /doc/help/images/Toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/Toolbar.png -------------------------------------------------------------------------------- /doc/help/images/ToolbarButtons.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/ToolbarButtons.psd -------------------------------------------------------------------------------- /doc/help/images/ToolsPrepare.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/ToolsPrepare.png -------------------------------------------------------------------------------- /doc/help/images/ToolsPrepareConfirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/ToolsPrepareConfirm.png -------------------------------------------------------------------------------- /doc/help/images/ToolsShip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/ToolsShip.png -------------------------------------------------------------------------------- /doc/help/images/VFMainWindow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/VFMainWindow.png -------------------------------------------------------------------------------- /doc/help/images/VFWindowSetup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/VFWindowSetup.png -------------------------------------------------------------------------------- /doc/help/images/VarPlus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/VarPlus.png -------------------------------------------------------------------------------- /doc/help/images/VariationView.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/VariationView.png -------------------------------------------------------------------------------- /doc/help/images/bm100.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm100.gif -------------------------------------------------------------------------------- /doc/help/images/bm102.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm102.gif -------------------------------------------------------------------------------- /doc/help/images/bm103.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm103.gif -------------------------------------------------------------------------------- /doc/help/images/bm104.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm104.gif -------------------------------------------------------------------------------- /doc/help/images/bm105.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm105.gif -------------------------------------------------------------------------------- /doc/help/images/bm114.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm114.gif -------------------------------------------------------------------------------- /doc/help/images/bm115.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm115.gif -------------------------------------------------------------------------------- /doc/help/images/bm116.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm116.gif -------------------------------------------------------------------------------- /doc/help/images/bm117.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm117.gif -------------------------------------------------------------------------------- /doc/help/images/bm118.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm118.gif -------------------------------------------------------------------------------- /doc/help/images/bm119.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm119.gif -------------------------------------------------------------------------------- /doc/help/images/bm120.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm120.gif -------------------------------------------------------------------------------- /doc/help/images/bm121.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm121.gif -------------------------------------------------------------------------------- /doc/help/images/bm122.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm122.gif -------------------------------------------------------------------------------- /doc/help/images/bm123.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm123.gif -------------------------------------------------------------------------------- /doc/help/images/bm124.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm124.gif -------------------------------------------------------------------------------- /doc/help/images/bm125.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm125.gif -------------------------------------------------------------------------------- /doc/help/images/bm126.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm126.gif -------------------------------------------------------------------------------- /doc/help/images/bm127.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm127.gif -------------------------------------------------------------------------------- /doc/help/images/bm129.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm129.gif -------------------------------------------------------------------------------- /doc/help/images/bm130.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm130.gif -------------------------------------------------------------------------------- /doc/help/images/bm131.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm131.gif -------------------------------------------------------------------------------- /doc/help/images/bm132.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm132.gif -------------------------------------------------------------------------------- /doc/help/images/bm133.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm133.gif -------------------------------------------------------------------------------- /doc/help/images/bm134.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm134.gif -------------------------------------------------------------------------------- /doc/help/images/bm135.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm135.gif -------------------------------------------------------------------------------- /doc/help/images/bm138.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm138.gif -------------------------------------------------------------------------------- /doc/help/images/bm141.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm141.gif -------------------------------------------------------------------------------- /doc/help/images/bm144.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm144.gif -------------------------------------------------------------------------------- /doc/help/images/bm146.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm146.gif -------------------------------------------------------------------------------- /doc/help/images/bm147.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm147.gif -------------------------------------------------------------------------------- /doc/help/images/bm156.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm156.gif -------------------------------------------------------------------------------- /doc/help/images/bm157.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm157.gif -------------------------------------------------------------------------------- /doc/help/images/bm158.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm158.gif -------------------------------------------------------------------------------- /doc/help/images/bm159.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm159.gif -------------------------------------------------------------------------------- /doc/help/images/bm160.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm160.gif -------------------------------------------------------------------------------- /doc/help/images/bm3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm3.gif -------------------------------------------------------------------------------- /doc/help/images/bm30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm30.gif -------------------------------------------------------------------------------- /doc/help/images/bm31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm31.gif -------------------------------------------------------------------------------- /doc/help/images/bm32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm32.gif -------------------------------------------------------------------------------- /doc/help/images/bm33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm33.gif -------------------------------------------------------------------------------- /doc/help/images/bm34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm34.gif -------------------------------------------------------------------------------- /doc/help/images/bm35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm35.gif -------------------------------------------------------------------------------- /doc/help/images/bm36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm36.gif -------------------------------------------------------------------------------- /doc/help/images/bm37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm37.gif -------------------------------------------------------------------------------- /doc/help/images/bm38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm38.gif -------------------------------------------------------------------------------- /doc/help/images/bm39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm39.gif -------------------------------------------------------------------------------- /doc/help/images/bm4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm4.gif -------------------------------------------------------------------------------- /doc/help/images/bm40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm40.gif -------------------------------------------------------------------------------- /doc/help/images/bm41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm41.gif -------------------------------------------------------------------------------- /doc/help/images/bm42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm42.gif -------------------------------------------------------------------------------- /doc/help/images/bm43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm43.gif -------------------------------------------------------------------------------- /doc/help/images/bm44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm44.gif -------------------------------------------------------------------------------- /doc/help/images/bm45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm45.gif -------------------------------------------------------------------------------- /doc/help/images/bm46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm46.gif -------------------------------------------------------------------------------- /doc/help/images/bm47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm47.gif -------------------------------------------------------------------------------- /doc/help/images/bm48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm48.gif -------------------------------------------------------------------------------- /doc/help/images/bm49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm49.gif -------------------------------------------------------------------------------- /doc/help/images/bm5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm5.gif -------------------------------------------------------------------------------- /doc/help/images/bm50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm50.gif -------------------------------------------------------------------------------- /doc/help/images/bm51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm51.gif -------------------------------------------------------------------------------- /doc/help/images/bm52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm52.gif -------------------------------------------------------------------------------- /doc/help/images/bm53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm53.gif -------------------------------------------------------------------------------- /doc/help/images/bm54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm54.gif -------------------------------------------------------------------------------- /doc/help/images/bm55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm55.gif -------------------------------------------------------------------------------- /doc/help/images/bm56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm56.gif -------------------------------------------------------------------------------- /doc/help/images/bm57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm57.gif -------------------------------------------------------------------------------- /doc/help/images/bm58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm58.gif -------------------------------------------------------------------------------- /doc/help/images/bm59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm59.gif -------------------------------------------------------------------------------- /doc/help/images/bm6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm6.gif -------------------------------------------------------------------------------- /doc/help/images/bm60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm60.gif -------------------------------------------------------------------------------- /doc/help/images/bm61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm61.gif -------------------------------------------------------------------------------- /doc/help/images/bm62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm62.gif -------------------------------------------------------------------------------- /doc/help/images/bm63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm63.gif -------------------------------------------------------------------------------- /doc/help/images/bm64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm64.gif -------------------------------------------------------------------------------- /doc/help/images/bm65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm65.gif -------------------------------------------------------------------------------- /doc/help/images/bm66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm66.gif -------------------------------------------------------------------------------- /doc/help/images/bm67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm67.gif -------------------------------------------------------------------------------- /doc/help/images/bm68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm68.gif -------------------------------------------------------------------------------- /doc/help/images/bm69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm69.gif -------------------------------------------------------------------------------- /doc/help/images/bm7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm7.gif -------------------------------------------------------------------------------- /doc/help/images/bm70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm70.gif -------------------------------------------------------------------------------- /doc/help/images/bm71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm71.gif -------------------------------------------------------------------------------- /doc/help/images/bm72.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm72.gif -------------------------------------------------------------------------------- /doc/help/images/bm73.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm73.gif -------------------------------------------------------------------------------- /doc/help/images/bm74.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm74.gif -------------------------------------------------------------------------------- /doc/help/images/bm75.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm75.gif -------------------------------------------------------------------------------- /doc/help/images/bm76.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm76.gif -------------------------------------------------------------------------------- /doc/help/images/bm77.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm77.gif -------------------------------------------------------------------------------- /doc/help/images/bm78.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm78.gif -------------------------------------------------------------------------------- /doc/help/images/bm79.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm79.gif -------------------------------------------------------------------------------- /doc/help/images/bm8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm8.gif -------------------------------------------------------------------------------- /doc/help/images/bm80.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm80.gif -------------------------------------------------------------------------------- /doc/help/images/bm81.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm81.gif -------------------------------------------------------------------------------- /doc/help/images/bm82.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm82.gif -------------------------------------------------------------------------------- /doc/help/images/bm83.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm83.gif -------------------------------------------------------------------------------- /doc/help/images/bm84.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm84.gif -------------------------------------------------------------------------------- /doc/help/images/bm85.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm85.gif -------------------------------------------------------------------------------- /doc/help/images/bm86.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm86.gif -------------------------------------------------------------------------------- /doc/help/images/bm87.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm87.gif -------------------------------------------------------------------------------- /doc/help/images/bm88.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm88.gif -------------------------------------------------------------------------------- /doc/help/images/bm89.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm89.gif -------------------------------------------------------------------------------- /doc/help/images/bm9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm9.gif -------------------------------------------------------------------------------- /doc/help/images/bm90.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm90.gif -------------------------------------------------------------------------------- /doc/help/images/bm91.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm91.gif -------------------------------------------------------------------------------- /doc/help/images/bm92.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm92.gif -------------------------------------------------------------------------------- /doc/help/images/bm93.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm93.gif -------------------------------------------------------------------------------- /doc/help/images/bm94.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm94.gif -------------------------------------------------------------------------------- /doc/help/images/bm95.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm95.gif -------------------------------------------------------------------------------- /doc/help/images/bm96.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm96.gif -------------------------------------------------------------------------------- /doc/help/images/bm97.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm97.gif -------------------------------------------------------------------------------- /doc/help/images/bm98.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm98.gif -------------------------------------------------------------------------------- /doc/help/images/bm99.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/bm99.gif -------------------------------------------------------------------------------- /doc/help/images/cvtonly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/cvtonly.png -------------------------------------------------------------------------------- /doc/help/images/placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/images/placeholder.png -------------------------------------------------------------------------------- /doc/help/vtt.chm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/vtt.chm -------------------------------------------------------------------------------- /doc/help/vtt.chw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/doc/help/vtt.chw -------------------------------------------------------------------------------- /pypi.md: -------------------------------------------------------------------------------- 1 | # Project 2 | 3 | VTTCompilePy is a Python extension built using Cython. It provides streamlined bindings for 4 | various compilers from Visual TrueType. 5 | 6 | VTTCompilePy was developed to support a Python based font development environment. In addition to the Python interface, 7 | a command line interface is also installed. Usage is available with "vttcompilepy --help". 8 | 9 | ### Example 10 | 11 | ```python 12 | import sys 13 | from pathlib import Path 14 | import vttcompilepy as vtt 15 | 16 | TESTDATA = Path(__file__).parent / "data" 17 | IN_PATH = TESTDATA / "selawik-variable.ttf" 18 | OUT_PATH = TESTDATA / "out.ttf" 19 | 20 | print(bytes(IN_PATH)) 21 | 22 | print('VTTCompilePy Test Client') 23 | 24 | compiler = vtt.Compiler(IN_PATH) 25 | 26 | compiler.compile_all() 27 | 28 | compiler.save_font(OUT_PATH, vtt.StripLevel.STRIP_NOTHING) 29 | 30 | ``` 31 | 32 | ## Trademarks 33 | 34 | This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft 35 | trademarks or logos is subject to and must follow 36 | [Microsoft's Trademark & Brand Guidelines](https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general). 37 | Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. 38 | Any use of third-party trademarks or logos are subject to those third-party's policies. 39 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = [ 3 | "setuptools", 4 | "wheel", 5 | "cython", 6 | ] 7 | build-backend = "setuptools.build_meta" 8 | 9 | [tool.cibuildwheel] 10 | skip = ["*-manylinux_i686", "pp*"] 11 | 12 | test-requires = ["pytest", "fonttools"] 13 | test-command = "pytest {project}/tests" 14 | 15 | [tool.cibuildwheel.macos] 16 | archs = ["x86_64", "universal2", "arm64"] 17 | -------------------------------------------------------------------------------- /requirements-dev.txt: -------------------------------------------------------------------------------- 1 | cython>=0.29.1 2 | 3 | wheel>=0.31 4 | 5 | pytest 6 | 7 | fonttools 8 | 9 | setuptools 10 | 11 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [sdist] 2 | formats = zip 3 | 4 | [metadata] 5 | license_files = 6 | LICENSE.txt 7 | -------------------------------------------------------------------------------- /src/.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | BasedOnStyle: LLVM 3 | UseTab: Always 4 | TabWidth: 4 5 | IndentWidth: 4 6 | ColumnLimit: 0 7 | 8 | BreakBeforeBraces: Custom 9 | BraceWrapping: 10 | AfterClass: true 11 | AfterControlStatement: true 12 | AfterEnum: true 13 | AfterFunction: true 14 | AfterNamespace: true 15 | AfterStruct: true 16 | AfterUnion: true 17 | BeforeCatch: true 18 | BeforeElse: true 19 | --- 20 | Language: Cpp 21 | # Force pointers to the type for C++. 22 | DerivePointerAlignment: false 23 | PointerAlignment: Left 24 | NamespaceIndentation: All 25 | -------------------------------------------------------------------------------- /src/File.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | class File 7 | { 8 | public: 9 | bool Error(void); 10 | 11 | explicit File(void); 12 | virtual ~File(void); 13 | virtual void OpenOld(const std::string &fileName); 14 | virtual void OpenNew(const std::string &fileName); 15 | virtual int32_t Length(void); 16 | virtual void SetPos(int32_t pos, bool truncate); 17 | virtual int32_t GetPos(void); 18 | virtual void ReadBytes(int32_t numBytes, void *buffer); 19 | virtual void ReadUnicode(int32_t *len, wchar_t **text); 20 | virtual void WriteBytes(int32_t numBytes, void *buffer); 21 | virtual void Close(bool truncate); 22 | private: 23 | bool m_error; 24 | void *m_hfile; 25 | std::string m_fileName; 26 | }; 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/List.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | #include 4 | 5 | #ifndef List_dot_h 6 | #define List_dot_h 7 | 8 | class ListMessage { 9 | public: 10 | ListMessage(void); 11 | virtual ~ListMessage(void); 12 | int32_t type; // application specific poor people's type tag... 13 | private: 14 | }; 15 | 16 | class ListElem { 17 | public: 18 | ListElem(void); 19 | virtual void Clone(ListElem **into); // sort of a copy constructor 20 | virtual ~ListElem(void); 21 | virtual void Receive(ListMessage *message, bool forward); 22 | ListElem *prev,*next; // to be considered read-only for clients 23 | }; 24 | 25 | class ListStruct { 26 | public: 27 | ListStruct(void); 28 | virtual void Clone(ListStruct **into); // sort of a copy constructor 29 | virtual ~ListStruct(void); 30 | virtual void InsertAtStart(ListElem *that); // abstract 31 | virtual void InsertBefore(ListElem *that, ListElem *before); // abstract 32 | virtual void InsertAfter (ListElem *that, ListElem *after); // abstract 33 | virtual void InsertAtEnd(ListElem *that); // abstract 34 | virtual void Remove(ListElem *that); // abstract 35 | virtual void Broadcast(ListMessage *message, bool forward); 36 | static void Delete(ListStruct **list); 37 | int32_t elems; // to be considered read-only for clients 38 | ListElem *first,*last; // to be considered read-only for clients 39 | }; 40 | 41 | class LinearListStruct : public ListStruct { 42 | public: 43 | LinearListStruct(void); 44 | virtual void Clone(ListStruct **into); // sort of a copy constructor 45 | virtual ~LinearListStruct(void); 46 | virtual void InsertAtStart(ListElem *that); 47 | virtual void InsertBefore(ListElem *that, ListElem *before); 48 | virtual void InsertAfter (ListElem *that, ListElem *after); 49 | virtual void InsertAtEnd(ListElem *that); 50 | virtual void Remove(ListElem *that); 51 | }; 52 | 53 | #endif // List_dot_h -------------------------------------------------------------------------------- /src/Makefile: -------------------------------------------------------------------------------- 1 | OBJS = \ 2 | CvtManager.o File.o List.o MathUtils.o Memory.o Platform.o TextBuffer.o \ 3 | TMTParser.o TTAssembler.o TTEngine.o TTFont.o TTGenerator.o Variation.o \ 4 | VariationInstance.o VariationModels.o vttcompile.o application.o ttiua.o 5 | 6 | .cpp.o : 7 | 8 | .PHONY : clean 9 | 10 | default: vttcompile 11 | 12 | vttcompile: $(OBJS) 13 | $(CXX) $(CXXFLAGS) -o $@ $^ 14 | 15 | clean : 16 | $(RM) $(OBJS) vttcompile vttcompile.exe 17 | -------------------------------------------------------------------------------- /src/Memory.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | 4 | #define _CRT_SECURE_NO_DEPRECATE 5 | 6 | #include // swprintf 7 | #include 8 | #include "Memory.h" 9 | 10 | void *NewP(size_t bytes) { 11 | void *ptr = malloc(bytes); 12 | return ptr; 13 | } // NewP 14 | 15 | void DisposeP(void** ptr) { 16 | free(*ptr); 17 | *ptr = NULL; 18 | } // DisposeP 19 | 20 | -------------------------------------------------------------------------------- /src/Memory.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | void *NewP(size_t bytes); 7 | void DisposeP(void** ptr); 8 | -------------------------------------------------------------------------------- /src/Platform.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | 4 | #define _CRT_SECURE_NO_WARNINGS 5 | 6 | #include "pch.h" 7 | 8 | #include 9 | #include // _timeb, _ftime 10 | #include // mbstowcs 11 | #include // strlen 12 | 13 | #define TIME_FIX 2082844800ll // pc time 1970 - mac time 1904 14 | 15 | long long DateTime(void) { 16 | struct timeb tstruct; 17 | 18 | // _tzset(); 19 | ftime(&tstruct); 20 | 21 | // it seems that we don't have to worry about the time zone, _ftime does that for us 22 | return (long long)tstruct.time + TIME_FIX /* 60*(long)(tstruct.timezone) */; 23 | } // DateTime 24 | 25 | void DateTimeStrg(wchar_t strg[]) { 26 | time_t dateTime; 27 | 28 | time(&dateTime); 29 | #ifndef _WIN32 30 | char *cstring = ctime(&dateTime); 31 | mbstowcs(strg, cstring, strlen(cstring) + 1 /* the final '\0' */); 32 | #else 33 | STRCPYW(strg, _wctime(&dateTime)); 34 | #endif 35 | strg[STRLENW(strg) - 1] = L'\0'; // get rid of \n... 36 | } // DateTimeStrg -------------------------------------------------------------------------------- /src/Platform.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | #pragma once 4 | 5 | typedef enum { 6 | plat_Unicode, 7 | plat_Macintosh, 8 | plat_ISO, 9 | plat_MS 10 | } sfnt_PlatformEnum; 11 | 12 | #define maxBooleans 2 13 | 14 | #define VTTVersionString L"6.35" 15 | 16 | typedef enum { set, inquire, reset } Trinary; 17 | 18 | typedef uint32_t UChar32; 19 | 20 | #ifndef F26Dot6 21 | #define F26Dot6 int32_t 22 | #endif 23 | #define places6 6L 24 | #define two6 0x80L 25 | #define one6 0x40L 26 | #define half6 0x20L 27 | #define Round6(x) (((x) + half6) >> places6) 28 | 29 | #define F16Dot16 int32_t 30 | 31 | #define PixelOfPt(pt,dpi) (((pt)*(dpi) + 36)/72) 32 | 33 | #ifndef Min 34 | #define Min(a,b) ((a) < (b) ? (a) : (b)) 35 | #endif 36 | #ifndef Max 37 | #define Max(a,b) ((a) > (b) ? (a) : (b)) 38 | #endif 39 | #ifndef Sgn 40 | #define Sgn(a) ((a) < 0 ? -1 : ((a) > 0 ? 1 : 0)) 41 | #endif 42 | #ifndef Sgn3 43 | #define Sgn3(x) (x == 0 ? 0 : Sgn(x)) 44 | #endif 45 | #ifndef Abs 46 | #define Abs(x) ((x) < 0 ? (-(x)) : (x)) 47 | #endif 48 | #ifndef Len 49 | #define Len(a) ((int32_t)(sizeof(a)/sizeof(a[0]))) 50 | #endif 51 | 52 | #define Cap(ch) (L'a' <= (ch) && (ch) <= L'z' ? ((wchar_t)((short)(ch) - ((short)'a' - (short)'A'))) : (ch)) 53 | 54 | #ifndef DivRound 55 | #define DivRound(x,y) ((x) < 0 ? (-((-(x) + (y)/2)/(y))) : (((x) + (y)/2)/(y))) 56 | #endif 57 | 58 | #ifndef DivFloor 59 | #define DivFloor(x,y) ((x) < 0 ? (((x) - (y - 1))/(y)) : ((x)/(y))) // y > 0 60 | #endif 61 | 62 | #ifndef DivCeil 63 | #define DivCeil(x,y) ((x) < 0 ? ((x)/(y)) : (((x) + (y - 1))/(y))) // y > 0 64 | #endif 65 | 66 | #ifndef pi 67 | #define pi (3.1415926535897932384626433832795) // (3.1415926535) 68 | #endif 69 | 70 | #ifndef Rad 71 | #define Rad(deg) ((deg)*pi/180) 72 | #endif 73 | 74 | #ifndef Deg 75 | #define Deg(rad) ((rad)*180/pi) 76 | #endif 77 | 78 | #define BULLET L"*" 79 | #define BRK L"\n" 80 | #define IntelOrMac(x,y) x 81 | #define maxStdEditBufSize 65531 // don't push the limits, or else the standard edit control will choke on Win9x 82 | 83 | #define MapSystemColor(color) (Shade)((int32_t)(color) + systemColor) 84 | 85 | #define LF L'\n' 86 | #define CR L'\r' 87 | 88 | typedef enum { modeCopy = 0, modeOr, modeXor, modeBic } Mode; 89 | typedef enum { black = 0, blue, green, cyan, red, magenta, yellow, white, darkBlack, darkBlue, darkGreen, darkCyan, darkRed, darkMagenta, darkYellow, darkWhite, custom } Color; 90 | typedef enum { solid = 0, darkGrey, grey, lightGrey, empty, horizontal, vertical, darkDiagonal, lightDiagonal, darkarrow, midarrow, lightarrow, systemColor } Shade; 91 | 92 | #define iconWidth 32 93 | #define iconHeight 32 94 | 95 | #define maxMenus 16 96 | #define maxIcons 64 97 | 98 | #define maxLineSize 0x100 99 | 100 | 101 | 102 | #define PtoCStr CtoPStr 103 | #define CtoPStr(str1, str2) wcscpy(str2, str1) 104 | 105 | long long DateTime(void); 106 | void DateTimeStrg(wchar_t strg[]); 107 | 108 | 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /src/TMTParser.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | 4 | #ifndef TMTParser_dot_h 5 | #define TMTParser_dot_h 6 | 7 | class TMTParser { 8 | public: 9 | virtual void Parse(bool *changedSrc, int32_t *errPos, int32_t *errLen, wchar_t errMsg[], size_t errMsgLen); 10 | #if _DEBUG 11 | virtual void RemoveAltCodePath(bool *changedSrc, int32_t *errPos, int32_t *errLen, wchar_t error[], size_t errorLen); 12 | #endif 13 | virtual void InitTMTParser(TextBuffer *talkText, TrueTypeFont *font, TrueTypeGlyph *glyph, bool legacyCompile, short generators, TTGenerator *gen[]); 14 | virtual void TermTMTParser(void); 15 | TMTParser(void); 16 | virtual ~TMTParser(void); 17 | }; 18 | 19 | TMTParser *NewTMTSourceParser(void); 20 | bool TMTCompile(TextBuffer *talkText, TrueTypeFont *font, TrueTypeGlyph *glyph, int32_t glyphIndex, TextBuffer *glyfText, bool legacyCompile, int32_t *errPos, int32_t *errLen, wchar_t errMsg[], size_t errMsgLen); // returns true if compilation completed successfully 21 | 22 | #if _DEBUG 23 | bool TMTRemoveAltCodePath(TextBuffer *talkText, TrueTypeFont *font, TrueTypeGlyph *glyph, int32_t *errPos, int32_t *errLen, wchar_t errMsg[], size_t errMsgLen); 24 | #endif 25 | 26 | #endif // TMTParser_dot_h -------------------------------------------------------------------------------- /src/TTAssembler.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | 4 | #ifndef TTAssembler_dot_h 5 | #define TTAssembler_dot_h 6 | 7 | #define co_AnchorArgExceedMax 112 8 | #define co_AnchorNothingAbove 113 9 | #define co_ComponentSizeOverflow 115 10 | #define co_OverlapLastInstruction 116 11 | #define co_NonOverlapLastInstruction 117 12 | #define co_UseMymetricsLastInstruction 118 13 | #define co_ScaledComponentOffsetLastInstruction 119 14 | #define co_UnscaledComponentOffsetLastInstruction 120 15 | #define co_ScaledComponentOffsetAlreadySet 121 16 | #define co_UnscaledComponentOffsetAlreadySet 122 17 | #define co_ComponentChangeOnVariationFont 123 18 | 19 | bool DisassemComponent(TrueTypeGlyph *glyph, TextBuffer *src, wchar_t errMsg[], size_t errMsgLen); 20 | 21 | bool TTAssemble(ASMType asmType, TextBuffer* src, TrueTypeFont* font, TrueTypeGlyph* glyph, 22 | int32_t maxBinLen, unsigned char* bin, int32_t* actBinLen, bool variationCompositeGuard, int32_t* errPos, int32_t* errLen, wchar_t errMsg[], size_t errMsgLen); 23 | 24 | #endif // GlyphStruct_dot_h -------------------------------------------------------------------------------- /src/TextBuffer.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #define minimalTextBufferSize 32768L 7 | 8 | #define textBufferLineBreak '\r' // for LineNumOf and PosOf 9 | 10 | class TextBuffer { 11 | public: 12 | TextBuffer(void); 13 | virtual ~TextBuffer(void); 14 | virtual void Indent(int32_t indent); 15 | virtual bool GetModified(void); 16 | virtual void SetModified(bool on); 17 | virtual size_t Length(void); 18 | virtual int32_t TheLength(); 19 | virtual int32_t TheLengthInUTF8(void); 20 | virtual int32_t LineNumOf(int32_t pos); 21 | virtual int32_t PosOf(int32_t lineNum); 22 | virtual void GetText(size_t *textLen, char text[]); 23 | virtual void GetText(size_t *textLen, wchar_t text[]); 24 | virtual void GetText(std::wstring &text); 25 | virtual void SetText(int32_t textLen, const char text[]); 26 | virtual void SetText(size_t textLen, const wchar_t text[]); 27 | virtual wchar_t GetCh(int32_t atPos); 28 | virtual void GetLine(int32_t atPos, int32_t *lineLen, wchar_t line[], int32_t *lineSepLen); 29 | virtual void GetRange(int32_t fromPos, int32_t toPos, wchar_t text[]); 30 | virtual int32_t Search(int32_t fromPos, bool wrapAround, wchar_t target[], bool caseSensitive); // returns position of target if found else -1 31 | virtual void Append(const wchar_t strg[]); 32 | virtual void AppendRange(const wchar_t strg[], int32_t fromPos, int32_t toPos); 33 | virtual void AppendCh(wchar_t ch); 34 | virtual void AppendLine(const wchar_t strg[]); 35 | virtual void AppendText(const TextBuffer *text); 36 | virtual void AppendTextRange(const TextBuffer *text, int32_t fromPos, int32_t toPos); 37 | virtual void Insert(int32_t atPos, const wchar_t strg[]); 38 | virtual void InsertRange(int32_t atPos, const wchar_t strg[], int32_t fromPos, int32_t toPos); 39 | virtual void InsertCh(int32_t atPos, wchar_t ch); 40 | virtual void Delete(int32_t fromPos, int32_t toPos); 41 | protected: 42 | bool AssertTextSize(size_t deltaSize); 43 | size_t size,used; // number of wchar_t 44 | int32_t indent; 45 | bool modified; 46 | wchar_t *text; 47 | }; 48 | -------------------------------------------------------------------------------- /src/application.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | #pragma once 4 | 5 | class Application 6 | { 7 | public: 8 | Application(void); 9 | bool Create(); 10 | virtual ~Application(void); 11 | 12 | bool OpenFont(std::string fileName, wchar_t errMsg[], size_t errMsgLen); 13 | bool OpenMemFont(void* font, uint32_t fontLen, wchar_t errMsg[], size_t errMsgLen); 14 | 15 | bool SaveFont(std::string fileName, StripCommand strip, wchar_t errMsg[], size_t errMsgLen); 16 | bool SaveMemFont(void* font, uint32_t fontLen, StripCommand strip, wchar_t errMsg[], size_t errMsgLen); 17 | bool GetMemFont(void* font, uint32_t fontLen, wchar_t errMsg[], size_t errMsgLen); 18 | uint32_t GetFontSize(); 19 | 20 | bool ImportSourceFromBinary(wchar_t errMsg[], size_t errMsgLen); 21 | 22 | bool GotoFont(wchar_t errMsg[], size_t errMsgLen); 23 | bool GotoGlyph(int32_t code, bool isGlyphIndex); 24 | 25 | bool CompileTalk(int32_t* errPos, int32_t* errLen, wchar_t errMsg[], size_t errMsgLen); 26 | bool CompileCommon(bool legacy, bool variationCompositeGuard, int32_t* errPos, int32_t* errLen, wchar_t errMsg[], size_t errMsgLen); 27 | 28 | bool CompileGlyphRange(unsigned short g1, unsigned short g2, bool quiet, bool legacy, bool variationCompositeGuard, wchar_t errMsg[], size_t errMsgLen); 29 | bool CompileAll(bool quiet, bool legacy, bool variationCompositeGuard, wchar_t errMsg[], size_t errMsgLen); 30 | 31 | bool BuildFont(StripCommand strip, wchar_t errMsg[], size_t errMsgLen); 32 | 33 | char* wCharToChar(char out[], const wchar_t in[]); 34 | 35 | private: 36 | 37 | std::unique_ptr glyf = nullptr, prep = nullptr, talk = nullptr, fpgm = nullptr, cpgm = nullptr; 38 | short platformID = 3, encodingID = 1; 39 | 40 | wchar_t mainFont[maxLineSize], textFont[maxLineSize]; 41 | 42 | std::unique_ptr font = nullptr; 43 | std::unique_ptr glyph = nullptr; 44 | std::string fileName; 45 | int32_t charCode = 0, glyphIndex = 0; 46 | }; 47 | 48 | -------------------------------------------------------------------------------- /src/getopt.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | #pragma once 4 | #include 5 | 6 | #define END (char)(-1) 7 | 8 | class CommandLineOptions 9 | { 10 | public: 11 | CommandLineOptions(int argc, char **argv, const char *opts) : m_argc(argc), m_sp(1), m_optind(1), m_argv(argv), m_opts(opts), 12 | m_optarg(nullptr) {}; 13 | ~CommandLineOptions() {}; 14 | 15 | char GetOption() 16 | { 17 | char c; 18 | const char *cp; 19 | 20 | if (m_sp == 1) { 21 | if (m_optind >= m_argc || m_argv[m_optind][0] != '-' || m_argv[m_optind][1] == '\0') 22 | return(END); 23 | else if (strcmp(m_argv[m_optind], "--") == 0) { 24 | m_optind++; 25 | return(END); 26 | } 27 | } 28 | m_optopt = c = m_argv[m_optind][m_sp]; 29 | if (c == ':' || (cp = strchr(m_opts, c)) == nullptr) { 30 | if (m_argv[m_optind][++m_sp] == '\0') { 31 | m_optind++; 32 | m_sp = 1; 33 | } 34 | return('?'); 35 | } 36 | if (*++cp == ':') { 37 | if (m_argv[m_optind][m_sp + 1] != '\0') 38 | m_optarg = &m_argv[m_optind++][m_sp + 1]; 39 | else if (++m_optind >= m_argc) { 40 | m_sp = 1; 41 | return('?'); 42 | } 43 | else 44 | m_optarg = m_argv[m_optind++]; 45 | m_sp = 1; 46 | } 47 | else { 48 | if (m_argv[m_optind][++m_sp] == '\0') { 49 | m_sp = 1; 50 | m_optind++; 51 | } 52 | m_optarg = nullptr; 53 | } 54 | return(c); 55 | }; 56 | char GetOptionOption() {return m_optopt;}; 57 | char* GetOptionArgument() {return m_optarg;}; 58 | int GetArgumentIndex() {return m_optind;}; 59 | 60 | private: 61 | int m_argc; 62 | int m_sp; 63 | int m_optind; 64 | char **m_argv; 65 | const char *m_opts; 66 | char *m_optarg; 67 | char m_optopt; 68 | }; 69 | 70 | 71 | -------------------------------------------------------------------------------- /src/pch.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | 4 | #pragma once 5 | 6 | #define maxLineSize 0x100 7 | 8 | #define _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING 9 | 10 | #include 11 | #include 12 | #include 13 | #include 14 | 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | #include "opentypedefs.h" 28 | #include "Platform.h" 29 | #include "FixedMath.h" 30 | #include "MathUtils.h" 31 | #include "List.h" 32 | #include "Memory.h" 33 | #include "File.h" 34 | #include "TextBuffer.h" 35 | #include "Variation.h" 36 | #include "VariationModels.h" 37 | #include "VariationInstance.h" 38 | #include "TTFont.h" 39 | #include "GUIDecorations.h" 40 | #include "TTAssembler.h" 41 | #include "TTEngine.h" 42 | #include "TTGenerator.h" 43 | #include "CvtManager.h" 44 | #include "TMTParser.h" 45 | #include "ttiua.h" 46 | 47 | 48 | #define STRCPYW wcscpy 49 | #define STRCATW wcscat 50 | #define STRLENW wcslen 51 | #define STRNCPYW wcsncpy 52 | #define STRSTRW wcsstr 53 | #define STRCHARW wcschr 54 | #define STRCMPW wcscmp 55 | 56 | #ifndef _WIN32 57 | #define wprintf_s wprintf 58 | #endif 59 | 60 | #ifndef _MSC_VER 61 | /* ISO C Standard for *w*printf() */ 62 | #define WIDE_STR_FORMAT L"%S" 63 | #define NARROW_STR_FORMAT L"%s" 64 | #else 65 | /* Microsoft compiler's w*printf() behavior */ 66 | #define WIDE_STR_FORMAT L"%s" 67 | #define NARROW_STR_FORMAT L"%S" 68 | #endif 69 | -------------------------------------------------------------------------------- /src/ttiua.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | 4 | #ifndef TTIUA_DOT_H_DEFINED 5 | #define TTIUA_DOT_H_DEFINED 6 | 7 | void TTIUnAsm(unsigned char* pbyInst, unsigned short uIlen, TextBuffer* dest, bool clear, bool asmBlock); 8 | 9 | #endif /* TTIUA_DOT_H_DEFINED */ 10 | -------------------------------------------------------------------------------- /src/vttcompile.h: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft Corporation. 2 | // Licensed under the MIT License. 3 | #pragma once 4 | 5 | 6 | -------------------------------------------------------------------------------- /templates/chargrp.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/templates/chargrp.txt -------------------------------------------------------------------------------- /templates/cvttmpl.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/templates/cvttmpl.txt -------------------------------------------------------------------------------- /templates/fpgmtmpl.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/templates/fpgmtmpl.txt -------------------------------------------------------------------------------- /templates/preptmpl.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/templates/preptmpl.txt -------------------------------------------------------------------------------- /tests/data/Selawik-variable.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/VisualTrueType/8f1ea6d59a6a7a888c91920d890c91551f86b5c9/tests/data/Selawik-variable.ttf -------------------------------------------------------------------------------- /vttcompile/vttcompile.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31005.135 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vttcompile", "vttcompile.vcxproj", "{C163EACB-185D-4F8D-9DE4-532E41C0024B}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {C163EACB-185D-4F8D-9DE4-532E41C0024B}.Debug|x64.ActiveCfg = Debug|x64 17 | {C163EACB-185D-4F8D-9DE4-532E41C0024B}.Debug|x64.Build.0 = Debug|x64 18 | {C163EACB-185D-4F8D-9DE4-532E41C0024B}.Debug|x86.ActiveCfg = Debug|Win32 19 | {C163EACB-185D-4F8D-9DE4-532E41C0024B}.Debug|x86.Build.0 = Debug|Win32 20 | {C163EACB-185D-4F8D-9DE4-532E41C0024B}.Release|x64.ActiveCfg = Release|x64 21 | {C163EACB-185D-4F8D-9DE4-532E41C0024B}.Release|x64.Build.0 = Release|x64 22 | {C163EACB-185D-4F8D-9DE4-532E41C0024B}.Release|x86.ActiveCfg = Release|Win32 23 | {C163EACB-185D-4F8D-9DE4-532E41C0024B}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {8EA69913-90A7-4411-B1AA-13DFB6DE4304} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /vttcompile/vttcompile.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /vttcompile/vttcompile.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /vttcompilepy/__init__.py: -------------------------------------------------------------------------------- 1 | from .vttcompilepy import * 2 | 3 | try: 4 | from ._version import version as __version__ 5 | except ImportError: 6 | __version__ = "0.0.0+unknown" -------------------------------------------------------------------------------- /vttcompilepy/__main__.py: -------------------------------------------------------------------------------- 1 | import vttcompilepy as vtt 2 | 3 | import argparse 4 | import sys 5 | from pathlib import Path 6 | from . import __version__ as vtt_version 7 | 8 | def main(args=None): 9 | if args is None: 10 | args = sys.argv[1:] 11 | parser = argparse.ArgumentParser() 12 | 13 | parser.add_argument('--version', action='version', version='%(prog)s {version}'.format(version=vtt_version)) 14 | 15 | parser.add_argument("input", help="Input file") 16 | parser.add_argument("output", help="Output file") 17 | 18 | parser.add_argument("-i", "--importsourcefrombinary", action="store_true", help ="Import source from binary") 19 | 20 | cgroup = parser.add_argument_group("Compile options") 21 | cgroup.add_argument("-a", "--all", action="store_true", help ="Compile everything") 22 | cgroup.add_argument("-l", "--legacy", action="store_true", help ="Rare cases for very old fonts") 23 | cgroup.add_argument("-v", "--disablevariationcompositeguard", action="store_true", help ="Disable variation composite guard (default: enabled)") 24 | 25 | sgroup = parser.add_argument_group("Strip options") 26 | sgroup.add_argument("-s", "--source", action="store_true", help="Strip source") 27 | sgroup.add_argument("-b", "--hints", action="store_true", help="Strip source and hints") 28 | sgroup.add_argument("-c", "--cache", action="store_true", help="Strip source and hints and cache tables") 29 | 30 | args = parser.parse_args(args) 31 | 32 | print(args.input) 33 | print(args.output) 34 | inpath = Path(args.input) 35 | outpath = Path(args.output) 36 | 37 | compiler = vtt.Compiler(inpath) 38 | 39 | legacy = False 40 | variationCompositeGuard = True 41 | 42 | if args.legacy: 43 | legacy = True 44 | 45 | if args.disablevariationcompositeguard: 46 | variationCompositeGuard = False 47 | 48 | if args.importsourcefrombinary: 49 | compiler.import_source_from_binary() 50 | 51 | if args.all: 52 | compiler.compile_all(legacy, variationCompositeGuard) 53 | 54 | #StripCommand strip = stripNothing; 55 | #if (bStripCache) strip = stripBinary; 56 | #else if (bStripHints) strip = stripHints; 57 | #else if (bStripSource) strip = stripSource; 58 | 59 | level = vtt.StripLevel.STRIP_NOTHING 60 | 61 | if args.cache: 62 | level = vtt.StripLevel.STRIP_BINARY 63 | elif args.hints: 64 | level = vtt.StripLevel.STRIP_HINTS 65 | elif args.source: 66 | level = vtt.StripLevel.STRIP_SOURCE 67 | 68 | compiler.save_font(outpath, level) 69 | 70 | if __name__ == "__main__": 71 | sys.exit(main()) 72 | -------------------------------------------------------------------------------- /vttcompilepy/_version.py: -------------------------------------------------------------------------------- 1 | __version__ = version = '0.0.1.6' -------------------------------------------------------------------------------- /vttcompilepy/cvttcompilepy.pxd: -------------------------------------------------------------------------------- 1 | #cython: language_level=3 2 | #distutils: language = c++ 3 | from libc.stdint cimport uint8_t, uint16_t, uint32_t, int32_t 4 | from libcpp cimport bool 5 | from libc.stddef cimport wchar_t 6 | from libcpp.string cimport string 7 | 8 | cdef extern from "pch.h": 9 | 10 | ctypedef enum StripCommand: 11 | stripNothing 12 | stripSource 13 | stripHints 14 | stripBinary 15 | stripEverything 16 | 17 | cdef extern from "application.h": 18 | 19 | cdef cppclass Application: 20 | Application() except + 21 | bool Create() 22 | bool OpenFont(string fileName, wchar_t* errMsg, size_t errMsgLen) 23 | bool OpenMemFont(void* font, uint32_t fontLen, wchar_t* errMsg, size_t errMsgLen) 24 | 25 | bool SaveFont(string fileName, StripCommand strip, wchar_t* errMsg, size_t errMsgLen) 26 | bool SaveMemFont(void* font, uint32_t fontLen, wchar_t* errMsg, size_t errMsgLen) 27 | bool GetMemFont(void* font, uint32_t fontLen, wchar_t* errMsg, size_t errMsgLen) 28 | uint32_t GetFontSize() 29 | 30 | bool ImportSourceFromBinary(wchar_t* errMsg, size_t errMsgLen) 31 | 32 | bool GotoFont(wchar_t* errMsg, size_t errMsgLen) 33 | 34 | bool CompileGlyphRange(uint16_t g1, uint16_t g2, bool quiet, bool legacy, bool variationCompositeGuard, wchar_t* errMsg, size_t errMsgLen) 35 | bool CompileAll(bool quiet, bool legacy, bool variationCompositeGuard, wchar_t* errMsg, size_t errMsgLen) 36 | 37 | char* wCharToChar(char* out1, const wchar_t* in1) 38 | 39 | bool BuildFont(StripCommand strip, wchar_t* errMsg, size_t errMsgLen); 40 | --------------------------------------------------------------------------------