In “Future API” “Soon™” This would be covered by contextual data.
You would be able to define how the data looks per viewer, if I understand the idea of contextual data correctly.
For now, you will need to (ab)use packets.
Or sooner then coltextual data you could track player movements, and register all signs that get loaded in a R-Tree (if you want to be efficient) and track ‘active’ ones on player move, and send them the new data. But it would need to use the API added by the following OPEN ticket (https://github.com/SpongePowered/SpongeAPI/issues/1731), so make sure to comment stating your usecase, it helps us priortize which order to add API.