A point release after 20261016: POD settings shows the font handles a document already has, offers one per font family, and swaps two families' handles from the popup.
POD settings shows a family's current handle in its field. After you assigned FONT_1 to a
font family and pressed OK, opening POD settings again showed the handle only in small grey text
beside an empty field, so it looked as if nothing had been assigned. A family that carries a theme
handle (FONT_1, FONT_2, …) now shows it in its own field. Leaving the field as it is changes
nothing. A family that carries some other uuid, such as one a converter or an asset store gave it,
still shows that uuid in grey, with an empty field to give it a handle.
The handle popup offers one handle per font family, and swaps. It listed FONT_1 to
FONT_10 whatever the document held, and left out handles other families had. A converted document
now arrives with a handle on every family, so each row was offered only its own. The popup now
lists FONT_1 up to the number of font families in the document. A handle another family has is
shown with that family's name ("FONT_2 · Georgia"); choosing it swaps the two, and that family gets
this row's handle. A handle outside the list can still be typed.
fonthandles.ts: is_theme_handle(), the FONT_n shape. podsettingsdialog.ts: handle_field()
takes the family's current handle as its initial value when it is one. The grey column is then left
empty. The field is not a choice until it is edited, so handle_choices is unchanged and the plan
skips the row.handle_options() lists FONT_1 … FONT_n (n = entries.length; k_theme_handle_count and
available_handles() are gone), each with the other family that holds it and whether it can be
chosen. pick_handle() says which rows a choice writes: this row, and for a held handle the holder
too, which gets this row's handle (effective_handle(): the one chosen in it, or its family's
current theme handle). A row with none has nothing to give, so for it a held handle is listed but
cannot be chosen. The dialog writes those rows through their own fields, and plan_font_handles()
orders the calls through a temporary handle.