| Introduction |
| ------------ |
| |
| Documentation is an extremely important part of any project, and it |
| helps a lot if it uses consistent syntax and layout. |
| |
| The documentation for the FreeType library is maintained in header |
| files in the `include/` directory in the form of code comments. These |
| comments are extracted and organized by 'docwriter' (previously |
| 'docmaker'). The generated docs can be viewed in the |
| `docs/reference/site/` directory after running `make refdoc`. |
| |
| Documentation comments follow a specific structure and format as |
| described below. |
| |
| |
| Documentation Structure |
| ----------------------- |
| |
| The documentation is divided into multiple chapters, which contain |
| sections relevant to it. The chapter details and sections contained |
| in them are listed in `include/freetype/ftchapters.h`. Any unlisted |
| section is added to the 'Miscellaneous' chapter. |
| |
| Sections may contain sub-sections which consist of properties, |
| enumerations, and other data types. |
| |
| |
| Comment Blocks |
| -------------- |
| |
| Documentation blocks follow a specific format: |
| |
| /***************************** (should end on column 77) |
| * |
| * (1 asterisk, 1 space, then content) |
| * |
| */ (end of block) |
| |
| To make 'docwriter' recognize a comment block, there must be at least |
| two asterisks in the first line. As a consequence, you should change |
| the second asterisk to something else if you want to prevent a comment |
| block being handled by 'docwriter' (for example, change `/****/` to |
| `/*#**/`). |
| |
| |
| Markup Tags |
| ----------- |
| |
| Markup tags are used to indicate what comes next. The syntax for a |
| tag is: |
| |
| @foo: |
| |
| An `@`, followed by the tag, and then `:`. |
| |
| |
| Reserved Tags |
| ------------- |
| |
| There are some keywords that have a special meaning to docwriter. |
| As a convention, all keywords are written in lowercase. |
| |
| * `chapter`: Defines a chapter. Usually the title with underscores. |
| * `sections`: List of sections in the chapter, in order. |
| * `section`: Defines the start or continuation of a section. |
| * `title`: Title for a chapter or section. May contain spaces. |
| * `abstract`: The abstract for a section, visible in the Table of |
| Contents (TOC). |
| * `description`: Detailed description of a tag (except chapters), |
| shown as synopsis. |
| * `values`: A list of 'values' for the tag. These values are used for |
| cross-referencing. |
| |
| |
| Other Tags |
| ---------- |
| |
| Except the ones given above, any other tags will be added as a part of |
| a subsection. All tags are lowercase by convention. |
| |
| |
| Public Header Definitions |
| ------------------------- |
| |
| The public headers for FreeType have their names defined in |
| `include/freetype/config/ftheader.h`. Any new public header file must |
| be defined in this file, in the following format: |
| |
| #define FT_NEWNAME_H <freetype/newname.h> |
| |
| Where `newname` is the name of the header file. |
| |
| This macro is combined with the file location of a sub-section and |
| printed with the object. |
| |
| |
| Note on code blocks captured after comments |
| ------------------------------------------- |
| |
| All non-documentation lines after a documentation comment block are |
| captured to be displayed as the code for the sub-section. To stop |
| collection, a line with `/* */` should be added. |
| |
| |
| General Formatting Conventions |
| ------------------------------ |
| |
| * Use two spaces after a full stop ending a sentence. |
| * Use appropriate uppercasing in titles. Refer |
| |
| https://english.stackexchange.com/a/34 |
| |
| for more information. |
| * Do not add trailing parentheses when citing a C function. |
| |
| |
| Markdown Usage |
| -------------- |
| |
| All tags, except the ones that define the name and title for a block |
| support markdown in them. Docwriter uses a markdown parser that |
| follows rules given in John Gruber's markdown guide: |
| |
| https://daringfireball.net/projects/markdown/syntax |
| |
| with a few exceptions and extensions, detailed below. This may also |
| be referred to as the **FreeType Flavored Markdown**. |
| |
| |
| Headers |
| ------- |
| |
| Markdown headers should not be used directly, because these are added |
| based on section titles, sub-section names, and tags. However, if a |
| header needs to be added, note the following correspondence to HTML tags: |
| |
| * Section title on top of the page is `H1`. |
| * Sub-section titles are `H2`. |
| * Parts of sub-sections are `H4`. |
| * Any header added will be visible in the Table of Contents (TOC) of |
| the page. |
| |
| |
| Emphasis |
| -------- |
| |
| * Use `_underscores_` for italics. |
| * Use `**double asterisks**` for bold. |
| |
| Although the other notations (double underscore for bold, single |
| asterisk for italics) are supported, it is recommended to use the |
| above for consistency. |
| |
| Note that there may be cases where having two asterisks or underscores |
| in a line may lead to text being picked up as italics or bold. |
| Although unintentional, this is correct markdown behavior. |
| |
| For inline code, wrap the sequence with backticks (see below). This |
| renders symbols correctly without modifications. If a symbol is |
| absolutely required outside of an inline code block or code sequence, |
| escape it with a backslash (like `\*` or `\_`). |
| |
| |
| Lists |
| ----- |
| |
| Unordered lists can be created with asterisks: |
| |
| * Unordered list items can use asterisks. |
| * Another list item. |
| |
| Ordered lists start with numbers: |
| |
| 1. This is an ordered list item. |
| 2. Brackets after numbers won't work. |
| |
| To continue a list over multiple paragraphs, indent them with at least |
| four spaces. For example: |
| |
| 1. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. |
| Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, |
| viverra nec, fringilla in, laoreet vitae, risus. |
| |
| Donec sit amet nisl. Aliquam semper ipsum sit amet velit. |
| Suspendisse id sem consectetuer libero luctus adipiscing. |
| |
| 2. This is the second list item. |
| |
| This paragraph is not a part of the list. |
| |
| More information on lists in markdown is available at |
| |
| https://daringfireball.net/projects/markdown/syntax#list |
| |
| |
| Cross-references |
| ---------------- |
| |
| Other sub-sections can be linked with the `@` symbol: |
| |
| @description: |
| While FreeType's CFF driver doesn't expose API functions by |
| itself, it is possible to control its behaviour with |
| @FT_Property_Set and @FT_Property_Get. |
| |
| If a field in the `values` table of another sub-section is linked, the |
| link leads to its parent sub-section. |
| |
| |
| Links and Images |
| ---------------- |
| |
| All URLs are converted to links in the HTML documentation. |
| |
| Markdown syntax for links and images are fully supported. |
| |
| |
| Inline Code |
| ----------- |
| |
| To indicate a span of code, wrap it with backtick quotes (`` ` ``): |
| |
| Use the `printf()` function. |
| |
| Cross-references, markdown, and html styling do not work in inline code |
| sequences. |
| |
| |
| Code and Syntax Highlighting |
| ---------------------------- |
| |
| Blocks of code are fenced by lines with three back-ticks `` ``` `` |
| followed by the language name, if any (used for syntax highlighting), |
| as demonstrated in the following example. |
| |
| ```c |
| x = y + z; |
| if ( zookoo == 2 ) |
| { |
| foobar(); |
| } |
| ``` |
| |
| Note that the indentation of the opening line and the closing line |
| must be exactly the same. The code sequence itself should have a |
| larger indentation than the surrounding back-ticks. |
| |
| Like inline code, markdown and html styling is *not* supported inside |
| code blocks. |
| |
| |
| Tables |
| ------ |
| |
| Tables are used to list values, input, and other fields. The FreeType |
| Flavored Markdown adopts a simple approach to tables with two columns, |
| or field definition tables. |
| |
| Field definition names may contain alphanumeric, underscore, and the |
| `.` characters. This is followed by `::`. The following lines are |
| the second column of the table. A field definition ends with the |
| start of another field definition, or a markup tag. |
| |
| @Input: |
| pathname :: |
| A path to the font file. |
| |
| face_index :: |
| See @FT_Open_Face for a detailed description of this |
| parameter. |
| |
| |
| Non-breaking Space |
| ------------------ |
| |
| A tilde can be used to create a non-breaking space. The example |
| |
| The encoding value~0 is reserved. |
| |
| is converted to |
| |
| The encoding value 0 is reserved. |
| |
| |
| ---------------------------------------------------------------------- |
| |
| Copyright (C) 2018-2023 by |
| Nikhil Ramakrishnan, David Turner, Robert Wilhelm, and Werner Lemberg. |
| |
| This file is part of the FreeType project, and may only be used, |
| modified, and distributed under the terms of the FreeType project |
| license, LICENSE.TXT. By continuing to use, modify, or distribute |
| this file you indicate that you have read the license and understand |
| and accept it fully. |
| |
| |
| --- end of DOCGUIDE --- |