{"0": {
    "doc": "Live preview",
    "title": "Live preview",
    "content": "Preview your font at any time, all the time. (ok that one was a must have anyway) . ",
    "url": "https://nebukam.github.io/mkfont/features/--live-preview.html#live-preview",
    "relUrl": "/features/--live-preview.html#live-preview"
  },"1": {
    "doc": "Live preview",
    "title": "Live preview",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/--live-preview.html",
    "relUrl": "/features/--live-preview.html"
  },"2": {
    "doc": "Non-destructive",
    "title": "Non-destructive",
    "content": "Manipulates your data, doesn’t alter it. MkFont respect your assets and allows for experimenting safely with different settings, until you find the one that suits your needs. ",
    "url": "https://nebukam.github.io/mkfont/features/--safe-workflow.html#non-destructive",
    "relUrl": "/features/--safe-workflow.html#non-destructive"
  },"3": {
    "doc": "Non-destructive",
    "title": "Non-destructive",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/--safe-workflow.html",
    "relUrl": "/features/--safe-workflow.html"
  },"4": {
    "doc": "TTF import & editing",
    "title": "TTF import &amp; editing",
    "content": "Start to work from, and explore existing fonts. Import TTFs files in a single click, tweak them and re-export them in just a few clicks. ",
    "url": "https://nebukam.github.io/mkfont/features/--ttf-import.html#ttf-import--editing",
    "relUrl": "/features/--ttf-import.html#ttf-import--editing"
  },"5": {
    "doc": "TTF import & editing",
    "title": "TTF import & editing",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/--ttf-import.html",
    "relUrl": "/features/--ttf-import.html"
  },"6": {
    "doc": "About",
    "title": "I’m Tim!",
    "content": "I made this. Follow @Nebukam . I made MkFont as a way to easily tweak and build fonts out of SVG files. There are tons of tools out there that do similar things, from CLI tools to awesome glyph editors; but nothing in between. MkFont attempts to fill the gap. I love my current workflow &amp; tools when it comes to vector graphics, and don’t want to have to deal with tools I don’t feel comfortable with. Yet, font export tools out there are often very limited in their feature set when it comes to font metrics, don’t have GUIs, or simply introduce lot of friction if you’re into fast iterations : I can’t be the only one! MkFont hopefully make this super easy : export, batch import, edit in place, tweak metrics, all at a blazing-fast speed. Not a glyph editor . MkFont is not a glyph editor, and never will be. That’s the opposite of the point made above. Since it’s not an editor, it may come out as a really terrible piece of software to academic typographer &amp; typography lovers. And it’s ok! This is not what MkFont has been designed for :) If you’re curious, here’s a small thread full of gifs and screenshots the MkFont development process. Source code . MkFont is licensed under MIT : if you want to look at the code, or if you’re worried it could hurt your machine, the code is available in full on github! You can even compile it yourself. Bugs! . If you encounter a bug, please fill an issue here. Since MkFont run in electron, you can also run the app with the -dev launch parameter, which will provide you access to the console, and thus more details on any error that might be coming up. If you submit a bug, depending on its nature I may ask for the faulty .mkfont file : if you’re working on secret stuff, it would be great if you’re capable of reproducing the bug with assets you’re in a position to share publicly. Built with NKMjs . MkFont is built using my own multi-platform framework, NKMjs. It runs with Electron. Footnotes . I am not affiliated with Adobe©! . ",
    "url": "https://nebukam.github.io/mkfont/about/#im-tim",
    "relUrl": "/about/#im-tim"
  },"7": {
    "doc": "About",
    "title": "About",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/about/",
    "relUrl": "/about/"
  },"8": {
    "doc": "Affinity Designer",
    "title": "Affinity Designer",
    "content": "··· . ··· . ",
    "url": "https://nebukam.github.io/mkfont/guides/third-party/affinity-designer.html#affinity-designer",
    "relUrl": "/guides/third-party/affinity-designer.html#affinity-designer"
  },"9": {
    "doc": "Affinity Designer",
    "title": "TBD",
    "content": "At the moment, Affinity Designer doesn’t have an API to automate artboard creation. Whenever it comes up, I’ll have a look at it. ",
    "url": "https://nebukam.github.io/mkfont/guides/third-party/affinity-designer.html#tbd",
    "relUrl": "/guides/third-party/affinity-designer.html#tbd"
  },"10": {
    "doc": "Affinity Designer",
    "title": "Affinity Designer",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/guides/third-party/affinity-designer.html",
    "relUrl": "/guides/third-party/affinity-designer.html"
  },"11": {
    "doc": "App settings",
    "title": "App settings",
    "content": "Application-level settings, affects all the things. App settings can be accessed via the Home view, using the App Settings button. Table of content . | Basic settings | Family defaults | . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/app-settings.html#app-settings",
    "relUrl": "/docs/dialogs/app-settings.html#app-settings"
  },"12": {
    "doc": "App settings",
    "title": "Basic settings",
    "content": "| Setting | Comment | . | : **Autosave** :| |   | . | Autosave | When enabled, MkFont will automatically save open documents if they have any unsaved modifications. | . | Autosave interval | Interval time in minutes at which the autosave function will trigger. Can range from 1min to 60min. | . | : **Display** :| |   | . | Pangram max glyphs | Number of glyph above which the preview will stop auto-updating.Recomputing the font for the preview can be noticeably long with large number of glyphs, or complex ones; in which case updating the preview manually gives better editing performance. | . | : **Resources** :| |   | . | Bind imported files | Whether or not to bind imported resources whenever a file is imported using the button. Note that the binding only remain for the duration of a work session, and **no reference to the file is saved**. | . | Mark color | The color used to \"mark\" custom boundaries when pasting SVG data from external applications. If you’re puzzled by this comment, check out the Asset preparation guide.Note that this setting is highly specific to certain workflows. | . | : **Third parties** :| |   | . | SVG Editor Executable | Path to your default SVG editor. This is empty by default, but should you trigger an action that requires it, you will be prompted to pick it.The default SVG editor is primarily used by the action. | . | Adobe© Illustrator Executable | Path to your Adobe© Illustrator executable, if you’re using Adobe© Illustrator. This is empty by default, but should you trigger an action that requires it, you will be prompted to pick it.Adobe© Illustrator is only used by the action. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/app-settings.html#basic-settings",
    "relUrl": "/docs/dialogs/app-settings.html#basic-settings"
  },"13": {
    "doc": "App settings",
    "title": "Family defaults",
    "content": "The following settings are the defaults/boilerplate values for every new .mkfont document you’re creating. They can all be edited individually using the inspector. This data is added to the font when exported to .ttf. | Setting | Comment | . | : **Family defaults** :| |   | . | Family name | Default family name. | . | Copyright | Default copyright notice. | . | Description | Default description. | . | URL | Default URL. | . | Preview size | Default glyph preview size in the Font viewport. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/app-settings.html#family-defaults",
    "relUrl": "/docs/dialogs/app-settings.html#family-defaults"
  },"14": {
    "doc": "App settings",
    "title": "App settings",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/app-settings.html",
    "relUrl": "/docs/dialogs/app-settings.html"
  },"15": {
    "doc": "Asset preparation",
    "title": "Asset preparation",
    "content": "How to prepare assets . Covers some basics yet important things regarding asset preparation . Checklist . | Glyph Boundaries . | viewBox? | Custom path as viewBox? | . | Vector data | Naming conventions | . MkFont is design to work with (at least somewhat) prepared assets. Some assumptions are made, some limitation exists within the system – this page exists in order to explicit what these are, and help you prepare assets in a way that will make unexpected behaviors less annoying, and hopefully, easily solvable. If you’re more the experimenting type, just ignore all this (or just check out the bit about Vector data) and have fun! . ",
    "url": "https://nebukam.github.io/mkfont/guides/assets-prep.html#asset-preparation",
    "relUrl": "/guides/assets-prep.html#asset-preparation"
  },"16": {
    "doc": "Asset preparation",
    "title": "Glyph Boundaries",
    "content": "One of the pillar of MkFont when it comes to Glyph transformations is its reliance on user-defined glyph boundaries prior to their use inside MkFont. Basically you operate transformations based on something that doesn’t have to be the glyph shape. There are only two ways I can know about the relation of your path to the typographic space : . | The SVG viewBox | A custom path that will be used as a reference | . Now you don’t need to bother too much about the technicalities : the viewBox is usually automatically set by your editing software on import. i.e, in the case of Adobe© Illustrator, artboards are the viewBox. The one case where there isn’t a viewBox is when you in Adobe© Illustrator, and in MkFont : the vector information is added to the clipboard without any viewBox : instead, it fits tight with your selection within Illustrator. While not a deal breaker, this will limit your ability to really take advantage of MkFont. the bottom edge of the SVG viewBox (if it exists) represents the baseline of the (font) glyph, while the top edge is the height of the character within the font.. This doesn’t have to be true, but most of the scale &amp; fit options rely on some consistent logic in the way you author your SVGs. ",
    "url": "https://nebukam.github.io/mkfont/guides/assets-prep.html#glyph-boundaries",
    "relUrl": "/guides/assets-prep.html#glyph-boundaries"
  },"17": {
    "doc": "Asset preparation",
    "title": "viewBox?",
    "content": "TL;DR : you loose flexibility without the viewBox! An image is worth a thousand words; here are the differences : . (A path bleeding outside an artboard. This is what will be imported.) . | Boundary mode | With viewBox | Without viewBox | . | imported bounds | | | . | mixed bounds | | | . | glyph bound | | | . You can technically achieve the same results with a combination of Shift, Push, Vertical Offset &amp; Scale – but it becomes super clunky. ",
    "url": "https://nebukam.github.io/mkfont/guides/assets-prep.html#viewbox",
    "relUrl": "/guides/assets-prep.html#viewbox"
  },"18": {
    "doc": "Asset preparation",
    "title": "Custom path as viewBox?",
    "content": "When pasting content directly from your editing software, it won’t have the viewBox information. In order to work around that (knowing it is not mandatory, it’s more of a QoL thing.), any path and/or vector information that has a magenta color will be considered as being the viewBox. This color can be customized in the App settings! Magenta is rgb(255,0,255), #FF00FF, or #F0F. If both info exist within a file (i.e it has both a magenta path AND a viewBox), the magenta path takes over at is is considered more intentional by design. this : . will be interpreted exactly the same way as this : . ",
    "url": "https://nebukam.github.io/mkfont/guides/assets-prep.html#custom-path-as-viewbox",
    "relUrl": "/guides/assets-prep.html#custom-path-as-viewbox"
  },"19": {
    "doc": "Asset preparation",
    "title": "Vector data",
    "content": "Unless intentional, make sure to expand your strokes when exporting to SVGs. Some ‘expanding’ happens automatically depending on your editing software, some might not. Here are a few situational examples : . | Illustrator viewport | Wireframe view | MkFont | . | | | | . | | | . | | | . | | | . Bottom line : . | Closed path work fine | Stroke are not retained | Open path will end up as filled shape. | . It is important to note that even if open path will look they are closed, the actual path information within the font file is kept. This means if you intend to use your font as a tool to work with 3D text within, for example, blender, or Houdini, you will see an open path as opposed to a closed polygonal shape. ",
    "url": "https://nebukam.github.io/mkfont/guides/assets-prep.html#vector-data",
    "relUrl": "/guides/assets-prep.html#vector-data"
  },"20": {
    "doc": "Asset preparation",
    "title": "Naming conventions",
    "content": "If you intend to make good use of the Batch import feature, do check out how the automation using filename works. And if you don’t want to bother too much with that and don’t have everything setup for your assets, you can take great advantage of the Illustrator Artboard creation action. ",
    "url": "https://nebukam.github.io/mkfont/guides/assets-prep.html#naming-conventions",
    "relUrl": "/guides/assets-prep.html#naming-conventions"
  },"21": {
    "doc": "Asset preparation",
    "title": "Asset preparation",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/guides/assets-prep.html",
    "relUrl": "/guides/assets-prep.html"
  },"22": {
    "doc": "Batch import",
    "title": "Batch import",
    "content": "Quick &amp; easy . Import loads of SVG at once, with multiple ways to assign them to glyphs/code-point.Import directly to your current selection, or to specific Unicode blocks. ",
    "url": "https://nebukam.github.io/mkfont/features/batch-import.html#batch-import",
    "relUrl": "/features/batch-import.html#batch-import"
  },"23": {
    "doc": "Batch import",
    "title": "Batch import",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/batch-import.html",
    "relUrl": "/features/batch-import.html"
  },"24": {
    "doc": "Components",
    "title": "Components",
    "content": "Make more with less! . A powerful component &amp; compositing system, allowing for clever automation and infinite possibilities. ",
    "url": "https://nebukam.github.io/mkfont/features/component-system.html#components",
    "relUrl": "/features/component-system.html#components"
  },"25": {
    "doc": "Components",
    "title": "Components",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/component-system.html",
    "relUrl": "/features/component-system.html"
  },"26": {
    "doc": "Font editor",
    "title": "Font editor",
    "content": "Where you spend 100% of your time within MkFont. This is an overview of the Font Editor. Table of content . | Breakdown . | Editor explorers | . | Content explorer | Preview explorer | History explorer . | Viewport &amp; glyph editor | . | Font viewport | Glyph inspector | Header actions | Shortcuts | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/editor-font.html#font-editor",
    "relUrl": "/docs/views/editor-font.html#font-editor"
  },"27": {
    "doc": "Font editor",
    "title": "Breakdown",
    "content": ". The Font Editor is broken down into three main areas, covered in length in their own sections : . Editor explorers . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/editor-font.html#breakdown",
    "relUrl": "/docs/views/editor-font.html#breakdown"
  },"28": {
    "doc": "Font editor",
    "title": "Content explorer",
    "content": "Unicode. All of it. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/editor-font.html#content-explorer",
    "relUrl": "/docs/views/editor-font.html#content-explorer"
  },"29": {
    "doc": "Font editor",
    "title": "Preview explorer",
    "content": "An handy interactive preview. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/editor-font.html#preview-explorer",
    "relUrl": "/docs/views/editor-font.html#preview-explorer"
  },"30": {
    "doc": "Font editor",
    "title": "History explorer",
    "content": "Your friendly time machine. Viewport &amp; glyph editor . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/editor-font.html#history-explorer",
    "relUrl": "/docs/views/editor-font.html#history-explorer"
  },"31": {
    "doc": "Font editor",
    "title": "Font viewport",
    "content": "Navigate &amp; search through Unicode slots. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/editor-font.html#font-viewport",
    "relUrl": "/docs/views/editor-font.html#font-viewport"
  },"32": {
    "doc": "Font editor",
    "title": "Glyph inspector",
    "content": "Edit individual &amp; multiples glyphs here. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/editor-font.html#glyph-inspector",
    "relUrl": "/docs/views/editor-font.html#glyph-inspector"
  },"33": {
    "doc": "Font editor",
    "title": "Header actions",
    "content": ". | Button | Action | . | : **Navigation** :| |   | . | | Navigate to the previous editor state | . | | Navigate to the next editor state | . | : **Writing files** :| |   | . | Save | Save the current file. If it does not exist on disk already, will prompt for a location &amp; filename. Can be activated using . | . | Export | Export the current font as a .ttf file. You will be prompted for a location &amp; filename each time. | . | : **Family settings** :| |   | . | Infos | Brings up the inspector. | . | Metrics | Brings up the Family metrics inspector. | . | : **Importing content** :| |   | . | Ligatures | Brings up the Ligatures finder dialog. | . | SVGs | Brings up the dialog. | . | TTF | You will be prompted to select a .ttf file, and its glyphs will be imported (and resampled to match the current Family metrics) | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/editor-font.html#header-actions",
    "relUrl": "/docs/views/editor-font.html#header-actions"
  },"34": {
    "doc": "Font editor",
    "title": "Shortcuts",
    "content": "| Shortcut | Action | . | : **Actions** :| |   | . | | Saves the currently edited mkfont file. Prompts a dialog if the file has never been saved before. | . | | Undo last action | . | | Redo last action | . | : **Navigation** :| |   | . | | Previous nav state *(should be the same as in a regular browser)* | . | | Next nav state *(should be the same as in a regular browser)* | . | : **Selection** :| |   | . | | Selects all glyphs currently displayed in the viewport. | . | | Clears the current selection | . | | Store the current selection as a shortcut. | . | | Restore the selection previously stored | . | | Appends the selection previously stored to the current selection | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/editor-font.html#shortcuts",
    "relUrl": "/docs/views/editor-font.html#shortcuts"
  },"35": {
    "doc": "Font editor",
    "title": "Font editor",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/views/editor-font.html",
    "relUrl": "/docs/views/editor-font.html"
  },"36": {
    "doc": "Content explorer",
    "title": "Content explorer",
    "content": "Unicode. All of it. This is an overview of the Content Explorer. Selecting items in here will change the contents of the Font viewport. It allows you to quickly find your way through the ton of existing Unicode slots &amp; code points, and easily select which you want to include in your font. Any active selection will be reset . Table of content . | Quick Access | Categories | Unicode blocks | . The Content explorer is split in three main folders : . | Quick access | Categories | Unicode ranges | . Control characters are purposefully omitted and won’t show anywhere. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-content.html#content-explorer",
    "relUrl": "/docs/views/explorer-content.html#content-explorer"
  },"37": {
    "doc": "Content explorer",
    "title": "Quick Access",
    "content": "| Range | Content | . | My Glyphs | Shows all the glyphs that currently exists within your font, no matter their state. | . | Ligatures | Shows all the ligatures that currently exists within your font, no matter their state. | . | All Unicodes | Shows all ‘known’ Unicode points.‘Known’ meaning ‘explicitely documented’ : they have an identity, name, etc.*Note that some documented ranges have undocumented slots* | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-content.html#quick-access",
    "relUrl": "/docs/views/explorer-content.html#quick-access"
  },"38": {
    "doc": "Content explorer",
    "title": "Categories",
    "content": "Categories is where glyphs are ordered by semantic. There are many categories, some very broad, some very narrow. Certain glyphs can exists in multiple categories, and not all known glyphs have an associated category. Think of them as system tags. Depending on how you plan on using/distributing your font, it is best practice to stay as close as possible to these semantics. Hence, if planning on doing icon font, I recommend using either ligatures or the Private use areas blocks. They have color associated, which can also be seen in the Font viewport’s individual slots. (Yes, that’s what the small colored dot is!) . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-content.html#categories",
    "relUrl": "/docs/views/explorer-content.html#categories"
  },"39": {
    "doc": "Content explorer",
    "title": "Unicode blocks",
    "content": "Unicode blocks contains all the unicode blocks document in the Unicode Standards. (there’s 400+ of them) These are inlined ranges of characters with no overlap : the first range starts at 0, and the last one ends at,… A very high number. There is no duplicates in blocks : a single glyph only belong to a single block. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-content.html#unicode-blocks",
    "relUrl": "/docs/views/explorer-content.html#unicode-blocks"
  },"40": {
    "doc": "Content explorer",
    "title": "Content explorer",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-content.html",
    "relUrl": "/docs/views/explorer-content.html"
  },"41": {
    "doc": "History explorer",
    "title": "History explorer",
    "content": "Your friendly time machine. The history explorer is where you can see all the commands that have been executed within the editor since the beginning of the session. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-history.html#history-explorer",
    "relUrl": "/docs/views/explorer-history.html#history-explorer"
  },"42": {
    "doc": "History explorer",
    "title": "Fast back’n forth",
    "content": "You can click any action to go back to that point in time. You can also use / to Undo/Redo actions in order. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-history.html#fast-backn-forth",
    "relUrl": "/docs/views/explorer-history.html#fast-backn-forth"
  },"43": {
    "doc": "History explorer",
    "title": "Flush.",
    "content": "The history needs to be manually flushed out to free up memory. **There is currently no limit to the number of actions that are stored in the history. ** This is primarily because some actions cannot be “merged” into one (like some are : if you repeatedly change the same value, it only creates a single action.) and this creates a lot of spam in there, ultimately making iteration something that could kill your ability to go back to previous modifications. With great power comes great responsibility and all that. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-history.html#flush",
    "relUrl": "/docs/views/explorer-history.html#flush"
  },"44": {
    "doc": "History explorer",
    "title": "History explorer",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-history.html",
    "relUrl": "/docs/views/explorer-history.html"
  },"45": {
    "doc": "Preview explorer",
    "title": "Preview explorer",
    "content": "An handy interactive preview. The preview explorer is a small space where you can preview your font. It also pair as another way to select your glyphs, which is very handy when you want to do some contextual tweaks. Table of content . | Preview box | Ligature express | Controls . | Text direction | Text align | Text transformation (case) | Metrics | Preview text | Actions | . | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-preview.html#preview-explorer",
    "relUrl": "/docs/views/explorer-preview.html#preview-explorer"
  },"46": {
    "doc": "Preview explorer",
    "title": "Preview box",
    "content": "This is not where you edit the text – it is however, where you can select glyphs to edit by simply highlighting them as you would in any text editor :) . At the time of writing, this won’t select ligatures, but instead the individual glyphs they encapsulate. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-preview.html#preview-box",
    "relUrl": "/docs/views/explorer-preview.html#preview-box"
  },"47": {
    "doc": "Preview explorer",
    "title": "Ligature express",
    "content": "If you selected text within the preview box, a button will toggle on, with its label showing the selected text. | Action | Comment | . | text | Create &amp; select a ligature based on the selected text. (displayed as label) | . | + text | Same as above, but will also bootstrap the ligature by adding all of the individual glyphs it contains, chained together. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-preview.html#ligature-express",
    "relUrl": "/docs/views/explorer-preview.html#ligature-express"
  },"48": {
    "doc": "Preview explorer",
    "title": "Controls",
    "content": "There a few basic controls &amp; modifier you can apply to the previewed blurb : . Text direction . | Option | Comment | . | | Text direction is set to LTR (left-to-right) | . | | Text direction is set to RTL (right-to-left) | . Text align . | Option | Comment | . | | Align text to the left | . | | Center text align | . | | Align text to the right | . | | Justifies text | . Text transformation (case) . (note that this setting only change the display and does not affect the text you entered). | Option | Comment | . | | No transformation is applied : text is shown as it is in the textarea below. Like that. | . | | All text is transformed to uppercase. LIKE THAT. | . | | All text is transformed to lowercase. like that. | . | | Capitalize the first letter of every word. Why Would You Want That? | . Metrics . | Option | Comment | . | Font size (px) | Font size expressed in pixels. | . | Line height (em) | Line height expressed in em.**1em = 100% of the font size.** | . Preview text . This is where you type whatever text you want to preview. Actions . | Option | Comment | . | Reload | Force re-rendering of the ttf and reload the preview. | . | | Reset the preview text to the lorem ipsum. | . | | Appends the active viewport selection to the text preview. | . | | Replace the current text preview with the active viewport selection. | . If your font has more glyph than the threshold set in the App settings, you will need to click that button in order to recompute the preview. Or simply if you doubt the preview has updated automatically. This is because in order to be previewed, the font needs to be exported in full in memory; it is not possible to simply append a single character. That also mean that the preview is a real one : what you see in here is an exact copy in memory of the font that will be exported as .ttf. For now, the preview doesn’t support selection of ligatures. Instead, it will select the glyphs that makes up the ligature. i.e, if you have a test ligature, selecting it in the preview will effectively select t, e and s. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-preview.html#controls",
    "relUrl": "/docs/views/explorer-preview.html#controls"
  },"49": {
    "doc": "Preview explorer",
    "title": "Preview explorer",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/views/explorer-preview.html",
    "relUrl": "/docs/views/explorer-preview.html"
  },"50": {
    "doc": "Family Infos",
    "title": "Family Infos",
    "content": "Metadata, etcetera. There’s not much to expand on here – Family infos are metadata that will be embedded into the exported .ttf file. The final family name is a concatenation of the Family Name and the Sub Family. It is shown at all times on the top right corner of the Font editor. | State | Meaning | . | Family Name | The name of your font. | . | Sub Family | The sub family. | . | Weight class | The weight class of your font, as per CSS specs. This is not used right now, but will be once export for web is implemented :) | . | Copyright | Your copyright notice | . | Description | A description of your font. Keep it short ( &lt; 255 characters ), as some export format may limit the allowed character count. | . | URL | The url of your website, font family, showcase page… | . | Version | The version of the font. Only accepts values formatted as x.x. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/family-infos.html#family-infos",
    "relUrl": "/docs/dialogs/family-infos.html#family-infos"
  },"51": {
    "doc": "Family Infos",
    "title": "Family Infos",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/family-infos.html",
    "relUrl": "/docs/dialogs/family-infos.html"
  },"52": {
    "doc": "Family metrics",
    "title": "Family metrics",
    "content": "Primary &amp; reference properties for your font and its glyphs. This is a key dialog in the app, it controls critical values that affect every single glyph within the font, and act as fallback values for glyphs transformations values that are left empty. Table of content . | Resolution . | Role of EM Size | . | Metrics | Control Metrics | Default Transformations | . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/family-metrics.html#family-metrics",
    "relUrl": "/docs/dialogs/family-metrics.html#family-metrics"
  },"53": {
    "doc": "Family metrics",
    "title": "Resolution",
    "content": "| Property | Comment | . | EM Size | EM Size is super-duper important. Usually you set it once and forget about it, or simply leave it to the default 1000 value. *(That value may differ if you work from imported .ttf)*.*Think DPI resolution, but for your font* | . | EM Resample | This toggle affects what happens when you are changing the EM Size. It is toggled on by default.When active, changing the EM Size will resample all the other values of your font according to the new EM Size. This include other Family metrics, *but any numeric value of each individual glyphs as well*.On the contrary, if turned off, your font will look like it’s either scaled up or down in the typographic space. | . When copy/pasted from a document to another within MkFont, glyphs metrics are resampled to maintain their appearance as much as possible; although you might run into some unexpected behaviors depending on the glyph transform settings. Role of EM Size . EM Size is ultimately responsible for how much precision you can squeeze out of your input paths. The lower, the less precision and the more “snapping” will occur. The base value is 1000. Lower tend to yield bad results, unless intentional. Higher is better, however a glyph must ultimately fit within -16,000 &amp; `16,000; meaning you get proportionally less horizontal space to work within that limit. Show visual examples | EM Value | Degradation | . | 1000 | | . | 200 | | . | 100 | | . | 50 | | . | 20 | | . …And so on. Note that the viewport won’t show the distortion, only the exported font will, as well as the Preview explorer. ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/family-metrics.html#resolution",
    "relUrl": "/docs/dialogs/family-metrics.html#resolution"
  },"54": {
    "doc": "Family metrics",
    "title": "Metrics",
    "content": "The Metrics, as well as Control Metrics are the values that drive every single Glyph transformations. They also act as fallback values for matching glyph parameters, such as Height, Width, Shift, Push, &amp; Vertical Offset. | Property | Comment | . | Baseline | The baseline is an horizontal axis, offset from the top of the typographic space. | . | Ascender | The ascender is an horizontal axis, offset upward from the baseline. | . | Scale X+Cap | Similar to EM Resample, this toggle controls whether the X height &amp; CAP height values should be rescaled according to updates made to the ascender.X &amp; Cap height are commonly encapsulated by the Ascender value. | . | Descender | The ascender is an horizontal axis, offset downward from the baseline. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/family-metrics.html#metrics",
    "relUrl": "/docs/dialogs/family-metrics.html#metrics"
  },"55": {
    "doc": "Family metrics",
    "title": "Control Metrics",
    "content": "| Property | Comment | . | X height | The X height is an abstract horizontal axis, offset upward from the baseline.It controls the size of the glyphs which scaling mode is set to x-height | . | CAP height | The CAP height is an abstract horizontal axis, offset upward from the baseline.It controls the size of the glyphs which scaling mode is set to cap-height | . | Height | Default glyph height. This is only useful for specific scaling modes, and does not represent the height of your font. That would be the EM Size. | . | Width | Default glyph width. This is used by various Glyph transformations, acts as a default value when a glyph’s width is empty. | . | Monospace | When set to true, the width of *every single glyph* within your font will have the width set in the Control Metrics. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/family-metrics.html#control-metrics",
    "relUrl": "/docs/dialogs/family-metrics.html#control-metrics"
  },"56": {
    "doc": "Family metrics",
    "title": "Default Transformations",
    "content": "These define the base &amp; default values used by any glyph that doesn’t have a value set for these properties. For more details, check out the Glyph transformations doc. ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/family-metrics.html#default-transformations",
    "relUrl": "/docs/dialogs/family-metrics.html#default-transformations"
  },"57": {
    "doc": "Family metrics",
    "title": "Family metrics",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/family-metrics.html",
    "relUrl": "/docs/dialogs/family-metrics.html"
  },"58": {
    "doc": "Glyph components",
    "title": "Glyph components",
    "content": "Make more with less! . Components allow you to add any glyph from your .mkfont into other glyphs, enabling a very modular &amp; atomic workflow. Table of content . | What is a component? | Header actions . | Flatten comps | . | Layer controls . | Visible on hover. | . | Basic properties . | Import glyph | . | Alignment &amp; anchoring . | Anchoring | Boundaries | . | Scale &amp; Translation | Advanced . | Mirror | Rotation &amp; Skew | . | Special properties . | Custom ID | Path reversing | Inherit previous component | Control layer | Component states | . | Working with group selection | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-components.html#glyph-components",
    "relUrl": "/docs/views/foldout-components.html#glyph-components"
  },"59": {
    "doc": "Glyph components",
    "title": "What is a component?",
    "content": "Generally speaking, components are kindda like layers, or Adobe© Illustrator Symbols, or Prefab in Unity : they can turn any existing glyph into a re-usable asset that self-updates whenever modified. They can be used for many many things : easily make and maintained composite letters with modifiers such as é, à etc; but the logic also applies to creating flexible icon libraries. Check out the Composite icon font guide to get a grasp on the possibilities. Using component is rather straightforward, yet there is a few not-so-obvious subtleties that make them really flexible. The first thing to setup in a component is choosing which glyph it will ‘import’. A component may be empty, in which case it’s useless, or can reference a glyph that doesn’t exist just yet – in which case it acts as a placeholder that will behave as expected once the glyph it references is added to the font. Note that the imported glyph can be any glyph, even a ligature – if you can see it in the viewport, it can be used as a component. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-components.html#what-is-a-component",
    "relUrl": "/docs/views/foldout-components.html#what-is-a-component"
  },"60": {
    "doc": "Glyph components",
    "title": "Header actions",
    "content": "| Action | Effect | . | : **Create** :| |   | . | | Creates a new empty component on top of the existing ones | . | | Open the glyph picker and let you pick one or more components and add them as components | . | : **Manipulate** :| |   | . | | Collapse all open component foldouts | . | | Toggle all layers to visible | . | | Toggle all layers to hidden | . | : **Composite** :| |   | . | | Create component for each glyph part of the known decomposition of the host. *(See Glyph details)* | . Flatten comps . Whether or not to flatten the components. This is a bit tricky to use, and (mostly) only useful when working with lots of components imported inside an empty glyph. What it does is first compute component transformations as usual, them flatten them as if they were a single entity, and then re-apply the global glyph transformations onto them. This, among other things, effectively allows the glyph width to be controlled by its components. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-components.html#header-actions",
    "relUrl": "/docs/views/foldout-components.html#header-actions"
  },"61": {
    "doc": "Glyph components",
    "title": "Layer controls",
    "content": "The glyph preview is an inspection shortcut. Visible on hover. | Action | Effect | . | | Move the component up in the list | . | | Move the component down in the list | . | / | Toggle layers visibility | . | | Delete the layer | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-components.html#layer-controls",
    "relUrl": "/docs/views/foldout-components.html#layer-controls"
  },"62": {
    "doc": "Glyph components",
    "title": "Basic properties",
    "content": "The first thing to setup, as mentioned above, will be which glyph the component will be using. Not unlike a regular glyph, a component has then alignment &amp; anchoring options, scale, and translation. The main difference with a regular glyph is that the typographic space of a component is not the family. Instead, it is constrained by the glyph it is appended to. Import glyph . The button open the Glyph picker and easily pick an existing glyph from your font. It’s generally faster than the raw method below. This is where you choose which glyph to import as a component. Accepted values are : . | A character, such as a, b, 0 | A ligature, expressed as ab, bc, 0g1, verbose-ligature-name (or what-have-you) | An U+0000 formatted character, such as U+0041, U+01f9, … | A ligature, expressed as U+0041U+01f9 | A ligature, expressed as a combination of the above, with hex values terminated with a -, such as abU+0041, abU+0041-i, abU+0041-iU+01f9. | . Using the button will inspect the glyph imported in the layer. You can quickly move back and forth between components and their glyphs using and . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-components.html#basic-properties",
    "relUrl": "/docs/views/foldout-components.html#basic-properties"
  },"63": {
    "doc": "Glyph components",
    "title": "Alignment &amp; anchoring",
    "content": "There are two distinct alignment &amp; anchoring : one for the Context (the component’ host), another for the component itself, Layer. They are functioning in the same way as the Glyph transformations. Anchoring . Taking a g as an example, here are the different possibilities for anchoring based on the selected boundaries : . As you can see, this full bounds have nothing to do with the imported SVG, but instead uses the actual glyph boundaries as they will be exported. The component glyph’s bounds (as set in Layer) are processed the same way, and all transformations will be relatives to the settings you selected. Boundaries . | Selection | Effect | . | | Use the glyph exported bounds (as seen in the inspector) | . | | Uses vertical mixed bounds : height from the exported bounds, width from the glyph. | . | | Uses horizontal mixed bounds : width from the imported bounds, height from the glyph. | . | | Ignore exported bounds &amp; uses the glyph tight bounding box. | . Show visual examples Assuming square boundaries, host in blue, component in yellow. Context : , Layer : . Context : , Layer : . Context : , Layer : . Context : , Layer : . …And so on. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-components.html#alignment--anchoring",
    "relUrl": "/docs/views/foldout-components.html#alignment--anchoring"
  },"64": {
    "doc": "Glyph components",
    "title": "Scale &amp; Translation",
    "content": "Scale &amp; translation are applied after the component has been anchored . | Property | Effect | . | Scale | Amount by which the component is scaled. | . | : **Translation** :| |   | . | Horizontal Offset | Translates the component along the horizontal axis. | . | Vertical Offset | Translates the component along the vertical axis. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-components.html#scale--translation",
    "relUrl": "/docs/views/foldout-components.html#scale--translation"
  },"65": {
    "doc": "Glyph components",
    "title": "Advanced",
    "content": "Transform options are exactly the same one you can find in the Glyph transformations. Mirror . | Property | Effect | . | | Flips the glyph horizontally | . | | Flips the glyph vertically | . | | Flips the glyph both horizontally &amp; vertically. *Same as doing a 180deg rotation* | . | | No scaling will be applied. *(rarely useful)* | . Rotation &amp; Skew . First, you can choose between the order in which these transformations are applied. Rotation happening after skewing is applied won’t yield the same visual results as if the rotation is applied before. Shorthand in the drop-down menu are : . | R = Rotation | X = Skew on X axis | Y = Skew on Y axis | . You may also control which anchor point within the glyph will be used to apply the rotation. Effects might not be much visible depending on which parameters are set before – specifically when using the glyph drawing bounds (), which anchor is selected makes no visual difference. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-components.html#advanced",
    "relUrl": "/docs/views/foldout-components.html#advanced"
  },"66": {
    "doc": "Glyph components",
    "title": "Special properties",
    "content": "Those few options don’t look like much, but they drastically affect how a component behave, and even how every other components will be transformed. Custom ID . Setting a custom ID allows you to group layers during group editing. Components are first merged for edit using their custom ID, if it exists, and then by their imported glyph. This is a discreet yet important distinction, as it allow you to easily batch-edit properties on layers importing completely unrelated glyphs. Path reversing . Path reversing is the poor’s man boolean operation. This option allows you to effectively reverse the order in which the point are drawn in the vector path. It’s interesting because when two path overlap, if they don’t have the same orientation, they create holes within other. Usually this is something you want to avoid, but given control over it, it makes it easy to create icon variations that appear to have a background. And other things… probably. (the effect is much less appealing if a shape isn’t encapsulated by the other) . Inherit previous component . When enabled, this option override the host bound so that the component uses a previous one as host. At the time of writing, the effect is fairly limited since you can’t choose which previous layer, it’s automatically the first visible one. In the gif above, the square inherit the triangle as host, while the main host is the circle glyph. All three are individual glyphs. This doesn’t look like much as-is, but allows to create complex &amp; reactive encapsulation of components. Control layer . When enabled, this option override the host bound for every layers, and instead replaces it with its own original (untransformed) bounds. This is especially useful when working with composite glyphs, for exemple the glyph é imports both e and ' but doesn’t have a path of its own. In such specific case, it’s desirable than the é inherits the bounds from e to stay consistant with the font, all the while staying reactive to metrics updates. Component states . | Color | Meaning | . | Normal | A very normal component. Boring. | . | Blue | Indicates the component is currently flagged as ‘control layer’. | . | Red | Indicates the current reference within the component creates a circular reference *(i.e, import a glyph within itself, or any chain or relationship that would result in a glyph importing itself)*, and cannot be displayed until the circular reference is fixed. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-components.html#special-properties",
    "relUrl": "/docs/views/foldout-components.html#special-properties"
  },"67": {
    "doc": "Glyph components",
    "title": "Working with group selection",
    "content": "By default, only the components shared by every glyph in the active selection are shown. If you want to see all layer with at least 2 ‘users’, you can enable the Show partial matches toggle. The &amp; actions won’t have noticeable effect, but are still applied. The displayed order is NOT the order in which components are laid out in the glyphs. Instead, they are sorted by the number of glyphs that are using them. Re-ordering layers while a group selection will indeed move them up or down in their own context, so this can have unwanted consequences. Be mindful when creating new components on a group of glyph. Components are merged for edit based on their imported glyph, hence if you click twice, each glyph will have effectively two empty component, but they will show as one with twice as many users. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-components.html#working-with-group-selection",
    "relUrl": "/docs/views/foldout-components.html#working-with-group-selection"
  },"68": {
    "doc": "Glyph components",
    "title": "Glyph components",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-components.html",
    "relUrl": "/docs/views/foldout-components.html"
  },"69": {
    "doc": "Glyph details",
    "title": "Glyph details",
    "content": "Decomposition, relatives, etc. Details shows you useful navigational information to quickly browse between connected components &amp; glyphs. Table of content . | Usage as a component | Decomposition | Relatives | . Content within the details are only shown if they exist; here is what you can expect to see in there : . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-details.html#glyph-details",
    "relUrl": "/docs/views/foldout-details.html#glyph-details"
  },"70": {
    "doc": "Glyph details",
    "title": "Usage as a component",
    "content": "Shows how many glyphs are currently using the selected one as a component, and allow you to batch select them using the Select all button. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-details.html#usage-as-a-component",
    "relUrl": "/docs/views/foldout-details.html#usage-as-a-component"
  },"71": {
    "doc": "Glyph details",
    "title": "Decomposition",
    "content": "The glyph decomposition is documented for a subset of glyphs within Unicode. If they exist for the selected character, you will be able to browse through them from here. Note that you can use the of the Glyph components to quickly create a composite glyph from its known decomposition. Alternatively, use + to create a new glyph along with all of its dependencies, and bootstrap components structure in one swift click. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-details.html#decomposition",
    "relUrl": "/docs/views/foldout-details.html#decomposition"
  },"72": {
    "doc": "Glyph details",
    "title": "Relatives",
    "content": "Relatives shows a list of the direct relatives (as per Unicode, single depth only) of the currently selected glyph, allowing for great discovery and making it easy to spot &amp; find associated glyphs you might want to support. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-details.html#relatives",
    "relUrl": "/docs/views/foldout-details.html#relatives"
  },"73": {
    "doc": "Glyph details",
    "title": "Glyph details",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-details.html",
    "relUrl": "/docs/views/foldout-details.html"
  },"74": {
    "doc": "Glyph transformations",
    "title": "Glyph transformations",
    "content": "An inventory of the transformation options. This inspector can be seen in a multiple places across the app, and always behave the same way. Table of content . | Boundaries | Scaling | Anchoring &amp; Alignement . | Anchoring | Alignments | . | Translation . | Offsets | . | Advanced . | Mirror | Rotation &amp; Skew | . | Others . | Metrics | Export | . | . Generally speaking, transformation are applied in the same order they are displayed : selected options will affect any other setting below it. Boundaries . Which boundaries to use to compute glyph transformations &amp; anchoring. | Selection | Effect | . | | Use the imported bounds (either svg viewBox, or marked path) | . | | Uses vertical mixed bounds : height from the imported bounds, width from the glyph. | . | | Uses horizontal mixed bounds : width from the imported bounds, height from the glyph. | . | | Ignore imported bounds &amp; uses the glyph tight bounding box. | . Check out Asset preparation to get a better understanding of what is considered ‘boundaries’. Scaling . Scaling determines how the glyph is fitted within the typographic space. | Selection | Effect | . | : **Driven by the Family metrics** :| |   | . | | Use distance between baseline and ascender. | . | | Use distance between ascender and descender. | . | | Use the X height | . | | Use the Cap height | . | | Use the family’s **Height** value | . | | Use the family’s **EM** value | . | : **Custom scaling** :| |   | . | | User-defined scale factor | . | | Normalize the glyph’s scale. The normalization space is determined by the glyph width &amp; height, either custom or driven by Family metrics. | . | | No scaling will be applied. *(rarely useful)* | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-transforms.html#glyph-transformations",
    "relUrl": "/docs/views/foldout-transforms.html#glyph-transformations"
  },"75": {
    "doc": "Glyph transformations",
    "title": "Anchoring &amp; Alignement",
    "content": "Anchoring . Anchoring defines the origin point of the imported graphics within the chosen boudaries. Alignments . Vertical alignment is based on the main axes of the typographic space. Horizontal one is based on either input values or Family metrics. | Selection | Effect | . | : **Vertical** :| |   | . | | Align with top (*ascender*) | . | | Align with baseline | . | | Align with descender | . | | Align with center of the vertical spread (*EM*) | . | | Align with bottom (*EM*) | . | : **Horizontal** :| |   | . | | Zero. The origin of the typographic space. | . | | Align with the width of the glyph as defined by the user or Family metrics. | . | | Align with the center of the glyph width. | . Note that depending on which alignment you choose, you may need to turn off the auto-width property &amp; manully set the glyph’s width to have better control over the horizontal alignment. Most of the properties are preceeded with an button. This button clears the ‘local’ value (the one stored within the glyph), and it instead becomes bound to the value set in the Family metrics for that specific property.The field becomes greyed out (but not disabled) and displays the value currently in use. Simply set a custom value to break the link. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-transforms.html#anchoring--alignement",
    "relUrl": "/docs/views/foldout-transforms.html#anchoring--alignement"
  },"76": {
    "doc": "Glyph transformations",
    "title": "Translation",
    "content": "Translations are numerical value that affect the final glyph in many ways. Using Family metrics to control glyph is super powerful, but can sometimes lead to unexpected results : updating family metrics will update all glyphs that are using them. Offsets . Offsets offer control over the width of the glyph and its vertical positioning within the typographic space. | Property | Effect | . | Shift | Adds empty space on the left of the glyph (a.k.a *Kerning*) | . | Push | Adds empty space on the right of the glyph | . | Automatic width | When enabled, automatically calculate the glyph width to be : horizontal boundary width + Shift + Push. *(This value cannot be smaller than 0.)*.When disabled, the value used is either the one set in the metrics below (if any is set), or the Family default. | . | Vertical Offset | Offsets the glyph vertically, after all other transforms are applied. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-transforms.html#translation",
    "relUrl": "/docs/views/foldout-transforms.html#translation"
  },"77": {
    "doc": "Glyph transformations",
    "title": "Advanced",
    "content": "Advanced transforms are applied before any other transform and will affect the glyph local boundaries. Unless you’re using the boundaries imported with the file (), expect to do a bit of back’n forth between parameters. Mirror . | Property | Effect | . | | Flips the glyph horizontally | . | | Flips the glyph vertically | . | | Flips the glyph both horizontally &amp; vertically. *Same as doing a 180deg rotation* | . | | No scaling will be applied. *(rarely useful)* | . Rotation &amp; Skew . First, you can choose between the order in which these transformations are applied. Rotation happening after skewing is applied won’t yield the same visual results as if the rotation is applied before. Shorthand in the drop-down menu are : . | R = Rotation | X = Skew on X axis | Y = Skew on Y axis | . You may also control which anchor point within the glyph will be used to apply the rotation. Effects might not be much visible depending on which parameters are set before – specifically when using the glyph drawing bounds (), which anchor is selected makes no visual difference. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-transforms.html#advanced",
    "relUrl": "/docs/views/foldout-transforms.html#advanced"
  },"78": {
    "doc": "Glyph transformations",
    "title": "Others",
    "content": "Last but not least, raw font metrics. Metrics . | Property | Effect | . | Width | Manually sets the width of the glyph. *Width represent how much the glyph advances the renderer horizontally.*Note that most of the time you will want to leave this value alone and use Automatic Width. If working with monospace fonts, there is a toggle that override everything at the output level within the Family metrics. | . | Height | Manually sets the height of the glyph – *it’s very likely you won’t care about this one, since the actual height within the font is controlled by the EM value. It becomes useful when the glyph is used solely as a component.* | . Export . | Property | Effect | . | Export | Whether or not to include the glyph in the exported font. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-transforms.html#others",
    "relUrl": "/docs/views/foldout-transforms.html#others"
  },"79": {
    "doc": "Glyph transformations",
    "title": "Glyph transformations",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/views/foldout-transforms.html",
    "relUrl": "/docs/views/foldout-transforms.html"
  },"80": {
    "doc": "Composite icon font",
    "title": "Composite icon font",
    "content": "How to make an icon font . A font with complex component interactions.Acts as an exhaustive showcase of MkFont capabilities. While not required, this guide assume that you have made yourself familiar with the Asset preparation. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon-complex.html#composite-icon-font",
    "relUrl": "/guides/font-icon-complex.html#composite-icon-font"
  },"81": {
    "doc": "Composite icon font",
    "title": "What to expect",
    "content": "This guide is about creating a simple yet highly customizable icon font; and showcasing MkFont advanced component interactions. It only assumes that you have some assets to work with, and that you are using Adobe© Illustrator, because that’s what you’ll see in the screenshots – but any SVG editor will work. We will be making roughly the same font icon as the one made through the Simple icon font guide. Credits . This example is using Kenney’s Game Icons, which you will find packaged along with this guide’ files, downloadable here. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon-complex.html#what-to-expect",
    "relUrl": "/guides/font-icon-complex.html#what-to-expect"
  },"82": {
    "doc": "Composite icon font",
    "title": "Final output",
    "content": "We want a font with the following characters in it : . Process . | First steps . | Breaking the design into components . | Naming components | Loose artboard setup | Naming icons | Creating a new MkFont document | . | Importing the components | Creating ligatures to host the composite icons | . | Creating composite glyphs . | The easy ones . | Add, rotate | Add, rotate, anchor | Add, relative, flatten | . | WORK IN PROGRESS. | Removing the components from the font | . | . ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon-complex.html#final-output",
    "relUrl": "/guides/font-icon-complex.html#final-output"
  },"83": {
    "doc": "Composite icon font",
    "title": "First steps",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon-complex.html#first-steps",
    "relUrl": "/guides/font-icon-complex.html#first-steps"
  },"84": {
    "doc": "Composite icon font",
    "title": "Breaking the design into components",
    "content": "So, this one is a bit of a cheat because we know from the start what we want to icons to look like, which makes the process of breaking things into components much easier. First, let’s roughly identify re-usable bits; loosely grouped by colors : . Each color group represent a single asset that can be re-used to create multiple glyphs – thus speeding up the iterative process if updates need to be applied, or style tweaked. For the purpose of this guide, we will only focus on the composite icons, and ignore the ‘hardcoded’ ones. Naming components . First thing first, we’ll need names for these icons &amp; components. Let’s go with a simple naming convention : components will be prefixed with a c-, and icons with an i-. Here’s the names I’m using for the components (and thus artboards). Show breakdown &amp; name associations | Component | name | . | | c-arrow-big | . | | c-arrow-short | . | | c-arrow-small | . | | c-arrow-sqr | . | | c-bar-fat | . | | c-bar-long | . | | c-bar-medium | . | | c-bar-small | . | | c-bracket | . | | c-btn-bg-circle | . | | c-btn-bg-rect | . | | c-gamepad | . | | c-lock-body | . | | c-lock-handle | . | | c-speaker | . | | c-sqr-small | . Loose artboard setup . We’re looking to have one svg file per component; so let’s do a basic artboard set-up. Note that we don’t care about alignment here, but we do care about having a consistent scale to make our lives easier. Another way to do it would have to copy and paste vector graphics directly into the app, but that’s a bit tedious. I don't care about the artboards, I want to copy-paste First, you will need to create ligatures for each of your components (unless you want to use existing unicode slots), as this would normally be automated through batch import. In order to do so, use the Ligatures finder’s one ligature per line feature, with the following input : . c-arrow-big c-arrow-short c-arrow-small c-arrow-sqr c-bar-fat c-bar-long c-bar-medium c-bar-small c-bracket c-btn-bg-circle c-btn-bg-rect c-gamepad c-lock-body c-lock-handle c-speaker c-sqr-small . Then, in the Content explorer, naviguate to either My Glyphs or Ligatures. From there, you can select glyphs and copy-paste your assets from Illustrator to MkFont; or import individual SVG files using at the top of the Glyph inspector. Handy! . Naming icons . We’ll need some names for our icons, as well. We could skip that bit for the sake of going faster and adding icons to any existing characters BUT; having them as ligatures will allow for more flexibility down the line : this will allow us to choose where to put our icons. The “data structure” will look like : components (custom ligature) -&gt; icon (custom ligature) -&gt; unicode slot (know unicode slot). Again, this is not mandatory, but makes things more re-usable and flexible. List of icons names Per color group, ignoring some of them, as well as the white ones : . i-arr-big-e i-arr-big-w i-arr-big-n i-arr-big-s i-arr-big-nw i-arr-big-ne i-arr-big-se i-arr-big-sw i-arr-e i-arr-w i-arr-n i-arr-s i-arr-ns i-arr-ew i-grid-9 i-list-a i-list-3-h i-list-3-v i-pause i-reduce i-expand i-minus i-plus i-mag-minus i-mag-plus i-mag-equal i-mag i-locked i-unlocked i-bin i-! i-warn i-dl i-ul i-spkr i-ffw i-fbw i-next i-prev i-sig-low i-sig-med i-sig-full i-gp i-plyr-1 i-plyr-2 i-plyr-3 i-plyr-4 i-btn-A i-btn-B i-btn-X i-btn-Y i-btn-1 i-btn-2 i-btn-3 i-btn-L i-btn-R i-btn-L1 i-btn-R1 i-btn-L2 i-btn-R2 i-medal i-medal-2 . Creating a new MkFont document . Launch the app, create a new .mkfont, and give your font a name. That’s the name that will be embedded into the exported .ttf. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon-complex.html#breaking-the-design-into-components",
    "relUrl": "/guides/font-icon-complex.html#breaking-the-design-into-components"
  },"85": {
    "doc": "Composite icon font",
    "title": "Importing the components",
    "content": "We’re going to batch-import our components, it’s pretty straightforward : . What’s going on here : . | First, use SVGs to choose which files to import. | If you have a strict naming convention, MkFont will be smart enough to isolate all common characters within the list of filenames, and strip them down. We just edit the automatically found prefix to make sure it doesn’t strip down our c-, which will come in handy for the search. In our case, SVGs have been batch-exported from Illustrator, and are all named as icons_artboard_name.svg. Since we’re not importing anything else, the c- is flagged as common to all imported filenames. | Since we’re importing icons and not tight characters, We changed the boundary mode to imported as opposed the default, mixed (more suitable for characters). | These are square artboards, we will tweak a few additional settings in order to have them best-fitted within the font : . | Scaling is set to so that they match the Family height metric | Tweak the alignment &amp; anchoring of the glyph so it is centered within our family metrics with ( &amp; ) as opposed to the default that make the imported bounds sit on the baseline. | . | Select the Ligatures, and here they are, correctly named and imported. | . Reminder that any transformation tweaks made during import can be changed afterward – it is available at import time for convenience only! In-depth infos : Glyph transformations &amp; Batch import . Colors are ignored and stripped down on import. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon-complex.html#importing-the-components",
    "relUrl": "/guides/font-icon-complex.html#importing-the-components"
  },"86": {
    "doc": "Composite icon font",
    "title": "Creating ligatures to host the composite icons",
    "content": "Now that we have our components imported, we’re going to need to create ligatures : they will host &amp; transform components. A sensible list of icon is available in the details of the Naming icons bit above – we’ll be using the Ligatures finder’s one ligature per line feature, and Create all of them. What’s going on here : . | Paste a list of names separated by a new line into the Ligatures finder. | Enabling one ligature per line, so each line is treated as a single ligature to be imported | Since we want them all, no point in selecting them one by one (this is only useful while doing text analysis), use the Create all action. | . ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon-complex.html#creating-ligatures-to-host-the-composite-icons",
    "relUrl": "/guides/font-icon-complex.html#creating-ligatures-to-host-the-composite-icons"
  },"87": {
    "doc": "Composite icon font",
    "title": "Creating composite glyphs",
    "content": "Ok! Let’s get to the meat of it. What we want to do now is rebuild our initial icons using the re-usable pieces we imported originally. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon-complex.html#creating-composite-glyphs",
    "relUrl": "/guides/font-icon-complex.html#creating-composite-glyphs"
  },"88": {
    "doc": "Composite icon font",
    "title": "The easy ones",
    "content": ". Add, rotate . We’re going to start with the obvious, easy ones : arrows with basic transformations. What’s going on here : . | First, turn the search ON, and look for ligatures with arr-big in their names. These will be the 8 arrows icon pointing at cardinal directions. | Select the 8 glyphs in the viewport. | With the group selection active (which, since everything is empty, doesn’t look like much), move to the Glyph components and open the glyph picker (). | From there, select which glyphs to create components from : there’s just one in our case. | Confirm the component creation with Add selected. | Change the boundary mode of the component so it fits the component itself – this way it’s perfectly centered | Up the scale a bit, since the initial arrow felt a bit too small. It can be changed it later anyway. Then, individually edit each component to give it the right orientation. | . Do so by selecting each ligature individually, and edit the Rotation value in the Glyph components’s Advanced properties. And that’s it, we’re all set with the first batch of big arrows. Add, rotate, anchor . Rince &amp; repeat for the other arrows – although with a twist. The first four as easy ones, like the previous arrows above . The remaining two will combine two components : . What’s going on here : . | First, select the i-arr-ew (or whatever name you used) | Again, use to add components to the glyph. Only this time, select and add i-arr-e &amp; i-arr-w. | The components have their default transform, which is not what we’re looking for. We will change the anchoring &amp; boundaries, and add an horizontal offset so they are still aligned toward the center, but fit more snugly toward each other. | is used in order to ignore the horizontal offset of the asset within the imported glyph. Repeat the same process for the vertical versions; this time using . | . Change propagation By that point, you can already see how changes are propagated if you edit the original arrow component, c-arrow-short : . Awesome, here’s what it should look like: . Add, relative, flatten . Next up are these smaller arrows, which we’ll use to demonstrate how to align a component toward another, and then flatten the result to ensure it stays centered within the glyph. Namely, i-ffw, i-fbw, i-next &amp; i-prev . What’s going on here : . | Import i-arr-w as component into i-fbw, twice. | Change the top one boundaries &amp; anchoring for both its context and itself to , to have a tight fit, aligned to the left. Up to that point, this component is still aligned toward the host. | Enable Inherit prev. comp. This effectively changes the typographic space of that component with the one from the first component below it. Nice, but not quite aligned. | In order to align the entire composition within the host, enable Flatten comp. What this does is tell the host to use its components as if they were a unique path. Althought it doesn’t look quite right now : let’s adjust the host transform. | Change the scale to manual () with a value of 1 : this way we ensure component scale is driven only by the components. | Change boundaries, anchoring &amp; alignment so the graphics are centered within the typographic space. Ok that was tedious, we still have 3 more to do? Nah. Simply copy-paste &amp; simply swap components to the right one! | . What’s going on here : . | First select i-fbw | Use to store the selection in memory | Select the glyphs you want to paste to, and hit . | Edit each glyph by expanding individual component, and pick another one using the . | . ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon-complex.html#the-easy-ones",
    "relUrl": "/guides/font-icon-complex.html#the-easy-ones"
  },"89": {
    "doc": "Composite icon font",
    "title": "WORK IN PROGRESS.",
    "content": "Come back later (～￣▽￣)～ . ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon-complex.html#work-in-progress",
    "relUrl": "/guides/font-icon-complex.html#work-in-progress"
  },"90": {
    "doc": "Composite icon font",
    "title": "Removing the components from the font",
    "content": "Now that we have what we want, we’ll remove our components from the exported font. Since they’re assets, there’s really no point in exporting them. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon-complex.html#removing-the-components-from-the-font",
    "relUrl": "/guides/font-icon-complex.html#removing-the-components-from-the-font"
  },"91": {
    "doc": "Composite icon font",
    "title": "Composite icon font",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon-complex.html",
    "relUrl": "/guides/font-icon-complex.html"
  },"92": {
    "doc": "Simple icon font",
    "title": "Simple icon font",
    "content": "How to make an icon font . A simple monospace icon font with normalized glyphs. While not required, this guide assume that you have made yourself familiar with the Asset preparation. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon.html#simple-icon-font",
    "relUrl": "/guides/font-icon.html#simple-icon-font"
  },"93": {
    "doc": "Simple icon font",
    "title": "What to expect",
    "content": "This guide is about creating a simple icon font using MkFont from scratch. It only assumes that you have some assets to work with, and that you are using Adobe© Illustrator, because that’s what you’ll see in the screenshots – but any SVG editor will work. Credits . This example is using Kenney’s Game Icons, which you will find packaged along with this guide’ files, downloadable here. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon.html#what-to-expect",
    "relUrl": "/guides/font-icon.html#what-to-expect"
  },"94": {
    "doc": "Simple icon font",
    "title": "Final output",
    "content": "We’re going to make the following font : . Process . | WORK IN PROGRESS. | . ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon.html#final-output",
    "relUrl": "/guides/font-icon.html#final-output"
  },"95": {
    "doc": "Simple icon font",
    "title": "WORK IN PROGRESS.",
    "content": "Come back later (～￣▽￣)～ . ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon.html#work-in-progress",
    "relUrl": "/guides/font-icon.html#work-in-progress"
  },"96": {
    "doc": "Simple icon font",
    "title": "Simple icon font",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/guides/font-icon.html",
    "relUrl": "/guides/font-icon.html"
  },"97": {
    "doc": "Simple font",
    "title": "Simple font",
    "content": "How to make a simple font . A regular font with mixed types of glyphs &amp; settings. While not required, this guide assume that you have made yourself familiar with the Asset preparation. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#simple-font",
    "relUrl": "/guides/font-regular.html#simple-font"
  },"98": {
    "doc": "Simple font",
    "title": "What to expect",
    "content": "This guide is about building a simple font using MkFont &amp; Adobe© Illustrator. It’s divided in two part : Part I is about getting up and running, Part II glimpse at less obvious features. Assumptions : . | You’re using Illustrator. (because we’re going to use advanced third party integration) | You already have a bunch of glyphs designed, laying around somewhere. | You really don’t want to bother with finding what’s the unicode point fits what glyph. | . You can find all the assets used in this example in the following package. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#what-to-expect",
    "relUrl": "/guides/font-regular.html#what-to-expect"
  },"99": {
    "doc": "Simple font",
    "title": "Part I final output",
    "content": "We’re going to make the following font : . Process . | First steps . | Creating a new MkFont document | . | Part I : Simple Characters . | Choosing characters | Preparing assets . | Vertical placement is critical | . | Exporting assets | Importing assets | Let the fun begin . | One last thing | . | Export to TTF | . | Part II : Composite characters . | WORK IN PROGRESS. | Wrap up | . | . ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#part-i-final-output",
    "relUrl": "/guides/font-regular.html#part-i-final-output"
  },"100": {
    "doc": "Simple font",
    "title": "First steps",
    "content": "Creating a new MkFont document . Launch the app, create a new .mkfont, and give your font a name. That’s the name that will be embedded into the exported .ttf. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#first-steps",
    "relUrl": "/guides/font-regular.html#first-steps"
  },"101": {
    "doc": "Simple font",
    "title": "Part I : Simple Characters",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#part-i--simple-characters",
    "relUrl": "/guides/font-regular.html#part-i--simple-characters"
  },"102": {
    "doc": "Simple font",
    "title": "Choosing characters",
    "content": "Let’s say we’re going to support good’ol Basic latin. What’s going on here : . | First, select the Basic Latin unicode block from the Content explorer (it’s selected by default when creating a new document) | Use the + action at the top of the Font viewport. | This generates a ready-for-export illustrator document, with an artboard for each of the glyphs within the viewport. | . Illustrator will very likely complain about executing a script with an unreadable name – it’s all fine. What MkFont does is generate a temp .jsx script and forward it to illustrator in order to generate the artboards. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#choosing-characters",
    "relUrl": "/guides/font-regular.html#choosing-characters"
  },"103": {
    "doc": "Simple font",
    "title": "Preparing assets",
    "content": "The first step will be organizing our messed up glyphs into a more structured document, with properly-named artboards : this way we have an export template that we can easily import into MkFont, and make updates a breeze. The idea is to ensure whatever files we export, we can easily import them to a designated unicode slot without any manual correction. Vertical placement is critical . The vertical placement of the asset within the artboard will be critical to make the most out of MkFont’s features. It allows for more consistency &amp; predictability in how things will pan out. If you haven’t already, now is a good time to have a look at the Asset preparation’ doc. Rule of thumb : the bottom edge of the artboard will be the baseline of your font. Depending on what kind of automation you want, have an in-depth look at the Glyph transformations’ Scaling options. How to best position the top edge of the artboard depends mostly on that. As a default, let’s assume the top edge of the artboard is the ascender of your font. ( ) . Horizontal placement really doesn’t matter as much, because you can (and will want to) tweak it. It does matter more with icons, but still isn’t as critical as top/bottom asset boundaries. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#preparing-assets",
    "relUrl": "/guides/font-regular.html#preparing-assets"
  },"104": {
    "doc": "Simple font",
    "title": "Exporting assets",
    "content": "Once you’re done with placing glyphs to their slot in illustrator, time to export. Note that it doesn’t really matter if you have all the glyph in there, the MkFont workflow is very flexible in that regard – you can always update glyph data within the app. You now need to export each artboard to an individual SVG file. If you’re using the MkFont-generated document, make sure to hide the helper layers so you don’t export more that you intend to. The most straightforward way being (inside Illustrator) : . | Open the Export As dialog : File &gt; Export &gt; Export As | Choose SVG as file format | Check the Use artboard option, then select All | Click Export! | . ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#exporting-assets",
    "relUrl": "/guides/font-regular.html#exporting-assets"
  },"105": {
    "doc": "Simple font",
    "title": "Importing assets",
    "content": "Now the last remaining bit : importing your SVGs into MkFont. What’s going on here : . | First, click on the SVGs to choose a bunch of SVGs to import. | Select all the previously exported SVGs. | Since everything has been templated in the most optimal way, there is really nothing to do here, but validate everything looks as you’d expect. | Click Import. | Glyphs have been imported to your MkFont document. | Check the Preview explorer to get a glimpse at your font. | . Nice. But it doesn’t look quite right yet. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#importing-assets",
    "relUrl": "/guides/font-regular.html#importing-assets"
  },"106": {
    "doc": "Simple font",
    "title": "Let the fun begin",
    "content": "So, you guessed it – this is where we’ll tweak metrics. We’re going broad strokes first, and then in more detail (although this guide won’t cover the nit-picking, that part is up to you.) . What’s going on here : . | While browsing My Glyphs | Select all the glyphs using | Go to the Glyph transformations panel | Tweak Shift &amp; Push to give each glyph more breathing room on each side of the imported asset | You can now spend time to tweak each glyph individually. | . One last thing . We need to define the space in our font. It’s the very first character of the Basic Latin block. What’s going on here : . | Select the SPACE unicode slot | Use the from the Glyph inspector to create an empty glyph there | Adjust the width | That’s it, that’s the SPACE. | . ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#let-the-fun-begin",
    "relUrl": "/guides/font-regular.html#let-the-fun-begin"
  },"107": {
    "doc": "Simple font",
    "title": "Export to TTF",
    "content": "Done! To export the font, simply click on the Export action in the top left of the editor. ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#export-to-ttf",
    "relUrl": "/guides/font-regular.html#export-to-ttf"
  },"108": {
    "doc": "Simple font",
    "title": "Part II : Composite characters",
    "content": "Now that we’re done with the basics, let’s add a few more characters from Latin-1 Supplement, but this time with a slightly different manipulation. We’re going to leverage known character decomposition to create modular glyphs from the one we already have, instead of creating new assets. What’s going on here : . | Secret sauce is : use + to boostrap decomposition creation. | . ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#part-ii--composite-characters",
    "relUrl": "/guides/font-regular.html#part-ii--composite-characters"
  },"109": {
    "doc": "Simple font",
    "title": "WORK IN PROGRESS.",
    "content": "Come back later (～￣▽￣)～ . ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#work-in-progress",
    "relUrl": "/guides/font-regular.html#work-in-progress"
  },"110": {
    "doc": "Simple font",
    "title": "Wrap up",
    "content": "There’s no magic involved with the decomposition, in perspective of the whole Unicode database, very few are documented. To know if a glyph has a known decomposition, you can check out the Glyph details! . If you’re interested in digging deeper into components interactions, check out the Composite icon font :) . ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html#wrap-up",
    "relUrl": "/guides/font-regular.html#wrap-up"
  },"111": {
    "doc": "Simple font",
    "title": "Simple font",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/guides/font-regular.html",
    "relUrl": "/guides/font-regular.html"
  },"112": {
    "doc": "Glyph picker",
    "title": "Glyph picker",
    "content": "A simple glyph picker . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/glyph-picker.html#glyph-picker",
    "relUrl": "/docs/dialogs/glyph-picker.html#glyph-picker"
  },"113": {
    "doc": "Glyph picker",
    "title": "WORK IN PROGRESS.",
    "content": "Come back later (～￣▽￣)～ . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/glyph-picker.html#work-in-progress",
    "relUrl": "/docs/dialogs/glyph-picker.html#work-in-progress"
  },"114": {
    "doc": "Glyph picker",
    "title": "Glyph picker",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/glyph-picker.html",
    "relUrl": "/docs/dialogs/glyph-picker.html"
  },"115": {
    "doc": "Home",
    "title": "Home",
    "content": "The landing screen. Table of content . | Primary actions | Action | . | : **MkFont** :| |   | . | New .mkfont | Creates a new .mkfont in memory. You will need to save it on disk for the autosave to work.*If you don’t, you will be assaulted by a modal when the timer runs out.* | . | Load .mkfont | Loads an existing .mkfont file. | . | : **Import** :| |   | . | Load TTF | Creates a new .mkfont from an existing TTF file. | . | Secondary actions | Action | . | About | Open the very same documentation you’re reading right now, but on the About page. | . | Help | Open the very same documentation you’re reading right now. | . | App Settings | Open the App settings panel. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/home-view.html#home",
    "relUrl": "/docs/views/home-view.html#home"
  },"116": {
    "doc": "Home",
    "title": "Home",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/views/home-view.html",
    "relUrl": "/docs/views/home-view.html"
  },"117": {
    "doc": "Adobe© Illustrator",
    "title": "Adobe© Illustrator",
    "content": "··· . ··· . ",
    "url": "https://nebukam.github.io/mkfont/guides/third-party/illustrator.html#adobe-illustrator",
    "relUrl": "/guides/third-party/illustrator.html#adobe-illustrator"
  },"118": {
    "doc": "Adobe© Illustrator",
    "title": "WORK IN PROGRESS.",
    "content": "Come back later (～￣▽￣)～ . ",
    "url": "https://nebukam.github.io/mkfont/guides/third-party/illustrator.html#work-in-progress",
    "relUrl": "/guides/third-party/illustrator.html#work-in-progress"
  },"119": {
    "doc": "Adobe© Illustrator",
    "title": "Adobe© Illustrator",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/guides/third-party/illustrator.html",
    "relUrl": "/guides/third-party/illustrator.html"
  },"120": {
    "doc": "Documentation",
    "title": "Documentation",
    "content": "All the things. Everything you need to find your way around the MkFont editors. ",
    "url": "https://nebukam.github.io/mkfont/docs/#documentation",
    "relUrl": "/docs/#documentation"
  },"121": {
    "doc": "Documentation",
    "title": "Shortcuts",
    "content": "MkFont shortcuts, what do they do, do they do things, let’s find out! . ",
    "url": "https://nebukam.github.io/mkfont/docs/#shortcuts",
    "relUrl": "/docs/#shortcuts"
  },"122": {
    "doc": "Documentation",
    "title": "General interface",
    "content": "An inventory of the most important views . ",
    "url": "https://nebukam.github.io/mkfont/docs/#general-interface",
    "relUrl": "/docs/#general-interface"
  },"123": {
    "doc": "Documentation",
    "title": "Dialogs",
    "content": "An inventory of the most important dialogs . ",
    "url": "https://nebukam.github.io/mkfont/docs/#dialogs",
    "relUrl": "/docs/#dialogs"
  },"124": {
    "doc": "Documentation",
    "title": "Documentation",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/",
    "relUrl": "/docs/"
  },"125": {
    "doc": "Features",
    "title": "Features",
    "content": "MkFont got you covered . Disclaimer . MkFont is under active development, as such you may encounter issues. In the unlikely event that you would, please report an issue on github! Same place if you would like to suggest enhancements &amp; features that would make MkFont even more useful for you :) . ",
    "url": "https://nebukam.github.io/mkfont/features/#features",
    "relUrl": "/features/#features"
  },"126": {
    "doc": "Features",
    "title": "Components",
    "content": "Make more with less! . A powerful component &amp; compositing system, allowing for clever automation and infinite possibilities. ",
    "url": "https://nebukam.github.io/mkfont/features/#components",
    "relUrl": "/features/#components"
  },"127": {
    "doc": "Features",
    "title": "Unicode Browser",
    "content": "MkFont is Unicode compliant. Code points are organized by categories &amp; blocks, immediately accessible and search-able. ",
    "url": "https://nebukam.github.io/mkfont/features/#unicode-browser",
    "relUrl": "/features/#unicode-browser"
  },"128": {
    "doc": "Features",
    "title": "Live Reload",
    "content": "Watch your glyph self-update as you focus on designing them. Bind your imported files to glyphs, or edit them on the fly. Use your time where it matters. ",
    "url": "https://nebukam.github.io/mkfont/features/#live-reload",
    "relUrl": "/features/#live-reload"
  },"129": {
    "doc": "Features",
    "title": "Smart Search",
    "content": "A discovery tool that offer more than meet the eye. You can search for specific characters, but also names &amp; attributes. The search can look for known character association &amp; relationships, too! . ",
    "url": "https://nebukam.github.io/mkfont/features/#smart-search",
    "relUrl": "/features/#smart-search"
  },"130": {
    "doc": "Features",
    "title": "Non-destructive",
    "content": "Manipulates your data, doesn’t alter it. MkFont respect your assets and allows for experimenting safely with different settings, until you find the one that suits your needs. ",
    "url": "https://nebukam.github.io/mkfont/features/#non-destructive",
    "relUrl": "/features/#non-destructive"
  },"131": {
    "doc": "Features",
    "title": "Ligatures made easy",
    "content": "Analyze text to find &amp; add most common combinations . MkFont comes with a small tool that takes a text blurb to show you which group of letters are recurring – and create ligatures out of them. ",
    "url": "https://nebukam.github.io/mkfont/features/#ligatures-made-easy",
    "relUrl": "/features/#ligatures-made-easy"
  },"132": {
    "doc": "Features",
    "title": "Batch import",
    "content": "Quick &amp; easy . Import loads of SVG at once, with multiple ways to assign them to glyphs/code-point.Import directly to your current selection, or to specific Unicode blocks. ",
    "url": "https://nebukam.github.io/mkfont/features/#batch-import",
    "relUrl": "/features/#batch-import"
  },"133": {
    "doc": "Features",
    "title": "TTF import &amp; editing",
    "content": "Start to work from, and explore existing fonts. Import TTFs files in a single click, tweak them and re-export them in just a few clicks. ",
    "url": "https://nebukam.github.io/mkfont/features/#ttf-import--editing",
    "relUrl": "/features/#ttf-import--editing"
  },"134": {
    "doc": "Features",
    "title": "Live preview",
    "content": "Preview your font at any time, all the time. (ok that one was a must have anyway) . ",
    "url": "https://nebukam.github.io/mkfont/features/#live-preview",
    "relUrl": "/features/#live-preview"
  },"135": {
    "doc": "Features",
    "title": "3rd party automation",
    "content": "One-click documents &amp; artboards setup, ready to export. MkFont comes with built-in automation tools for Adobe© Illustrator, for an even smoother workflow. Finger crossed more tools gets that kind of support soon! . ",
    "url": "https://nebukam.github.io/mkfont/features/#rd-party-automation",
    "relUrl": "/features/#rd-party-automation"
  },"136": {
    "doc": "Features",
    "title": "And more!",
    "content": "A bunch of discreet QoL features. Lots of small options &amp; features to make it easy to work with your glyphs with third parties such as Unity’ TextMeshPro. ",
    "url": "https://nebukam.github.io/mkfont/features/#and-more",
    "relUrl": "/features/#and-more"
  },"137": {
    "doc": "Features",
    "title": "Current limitation",
    "content": "MkFont does not support kerning pairs yet. And it may not ever. Something that will be implemented in the future to circumvent that limitation is creating special ligatures that combine existing glyphs within the font, but it does come with other caveats such as issues arising when tweaking the letter spacing in the final rendering context. （＞人＜；） . Planned features . Here are some of the features currently under development or planned to be, at some point, soon, maybe. In no particular order. | Working title | Use | . | Showcase Generator | Quickly generate a nice looking visual with your glyphs to showcase it, exports as a .png file. | . | Glyph as components | Ability to combine existing glyph into another. This would be especially useful in order to re-user marks &amp; modifier along with unmodified glyphs and not duplicate the work/amount of assets required to have a fully functional font | . | Glyph layers | Similar to Glyph as components, working the ability to use existing glyphs as additional \"layers\" inside another Glyph. Glyph would either be used as-is, or with its path reversed in order to create \"holes\" – hence making icon font much more flexible. | . | Add existing glyph to Adobe© Illustrator automation | Currently the Adobe© Illustrator automation only creates blank templates. Wouldn’t it be nice if it could also import existing glyphs within the font? | . ",
    "url": "https://nebukam.github.io/mkfont/features/#current-limitation",
    "relUrl": "/features/#current-limitation"
  },"138": {
    "doc": "Features",
    "title": "Features",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/",
    "relUrl": "/features/"
  },"139": {
    "doc": "General interface",
    "title": "General interface",
    "content": "An inventory of the most important views . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/#general-interface",
    "relUrl": "/docs/views/#general-interface"
  },"140": {
    "doc": "General interface",
    "title": "Editors",
    "content": ". ",
    "url": "https://nebukam.github.io/mkfont/docs/views/#editors",
    "relUrl": "/docs/views/#editors"
  },"141": {
    "doc": "General interface",
    "title": "Font editor",
    "content": "Where you spend 100% of your time within MkFont. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/#font-editor",
    "relUrl": "/docs/views/#font-editor"
  },"142": {
    "doc": "General interface",
    "title": "Font viewport",
    "content": "Navigate &amp; search through Unicode slots. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/#font-viewport",
    "relUrl": "/docs/views/#font-viewport"
  },"143": {
    "doc": "General interface",
    "title": "Glyph inspector",
    "content": "Edit individual &amp; multiples glyphs here. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/#glyph-inspector",
    "relUrl": "/docs/views/#glyph-inspector"
  },"144": {
    "doc": "General interface",
    "title": "Foldouts",
    "content": ". ",
    "url": "https://nebukam.github.io/mkfont/docs/views/#foldouts",
    "relUrl": "/docs/views/#foldouts"
  },"145": {
    "doc": "General interface",
    "title": "Glyph transformations",
    "content": "An inventory of the transformation options. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/#glyph-transformations",
    "relUrl": "/docs/views/#glyph-transformations"
  },"146": {
    "doc": "General interface",
    "title": "Glyph components",
    "content": "Make more with less! . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/#glyph-components",
    "relUrl": "/docs/views/#glyph-components"
  },"147": {
    "doc": "General interface",
    "title": "Glyph details",
    "content": "Decomposition, relatives, etc. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/#glyph-details",
    "relUrl": "/docs/views/#glyph-details"
  },"148": {
    "doc": "General interface",
    "title": "Explorers",
    "content": ". ",
    "url": "https://nebukam.github.io/mkfont/docs/views/#explorers",
    "relUrl": "/docs/views/#explorers"
  },"149": {
    "doc": "General interface",
    "title": "Content explorer",
    "content": "Unicode. All of it. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/#content-explorer",
    "relUrl": "/docs/views/#content-explorer"
  },"150": {
    "doc": "General interface",
    "title": "Preview explorer",
    "content": "An handy interactive preview. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/#preview-explorer",
    "relUrl": "/docs/views/#preview-explorer"
  },"151": {
    "doc": "General interface",
    "title": "History explorer",
    "content": "Your friendly time machine. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/#history-explorer",
    "relUrl": "/docs/views/#history-explorer"
  },"152": {
    "doc": "General interface",
    "title": "General interface",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/views/",
    "relUrl": "/docs/views/"
  },"153": {
    "doc": "Showcase",
    "title": "Showcase",
    "content": "A few fonts made with MkFont – feel free to use them, they’re licensed under MIT :) . ",
    "url": "https://nebukam.github.io/mkfont/showcase/",
    "relUrl": "/showcase/"
  },"154": {
    "doc": "Dialogs",
    "title": "Dialogs",
    "content": "An inventory of the most important dialogs . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/#dialogs",
    "relUrl": "/docs/dialogs/#dialogs"
  },"155": {
    "doc": "Dialogs",
    "title": "Family Infos",
    "content": "Metadata, etcetera. ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/#family-infos",
    "relUrl": "/docs/dialogs/#family-infos"
  },"156": {
    "doc": "Dialogs",
    "title": "Family metrics",
    "content": "Primary &amp; reference properties for your font and its glyphs. ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/#family-metrics",
    "relUrl": "/docs/dialogs/#family-metrics"
  },"157": {
    "doc": "Dialogs",
    "title": "Glyph picker",
    "content": "A simple glyph picker . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/#glyph-picker",
    "relUrl": "/docs/dialogs/#glyph-picker"
  },"158": {
    "doc": "Dialogs",
    "title": "Ligatures finder",
    "content": "Where ligatures happen. ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/#ligatures-finder",
    "relUrl": "/docs/dialogs/#ligatures-finder"
  },"159": {
    "doc": "Dialogs",
    "title": "Batch import files",
    "content": "Speeds things up, import in lots. ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/#batch-import-files",
    "relUrl": "/docs/dialogs/#batch-import-files"
  },"160": {
    "doc": "Dialogs",
    "title": "App settings",
    "content": "Application-level settings, affects all the things. ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/#app-settings",
    "relUrl": "/docs/dialogs/#app-settings"
  },"161": {
    "doc": "Dialogs",
    "title": "Dialogs",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/",
    "relUrl": "/docs/dialogs/"
  },"162": {
    "doc": "Third parties",
    "title": "Third parties",
    "content": "Interaction with external apps . How to make the most out of MkFont using supported third party applications . ",
    "url": "https://nebukam.github.io/mkfont/guides/third-party/#third-parties",
    "relUrl": "/guides/third-party/#third-parties"
  },"163": {
    "doc": "Third parties",
    "title": "Third-party doc is mostly WIP.",
    "content": "Come back later (～￣▽￣)～ . ",
    "url": "https://nebukam.github.io/mkfont/guides/third-party/#third-party-doc-is-mostly-wip",
    "relUrl": "/guides/third-party/#third-party-doc-is-mostly-wip"
  },"164": {
    "doc": "Third parties",
    "title": "Third parties",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/guides/third-party/",
    "relUrl": "/guides/third-party/"
  },"165": {
    "doc": "Guides",
    "title": "Guides",
    "content": "How to use MkFont for various scenarios . Small examples &amp; step-by-step guides to get a grasp on how to get things done with MkFont. ",
    "url": "https://nebukam.github.io/mkfont/guides/#guides",
    "relUrl": "/guides/#guides"
  },"166": {
    "doc": "Guides",
    "title": "Asset preparation",
    "content": "How to prepare assets . Covers some basics yet important things regarding asset preparation . ",
    "url": "https://nebukam.github.io/mkfont/guides/#asset-preparation",
    "relUrl": "/guides/#asset-preparation"
  },"167": {
    "doc": "Guides",
    "title": "Simple font",
    "content": "How to make a simple font . A regular font with mixed types of glyphs &amp; settings. ",
    "url": "https://nebukam.github.io/mkfont/guides/#simple-font",
    "relUrl": "/guides/#simple-font"
  },"168": {
    "doc": "Guides",
    "title": "Simple icon font",
    "content": "How to make an icon font . A simple monospace icon font with normalized glyphs. ",
    "url": "https://nebukam.github.io/mkfont/guides/#simple-icon-font",
    "relUrl": "/guides/#simple-icon-font"
  },"169": {
    "doc": "Guides",
    "title": "Composite icon font",
    "content": "How to make an icon font . A font with complex component interactions.Acts as an exhaustive showcase of MkFont capabilities. ",
    "url": "https://nebukam.github.io/mkfont/guides/#composite-icon-font",
    "relUrl": "/guides/#composite-icon-font"
  },"170": {
    "doc": "Guides",
    "title": "Third parties",
    "content": "Interaction with external apps . How to make the most out of MkFont using supported third party applications . ",
    "url": "https://nebukam.github.io/mkfont/guides/#third-parties",
    "relUrl": "/guides/#third-parties"
  },"171": {
    "doc": "Guides",
    "title": "Tips and tricks",
    "content": "Squeeze the most out of MkFont . A few tips and tricks to optimize the place of MkFont within your workflow. ",
    "url": "https://nebukam.github.io/mkfont/guides/#tips-and-tricks",
    "relUrl": "/guides/#tips-and-tricks"
  },"172": {
    "doc": "Guides",
    "title": "Guides",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/guides/",
    "relUrl": "/guides/"
  },"173": {
    "doc": "Downloads",
    "title": "Downloads",
    "content": "Download the app . MkFont is currently availble for Windows and macOS. ",
    "url": "https://nebukam.github.io/mkfont/downloads/#downloads",
    "relUrl": "/downloads/#downloads"
  },"174": {
    "doc": "Downloads",
    "title": "Windows",
    "content": "  MkFont Setup (.exe) MkFont Unpacked (.zip) . You might get a warning using the .exe – you can still install the app safely, but in case that doesn’t cut it for you, I recommend using the unpacked version instead, which doesn’t require installation. You will loose some benefits such as file associations, but that’s it. Releases history . ",
    "url": "https://nebukam.github.io/mkfont/downloads/#windows",
    "relUrl": "/downloads/#windows"
  },"175": {
    "doc": "Downloads",
    "title": "Mac OS",
    "content": "  MkFont (.zip) . Due to logistical reasons, the latest macOS version may not be the real latest one and lag a few version behind – although I’ll do my best to make major bugfixes &amp; features available swiftly. ",
    "url": "https://nebukam.github.io/mkfont/downloads/#mac-os",
    "relUrl": "/downloads/#mac-os"
  },"176": {
    "doc": "Downloads",
    "title": "Linux",
    "content": "  MkFont is currently only available for Windows &amp; macOS. ",
    "url": "https://nebukam.github.io/mkfont/downloads/#linux",
    "relUrl": "/downloads/#linux"
  },"177": {
    "doc": "Downloads",
    "title": "Sources available on Github.",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/downloads/#sources-available-on-github",
    "relUrl": "/downloads/#sources-available-on-github"
  },"178": {
    "doc": "Downloads",
    "title": "Downloads",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/downloads/",
    "relUrl": "/downloads/"
  },"179": {
    "doc": "MkFont",
    "title": "MkFont mkfont",
    "content": "Export fonts. With a twist. Component-based workflow, with advanced features to nit-pick &amp; tweak metrics in a non-destructive way.   Download Guides Documentation . Import to export in just a few seconds. Tweak forever. ",
    "url": "https://nebukam.github.io/mkfont/#mkfont-mkfont",
    "relUrl": "/#mkfont-mkfont"
  },"180": {
    "doc": "MkFont",
    "title": "Exciting features",
    "content": ". ",
    "url": "https://nebukam.github.io/mkfont/#exciting-features",
    "relUrl": "/#exciting-features"
  },"181": {
    "doc": "MkFont",
    "title": "Components",
    "content": "Make more with less! . A powerful component &amp; compositing system, allowing for clever automation and infinite possibilities. ",
    "url": "https://nebukam.github.io/mkfont/#components",
    "relUrl": "/#components"
  },"182": {
    "doc": "MkFont",
    "title": "Unicode Browser",
    "content": "MkFont is Unicode compliant. Code points are organized by categories &amp; blocks, immediately accessible and search-able. ",
    "url": "https://nebukam.github.io/mkfont/#unicode-browser",
    "relUrl": "/#unicode-browser"
  },"183": {
    "doc": "MkFont",
    "title": "Live Reload",
    "content": "Watch your glyph self-update as you focus on designing them. Bind your imported files to glyphs, or edit them on the fly. Use your time where it matters. ",
    "url": "https://nebukam.github.io/mkfont/#live-reload",
    "relUrl": "/#live-reload"
  },"184": {
    "doc": "MkFont",
    "title": "Smart Search",
    "content": "A discovery tool that offer more than meet the eye. You can search for specific characters, but also names &amp; attributes. The search can look for known character association &amp; relationships, too! . ",
    "url": "https://nebukam.github.io/mkfont/#smart-search",
    "relUrl": "/#smart-search"
  },"185": {
    "doc": "MkFont",
    "title": "Non-destructive",
    "content": "Manipulates your data, doesn’t alter it. MkFont respect your assets and allows for experimenting safely with different settings, until you find the one that suits your needs. ",
    "url": "https://nebukam.github.io/mkfont/#non-destructive",
    "relUrl": "/#non-destructive"
  },"186": {
    "doc": "MkFont",
    "title": "Ligatures made easy",
    "content": "Analyze text to find &amp; add most common combinations . MkFont comes with a small tool that takes a text blurb to show you which group of letters are recurring – and create ligatures out of them. ",
    "url": "https://nebukam.github.io/mkfont/#ligatures-made-easy",
    "relUrl": "/#ligatures-made-easy"
  },"187": {
    "doc": "MkFont",
    "title": "Batch import",
    "content": "Quick &amp; easy . Import loads of SVG at once, with multiple ways to assign them to glyphs/code-point.Import directly to your current selection, or to specific Unicode blocks. ",
    "url": "https://nebukam.github.io/mkfont/#batch-import",
    "relUrl": "/#batch-import"
  },"188": {
    "doc": "MkFont",
    "title": "TTF import &amp; editing",
    "content": "Start to work from, and explore existing fonts. Import TTFs files in a single click, tweak them and re-export them in just a few clicks. ",
    "url": "https://nebukam.github.io/mkfont/#ttf-import--editing",
    "relUrl": "/#ttf-import--editing"
  },"189": {
    "doc": "MkFont",
    "title": "Live preview",
    "content": "Preview your font at any time, all the time. (ok that one was a must have anyway) . ",
    "url": "https://nebukam.github.io/mkfont/#live-preview",
    "relUrl": "/#live-preview"
  },"190": {
    "doc": "MkFont",
    "title": "3rd party automation",
    "content": "One-click documents &amp; artboards setup, ready to export. MkFont comes with built-in automation tools for Adobe© Illustrator, for an even smoother workflow. Finger crossed more tools gets that kind of support soon! . ",
    "url": "https://nebukam.github.io/mkfont/#rd-party-automation",
    "relUrl": "/#rd-party-automation"
  },"191": {
    "doc": "MkFont",
    "title": "And more!",
    "content": "A bunch of discreet QoL features. Lots of small options &amp; features to make it easy to work with your glyphs with third parties such as Unity’ TextMeshPro. ",
    "url": "https://nebukam.github.io/mkfont/#and-more",
    "relUrl": "/#and-more"
  },"192": {
    "doc": "MkFont",
    "title": "MkFont",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/",
    "relUrl": "/"
  },"193": {
    "doc": "Glyph inspector",
    "title": "Glyph inspector",
    "content": "Edit individual &amp; multiples glyphs here. For the various foldouts in full details, see . | Glyph transformations | . Table of content . | Glyph preview | Empty slot inspection . | Header actions | . | Single glyph inspection . | Header actions | Inspector blocks | Glyph transformations | Glyph components | Glyph details . | Shortcut &amp; actions | . | Settings . | Export | Resource binding | . | . | Multiple glyph inspection . | Header actions | . | Empty glyph inspection | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#glyph-inspector",
    "relUrl": "/docs/views/inspector-glyph.html#glyph-inspector"
  },"194": {
    "doc": "Glyph inspector",
    "title": "Glyph preview",
    "content": "The glyph preview is non-interactive, and shows the all the metrics &amp; guides that currently define the typographic space. The blue boundary box shows the glyph boundaries as currently seen by the transformation algorithm, according to the active transformation settings. If this is not what you were expecting, either play around with the selected boundary options, or check your source file. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#glyph-preview",
    "relUrl": "/docs/views/inspector-glyph.html#glyph-preview"
  },"195": {
    "doc": "Glyph inspector",
    "title": "Empty slot inspection",
    "content": "An empty slot is a that “does not exists”. It’s neither empty nor has a path, it’s simply not part of the font. Unless you started your doc by importing a .ttf, this is likely the first thing you’ll interact with. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#empty-slot-inspection",
    "relUrl": "/docs/views/inspector-glyph.html#empty-slot-inspection"
  },"196": {
    "doc": "Glyph inspector",
    "title": "Header actions",
    "content": "Actions are limited to the following when editing an empty slot : . | Action | Effect | . | : **Glyph identity** :| |   | . | | Copy the unicode address of the glyph to the clipboard. Ligatures will show as ‘_‘-joint Unicode hex values. | . | : **Glyph actions** :| |   | . | | Create new glyph by importing an SVG from an external file. *File will become bound for the session according to the app settings* | . | | Create new glyph by importing clipboard content. Same as using . | . | | Create a new empty glyph. It becomes an customizable void. | . | + | Create a new glyph along with components matching the glyph composition, if any. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#header-actions",
    "relUrl": "/docs/views/inspector-glyph.html#header-actions"
  },"197": {
    "doc": "Glyph inspector",
    "title": "Single glyph inspection",
    "content": ". ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#single-glyph-inspection",
    "relUrl": "/docs/views/inspector-glyph.html#single-glyph-inspection"
  },"198": {
    "doc": "Glyph inspector",
    "title": "Header actions",
    "content": "Action available in the inspector’s header are the following . | Action | Effect | . | : **Glyph identity** :| |   | . | | Copy the unicode address of the glyph to the clipboard. Ligatures will show as ‘_‘-joint Unicode hex values. | . | : **Glyph actions** :| |   | . | | Import an SVG from an external file. *File will become bound for the session according to the app settings* | . | | Import clipboard content. Same as using . | . | | Resets the glyph’s contents to empty, but does not delete the glyph. It becomes an customizable void. | . | + | Resets the glyph contents &amp; create components matching the glyph composition, if any. | . | + | Resets the glyph contents but keeps existing components. | . | | Edit in place : create a temp SVG file with the glyph’s contents, and open the default SVG editor on your system. Saving the SVG from said editor will update the asset within MkFont. *Note that if the glyph is currently bound to a file, this option is disabled. In order to make it available again, simply unlink the glyph from its file resource.* | . | | Export glyph to clipboard. Same as using . | . | | Delete the glyph and its content. It won’t be part of the font anymore. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#header-actions-1",
    "relUrl": "/docs/views/inspector-glyph.html#header-actions-1"
  },"199": {
    "doc": "Glyph inspector",
    "title": "Inspector blocks",
    "content": "Each foldout has its own dedicated page. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#inspector-blocks",
    "relUrl": "/docs/views/inspector-glyph.html#inspector-blocks"
  },"200": {
    "doc": "Glyph inspector",
    "title": "Glyph transformations",
    "content": "An inventory of the transformation options. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#glyph-transformations",
    "relUrl": "/docs/views/inspector-glyph.html#glyph-transformations"
  },"201": {
    "doc": "Glyph inspector",
    "title": "Glyph components",
    "content": "Make more with less! . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#glyph-components",
    "relUrl": "/docs/views/inspector-glyph.html#glyph-components"
  },"202": {
    "doc": "Glyph inspector",
    "title": "Glyph details",
    "content": "Decomposition, relatives, etc. Shortcut &amp; actions . When displayed in the glyph inspector, the Glyph transformations has some additional actions available : . | Modifier | Action | . | | Paste transforms from clipboard | . | | Paste transforms from clipboard | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#glyph-details",
    "relUrl": "/docs/views/inspector-glyph.html#glyph-details"
  },"203": {
    "doc": "Glyph inspector",
    "title": "Settings",
    "content": "Export . | Property | Effect | . | Export | Whether or not to include the glyph in the exported font. | . Resource binding . If the glyph is currently bound to a file, the binding and the ability to break it ( ) will show under the preview. Bindings are created during external file imports, either individually using , or during batch import. A glyph bound to a resource will re-import itself whenever the file is updated. | Empty path will be ignored (i.e, if the file previously had content but not anymore) and won’t ‘reset’ the glyph. | Deleted resources will be automatically unbound without affecting the glyph. i.e, it’s generally safe to bind resources, and it should never have destructive consequences (unless you mess with your own art) | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#settings",
    "relUrl": "/docs/views/inspector-glyph.html#settings"
  },"204": {
    "doc": "Glyph inspector",
    "title": "Multiple glyph inspection",
    "content": "Note that multi-glyph editing only affect the glyph that exists. If you have empty slot within your selection, they will be ignored. When multiple glyphs are selected, changing parameters will apply to all the selected glyphs. You can click on any selected glyph within the viewport in order to “bump” it so it shows first within the first four previews. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#multiple-glyph-inspection",
    "relUrl": "/docs/views/inspector-glyph.html#multiple-glyph-inspection"
  },"205": {
    "doc": "Glyph inspector",
    "title": "Header actions",
    "content": "Actions are limited to the following when editing groups : . | Action | Effect | . | : **Glyph identity** :| |   | . | | Copy the unicode address of all the selected glyph to the clipboard, separated by , .i.e : U+006B, U+006C, U+006D | . | : **Glyph actions** :| |   | . | | Resets the glyphs’ contents to empty, but does not delete them. | . | + | Resets the all the glyphs in the selection &amp; create components matching the glyph composition, if any. | . | | Create a ligature based on the current selection. *The tooltip shows the ligature created.* | . | + | Same as above, but will also bootstrap the ligature by adding all of the individual glyphs it contains, chained together. | . | + | Resets all the glyphs in the selection but keeps their existing components. | . | | Delete the glyphs and their content. | . Creating a ligature from the active glyph selection is not the same thing as creating it from the Preview explorer! The glyph selection contains unique glyphs. If any glyph within the selection is bound to a file, a button will show at the very bottom of the inspector. When clicked, every bound item within the active selection will be disconnected from its resource on disk. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#header-actions-2",
    "relUrl": "/docs/views/inspector-glyph.html#header-actions-2"
  },"206": {
    "doc": "Glyph inspector",
    "title": "Empty glyph inspection",
    "content": "An empty glyph is a glyph that exists and takes space within a sentence. The actual space it will take is represented by an orange placeholder box. Not much to see here. Empty glyph width can be changed by either tweaking the glyph’ Width, Shift or Push . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html#empty-glyph-inspection",
    "relUrl": "/docs/views/inspector-glyph.html#empty-glyph-inspection"
  },"207": {
    "doc": "Glyph inspector",
    "title": "Glyph inspector",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/views/inspector-glyph.html",
    "relUrl": "/docs/views/inspector-glyph.html"
  },"208": {
    "doc": "Ligatures finder",
    "title": "Ligatures finder",
    "content": "Where ligatures happen. The ligature finder has two main input modes : text analysis, and manual input. You can switch between the two simply by toggling the Each line is a ligature on or off. Table of content . | Text analysis . | Thresholds | . | One ligature per line | . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/ligatures-finder.html#ligatures-finder",
    "relUrl": "/docs/dialogs/ligatures-finder.html#ligatures-finder"
  },"209": {
    "doc": "Ligatures finder",
    "title": "Text analysis",
    "content": "Ok, analysis is a big word, there’s no real analysis going on here, just brute force statistical extraction. Simply paste a blurb of text in the input field, hit enter, and the ligatures options will start showing! . Note that only the first 500 results (after thresholds are applied) will show up. Thresholds . The results can be narrowed down &amp; limited by a few parameters : . | Property | Effect | . | Min length | Minimum ligature length to look for. For obvious reasons, cannot be lower than 2. | . | Max length | Maximum ligature length to look for. The higher the value, the more low-quality results/occurences you’re going to get. | . | Min occurrences | The minimum number of times a ligature must be present in order to show up in the results. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/ligatures-finder.html#text-analysis",
    "relUrl": "/docs/dialogs/ligatures-finder.html#text-analysis"
  },"210": {
    "doc": "Ligatures finder",
    "title": "One ligature per line",
    "content": ". In this mode, simply input the target ligature on each line to manually produce results. Other parameters will be ignored. Use to do a line break . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/ligatures-finder.html#one-ligature-per-line",
    "relUrl": "/docs/dialogs/ligatures-finder.html#one-ligature-per-line"
  },"211": {
    "doc": "Ligatures finder",
    "title": "Ligatures finder",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/ligatures-finder.html",
    "relUrl": "/docs/dialogs/ligatures-finder.html"
  },"212": {
    "doc": "Ligatures made easy",
    "title": "Ligatures made easy",
    "content": "Analyze text to find &amp; add most common combinations . MkFont comes with a small tool that takes a text blurb to show you which group of letters are recurring – and create ligatures out of them. ",
    "url": "https://nebukam.github.io/mkfont/features/ligatures.html#ligatures-made-easy",
    "relUrl": "/features/ligatures.html#ligatures-made-easy"
  },"213": {
    "doc": "Ligatures made easy",
    "title": "Ligatures made easy",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/ligatures.html",
    "relUrl": "/features/ligatures.html"
  },"214": {
    "doc": "Batch import files",
    "title": "Batch import files",
    "content": "Speeds things up, import in lots. This is the dialog for importing a list of SVG files and assigning them to specific glyph slots. Table of content . | Glyph Transformation | Overlap | Assignation . | From filename | To block | To block (constrained) | To selection | . | Import list . | Manually assign a slot | . | . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/list-import.html#batch-import-files",
    "relUrl": "/docs/dialogs/list-import.html#batch-import-files"
  },"215": {
    "doc": "Batch import files",
    "title": "Glyph Transformation",
    "content": "Important note : when batch-importing, the Glyph transformations are on a one-for-all basis. Per-glyph tweaks can be done after import. It is also important to highlight that the preview on the right show what the glyph will look like after being imported; hence it’s very easy to check whether or not you want to keep or overwrite existing transforms. See Glyph transformations for a detailed overview of the transformation options. ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/list-import.html#glyph-transformation",
    "relUrl": "/docs/dialogs/list-import.html#glyph-transformation"
  },"216": {
    "doc": "Batch import files",
    "title": "Overlap",
    "content": "Overlap is the first setting. It manages how importation is handled when there is an overlap. An overlap is when you’re trying to import a glyph into a slot that already contains a glyph. The following resolutions options are available : . | Selection | Resolution | . | Overwrite transforms | The new path will overwrite the existing one, as well as its transformations settings, effectively using the one displayed on the left of the dialog. | . | Overwrite empty, otherwise preserve | The new path will will be overwrite the existing one, but transformations will be preserved if the path wasn’t an empty one. *(useful if you manually create empty glyphs to ‘bookmark’ them)* | . | Preserve existing transforms | The new path will overwrite the existing one, however the existing transformations settings will be preserved.When relying on resources-binding to work, this is a great way to restore bindings to existing glyphs and only update the graphics. | . | Don’t import | The importer will skip any item that correspond to an existing glyph.Select this is you only want to fill the slots that are currently empty in your font. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/list-import.html#overlap",
    "relUrl": "/docs/dialogs/list-import.html#overlap"
  },"217": {
    "doc": "Batch import files",
    "title": "Assignation",
    "content": "Assignation determines how an imported SVG will be assigned to a unicode slot. i.e, what seats it’s supposed to take. Which option to choose from is highly specific to how you like to work, and the type of font you’re working on. File list is internally sorted on import to ensure consistent &amp; predictable behavior. When working with regular font, I highly recommend using From filename and maintain strict naming conventions to avoid wondering whether a glyph should be here or there. However, when working with icon font, it can be preferable to select To block. No matter which assignation mode you choose, you can always set the target slot manually :) Also, the character &amp; slot address (hex value) where the glyph will be imported is visible and updated at all times. At the time of writing, there are four options to choose from: . | From filename | To block | To block (constrained) | To selection | . From filename . As stated in the name, this option will extract the target slot from the filename structure. By default, the importer will try to extract the largest chain of character shared by every single file. If you’re using a default prefix, it should be already set. However, if not, or if incorrect, you’ll have to define it manually. Here are the two things required to extract info from the filename. | Parameter | Expected content | . | Name prefix | A chain of character that indicates the point in the filname where MkFont should start looking for infos.*If all your filenames are completely different, it’s very likely you’ll have to manually set each glyph.* | . | Separator | A custom character that is used to separate the different unicode that compose your glyph.*This is only useful if you work with ligatures.* | . Now, there are two ways to include the slot address in the filename : . | If you’re working with simple letters that are acceptable in a filename, you can use that. | Otherwise, you’ll need to explicitly describe the character address in the form U+0000. | . Examples Name Prefix : char Separator : _ . | Filename | Character/Addresses found | Slot | . | foo-char_A.svg | A | A (LATIN CAPITAL LETTER A) | . | bar-char_U+0041.svg | U+0041 | A (LATIN CAPITAL LETTER A) | . | poet-char_A_U+0041.svg | A, U+0041 | AA (custom ligature) | . | char_U+0041_U+0041.svg | U+0041, U+0041 | AA (custom ligature) | . | nay-char_0.svg | 0 | 0 (DIGIT ZERO) | . | nay-char_test.svg | t, e, s, t | test (custom ligature) | . …And so on. Everything before char will be ignored, and everything after is extracted at each ‘_’ . The U+0000 can be added to your clipboard from multiple places in the app. Look for . To block . This option will start importing glyphs into a specific Unicode block of your choosing (from the Reference block list). You can then select where to start importing within that block : . | Selection | Behavior | . | Block start | The import will start at the first index of the selected block. | . | First empty slot | The import will look for the first empty slot within the selected block, and start import from there. | . | Manual offset | *not implemented yet* | . Now, if you import a massive number of glyphs, or simply if you selected first empty slot and there isn’t any, glyphs will still be imported but they will overflow to the next block. If that’s something you want to avoid, have a look at the next option. To block (constrained) . Identical to To block, this mode won’t import glyphs that would fall outside of the selected block’s range. To selection . This is the tricksiest of the gang, probably the less useful too. It requires an active selection within the viewport prior to importation. This selection will be used as target default slot in the order in which the selection has been made. ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/list-import.html#assignation",
    "relUrl": "/docs/dialogs/list-import.html#assignation"
  },"218": {
    "doc": "Batch import files",
    "title": "Import list",
    "content": "The import list lets you browse to the file that are going to be imported and check out their state. Each item offer the ability for manual assignation. | State | Meaning | . | New glyph | *Glyph will be imported in the U+0048 slot, a.k.a F, a.k.a LATIN CAPITAL LETTER K* | . | Overwrite glyph | *Glyph will be imported in the U+003F slot, a.k.a ?, a.k.a QUESTION MARK* | . | Overwrite custom glyph | *Glyph will be imported in the U+0041 slot, a.k.a A, a.k.a LATIN CAPITAL LETTER A* | . | Not imported | *Glyph will not be imported.* | . Manually assign a slot . What to input in the field to get what you want is very similar to the way assignation by filename works : content of the field will be parsed to find the slot that matches your input. The main difference is that here, each character is looked at. If you input more than one character, it automatically becomes a ligature; unless you’re using the U+0000 format. No matter what happens, the item will preview the final destination slot right below the input field. Examples | Input | Character/Addresses found | Slot | . | A | A | A (LATIN CAPITAL LETTER A) | . | U+0041 | U+0041 | A (LATIN CAPITAL LETTER A) | . | AU+0041 | A, U+0041 | AA (custom ligature) | . | U+0041U+0041 | U+0041, U+0041 | AA (custom ligature) | . | 0 | 0 | 0 (DIGIT ZERO) | . | test | t, e, s, t | test (custom ligature) | . …And so on. When overwriting an existing glyph, preview will show a faint version of the currently existing glyph behind the new one, so you get a better sense of the update you’re about to apply. ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/list-import.html#import-list",
    "relUrl": "/docs/dialogs/list-import.html#import-list"
  },"219": {
    "doc": "Batch import files",
    "title": "Batch import files",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/dialogs/list-import.html",
    "relUrl": "/docs/dialogs/list-import.html"
  },"220": {
    "doc": "Live Reload",
    "title": "Live Reload",
    "content": "Watch your glyph self-update as you focus on designing them. Bind your imported files to glyphs, or edit them on the fly. Use your time where it matters. ",
    "url": "https://nebukam.github.io/mkfont/features/live-reload.html#live-reload",
    "relUrl": "/features/live-reload.html#live-reload"
  },"221": {
    "doc": "Live Reload",
    "title": "Live Reload",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/live-reload.html",
    "relUrl": "/features/live-reload.html"
  },"222": {
    "doc": "Miscellaneous",
    "title": "Miscellaneous",
    "content": "Notable features, but that didn’t deserve an individual page. ",
    "url": "https://nebukam.github.io/mkfont/features/misc.html#miscellaneous",
    "relUrl": "/features/misc.html#miscellaneous"
  },"223": {
    "doc": "Miscellaneous",
    "title": "Non-destructive workflow",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/misc.html#non-destructive-workflow",
    "relUrl": "/features/misc.html#non-destructive-workflow"
  },"224": {
    "doc": "Miscellaneous",
    "title": "TTF import &amp; editing",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/misc.html#ttf-import--editing",
    "relUrl": "/features/misc.html#ttf-import--editing"
  },"225": {
    "doc": "Miscellaneous",
    "title": "Live preview",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/misc.html#live-preview",
    "relUrl": "/features/misc.html#live-preview"
  },"226": {
    "doc": "Miscellaneous",
    "title": "Miscellaneous",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/misc.html",
    "relUrl": "/features/misc.html"
  },"227": {
    "doc": "Resources",
    "title": "Resources",
    "content": "Some useful resources &amp; example files. ",
    "url": "https://nebukam.github.io/mkfont/downloads/resources.html#resources",
    "relUrl": "/downloads/resources.html#resources"
  },"228": {
    "doc": "Resources",
    "title": "WORK IN PROGRESS.",
    "content": "Come back later (～￣▽￣)～ . ",
    "url": "https://nebukam.github.io/mkfont/downloads/resources.html#work-in-progress",
    "relUrl": "/downloads/resources.html#work-in-progress"
  },"229": {
    "doc": "Resources",
    "title": "Resources",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/downloads/resources.html",
    "relUrl": "/downloads/resources.html"
  },"230": {
    "doc": "Shortcuts",
    "title": "Shortcuts",
    "content": "MkFont shortcuts, what do they do, do they do things, let’s find out! . All numeric inputs &amp; sliders in MkFont can be modified using the mouse wheel on hover. Holding while scrolling or dragging will multiply the default increment by 10. Rule of thumb : most actions have an alternative behavior whether you’re holding or while activating them. Usually, has the most “dangerous” effect, and reaches further than the original behavior. On the contrary, has a lesser effect, and often means the action will only execute a subset of its normal instructions. ",
    "url": "https://nebukam.github.io/mkfont/docs/shortcuts.html#shortcuts",
    "relUrl": "/docs/shortcuts.html#shortcuts"
  },"231": {
    "doc": "Shortcuts",
    "title": "In the Font editor",
    "content": "| Shortcut | Action | . | : **Actions** :| |   | . | | Saves the currently edited mkfont file. Prompts a dialog if the file has never been saved before. | . | | Undo last action | . | | Redo last action | . | : **Navigation** :| |   | . | | Previous nav state *(should be the same as in a regular browser)* | . | | Next nav state *(should be the same as in a regular browser)* | . | : **Selection** :| |   | . | | Selects all glyphs currently displayed in the viewport. | . | | Clears the current selection | . | | Store the current selection as a shortcut. | . | | Restore the selection previously stored | . | | Appends the selection previously stored to the current selection | . Keep in mind that glyphs are copied and pasted in the order in which they have been selected. Pasting a group selection on top of another group selection will ‘wrap’ the content available in the clipboard. For example, if you copied 1,2, and paste it over a selection that has more than 2 glyphs, the result will be 1,2,1,2,1,… . ",
    "url": "https://nebukam.github.io/mkfont/docs/shortcuts.html#in-the-font-editor",
    "relUrl": "/docs/shortcuts.html#in-the-font-editor"
  },"232": {
    "doc": "Shortcuts",
    "title": "In the Font viewport",
    "content": "| Shortcut | Action | . | | Copy a single glyph to the app clipboard | . | | Paste the content of the clipboard in the selected glyph slot.Supports pasting directly from Adobe© Illustrator! | . | | Paste the glyphs copied using to their matching unicode slots. This is especially *(if not only)* useful to paste glyphs from an .mkfont to another in batch, while retaining their unicode positions. | . | | Applies the transform of the glyph stored in memory using to all glyphs in the active selection. Does **not** affect the path. | . | | Deletes the selected glyphs | . Note on copy/pasting glyphs : glyphs are copied into SVG format, with transform information embedded as SVG attributes. This means that you can safely use the clipboard’s content in any SVG-friendly app, and that casually pasting within MkFont will retain transform settings. Action modifiers . Modifiers are applied when a key is pressed along with a specific button. TL;DR : When clicking on an action while is pressed will execute the action for all glyphs within the range, not just limited to your active selection. | Modifier | Action | . | + | Create empty glyphs in Unicode slots that have no glyph yet. Does **not** overwrite existing ones. | . | + | Copy the unicode characters to the clipboard, with each value separated by a newline character : \\n. *(see [note](#note-on-unicode-lists))* | . | + | Copy the unicode hex values to the clipboard, with each value separated by a newline character : \\n. *(see [note](#note-on-unicode-lists))* | . | + | Create &amp; execute a JSX script that will prompt Adobe© Illustrator to create a new document with artboard set-up for each glyph within the range (up to 1000), properly named in order to be exported easily. *(see Third parties )* | . | + | Delete all glyphs within the range. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/shortcuts.html#in-the-font-viewport",
    "relUrl": "/docs/shortcuts.html#in-the-font-viewport"
  },"233": {
    "doc": "Shortcuts",
    "title": "In the Glyph inspector",
    "content": "Header actions . | Modifier | Action | . | : **When multiple glyph are selected, action is applied to every one of them** :| |   | . | + | Resets the glyph contents &amp; create components matching the glyph composition, if any, as well as associated glyphs if they are missing. | . | + | Resets the glyph contents but keeps existing components. | . | + | Resets the glyph contents, and recursively creates missing glyphs along with their decomposition. | . Components . | Modifier | Action | . | : **Copy/paste** :| |   | . | + | Add components from the clipboard, instead of replacing the existing ones | . | + | Only paste transform settings from matching components within the clipboard | . | : **Decomposition** :| |   | . | + | Create components recursively. | . | + | Does not create missing components’ glyphs. | . | + | Create components &amp; missing glyphs recursively. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/shortcuts.html#in-the-glyph-inspector",
    "relUrl": "/docs/shortcuts.html#in-the-glyph-inspector"
  },"234": {
    "doc": "Shortcuts",
    "title": "Shortcuts",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/shortcuts.html",
    "relUrl": "/docs/shortcuts.html"
  },"235": {
    "doc": "Smart Search",
    "title": "Smart Search",
    "content": "A discovery tool that offer more than meet the eye. You can search for specific characters, but also names &amp; attributes. The search can look for known character association &amp; relationships, too! . ",
    "url": "https://nebukam.github.io/mkfont/features/smart-search.html#smart-search",
    "relUrl": "/features/smart-search.html#smart-search"
  },"236": {
    "doc": "Smart Search",
    "title": "Smart Search",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/smart-search.html",
    "relUrl": "/features/smart-search.html"
  },"237": {
    "doc": "3rd party automation",
    "title": "3rd party automation",
    "content": "One-click documents &amp; artboards setup, ready to export. MkFont comes with built-in automation tools for Adobe© Illustrator, for an even smoother workflow. Finger crossed more tools gets that kind of support soon! . ",
    "url": "https://nebukam.github.io/mkfont/features/third-party.html#rd-party-automation",
    "relUrl": "/features/third-party.html#rd-party-automation"
  },"238": {
    "doc": "3rd party automation",
    "title": "3rd party automation",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/third-party.html",
    "relUrl": "/features/third-party.html"
  },"239": {
    "doc": "Tips and tricks",
    "title": "Tips and tricks",
    "content": "Squeeze the most out of MkFont . A few tips and tricks to optimize the place of MkFont within your workflow. ",
    "url": "https://nebukam.github.io/mkfont/guides/tips-and-tricks.html#tips-and-tricks",
    "relUrl": "/guides/tips-and-tricks.html#tips-and-tricks"
  },"240": {
    "doc": "Tips and tricks",
    "title": "Using separate .mkfont files as re-usable libraries",
    "content": "There is currently no way to import an MkFont file into another, by design : you can copy/paste-in-place glyphs from an open document to another. What I tend to do is keep sets of glyphs in separate .mkfont files that I use as kind-of ‘external libraries’, pasting what I need from them to another .mkfont file using the / manipulation. This is especially useful if, for example, you have a set of recurring characters that you end up including in different fonts; i.e controller icons and the like. ",
    "url": "https://nebukam.github.io/mkfont/guides/tips-and-tricks.html#using-separate-mkfont-files-as-re-usable-libraries",
    "relUrl": "/guides/tips-and-tricks.html#using-separate-mkfont-files-as-re-usable-libraries"
  },"241": {
    "doc": "Tips and tricks",
    "title": "Using non-exported ligatures as re-usable named components",
    "content": "Since components work by importing existing glyphs, it comes in handy to create ligatures with human-readable names (like you would with layers in a tidy photoshop document), set them to not be exported along with the font, and voila, you got yourself a component library! . This is especially useful when working with complex icon sets, or when naming artboards as Unicode value isn’t an option. The Composite icon font guide is a good demonstration of that. ",
    "url": "https://nebukam.github.io/mkfont/guides/tips-and-tricks.html#using-non-exported-ligatures-as-re-usable-named-components",
    "relUrl": "/guides/tips-and-tricks.html#using-non-exported-ligatures-as-re-usable-named-components"
  },"242": {
    "doc": "Tips and tricks",
    "title": "WORK IN PROGRESS.",
    "content": "Come back later (～￣▽￣)～ . ",
    "url": "https://nebukam.github.io/mkfont/guides/tips-and-tricks.html#work-in-progress",
    "relUrl": "/guides/tips-and-tricks.html#work-in-progress"
  },"243": {
    "doc": "Tips and tricks",
    "title": "Tips and tricks",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/guides/tips-and-tricks.html",
    "relUrl": "/guides/tips-and-tricks.html"
  },"244": {
    "doc": "Unity TextMeshPro",
    "title": "Unity TextMeshPro",
    "content": "··· . ··· . ",
    "url": "https://nebukam.github.io/mkfont/guides/third-party/tmpro.html#unity-textmeshpro",
    "relUrl": "/guides/third-party/tmpro.html#unity-textmeshpro"
  },"245": {
    "doc": "Unity TextMeshPro",
    "title": "WORK IN PROGRESS.",
    "content": "Come back later (～￣▽￣)～ . ",
    "url": "https://nebukam.github.io/mkfont/guides/third-party/tmpro.html#work-in-progress",
    "relUrl": "/guides/third-party/tmpro.html#work-in-progress"
  },"246": {
    "doc": "Unity TextMeshPro",
    "title": "Unity TextMeshPro",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/guides/third-party/tmpro.html",
    "relUrl": "/guides/third-party/tmpro.html"
  },"247": {
    "doc": "Unicode Browser",
    "title": "Unicode Browser",
    "content": "MkFont is Unicode compliant. Code points are organized by categories &amp; blocks, immediately accessible and search-able. ",
    "url": "https://nebukam.github.io/mkfont/features/unicode-browser.html#unicode-browser",
    "relUrl": "/features/unicode-browser.html#unicode-browser"
  },"248": {
    "doc": "Unicode Browser",
    "title": "Unicode Browser",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/features/unicode-browser.html",
    "relUrl": "/features/unicode-browser.html"
  },"249": {
    "doc": "Font viewport",
    "title": "Font viewport",
    "content": "Navigate &amp; search through Unicode slots. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/viewport-unicode.html#font-viewport",
    "relUrl": "/docs/views/viewport-unicode.html#font-viewport"
  },"250": {
    "doc": "Font viewport",
    "title": "Bound the the Content explorer",
    "content": "The contents of the viewport is determined by the items selected within the Content explorer. Actions &amp; search are applied within the limits of the selected range. Note that some ranges represent all glyphs within your font, or even all known Unicode points, so be careful! . Table of content . | Header . | Actions | . | Search . | Search terms | Search modifier | . | Selection | Slots . | States | Quick menu | . | Notes . | Display options | Note on unicode lists | . | Shortcuts | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/viewport-unicode.html#bound-the-the-content-explorer",
    "relUrl": "/docs/views/viewport-unicode.html#bound-the-the-content-explorer"
  },"251": {
    "doc": "Font viewport",
    "title": "Header",
    "content": "The header is rather straightfoward : the name displayed is the one of the range currently displayed; as well as it’s type and number of glyphs it covers. If the type is a named Unicode range, the first tag will show the start &amp; end address of the block in hexadecimal form. For example, Basic Latin goes from U+0020 to U+007F. (control characters are omitted) The second tag shows how many glyphs are contained within the viewport. Actions . The Font Viewport has a few available actions, displayed on the bottom right of the header. By default, these actions are applied to the active selection of glyph within the viewport. | Modifier | Action | . | : **Create glyphs** :| |   | . | | Create empty glyphs in Unicode slots that have no glyph yet. Does **not** overwrite existing ones. | . | + | Same as above, applied to the entire viewport content. | . | : **Text references** :| |   | . | | Copy the unicode characters to the clipboard, with each value separated by a newline character : \\n. *(see [note](#note-on-unicode-lists))* | . | + | Same as above, applied to the entire viewport content. | . | | Copy the unicode hex values to the clipboard, with each value separated by a newline character : \\n. *(see [note](#note-on-unicode-lists))* | . | + | Same as above, applied to the entire viewport content. | . | : **Third parties** :| |   | . | | Create &amp; execute a JSX script that will prompt Adobe© Illustrator to create a new document with artboard set-up for each selected glyph, properly named in order to be exported easily. *(see Third parties)* | . | + | Same as above, applied to the entire viewport content. | . | : **Deletion** :| |   | . | | Delete selected glyphs. | . | + | Same as above, applied to the entire viewport content. | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/viewport-unicode.html#header",
    "relUrl": "/docs/views/viewport-unicode.html#header"
  },"252": {
    "doc": "Font viewport",
    "title": "Search",
    "content": ". The search feature is rather simple in its form, yet quite powerful. It’s important to note that the search results are constrained by the currently selected range. Hence, if you want your search to be as broad as it can possibly be, select the All Unicode range. The search needs to be enabled to produce results. Search is inclusive, not exclusive. That means that the more terms you search for, the more results you’ll get – not the other way around. If you want to search through all known &amp; referenced Unicode, select the All Unicodes range within the Content explorer. Search terms . | Search | Result | . | unique character : a, 0 | Will find any glyph that match in either its character representation, or isolated in its name.*In the case of ligatures, each linked character is looked at individually.* | . | space-separated individual characters : a b c, 0 a N | Same as unique search, but will combine the results | . | Chain of characters : circle, letter, lowercase | These are compared against a glyph *identity*, as shown at the very top of the Glyph inspector. | . | Any combination | Will work. | . Search modifier . | Modifier | Result | . | **Relatives** | Search will include all related glyphs to the initial result of your search.*Relatives search looks outside the current viewport range.* | . | **Exists** | Limit the results to glyphs that actually exists within your font.*If the search terms are empty but this is enabled, the search will show all existing glyphs within the current viewport range.* | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/viewport-unicode.html#search",
    "relUrl": "/docs/views/viewport-unicode.html#search"
  },"253": {
    "doc": "Font viewport",
    "title": "Selection",
    "content": "Selecting slots within the viewport is done using the mouse. Expected selection behaviors apply : . | Holding toggle a slot selection state. i.e, if it’s selected it will be unselected, and vice-versa. | Holding while selecting another slot will select all the slot between the last selected slot and the new one. | will select everything available within the range. | See Shortcuts for more infos. | . Note that selection isn’t lost if you click on an already selected item : this is by design. Instead, it will “bump” that item so it becomes the first item in the active selection. This is especially useful when editing large selection, as it allow you to change which glyphs are previewed in the Glyph inspector. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/viewport-unicode.html#selection",
    "relUrl": "/docs/views/viewport-unicode.html#selection"
  },"254": {
    "doc": "Font viewport",
    "title": "Slots",
    "content": "States . | State | Meaning | . | | Glyph does not exists; default character preview is shown. | . | | Glyph exists and is empty. | . | | Glyph exists and has a path. | . | | Glyph exists and has a path, but is flagged to be ignored during export. | . | | Glyph exists and has a path, but it is out-of-bounds.As such, it won’t be exported. | . An out-of-bound glyph highlights a path that is so big in size it can’t fit : glyph path must be kept within -16,000 &amp; 16,000 after transformation. Some reasons your glyph is OoB : . | Your EM value in the font metrics is too large | There’s an artifact somewhere in the path, maybe a single point lost somewhere, far away. | You’re using manual scale that makes things go boom. | You’re using “no scaling” with an asset that is gigantic (who makes 64k pt SVGs ?!). | . Quick menu . When a slot is selected, a quick menu shows up on hover, with the following options (depending on whether the glyph exists or not) : . | Icon | Action | . | | Creates an empty glyph. | . | | Removes the glyph. | . | | Copy that glyph unicode hex value to the clipboard, in the form U+0000. *This is mostly useful to quickly find a glyph hex ID for automation &amp; artboards* | . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/viewport-unicode.html#slots",
    "relUrl": "/docs/views/viewport-unicode.html#slots"
  },"255": {
    "doc": "Font viewport",
    "title": "Notes",
    "content": "Display options . Display options are located at the bottom of the viewport. For now there is only one preview option : preview size. Yes, that small lonely slider! . Note on unicode lists . Copying glyph characters is especially useful when you need to generate narrowed down atlases for your font, or simply need a quick wait to generate a parse-able list of glyphs. The action will generate this kind of results : . A B C D . The action will generate this kind of results : . U+0041 U+0042 U+0043 U+0044 . ",
    "url": "https://nebukam.github.io/mkfont/docs/views/viewport-unicode.html#notes",
    "relUrl": "/docs/views/viewport-unicode.html#notes"
  },"256": {
    "doc": "Font viewport",
    "title": "Shortcuts",
    "content": "| Shortcut | Action | . | | Copy a single glyph to the clipboard* | . | | Paste the content of the clipboard in the selected glyph slot.Supports pasting directly from Adobe© Illustrator! | . | | Copy the selected glyphs &amp; their unicode position in memory* | . | | Paste the glyphs copied using to their matching unicode slots. This is especially *(if not only)* useful to paste glyphs from an .mkfont to another in batch, while retaining their unicode positions. | . | | Applies the transform of the glyph stored in memory using to all glyphs in the active selection. Does **not** affect the path. | . | | Deletes the selected glyphs | . Note on copy/pasting glyphs : glyphs are copied into SVG format, with transform information embedded as SVG attributes. This means that you can safely use the clipboard’s content in any SVG-friendly app, and that casually pasting within MkFont will retain transform settings. ",
    "url": "https://nebukam.github.io/mkfont/docs/views/viewport-unicode.html#shortcuts",
    "relUrl": "/docs/views/viewport-unicode.html#shortcuts"
  },"257": {
    "doc": "Font viewport",
    "title": "Font viewport",
    "content": " ",
    "url": "https://nebukam.github.io/mkfont/docs/views/viewport-unicode.html",
    "relUrl": "/docs/views/viewport-unicode.html"
  }
}
