| # fontTools Documentation |
| |
| The fontTools project documentation updates continuously on Read the Docs as the project source changes. |
| |
| The documentation is hosted at https://fonttools.readthedocs.io/. |
| |
| ## Contents |
| |
| - [How to Build Local Documentation](#how-to-build-local-documentation) |
| - [Contributing to the fontTools Documentation](#contributing-to-the-documentation) |
| - [Documentation License](#documentation-license) |
| |
| ## How to Build Local Documentation |
| |
| ### Install Dependencies |
| |
| You must have a Python 3 interpreter and the `pip` Python package manager installed on your system to build the fontTools documentation. |
| |
| Pull the fontTools project source files, create a Python virtual environment, and then install fontTools and the documentation build dependencies by executing the following commands in the root of the fontTools source repository: |
| |
| ``` |
| $ pip install -e .[all] |
| $ pip install -r Doc/docs-requirements.txt |
| ``` |
| |
| ### Build Documentation |
| |
| **With `make`**: execute the following command in the root of the repository: |
| |
| ``` |
| $ make docs |
| ``` |
| |
| **Without `make`**: execute the following command in the **`Doc` directory**: |
| |
| ``` |
| $ sphinx-build -b html source build |
| ``` |
| |
| Open the `Doc/build/html/index.html` file in your browser to view the documentation home page. |
| |
| ## Contributing to the Documentation |
| |
| We highly encourage contributions! Please follow the instructions below to improve the documentation. |
| |
| ### Python Docstring Style |
| |
| We recommend the use of Python docstrings that follow [the Google Style Guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md#381-docstrings). Our documentation build approach parses appropriately formatted docstrings into formatted documentation files. |
| |
| #### Function Documentation Example |
| |
| ```python |
| def fetch_bigtable_rows(big_table, keys, other_silly_variable=None): |
| """Fetches rows from a Bigtable. |
| |
| Retrieves rows pertaining to the given keys from the Table instance |
| represented by big_table. Silly things may happen if |
| other_silly_variable is not None. |
| |
| Args: |
| big_table: An open Bigtable Table instance. |
| keys: A sequence of strings representing the key of each table row |
| to fetch. |
| other_silly_variable: Another optional variable, that has a much |
| longer name than the other args, and which does nothing. |
| |
| Returns: |
| A dict mapping keys to the corresponding table row data |
| fetched. Each row is represented as a tuple of strings. For |
| example: |
| |
| {'Serak': ('Rigel VII', 'Preparer'), |
| 'Zim': ('Irk', 'Invader'), |
| 'Lrrr': ('Omicron Persei 8', 'Emperor')} |
| |
| If a key from the keys argument is missing from the dictionary, |
| then that row was not found in the table. |
| |
| Raises: |
| IOError: An error occurred accessing the bigtable.Table object. |
| """ |
| ``` |
| *Source: [Google Style Guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md) (CC BY-SA 3.0)* |
| |
| #### Class Documentation Example |
| |
| ```python |
| class SampleClass(object): |
| """Summary of class here. |
| |
| Longer class information.... |
| Longer class information.... |
| |
| Attributes: |
| likes_spam: A boolean indicating if we like SPAM or not. |
| eggs: An integer count of the eggs we have laid. |
| """ |
| |
| def __init__(self, likes_spam=False): |
| """Inits SampleClass with blah.""" |
| self.likes_spam = likes_spam |
| self.eggs = 0 |
| |
| def public_method(self): |
| """Performs operation blah.""" |
| ``` |
| *Source: [Google Style Guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md) (CC BY-SA 3.0)* |
| |
| ### Build Local Documentation and Review Your Changes |
| |
| Build a local set of HTML documentation files with the instructions above and review your changes. |
| |
| ### Submit a Pull Request |
| |
| Submit a Github pull request with your proposed improvements to the documentation. |
| |
| Thanks for your contribution! |
| |
| ## Documentation License |
| |
| The fontTools documentation is released under a [CC BY-SA 4.0 International License](https://creativecommons.org/licenses/by-sa/4.0/). |