Reconciliação de estados de aparência de botões de opção e caixas de seleção

Gravar um valor de campo de botão agora reconcilia o estado /AS de cada widget com a seleção, e o achatamento reconcilia novamente antes de gerar aparências, de modo que um /AS Off obsoleto nunca pode vencer um /V atualizado

Gravações de valor

SetFormFieldValue e SetLoadedFormFieldValueByName percorrem o campo (e seus /Kids) e selecionam, no dicionário de estados /AP /N de cada widget, o estado cujo nome é igual ao /V herdado; todo outro widget faz fallback para Off. Kids de rádio que não carregam /V resolvem a seleção por meio da cadeia pai

Achatamento

FlattenLoadedFormFields reconcilia cada destino antes da geração de aparência, para que valores importados (FDF, XFDF) sejam achatados para o estado correto de seleção ou rádio mesmo quando o documento foi salvo pela última vez com uma seleção diferente

Estabilidade de regeneração

EnsureLoadedFieldAppearanceStream preserva o nome do estado ativo existente de um dicionário de estados ao regenerar aparências de botão, de modo que um valor de exportação de rádio nunca seja renomeado para um Yes genérico, e kids de rádio sem dicionário de estados derivam seu nome de estado ativo de seu próprio /T