From Microformats Wiki
Jump to navigation Jump to search

hCard User Interface

This page is for techniques and issues surrounding user-interfaces to author, publish, and display hCards.


Single Input Field for Names

When capturing name data that is later to be presented as a hCard, it's important that the data is collected at the highest fidelity possible. As not all names are suitable for hCard's implied-n optimisation (and therefore can't be output as fn, with n omitted), capturing component parts of the name individually enables the proper construction on n when generating the hCard.

Sometimes, however, constraints require a name be collected with a single field. Once such example is common blog CMSs (WordPress, TextPattern) that use a single database field to store the name against each post comment. In such cases it is always desirable to find a way to collect the name with higher fidelity. However, if this simply cannot be done, the implementer could chose to attempt to best-guess the component parts of the name to form a valid n.

One suggested 'best-guess' algorithm might be:

  1. If the name is one word, attempt implied nickname optimization
  2. If the name is two words, attempt implied n optimization
  3. For three or more words
    1. Perform a lookup against known sub-name combinations (e.g. 'Sarah Jane', 'Vander Wal')
    2. Apply the grammar "(honorific-prefix) given-name additional-name(s) family-name (honorific-suffix)"

The principal behind this suggestion is that it's better to make a good guess and potentially miscategorise an ambiguous name component than to generate an invalid hCard.

Additional user interface

Some examples of additional user interface for hCard. Note that most of these actions should be applicable to all instances of the microformat on the page at once (e.g. export all contacts), of for a selection of instances (e.g. export selected contacts), or one just one specific instance (e.g. export contact XYZ).

context menu access: right-clicking (control-clicking) on a specific contact could provide additional menu items (based on the below) that act on that specific contact.

address book integration

  • "Save Contact" / "Add to Address Book" (convert the hCard to a vCard (.vcf) and pass it onto the OS to automatically open/incorporate into the user's preferred local address book application)
  • add to Gmail, Yahoo Mail, Hotmail address book (etc.)

desktop to phone transfer

  • send to Bluetooth, for quick transfer of contact info from the web to a cell phone.
  • display contact details in an on-screen or downloadable semacode, qr_code or other 2d_barcodes (to allow them to be read by mobile devices)

telephony integration

  • If a tel (phone number) having type home, work or cell is present, provide options to dial it (NB applies to one number at a time only; except for possible conference-call uses) directly, or via
    • "Call Contact: {fn} {tel}" - e.g. if it's a browser running on a phone.
    • built-in modem
    • bluetooth command to a paired device (e.g. cell phone)
    • default telephony app (e.g. skype-out)
  • If a tel (phone number) having type home, work or cell is present, provide options to send MMS:
    • directly
    • using on-line service
    • bluetooth command to a paired device (e.g. cell phone)


  • If there's a "skype:" or "callto:" URL, then provide an option to:
    • "Skype Contact: {fn} {tel}" - e.g. if there is Skype installed on the system.

fax integration

  • If a tel of type fax is present, provide options to send a fax to it via:
    • efax online service
    • built-in fax modem

birthday planning

  • If a bday is present, treat it as a recurring hCalendar event.
    • "Save Contact Birthday: {fn} {bday}" - create an ics repeating event of the birthday.

anniversary planning

  • If an anniversary (vCard4, hCard 2.0) is present, treat it as a recurring hCalendar event.
    • "Save Contact Anniversary: {fn} {bday}" - create an ics repeating event of the anniversary.

address canonicalization

  • Given a postal code (or other partial address) fetch the full, canonical postal address for the relevant authority's website (e.g. [1]). If no country is defined, used the user's locality as the default.

data export

  • export as text/ comma-separated-values (CSV) to allow editing, sorting and/ or import into spreadsheets/ databases, etc. (or concatenate to existing file)

data import

see also

The hCard specification is a work in progress. As additional aspects are discussed, understood, and written, they will be added. These thoughts, issues, and questions are kept in separate pages.