---
name: "FcCharSetFirstPage"
section: "3"
platform: "linux"
package: "fontconfig"
version: "2:2.18.3-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/FcCharSetFirstPage"
---

# FcCharSetFirstPage(3)

Start enumerating charset contents

## NAME

FcCharSetFirstPage - Start enumerating charset contents

## SYNOPSIS

**#include \<fontconfig/fontconfig.h\>**

**FcChar32 FcCharSetFirstPage (const FcCharSet \****a***, FcChar32\[FC\_CHARSET\_MAP\_SIZE\]** *map***, FcChar32 \****next***);**

## DESCRIPTION

Builds an array of bits in *map* marking the first page of Unicode coverage of *a*. *\*next* is set to contains the base code point for the next page in *a*.  Returns the base code point for the page, or FC\_CHARSET\_DONE if *a* contains no pages.  As an example, if **FcCharSetFirstPage** returns 0x300 and fills *map* with

```
0xffffffff 0xffffffff 0x01000008 0x44300002 0xffffd7f0 0xfffffffb 0xffff7fff 0xffff0003
```

Then the page contains code points 0x300 through 0x33f (the first 64 code points on the page) because *map\[0\]* and *map\[1\]* both have all their bits set.  It also contains code points 0x343 (*0x300 + 32\*2* *+ (4-1)*) and 0x35e (*0x300 +* *32\*2 + (31-1)*) because *map\[2\]* has the 4th and 31st bits set.  The code points represented by map\[3\] and later are left as an exercise for the reader ;).
