Clone o objeto do contêiner e escreva 2 letras e calcule a altura. Isso retorna a altura real com todos os estilos aplicados, altura da linha, etc. Agora, calcule o objeto de altura / o tamanho de uma letra. No Jquery, a altura excede o preenchimento, a margem e a borda, é ótimo calcular a altura real de cada linha:
other = obj.clone();
other.html('a<br>b').hide().appendTo('body');
size = other.height() / 2;
other.remove();
lines = obj.height() / size;
Se você usar uma fonte rara com altura diferente de cada letra, isso não funcionará. Mas funciona com todas as fontes normais, como Arial, mono, quadrinhos, Verdana, etc. Teste com sua fonte.
Exemplo:
<div id="content" style="width: 100px">hello how are you? hello how are you? hello how are you?</div>
<script type="text/javascript">
$(document).ready(function(){
calculate = function(obj){
other = obj.clone();
other.html('a<br>b').hide().appendTo('body');
size = other.height() / 2;
other.remove();
return obj.height() / size;
}
n = calculate($('#content'));
alert(n + ' lines');
});
</script>
Resultado: 6 Lines
Funciona em todos os navegadores sem funções raras fora dos padrões.
Verifique: https://jsfiddle.net/gzceamtr/