<!--
{
  "availability" : [
    "macOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "AppKit",
  "identifier" : "/documentation/AppKit/NSFontPanel",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "AppKit"
    ],
    "preciseIdentifier" : "c:objc(cs)NSFontPanel"
  },
  "title" : "NSFontPanel"
}
-->

# NSFontPanel

The Font panel—a user interface object that displays a list of available fonts, letting the user preview them and change the font used to display text.

```
class NSFontPanel
```

## Overview

Actual changes to the font panel are made through conversion messages sent to the shared [`NSFontManager`](/documentation/AppKit/NSFontManager) instance. There’s only one Font panel for each app.

## Topics

### Getting the Font Panel

[`sharedFontPanel`](/documentation/AppKit/NSFontPanel/shared)

Returns the single `NSFontPanel` instance for the application, creating it if necessary.

[`sharedFontPanelExists`](/documentation/AppKit/NSFontPanel/sharedFontPanelExists)

A Boolean value that indicates whether the shared Font panel has been created.

### Enabling Font Changes

[`enabled`](/documentation/AppKit/NSFontPanel/isEnabled)

A Boolean that shows whether the receiver’s Set button is enabled.

[`-  reloadDefaultFontFamilies`](/documentation/AppKit/NSFontPanel/reloadDefaultFontFamilies())

Triggers a reload to the default state, so that the delegate is called.

### Updating the Font Panel

[`-  setPanelFont:isMultiple:`](/documentation/AppKit/NSFontPanel/setPanelFont(_:isMultiple:))

Sets the selected font in the receiver to the specified font.

### Converting Fonts

[`-  panelConvertFont:`](/documentation/AppKit/NSFontPanel/convert(_:))

Converts the specified font using the settings in the receiver, with the aid of the shared `NSFontManager` if necessary.

### Working in Modal Loops

[`worksWhenModal`](/documentation/AppKit/NSFontPanel/worksWhenModal)

A Boolean that indicates whether the receiver allows fonts to be changed in modal windows and panels.

### Setting an Accessory View

[`accessoryView`](/documentation/AppKit/NSFontPanel/accessoryView)

The specified view as the receiver’s accessory view, allowing you to add custom controls to your application’s Font panel without having to create a subclass.

### Structures

[`ModeMask`](/documentation/AppKit/NSFontPanel/ModeMask)

## Relationships

### Conforms To

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`Hashable`](/documentation/Swift/Hashable)

[`NSMenuItemValidation`](/documentation/AppKit/NSMenuItemValidation)

[`NSUserInterfaceItemIdentification`](/documentation/AppKit/NSUserInterfaceItemIdentification)

[`NSCoding`](/documentation/Foundation/NSCoding)

[`NSUserInterfaceValidations`](/documentation/AppKit/NSUserInterfaceValidations)

[`CVarArg`](/documentation/Swift/CVarArg)

[`Equatable`](/documentation/Swift/Equatable)

[`NSAppearanceCustomization`](/documentation/AppKit/NSAppearanceCustomization)

[`NSTouchBarProvider`](/documentation/AppKit/NSTouchBarProvider)

[`NSAccessibilityElementProtocol`](/documentation/AppKit/NSAccessibilityElementProtocol)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`NSUserActivityRestoring`](/documentation/AppKit/NSUserActivityRestoring)

[`NSAccessibilityProtocol`](/documentation/AppKit/NSAccessibilityProtocol)

[`NSAnimatablePropertyContainer`](/documentation/AppKit/NSAnimatablePropertyContainer)

[`Sendable`](/documentation/Swift/Sendable)

[`NSStandardKeyBindingResponding`](/documentation/AppKit/NSStandardKeyBindingResponding)

[`SendableMetatype`](/documentation/Swift/SendableMetatype)

### Inherits From

[`NSPanel`](/documentation/AppKit/NSPanel)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)