---
name: "GetFontStr"
section: "3tk"
platform: "linux"
package: "tk4.2-dev"
version: "4.2p2-7"
release: "Debian 2.1 (Slink)"
platforms: ["linux"]
url: "https://new.carta.tech/GetFontStr/3tk"
---

# GetFontStr(3tk)

maintain database of fonts

```

```

## NAME

Tk\_GetFontStruct, Tk\_NameOfFontStruct, Tk\_FreeFontStruct - maintain database of fonts

## SYNOPSIS

```
#include <tk.h>

XFontStruct *
Tk_GetFontStruct(interp, tkwin, nameId)

char *
Tk_NameOfFontStruct(fontStructPtr)

Tk_FreeFontStruct(fontStructPtr)
```

## ARGUMENTS

- Tcl\_Interp *\*interp* (in)

  Interpreter to use for error reporting.

- Tk\_Window *tkwin* (in)

  Token for window in which font will be used.

- Tk\_Uid *nameId* (in)

  Name of desired font.

- XFontStruct *\*fontStructPtr* (in)

  Font structure to return name for or delete.

  ```

  ```

## DESCRIPTION

**Tk\_GetFont** loads the font indicated by *nameId* and returns a pointer to information about the font.  The pointer returned by **Tk\_GetFont** will remain valid until **Tk\_FreeFont** is called to release it. *NameId* can be either a font name or pattern;  any value that could be passed to **XLoadQueryFont** may be passed to **Tk\_GetFont**.  If **Tk\_GetFont** is unsuccessful (because, for example, there is no font corresponding to *nameId*) then it returns **NULL** and stores an error message in *interp-\>result*.

**Tk\_GetFont** maintains a database of all fonts it has allocated. If the same *nameId* is requested multiple times (e.g. by different windows or for different purposes), then additional calls for the same *nameId* will be handled very quickly, without involving the X server.  For this reason, it is generally better to use **Tk\_GetFont** in place of X library procedures like **XLoadQueryFont**.

The procedure **Tk\_NameOfFontStruct** is roughly the inverse of **Tk\_GetFontStruct**.  If its *fontStructPtr* argument was created by **Tk\_GetFontStruct**, then the return value is the *nameId* argument that was passed to **Tk\_GetFontStruct** to create the font.  If *fontStructPtr* was not created by a call to **Tk\_GetFontStruct**, then the return value is a hexadecimal string giving the X identifier for the associated font. Note:  the string returned by **Tk\_NameOfFontStruct** is only guaranteed to persist until the next call to **Tk\_NameOfFontStruct**.

When a font returned by **Tk\_GetFont** is no longer needed, **Tk\_FreeFont** should be called to release it. There should be exactly one call to **Tk\_FreeFont** for each call to **Tk\_GetFont**.  When a font is no longer in use anywhere (i.e. it has been freed as many times as it has been gotten) **Tk\_FreeFont** will release it to the X server and delete it from the database.

## KEYWORDS

font
