# `Unicode.GeneralCategory.Derived`
[🔗](https://github.com/elixir-unicode/unicode/blob/v1.22.0/lib/unicode/category/derived_category.ex#L1)

For certain operations and transformations
(especially in [Unicode Sets](http://unicode.org/reports/tr35/#Unicode_Sets))
there is an expectation that certain derived
general categories exist even though they are not
defined in the unicode character database.

These categories are:

* `:any` which is the full unicode character
  range `0x0..0x10ffff`

* `:assigned` which is the set of codepoints
  that are assigned and is therefore
  equivalent to `[:any]-[:Cn]`. In fact that is
  exactly how it is calculated using [unicode_set](https://hex.pm/packages/unicode_set)
  and the results are copied here so
  that there is no mutual dependency.

* `:ascii` which is the range for the US ASCII
  character set of `0x0..0x7f`

In addition there are derived categories
not part of the Unicode specification that
support additional use cases. These include:

* Categories related to
  recognising quotation marks. See the
  module `Unicode.Category.QuoteMarks`.

* `:printable` which implements the same
  semantics as `String.printable?/1`. This is
  a very broad definition of printable characters.

* `:graph` which includes characters from the
  `[^\p{space}\p{gc=Control}\p{gc=Surrogate}\p{gc=Unassigned}]`
  set defined by [Unicode Regular Expressions](http://unicode.org/reports/tr18/).

# `aliases`

```elixir
@spec aliases() :: map()
```

Returns a map of the aliases
for the derived General Categories

# `categories`

```elixir
@spec categories() :: map()
```

Returns a map of the derived
General Categories

---

*Consult [api-reference.md](api-reference.md) for complete listing*
